From 439bc1a2a7b744753f1eb401f1e0a31c96cd67d5 Mon Sep 17 00:00:00 2001 From: Daniel Valdivia <18384552+dvaldivia@users.noreply.github.com> Date: Tue, 1 Mar 2022 16:14:00 -0800 Subject: [PATCH] Release v0.15.0 (#1648) Signed-off-by: Daniel Valdivia <18384552+dvaldivia@users.noreply.github.com> --- .../base/console-deployment.yaml | 2 +- .../standalone/console-deployment.yaml | 2 +- models/update_tenant_encryption_request.go | 232 --------- portal-ui/build/asset-manifest.json | 478 +++++++++--------- portal-ui/build/index.html | 2 +- ...189d.chunk.css => 3816.dd80c1b6.chunk.css} | 2 +- ...nk.css.map => 3816.dd80c1b6.chunk.css.map} | 2 +- ...189d.chunk.css => 4084.dd80c1b6.chunk.css} | 2 +- ...nk.css.map => 4084.dd80c1b6.chunk.css.map} | 2 +- ...189d.chunk.css => 5822.dd80c1b6.chunk.css} | 2 +- ...nk.css.map => 5822.dd80c1b6.chunk.css.map} | 2 +- .../build/static/css/8724.8e16189d.chunk.css | 2 - .../static/css/8724.8e16189d.chunk.css.map | 1 - ...189d.chunk.css => 8724.dd80c1b6.chunk.css} | 2 +- ...nk.css.map => 8724.dd80c1b6.chunk.css.map} | 2 +- .../build/static/css/964.dd80c1b6.chunk.css | 2 + .../static/css/964.dd80c1b6.chunk.css.map | 1 + .../build/static/css/9645.8e16189d.chunk.css | 2 - .../static/css/9645.8e16189d.chunk.css.map | 1 - .../build/static/css/9645.dd80c1b6.chunk.css | 2 + .../static/css/9645.dd80c1b6.chunk.css.map | 1 + .../build/static/css/9807.8e16189d.chunk.css | 2 - .../static/css/9807.8e16189d.chunk.css.map | 1 - .../build/static/css/9807.dd80c1b6.chunk.css | 2 + .../static/css/9807.dd80c1b6.chunk.css.map | 1 + .../build/static/js/1056.369ba3ab.chunk.js | 2 - .../static/js/1056.369ba3ab.chunk.js.map | 1 - ...1a8a37.chunk.js => 1069.a96e20d9.chunk.js} | 4 +- ...hunk.js.map => 1069.a96e20d9.chunk.js.map} | 2 +- ...a12cb4.chunk.js => 1140.49ee98af.chunk.js} | 4 +- ...hunk.js.map => 1140.49ee98af.chunk.js.map} | 2 +- .../static/js/1233.9903fc82.chunk.js.map | 1 - ...b13c2b.chunk.js => 1237.b46ec019.chunk.js} | 4 +- ...hunk.js.map => 1237.b46ec019.chunk.js.map} | 2 +- .../build/static/js/1612.2e1e75b9.chunk.js | 2 + .../static/js/1612.2e1e75b9.chunk.js.map | 1 + ...b376af.chunk.js => 1666.3eefd4d5.chunk.js} | 4 +- ...hunk.js.map => 1666.3eefd4d5.chunk.js.map} | 2 +- .../build/static/js/1711.1d689e21.chunk.js | 2 + .../static/js/1711.1d689e21.chunk.js.map | 1 + .../build/static/js/1711.755e1931.chunk.js | 2 - .../static/js/1711.755e1931.chunk.js.map | 1 - ...33d41f.chunk.js => 1719.75b1e59d.chunk.js} | 4 +- ...hunk.js.map => 1719.75b1e59d.chunk.js.map} | 2 +- ...08e9feb.chunk.js => 189.c6e8473a.chunk.js} | 4 +- ...chunk.js.map => 189.c6e8473a.chunk.js.map} | 2 +- .../build/static/js/1971.899558fa.chunk.js | 2 - .../static/js/1971.899558fa.chunk.js.map | 1 - .../build/static/js/1973.e9142631.chunk.js | 2 - .../static/js/1973.e9142631.chunk.js.map | 1 - .../build/static/js/2024.6baed5c5.chunk.js | 2 - .../static/js/2024.6baed5c5.chunk.js.map | 1 - ...c131e4.chunk.js => 2178.e5c1c8aa.chunk.js} | 4 +- ...hunk.js.map => 2178.e5c1c8aa.chunk.js.map} | 2 +- .../build/static/js/2182.e3b6cc76.chunk.js | 2 - .../static/js/2182.e3b6cc76.chunk.js.map | 1 - .../build/static/js/2182.fc8d191e.chunk.js | 2 + .../static/js/2182.fc8d191e.chunk.js.map | 1 + .../build/static/js/2417.105afd14.chunk.js | 2 - .../static/js/2417.105afd14.chunk.js.map | 1 - ...4ab309.chunk.js => 2464.4826a900.chunk.js} | 4 +- ...hunk.js.map => 2464.4826a900.chunk.js.map} | 2 +- .../build/static/js/2491.26896af4.chunk.js | 2 + .../static/js/2491.26896af4.chunk.js.map | 1 + .../build/static/js/2491.70293bae.chunk.js | 2 - .../static/js/2491.70293bae.chunk.js.map | 1 - ...1c9c05.chunk.js => 2699.798137ae.chunk.js} | 4 +- ...hunk.js.map => 2699.798137ae.chunk.js.map} | 2 +- .../build/static/js/2805.32c23bd6.chunk.js | 2 + .../static/js/2805.32c23bd6.chunk.js.map | 1 + .../build/static/js/2805.621131c8.chunk.js | 2 - .../static/js/2805.621131c8.chunk.js.map | 1 - ...147732.chunk.js => 2818.75db1c33.chunk.js} | 4 +- ...hunk.js.map => 2818.75db1c33.chunk.js.map} | 2 +- .../build/static/js/2841.129ece8f.chunk.js | 2 + .../static/js/2841.129ece8f.chunk.js.map | 1 + .../build/static/js/2841.a58d2a5d.chunk.js | 2 - .../static/js/2841.a58d2a5d.chunk.js.map | 1 - ...395b76.chunk.js => 2886.9e476e5d.chunk.js} | 4 +- ...hunk.js.map => 2886.9e476e5d.chunk.js.map} | 2 +- ...db4d14.chunk.js => 2892.16bd6206.chunk.js} | 4 +- ...hunk.js.map => 2892.16bd6206.chunk.js.map} | 2 +- .../build/static/js/3276.43967f45.chunk.js | 2 + .../static/js/3276.43967f45.chunk.js.map | 1 + .../build/static/js/3276.cbbfa439.chunk.js | 2 - .../static/js/3276.cbbfa439.chunk.js.map | 1 - .../build/static/js/3300.9b8f6257.chunk.js | 2 - .../static/js/3300.9b8f6257.chunk.js.map | 1 - .../build/static/js/3320.3fb492c4.chunk.js | 2 - .../static/js/3320.3fb492c4.chunk.js.map | 1 - .../build/static/js/3320.c003989a.chunk.js | 2 + .../static/js/3320.c003989a.chunk.js.map | 1 + ...5efe0e.chunk.js => 3421.7556d0a5.chunk.js} | 4 +- ...hunk.js.map => 3421.7556d0a5.chunk.js.map} | 2 +- .../build/static/js/3453.75ca1d21.chunk.js | 2 - .../static/js/3453.75ca1d21.chunk.js.map | 1 - .../build/static/js/3453.9884f106.chunk.js | 2 + .../static/js/3453.9884f106.chunk.js.map | 1 + .../build/static/js/3617.d706e7dd.chunk.js | 2 + ...hunk.js.map => 3617.d706e7dd.chunk.js.map} | 2 +- .../build/static/js/3617.ef0bffae.chunk.js | 2 - .../build/static/js/3698.928db215.chunk.js | 2 - .../static/js/3698.928db215.chunk.js.map | 1 - ...491d19.chunk.js => 3806.d7f55eff.chunk.js} | 4 +- ...hunk.js.map => 3806.d7f55eff.chunk.js.map} | 2 +- ...3504ec.chunk.js => 3816.6e9d4535.chunk.js} | 4 +- ...hunk.js.map => 3816.6e9d4535.chunk.js.map} | 2 +- .../build/static/js/3830.bdda307f.chunk.js | 2 - .../static/js/3830.bdda307f.chunk.js.map | 1 - ...9c4131.chunk.js => 3967.bc7e18bc.chunk.js} | 4 +- ...hunk.js.map => 3967.bc7e18bc.chunk.js.map} | 2 +- .../build/static/js/4014.a838f30b.chunk.js | 2 + .../static/js/4014.a838f30b.chunk.js.map | 1 + .../static/js/4084.3d9d8cab.chunk.js.map | 1 - ...9d8cab.chunk.js => 4084.91e59ef0.chunk.js} | 4 +- .../static/js/4084.91e59ef0.chunk.js.map | 1 + ...9cd38b.chunk.js => 4121.938d98fc.chunk.js} | 4 +- ...hunk.js.map => 4121.938d98fc.chunk.js.map} | 2 +- ...895511.chunk.js => 4177.f084aca8.chunk.js} | 4 +- ...hunk.js.map => 4177.f084aca8.chunk.js.map} | 2 +- ...ea78f1.chunk.js => 4220.a17c6e56.chunk.js} | 4 +- ...hunk.js.map => 4220.a17c6e56.chunk.js.map} | 2 +- .../build/static/js/428.93fdab67.chunk.js | 2 + .../build/static/js/428.93fdab67.chunk.js.map | 1 + .../build/static/js/428.f1f3ca19.chunk.js | 2 - .../build/static/js/428.f1f3ca19.chunk.js.map | 1 - ...03fc82.chunk.js => 4475.33c47914.chunk.js} | 4 +- .../static/js/4475.33c47914.chunk.js.map | 1 + ...9869da.chunk.js => 4487.d2c5f3cb.chunk.js} | 4 +- ...hunk.js.map => 4487.d2c5f3cb.chunk.js.map} | 2 +- ...37eba4.chunk.js => 4515.15c3ee19.chunk.js} | 4 +- ...hunk.js.map => 4515.15c3ee19.chunk.js.map} | 2 +- .../build/static/js/4533.0533f737.chunk.js | 2 - .../static/js/4533.0533f737.chunk.js.map | 1 - .../build/static/js/4577.c760ff58.chunk.js | 2 + .../static/js/4577.c760ff58.chunk.js.map | 1 + .../build/static/js/4577.d5eda9f7.chunk.js | 2 - .../static/js/4577.d5eda9f7.chunk.js.map | 1 - ...b72d46.chunk.js => 4745.e59a39e5.chunk.js} | 4 +- ...hunk.js.map => 4745.e59a39e5.chunk.js.map} | 2 +- ...7ff2b7.chunk.js => 4818.f16db75f.chunk.js} | 4 +- ...hunk.js.map => 4818.f16db75f.chunk.js.map} | 2 +- ...845b47.chunk.js => 4839.cdb78fdd.chunk.js} | 4 +- ...hunk.js.map => 4839.cdb78fdd.chunk.js.map} | 2 +- .../build/static/js/4869.58db9f45.chunk.js | 2 - .../static/js/4869.58db9f45.chunk.js.map | 1 - .../build/static/js/4907.951766e2.chunk.js | 2 + .../static/js/4907.951766e2.chunk.js.map | 1 + ...44962a.chunk.js => 4960.93e965c8.chunk.js} | 4 +- ...hunk.js.map => 4960.93e965c8.chunk.js.map} | 2 +- .../build/static/js/4996.2e18711b.chunk.js | 2 - .../build/static/js/4996.6b373efe.chunk.js | 2 + ...hunk.js.map => 4996.6b373efe.chunk.js.map} | 2 +- .../build/static/js/5013.9b73571d.chunk.js | 2 + .../static/js/5013.9b73571d.chunk.js.map | 1 + ...2cff58.chunk.js => 5144.d191021a.chunk.js} | 4 +- ...hunk.js.map => 5144.d191021a.chunk.js.map} | 2 +- .../build/static/js/528.162128e4.chunk.js | 2 + .../build/static/js/528.162128e4.chunk.js.map | 1 + ...6719cf.chunk.js => 5284.84b8c4f2.chunk.js} | 4 +- ...hunk.js.map => 5284.84b8c4f2.chunk.js.map} | 2 +- .../build/static/js/5339.77ff74c9.chunk.js | 2 - .../static/js/5339.77ff74c9.chunk.js.map | 1 - .../build/static/js/5339.9ea85a11.chunk.js | 2 + .../static/js/5339.9ea85a11.chunk.js.map | 1 + .../build/static/js/5482.565ebb65.chunk.js | 2 - .../static/js/5482.565ebb65.chunk.js.map | 1 - .../build/static/js/5591.19411b3a.chunk.js | 2 + .../static/js/5591.19411b3a.chunk.js.map | 1 + .../build/static/js/5591.992e2bda.chunk.js | 2 - .../static/js/5591.992e2bda.chunk.js.map | 1 - .../build/static/js/5808.53d76704.chunk.js | 2 + ...hunk.js.map => 5808.53d76704.chunk.js.map} | 2 +- .../build/static/js/5808.a4148012.chunk.js | 2 - ...acdd2b.chunk.js => 5822.22817933.chunk.js} | 4 +- ...hunk.js.map => 5822.22817933.chunk.js.map} | 2 +- .../build/static/js/5937.f6a62c9f.chunk.js | 2 + .../static/js/5937.f6a62c9f.chunk.js.map | 1 + .../build/static/js/5947.dda226b6.chunk.js | 2 - .../static/js/5947.dda226b6.chunk.js.map | 1 - ...5bb084.chunk.js => 5961.038c5585.chunk.js} | 4 +- ...hunk.js.map => 5961.038c5585.chunk.js.map} | 2 +- ...1a74891.chunk.js => 609.9484fe14.chunk.js} | 4 +- ...chunk.js.map => 609.9484fe14.chunk.js.map} | 2 +- ...613ce5.chunk.js => 6117.0fcd3d09.chunk.js} | 4 +- .../static/js/6117.0fcd3d09.chunk.js.map | 1 + ...094527.chunk.js => 6145.0d21c766.chunk.js} | 4 +- ...hunk.js.map => 6145.0d21c766.chunk.js.map} | 2 +- .../build/static/js/6147.737c5d72.chunk.js | 2 + ...hunk.js.map => 6147.737c5d72.chunk.js.map} | 2 +- .../build/static/js/6147.c07c0ae2.chunk.js | 2 - ...d9e5cf.chunk.js => 6167.2799d88c.chunk.js} | 4 +- ...hunk.js.map => 6167.2799d88c.chunk.js.map} | 2 +- ...dc41b4.chunk.js => 6173.a5df8119.chunk.js} | 4 +- ...hunk.js.map => 6173.a5df8119.chunk.js.map} | 2 +- .../build/static/js/635.2854d4f5.chunk.js | 2 - .../build/static/js/635.89e9fe78.chunk.js | 2 + ...chunk.js.map => 635.89e9fe78.chunk.js.map} | 2 +- ...0189de.chunk.js => 6436.068113ba.chunk.js} | 4 +- ...hunk.js.map => 6436.068113ba.chunk.js.map} | 2 +- .../build/static/js/6597.fc1eafc4.chunk.js | 2 - .../static/js/6597.fc1eafc4.chunk.js.map | 1 - .../build/static/js/664.36be7d56.chunk.js | 2 + .../build/static/js/664.36be7d56.chunk.js.map | 1 + ...d9be68.chunk.js => 6866.3129ee33.chunk.js} | 4 +- ...hunk.js.map => 6866.3129ee33.chunk.js.map} | 2 +- .../build/static/js/6873.1b3165f5.chunk.js | 2 - .../static/js/6873.1b3165f5.chunk.js.map | 1 - .../build/static/js/6873.24e34528.chunk.js | 2 + .../static/js/6873.24e34528.chunk.js.map | 1 + ...ee4953.chunk.js => 7007.6a27b2ef.chunk.js} | 4 +- ...hunk.js.map => 7007.6a27b2ef.chunk.js.map} | 2 +- ...8efbad.chunk.js => 7187.29038335.chunk.js} | 4 +- ...hunk.js.map => 7187.29038335.chunk.js.map} | 2 +- .../build/static/js/7261.8e611fac.chunk.js | 2 + .../static/js/7261.8e611fac.chunk.js.map | 1 + .../build/static/js/7261.ee9cc151.chunk.js | 2 - .../static/js/7261.ee9cc151.chunk.js.map | 1 - .../build/static/js/7274.a51a45fc.chunk.js | 2 - .../build/static/js/7274.f0a6594d.chunk.js | 2 + ...hunk.js.map => 7274.f0a6594d.chunk.js.map} | 2 +- ...174e5e.chunk.js => 7314.a100ba0d.chunk.js} | 4 +- ...hunk.js.map => 7314.a100ba0d.chunk.js.map} | 2 +- ...d507dc.chunk.js => 7346.9022c544.chunk.js} | 4 +- ...hunk.js.map => 7346.9022c544.chunk.js.map} | 2 +- .../static/js/7348.7a72b31f.chunk.js.map | 1 - ...72b31f.chunk.js => 7348.fe223af1.chunk.js} | 4 +- .../static/js/7348.fe223af1.chunk.js.map | 1 + ...785c09.chunk.js => 7436.1d960975.chunk.js} | 4 +- ...hunk.js.map => 7436.1d960975.chunk.js.map} | 2 +- .../build/static/js/7456.743391a4.chunk.js | 2 - .../static/js/7456.743391a4.chunk.js.map | 1 - .../build/static/js/7456.7fa8ebd5.chunk.js | 2 + .../static/js/7456.7fa8ebd5.chunk.js.map | 1 + ...95ccf1.chunk.js => 7498.4e5e3ff3.chunk.js} | 4 +- ...hunk.js.map => 7498.4e5e3ff3.chunk.js.map} | 2 +- ...f2079d.chunk.js => 7551.83de15d3.chunk.js} | 4 +- ...hunk.js.map => 7551.83de15d3.chunk.js.map} | 2 +- ...12744a.chunk.js => 7664.d720f8fc.chunk.js} | 4 +- ...hunk.js.map => 7664.d720f8fc.chunk.js.map} | 2 +- ...03d8de.chunk.js => 7842.5677d2f1.chunk.js} | 4 +- ...hunk.js.map => 7842.5677d2f1.chunk.js.map} | 2 +- ...32900d.chunk.js => 7926.f7eacde3.chunk.js} | 4 +- ...hunk.js.map => 7926.f7eacde3.chunk.js.map} | 2 +- .../build/static/js/7939.46ff2d0f.chunk.js | 3 - .../static/js/7939.46ff2d0f.chunk.js.map | 1 - .../build/static/js/7950.4cb62868.chunk.js | 2 - .../static/js/7950.4cb62868.chunk.js.map | 1 - .../build/static/js/7950.69490eec.chunk.js | 2 + .../static/js/7950.69490eec.chunk.js.map | 1 + .../build/static/js/8016.0758210e.chunk.js | 2 - .../static/js/8016.0758210e.chunk.js.map | 1 - .../build/static/js/8016.eaf91b09.chunk.js | 2 + .../static/js/8016.eaf91b09.chunk.js.map | 1 + .../build/static/js/8174.3610f42d.chunk.js | 2 + ...hunk.js.map => 8174.3610f42d.chunk.js.map} | 2 +- .../build/static/js/8174.b2493b0b.chunk.js | 2 - ...056f3f.chunk.js => 8190.cf11e001.chunk.js} | 4 +- ...hunk.js.map => 8190.cf11e001.chunk.js.map} | 2 +- ...a314578.chunk.js => 825.56a95484.chunk.js} | 4 +- ...chunk.js.map => 825.56a95484.chunk.js.map} | 2 +- ...2d3a40.chunk.js => 8259.3e394c4d.chunk.js} | 4 +- ...hunk.js.map => 8259.3e394c4d.chunk.js.map} | 2 +- ...c188eb.chunk.js => 8333.fd3a87f0.chunk.js} | 4 +- ...hunk.js.map => 8333.fd3a87f0.chunk.js.map} | 2 +- ...b97516.chunk.js => 8394.2fe90abb.chunk.js} | 4 +- .../static/js/8394.2fe90abb.chunk.js.map | 1 + .../static/js/8394.aab97516.chunk.js.map | 1 - .../build/static/js/8428.039817fe.chunk.js | 2 + .../static/js/8428.039817fe.chunk.js.map | 1 + ...794921.chunk.js => 8564.694f46b6.chunk.js} | 4 +- ...hunk.js.map => 8564.694f46b6.chunk.js.map} | 2 +- .../build/static/js/8661.b3d2fa96.chunk.js | 2 + .../static/js/8661.b3d2fa96.chunk.js.map | 1 + .../build/static/js/8661.d0eec194.chunk.js | 2 - .../static/js/8661.d0eec194.chunk.js.map | 1 - ...41b255.chunk.js => 8724.4770aad0.chunk.js} | 4 +- ...hunk.js.map => 8724.4770aad0.chunk.js.map} | 2 +- .../static/js/8961.2e01f3c6.chunk.js.map | 1 - ...01f3c6.chunk.js => 8961.58205fe0.chunk.js} | 4 +- .../static/js/8961.58205fe0.chunk.js.map | 1 + ....e2862ce4.chunk.js => 9.1b7fc122.chunk.js} | 4 +- ...4.chunk.js.map => 9.1b7fc122.chunk.js.map} | 2 +- ...07894a.chunk.js => 9080.3a18c755.chunk.js} | 4 +- ...hunk.js.map => 9080.3a18c755.chunk.js.map} | 2 +- ...341a7f.chunk.js => 9193.9f06c0b0.chunk.js} | 4 +- ...hunk.js.map => 9193.9f06c0b0.chunk.js.map} | 2 +- ...a60a7c.chunk.js => 9275.e8e507c7.chunk.js} | 4 +- ...hunk.js.map => 9275.e8e507c7.chunk.js.map} | 2 +- ...984e73.chunk.js => 9330.9a62ccd3.chunk.js} | 4 +- ...hunk.js.map => 9330.9a62ccd3.chunk.js.map} | 2 +- ...c40d43.chunk.js => 9421.f0450a76.chunk.js} | 4 +- ...hunk.js.map => 9421.f0450a76.chunk.js.map} | 2 +- ...6121656.chunk.js => 953.9faff84d.chunk.js} | 4 +- ...chunk.js.map => 953.9faff84d.chunk.js.map} | 2 +- ...7c393b.chunk.js => 9560.3411ac3a.chunk.js} | 4 +- ...hunk.js.map => 9560.3411ac3a.chunk.js.map} | 2 +- .../build/static/js/964.e01d742c.chunk.js | 2 + .../build/static/js/964.e01d742c.chunk.js.map | 1 + ...a31d53.chunk.js => 9645.35bbd0ca.chunk.js} | 4 +- ...hunk.js.map => 9645.35bbd0ca.chunk.js.map} | 2 +- ...a3c872.chunk.js => 9661.6525cdb3.chunk.js} | 4 +- ...hunk.js.map => 9661.6525cdb3.chunk.js.map} | 2 +- ...a553b7.chunk.js => 9679.aabc9be8.chunk.js} | 4 +- ...hunk.js.map => 9679.aabc9be8.chunk.js.map} | 2 +- ...164a07.chunk.js => 9779.14e8d3f5.chunk.js} | 4 +- ...hunk.js.map => 9779.14e8d3f5.chunk.js.map} | 2 +- .../build/static/js/9807.b068214f.chunk.js | 2 + .../static/js/9807.b068214f.chunk.js.map | 1 + .../build/static/js/9807.b3b1c965.chunk.js | 2 - .../static/js/9807.b3b1c965.chunk.js.map | 1 - .../build/static/js/9881.b5453ed2.chunk.js | 3 + ...txt => 9881.b5453ed2.chunk.js.LICENSE.txt} | 0 .../static/js/9881.b5453ed2.chunk.js.map | 1 + .../build/static/js/9924.3cf3061d.chunk.js | 2 + .../static/js/9924.3cf3061d.chunk.js.map | 1 + .../build/static/js/9924.ba0c0a4a.chunk.js | 2 - .../static/js/9924.ba0c0a4a.chunk.js.map | 1 - .../static/js/9998.1a613ce5.chunk.js.map | 1 - portal-ui/build/static/js/main.26dfcd6f.js | 3 - .../build/static/js/main.26dfcd6f.js.map | 1 - portal-ui/build/static/js/main.c0c05764.js | 3 + ...CENSE.txt => main.c0c05764.js.LICENSE.txt} | 0 .../build/static/js/main.c0c05764.js.map | 1 + .../Objects/ListObjects/ListObjects.tsx | 4 +- .../ListBuckets/Objects/ListObjects/utils.tsx | 7 +- .../FormComponents/common/styleLibrary.ts | 2 +- .../Tenants/TenantDetails/TenantDetails.tsx | 8 +- .../policies/fix-prefix-policy-ui-crash.json | 24 +- 329 files changed, 596 insertions(+), 857 deletions(-) delete mode 100644 models/update_tenant_encryption_request.go rename portal-ui/build/static/css/{4084.8e16189d.chunk.css => 3816.dd80c1b6.chunk.css} (96%) rename portal-ui/build/static/css/{3816.8e16189d.chunk.css.map => 3816.dd80c1b6.chunk.css.map} (97%) rename portal-ui/build/static/css/{2024.8e16189d.chunk.css => 4084.dd80c1b6.chunk.css} (96%) rename portal-ui/build/static/css/{4084.8e16189d.chunk.css.map => 4084.dd80c1b6.chunk.css.map} (97%) rename portal-ui/build/static/css/{5822.8e16189d.chunk.css => 5822.dd80c1b6.chunk.css} (96%) rename portal-ui/build/static/css/{2024.8e16189d.chunk.css.map => 5822.dd80c1b6.chunk.css.map} (97%) delete mode 100644 portal-ui/build/static/css/8724.8e16189d.chunk.css delete mode 100644 portal-ui/build/static/css/8724.8e16189d.chunk.css.map rename portal-ui/build/static/css/{3816.8e16189d.chunk.css => 8724.dd80c1b6.chunk.css} (96%) rename portal-ui/build/static/css/{5822.8e16189d.chunk.css.map => 8724.dd80c1b6.chunk.css.map} (97%) create mode 100644 portal-ui/build/static/css/964.dd80c1b6.chunk.css create mode 100644 portal-ui/build/static/css/964.dd80c1b6.chunk.css.map delete mode 100644 portal-ui/build/static/css/9645.8e16189d.chunk.css delete mode 100644 portal-ui/build/static/css/9645.8e16189d.chunk.css.map create mode 100644 portal-ui/build/static/css/9645.dd80c1b6.chunk.css create mode 100644 portal-ui/build/static/css/9645.dd80c1b6.chunk.css.map delete mode 100644 portal-ui/build/static/css/9807.8e16189d.chunk.css delete mode 100644 portal-ui/build/static/css/9807.8e16189d.chunk.css.map create mode 100644 portal-ui/build/static/css/9807.dd80c1b6.chunk.css create mode 100644 portal-ui/build/static/css/9807.dd80c1b6.chunk.css.map delete mode 100644 portal-ui/build/static/js/1056.369ba3ab.chunk.js delete mode 100644 portal-ui/build/static/js/1056.369ba3ab.chunk.js.map rename portal-ui/build/static/js/{1069.771a8a37.chunk.js => 1069.a96e20d9.chunk.js} (99%) rename portal-ui/build/static/js/{1069.771a8a37.chunk.js.map => 1069.a96e20d9.chunk.js.map} (99%) rename portal-ui/build/static/js/{1140.35a12cb4.chunk.js => 1140.49ee98af.chunk.js} (97%) rename portal-ui/build/static/js/{1140.35a12cb4.chunk.js.map => 1140.49ee98af.chunk.js.map} (99%) delete mode 100644 portal-ui/build/static/js/1233.9903fc82.chunk.js.map rename portal-ui/build/static/js/{1237.dbb13c2b.chunk.js => 1237.b46ec019.chunk.js} (97%) rename portal-ui/build/static/js/{1237.dbb13c2b.chunk.js.map => 1237.b46ec019.chunk.js.map} (99%) create mode 100644 portal-ui/build/static/js/1612.2e1e75b9.chunk.js create mode 100644 portal-ui/build/static/js/1612.2e1e75b9.chunk.js.map rename portal-ui/build/static/js/{1666.29b376af.chunk.js => 1666.3eefd4d5.chunk.js} (98%) rename portal-ui/build/static/js/{1666.29b376af.chunk.js.map => 1666.3eefd4d5.chunk.js.map} (99%) create mode 100644 portal-ui/build/static/js/1711.1d689e21.chunk.js create mode 100644 portal-ui/build/static/js/1711.1d689e21.chunk.js.map delete mode 100644 portal-ui/build/static/js/1711.755e1931.chunk.js delete mode 100644 portal-ui/build/static/js/1711.755e1931.chunk.js.map rename portal-ui/build/static/js/{1719.c433d41f.chunk.js => 1719.75b1e59d.chunk.js} (98%) rename portal-ui/build/static/js/{1719.c433d41f.chunk.js.map => 1719.75b1e59d.chunk.js.map} (99%) rename portal-ui/build/static/js/{189.108e9feb.chunk.js => 189.c6e8473a.chunk.js} (99%) rename portal-ui/build/static/js/{189.108e9feb.chunk.js.map => 189.c6e8473a.chunk.js.map} (99%) delete mode 100644 portal-ui/build/static/js/1971.899558fa.chunk.js delete mode 100644 portal-ui/build/static/js/1971.899558fa.chunk.js.map delete mode 100644 portal-ui/build/static/js/1973.e9142631.chunk.js delete mode 100644 portal-ui/build/static/js/1973.e9142631.chunk.js.map delete mode 100644 portal-ui/build/static/js/2024.6baed5c5.chunk.js delete mode 100644 portal-ui/build/static/js/2024.6baed5c5.chunk.js.map rename portal-ui/build/static/js/{2178.70c131e4.chunk.js => 2178.e5c1c8aa.chunk.js} (98%) rename portal-ui/build/static/js/{2178.70c131e4.chunk.js.map => 2178.e5c1c8aa.chunk.js.map} (99%) delete mode 100644 portal-ui/build/static/js/2182.e3b6cc76.chunk.js delete mode 100644 portal-ui/build/static/js/2182.e3b6cc76.chunk.js.map create mode 100644 portal-ui/build/static/js/2182.fc8d191e.chunk.js create mode 100644 portal-ui/build/static/js/2182.fc8d191e.chunk.js.map delete mode 100644 portal-ui/build/static/js/2417.105afd14.chunk.js delete mode 100644 portal-ui/build/static/js/2417.105afd14.chunk.js.map rename portal-ui/build/static/js/{2464.f44ab309.chunk.js => 2464.4826a900.chunk.js} (98%) rename portal-ui/build/static/js/{2464.f44ab309.chunk.js.map => 2464.4826a900.chunk.js.map} (99%) create mode 100644 portal-ui/build/static/js/2491.26896af4.chunk.js create mode 100644 portal-ui/build/static/js/2491.26896af4.chunk.js.map delete mode 100644 portal-ui/build/static/js/2491.70293bae.chunk.js delete mode 100644 portal-ui/build/static/js/2491.70293bae.chunk.js.map rename portal-ui/build/static/js/{2699.6f1c9c05.chunk.js => 2699.798137ae.chunk.js} (97%) rename portal-ui/build/static/js/{2699.6f1c9c05.chunk.js.map => 2699.798137ae.chunk.js.map} (99%) create mode 100644 portal-ui/build/static/js/2805.32c23bd6.chunk.js create mode 100644 portal-ui/build/static/js/2805.32c23bd6.chunk.js.map delete mode 100644 portal-ui/build/static/js/2805.621131c8.chunk.js delete mode 100644 portal-ui/build/static/js/2805.621131c8.chunk.js.map rename portal-ui/build/static/js/{2818.d6147732.chunk.js => 2818.75db1c33.chunk.js} (98%) rename portal-ui/build/static/js/{2818.d6147732.chunk.js.map => 2818.75db1c33.chunk.js.map} (99%) create mode 100644 portal-ui/build/static/js/2841.129ece8f.chunk.js create mode 100644 portal-ui/build/static/js/2841.129ece8f.chunk.js.map delete mode 100644 portal-ui/build/static/js/2841.a58d2a5d.chunk.js delete mode 100644 portal-ui/build/static/js/2841.a58d2a5d.chunk.js.map rename portal-ui/build/static/js/{2886.64395b76.chunk.js => 2886.9e476e5d.chunk.js} (99%) rename portal-ui/build/static/js/{2886.64395b76.chunk.js.map => 2886.9e476e5d.chunk.js.map} (99%) rename portal-ui/build/static/js/{2892.dedb4d14.chunk.js => 2892.16bd6206.chunk.js} (99%) rename portal-ui/build/static/js/{2892.dedb4d14.chunk.js.map => 2892.16bd6206.chunk.js.map} (99%) create mode 100644 portal-ui/build/static/js/3276.43967f45.chunk.js create mode 100644 portal-ui/build/static/js/3276.43967f45.chunk.js.map delete mode 100644 portal-ui/build/static/js/3276.cbbfa439.chunk.js delete mode 100644 portal-ui/build/static/js/3276.cbbfa439.chunk.js.map delete mode 100644 portal-ui/build/static/js/3300.9b8f6257.chunk.js delete mode 100644 portal-ui/build/static/js/3300.9b8f6257.chunk.js.map delete mode 100644 portal-ui/build/static/js/3320.3fb492c4.chunk.js delete mode 100644 portal-ui/build/static/js/3320.3fb492c4.chunk.js.map create mode 100644 portal-ui/build/static/js/3320.c003989a.chunk.js create mode 100644 portal-ui/build/static/js/3320.c003989a.chunk.js.map rename portal-ui/build/static/js/{3421.1c5efe0e.chunk.js => 3421.7556d0a5.chunk.js} (99%) rename portal-ui/build/static/js/{3421.1c5efe0e.chunk.js.map => 3421.7556d0a5.chunk.js.map} (99%) delete mode 100644 portal-ui/build/static/js/3453.75ca1d21.chunk.js delete mode 100644 portal-ui/build/static/js/3453.75ca1d21.chunk.js.map create mode 100644 portal-ui/build/static/js/3453.9884f106.chunk.js create mode 100644 portal-ui/build/static/js/3453.9884f106.chunk.js.map create mode 100644 portal-ui/build/static/js/3617.d706e7dd.chunk.js rename portal-ui/build/static/js/{3617.ef0bffae.chunk.js.map => 3617.d706e7dd.chunk.js.map} (64%) delete mode 100644 portal-ui/build/static/js/3617.ef0bffae.chunk.js delete mode 100644 portal-ui/build/static/js/3698.928db215.chunk.js delete mode 100644 portal-ui/build/static/js/3698.928db215.chunk.js.map rename portal-ui/build/static/js/{3806.9b491d19.chunk.js => 3806.d7f55eff.chunk.js} (98%) rename portal-ui/build/static/js/{3806.9b491d19.chunk.js.map => 3806.d7f55eff.chunk.js.map} (99%) rename portal-ui/build/static/js/{3816.b73504ec.chunk.js => 3816.6e9d4535.chunk.js} (98%) rename portal-ui/build/static/js/{3816.b73504ec.chunk.js.map => 3816.6e9d4535.chunk.js.map} (99%) delete mode 100644 portal-ui/build/static/js/3830.bdda307f.chunk.js delete mode 100644 portal-ui/build/static/js/3830.bdda307f.chunk.js.map rename portal-ui/build/static/js/{3967.e89c4131.chunk.js => 3967.bc7e18bc.chunk.js} (98%) rename portal-ui/build/static/js/{3967.e89c4131.chunk.js.map => 3967.bc7e18bc.chunk.js.map} (99%) create mode 100644 portal-ui/build/static/js/4014.a838f30b.chunk.js create mode 100644 portal-ui/build/static/js/4014.a838f30b.chunk.js.map delete mode 100644 portal-ui/build/static/js/4084.3d9d8cab.chunk.js.map rename portal-ui/build/static/js/{4084.3d9d8cab.chunk.js => 4084.91e59ef0.chunk.js} (81%) create mode 100644 portal-ui/build/static/js/4084.91e59ef0.chunk.js.map rename portal-ui/build/static/js/{4121.dc9cd38b.chunk.js => 4121.938d98fc.chunk.js} (98%) rename portal-ui/build/static/js/{4121.dc9cd38b.chunk.js.map => 4121.938d98fc.chunk.js.map} (99%) rename portal-ui/build/static/js/{4177.fd895511.chunk.js => 4177.f084aca8.chunk.js} (99%) rename portal-ui/build/static/js/{4177.fd895511.chunk.js.map => 4177.f084aca8.chunk.js.map} (99%) rename portal-ui/build/static/js/{4220.9aea78f1.chunk.js => 4220.a17c6e56.chunk.js} (99%) rename portal-ui/build/static/js/{4220.9aea78f1.chunk.js.map => 4220.a17c6e56.chunk.js.map} (99%) create mode 100644 portal-ui/build/static/js/428.93fdab67.chunk.js create mode 100644 portal-ui/build/static/js/428.93fdab67.chunk.js.map delete mode 100644 portal-ui/build/static/js/428.f1f3ca19.chunk.js delete mode 100644 portal-ui/build/static/js/428.f1f3ca19.chunk.js.map rename portal-ui/build/static/js/{1233.9903fc82.chunk.js => 4475.33c47914.chunk.js} (88%) create mode 100644 portal-ui/build/static/js/4475.33c47914.chunk.js.map rename portal-ui/build/static/js/{4487.c59869da.chunk.js => 4487.d2c5f3cb.chunk.js} (99%) rename portal-ui/build/static/js/{4487.c59869da.chunk.js.map => 4487.d2c5f3cb.chunk.js.map} (99%) rename portal-ui/build/static/js/{4515.a137eba4.chunk.js => 4515.15c3ee19.chunk.js} (98%) rename portal-ui/build/static/js/{4515.a137eba4.chunk.js.map => 4515.15c3ee19.chunk.js.map} (99%) delete mode 100644 portal-ui/build/static/js/4533.0533f737.chunk.js delete mode 100644 portal-ui/build/static/js/4533.0533f737.chunk.js.map create mode 100644 portal-ui/build/static/js/4577.c760ff58.chunk.js create mode 100644 portal-ui/build/static/js/4577.c760ff58.chunk.js.map delete mode 100644 portal-ui/build/static/js/4577.d5eda9f7.chunk.js delete mode 100644 portal-ui/build/static/js/4577.d5eda9f7.chunk.js.map rename portal-ui/build/static/js/{4745.d3b72d46.chunk.js => 4745.e59a39e5.chunk.js} (95%) rename portal-ui/build/static/js/{4745.d3b72d46.chunk.js.map => 4745.e59a39e5.chunk.js.map} (99%) rename portal-ui/build/static/js/{4818.1f7ff2b7.chunk.js => 4818.f16db75f.chunk.js} (98%) rename portal-ui/build/static/js/{4818.1f7ff2b7.chunk.js.map => 4818.f16db75f.chunk.js.map} (99%) rename portal-ui/build/static/js/{4839.cd845b47.chunk.js => 4839.cdb78fdd.chunk.js} (99%) rename portal-ui/build/static/js/{4839.cd845b47.chunk.js.map => 4839.cdb78fdd.chunk.js.map} (99%) delete mode 100644 portal-ui/build/static/js/4869.58db9f45.chunk.js delete mode 100644 portal-ui/build/static/js/4869.58db9f45.chunk.js.map create mode 100644 portal-ui/build/static/js/4907.951766e2.chunk.js create mode 100644 portal-ui/build/static/js/4907.951766e2.chunk.js.map rename portal-ui/build/static/js/{4960.4944962a.chunk.js => 4960.93e965c8.chunk.js} (98%) rename portal-ui/build/static/js/{4960.4944962a.chunk.js.map => 4960.93e965c8.chunk.js.map} (99%) delete mode 100644 portal-ui/build/static/js/4996.2e18711b.chunk.js create mode 100644 portal-ui/build/static/js/4996.6b373efe.chunk.js rename portal-ui/build/static/js/{4996.2e18711b.chunk.js.map => 4996.6b373efe.chunk.js.map} (99%) create mode 100644 portal-ui/build/static/js/5013.9b73571d.chunk.js create mode 100644 portal-ui/build/static/js/5013.9b73571d.chunk.js.map rename portal-ui/build/static/js/{5144.392cff58.chunk.js => 5144.d191021a.chunk.js} (96%) rename portal-ui/build/static/js/{5144.392cff58.chunk.js.map => 5144.d191021a.chunk.js.map} (99%) create mode 100644 portal-ui/build/static/js/528.162128e4.chunk.js create mode 100644 portal-ui/build/static/js/528.162128e4.chunk.js.map rename portal-ui/build/static/js/{5284.e06719cf.chunk.js => 5284.84b8c4f2.chunk.js} (98%) rename portal-ui/build/static/js/{5284.e06719cf.chunk.js.map => 5284.84b8c4f2.chunk.js.map} (99%) delete mode 100644 portal-ui/build/static/js/5339.77ff74c9.chunk.js delete mode 100644 portal-ui/build/static/js/5339.77ff74c9.chunk.js.map create mode 100644 portal-ui/build/static/js/5339.9ea85a11.chunk.js create mode 100644 portal-ui/build/static/js/5339.9ea85a11.chunk.js.map delete mode 100644 portal-ui/build/static/js/5482.565ebb65.chunk.js delete mode 100644 portal-ui/build/static/js/5482.565ebb65.chunk.js.map create mode 100644 portal-ui/build/static/js/5591.19411b3a.chunk.js create mode 100644 portal-ui/build/static/js/5591.19411b3a.chunk.js.map delete mode 100644 portal-ui/build/static/js/5591.992e2bda.chunk.js delete mode 100644 portal-ui/build/static/js/5591.992e2bda.chunk.js.map create mode 100644 portal-ui/build/static/js/5808.53d76704.chunk.js rename portal-ui/build/static/js/{5808.a4148012.chunk.js.map => 5808.53d76704.chunk.js.map} (99%) delete mode 100644 portal-ui/build/static/js/5808.a4148012.chunk.js rename portal-ui/build/static/js/{5822.55acdd2b.chunk.js => 5822.22817933.chunk.js} (99%) rename portal-ui/build/static/js/{5822.55acdd2b.chunk.js.map => 5822.22817933.chunk.js.map} (99%) create mode 100644 portal-ui/build/static/js/5937.f6a62c9f.chunk.js create mode 100644 portal-ui/build/static/js/5937.f6a62c9f.chunk.js.map delete mode 100644 portal-ui/build/static/js/5947.dda226b6.chunk.js delete mode 100644 portal-ui/build/static/js/5947.dda226b6.chunk.js.map rename portal-ui/build/static/js/{5961.975bb084.chunk.js => 5961.038c5585.chunk.js} (97%) rename portal-ui/build/static/js/{5961.975bb084.chunk.js.map => 5961.038c5585.chunk.js.map} (99%) rename portal-ui/build/static/js/{609.01a74891.chunk.js => 609.9484fe14.chunk.js} (98%) rename portal-ui/build/static/js/{609.01a74891.chunk.js.map => 609.9484fe14.chunk.js.map} (99%) rename portal-ui/build/static/js/{9998.1a613ce5.chunk.js => 6117.0fcd3d09.chunk.js} (62%) create mode 100644 portal-ui/build/static/js/6117.0fcd3d09.chunk.js.map rename portal-ui/build/static/js/{6145.0f094527.chunk.js => 6145.0d21c766.chunk.js} (99%) rename portal-ui/build/static/js/{6145.0f094527.chunk.js.map => 6145.0d21c766.chunk.js.map} (99%) create mode 100644 portal-ui/build/static/js/6147.737c5d72.chunk.js rename portal-ui/build/static/js/{6147.c07c0ae2.chunk.js.map => 6147.737c5d72.chunk.js.map} (60%) delete mode 100644 portal-ui/build/static/js/6147.c07c0ae2.chunk.js rename portal-ui/build/static/js/{6167.fed9e5cf.chunk.js => 6167.2799d88c.chunk.js} (98%) rename portal-ui/build/static/js/{6167.fed9e5cf.chunk.js.map => 6167.2799d88c.chunk.js.map} (99%) rename portal-ui/build/static/js/{6173.afdc41b4.chunk.js => 6173.a5df8119.chunk.js} (98%) rename portal-ui/build/static/js/{6173.afdc41b4.chunk.js.map => 6173.a5df8119.chunk.js.map} (99%) delete mode 100644 portal-ui/build/static/js/635.2854d4f5.chunk.js create mode 100644 portal-ui/build/static/js/635.89e9fe78.chunk.js rename portal-ui/build/static/js/{635.2854d4f5.chunk.js.map => 635.89e9fe78.chunk.js.map} (99%) rename portal-ui/build/static/js/{6436.7b0189de.chunk.js => 6436.068113ba.chunk.js} (99%) rename portal-ui/build/static/js/{6436.7b0189de.chunk.js.map => 6436.068113ba.chunk.js.map} (99%) delete mode 100644 portal-ui/build/static/js/6597.fc1eafc4.chunk.js delete mode 100644 portal-ui/build/static/js/6597.fc1eafc4.chunk.js.map create mode 100644 portal-ui/build/static/js/664.36be7d56.chunk.js create mode 100644 portal-ui/build/static/js/664.36be7d56.chunk.js.map rename portal-ui/build/static/js/{6866.d7d9be68.chunk.js => 6866.3129ee33.chunk.js} (99%) rename portal-ui/build/static/js/{6866.d7d9be68.chunk.js.map => 6866.3129ee33.chunk.js.map} (99%) delete mode 100644 portal-ui/build/static/js/6873.1b3165f5.chunk.js delete mode 100644 portal-ui/build/static/js/6873.1b3165f5.chunk.js.map create mode 100644 portal-ui/build/static/js/6873.24e34528.chunk.js create mode 100644 portal-ui/build/static/js/6873.24e34528.chunk.js.map rename portal-ui/build/static/js/{7007.aaee4953.chunk.js => 7007.6a27b2ef.chunk.js} (98%) rename portal-ui/build/static/js/{7007.aaee4953.chunk.js.map => 7007.6a27b2ef.chunk.js.map} (99%) rename portal-ui/build/static/js/{7187.968efbad.chunk.js => 7187.29038335.chunk.js} (97%) rename portal-ui/build/static/js/{7187.968efbad.chunk.js.map => 7187.29038335.chunk.js.map} (99%) create mode 100644 portal-ui/build/static/js/7261.8e611fac.chunk.js create mode 100644 portal-ui/build/static/js/7261.8e611fac.chunk.js.map delete mode 100644 portal-ui/build/static/js/7261.ee9cc151.chunk.js delete mode 100644 portal-ui/build/static/js/7261.ee9cc151.chunk.js.map delete mode 100644 portal-ui/build/static/js/7274.a51a45fc.chunk.js create mode 100644 portal-ui/build/static/js/7274.f0a6594d.chunk.js rename portal-ui/build/static/js/{7274.a51a45fc.chunk.js.map => 7274.f0a6594d.chunk.js.map} (57%) rename portal-ui/build/static/js/{7314.da174e5e.chunk.js => 7314.a100ba0d.chunk.js} (97%) rename portal-ui/build/static/js/{7314.da174e5e.chunk.js.map => 7314.a100ba0d.chunk.js.map} (99%) rename portal-ui/build/static/js/{7346.efd507dc.chunk.js => 7346.9022c544.chunk.js} (98%) rename portal-ui/build/static/js/{7346.efd507dc.chunk.js.map => 7346.9022c544.chunk.js.map} (99%) delete mode 100644 portal-ui/build/static/js/7348.7a72b31f.chunk.js.map rename portal-ui/build/static/js/{7348.7a72b31f.chunk.js => 7348.fe223af1.chunk.js} (51%) create mode 100644 portal-ui/build/static/js/7348.fe223af1.chunk.js.map rename portal-ui/build/static/js/{7436.c5785c09.chunk.js => 7436.1d960975.chunk.js} (97%) rename portal-ui/build/static/js/{7436.c5785c09.chunk.js.map => 7436.1d960975.chunk.js.map} (99%) delete mode 100644 portal-ui/build/static/js/7456.743391a4.chunk.js delete mode 100644 portal-ui/build/static/js/7456.743391a4.chunk.js.map create mode 100644 portal-ui/build/static/js/7456.7fa8ebd5.chunk.js create mode 100644 portal-ui/build/static/js/7456.7fa8ebd5.chunk.js.map rename portal-ui/build/static/js/{7498.c395ccf1.chunk.js => 7498.4e5e3ff3.chunk.js} (88%) rename portal-ui/build/static/js/{7498.c395ccf1.chunk.js.map => 7498.4e5e3ff3.chunk.js.map} (98%) rename portal-ui/build/static/js/{7551.0bf2079d.chunk.js => 7551.83de15d3.chunk.js} (99%) rename portal-ui/build/static/js/{7551.0bf2079d.chunk.js.map => 7551.83de15d3.chunk.js.map} (99%) rename portal-ui/build/static/js/{7664.bb12744a.chunk.js => 7664.d720f8fc.chunk.js} (89%) rename portal-ui/build/static/js/{7664.bb12744a.chunk.js.map => 7664.d720f8fc.chunk.js.map} (98%) rename portal-ui/build/static/js/{7842.3103d8de.chunk.js => 7842.5677d2f1.chunk.js} (98%) rename portal-ui/build/static/js/{7842.3103d8de.chunk.js.map => 7842.5677d2f1.chunk.js.map} (99%) rename portal-ui/build/static/js/{7926.2532900d.chunk.js => 7926.f7eacde3.chunk.js} (98%) rename portal-ui/build/static/js/{7926.2532900d.chunk.js.map => 7926.f7eacde3.chunk.js.map} (99%) delete mode 100644 portal-ui/build/static/js/7939.46ff2d0f.chunk.js delete mode 100644 portal-ui/build/static/js/7939.46ff2d0f.chunk.js.map delete mode 100644 portal-ui/build/static/js/7950.4cb62868.chunk.js delete mode 100644 portal-ui/build/static/js/7950.4cb62868.chunk.js.map create mode 100644 portal-ui/build/static/js/7950.69490eec.chunk.js create mode 100644 portal-ui/build/static/js/7950.69490eec.chunk.js.map delete mode 100644 portal-ui/build/static/js/8016.0758210e.chunk.js delete mode 100644 portal-ui/build/static/js/8016.0758210e.chunk.js.map create mode 100644 portal-ui/build/static/js/8016.eaf91b09.chunk.js create mode 100644 portal-ui/build/static/js/8016.eaf91b09.chunk.js.map create mode 100644 portal-ui/build/static/js/8174.3610f42d.chunk.js rename portal-ui/build/static/js/{8174.b2493b0b.chunk.js.map => 8174.3610f42d.chunk.js.map} (99%) delete mode 100644 portal-ui/build/static/js/8174.b2493b0b.chunk.js rename portal-ui/build/static/js/{8190.02056f3f.chunk.js => 8190.cf11e001.chunk.js} (97%) rename portal-ui/build/static/js/{8190.02056f3f.chunk.js.map => 8190.cf11e001.chunk.js.map} (99%) rename portal-ui/build/static/js/{825.3a314578.chunk.js => 825.56a95484.chunk.js} (69%) rename portal-ui/build/static/js/{825.3a314578.chunk.js.map => 825.56a95484.chunk.js.map} (78%) rename portal-ui/build/static/js/{8259.162d3a40.chunk.js => 8259.3e394c4d.chunk.js} (99%) rename portal-ui/build/static/js/{8259.162d3a40.chunk.js.map => 8259.3e394c4d.chunk.js.map} (99%) rename portal-ui/build/static/js/{8333.97c188eb.chunk.js => 8333.fd3a87f0.chunk.js} (96%) rename portal-ui/build/static/js/{8333.97c188eb.chunk.js.map => 8333.fd3a87f0.chunk.js.map} (99%) rename portal-ui/build/static/js/{8394.aab97516.chunk.js => 8394.2fe90abb.chunk.js} (52%) create mode 100644 portal-ui/build/static/js/8394.2fe90abb.chunk.js.map delete mode 100644 portal-ui/build/static/js/8394.aab97516.chunk.js.map create mode 100644 portal-ui/build/static/js/8428.039817fe.chunk.js create mode 100644 portal-ui/build/static/js/8428.039817fe.chunk.js.map rename portal-ui/build/static/js/{8564.b0794921.chunk.js => 8564.694f46b6.chunk.js} (98%) rename portal-ui/build/static/js/{8564.b0794921.chunk.js.map => 8564.694f46b6.chunk.js.map} (99%) create mode 100644 portal-ui/build/static/js/8661.b3d2fa96.chunk.js create mode 100644 portal-ui/build/static/js/8661.b3d2fa96.chunk.js.map delete mode 100644 portal-ui/build/static/js/8661.d0eec194.chunk.js delete mode 100644 portal-ui/build/static/js/8661.d0eec194.chunk.js.map rename portal-ui/build/static/js/{8724.0c41b255.chunk.js => 8724.4770aad0.chunk.js} (98%) rename portal-ui/build/static/js/{8724.0c41b255.chunk.js.map => 8724.4770aad0.chunk.js.map} (99%) delete mode 100644 portal-ui/build/static/js/8961.2e01f3c6.chunk.js.map rename portal-ui/build/static/js/{8961.2e01f3c6.chunk.js => 8961.58205fe0.chunk.js} (55%) create mode 100644 portal-ui/build/static/js/8961.58205fe0.chunk.js.map rename portal-ui/build/static/js/{9.e2862ce4.chunk.js => 9.1b7fc122.chunk.js} (98%) rename portal-ui/build/static/js/{9.e2862ce4.chunk.js.map => 9.1b7fc122.chunk.js.map} (99%) rename portal-ui/build/static/js/{9080.f007894a.chunk.js => 9080.3a18c755.chunk.js} (99%) rename portal-ui/build/static/js/{9080.f007894a.chunk.js.map => 9080.3a18c755.chunk.js.map} (99%) rename portal-ui/build/static/js/{9193.47341a7f.chunk.js => 9193.9f06c0b0.chunk.js} (91%) rename portal-ui/build/static/js/{9193.47341a7f.chunk.js.map => 9193.9f06c0b0.chunk.js.map} (98%) rename portal-ui/build/static/js/{9275.69a60a7c.chunk.js => 9275.e8e507c7.chunk.js} (98%) rename portal-ui/build/static/js/{9275.69a60a7c.chunk.js.map => 9275.e8e507c7.chunk.js.map} (99%) rename portal-ui/build/static/js/{9330.33984e73.chunk.js => 9330.9a62ccd3.chunk.js} (98%) rename portal-ui/build/static/js/{9330.33984e73.chunk.js.map => 9330.9a62ccd3.chunk.js.map} (99%) rename portal-ui/build/static/js/{9421.5cc40d43.chunk.js => 9421.f0450a76.chunk.js} (94%) rename portal-ui/build/static/js/{9421.5cc40d43.chunk.js.map => 9421.f0450a76.chunk.js.map} (99%) rename portal-ui/build/static/js/{953.46121656.chunk.js => 953.9faff84d.chunk.js} (99%) rename portal-ui/build/static/js/{953.46121656.chunk.js.map => 953.9faff84d.chunk.js.map} (99%) rename portal-ui/build/static/js/{9560.1c7c393b.chunk.js => 9560.3411ac3a.chunk.js} (98%) rename portal-ui/build/static/js/{9560.1c7c393b.chunk.js.map => 9560.3411ac3a.chunk.js.map} (99%) create mode 100644 portal-ui/build/static/js/964.e01d742c.chunk.js create mode 100644 portal-ui/build/static/js/964.e01d742c.chunk.js.map rename portal-ui/build/static/js/{9645.52a31d53.chunk.js => 9645.35bbd0ca.chunk.js} (99%) rename portal-ui/build/static/js/{9645.52a31d53.chunk.js.map => 9645.35bbd0ca.chunk.js.map} (99%) rename portal-ui/build/static/js/{9661.68a3c872.chunk.js => 9661.6525cdb3.chunk.js} (99%) rename portal-ui/build/static/js/{9661.68a3c872.chunk.js.map => 9661.6525cdb3.chunk.js.map} (99%) rename portal-ui/build/static/js/{9679.b9a553b7.chunk.js => 9679.aabc9be8.chunk.js} (98%) rename portal-ui/build/static/js/{9679.b9a553b7.chunk.js.map => 9679.aabc9be8.chunk.js.map} (99%) rename portal-ui/build/static/js/{9779.23164a07.chunk.js => 9779.14e8d3f5.chunk.js} (95%) rename portal-ui/build/static/js/{9779.23164a07.chunk.js.map => 9779.14e8d3f5.chunk.js.map} (99%) create mode 100644 portal-ui/build/static/js/9807.b068214f.chunk.js create mode 100644 portal-ui/build/static/js/9807.b068214f.chunk.js.map delete mode 100644 portal-ui/build/static/js/9807.b3b1c965.chunk.js delete mode 100644 portal-ui/build/static/js/9807.b3b1c965.chunk.js.map create mode 100644 portal-ui/build/static/js/9881.b5453ed2.chunk.js rename portal-ui/build/static/js/{7939.46ff2d0f.chunk.js.LICENSE.txt => 9881.b5453ed2.chunk.js.LICENSE.txt} (100%) create mode 100644 portal-ui/build/static/js/9881.b5453ed2.chunk.js.map create mode 100644 portal-ui/build/static/js/9924.3cf3061d.chunk.js create mode 100644 portal-ui/build/static/js/9924.3cf3061d.chunk.js.map delete mode 100644 portal-ui/build/static/js/9924.ba0c0a4a.chunk.js delete mode 100644 portal-ui/build/static/js/9924.ba0c0a4a.chunk.js.map delete mode 100644 portal-ui/build/static/js/9998.1a613ce5.chunk.js.map delete mode 100644 portal-ui/build/static/js/main.26dfcd6f.js delete mode 100644 portal-ui/build/static/js/main.26dfcd6f.js.map create mode 100644 portal-ui/build/static/js/main.c0c05764.js rename portal-ui/build/static/js/{main.26dfcd6f.js.LICENSE.txt => main.c0c05764.js.LICENSE.txt} (100%) create mode 100644 portal-ui/build/static/js/main.c0c05764.js.map diff --git a/k8s/operator-console/base/console-deployment.yaml b/k8s/operator-console/base/console-deployment.yaml index 9cee42556..453954b4c 100644 --- a/k8s/operator-console/base/console-deployment.yaml +++ b/k8s/operator-console/base/console-deployment.yaml @@ -15,7 +15,7 @@ spec: serviceAccountName: console-sa containers: - name: console - image: 'minio/console:v0.14.8' + image: 'minio/console:v0.15.0' imagePullPolicy: "IfNotPresent" env: - name: CONSOLE_OPERATOR_MODE diff --git a/k8s/operator-console/standalone/console-deployment.yaml b/k8s/operator-console/standalone/console-deployment.yaml index 4161e1baf..9351a6bbc 100644 --- a/k8s/operator-console/standalone/console-deployment.yaml +++ b/k8s/operator-console/standalone/console-deployment.yaml @@ -32,7 +32,7 @@ spec: spec: containers: - name: console - image: 'minio/console:v0.14.8' + image: 'minio/console:v0.15.0' imagePullPolicy: "IfNotPresent" env: - name: CONSOLE_MINIO_SERVER diff --git a/models/update_tenant_encryption_request.go b/models/update_tenant_encryption_request.go deleted file mode 100644 index 34934b743..000000000 --- a/models/update_tenant_encryption_request.go +++ /dev/null @@ -1,232 +0,0 @@ -// Code generated by go-swagger; DO NOT EDIT. - -// This file is part of MinIO Console Server -// Copyright (c) 2021 MinIO, Inc. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Affero General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Affero General Public License for more details. -// -// You should have received a copy of the GNU Affero General Public License -// along with this program. If not, see . -// - -package models - -// This file was generated by the swagger tool. -// Editing this file might prove futile when you re-run the swagger generate command - -import ( - "context" - "strconv" - - "github.com/go-openapi/errors" - "github.com/go-openapi/strfmt" - "github.com/go-openapi/swag" -) - -// UpdateTenantEncryptionRequest update tenant encryption request -// -// swagger:model updateTenantEncryptionRequest -type UpdateTenantEncryptionRequest struct { - - // auto cert - AutoCert bool `json:"autoCert,omitempty"` - - // custom certificates - CustomCertificates *UpdateTenantEncryptionRequestCustomCertificates `json:"customCertificates,omitempty"` -} - -// Validate validates this update tenant encryption request -func (m *UpdateTenantEncryptionRequest) Validate(formats strfmt.Registry) error { - var res []error - - if err := m.validateCustomCertificates(formats); err != nil { - res = append(res, err) - } - - if len(res) > 0 { - return errors.CompositeValidationError(res...) - } - return nil -} - -func (m *UpdateTenantEncryptionRequest) validateCustomCertificates(formats strfmt.Registry) error { - if swag.IsZero(m.CustomCertificates) { // not required - return nil - } - - if m.CustomCertificates != nil { - if err := m.CustomCertificates.Validate(formats); err != nil { - if ve, ok := err.(*errors.Validation); ok { - return ve.ValidateName("customCertificates") - } else if ce, ok := err.(*errors.CompositeError); ok { - return ce.ValidateName("customCertificates") - } - return err - } - } - - return nil -} - -// ContextValidate validate this update tenant encryption request based on the context it is used -func (m *UpdateTenantEncryptionRequest) ContextValidate(ctx context.Context, formats strfmt.Registry) error { - var res []error - - if err := m.contextValidateCustomCertificates(ctx, formats); err != nil { - res = append(res, err) - } - - if len(res) > 0 { - return errors.CompositeValidationError(res...) - } - return nil -} - -func (m *UpdateTenantEncryptionRequest) contextValidateCustomCertificates(ctx context.Context, formats strfmt.Registry) error { - - if m.CustomCertificates != nil { - if err := m.CustomCertificates.ContextValidate(ctx, formats); err != nil { - if ve, ok := err.(*errors.Validation); ok { - return ve.ValidateName("customCertificates") - } else if ce, ok := err.(*errors.CompositeError); ok { - return ce.ValidateName("customCertificates") - } - return err - } - } - - return nil -} - -// MarshalBinary interface implementation -func (m *UpdateTenantEncryptionRequest) MarshalBinary() ([]byte, error) { - if m == nil { - return nil, nil - } - return swag.WriteJSON(m) -} - -// UnmarshalBinary interface implementation -func (m *UpdateTenantEncryptionRequest) UnmarshalBinary(b []byte) error { - var res UpdateTenantEncryptionRequest - if err := swag.ReadJSON(b, &res); err != nil { - return err - } - *m = res - return nil -} - -// UpdateTenantEncryptionRequestCustomCertificates update tenant encryption request custom certificates -// -// swagger:model UpdateTenantEncryptionRequestCustomCertificates -type UpdateTenantEncryptionRequestCustomCertificates struct { - - // minio - Minio []*KeyPairConfiguration `json:"minio"` - - // minio c as - MinioCAs []string `json:"minioCAs"` - - // secrets to be deleted - SecretsToBeDeleted []string `json:"secretsToBeDeleted"` -} - -// Validate validates this update tenant encryption request custom certificates -func (m *UpdateTenantEncryptionRequestCustomCertificates) Validate(formats strfmt.Registry) error { - var res []error - - if err := m.validateMinio(formats); err != nil { - res = append(res, err) - } - - if len(res) > 0 { - return errors.CompositeValidationError(res...) - } - return nil -} - -func (m *UpdateTenantEncryptionRequestCustomCertificates) validateMinio(formats strfmt.Registry) error { - if swag.IsZero(m.Minio) { // not required - return nil - } - - for i := 0; i < len(m.Minio); i++ { - if swag.IsZero(m.Minio[i]) { // not required - continue - } - - if m.Minio[i] != nil { - if err := m.Minio[i].Validate(formats); err != nil { - if ve, ok := err.(*errors.Validation); ok { - return ve.ValidateName("customCertificates" + "." + "minio" + "." + strconv.Itoa(i)) - } else if ce, ok := err.(*errors.CompositeError); ok { - return ce.ValidateName("customCertificates" + "." + "minio" + "." + strconv.Itoa(i)) - } - return err - } - } - - } - - return nil -} - -// ContextValidate validate this update tenant encryption request custom certificates based on the context it is used -func (m *UpdateTenantEncryptionRequestCustomCertificates) ContextValidate(ctx context.Context, formats strfmt.Registry) error { - var res []error - - if err := m.contextValidateMinio(ctx, formats); err != nil { - res = append(res, err) - } - - if len(res) > 0 { - return errors.CompositeValidationError(res...) - } - return nil -} - -func (m *UpdateTenantEncryptionRequestCustomCertificates) contextValidateMinio(ctx context.Context, formats strfmt.Registry) error { - - for i := 0; i < len(m.Minio); i++ { - - if m.Minio[i] != nil { - if err := m.Minio[i].ContextValidate(ctx, formats); err != nil { - if ve, ok := err.(*errors.Validation); ok { - return ve.ValidateName("customCertificates" + "." + "minio" + "." + strconv.Itoa(i)) - } else if ce, ok := err.(*errors.CompositeError); ok { - return ce.ValidateName("customCertificates" + "." + "minio" + "." + strconv.Itoa(i)) - } - return err - } - } - - } - - return nil -} - -// MarshalBinary interface implementation -func (m *UpdateTenantEncryptionRequestCustomCertificates) MarshalBinary() ([]byte, error) { - if m == nil { - return nil, nil - } - return swag.WriteJSON(m) -} - -// UnmarshalBinary interface implementation -func (m *UpdateTenantEncryptionRequestCustomCertificates) UnmarshalBinary(b []byte) error { - var res UpdateTenantEncryptionRequestCustomCertificates - if err := swag.ReadJSON(b, &res); err != nil { - return err - } - *m = res - return nil -} diff --git a/portal-ui/build/asset-manifest.json b/portal-ui/build/asset-manifest.json index c824bf1aa..4c51203ee 100644 --- a/portal-ui/build/asset-manifest.json +++ b/portal-ui/build/asset-manifest.json @@ -1,335 +1,327 @@ { "files": { "main.css": "./static/css/main.c4c1effe.css", - "main.js": "./static/js/main.26dfcd6f.js", - "static/js/2178.70c131e4.chunk.js": "./static/js/2178.70c131e4.chunk.js", + "main.js": "./static/js/main.c0c05764.js", + "static/js/2178.e5c1c8aa.chunk.js": "./static/js/2178.e5c1c8aa.chunk.js", "static/js/5282.e51b8c66.chunk.js": "./static/js/5282.e51b8c66.chunk.js", - "static/js/2818.d6147732.chunk.js": "./static/js/2818.d6147732.chunk.js", - "static/js/9560.1c7c393b.chunk.js": "./static/js/9560.1c7c393b.chunk.js", - "static/js/9661.68a3c872.chunk.js": "./static/js/9661.68a3c872.chunk.js", - "static/js/9330.33984e73.chunk.js": "./static/js/9330.33984e73.chunk.js", - "static/js/4869.58db9f45.chunk.js": "./static/js/4869.58db9f45.chunk.js", - "static/js/7436.c5785c09.chunk.js": "./static/js/7436.c5785c09.chunk.js", - "static/js/1056.369ba3ab.chunk.js": "./static/js/1056.369ba3ab.chunk.js", - "static/js/9779.23164a07.chunk.js": "./static/js/9779.23164a07.chunk.js", - "static/js/3617.ef0bffae.chunk.js": "./static/js/3617.ef0bffae.chunk.js", - "static/js/7274.a51a45fc.chunk.js": "./static/js/7274.a51a45fc.chunk.js", - "static/js/7842.3103d8de.chunk.js": "./static/js/7842.3103d8de.chunk.js", - "static/js/4745.d3b72d46.chunk.js": "./static/js/4745.d3b72d46.chunk.js", - "static/js/4515.a137eba4.chunk.js": "./static/js/4515.a137eba4.chunk.js", - "static/js/8259.162d3a40.chunk.js": "./static/js/8259.162d3a40.chunk.js", - "static/js/4839.cd845b47.chunk.js": "./static/js/4839.cd845b47.chunk.js", - "static/js/3830.bdda307f.chunk.js": "./static/js/3830.bdda307f.chunk.js", - "static/js/9275.69a60a7c.chunk.js": "./static/js/9275.69a60a7c.chunk.js", - "static/js/8190.02056f3f.chunk.js": "./static/js/8190.02056f3f.chunk.js", - "static/js/7314.da174e5e.chunk.js": "./static/js/7314.da174e5e.chunk.js", - "static/js/7456.743391a4.chunk.js": "./static/js/7456.743391a4.chunk.js", - "static/css/5822.8e16189d.chunk.css": "./static/css/5822.8e16189d.chunk.css", - "static/js/5822.55acdd2b.chunk.js": "./static/js/5822.55acdd2b.chunk.js", - "static/js/2699.6f1c9c05.chunk.js": "./static/js/2699.6f1c9c05.chunk.js", - "static/js/5808.a4148012.chunk.js": "./static/js/5808.a4148012.chunk.js", - "static/js/1237.dbb13c2b.chunk.js": "./static/js/1237.dbb13c2b.chunk.js", - "static/js/189.108e9feb.chunk.js": "./static/js/189.108e9feb.chunk.js", - "static/css/2024.8e16189d.chunk.css": "./static/css/2024.8e16189d.chunk.css", - "static/js/2024.6baed5c5.chunk.js": "./static/js/2024.6baed5c5.chunk.js", - "static/css/9807.8e16189d.chunk.css": "./static/css/9807.8e16189d.chunk.css", - "static/js/9807.b3b1c965.chunk.js": "./static/js/9807.b3b1c965.chunk.js", - "static/js/3806.9b491d19.chunk.js": "./static/js/3806.9b491d19.chunk.js", - "static/js/8661.d0eec194.chunk.js": "./static/js/8661.d0eec194.chunk.js", - "static/js/2886.64395b76.chunk.js": "./static/js/2886.64395b76.chunk.js", - "static/js/4577.d5eda9f7.chunk.js": "./static/js/4577.d5eda9f7.chunk.js", - "static/js/5947.dda226b6.chunk.js": "./static/js/5947.dda226b6.chunk.js", - "static/js/4533.0533f737.chunk.js": "./static/js/4533.0533f737.chunk.js", - "static/js/6147.c07c0ae2.chunk.js": "./static/js/6147.c07c0ae2.chunk.js", - "static/js/2805.621131c8.chunk.js": "./static/js/2805.621131c8.chunk.js", + "static/js/2818.75db1c33.chunk.js": "./static/js/2818.75db1c33.chunk.js", + "static/js/9560.3411ac3a.chunk.js": "./static/js/9560.3411ac3a.chunk.js", + "static/js/9661.6525cdb3.chunk.js": "./static/js/9661.6525cdb3.chunk.js", + "static/js/9330.9a62ccd3.chunk.js": "./static/js/9330.9a62ccd3.chunk.js", + "static/js/7436.1d960975.chunk.js": "./static/js/7436.1d960975.chunk.js", + "static/js/8428.039817fe.chunk.js": "./static/js/8428.039817fe.chunk.js", + "static/js/9779.14e8d3f5.chunk.js": "./static/js/9779.14e8d3f5.chunk.js", + "static/js/3617.d706e7dd.chunk.js": "./static/js/3617.d706e7dd.chunk.js", + "static/js/7274.f0a6594d.chunk.js": "./static/js/7274.f0a6594d.chunk.js", + "static/js/7842.5677d2f1.chunk.js": "./static/js/7842.5677d2f1.chunk.js", + "static/js/4745.e59a39e5.chunk.js": "./static/js/4745.e59a39e5.chunk.js", + "static/js/4515.15c3ee19.chunk.js": "./static/js/4515.15c3ee19.chunk.js", + "static/js/8259.3e394c4d.chunk.js": "./static/js/8259.3e394c4d.chunk.js", + "static/js/4839.cdb78fdd.chunk.js": "./static/js/4839.cdb78fdd.chunk.js", + "static/js/5013.9b73571d.chunk.js": "./static/js/5013.9b73571d.chunk.js", + "static/js/9275.e8e507c7.chunk.js": "./static/js/9275.e8e507c7.chunk.js", + "static/js/8190.cf11e001.chunk.js": "./static/js/8190.cf11e001.chunk.js", + "static/js/7314.a100ba0d.chunk.js": "./static/js/7314.a100ba0d.chunk.js", + "static/js/7456.7fa8ebd5.chunk.js": "./static/js/7456.7fa8ebd5.chunk.js", + "static/css/5822.dd80c1b6.chunk.css": "./static/css/5822.dd80c1b6.chunk.css", + "static/js/5822.22817933.chunk.js": "./static/js/5822.22817933.chunk.js", + "static/js/2699.798137ae.chunk.js": "./static/js/2699.798137ae.chunk.js", + "static/js/5808.53d76704.chunk.js": "./static/js/5808.53d76704.chunk.js", + "static/js/1237.b46ec019.chunk.js": "./static/js/1237.b46ec019.chunk.js", + "static/js/189.c6e8473a.chunk.js": "./static/js/189.c6e8473a.chunk.js", + "static/css/964.dd80c1b6.chunk.css": "./static/css/964.dd80c1b6.chunk.css", + "static/js/964.e01d742c.chunk.js": "./static/js/964.e01d742c.chunk.js", + "static/css/9807.dd80c1b6.chunk.css": "./static/css/9807.dd80c1b6.chunk.css", + "static/js/9807.b068214f.chunk.js": "./static/js/9807.b068214f.chunk.js", + "static/js/3806.d7f55eff.chunk.js": "./static/js/3806.d7f55eff.chunk.js", + "static/js/8661.b3d2fa96.chunk.js": "./static/js/8661.b3d2fa96.chunk.js", + "static/js/2886.9e476e5d.chunk.js": "./static/js/2886.9e476e5d.chunk.js", + "static/js/4577.c760ff58.chunk.js": "./static/js/4577.c760ff58.chunk.js", + "static/js/6147.737c5d72.chunk.js": "./static/js/6147.737c5d72.chunk.js", + "static/js/2805.32c23bd6.chunk.js": "./static/js/2805.32c23bd6.chunk.js", "static/js/3143.e6a9621d.chunk.js": "./static/js/3143.e6a9621d.chunk.js", - "static/js/428.f1f3ca19.chunk.js": "./static/js/428.f1f3ca19.chunk.js", - "static/js/1069.771a8a37.chunk.js": "./static/js/1069.771a8a37.chunk.js", - "static/js/9080.f007894a.chunk.js": "./static/js/9080.f007894a.chunk.js", - "static/js/3276.cbbfa439.chunk.js": "./static/js/3276.cbbfa439.chunk.js", - "static/js/5591.992e2bda.chunk.js": "./static/js/5591.992e2bda.chunk.js", - "static/js/7551.0bf2079d.chunk.js": "./static/js/7551.0bf2079d.chunk.js", - "static/js/7950.4cb62868.chunk.js": "./static/js/7950.4cb62868.chunk.js", - "static/js/6597.fc1eafc4.chunk.js": "./static/js/6597.fc1eafc4.chunk.js", - "static/js/8961.2e01f3c6.chunk.js": "./static/js/8961.2e01f3c6.chunk.js", - "static/js/3967.e89c4131.chunk.js": "./static/js/3967.e89c4131.chunk.js", - "static/css/4084.8e16189d.chunk.css": "./static/css/4084.8e16189d.chunk.css", - "static/js/4084.3d9d8cab.chunk.js": "./static/js/4084.3d9d8cab.chunk.js", - "static/js/8394.aab97516.chunk.js": "./static/js/8394.aab97516.chunk.js", - "static/js/7664.bb12744a.chunk.js": "./static/js/7664.bb12744a.chunk.js", - "static/js/1140.35a12cb4.chunk.js": "./static/js/1140.35a12cb4.chunk.js", - "static/js/5961.975bb084.chunk.js": "./static/js/5961.975bb084.chunk.js", + "static/js/428.93fdab67.chunk.js": "./static/js/428.93fdab67.chunk.js", + "static/js/1069.a96e20d9.chunk.js": "./static/js/1069.a96e20d9.chunk.js", + "static/js/9080.3a18c755.chunk.js": "./static/js/9080.3a18c755.chunk.js", + "static/js/3276.43967f45.chunk.js": "./static/js/3276.43967f45.chunk.js", + "static/js/5591.19411b3a.chunk.js": "./static/js/5591.19411b3a.chunk.js", + "static/js/7551.83de15d3.chunk.js": "./static/js/7551.83de15d3.chunk.js", + "static/js/7950.69490eec.chunk.js": "./static/js/7950.69490eec.chunk.js", + "static/js/5937.f6a62c9f.chunk.js": "./static/js/5937.f6a62c9f.chunk.js", + "static/js/8961.58205fe0.chunk.js": "./static/js/8961.58205fe0.chunk.js", + "static/js/3967.bc7e18bc.chunk.js": "./static/js/3967.bc7e18bc.chunk.js", + "static/css/4084.dd80c1b6.chunk.css": "./static/css/4084.dd80c1b6.chunk.css", + "static/js/4084.91e59ef0.chunk.js": "./static/js/4084.91e59ef0.chunk.js", + "static/js/8394.2fe90abb.chunk.js": "./static/js/8394.2fe90abb.chunk.js", + "static/js/7664.d720f8fc.chunk.js": "./static/js/7664.d720f8fc.chunk.js", + "static/js/1140.49ee98af.chunk.js": "./static/js/1140.49ee98af.chunk.js", + "static/js/5961.038c5585.chunk.js": "./static/js/5961.038c5585.chunk.js", "static/js/6549.e0686e32.chunk.js": "./static/js/6549.e0686e32.chunk.js", - "static/js/7498.c395ccf1.chunk.js": "./static/js/7498.c395ccf1.chunk.js", - "static/js/9421.5cc40d43.chunk.js": "./static/js/9421.5cc40d43.chunk.js", - "static/js/5284.e06719cf.chunk.js": "./static/js/5284.e06719cf.chunk.js", - "static/js/4818.1f7ff2b7.chunk.js": "./static/js/4818.1f7ff2b7.chunk.js", + "static/js/7498.4e5e3ff3.chunk.js": "./static/js/7498.4e5e3ff3.chunk.js", + "static/js/9421.f0450a76.chunk.js": "./static/js/9421.f0450a76.chunk.js", + "static/js/5284.84b8c4f2.chunk.js": "./static/js/5284.84b8c4f2.chunk.js", + "static/js/4818.f16db75f.chunk.js": "./static/js/4818.f16db75f.chunk.js", "static/js/2401.0638b608.chunk.js": "./static/js/2401.0638b608.chunk.js", - "static/css/8724.8e16189d.chunk.css": "./static/css/8724.8e16189d.chunk.css", - "static/js/8724.0c41b255.chunk.js": "./static/js/8724.0c41b255.chunk.js", - "static/js/2182.e3b6cc76.chunk.js": "./static/js/2182.e3b6cc76.chunk.js", + "static/css/8724.dd80c1b6.chunk.css": "./static/css/8724.dd80c1b6.chunk.css", + "static/js/8724.4770aad0.chunk.js": "./static/js/8724.4770aad0.chunk.js", + "static/js/2182.fc8d191e.chunk.js": "./static/js/2182.fc8d191e.chunk.js", "static/js/7764.3b798da3.chunk.js": "./static/js/7764.3b798da3.chunk.js", - "static/js/4220.9aea78f1.chunk.js": "./static/js/4220.9aea78f1.chunk.js", - "static/js/1719.c433d41f.chunk.js": "./static/js/1719.c433d41f.chunk.js", - "static/js/3320.3fb492c4.chunk.js": "./static/js/3320.3fb492c4.chunk.js", + "static/js/4220.a17c6e56.chunk.js": "./static/js/4220.a17c6e56.chunk.js", + "static/js/1719.75b1e59d.chunk.js": "./static/js/1719.75b1e59d.chunk.js", + "static/js/3320.c003989a.chunk.js": "./static/js/3320.c003989a.chunk.js", "static/js/6645.c41c6009.chunk.js": "./static/js/6645.c41c6009.chunk.js", "static/js/9923.67fe770d.chunk.js": "./static/js/9923.67fe770d.chunk.js", "static/js/9586.f3d3466d.chunk.js": "./static/js/9586.f3d3466d.chunk.js", "static/js/9125.a86e3119.chunk.js": "./static/js/9125.a86e3119.chunk.js", "static/js/5781.206192b7.chunk.js": "./static/js/5781.206192b7.chunk.js", - "static/js/7261.ee9cc151.chunk.js": "./static/js/7261.ee9cc151.chunk.js", - "static/js/6436.7b0189de.chunk.js": "./static/js/6436.7b0189de.chunk.js", + "static/js/7261.8e611fac.chunk.js": "./static/js/7261.8e611fac.chunk.js", + "static/js/4014.a838f30b.chunk.js": "./static/js/4014.a838f30b.chunk.js", + "static/js/6436.068113ba.chunk.js": "./static/js/6436.068113ba.chunk.js", "static/js/8343.c2929511.chunk.js": "./static/js/8343.c2929511.chunk.js", - "static/js/2841.a58d2a5d.chunk.js": "./static/js/2841.a58d2a5d.chunk.js", - "static/js/6167.fed9e5cf.chunk.js": "./static/js/6167.fed9e5cf.chunk.js", - "static/js/3698.928db215.chunk.js": "./static/js/3698.928db215.chunk.js", - "static/js/1971.899558fa.chunk.js": "./static/js/1971.899558fa.chunk.js", - "static/js/7346.efd507dc.chunk.js": "./static/js/7346.efd507dc.chunk.js", - "static/js/5144.392cff58.chunk.js": "./static/js/5144.392cff58.chunk.js", + "static/js/2841.129ece8f.chunk.js": "./static/js/2841.129ece8f.chunk.js", + "static/js/6167.2799d88c.chunk.js": "./static/js/6167.2799d88c.chunk.js", + "static/js/7346.9022c544.chunk.js": "./static/js/7346.9022c544.chunk.js", + "static/js/5144.d191021a.chunk.js": "./static/js/5144.d191021a.chunk.js", "static/js/5125.58c2feff.chunk.js": "./static/js/5125.58c2feff.chunk.js", - "static/js/1973.e9142631.chunk.js": "./static/js/1973.e9142631.chunk.js", - "static/js/7187.968efbad.chunk.js": "./static/js/7187.968efbad.chunk.js", - "static/js/6173.afdc41b4.chunk.js": "./static/js/6173.afdc41b4.chunk.js", - "static/js/953.46121656.chunk.js": "./static/js/953.46121656.chunk.js", - "static/js/9193.47341a7f.chunk.js": "./static/js/9193.47341a7f.chunk.js", + "static/js/528.162128e4.chunk.js": "./static/js/528.162128e4.chunk.js", + "static/js/7187.29038335.chunk.js": "./static/js/7187.29038335.chunk.js", + "static/js/6173.a5df8119.chunk.js": "./static/js/6173.a5df8119.chunk.js", + "static/js/953.9faff84d.chunk.js": "./static/js/953.9faff84d.chunk.js", + "static/js/9193.9f06c0b0.chunk.js": "./static/js/9193.9f06c0b0.chunk.js", "static/js/7451.3135dd72.chunk.js": "./static/js/7451.3135dd72.chunk.js", - "static/js/9924.ba0c0a4a.chunk.js": "./static/js/9924.ba0c0a4a.chunk.js", - "static/css/9645.8e16189d.chunk.css": "./static/css/9645.8e16189d.chunk.css", - "static/js/9645.52a31d53.chunk.js": "./static/js/9645.52a31d53.chunk.js", - "static/js/4121.dc9cd38b.chunk.js": "./static/js/4121.dc9cd38b.chunk.js", - "static/js/609.01a74891.chunk.js": "./static/js/609.01a74891.chunk.js", - "static/js/3421.1c5efe0e.chunk.js": "./static/js/3421.1c5efe0e.chunk.js", - "static/js/2892.dedb4d14.chunk.js": "./static/js/2892.dedb4d14.chunk.js", - "static/js/7926.2532900d.chunk.js": "./static/js/7926.2532900d.chunk.js", - "static/js/6145.0f094527.chunk.js": "./static/js/6145.0f094527.chunk.js", - "static/css/3816.8e16189d.chunk.css": "./static/css/3816.8e16189d.chunk.css", - "static/js/3816.b73504ec.chunk.js": "./static/js/3816.b73504ec.chunk.js", + "static/js/9924.3cf3061d.chunk.js": "./static/js/9924.3cf3061d.chunk.js", + "static/css/9645.dd80c1b6.chunk.css": "./static/css/9645.dd80c1b6.chunk.css", + "static/js/9645.35bbd0ca.chunk.js": "./static/js/9645.35bbd0ca.chunk.js", + "static/js/4121.938d98fc.chunk.js": "./static/js/4121.938d98fc.chunk.js", + "static/js/609.9484fe14.chunk.js": "./static/js/609.9484fe14.chunk.js", + "static/js/3421.7556d0a5.chunk.js": "./static/js/3421.7556d0a5.chunk.js", + "static/js/2892.16bd6206.chunk.js": "./static/js/2892.16bd6206.chunk.js", + "static/js/7926.f7eacde3.chunk.js": "./static/js/7926.f7eacde3.chunk.js", + "static/js/6145.0d21c766.chunk.js": "./static/js/6145.0d21c766.chunk.js", + "static/css/3816.dd80c1b6.chunk.css": "./static/css/3816.dd80c1b6.chunk.css", + "static/js/3816.6e9d4535.chunk.js": "./static/js/3816.6e9d4535.chunk.js", "static/js/2966.9c46726c.chunk.js": "./static/js/2966.9c46726c.chunk.js", - "static/js/4177.fd895511.chunk.js": "./static/js/4177.fd895511.chunk.js", - "static/js/9679.b9a553b7.chunk.js": "./static/js/9679.b9a553b7.chunk.js", - "static/js/8333.97c188eb.chunk.js": "./static/js/8333.97c188eb.chunk.js", - "static/js/1711.755e1931.chunk.js": "./static/js/1711.755e1931.chunk.js", - "static/js/9.e2862ce4.chunk.js": "./static/js/9.e2862ce4.chunk.js", - "static/js/4487.c59869da.chunk.js": "./static/js/4487.c59869da.chunk.js", - "static/js/6866.d7d9be68.chunk.js": "./static/js/6866.d7d9be68.chunk.js", - "static/js/8564.b0794921.chunk.js": "./static/js/8564.b0794921.chunk.js", - "static/js/1666.29b376af.chunk.js": "./static/js/1666.29b376af.chunk.js", - "static/js/7007.aaee4953.chunk.js": "./static/js/7007.aaee4953.chunk.js", + "static/js/4177.f084aca8.chunk.js": "./static/js/4177.f084aca8.chunk.js", + "static/js/9679.aabc9be8.chunk.js": "./static/js/9679.aabc9be8.chunk.js", + "static/js/8333.fd3a87f0.chunk.js": "./static/js/8333.fd3a87f0.chunk.js", + "static/js/1711.1d689e21.chunk.js": "./static/js/1711.1d689e21.chunk.js", + "static/js/9.1b7fc122.chunk.js": "./static/js/9.1b7fc122.chunk.js", + "static/js/4487.d2c5f3cb.chunk.js": "./static/js/4487.d2c5f3cb.chunk.js", + "static/js/6866.3129ee33.chunk.js": "./static/js/6866.3129ee33.chunk.js", + "static/js/8564.694f46b6.chunk.js": "./static/js/8564.694f46b6.chunk.js", + "static/js/1666.3eefd4d5.chunk.js": "./static/js/1666.3eefd4d5.chunk.js", + "static/js/7007.6a27b2ef.chunk.js": "./static/js/7007.6a27b2ef.chunk.js", "static/js/14.25ecb28d.chunk.js": "./static/js/14.25ecb28d.chunk.js", "static/js/3152.d03e4df4.chunk.js": "./static/js/3152.d03e4df4.chunk.js", - "static/js/5444.e8727da9.chunk.js": "./static/js/5444.e8727da9.chunk.js", "static/js/2066.16320a68.chunk.js": "./static/js/2066.16320a68.chunk.js", + "static/js/5444.e8727da9.chunk.js": "./static/js/5444.e8727da9.chunk.js", "static/js/3690.536fb187.chunk.js": "./static/js/3690.536fb187.chunk.js", "static/js/5399.6bc650ac.chunk.js": "./static/js/5399.6bc650ac.chunk.js", "static/js/606.28fdb5bc.chunk.js": "./static/js/606.28fdb5bc.chunk.js", - "static/js/9998.1a613ce5.chunk.js": "./static/js/9998.1a613ce5.chunk.js", "static/js/9769.a2bfb4d7.chunk.js": "./static/js/9769.a2bfb4d7.chunk.js", + "static/js/6117.0fcd3d09.chunk.js": "./static/js/6117.0fcd3d09.chunk.js", "static/js/8954.00599ff1.chunk.js": "./static/js/8954.00599ff1.chunk.js", "static/js/2309.49be65c5.chunk.js": "./static/js/2309.49be65c5.chunk.js", "static/js/7248.1e0c4e19.chunk.js": "./static/js/7248.1e0c4e19.chunk.js", - "static/js/9056.41f0e489.chunk.js": "./static/js/9056.41f0e489.chunk.js", "static/js/3360.453f0701.chunk.js": "./static/js/3360.453f0701.chunk.js", + "static/js/4907.951766e2.chunk.js": "./static/js/4907.951766e2.chunk.js", + "static/js/9056.41f0e489.chunk.js": "./static/js/9056.41f0e489.chunk.js", "static/js/4837.98af4cfe.chunk.js": "./static/js/4837.98af4cfe.chunk.js", + "static/js/3356.05b42758.chunk.js": "./static/js/3356.05b42758.chunk.js", "static/js/3020.3b2e782c.chunk.js": "./static/js/3020.3b2e782c.chunk.js", - "static/js/3300.9b8f6257.chunk.js": "./static/js/3300.9b8f6257.chunk.js", "static/js/4322.ddc888e0.chunk.js": "./static/js/4322.ddc888e0.chunk.js", "static/js/4817.2c511e72.chunk.js": "./static/js/4817.2c511e72.chunk.js", "static/js/8420.dc98b56b.chunk.js": "./static/js/8420.dc98b56b.chunk.js", - "static/js/3356.05b42758.chunk.js": "./static/js/3356.05b42758.chunk.js", - "static/js/8016.0758210e.chunk.js": "./static/js/8016.0758210e.chunk.js", - "static/js/5482.565ebb65.chunk.js": "./static/js/5482.565ebb65.chunk.js", - "static/js/1233.9903fc82.chunk.js": "./static/js/1233.9903fc82.chunk.js", - "static/js/7939.46ff2d0f.chunk.js": "./static/js/7939.46ff2d0f.chunk.js", + "static/js/8016.eaf91b09.chunk.js": "./static/js/8016.eaf91b09.chunk.js", + "static/js/4475.33c47914.chunk.js": "./static/js/4475.33c47914.chunk.js", + "static/js/664.36be7d56.chunk.js": "./static/js/664.36be7d56.chunk.js", + "static/js/9881.b5453ed2.chunk.js": "./static/js/9881.b5453ed2.chunk.js", "static/js/3538.60e98cef.chunk.js": "./static/js/3538.60e98cef.chunk.js", - "static/js/4996.2e18711b.chunk.js": "./static/js/4996.2e18711b.chunk.js", - "static/js/7348.7a72b31f.chunk.js": "./static/js/7348.7a72b31f.chunk.js", + "static/js/4996.6b373efe.chunk.js": "./static/js/4996.6b373efe.chunk.js", + "static/js/7348.fe223af1.chunk.js": "./static/js/7348.fe223af1.chunk.js", "static/js/8708.70b62dd5.chunk.js": "./static/js/8708.70b62dd5.chunk.js", "static/js/7932.8974111a.chunk.js": "./static/js/7932.8974111a.chunk.js", "static/js/3383.ab285f5a.chunk.js": "./static/js/3383.ab285f5a.chunk.js", "static/js/5795.d1ea50ec.chunk.js": "./static/js/5795.d1ea50ec.chunk.js", "static/js/3045.0dea1c04.chunk.js": "./static/js/3045.0dea1c04.chunk.js", "static/js/8750.02521688.chunk.js": "./static/js/8750.02521688.chunk.js", - "static/js/635.2854d4f5.chunk.js": "./static/js/635.2854d4f5.chunk.js", - "static/js/2417.105afd14.chunk.js": "./static/js/2417.105afd14.chunk.js", + "static/js/635.89e9fe78.chunk.js": "./static/js/635.89e9fe78.chunk.js", "static/js/938.8f6a5aa1.chunk.js": "./static/js/938.8f6a5aa1.chunk.js", "static/js/4105.4a4541e7.chunk.js": "./static/js/4105.4a4541e7.chunk.js", "static/js/6430.7d5ec903.chunk.js": "./static/js/6430.7d5ec903.chunk.js", "static/js/9876.939f9165.chunk.js": "./static/js/9876.939f9165.chunk.js", - "static/js/8174.b2493b0b.chunk.js": "./static/js/8174.b2493b0b.chunk.js", - "static/js/2491.70293bae.chunk.js": "./static/js/2491.70293bae.chunk.js", - "static/js/5339.77ff74c9.chunk.js": "./static/js/5339.77ff74c9.chunk.js", - "static/js/825.3a314578.chunk.js": "./static/js/825.3a314578.chunk.js", - "static/js/4960.4944962a.chunk.js": "./static/js/4960.4944962a.chunk.js", - "static/js/6873.1b3165f5.chunk.js": "./static/js/6873.1b3165f5.chunk.js", - "static/js/3453.75ca1d21.chunk.js": "./static/js/3453.75ca1d21.chunk.js", - "static/js/2464.f44ab309.chunk.js": "./static/js/2464.f44ab309.chunk.js", + "static/js/8174.3610f42d.chunk.js": "./static/js/8174.3610f42d.chunk.js", + "static/js/2491.26896af4.chunk.js": "./static/js/2491.26896af4.chunk.js", + "static/js/5339.9ea85a11.chunk.js": "./static/js/5339.9ea85a11.chunk.js", + "static/js/825.56a95484.chunk.js": "./static/js/825.56a95484.chunk.js", + "static/js/4960.93e965c8.chunk.js": "./static/js/4960.93e965c8.chunk.js", + "static/js/6873.24e34528.chunk.js": "./static/js/6873.24e34528.chunk.js", + "static/js/3453.9884f106.chunk.js": "./static/js/3453.9884f106.chunk.js", + "static/js/2464.4826a900.chunk.js": "./static/js/2464.4826a900.chunk.js", + "static/js/1612.2e1e75b9.chunk.js": "./static/js/1612.2e1e75b9.chunk.js", "index.html": "./index.html", "main.c4c1effe.css.map": "./static/css/main.c4c1effe.css.map", - "main.26dfcd6f.js.map": "./static/js/main.26dfcd6f.js.map", - "2178.70c131e4.chunk.js.map": "./static/js/2178.70c131e4.chunk.js.map", + "main.c0c05764.js.map": "./static/js/main.c0c05764.js.map", + "2178.e5c1c8aa.chunk.js.map": "./static/js/2178.e5c1c8aa.chunk.js.map", "5282.e51b8c66.chunk.js.map": "./static/js/5282.e51b8c66.chunk.js.map", - "2818.d6147732.chunk.js.map": "./static/js/2818.d6147732.chunk.js.map", - "9560.1c7c393b.chunk.js.map": "./static/js/9560.1c7c393b.chunk.js.map", - "9661.68a3c872.chunk.js.map": "./static/js/9661.68a3c872.chunk.js.map", - "9330.33984e73.chunk.js.map": "./static/js/9330.33984e73.chunk.js.map", - "4869.58db9f45.chunk.js.map": "./static/js/4869.58db9f45.chunk.js.map", - "7436.c5785c09.chunk.js.map": "./static/js/7436.c5785c09.chunk.js.map", - "1056.369ba3ab.chunk.js.map": "./static/js/1056.369ba3ab.chunk.js.map", - "9779.23164a07.chunk.js.map": "./static/js/9779.23164a07.chunk.js.map", - "3617.ef0bffae.chunk.js.map": "./static/js/3617.ef0bffae.chunk.js.map", - "7274.a51a45fc.chunk.js.map": "./static/js/7274.a51a45fc.chunk.js.map", - "7842.3103d8de.chunk.js.map": "./static/js/7842.3103d8de.chunk.js.map", - "4745.d3b72d46.chunk.js.map": "./static/js/4745.d3b72d46.chunk.js.map", - "4515.a137eba4.chunk.js.map": "./static/js/4515.a137eba4.chunk.js.map", - "8259.162d3a40.chunk.js.map": "./static/js/8259.162d3a40.chunk.js.map", - "4839.cd845b47.chunk.js.map": "./static/js/4839.cd845b47.chunk.js.map", - "3830.bdda307f.chunk.js.map": "./static/js/3830.bdda307f.chunk.js.map", - "9275.69a60a7c.chunk.js.map": "./static/js/9275.69a60a7c.chunk.js.map", - "8190.02056f3f.chunk.js.map": "./static/js/8190.02056f3f.chunk.js.map", - "7314.da174e5e.chunk.js.map": "./static/js/7314.da174e5e.chunk.js.map", - "7456.743391a4.chunk.js.map": "./static/js/7456.743391a4.chunk.js.map", - "5822.8e16189d.chunk.css.map": "./static/css/5822.8e16189d.chunk.css.map", - "5822.55acdd2b.chunk.js.map": "./static/js/5822.55acdd2b.chunk.js.map", - "2699.6f1c9c05.chunk.js.map": "./static/js/2699.6f1c9c05.chunk.js.map", - "5808.a4148012.chunk.js.map": "./static/js/5808.a4148012.chunk.js.map", - "1237.dbb13c2b.chunk.js.map": "./static/js/1237.dbb13c2b.chunk.js.map", - "189.108e9feb.chunk.js.map": "./static/js/189.108e9feb.chunk.js.map", - "2024.8e16189d.chunk.css.map": "./static/css/2024.8e16189d.chunk.css.map", - "2024.6baed5c5.chunk.js.map": "./static/js/2024.6baed5c5.chunk.js.map", - "9807.8e16189d.chunk.css.map": "./static/css/9807.8e16189d.chunk.css.map", - "9807.b3b1c965.chunk.js.map": "./static/js/9807.b3b1c965.chunk.js.map", - "3806.9b491d19.chunk.js.map": "./static/js/3806.9b491d19.chunk.js.map", - "8661.d0eec194.chunk.js.map": "./static/js/8661.d0eec194.chunk.js.map", - "2886.64395b76.chunk.js.map": "./static/js/2886.64395b76.chunk.js.map", - "4577.d5eda9f7.chunk.js.map": "./static/js/4577.d5eda9f7.chunk.js.map", - "5947.dda226b6.chunk.js.map": "./static/js/5947.dda226b6.chunk.js.map", - "4533.0533f737.chunk.js.map": "./static/js/4533.0533f737.chunk.js.map", - "6147.c07c0ae2.chunk.js.map": "./static/js/6147.c07c0ae2.chunk.js.map", - "2805.621131c8.chunk.js.map": "./static/js/2805.621131c8.chunk.js.map", + "2818.75db1c33.chunk.js.map": "./static/js/2818.75db1c33.chunk.js.map", + "9560.3411ac3a.chunk.js.map": "./static/js/9560.3411ac3a.chunk.js.map", + "9661.6525cdb3.chunk.js.map": "./static/js/9661.6525cdb3.chunk.js.map", + "9330.9a62ccd3.chunk.js.map": "./static/js/9330.9a62ccd3.chunk.js.map", + "7436.1d960975.chunk.js.map": "./static/js/7436.1d960975.chunk.js.map", + "8428.039817fe.chunk.js.map": "./static/js/8428.039817fe.chunk.js.map", + "9779.14e8d3f5.chunk.js.map": "./static/js/9779.14e8d3f5.chunk.js.map", + "3617.d706e7dd.chunk.js.map": "./static/js/3617.d706e7dd.chunk.js.map", + "7274.f0a6594d.chunk.js.map": "./static/js/7274.f0a6594d.chunk.js.map", + "7842.5677d2f1.chunk.js.map": "./static/js/7842.5677d2f1.chunk.js.map", + "4745.e59a39e5.chunk.js.map": "./static/js/4745.e59a39e5.chunk.js.map", + "4515.15c3ee19.chunk.js.map": "./static/js/4515.15c3ee19.chunk.js.map", + "8259.3e394c4d.chunk.js.map": "./static/js/8259.3e394c4d.chunk.js.map", + "4839.cdb78fdd.chunk.js.map": "./static/js/4839.cdb78fdd.chunk.js.map", + "5013.9b73571d.chunk.js.map": "./static/js/5013.9b73571d.chunk.js.map", + "9275.e8e507c7.chunk.js.map": "./static/js/9275.e8e507c7.chunk.js.map", + "8190.cf11e001.chunk.js.map": "./static/js/8190.cf11e001.chunk.js.map", + "7314.a100ba0d.chunk.js.map": "./static/js/7314.a100ba0d.chunk.js.map", + "7456.7fa8ebd5.chunk.js.map": "./static/js/7456.7fa8ebd5.chunk.js.map", + "5822.dd80c1b6.chunk.css.map": "./static/css/5822.dd80c1b6.chunk.css.map", + "5822.22817933.chunk.js.map": "./static/js/5822.22817933.chunk.js.map", + "2699.798137ae.chunk.js.map": "./static/js/2699.798137ae.chunk.js.map", + "5808.53d76704.chunk.js.map": "./static/js/5808.53d76704.chunk.js.map", + "1237.b46ec019.chunk.js.map": "./static/js/1237.b46ec019.chunk.js.map", + "189.c6e8473a.chunk.js.map": "./static/js/189.c6e8473a.chunk.js.map", + "964.dd80c1b6.chunk.css.map": "./static/css/964.dd80c1b6.chunk.css.map", + "964.e01d742c.chunk.js.map": "./static/js/964.e01d742c.chunk.js.map", + "9807.dd80c1b6.chunk.css.map": "./static/css/9807.dd80c1b6.chunk.css.map", + "9807.b068214f.chunk.js.map": "./static/js/9807.b068214f.chunk.js.map", + "3806.d7f55eff.chunk.js.map": "./static/js/3806.d7f55eff.chunk.js.map", + "8661.b3d2fa96.chunk.js.map": "./static/js/8661.b3d2fa96.chunk.js.map", + "2886.9e476e5d.chunk.js.map": "./static/js/2886.9e476e5d.chunk.js.map", + "4577.c760ff58.chunk.js.map": "./static/js/4577.c760ff58.chunk.js.map", + "6147.737c5d72.chunk.js.map": "./static/js/6147.737c5d72.chunk.js.map", + "2805.32c23bd6.chunk.js.map": "./static/js/2805.32c23bd6.chunk.js.map", "3143.e6a9621d.chunk.js.map": "./static/js/3143.e6a9621d.chunk.js.map", - "428.f1f3ca19.chunk.js.map": "./static/js/428.f1f3ca19.chunk.js.map", - "1069.771a8a37.chunk.js.map": "./static/js/1069.771a8a37.chunk.js.map", - "9080.f007894a.chunk.js.map": "./static/js/9080.f007894a.chunk.js.map", - "3276.cbbfa439.chunk.js.map": "./static/js/3276.cbbfa439.chunk.js.map", - "5591.992e2bda.chunk.js.map": "./static/js/5591.992e2bda.chunk.js.map", - "7551.0bf2079d.chunk.js.map": "./static/js/7551.0bf2079d.chunk.js.map", - "7950.4cb62868.chunk.js.map": "./static/js/7950.4cb62868.chunk.js.map", - "6597.fc1eafc4.chunk.js.map": "./static/js/6597.fc1eafc4.chunk.js.map", - "8961.2e01f3c6.chunk.js.map": "./static/js/8961.2e01f3c6.chunk.js.map", - "3967.e89c4131.chunk.js.map": "./static/js/3967.e89c4131.chunk.js.map", - "4084.8e16189d.chunk.css.map": "./static/css/4084.8e16189d.chunk.css.map", - "4084.3d9d8cab.chunk.js.map": "./static/js/4084.3d9d8cab.chunk.js.map", - "8394.aab97516.chunk.js.map": "./static/js/8394.aab97516.chunk.js.map", - "7664.bb12744a.chunk.js.map": "./static/js/7664.bb12744a.chunk.js.map", - "1140.35a12cb4.chunk.js.map": "./static/js/1140.35a12cb4.chunk.js.map", - "5961.975bb084.chunk.js.map": "./static/js/5961.975bb084.chunk.js.map", + "428.93fdab67.chunk.js.map": "./static/js/428.93fdab67.chunk.js.map", + "1069.a96e20d9.chunk.js.map": "./static/js/1069.a96e20d9.chunk.js.map", + "9080.3a18c755.chunk.js.map": "./static/js/9080.3a18c755.chunk.js.map", + "3276.43967f45.chunk.js.map": "./static/js/3276.43967f45.chunk.js.map", + "5591.19411b3a.chunk.js.map": "./static/js/5591.19411b3a.chunk.js.map", + "7551.83de15d3.chunk.js.map": "./static/js/7551.83de15d3.chunk.js.map", + "7950.69490eec.chunk.js.map": "./static/js/7950.69490eec.chunk.js.map", + "5937.f6a62c9f.chunk.js.map": "./static/js/5937.f6a62c9f.chunk.js.map", + "8961.58205fe0.chunk.js.map": "./static/js/8961.58205fe0.chunk.js.map", + "3967.bc7e18bc.chunk.js.map": "./static/js/3967.bc7e18bc.chunk.js.map", + "4084.dd80c1b6.chunk.css.map": "./static/css/4084.dd80c1b6.chunk.css.map", + "4084.91e59ef0.chunk.js.map": "./static/js/4084.91e59ef0.chunk.js.map", + "8394.2fe90abb.chunk.js.map": "./static/js/8394.2fe90abb.chunk.js.map", + "7664.d720f8fc.chunk.js.map": "./static/js/7664.d720f8fc.chunk.js.map", + "1140.49ee98af.chunk.js.map": "./static/js/1140.49ee98af.chunk.js.map", + "5961.038c5585.chunk.js.map": "./static/js/5961.038c5585.chunk.js.map", "6549.e0686e32.chunk.js.map": "./static/js/6549.e0686e32.chunk.js.map", - "7498.c395ccf1.chunk.js.map": "./static/js/7498.c395ccf1.chunk.js.map", - "9421.5cc40d43.chunk.js.map": "./static/js/9421.5cc40d43.chunk.js.map", - "5284.e06719cf.chunk.js.map": "./static/js/5284.e06719cf.chunk.js.map", - "4818.1f7ff2b7.chunk.js.map": "./static/js/4818.1f7ff2b7.chunk.js.map", + "7498.4e5e3ff3.chunk.js.map": "./static/js/7498.4e5e3ff3.chunk.js.map", + "9421.f0450a76.chunk.js.map": "./static/js/9421.f0450a76.chunk.js.map", + "5284.84b8c4f2.chunk.js.map": "./static/js/5284.84b8c4f2.chunk.js.map", + "4818.f16db75f.chunk.js.map": "./static/js/4818.f16db75f.chunk.js.map", "2401.0638b608.chunk.js.map": "./static/js/2401.0638b608.chunk.js.map", - "8724.8e16189d.chunk.css.map": "./static/css/8724.8e16189d.chunk.css.map", - "8724.0c41b255.chunk.js.map": "./static/js/8724.0c41b255.chunk.js.map", - "2182.e3b6cc76.chunk.js.map": "./static/js/2182.e3b6cc76.chunk.js.map", + "8724.dd80c1b6.chunk.css.map": "./static/css/8724.dd80c1b6.chunk.css.map", + "8724.4770aad0.chunk.js.map": "./static/js/8724.4770aad0.chunk.js.map", + "2182.fc8d191e.chunk.js.map": "./static/js/2182.fc8d191e.chunk.js.map", "7764.3b798da3.chunk.js.map": "./static/js/7764.3b798da3.chunk.js.map", - "4220.9aea78f1.chunk.js.map": "./static/js/4220.9aea78f1.chunk.js.map", - "1719.c433d41f.chunk.js.map": "./static/js/1719.c433d41f.chunk.js.map", - "3320.3fb492c4.chunk.js.map": "./static/js/3320.3fb492c4.chunk.js.map", + "4220.a17c6e56.chunk.js.map": "./static/js/4220.a17c6e56.chunk.js.map", + "1719.75b1e59d.chunk.js.map": "./static/js/1719.75b1e59d.chunk.js.map", + "3320.c003989a.chunk.js.map": "./static/js/3320.c003989a.chunk.js.map", "6645.c41c6009.chunk.js.map": "./static/js/6645.c41c6009.chunk.js.map", "9923.67fe770d.chunk.js.map": "./static/js/9923.67fe770d.chunk.js.map", "9586.f3d3466d.chunk.js.map": "./static/js/9586.f3d3466d.chunk.js.map", "9125.a86e3119.chunk.js.map": "./static/js/9125.a86e3119.chunk.js.map", "5781.206192b7.chunk.js.map": "./static/js/5781.206192b7.chunk.js.map", - "7261.ee9cc151.chunk.js.map": "./static/js/7261.ee9cc151.chunk.js.map", - "6436.7b0189de.chunk.js.map": "./static/js/6436.7b0189de.chunk.js.map", + "7261.8e611fac.chunk.js.map": "./static/js/7261.8e611fac.chunk.js.map", + "4014.a838f30b.chunk.js.map": "./static/js/4014.a838f30b.chunk.js.map", + "6436.068113ba.chunk.js.map": "./static/js/6436.068113ba.chunk.js.map", "8343.c2929511.chunk.js.map": "./static/js/8343.c2929511.chunk.js.map", - "2841.a58d2a5d.chunk.js.map": "./static/js/2841.a58d2a5d.chunk.js.map", - "6167.fed9e5cf.chunk.js.map": "./static/js/6167.fed9e5cf.chunk.js.map", - "3698.928db215.chunk.js.map": "./static/js/3698.928db215.chunk.js.map", - "1971.899558fa.chunk.js.map": "./static/js/1971.899558fa.chunk.js.map", - "7346.efd507dc.chunk.js.map": "./static/js/7346.efd507dc.chunk.js.map", - "5144.392cff58.chunk.js.map": "./static/js/5144.392cff58.chunk.js.map", + "2841.129ece8f.chunk.js.map": "./static/js/2841.129ece8f.chunk.js.map", + "6167.2799d88c.chunk.js.map": "./static/js/6167.2799d88c.chunk.js.map", + "7346.9022c544.chunk.js.map": "./static/js/7346.9022c544.chunk.js.map", + "5144.d191021a.chunk.js.map": "./static/js/5144.d191021a.chunk.js.map", "5125.58c2feff.chunk.js.map": "./static/js/5125.58c2feff.chunk.js.map", - "1973.e9142631.chunk.js.map": "./static/js/1973.e9142631.chunk.js.map", - "7187.968efbad.chunk.js.map": "./static/js/7187.968efbad.chunk.js.map", - "6173.afdc41b4.chunk.js.map": "./static/js/6173.afdc41b4.chunk.js.map", - "953.46121656.chunk.js.map": "./static/js/953.46121656.chunk.js.map", - "9193.47341a7f.chunk.js.map": "./static/js/9193.47341a7f.chunk.js.map", + "528.162128e4.chunk.js.map": "./static/js/528.162128e4.chunk.js.map", + "7187.29038335.chunk.js.map": "./static/js/7187.29038335.chunk.js.map", + "6173.a5df8119.chunk.js.map": "./static/js/6173.a5df8119.chunk.js.map", + "953.9faff84d.chunk.js.map": "./static/js/953.9faff84d.chunk.js.map", + "9193.9f06c0b0.chunk.js.map": "./static/js/9193.9f06c0b0.chunk.js.map", "7451.3135dd72.chunk.js.map": "./static/js/7451.3135dd72.chunk.js.map", - "9924.ba0c0a4a.chunk.js.map": "./static/js/9924.ba0c0a4a.chunk.js.map", - "9645.8e16189d.chunk.css.map": "./static/css/9645.8e16189d.chunk.css.map", - "9645.52a31d53.chunk.js.map": "./static/js/9645.52a31d53.chunk.js.map", - "4121.dc9cd38b.chunk.js.map": "./static/js/4121.dc9cd38b.chunk.js.map", - "609.01a74891.chunk.js.map": "./static/js/609.01a74891.chunk.js.map", - "3421.1c5efe0e.chunk.js.map": "./static/js/3421.1c5efe0e.chunk.js.map", - "2892.dedb4d14.chunk.js.map": "./static/js/2892.dedb4d14.chunk.js.map", - "7926.2532900d.chunk.js.map": "./static/js/7926.2532900d.chunk.js.map", - "6145.0f094527.chunk.js.map": "./static/js/6145.0f094527.chunk.js.map", - "3816.8e16189d.chunk.css.map": "./static/css/3816.8e16189d.chunk.css.map", - "3816.b73504ec.chunk.js.map": "./static/js/3816.b73504ec.chunk.js.map", + "9924.3cf3061d.chunk.js.map": "./static/js/9924.3cf3061d.chunk.js.map", + "9645.dd80c1b6.chunk.css.map": "./static/css/9645.dd80c1b6.chunk.css.map", + "9645.35bbd0ca.chunk.js.map": "./static/js/9645.35bbd0ca.chunk.js.map", + "4121.938d98fc.chunk.js.map": "./static/js/4121.938d98fc.chunk.js.map", + "609.9484fe14.chunk.js.map": "./static/js/609.9484fe14.chunk.js.map", + "3421.7556d0a5.chunk.js.map": "./static/js/3421.7556d0a5.chunk.js.map", + "2892.16bd6206.chunk.js.map": "./static/js/2892.16bd6206.chunk.js.map", + "7926.f7eacde3.chunk.js.map": "./static/js/7926.f7eacde3.chunk.js.map", + "6145.0d21c766.chunk.js.map": "./static/js/6145.0d21c766.chunk.js.map", + "3816.dd80c1b6.chunk.css.map": "./static/css/3816.dd80c1b6.chunk.css.map", + "3816.6e9d4535.chunk.js.map": "./static/js/3816.6e9d4535.chunk.js.map", "2966.9c46726c.chunk.js.map": "./static/js/2966.9c46726c.chunk.js.map", - "4177.fd895511.chunk.js.map": "./static/js/4177.fd895511.chunk.js.map", - "9679.b9a553b7.chunk.js.map": "./static/js/9679.b9a553b7.chunk.js.map", - "8333.97c188eb.chunk.js.map": "./static/js/8333.97c188eb.chunk.js.map", - "1711.755e1931.chunk.js.map": "./static/js/1711.755e1931.chunk.js.map", - "9.e2862ce4.chunk.js.map": "./static/js/9.e2862ce4.chunk.js.map", - "4487.c59869da.chunk.js.map": "./static/js/4487.c59869da.chunk.js.map", - "6866.d7d9be68.chunk.js.map": "./static/js/6866.d7d9be68.chunk.js.map", - "8564.b0794921.chunk.js.map": "./static/js/8564.b0794921.chunk.js.map", - "1666.29b376af.chunk.js.map": "./static/js/1666.29b376af.chunk.js.map", - "7007.aaee4953.chunk.js.map": "./static/js/7007.aaee4953.chunk.js.map", + "4177.f084aca8.chunk.js.map": "./static/js/4177.f084aca8.chunk.js.map", + "9679.aabc9be8.chunk.js.map": "./static/js/9679.aabc9be8.chunk.js.map", + "8333.fd3a87f0.chunk.js.map": "./static/js/8333.fd3a87f0.chunk.js.map", + "1711.1d689e21.chunk.js.map": "./static/js/1711.1d689e21.chunk.js.map", + "9.1b7fc122.chunk.js.map": "./static/js/9.1b7fc122.chunk.js.map", + "4487.d2c5f3cb.chunk.js.map": "./static/js/4487.d2c5f3cb.chunk.js.map", + "6866.3129ee33.chunk.js.map": "./static/js/6866.3129ee33.chunk.js.map", + "8564.694f46b6.chunk.js.map": "./static/js/8564.694f46b6.chunk.js.map", + "1666.3eefd4d5.chunk.js.map": "./static/js/1666.3eefd4d5.chunk.js.map", + "7007.6a27b2ef.chunk.js.map": "./static/js/7007.6a27b2ef.chunk.js.map", "14.25ecb28d.chunk.js.map": "./static/js/14.25ecb28d.chunk.js.map", "3152.d03e4df4.chunk.js.map": "./static/js/3152.d03e4df4.chunk.js.map", - "5444.e8727da9.chunk.js.map": "./static/js/5444.e8727da9.chunk.js.map", "2066.16320a68.chunk.js.map": "./static/js/2066.16320a68.chunk.js.map", + "5444.e8727da9.chunk.js.map": "./static/js/5444.e8727da9.chunk.js.map", "3690.536fb187.chunk.js.map": "./static/js/3690.536fb187.chunk.js.map", "5399.6bc650ac.chunk.js.map": "./static/js/5399.6bc650ac.chunk.js.map", "606.28fdb5bc.chunk.js.map": "./static/js/606.28fdb5bc.chunk.js.map", - "9998.1a613ce5.chunk.js.map": "./static/js/9998.1a613ce5.chunk.js.map", "9769.a2bfb4d7.chunk.js.map": "./static/js/9769.a2bfb4d7.chunk.js.map", + "6117.0fcd3d09.chunk.js.map": "./static/js/6117.0fcd3d09.chunk.js.map", "8954.00599ff1.chunk.js.map": "./static/js/8954.00599ff1.chunk.js.map", "2309.49be65c5.chunk.js.map": "./static/js/2309.49be65c5.chunk.js.map", "7248.1e0c4e19.chunk.js.map": "./static/js/7248.1e0c4e19.chunk.js.map", - "9056.41f0e489.chunk.js.map": "./static/js/9056.41f0e489.chunk.js.map", "3360.453f0701.chunk.js.map": "./static/js/3360.453f0701.chunk.js.map", + "4907.951766e2.chunk.js.map": "./static/js/4907.951766e2.chunk.js.map", + "9056.41f0e489.chunk.js.map": "./static/js/9056.41f0e489.chunk.js.map", "4837.98af4cfe.chunk.js.map": "./static/js/4837.98af4cfe.chunk.js.map", + "3356.05b42758.chunk.js.map": "./static/js/3356.05b42758.chunk.js.map", "3020.3b2e782c.chunk.js.map": "./static/js/3020.3b2e782c.chunk.js.map", - "3300.9b8f6257.chunk.js.map": "./static/js/3300.9b8f6257.chunk.js.map", "4322.ddc888e0.chunk.js.map": "./static/js/4322.ddc888e0.chunk.js.map", "4817.2c511e72.chunk.js.map": "./static/js/4817.2c511e72.chunk.js.map", "8420.dc98b56b.chunk.js.map": "./static/js/8420.dc98b56b.chunk.js.map", - "3356.05b42758.chunk.js.map": "./static/js/3356.05b42758.chunk.js.map", - "8016.0758210e.chunk.js.map": "./static/js/8016.0758210e.chunk.js.map", - "5482.565ebb65.chunk.js.map": "./static/js/5482.565ebb65.chunk.js.map", - "1233.9903fc82.chunk.js.map": "./static/js/1233.9903fc82.chunk.js.map", - "7939.46ff2d0f.chunk.js.map": "./static/js/7939.46ff2d0f.chunk.js.map", + "8016.eaf91b09.chunk.js.map": "./static/js/8016.eaf91b09.chunk.js.map", + "4475.33c47914.chunk.js.map": "./static/js/4475.33c47914.chunk.js.map", + "664.36be7d56.chunk.js.map": "./static/js/664.36be7d56.chunk.js.map", + "9881.b5453ed2.chunk.js.map": "./static/js/9881.b5453ed2.chunk.js.map", "3538.60e98cef.chunk.js.map": "./static/js/3538.60e98cef.chunk.js.map", - "4996.2e18711b.chunk.js.map": "./static/js/4996.2e18711b.chunk.js.map", - "7348.7a72b31f.chunk.js.map": "./static/js/7348.7a72b31f.chunk.js.map", + "4996.6b373efe.chunk.js.map": "./static/js/4996.6b373efe.chunk.js.map", + "7348.fe223af1.chunk.js.map": "./static/js/7348.fe223af1.chunk.js.map", "8708.70b62dd5.chunk.js.map": "./static/js/8708.70b62dd5.chunk.js.map", "7932.8974111a.chunk.js.map": "./static/js/7932.8974111a.chunk.js.map", "3383.ab285f5a.chunk.js.map": "./static/js/3383.ab285f5a.chunk.js.map", "5795.d1ea50ec.chunk.js.map": "./static/js/5795.d1ea50ec.chunk.js.map", "3045.0dea1c04.chunk.js.map": "./static/js/3045.0dea1c04.chunk.js.map", "8750.02521688.chunk.js.map": "./static/js/8750.02521688.chunk.js.map", - "635.2854d4f5.chunk.js.map": "./static/js/635.2854d4f5.chunk.js.map", - "2417.105afd14.chunk.js.map": "./static/js/2417.105afd14.chunk.js.map", + "635.89e9fe78.chunk.js.map": "./static/js/635.89e9fe78.chunk.js.map", "938.8f6a5aa1.chunk.js.map": "./static/js/938.8f6a5aa1.chunk.js.map", "4105.4a4541e7.chunk.js.map": "./static/js/4105.4a4541e7.chunk.js.map", "6430.7d5ec903.chunk.js.map": "./static/js/6430.7d5ec903.chunk.js.map", "9876.939f9165.chunk.js.map": "./static/js/9876.939f9165.chunk.js.map", - "8174.b2493b0b.chunk.js.map": "./static/js/8174.b2493b0b.chunk.js.map", - "2491.70293bae.chunk.js.map": "./static/js/2491.70293bae.chunk.js.map", - "5339.77ff74c9.chunk.js.map": "./static/js/5339.77ff74c9.chunk.js.map", - "825.3a314578.chunk.js.map": "./static/js/825.3a314578.chunk.js.map", - "4960.4944962a.chunk.js.map": "./static/js/4960.4944962a.chunk.js.map", - "6873.1b3165f5.chunk.js.map": "./static/js/6873.1b3165f5.chunk.js.map", - "3453.75ca1d21.chunk.js.map": "./static/js/3453.75ca1d21.chunk.js.map", - "2464.f44ab309.chunk.js.map": "./static/js/2464.f44ab309.chunk.js.map" + "8174.3610f42d.chunk.js.map": "./static/js/8174.3610f42d.chunk.js.map", + "2491.26896af4.chunk.js.map": "./static/js/2491.26896af4.chunk.js.map", + "5339.9ea85a11.chunk.js.map": "./static/js/5339.9ea85a11.chunk.js.map", + "825.56a95484.chunk.js.map": "./static/js/825.56a95484.chunk.js.map", + "4960.93e965c8.chunk.js.map": "./static/js/4960.93e965c8.chunk.js.map", + "6873.24e34528.chunk.js.map": "./static/js/6873.24e34528.chunk.js.map", + "3453.9884f106.chunk.js.map": "./static/js/3453.9884f106.chunk.js.map", + "2464.4826a900.chunk.js.map": "./static/js/2464.4826a900.chunk.js.map", + "1612.2e1e75b9.chunk.js.map": "./static/js/1612.2e1e75b9.chunk.js.map" }, "entrypoints": [ "static/css/main.c4c1effe.css", - "static/js/main.26dfcd6f.js" + "static/js/main.c0c05764.js" ] } \ No newline at end of file diff --git a/portal-ui/build/index.html b/portal-ui/build/index.html index 2650e3c1d..6a440d1dc 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/4084.8e16189d.chunk.css b/portal-ui/build/static/css/3816.dd80c1b6.chunk.css similarity index 96% rename from portal-ui/build/static/css/4084.8e16189d.chunk.css rename to portal-ui/build/static/css/3816.dd80c1b6.chunk.css index 8080c352e..381826fde 100644 --- a/portal-ui/build/static/css/4084.8e16189d.chunk.css +++ b/portal-ui/build/static/css/3816.dd80c1b6.chunk.css @@ -1,2 +1,2 @@ .cm-s-dracula.CodeMirror,.cm-s-dracula .CodeMirror-gutters{background-color:#282a36!important;border:none;color:#f8f8f2!important}.cm-s-dracula .CodeMirror-gutters{color:#282a36}.cm-s-dracula .CodeMirror-cursor{border-left:thin solid #f8f8f0}.cm-s-dracula .CodeMirror-linenumber{color:#6d8a88}.cm-s-dracula .CodeMirror-selected{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::selection,.cm-s-dracula .CodeMirror-line>span::selection,.cm-s-dracula .CodeMirror-line>span>span::selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::-moz-selection,.cm-s-dracula .CodeMirror-line>span::-moz-selection,.cm-s-dracula .CodeMirror-line>span>span::-moz-selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula span.cm-comment{color:#6272a4}.cm-s-dracula span.cm-string,.cm-s-dracula span.cm-string-2{color:#f1fa8c}.cm-s-dracula span.cm-number{color:#bd93f9}.cm-s-dracula span.cm-variable{color:#50fa7b}.cm-s-dracula span.cm-variable-2{color:#fff}.cm-s-dracula span.cm-def{color:#50fa7b}.cm-s-dracula span.cm-keyword,.cm-s-dracula span.cm-operator{color:#ff79c6}.cm-s-dracula span.cm-atom{color:#bd93f9}.cm-s-dracula span.cm-meta{color:#f8f8f2}.cm-s-dracula span.cm-tag{color:#ff79c6}.cm-s-dracula span.cm-attribute,.cm-s-dracula span.cm-qualifier{color:#50fa7b}.cm-s-dracula span.cm-property{color:#66d9ef}.cm-s-dracula span.cm-builtin{color:#50fa7b}.cm-s-dracula span.cm-type,.cm-s-dracula span.cm-variable-3{color:#ffb86c}.cm-s-dracula .CodeMirror-activeline-background{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-matchingbracket{color:#fff!important;text-decoration:underline} -/*# sourceMappingURL=4084.8e16189d.chunk.css.map*/ \ No newline at end of file +/*# sourceMappingURL=3816.dd80c1b6.chunk.css.map*/ \ No newline at end of file diff --git a/portal-ui/build/static/css/3816.8e16189d.chunk.css.map b/portal-ui/build/static/css/3816.dd80c1b6.chunk.css.map similarity index 97% rename from portal-ui/build/static/css/3816.8e16189d.chunk.css.map rename to portal-ui/build/static/css/3816.dd80c1b6.chunk.css.map index 30b1602d3..47a14d4b0 100644 --- a/portal-ui/build/static/css/3816.8e16189d.chunk.css.map +++ b/portal-ui/build/static/css/3816.dd80c1b6.chunk.css.map @@ -1 +1 @@ -{"version":3,"file":"static/css/3816.8e16189d.chunk.css","mappings":"AAUA,2DACE,kCAAoC,CAEpC,WAAY,CADZ,uBAEF,CACA,kCAAoC,aAAgB,CACpD,iCAAmC,8BAAiC,CACpE,qCAAuC,aAAgB,CACvD,mCAAqC,6BAAuC,CAC5E,6IAAuJ,6BAAuC,CAC9L,4JAAsK,6BAAuC,CAC7M,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAC/E,6BAA+B,aAAgB,CAC/C,+BAAiC,aAAgB,CACjD,iCAAmC,UAAc,CACjD,0BAA4B,aAAgB,CAE5C,6DAAgC,aAAgB,CAChD,2BAA6B,aAAgB,CAC7C,2BAA6B,aAAgB,CAC7C,0BAA4B,aAAgB,CAE5C,gEAAkC,aAAgB,CAClD,+BAAiC,aAAgB,CACjD,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAE/E,gDAAkD,6BAAmC,CACrF,0CAAwE,oBAAuB,CAAnD,yBAAqD","sources":["../node_modules/codemirror/theme/dracula.css"],"sourcesContent":["/*\n\n Name: dracula\n Author: Michael Kaminsky (http://github.com/mkaminsky11)\n\n Original dracula color scheme by Zeno Rocha (https://github.com/zenorocha/dracula-theme)\n\n*/\n\n\n.cm-s-dracula.CodeMirror, .cm-s-dracula .CodeMirror-gutters {\n background-color: #282a36 !important;\n color: #f8f8f2 !important;\n border: none;\n}\n.cm-s-dracula .CodeMirror-gutters { color: #282a36; }\n.cm-s-dracula .CodeMirror-cursor { border-left: solid thin #f8f8f0; }\n.cm-s-dracula .CodeMirror-linenumber { color: #6D8A88; }\n.cm-s-dracula .CodeMirror-selected { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::selection, .cm-s-dracula .CodeMirror-line > span::selection, .cm-s-dracula .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::-moz-selection, .cm-s-dracula .CodeMirror-line > span::-moz-selection, .cm-s-dracula .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula span.cm-comment { color: #6272a4; }\n.cm-s-dracula span.cm-string, .cm-s-dracula span.cm-string-2 { color: #f1fa8c; }\n.cm-s-dracula span.cm-number { color: #bd93f9; }\n.cm-s-dracula span.cm-variable { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-2 { color: white; }\n.cm-s-dracula span.cm-def { color: #50fa7b; }\n.cm-s-dracula span.cm-operator { color: #ff79c6; }\n.cm-s-dracula span.cm-keyword { color: #ff79c6; }\n.cm-s-dracula span.cm-atom { color: #bd93f9; }\n.cm-s-dracula span.cm-meta { color: #f8f8f2; }\n.cm-s-dracula span.cm-tag { color: #ff79c6; }\n.cm-s-dracula span.cm-attribute { color: #50fa7b; }\n.cm-s-dracula span.cm-qualifier { color: #50fa7b; }\n.cm-s-dracula span.cm-property { color: #66d9ef; }\n.cm-s-dracula span.cm-builtin { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-3, .cm-s-dracula span.cm-type { color: #ffb86c; }\n\n.cm-s-dracula .CodeMirror-activeline-background { background: rgba(255,255,255,0.1); }\n.cm-s-dracula .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }\n"],"names":[],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/css/3816.dd80c1b6.chunk.css","mappings":"AAUA,2DACE,kCAAoC,CAEpC,WAAY,CADZ,uBAEF,CACA,kCAAoC,aAAgB,CACpD,iCAAmC,8BAAiC,CACpE,qCAAuC,aAAgB,CACvD,mCAAqC,6BAAuC,CAC5E,6IAAuJ,6BAAuC,CAC9L,4JAAsK,6BAAuC,CAC7M,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAC/E,6BAA+B,aAAgB,CAC/C,+BAAiC,aAAgB,CACjD,iCAAmC,UAAc,CACjD,0BAA4B,aAAgB,CAE5C,6DAAgC,aAAgB,CAChD,2BAA6B,aAAgB,CAC7C,2BAA6B,aAAgB,CAC7C,0BAA4B,aAAgB,CAE5C,gEAAkC,aAAgB,CAClD,+BAAiC,aAAgB,CACjD,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAE/E,gDAAkD,6BAAmC,CACrF,0CAAwE,oBAAuB,CAAnD,yBAAqD","sources":["../node_modules/codemirror/theme/dracula.css"],"sourcesContent":["/*\n\n Name: dracula\n Author: Michael Kaminsky (http://github.com/mkaminsky11)\n\n Original dracula color scheme by Zeno Rocha (https://github.com/zenorocha/dracula-theme)\n\n*/\n\n\n.cm-s-dracula.CodeMirror, .cm-s-dracula .CodeMirror-gutters {\n background-color: #282a36 !important;\n color: #f8f8f2 !important;\n border: none;\n}\n.cm-s-dracula .CodeMirror-gutters { color: #282a36; }\n.cm-s-dracula .CodeMirror-cursor { border-left: solid thin #f8f8f0; }\n.cm-s-dracula .CodeMirror-linenumber { color: #6D8A88; }\n.cm-s-dracula .CodeMirror-selected { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::selection, .cm-s-dracula .CodeMirror-line > span::selection, .cm-s-dracula .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::-moz-selection, .cm-s-dracula .CodeMirror-line > span::-moz-selection, .cm-s-dracula .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula span.cm-comment { color: #6272a4; }\n.cm-s-dracula span.cm-string, .cm-s-dracula span.cm-string-2 { color: #f1fa8c; }\n.cm-s-dracula span.cm-number { color: #bd93f9; }\n.cm-s-dracula span.cm-variable { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-2 { color: white; }\n.cm-s-dracula span.cm-def { color: #50fa7b; }\n.cm-s-dracula span.cm-operator { color: #ff79c6; }\n.cm-s-dracula span.cm-keyword { color: #ff79c6; }\n.cm-s-dracula span.cm-atom { color: #bd93f9; }\n.cm-s-dracula span.cm-meta { color: #f8f8f2; }\n.cm-s-dracula span.cm-tag { color: #ff79c6; }\n.cm-s-dracula span.cm-attribute { color: #50fa7b; }\n.cm-s-dracula span.cm-qualifier { color: #50fa7b; }\n.cm-s-dracula span.cm-property { color: #66d9ef; }\n.cm-s-dracula span.cm-builtin { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-3, .cm-s-dracula span.cm-type { color: #ffb86c; }\n\n.cm-s-dracula .CodeMirror-activeline-background { background: rgba(255,255,255,0.1); }\n.cm-s-dracula .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/css/2024.8e16189d.chunk.css b/portal-ui/build/static/css/4084.dd80c1b6.chunk.css similarity index 96% rename from portal-ui/build/static/css/2024.8e16189d.chunk.css rename to portal-ui/build/static/css/4084.dd80c1b6.chunk.css index 5f1d8506b..2151e19d1 100644 --- a/portal-ui/build/static/css/2024.8e16189d.chunk.css +++ b/portal-ui/build/static/css/4084.dd80c1b6.chunk.css @@ -1,2 +1,2 @@ .cm-s-dracula.CodeMirror,.cm-s-dracula .CodeMirror-gutters{background-color:#282a36!important;border:none;color:#f8f8f2!important}.cm-s-dracula .CodeMirror-gutters{color:#282a36}.cm-s-dracula .CodeMirror-cursor{border-left:thin solid #f8f8f0}.cm-s-dracula .CodeMirror-linenumber{color:#6d8a88}.cm-s-dracula .CodeMirror-selected{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::selection,.cm-s-dracula .CodeMirror-line>span::selection,.cm-s-dracula .CodeMirror-line>span>span::selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::-moz-selection,.cm-s-dracula .CodeMirror-line>span::-moz-selection,.cm-s-dracula .CodeMirror-line>span>span::-moz-selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula span.cm-comment{color:#6272a4}.cm-s-dracula span.cm-string,.cm-s-dracula span.cm-string-2{color:#f1fa8c}.cm-s-dracula span.cm-number{color:#bd93f9}.cm-s-dracula span.cm-variable{color:#50fa7b}.cm-s-dracula span.cm-variable-2{color:#fff}.cm-s-dracula span.cm-def{color:#50fa7b}.cm-s-dracula span.cm-keyword,.cm-s-dracula span.cm-operator{color:#ff79c6}.cm-s-dracula span.cm-atom{color:#bd93f9}.cm-s-dracula span.cm-meta{color:#f8f8f2}.cm-s-dracula span.cm-tag{color:#ff79c6}.cm-s-dracula span.cm-attribute,.cm-s-dracula span.cm-qualifier{color:#50fa7b}.cm-s-dracula span.cm-property{color:#66d9ef}.cm-s-dracula span.cm-builtin{color:#50fa7b}.cm-s-dracula span.cm-type,.cm-s-dracula span.cm-variable-3{color:#ffb86c}.cm-s-dracula .CodeMirror-activeline-background{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-matchingbracket{color:#fff!important;text-decoration:underline} -/*# sourceMappingURL=2024.8e16189d.chunk.css.map*/ \ No newline at end of file +/*# sourceMappingURL=4084.dd80c1b6.chunk.css.map*/ \ No newline at end of file diff --git a/portal-ui/build/static/css/4084.8e16189d.chunk.css.map b/portal-ui/build/static/css/4084.dd80c1b6.chunk.css.map similarity index 97% rename from portal-ui/build/static/css/4084.8e16189d.chunk.css.map rename to portal-ui/build/static/css/4084.dd80c1b6.chunk.css.map index afe34ac27..29fece045 100644 --- a/portal-ui/build/static/css/4084.8e16189d.chunk.css.map +++ b/portal-ui/build/static/css/4084.dd80c1b6.chunk.css.map @@ -1 +1 @@ -{"version":3,"file":"static/css/4084.8e16189d.chunk.css","mappings":"AAUA,2DACE,kCAAoC,CAEpC,WAAY,CADZ,uBAEF,CACA,kCAAoC,aAAgB,CACpD,iCAAmC,8BAAiC,CACpE,qCAAuC,aAAgB,CACvD,mCAAqC,6BAAuC,CAC5E,6IAAuJ,6BAAuC,CAC9L,4JAAsK,6BAAuC,CAC7M,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAC/E,6BAA+B,aAAgB,CAC/C,+BAAiC,aAAgB,CACjD,iCAAmC,UAAc,CACjD,0BAA4B,aAAgB,CAE5C,6DAAgC,aAAgB,CAChD,2BAA6B,aAAgB,CAC7C,2BAA6B,aAAgB,CAC7C,0BAA4B,aAAgB,CAE5C,gEAAkC,aAAgB,CAClD,+BAAiC,aAAgB,CACjD,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAE/E,gDAAkD,6BAAmC,CACrF,0CAAwE,oBAAuB,CAAnD,yBAAqD","sources":["../node_modules/codemirror/theme/dracula.css"],"sourcesContent":["/*\n\n Name: dracula\n Author: Michael Kaminsky (http://github.com/mkaminsky11)\n\n Original dracula color scheme by Zeno Rocha (https://github.com/zenorocha/dracula-theme)\n\n*/\n\n\n.cm-s-dracula.CodeMirror, .cm-s-dracula .CodeMirror-gutters {\n background-color: #282a36 !important;\n color: #f8f8f2 !important;\n border: none;\n}\n.cm-s-dracula .CodeMirror-gutters { color: #282a36; }\n.cm-s-dracula .CodeMirror-cursor { border-left: solid thin #f8f8f0; }\n.cm-s-dracula .CodeMirror-linenumber { color: #6D8A88; }\n.cm-s-dracula .CodeMirror-selected { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::selection, .cm-s-dracula .CodeMirror-line > span::selection, .cm-s-dracula .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::-moz-selection, .cm-s-dracula .CodeMirror-line > span::-moz-selection, .cm-s-dracula .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula span.cm-comment { color: #6272a4; }\n.cm-s-dracula span.cm-string, .cm-s-dracula span.cm-string-2 { color: #f1fa8c; }\n.cm-s-dracula span.cm-number { color: #bd93f9; }\n.cm-s-dracula span.cm-variable { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-2 { color: white; }\n.cm-s-dracula span.cm-def { color: #50fa7b; }\n.cm-s-dracula span.cm-operator { color: #ff79c6; }\n.cm-s-dracula span.cm-keyword { color: #ff79c6; }\n.cm-s-dracula span.cm-atom { color: #bd93f9; }\n.cm-s-dracula span.cm-meta { color: #f8f8f2; }\n.cm-s-dracula span.cm-tag { color: #ff79c6; }\n.cm-s-dracula span.cm-attribute { color: #50fa7b; }\n.cm-s-dracula span.cm-qualifier { color: #50fa7b; }\n.cm-s-dracula span.cm-property { color: #66d9ef; }\n.cm-s-dracula span.cm-builtin { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-3, .cm-s-dracula span.cm-type { color: #ffb86c; }\n\n.cm-s-dracula .CodeMirror-activeline-background { background: rgba(255,255,255,0.1); }\n.cm-s-dracula .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }\n"],"names":[],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/css/4084.dd80c1b6.chunk.css","mappings":"AAUA,2DACE,kCAAoC,CAEpC,WAAY,CADZ,uBAEF,CACA,kCAAoC,aAAgB,CACpD,iCAAmC,8BAAiC,CACpE,qCAAuC,aAAgB,CACvD,mCAAqC,6BAAuC,CAC5E,6IAAuJ,6BAAuC,CAC9L,4JAAsK,6BAAuC,CAC7M,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAC/E,6BAA+B,aAAgB,CAC/C,+BAAiC,aAAgB,CACjD,iCAAmC,UAAc,CACjD,0BAA4B,aAAgB,CAE5C,6DAAgC,aAAgB,CAChD,2BAA6B,aAAgB,CAC7C,2BAA6B,aAAgB,CAC7C,0BAA4B,aAAgB,CAE5C,gEAAkC,aAAgB,CAClD,+BAAiC,aAAgB,CACjD,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAE/E,gDAAkD,6BAAmC,CACrF,0CAAwE,oBAAuB,CAAnD,yBAAqD","sources":["../node_modules/codemirror/theme/dracula.css"],"sourcesContent":["/*\n\n Name: dracula\n Author: Michael Kaminsky (http://github.com/mkaminsky11)\n\n Original dracula color scheme by Zeno Rocha (https://github.com/zenorocha/dracula-theme)\n\n*/\n\n\n.cm-s-dracula.CodeMirror, .cm-s-dracula .CodeMirror-gutters {\n background-color: #282a36 !important;\n color: #f8f8f2 !important;\n border: none;\n}\n.cm-s-dracula .CodeMirror-gutters { color: #282a36; }\n.cm-s-dracula .CodeMirror-cursor { border-left: solid thin #f8f8f0; }\n.cm-s-dracula .CodeMirror-linenumber { color: #6D8A88; }\n.cm-s-dracula .CodeMirror-selected { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::selection, .cm-s-dracula .CodeMirror-line > span::selection, .cm-s-dracula .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::-moz-selection, .cm-s-dracula .CodeMirror-line > span::-moz-selection, .cm-s-dracula .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula span.cm-comment { color: #6272a4; }\n.cm-s-dracula span.cm-string, .cm-s-dracula span.cm-string-2 { color: #f1fa8c; }\n.cm-s-dracula span.cm-number { color: #bd93f9; }\n.cm-s-dracula span.cm-variable { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-2 { color: white; }\n.cm-s-dracula span.cm-def { color: #50fa7b; }\n.cm-s-dracula span.cm-operator { color: #ff79c6; }\n.cm-s-dracula span.cm-keyword { color: #ff79c6; }\n.cm-s-dracula span.cm-atom { color: #bd93f9; }\n.cm-s-dracula span.cm-meta { color: #f8f8f2; }\n.cm-s-dracula span.cm-tag { color: #ff79c6; }\n.cm-s-dracula span.cm-attribute { color: #50fa7b; }\n.cm-s-dracula span.cm-qualifier { color: #50fa7b; }\n.cm-s-dracula span.cm-property { color: #66d9ef; }\n.cm-s-dracula span.cm-builtin { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-3, .cm-s-dracula span.cm-type { color: #ffb86c; }\n\n.cm-s-dracula .CodeMirror-activeline-background { background: rgba(255,255,255,0.1); }\n.cm-s-dracula .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/css/5822.8e16189d.chunk.css b/portal-ui/build/static/css/5822.dd80c1b6.chunk.css similarity index 96% rename from portal-ui/build/static/css/5822.8e16189d.chunk.css rename to portal-ui/build/static/css/5822.dd80c1b6.chunk.css index 65d193aa9..4c1ab925c 100644 --- a/portal-ui/build/static/css/5822.8e16189d.chunk.css +++ b/portal-ui/build/static/css/5822.dd80c1b6.chunk.css @@ -1,2 +1,2 @@ .cm-s-dracula.CodeMirror,.cm-s-dracula .CodeMirror-gutters{background-color:#282a36!important;border:none;color:#f8f8f2!important}.cm-s-dracula .CodeMirror-gutters{color:#282a36}.cm-s-dracula .CodeMirror-cursor{border-left:thin solid #f8f8f0}.cm-s-dracula .CodeMirror-linenumber{color:#6d8a88}.cm-s-dracula .CodeMirror-selected{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::selection,.cm-s-dracula .CodeMirror-line>span::selection,.cm-s-dracula .CodeMirror-line>span>span::selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::-moz-selection,.cm-s-dracula .CodeMirror-line>span::-moz-selection,.cm-s-dracula .CodeMirror-line>span>span::-moz-selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula span.cm-comment{color:#6272a4}.cm-s-dracula span.cm-string,.cm-s-dracula span.cm-string-2{color:#f1fa8c}.cm-s-dracula span.cm-number{color:#bd93f9}.cm-s-dracula span.cm-variable{color:#50fa7b}.cm-s-dracula span.cm-variable-2{color:#fff}.cm-s-dracula span.cm-def{color:#50fa7b}.cm-s-dracula span.cm-keyword,.cm-s-dracula span.cm-operator{color:#ff79c6}.cm-s-dracula span.cm-atom{color:#bd93f9}.cm-s-dracula span.cm-meta{color:#f8f8f2}.cm-s-dracula span.cm-tag{color:#ff79c6}.cm-s-dracula span.cm-attribute,.cm-s-dracula span.cm-qualifier{color:#50fa7b}.cm-s-dracula span.cm-property{color:#66d9ef}.cm-s-dracula span.cm-builtin{color:#50fa7b}.cm-s-dracula span.cm-type,.cm-s-dracula span.cm-variable-3{color:#ffb86c}.cm-s-dracula .CodeMirror-activeline-background{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-matchingbracket{color:#fff!important;text-decoration:underline} -/*# sourceMappingURL=5822.8e16189d.chunk.css.map*/ \ No newline at end of file +/*# sourceMappingURL=5822.dd80c1b6.chunk.css.map*/ \ No newline at end of file diff --git a/portal-ui/build/static/css/2024.8e16189d.chunk.css.map b/portal-ui/build/static/css/5822.dd80c1b6.chunk.css.map similarity index 97% rename from portal-ui/build/static/css/2024.8e16189d.chunk.css.map rename to portal-ui/build/static/css/5822.dd80c1b6.chunk.css.map index 48d89a1cd..25b40eaff 100644 --- a/portal-ui/build/static/css/2024.8e16189d.chunk.css.map +++ b/portal-ui/build/static/css/5822.dd80c1b6.chunk.css.map @@ -1 +1 @@ -{"version":3,"file":"static/css/2024.8e16189d.chunk.css","mappings":"AAUA,2DACE,kCAAoC,CAEpC,WAAY,CADZ,uBAEF,CACA,kCAAoC,aAAgB,CACpD,iCAAmC,8BAAiC,CACpE,qCAAuC,aAAgB,CACvD,mCAAqC,6BAAuC,CAC5E,6IAAuJ,6BAAuC,CAC9L,4JAAsK,6BAAuC,CAC7M,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAC/E,6BAA+B,aAAgB,CAC/C,+BAAiC,aAAgB,CACjD,iCAAmC,UAAc,CACjD,0BAA4B,aAAgB,CAE5C,6DAAgC,aAAgB,CAChD,2BAA6B,aAAgB,CAC7C,2BAA6B,aAAgB,CAC7C,0BAA4B,aAAgB,CAE5C,gEAAkC,aAAgB,CAClD,+BAAiC,aAAgB,CACjD,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAE/E,gDAAkD,6BAAmC,CACrF,0CAAwE,oBAAuB,CAAnD,yBAAqD","sources":["../node_modules/codemirror/theme/dracula.css"],"sourcesContent":["/*\n\n Name: dracula\n Author: Michael Kaminsky (http://github.com/mkaminsky11)\n\n Original dracula color scheme by Zeno Rocha (https://github.com/zenorocha/dracula-theme)\n\n*/\n\n\n.cm-s-dracula.CodeMirror, .cm-s-dracula .CodeMirror-gutters {\n background-color: #282a36 !important;\n color: #f8f8f2 !important;\n border: none;\n}\n.cm-s-dracula .CodeMirror-gutters { color: #282a36; }\n.cm-s-dracula .CodeMirror-cursor { border-left: solid thin #f8f8f0; }\n.cm-s-dracula .CodeMirror-linenumber { color: #6D8A88; }\n.cm-s-dracula .CodeMirror-selected { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::selection, .cm-s-dracula .CodeMirror-line > span::selection, .cm-s-dracula .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::-moz-selection, .cm-s-dracula .CodeMirror-line > span::-moz-selection, .cm-s-dracula .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula span.cm-comment { color: #6272a4; }\n.cm-s-dracula span.cm-string, .cm-s-dracula span.cm-string-2 { color: #f1fa8c; }\n.cm-s-dracula span.cm-number { color: #bd93f9; }\n.cm-s-dracula span.cm-variable { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-2 { color: white; }\n.cm-s-dracula span.cm-def { color: #50fa7b; }\n.cm-s-dracula span.cm-operator { color: #ff79c6; }\n.cm-s-dracula span.cm-keyword { color: #ff79c6; }\n.cm-s-dracula span.cm-atom { color: #bd93f9; }\n.cm-s-dracula span.cm-meta { color: #f8f8f2; }\n.cm-s-dracula span.cm-tag { color: #ff79c6; }\n.cm-s-dracula span.cm-attribute { color: #50fa7b; }\n.cm-s-dracula span.cm-qualifier { color: #50fa7b; }\n.cm-s-dracula span.cm-property { color: #66d9ef; }\n.cm-s-dracula span.cm-builtin { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-3, .cm-s-dracula span.cm-type { color: #ffb86c; }\n\n.cm-s-dracula .CodeMirror-activeline-background { background: rgba(255,255,255,0.1); }\n.cm-s-dracula .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }\n"],"names":[],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/css/5822.dd80c1b6.chunk.css","mappings":"AAUA,2DACE,kCAAoC,CAEpC,WAAY,CADZ,uBAEF,CACA,kCAAoC,aAAgB,CACpD,iCAAmC,8BAAiC,CACpE,qCAAuC,aAAgB,CACvD,mCAAqC,6BAAuC,CAC5E,6IAAuJ,6BAAuC,CAC9L,4JAAsK,6BAAuC,CAC7M,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAC/E,6BAA+B,aAAgB,CAC/C,+BAAiC,aAAgB,CACjD,iCAAmC,UAAc,CACjD,0BAA4B,aAAgB,CAE5C,6DAAgC,aAAgB,CAChD,2BAA6B,aAAgB,CAC7C,2BAA6B,aAAgB,CAC7C,0BAA4B,aAAgB,CAE5C,gEAAkC,aAAgB,CAClD,+BAAiC,aAAgB,CACjD,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAE/E,gDAAkD,6BAAmC,CACrF,0CAAwE,oBAAuB,CAAnD,yBAAqD","sources":["../node_modules/codemirror/theme/dracula.css"],"sourcesContent":["/*\n\n Name: dracula\n Author: Michael Kaminsky (http://github.com/mkaminsky11)\n\n Original dracula color scheme by Zeno Rocha (https://github.com/zenorocha/dracula-theme)\n\n*/\n\n\n.cm-s-dracula.CodeMirror, .cm-s-dracula .CodeMirror-gutters {\n background-color: #282a36 !important;\n color: #f8f8f2 !important;\n border: none;\n}\n.cm-s-dracula .CodeMirror-gutters { color: #282a36; }\n.cm-s-dracula .CodeMirror-cursor { border-left: solid thin #f8f8f0; }\n.cm-s-dracula .CodeMirror-linenumber { color: #6D8A88; }\n.cm-s-dracula .CodeMirror-selected { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::selection, .cm-s-dracula .CodeMirror-line > span::selection, .cm-s-dracula .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::-moz-selection, .cm-s-dracula .CodeMirror-line > span::-moz-selection, .cm-s-dracula .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula span.cm-comment { color: #6272a4; }\n.cm-s-dracula span.cm-string, .cm-s-dracula span.cm-string-2 { color: #f1fa8c; }\n.cm-s-dracula span.cm-number { color: #bd93f9; }\n.cm-s-dracula span.cm-variable { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-2 { color: white; }\n.cm-s-dracula span.cm-def { color: #50fa7b; }\n.cm-s-dracula span.cm-operator { color: #ff79c6; }\n.cm-s-dracula span.cm-keyword { color: #ff79c6; }\n.cm-s-dracula span.cm-atom { color: #bd93f9; }\n.cm-s-dracula span.cm-meta { color: #f8f8f2; }\n.cm-s-dracula span.cm-tag { color: #ff79c6; }\n.cm-s-dracula span.cm-attribute { color: #50fa7b; }\n.cm-s-dracula span.cm-qualifier { color: #50fa7b; }\n.cm-s-dracula span.cm-property { color: #66d9ef; }\n.cm-s-dracula span.cm-builtin { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-3, .cm-s-dracula span.cm-type { color: #ffb86c; }\n\n.cm-s-dracula .CodeMirror-activeline-background { background: rgba(255,255,255,0.1); }\n.cm-s-dracula .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/css/8724.8e16189d.chunk.css b/portal-ui/build/static/css/8724.8e16189d.chunk.css deleted file mode 100644 index e4054eb5c..000000000 --- a/portal-ui/build/static/css/8724.8e16189d.chunk.css +++ /dev/null @@ -1,2 +0,0 @@ -.cm-s-dracula.CodeMirror,.cm-s-dracula .CodeMirror-gutters{background-color:#282a36!important;border:none;color:#f8f8f2!important}.cm-s-dracula .CodeMirror-gutters{color:#282a36}.cm-s-dracula .CodeMirror-cursor{border-left:thin solid #f8f8f0}.cm-s-dracula .CodeMirror-linenumber{color:#6d8a88}.cm-s-dracula .CodeMirror-selected{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::selection,.cm-s-dracula .CodeMirror-line>span::selection,.cm-s-dracula .CodeMirror-line>span>span::selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::-moz-selection,.cm-s-dracula .CodeMirror-line>span::-moz-selection,.cm-s-dracula .CodeMirror-line>span>span::-moz-selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula span.cm-comment{color:#6272a4}.cm-s-dracula span.cm-string,.cm-s-dracula span.cm-string-2{color:#f1fa8c}.cm-s-dracula span.cm-number{color:#bd93f9}.cm-s-dracula span.cm-variable{color:#50fa7b}.cm-s-dracula span.cm-variable-2{color:#fff}.cm-s-dracula span.cm-def{color:#50fa7b}.cm-s-dracula span.cm-keyword,.cm-s-dracula span.cm-operator{color:#ff79c6}.cm-s-dracula span.cm-atom{color:#bd93f9}.cm-s-dracula span.cm-meta{color:#f8f8f2}.cm-s-dracula span.cm-tag{color:#ff79c6}.cm-s-dracula span.cm-attribute,.cm-s-dracula span.cm-qualifier{color:#50fa7b}.cm-s-dracula span.cm-property{color:#66d9ef}.cm-s-dracula span.cm-builtin{color:#50fa7b}.cm-s-dracula span.cm-type,.cm-s-dracula span.cm-variable-3{color:#ffb86c}.cm-s-dracula .CodeMirror-activeline-background{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-matchingbracket{color:#fff!important;text-decoration:underline} -/*# sourceMappingURL=8724.8e16189d.chunk.css.map*/ \ No newline at end of file diff --git a/portal-ui/build/static/css/8724.8e16189d.chunk.css.map b/portal-ui/build/static/css/8724.8e16189d.chunk.css.map deleted file mode 100644 index 56301dd72..000000000 --- a/portal-ui/build/static/css/8724.8e16189d.chunk.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/css/8724.8e16189d.chunk.css","mappings":"AAUA,2DACE,kCAAoC,CAEpC,WAAY,CADZ,uBAEF,CACA,kCAAoC,aAAgB,CACpD,iCAAmC,8BAAiC,CACpE,qCAAuC,aAAgB,CACvD,mCAAqC,6BAAuC,CAC5E,6IAAuJ,6BAAuC,CAC9L,4JAAsK,6BAAuC,CAC7M,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAC/E,6BAA+B,aAAgB,CAC/C,+BAAiC,aAAgB,CACjD,iCAAmC,UAAc,CACjD,0BAA4B,aAAgB,CAE5C,6DAAgC,aAAgB,CAChD,2BAA6B,aAAgB,CAC7C,2BAA6B,aAAgB,CAC7C,0BAA4B,aAAgB,CAE5C,gEAAkC,aAAgB,CAClD,+BAAiC,aAAgB,CACjD,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAE/E,gDAAkD,6BAAmC,CACrF,0CAAwE,oBAAuB,CAAnD,yBAAqD","sources":["../node_modules/codemirror/theme/dracula.css"],"sourcesContent":["/*\n\n Name: dracula\n Author: Michael Kaminsky (http://github.com/mkaminsky11)\n\n Original dracula color scheme by Zeno Rocha (https://github.com/zenorocha/dracula-theme)\n\n*/\n\n\n.cm-s-dracula.CodeMirror, .cm-s-dracula .CodeMirror-gutters {\n background-color: #282a36 !important;\n color: #f8f8f2 !important;\n border: none;\n}\n.cm-s-dracula .CodeMirror-gutters { color: #282a36; }\n.cm-s-dracula .CodeMirror-cursor { border-left: solid thin #f8f8f0; }\n.cm-s-dracula .CodeMirror-linenumber { color: #6D8A88; }\n.cm-s-dracula .CodeMirror-selected { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::selection, .cm-s-dracula .CodeMirror-line > span::selection, .cm-s-dracula .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::-moz-selection, .cm-s-dracula .CodeMirror-line > span::-moz-selection, .cm-s-dracula .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula span.cm-comment { color: #6272a4; }\n.cm-s-dracula span.cm-string, .cm-s-dracula span.cm-string-2 { color: #f1fa8c; }\n.cm-s-dracula span.cm-number { color: #bd93f9; }\n.cm-s-dracula span.cm-variable { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-2 { color: white; }\n.cm-s-dracula span.cm-def { color: #50fa7b; }\n.cm-s-dracula span.cm-operator { color: #ff79c6; }\n.cm-s-dracula span.cm-keyword { color: #ff79c6; }\n.cm-s-dracula span.cm-atom { color: #bd93f9; }\n.cm-s-dracula span.cm-meta { color: #f8f8f2; }\n.cm-s-dracula span.cm-tag { color: #ff79c6; }\n.cm-s-dracula span.cm-attribute { color: #50fa7b; }\n.cm-s-dracula span.cm-qualifier { color: #50fa7b; }\n.cm-s-dracula span.cm-property { color: #66d9ef; }\n.cm-s-dracula span.cm-builtin { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-3, .cm-s-dracula span.cm-type { color: #ffb86c; }\n\n.cm-s-dracula .CodeMirror-activeline-background { background: rgba(255,255,255,0.1); }\n.cm-s-dracula .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/css/3816.8e16189d.chunk.css b/portal-ui/build/static/css/8724.dd80c1b6.chunk.css similarity index 96% rename from portal-ui/build/static/css/3816.8e16189d.chunk.css rename to portal-ui/build/static/css/8724.dd80c1b6.chunk.css index 430860bf4..0523cc29b 100644 --- a/portal-ui/build/static/css/3816.8e16189d.chunk.css +++ b/portal-ui/build/static/css/8724.dd80c1b6.chunk.css @@ -1,2 +1,2 @@ .cm-s-dracula.CodeMirror,.cm-s-dracula .CodeMirror-gutters{background-color:#282a36!important;border:none;color:#f8f8f2!important}.cm-s-dracula .CodeMirror-gutters{color:#282a36}.cm-s-dracula .CodeMirror-cursor{border-left:thin solid #f8f8f0}.cm-s-dracula .CodeMirror-linenumber{color:#6d8a88}.cm-s-dracula .CodeMirror-selected{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::selection,.cm-s-dracula .CodeMirror-line>span::selection,.cm-s-dracula .CodeMirror-line>span>span::selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::-moz-selection,.cm-s-dracula .CodeMirror-line>span::-moz-selection,.cm-s-dracula .CodeMirror-line>span>span::-moz-selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula span.cm-comment{color:#6272a4}.cm-s-dracula span.cm-string,.cm-s-dracula span.cm-string-2{color:#f1fa8c}.cm-s-dracula span.cm-number{color:#bd93f9}.cm-s-dracula span.cm-variable{color:#50fa7b}.cm-s-dracula span.cm-variable-2{color:#fff}.cm-s-dracula span.cm-def{color:#50fa7b}.cm-s-dracula span.cm-keyword,.cm-s-dracula span.cm-operator{color:#ff79c6}.cm-s-dracula span.cm-atom{color:#bd93f9}.cm-s-dracula span.cm-meta{color:#f8f8f2}.cm-s-dracula span.cm-tag{color:#ff79c6}.cm-s-dracula span.cm-attribute,.cm-s-dracula span.cm-qualifier{color:#50fa7b}.cm-s-dracula span.cm-property{color:#66d9ef}.cm-s-dracula span.cm-builtin{color:#50fa7b}.cm-s-dracula span.cm-type,.cm-s-dracula span.cm-variable-3{color:#ffb86c}.cm-s-dracula .CodeMirror-activeline-background{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-matchingbracket{color:#fff!important;text-decoration:underline} -/*# sourceMappingURL=3816.8e16189d.chunk.css.map*/ \ No newline at end of file +/*# sourceMappingURL=8724.dd80c1b6.chunk.css.map*/ \ No newline at end of file diff --git a/portal-ui/build/static/css/5822.8e16189d.chunk.css.map b/portal-ui/build/static/css/8724.dd80c1b6.chunk.css.map similarity index 97% rename from portal-ui/build/static/css/5822.8e16189d.chunk.css.map rename to portal-ui/build/static/css/8724.dd80c1b6.chunk.css.map index 8d6279062..bdfce3a28 100644 --- a/portal-ui/build/static/css/5822.8e16189d.chunk.css.map +++ b/portal-ui/build/static/css/8724.dd80c1b6.chunk.css.map @@ -1 +1 @@ -{"version":3,"file":"static/css/5822.8e16189d.chunk.css","mappings":"AAUA,2DACE,kCAAoC,CAEpC,WAAY,CADZ,uBAEF,CACA,kCAAoC,aAAgB,CACpD,iCAAmC,8BAAiC,CACpE,qCAAuC,aAAgB,CACvD,mCAAqC,6BAAuC,CAC5E,6IAAuJ,6BAAuC,CAC9L,4JAAsK,6BAAuC,CAC7M,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAC/E,6BAA+B,aAAgB,CAC/C,+BAAiC,aAAgB,CACjD,iCAAmC,UAAc,CACjD,0BAA4B,aAAgB,CAE5C,6DAAgC,aAAgB,CAChD,2BAA6B,aAAgB,CAC7C,2BAA6B,aAAgB,CAC7C,0BAA4B,aAAgB,CAE5C,gEAAkC,aAAgB,CAClD,+BAAiC,aAAgB,CACjD,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAE/E,gDAAkD,6BAAmC,CACrF,0CAAwE,oBAAuB,CAAnD,yBAAqD","sources":["../node_modules/codemirror/theme/dracula.css"],"sourcesContent":["/*\n\n Name: dracula\n Author: Michael Kaminsky (http://github.com/mkaminsky11)\n\n Original dracula color scheme by Zeno Rocha (https://github.com/zenorocha/dracula-theme)\n\n*/\n\n\n.cm-s-dracula.CodeMirror, .cm-s-dracula .CodeMirror-gutters {\n background-color: #282a36 !important;\n color: #f8f8f2 !important;\n border: none;\n}\n.cm-s-dracula .CodeMirror-gutters { color: #282a36; }\n.cm-s-dracula .CodeMirror-cursor { border-left: solid thin #f8f8f0; }\n.cm-s-dracula .CodeMirror-linenumber { color: #6D8A88; }\n.cm-s-dracula .CodeMirror-selected { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::selection, .cm-s-dracula .CodeMirror-line > span::selection, .cm-s-dracula .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::-moz-selection, .cm-s-dracula .CodeMirror-line > span::-moz-selection, .cm-s-dracula .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula span.cm-comment { color: #6272a4; }\n.cm-s-dracula span.cm-string, .cm-s-dracula span.cm-string-2 { color: #f1fa8c; }\n.cm-s-dracula span.cm-number { color: #bd93f9; }\n.cm-s-dracula span.cm-variable { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-2 { color: white; }\n.cm-s-dracula span.cm-def { color: #50fa7b; }\n.cm-s-dracula span.cm-operator { color: #ff79c6; }\n.cm-s-dracula span.cm-keyword { color: #ff79c6; }\n.cm-s-dracula span.cm-atom { color: #bd93f9; }\n.cm-s-dracula span.cm-meta { color: #f8f8f2; }\n.cm-s-dracula span.cm-tag { color: #ff79c6; }\n.cm-s-dracula span.cm-attribute { color: #50fa7b; }\n.cm-s-dracula span.cm-qualifier { color: #50fa7b; }\n.cm-s-dracula span.cm-property { color: #66d9ef; }\n.cm-s-dracula span.cm-builtin { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-3, .cm-s-dracula span.cm-type { color: #ffb86c; }\n\n.cm-s-dracula .CodeMirror-activeline-background { background: rgba(255,255,255,0.1); }\n.cm-s-dracula .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }\n"],"names":[],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/css/8724.dd80c1b6.chunk.css","mappings":"AAUA,2DACE,kCAAoC,CAEpC,WAAY,CADZ,uBAEF,CACA,kCAAoC,aAAgB,CACpD,iCAAmC,8BAAiC,CACpE,qCAAuC,aAAgB,CACvD,mCAAqC,6BAAuC,CAC5E,6IAAuJ,6BAAuC,CAC9L,4JAAsK,6BAAuC,CAC7M,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAC/E,6BAA+B,aAAgB,CAC/C,+BAAiC,aAAgB,CACjD,iCAAmC,UAAc,CACjD,0BAA4B,aAAgB,CAE5C,6DAAgC,aAAgB,CAChD,2BAA6B,aAAgB,CAC7C,2BAA6B,aAAgB,CAC7C,0BAA4B,aAAgB,CAE5C,gEAAkC,aAAgB,CAClD,+BAAiC,aAAgB,CACjD,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAE/E,gDAAkD,6BAAmC,CACrF,0CAAwE,oBAAuB,CAAnD,yBAAqD","sources":["../node_modules/codemirror/theme/dracula.css"],"sourcesContent":["/*\n\n Name: dracula\n Author: Michael Kaminsky (http://github.com/mkaminsky11)\n\n Original dracula color scheme by Zeno Rocha (https://github.com/zenorocha/dracula-theme)\n\n*/\n\n\n.cm-s-dracula.CodeMirror, .cm-s-dracula .CodeMirror-gutters {\n background-color: #282a36 !important;\n color: #f8f8f2 !important;\n border: none;\n}\n.cm-s-dracula .CodeMirror-gutters { color: #282a36; }\n.cm-s-dracula .CodeMirror-cursor { border-left: solid thin #f8f8f0; }\n.cm-s-dracula .CodeMirror-linenumber { color: #6D8A88; }\n.cm-s-dracula .CodeMirror-selected { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::selection, .cm-s-dracula .CodeMirror-line > span::selection, .cm-s-dracula .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::-moz-selection, .cm-s-dracula .CodeMirror-line > span::-moz-selection, .cm-s-dracula .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula span.cm-comment { color: #6272a4; }\n.cm-s-dracula span.cm-string, .cm-s-dracula span.cm-string-2 { color: #f1fa8c; }\n.cm-s-dracula span.cm-number { color: #bd93f9; }\n.cm-s-dracula span.cm-variable { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-2 { color: white; }\n.cm-s-dracula span.cm-def { color: #50fa7b; }\n.cm-s-dracula span.cm-operator { color: #ff79c6; }\n.cm-s-dracula span.cm-keyword { color: #ff79c6; }\n.cm-s-dracula span.cm-atom { color: #bd93f9; }\n.cm-s-dracula span.cm-meta { color: #f8f8f2; }\n.cm-s-dracula span.cm-tag { color: #ff79c6; }\n.cm-s-dracula span.cm-attribute { color: #50fa7b; }\n.cm-s-dracula span.cm-qualifier { color: #50fa7b; }\n.cm-s-dracula span.cm-property { color: #66d9ef; }\n.cm-s-dracula span.cm-builtin { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-3, .cm-s-dracula span.cm-type { color: #ffb86c; }\n\n.cm-s-dracula .CodeMirror-activeline-background { background: rgba(255,255,255,0.1); }\n.cm-s-dracula .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/css/964.dd80c1b6.chunk.css b/portal-ui/build/static/css/964.dd80c1b6.chunk.css new file mode 100644 index 000000000..c45c6a7b9 --- /dev/null +++ b/portal-ui/build/static/css/964.dd80c1b6.chunk.css @@ -0,0 +1,2 @@ +.cm-s-dracula.CodeMirror,.cm-s-dracula .CodeMirror-gutters{background-color:#282a36!important;border:none;color:#f8f8f2!important}.cm-s-dracula .CodeMirror-gutters{color:#282a36}.cm-s-dracula .CodeMirror-cursor{border-left:thin solid #f8f8f0}.cm-s-dracula .CodeMirror-linenumber{color:#6d8a88}.cm-s-dracula .CodeMirror-selected{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::selection,.cm-s-dracula .CodeMirror-line>span::selection,.cm-s-dracula .CodeMirror-line>span>span::selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::-moz-selection,.cm-s-dracula .CodeMirror-line>span::-moz-selection,.cm-s-dracula .CodeMirror-line>span>span::-moz-selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula span.cm-comment{color:#6272a4}.cm-s-dracula span.cm-string,.cm-s-dracula span.cm-string-2{color:#f1fa8c}.cm-s-dracula span.cm-number{color:#bd93f9}.cm-s-dracula span.cm-variable{color:#50fa7b}.cm-s-dracula span.cm-variable-2{color:#fff}.cm-s-dracula span.cm-def{color:#50fa7b}.cm-s-dracula span.cm-keyword,.cm-s-dracula span.cm-operator{color:#ff79c6}.cm-s-dracula span.cm-atom{color:#bd93f9}.cm-s-dracula span.cm-meta{color:#f8f8f2}.cm-s-dracula span.cm-tag{color:#ff79c6}.cm-s-dracula span.cm-attribute,.cm-s-dracula span.cm-qualifier{color:#50fa7b}.cm-s-dracula span.cm-property{color:#66d9ef}.cm-s-dracula span.cm-builtin{color:#50fa7b}.cm-s-dracula span.cm-type,.cm-s-dracula span.cm-variable-3{color:#ffb86c}.cm-s-dracula .CodeMirror-activeline-background{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-matchingbracket{color:#fff!important;text-decoration:underline} +/*# sourceMappingURL=964.dd80c1b6.chunk.css.map*/ \ No newline at end of file diff --git a/portal-ui/build/static/css/964.dd80c1b6.chunk.css.map b/portal-ui/build/static/css/964.dd80c1b6.chunk.css.map new file mode 100644 index 000000000..e240516c6 --- /dev/null +++ b/portal-ui/build/static/css/964.dd80c1b6.chunk.css.map @@ -0,0 +1 @@ +{"version":3,"file":"static/css/964.dd80c1b6.chunk.css","mappings":"AAUA,2DACE,kCAAoC,CAEpC,WAAY,CADZ,uBAEF,CACA,kCAAoC,aAAgB,CACpD,iCAAmC,8BAAiC,CACpE,qCAAuC,aAAgB,CACvD,mCAAqC,6BAAuC,CAC5E,6IAAuJ,6BAAuC,CAC9L,4JAAsK,6BAAuC,CAC7M,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAC/E,6BAA+B,aAAgB,CAC/C,+BAAiC,aAAgB,CACjD,iCAAmC,UAAc,CACjD,0BAA4B,aAAgB,CAE5C,6DAAgC,aAAgB,CAChD,2BAA6B,aAAgB,CAC7C,2BAA6B,aAAgB,CAC7C,0BAA4B,aAAgB,CAE5C,gEAAkC,aAAgB,CAClD,+BAAiC,aAAgB,CACjD,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAE/E,gDAAkD,6BAAmC,CACrF,0CAAwE,oBAAuB,CAAnD,yBAAqD","sources":["../node_modules/codemirror/theme/dracula.css"],"sourcesContent":["/*\n\n Name: dracula\n Author: Michael Kaminsky (http://github.com/mkaminsky11)\n\n Original dracula color scheme by Zeno Rocha (https://github.com/zenorocha/dracula-theme)\n\n*/\n\n\n.cm-s-dracula.CodeMirror, .cm-s-dracula .CodeMirror-gutters {\n background-color: #282a36 !important;\n color: #f8f8f2 !important;\n border: none;\n}\n.cm-s-dracula .CodeMirror-gutters { color: #282a36; }\n.cm-s-dracula .CodeMirror-cursor { border-left: solid thin #f8f8f0; }\n.cm-s-dracula .CodeMirror-linenumber { color: #6D8A88; }\n.cm-s-dracula .CodeMirror-selected { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::selection, .cm-s-dracula .CodeMirror-line > span::selection, .cm-s-dracula .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::-moz-selection, .cm-s-dracula .CodeMirror-line > span::-moz-selection, .cm-s-dracula .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula span.cm-comment { color: #6272a4; }\n.cm-s-dracula span.cm-string, .cm-s-dracula span.cm-string-2 { color: #f1fa8c; }\n.cm-s-dracula span.cm-number { color: #bd93f9; }\n.cm-s-dracula span.cm-variable { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-2 { color: white; }\n.cm-s-dracula span.cm-def { color: #50fa7b; }\n.cm-s-dracula span.cm-operator { color: #ff79c6; }\n.cm-s-dracula span.cm-keyword { color: #ff79c6; }\n.cm-s-dracula span.cm-atom { color: #bd93f9; }\n.cm-s-dracula span.cm-meta { color: #f8f8f2; }\n.cm-s-dracula span.cm-tag { color: #ff79c6; }\n.cm-s-dracula span.cm-attribute { color: #50fa7b; }\n.cm-s-dracula span.cm-qualifier { color: #50fa7b; }\n.cm-s-dracula span.cm-property { color: #66d9ef; }\n.cm-s-dracula span.cm-builtin { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-3, .cm-s-dracula span.cm-type { color: #ffb86c; }\n\n.cm-s-dracula .CodeMirror-activeline-background { background: rgba(255,255,255,0.1); }\n.cm-s-dracula .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/css/9645.8e16189d.chunk.css b/portal-ui/build/static/css/9645.8e16189d.chunk.css deleted file mode 100644 index 918d574b9..000000000 --- a/portal-ui/build/static/css/9645.8e16189d.chunk.css +++ /dev/null @@ -1,2 +0,0 @@ -.cm-s-dracula.CodeMirror,.cm-s-dracula .CodeMirror-gutters{background-color:#282a36!important;border:none;color:#f8f8f2!important}.cm-s-dracula .CodeMirror-gutters{color:#282a36}.cm-s-dracula .CodeMirror-cursor{border-left:thin solid #f8f8f0}.cm-s-dracula .CodeMirror-linenumber{color:#6d8a88}.cm-s-dracula .CodeMirror-selected{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::selection,.cm-s-dracula .CodeMirror-line>span::selection,.cm-s-dracula .CodeMirror-line>span>span::selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::-moz-selection,.cm-s-dracula .CodeMirror-line>span::-moz-selection,.cm-s-dracula .CodeMirror-line>span>span::-moz-selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula span.cm-comment{color:#6272a4}.cm-s-dracula span.cm-string,.cm-s-dracula span.cm-string-2{color:#f1fa8c}.cm-s-dracula span.cm-number{color:#bd93f9}.cm-s-dracula span.cm-variable{color:#50fa7b}.cm-s-dracula span.cm-variable-2{color:#fff}.cm-s-dracula span.cm-def{color:#50fa7b}.cm-s-dracula span.cm-keyword,.cm-s-dracula span.cm-operator{color:#ff79c6}.cm-s-dracula span.cm-atom{color:#bd93f9}.cm-s-dracula span.cm-meta{color:#f8f8f2}.cm-s-dracula span.cm-tag{color:#ff79c6}.cm-s-dracula span.cm-attribute,.cm-s-dracula span.cm-qualifier{color:#50fa7b}.cm-s-dracula span.cm-property{color:#66d9ef}.cm-s-dracula span.cm-builtin{color:#50fa7b}.cm-s-dracula span.cm-type,.cm-s-dracula span.cm-variable-3{color:#ffb86c}.cm-s-dracula .CodeMirror-activeline-background{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-matchingbracket{color:#fff!important;text-decoration:underline} -/*# sourceMappingURL=9645.8e16189d.chunk.css.map*/ \ No newline at end of file diff --git a/portal-ui/build/static/css/9645.8e16189d.chunk.css.map b/portal-ui/build/static/css/9645.8e16189d.chunk.css.map deleted file mode 100644 index 286ddbe72..000000000 --- a/portal-ui/build/static/css/9645.8e16189d.chunk.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/css/9645.8e16189d.chunk.css","mappings":"AAUA,2DACE,kCAAoC,CAEpC,WAAY,CADZ,uBAEF,CACA,kCAAoC,aAAgB,CACpD,iCAAmC,8BAAiC,CACpE,qCAAuC,aAAgB,CACvD,mCAAqC,6BAAuC,CAC5E,6IAAuJ,6BAAuC,CAC9L,4JAAsK,6BAAuC,CAC7M,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAC/E,6BAA+B,aAAgB,CAC/C,+BAAiC,aAAgB,CACjD,iCAAmC,UAAc,CACjD,0BAA4B,aAAgB,CAE5C,6DAAgC,aAAgB,CAChD,2BAA6B,aAAgB,CAC7C,2BAA6B,aAAgB,CAC7C,0BAA4B,aAAgB,CAE5C,gEAAkC,aAAgB,CAClD,+BAAiC,aAAgB,CACjD,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAE/E,gDAAkD,6BAAmC,CACrF,0CAAwE,oBAAuB,CAAnD,yBAAqD","sources":["../node_modules/codemirror/theme/dracula.css"],"sourcesContent":["/*\n\n Name: dracula\n Author: Michael Kaminsky (http://github.com/mkaminsky11)\n\n Original dracula color scheme by Zeno Rocha (https://github.com/zenorocha/dracula-theme)\n\n*/\n\n\n.cm-s-dracula.CodeMirror, .cm-s-dracula .CodeMirror-gutters {\n background-color: #282a36 !important;\n color: #f8f8f2 !important;\n border: none;\n}\n.cm-s-dracula .CodeMirror-gutters { color: #282a36; }\n.cm-s-dracula .CodeMirror-cursor { border-left: solid thin #f8f8f0; }\n.cm-s-dracula .CodeMirror-linenumber { color: #6D8A88; }\n.cm-s-dracula .CodeMirror-selected { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::selection, .cm-s-dracula .CodeMirror-line > span::selection, .cm-s-dracula .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::-moz-selection, .cm-s-dracula .CodeMirror-line > span::-moz-selection, .cm-s-dracula .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula span.cm-comment { color: #6272a4; }\n.cm-s-dracula span.cm-string, .cm-s-dracula span.cm-string-2 { color: #f1fa8c; }\n.cm-s-dracula span.cm-number { color: #bd93f9; }\n.cm-s-dracula span.cm-variable { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-2 { color: white; }\n.cm-s-dracula span.cm-def { color: #50fa7b; }\n.cm-s-dracula span.cm-operator { color: #ff79c6; }\n.cm-s-dracula span.cm-keyword { color: #ff79c6; }\n.cm-s-dracula span.cm-atom { color: #bd93f9; }\n.cm-s-dracula span.cm-meta { color: #f8f8f2; }\n.cm-s-dracula span.cm-tag { color: #ff79c6; }\n.cm-s-dracula span.cm-attribute { color: #50fa7b; }\n.cm-s-dracula span.cm-qualifier { color: #50fa7b; }\n.cm-s-dracula span.cm-property { color: #66d9ef; }\n.cm-s-dracula span.cm-builtin { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-3, .cm-s-dracula span.cm-type { color: #ffb86c; }\n\n.cm-s-dracula .CodeMirror-activeline-background { background: rgba(255,255,255,0.1); }\n.cm-s-dracula .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/css/9645.dd80c1b6.chunk.css b/portal-ui/build/static/css/9645.dd80c1b6.chunk.css new file mode 100644 index 000000000..746cf5916 --- /dev/null +++ b/portal-ui/build/static/css/9645.dd80c1b6.chunk.css @@ -0,0 +1,2 @@ +.cm-s-dracula.CodeMirror,.cm-s-dracula .CodeMirror-gutters{background-color:#282a36!important;border:none;color:#f8f8f2!important}.cm-s-dracula .CodeMirror-gutters{color:#282a36}.cm-s-dracula .CodeMirror-cursor{border-left:thin solid #f8f8f0}.cm-s-dracula .CodeMirror-linenumber{color:#6d8a88}.cm-s-dracula .CodeMirror-selected{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::selection,.cm-s-dracula .CodeMirror-line>span::selection,.cm-s-dracula .CodeMirror-line>span>span::selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::-moz-selection,.cm-s-dracula .CodeMirror-line>span::-moz-selection,.cm-s-dracula .CodeMirror-line>span>span::-moz-selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula span.cm-comment{color:#6272a4}.cm-s-dracula span.cm-string,.cm-s-dracula span.cm-string-2{color:#f1fa8c}.cm-s-dracula span.cm-number{color:#bd93f9}.cm-s-dracula span.cm-variable{color:#50fa7b}.cm-s-dracula span.cm-variable-2{color:#fff}.cm-s-dracula span.cm-def{color:#50fa7b}.cm-s-dracula span.cm-keyword,.cm-s-dracula span.cm-operator{color:#ff79c6}.cm-s-dracula span.cm-atom{color:#bd93f9}.cm-s-dracula span.cm-meta{color:#f8f8f2}.cm-s-dracula span.cm-tag{color:#ff79c6}.cm-s-dracula span.cm-attribute,.cm-s-dracula span.cm-qualifier{color:#50fa7b}.cm-s-dracula span.cm-property{color:#66d9ef}.cm-s-dracula span.cm-builtin{color:#50fa7b}.cm-s-dracula span.cm-type,.cm-s-dracula span.cm-variable-3{color:#ffb86c}.cm-s-dracula .CodeMirror-activeline-background{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-matchingbracket{color:#fff!important;text-decoration:underline} +/*# sourceMappingURL=9645.dd80c1b6.chunk.css.map*/ \ No newline at end of file diff --git a/portal-ui/build/static/css/9645.dd80c1b6.chunk.css.map b/portal-ui/build/static/css/9645.dd80c1b6.chunk.css.map new file mode 100644 index 000000000..ff700745e --- /dev/null +++ b/portal-ui/build/static/css/9645.dd80c1b6.chunk.css.map @@ -0,0 +1 @@ +{"version":3,"file":"static/css/9645.dd80c1b6.chunk.css","mappings":"AAUA,2DACE,kCAAoC,CAEpC,WAAY,CADZ,uBAEF,CACA,kCAAoC,aAAgB,CACpD,iCAAmC,8BAAiC,CACpE,qCAAuC,aAAgB,CACvD,mCAAqC,6BAAuC,CAC5E,6IAAuJ,6BAAuC,CAC9L,4JAAsK,6BAAuC,CAC7M,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAC/E,6BAA+B,aAAgB,CAC/C,+BAAiC,aAAgB,CACjD,iCAAmC,UAAc,CACjD,0BAA4B,aAAgB,CAE5C,6DAAgC,aAAgB,CAChD,2BAA6B,aAAgB,CAC7C,2BAA6B,aAAgB,CAC7C,0BAA4B,aAAgB,CAE5C,gEAAkC,aAAgB,CAClD,+BAAiC,aAAgB,CACjD,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAE/E,gDAAkD,6BAAmC,CACrF,0CAAwE,oBAAuB,CAAnD,yBAAqD","sources":["../node_modules/codemirror/theme/dracula.css"],"sourcesContent":["/*\n\n Name: dracula\n Author: Michael Kaminsky (http://github.com/mkaminsky11)\n\n Original dracula color scheme by Zeno Rocha (https://github.com/zenorocha/dracula-theme)\n\n*/\n\n\n.cm-s-dracula.CodeMirror, .cm-s-dracula .CodeMirror-gutters {\n background-color: #282a36 !important;\n color: #f8f8f2 !important;\n border: none;\n}\n.cm-s-dracula .CodeMirror-gutters { color: #282a36; }\n.cm-s-dracula .CodeMirror-cursor { border-left: solid thin #f8f8f0; }\n.cm-s-dracula .CodeMirror-linenumber { color: #6D8A88; }\n.cm-s-dracula .CodeMirror-selected { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::selection, .cm-s-dracula .CodeMirror-line > span::selection, .cm-s-dracula .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::-moz-selection, .cm-s-dracula .CodeMirror-line > span::-moz-selection, .cm-s-dracula .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula span.cm-comment { color: #6272a4; }\n.cm-s-dracula span.cm-string, .cm-s-dracula span.cm-string-2 { color: #f1fa8c; }\n.cm-s-dracula span.cm-number { color: #bd93f9; }\n.cm-s-dracula span.cm-variable { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-2 { color: white; }\n.cm-s-dracula span.cm-def { color: #50fa7b; }\n.cm-s-dracula span.cm-operator { color: #ff79c6; }\n.cm-s-dracula span.cm-keyword { color: #ff79c6; }\n.cm-s-dracula span.cm-atom { color: #bd93f9; }\n.cm-s-dracula span.cm-meta { color: #f8f8f2; }\n.cm-s-dracula span.cm-tag { color: #ff79c6; }\n.cm-s-dracula span.cm-attribute { color: #50fa7b; }\n.cm-s-dracula span.cm-qualifier { color: #50fa7b; }\n.cm-s-dracula span.cm-property { color: #66d9ef; }\n.cm-s-dracula span.cm-builtin { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-3, .cm-s-dracula span.cm-type { color: #ffb86c; }\n\n.cm-s-dracula .CodeMirror-activeline-background { background: rgba(255,255,255,0.1); }\n.cm-s-dracula .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/css/9807.8e16189d.chunk.css b/portal-ui/build/static/css/9807.8e16189d.chunk.css deleted file mode 100644 index 69cadd19f..000000000 --- a/portal-ui/build/static/css/9807.8e16189d.chunk.css +++ /dev/null @@ -1,2 +0,0 @@ -.cm-s-dracula.CodeMirror,.cm-s-dracula .CodeMirror-gutters{background-color:#282a36!important;border:none;color:#f8f8f2!important}.cm-s-dracula .CodeMirror-gutters{color:#282a36}.cm-s-dracula .CodeMirror-cursor{border-left:thin solid #f8f8f0}.cm-s-dracula .CodeMirror-linenumber{color:#6d8a88}.cm-s-dracula .CodeMirror-selected{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::selection,.cm-s-dracula .CodeMirror-line>span::selection,.cm-s-dracula .CodeMirror-line>span>span::selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::-moz-selection,.cm-s-dracula .CodeMirror-line>span::-moz-selection,.cm-s-dracula .CodeMirror-line>span>span::-moz-selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula span.cm-comment{color:#6272a4}.cm-s-dracula span.cm-string,.cm-s-dracula span.cm-string-2{color:#f1fa8c}.cm-s-dracula span.cm-number{color:#bd93f9}.cm-s-dracula span.cm-variable{color:#50fa7b}.cm-s-dracula span.cm-variable-2{color:#fff}.cm-s-dracula span.cm-def{color:#50fa7b}.cm-s-dracula span.cm-keyword,.cm-s-dracula span.cm-operator{color:#ff79c6}.cm-s-dracula span.cm-atom{color:#bd93f9}.cm-s-dracula span.cm-meta{color:#f8f8f2}.cm-s-dracula span.cm-tag{color:#ff79c6}.cm-s-dracula span.cm-attribute,.cm-s-dracula span.cm-qualifier{color:#50fa7b}.cm-s-dracula span.cm-property{color:#66d9ef}.cm-s-dracula span.cm-builtin{color:#50fa7b}.cm-s-dracula span.cm-type,.cm-s-dracula span.cm-variable-3{color:#ffb86c}.cm-s-dracula .CodeMirror-activeline-background{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-matchingbracket{color:#fff!important;text-decoration:underline} -/*# sourceMappingURL=9807.8e16189d.chunk.css.map*/ \ No newline at end of file diff --git a/portal-ui/build/static/css/9807.8e16189d.chunk.css.map b/portal-ui/build/static/css/9807.8e16189d.chunk.css.map deleted file mode 100644 index c4329caf4..000000000 --- a/portal-ui/build/static/css/9807.8e16189d.chunk.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/css/9807.8e16189d.chunk.css","mappings":"AAUA,2DACE,kCAAoC,CAEpC,WAAY,CADZ,uBAEF,CACA,kCAAoC,aAAgB,CACpD,iCAAmC,8BAAiC,CACpE,qCAAuC,aAAgB,CACvD,mCAAqC,6BAAuC,CAC5E,6IAAuJ,6BAAuC,CAC9L,4JAAsK,6BAAuC,CAC7M,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAC/E,6BAA+B,aAAgB,CAC/C,+BAAiC,aAAgB,CACjD,iCAAmC,UAAc,CACjD,0BAA4B,aAAgB,CAE5C,6DAAgC,aAAgB,CAChD,2BAA6B,aAAgB,CAC7C,2BAA6B,aAAgB,CAC7C,0BAA4B,aAAgB,CAE5C,gEAAkC,aAAgB,CAClD,+BAAiC,aAAgB,CACjD,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAE/E,gDAAkD,6BAAmC,CACrF,0CAAwE,oBAAuB,CAAnD,yBAAqD","sources":["../node_modules/codemirror/theme/dracula.css"],"sourcesContent":["/*\n\n Name: dracula\n Author: Michael Kaminsky (http://github.com/mkaminsky11)\n\n Original dracula color scheme by Zeno Rocha (https://github.com/zenorocha/dracula-theme)\n\n*/\n\n\n.cm-s-dracula.CodeMirror, .cm-s-dracula .CodeMirror-gutters {\n background-color: #282a36 !important;\n color: #f8f8f2 !important;\n border: none;\n}\n.cm-s-dracula .CodeMirror-gutters { color: #282a36; }\n.cm-s-dracula .CodeMirror-cursor { border-left: solid thin #f8f8f0; }\n.cm-s-dracula .CodeMirror-linenumber { color: #6D8A88; }\n.cm-s-dracula .CodeMirror-selected { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::selection, .cm-s-dracula .CodeMirror-line > span::selection, .cm-s-dracula .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::-moz-selection, .cm-s-dracula .CodeMirror-line > span::-moz-selection, .cm-s-dracula .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula span.cm-comment { color: #6272a4; }\n.cm-s-dracula span.cm-string, .cm-s-dracula span.cm-string-2 { color: #f1fa8c; }\n.cm-s-dracula span.cm-number { color: #bd93f9; }\n.cm-s-dracula span.cm-variable { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-2 { color: white; }\n.cm-s-dracula span.cm-def { color: #50fa7b; }\n.cm-s-dracula span.cm-operator { color: #ff79c6; }\n.cm-s-dracula span.cm-keyword { color: #ff79c6; }\n.cm-s-dracula span.cm-atom { color: #bd93f9; }\n.cm-s-dracula span.cm-meta { color: #f8f8f2; }\n.cm-s-dracula span.cm-tag { color: #ff79c6; }\n.cm-s-dracula span.cm-attribute { color: #50fa7b; }\n.cm-s-dracula span.cm-qualifier { color: #50fa7b; }\n.cm-s-dracula span.cm-property { color: #66d9ef; }\n.cm-s-dracula span.cm-builtin { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-3, .cm-s-dracula span.cm-type { color: #ffb86c; }\n\n.cm-s-dracula .CodeMirror-activeline-background { background: rgba(255,255,255,0.1); }\n.cm-s-dracula .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/css/9807.dd80c1b6.chunk.css b/portal-ui/build/static/css/9807.dd80c1b6.chunk.css new file mode 100644 index 000000000..bd7ead8f0 --- /dev/null +++ b/portal-ui/build/static/css/9807.dd80c1b6.chunk.css @@ -0,0 +1,2 @@ +.cm-s-dracula.CodeMirror,.cm-s-dracula .CodeMirror-gutters{background-color:#282a36!important;border:none;color:#f8f8f2!important}.cm-s-dracula .CodeMirror-gutters{color:#282a36}.cm-s-dracula .CodeMirror-cursor{border-left:thin solid #f8f8f0}.cm-s-dracula .CodeMirror-linenumber{color:#6d8a88}.cm-s-dracula .CodeMirror-selected{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::selection,.cm-s-dracula .CodeMirror-line>span::selection,.cm-s-dracula .CodeMirror-line>span>span::selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::-moz-selection,.cm-s-dracula .CodeMirror-line>span::-moz-selection,.cm-s-dracula .CodeMirror-line>span>span::-moz-selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula span.cm-comment{color:#6272a4}.cm-s-dracula span.cm-string,.cm-s-dracula span.cm-string-2{color:#f1fa8c}.cm-s-dracula span.cm-number{color:#bd93f9}.cm-s-dracula span.cm-variable{color:#50fa7b}.cm-s-dracula span.cm-variable-2{color:#fff}.cm-s-dracula span.cm-def{color:#50fa7b}.cm-s-dracula span.cm-keyword,.cm-s-dracula span.cm-operator{color:#ff79c6}.cm-s-dracula span.cm-atom{color:#bd93f9}.cm-s-dracula span.cm-meta{color:#f8f8f2}.cm-s-dracula span.cm-tag{color:#ff79c6}.cm-s-dracula span.cm-attribute,.cm-s-dracula span.cm-qualifier{color:#50fa7b}.cm-s-dracula span.cm-property{color:#66d9ef}.cm-s-dracula span.cm-builtin{color:#50fa7b}.cm-s-dracula span.cm-type,.cm-s-dracula span.cm-variable-3{color:#ffb86c}.cm-s-dracula .CodeMirror-activeline-background{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-matchingbracket{color:#fff!important;text-decoration:underline} +/*# sourceMappingURL=9807.dd80c1b6.chunk.css.map*/ \ No newline at end of file diff --git a/portal-ui/build/static/css/9807.dd80c1b6.chunk.css.map b/portal-ui/build/static/css/9807.dd80c1b6.chunk.css.map new file mode 100644 index 000000000..2a99a0b37 --- /dev/null +++ b/portal-ui/build/static/css/9807.dd80c1b6.chunk.css.map @@ -0,0 +1 @@ +{"version":3,"file":"static/css/9807.dd80c1b6.chunk.css","mappings":"AAUA,2DACE,kCAAoC,CAEpC,WAAY,CADZ,uBAEF,CACA,kCAAoC,aAAgB,CACpD,iCAAmC,8BAAiC,CACpE,qCAAuC,aAAgB,CACvD,mCAAqC,6BAAuC,CAC5E,6IAAuJ,6BAAuC,CAC9L,4JAAsK,6BAAuC,CAC7M,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAC/E,6BAA+B,aAAgB,CAC/C,+BAAiC,aAAgB,CACjD,iCAAmC,UAAc,CACjD,0BAA4B,aAAgB,CAE5C,6DAAgC,aAAgB,CAChD,2BAA6B,aAAgB,CAC7C,2BAA6B,aAAgB,CAC7C,0BAA4B,aAAgB,CAE5C,gEAAkC,aAAgB,CAClD,+BAAiC,aAAgB,CACjD,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAE/E,gDAAkD,6BAAmC,CACrF,0CAAwE,oBAAuB,CAAnD,yBAAqD","sources":["../node_modules/codemirror/theme/dracula.css"],"sourcesContent":["/*\n\n Name: dracula\n Author: Michael Kaminsky (http://github.com/mkaminsky11)\n\n Original dracula color scheme by Zeno Rocha (https://github.com/zenorocha/dracula-theme)\n\n*/\n\n\n.cm-s-dracula.CodeMirror, .cm-s-dracula .CodeMirror-gutters {\n background-color: #282a36 !important;\n color: #f8f8f2 !important;\n border: none;\n}\n.cm-s-dracula .CodeMirror-gutters { color: #282a36; }\n.cm-s-dracula .CodeMirror-cursor { border-left: solid thin #f8f8f0; }\n.cm-s-dracula .CodeMirror-linenumber { color: #6D8A88; }\n.cm-s-dracula .CodeMirror-selected { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::selection, .cm-s-dracula .CodeMirror-line > span::selection, .cm-s-dracula .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::-moz-selection, .cm-s-dracula .CodeMirror-line > span::-moz-selection, .cm-s-dracula .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula span.cm-comment { color: #6272a4; }\n.cm-s-dracula span.cm-string, .cm-s-dracula span.cm-string-2 { color: #f1fa8c; }\n.cm-s-dracula span.cm-number { color: #bd93f9; }\n.cm-s-dracula span.cm-variable { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-2 { color: white; }\n.cm-s-dracula span.cm-def { color: #50fa7b; }\n.cm-s-dracula span.cm-operator { color: #ff79c6; }\n.cm-s-dracula span.cm-keyword { color: #ff79c6; }\n.cm-s-dracula span.cm-atom { color: #bd93f9; }\n.cm-s-dracula span.cm-meta { color: #f8f8f2; }\n.cm-s-dracula span.cm-tag { color: #ff79c6; }\n.cm-s-dracula span.cm-attribute { color: #50fa7b; }\n.cm-s-dracula span.cm-qualifier { color: #50fa7b; }\n.cm-s-dracula span.cm-property { color: #66d9ef; }\n.cm-s-dracula span.cm-builtin { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-3, .cm-s-dracula span.cm-type { color: #ffb86c; }\n\n.cm-s-dracula .CodeMirror-activeline-background { background: rgba(255,255,255,0.1); }\n.cm-s-dracula .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/1056.369ba3ab.chunk.js b/portal-ui/build/static/js/1056.369ba3ab.chunk.js deleted file mode 100644 index 7de844eca..000000000 --- a/portal-ui/build/static/js/1056.369ba3ab.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1056,1140],{29316:function(e,t,n){n(50390);var r=n(6369),a=n(86509),s=n(4285),i=n(85615),o=n(62559);t.Z=(0,s.Z)((function(e){return(0,a.Z)({link:{display:"flex",alignItems:"center",textDecoration:"none",maxWidth:"300px",padding:"2rem 2rem 0rem 2rem",color:e.palette.primary.light,fontSize:".8rem","&:hover":{textDecoration:"underline"}},icon:{marginRight:".3rem",display:"flex",alignItems:"center",justifyContent:"center","& svg.min-icon":{width:12}}})}))((function(e){var t=e.to,n=e.label,a=e.classes,s=e.className,l=e.executeOnClick;return(0,o.jsxs)(r.rU,{to:t,className:"".concat(a.link," ").concat(s||""),onClick:function(){l&&l()},children:[(0,o.jsx)("div",{className:a.icon,children:(0,o.jsx)(i.xN,{})}),(0,o.jsx)("div",{className:a.label,children:n})]})}))},39080:function(e,t,n){n.r(t),n.d(t,{default:function(){return Z}});var r=n(18489),a=n(35531),s=n(50390),i=n(38342),o=n.n(i),l=n(86509),c=n(4285),u=n(66946),d=n(76352),m=n(25594),g=n(58217),p=n(65771),f=n(70758),h=n(33034),x=n.n(h),v=n(85615),y=n(72462),S=n(62559),C=(0,c.Z)((function(e){return(0,l.Z)({container:{display:"flex",flexFlow:"column",padding:"20px 0 8px 0"},inputWithCopy:{"& .MuiInputBase-root ":{width:"100%",background:"#FBFAFA","& .MuiInputBase-input":{height:".8rem"},"& .MuiInputAdornment-positionEnd":{marginRight:".5rem","& .MuiButtonBase-root":{height:"2rem"}}},"& .MuiButtonBase-root .min-icon":{width:".8rem",height:".8rem"}},inputLabel:(0,r.Z)((0,r.Z)({},y.YI.inputLabel),{},{fontSize:".8rem"})})}))((function(e){var t=e.label,n=void 0===t?"":t,r=e.value,a=void 0===r?"":r,s=e.classes,i=void 0===s?{}:s;return(0,S.jsxs)("div",{className:i.container,children:[(0,S.jsxs)("div",{className:i.inputLabel,children:[n,":"]}),(0,S.jsx)("div",{className:i.inputWithCopy,children:(0,S.jsx)(g.Z,{value:a,readOnly:!0,endAdornment:(0,S.jsx)(p.Z,{position:"end",children:(0,S.jsx)(x(),{text:a,children:(0,S.jsx)(f.Z,{"aria-label":"copy",tooltip:"Copy",onClick:function(){},onMouseDown:function(){},edge:"end",children:(0,S.jsx)(v.TI,{})})})})})})]})})),j=n(47424),Z=(0,c.Z)((function(e){return(0,l.Z)({warningBlock:{color:"red",fontSize:".85rem",margin:".5rem 0 .5rem 0",display:"flex",alignItems:"center","& svg ":{marginRight:".3rem",height:16,width:16}},credentialTitle:{padding:".8rem 0 0 0",fontWeight:600,fontSize:".9rem"},buttonContainer:{textAlign:"right",marginTop:"1rem"},credentialsPanel:{overflowY:"auto",maxHeight:350},promptTitle:{display:"flex",alignItems:"center"},buttonSpacer:{marginRight:".9rem"},promptIcon:{marginRight:".1rem",display:"flex",alignItems:"center",height:"2rem",width:"2rem"}})}))((function(e){var t=e.classes,n=e.newServiceAccount,i=e.open,l=e.closeModal,c=e.entity;if(!n)return null;var g=o()(n,"console",null),p=o()(n,"idp",!1);return(0,S.jsx)(d.Z,{modalOpen:i,onClose:function(){l()},title:(0,S.jsx)("div",{className:t.promptTitle,children:(0,S.jsxs)("div",{children:["New ",c," Created"]})}),titleIcon:(0,S.jsx)(v.tV,{}),children:(0,S.jsxs)(m.ZP,{container:!0,children:[(0,S.jsxs)(m.ZP,{item:!0,xs:12,className:t.formScrollable,children:["A new ",c," has been created with the following details:",!p&&g&&(0,S.jsx)(s.Fragment,{children:(0,S.jsxs)(m.ZP,{item:!0,xs:12,className:t.credentialsPanel,children:[(0,S.jsx)("div",{className:t.credentialTitle,children:"Console Credentials"}),Array.isArray(g)&&g.map((function(e,t){return(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(C,{label:"Access Key",value:e.accessKey}),(0,S.jsx)(C,{label:"Secret Key",value:e.secretKey})]})})),!Array.isArray(g)&&(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(C,{label:"Access Key",value:g.accessKey}),(0,S.jsx)(C,{label:"Secret Key",value:g.secretKey})]})]})}),p?(0,S.jsx)("div",{className:t.warningBlock,children:"Please Login via the configured external identity provider."}):(0,S.jsxs)("div",{className:t.warningBlock,children:[(0,S.jsx)(j.Z,{}),(0,S.jsx)("span",{children:"Write these down, as this is the only time the secret will be displayed."})]})]}),(0,S.jsxs)(m.ZP,{item:!0,xs:12,className:t.buttonContainer,children:[(0,S.jsx)(u.Z,{id:"done-button",variant:"outlined",className:t.buttonSpacer,onClick:function(){l()},color:"primary",children:"Done"}),!p&&(0,S.jsx)(u.Z,{id:"download-button",onClick:function(){var e={};if(g)if(Array.isArray(g)){var t=g.map((function(e){return{url:e.url,access_key:e.accessKey,secret_key:e.secretKey,api:"s3v4",path:"auto"}}));e={console:(0,a.Z)(t)}}else e={console:[{url:g.url,access_key:g.accessKey,secret_key:g.secretKey,api:"s3v4",path:"auto"}]};!function(e,t){var n=document.createElement("a");n.setAttribute("href","data:text/plain;charset=utf-8,"+encodeURIComponent(t)),n.setAttribute("download",e),n.style.display="none",document.body.appendChild(n),n.click(),document.body.removeChild(n)}("credentials.json",JSON.stringify((0,r.Z)({},e)))},endIcon:(0,S.jsx)(v._8,{}),variant:"contained",color:"primary",children:"Download"})]})]})})}))},82461:function(e,t,n){n.d(t,{Z:function(){return S}});var r=n(23430),a=n(18489),s=n(50390),i=n(38342),o=n.n(i),l=n(25594),c=n(36554),u=n(94187),d=n(95467),m=n(46529),g=n(94258),p=n(86509),f=n(4285),h=n(72462),x=n(97538),v=n(82981),y=n(62559),S=(0,f.Z)((function(e){return(0,p.Z)((0,a.Z)((0,a.Z)((0,a.Z)((0,a.Z)({},h.YI),h.Hr),{},{valueString:{maxWidth:350,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",marginTop:2},fileInputField:{margin:"13px 0","@media (max-width: 900px)":{flexFlow:"column"}}},h.bV),{},{inputLabel:(0,a.Z)((0,a.Z)({},h.YI.inputLabel),{},{fontWeight:"normal"}),textBoxContainer:(0,a.Z)((0,a.Z)({},h.YI.textBoxContainer),{},{maxWidth:"100%",border:"1px solid #eaeaea",paddingLeft:"15px"})}))}))((function(e){var t=e.label,n=e.classes,a=e.onChange,i=e.id,p=e.name,f=e.disabled,h=void 0!==f&&f,S=e.tooltip,C=void 0===S?"":S,j=e.required,Z=e.error,_=void 0===Z?"":Z,b=e.accept,P=void 0===b?"":b,N=e.value,I=void 0===N?"":N,A=(0,s.useState)(!1),T=(0,r.Z)(A,2),k=T[0],R=T[1];return(0,y.jsx)(s.Fragment,{children:(0,y.jsxs)(l.ZP,{item:!0,xs:12,className:"".concat(n.fileInputField," ").concat(n.fieldBottom," ").concat(n.fieldContainer," ").concat(""!==_?n.errorInField:""),children:[""!==t&&(0,y.jsxs)(c.Z,{htmlFor:i,className:"".concat(""!==_?n.fieldLabelError:""," ").concat(n.inputLabel),children:[(0,y.jsxs)("span",{children:[t,j?"*":""]}),""!==C&&(0,y.jsx)("div",{className:n.tooltipContainer,children:(0,y.jsx)(u.Z,{title:C,placement:"top-start",children:(0,y.jsx)("div",{className:n.tooltip,children:(0,y.jsx)(x.Z,{})})})})]}),k||""===I?(0,y.jsxs)("div",{className:n.textBoxContainer,children:[(0,y.jsx)("input",{type:"file",name:p,onChange:function(e){var t=o()(e,"target.files[0].name","");!function(e,t){var n=e.target.files[0],r=new FileReader;r.readAsDataURL(n),r.onload=function(){var e=r.result;if(e){var n=e.toString().split("base64,");2===n.length&&t(n[1])}}}(e,(function(e){a(e,t)}))},accept:P,required:j,disabled:h,className:n.fileInputField}),""!==I&&(0,y.jsx)(d.Z,{color:"primary","aria-label":"upload picture",component:"span",onClick:function(){R(!1)},disableRipple:!1,disableFocusRipple:!1,size:"small",children:(0,y.jsx)(g.Z,{})}),""!==_&&(0,y.jsx)(v.Z,{errorMessage:_})]}):(0,y.jsxs)("div",{className:n.fileReselect,children:[(0,y.jsx)("div",{className:n.valueString,children:I}),(0,y.jsx)(d.Z,{color:"primary","aria-label":"upload picture",component:"span",onClick:function(){R(!0)},disableRipple:!1,disableFocusRipple:!1,size:"small",children:(0,y.jsx)(m.Z,{})})]})]})})}))},25534:function(e,t,n){var r=n(18489),a=(n(50390),n(25594)),s=n(86509),i=n(4285),o=n(72462),l=n(62559);t.Z=(0,i.Z)((function(e){return(0,s.Z)((0,r.Z)({},o.Bw))}))((function(e){var t=e.classes,n=e.className,r=void 0===n?"":n,s=e.children;return(0,l.jsx)("div",{className:t.contentSpacer,children:(0,l.jsx)(a.ZP,{container:!0,children:(0,l.jsx)(a.ZP,{item:!0,xs:12,className:r,children:s})})})}))},1056:function(e,t,n){n.r(t),n.d(t,{default:function(){return we}});var r,a,s=n(23430),i=n(18489),o=n(50390),l=n(38342),c=n.n(l),u=n(34424),d=n(25594),m=n(81378),g=n(86509),p=n(4285),f=n(72462),h=n(30324),x=n(28948),v=n(76295),y=n(44149),S=n(93127),C=n(39080),j=n(46864),Z=n(35531),_=n(46981),b=n(10369),P=n(84201),N=n(92440),I=n(66964),A=n(67754),T=n(1365),k=n(62559),R=(0,u.$j)((function(e){return{storageClasses:e.tenants.createTenant.storageClasses,customImage:e.tenants.createTenant.fields.configure.customImage,imageName:e.tenants.createTenant.fields.configure.imageName,customDockerhub:e.tenants.createTenant.fields.configure.customDockerhub,imageRegistry:e.tenants.createTenant.fields.configure.imageRegistry,imageRegistryUsername:e.tenants.createTenant.fields.configure.imageRegistryUsername,imageRegistryPassword:e.tenants.createTenant.fields.configure.imageRegistryPassword,exposeMinIO:e.tenants.createTenant.fields.configure.exposeMinIO,exposeConsole:e.tenants.createTenant.fields.configure.exposeConsole,prometheusCustom:e.tenants.createTenant.fields.configure.prometheusCustom,tenantCustom:e.tenants.createTenant.fields.configure.tenantCustom,logSearchCustom:e.tenants.createTenant.fields.configure.logSearchCustom,logSearchVolumeSize:e.tenants.createTenant.fields.configure.logSearchVolumeSize,logSearchSizeFactor:e.tenants.createTenant.fields.configure.logSearchSizeFactor,prometheusVolumeSize:e.tenants.createTenant.fields.configure.prometheusVolumeSize,prometheusSizeFactor:e.tenants.createTenant.fields.configure.prometheusSizeFactor,logSearchSelectedStorageClass:e.tenants.createTenant.fields.configure.logSearchSelectedStorageClass,logSearchImage:e.tenants.createTenant.fields.configure.logSearchImage,kesImage:e.tenants.createTenant.fields.configure.kesImage,logSearchPostgresImage:e.tenants.createTenant.fields.configure.logSearchPostgresImage,logSearchPostgresInitImage:e.tenants.createTenant.fields.configure.logSearchPostgresInitImage,prometheusSelectedStorageClass:e.tenants.createTenant.fields.configure.prometheusSelectedStorageClass,prometheusImage:e.tenants.createTenant.fields.configure.prometheusImage,prometheusSidecarImage:e.tenants.createTenant.fields.configure.prometheusSidecarImage,prometheusInitImage:e.tenants.createTenant.fields.configure.prometheusInitImage,selectedStorageClass:e.tenants.createTenant.fields.nameTenant.selectedStorageClass,tenantSecurityContext:e.tenants.createTenant.fields.configure.tenantSecurityContext,logSearchSecurityContext:e.tenants.createTenant.fields.configure.logSearchSecurityContext,logSearchPostgresSecurityContext:e.tenants.createTenant.fields.configure.logSearchPostgresSecurityContext,prometheusSecurityContext:e.tenants.createTenant.fields.configure.prometheusSecurityContext}}),{updateAddField:j.HM,isPageValid:j.NO}),z=(0,p.Z)((function(e){return(0,g.Z)((0,i.Z)((0,i.Z)({configSectionItem:{marginRight:15,"& .multiContainer":{border:"1px solid red"}},tenantCustomizationFields:{marginLeft:30,width:"88%",margin:"auto"},containerItem:{marginRight:15},fieldGroup:(0,i.Z)((0,i.Z)({},f.QV.fieldGroup),{},{paddingTop:15,marginBottom:25}),responsiveSectionItem:{"@media (max-width: 900px)":{flexFlow:"column",alignItems:"flex-start","& div > div":{marginBottom:5,marginRight:0}}},logSearchCustomFields:{marginLeft:20,padding:10,width:"90%",margin:"auto"},fieldSpaceTop:{marginTop:15},prometheusCustomFields:{marginLeft:20,padding:10,width:"90%",margin:"auto"}},f.oO),f.AK))}))(R((function(e){var t=e.classes,n=e.storageClasses,r=e.customImage,a=e.imageName,l=e.customDockerhub,c=e.imageRegistry,u=e.imageRegistryUsername,m=e.imageRegistryPassword,g=e.exposeMinIO,p=e.exposeConsole,f=e.prometheusCustom,h=e.tenantCustom,x=e.logSearchCustom,v=e.logSearchVolumeSize,y=(e.logSearchSizeFactor,e.logSearchImage),S=e.kesImage,C=e.logSearchPostgresImage,j=e.logSearchPostgresInitImage,R=e.prometheusVolumeSize,z=(e.prometheusSizeFactor,e.logSearchSelectedStorageClass),w=e.prometheusSelectedStorageClass,D=e.prometheusImage,F=e.prometheusSidecarImage,E=e.prometheusInitImage,U=e.updateAddField,K=e.isPageValid,G=e.selectedStorageClass,q=e.tenantSecurityContext,L=e.logSearchSecurityContext,M=e.logSearchPostgresSecurityContext,V=e.prometheusSecurityContext,O=(0,o.useState)({}),B=(0,s.Z)(O,2),$=B[0],W=B[1],H=[{label:"Default",value:"default"}].concat((0,Z.Z)(n)),Y=(0,o.useCallback)((function(e,t){U("configure",e,t)}),[U]);(0,o.useEffect)((function(){var e=[];h&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"tenant_securityContext_runAsUser",required:!0,value:q.runAsUser,customValidation:""===q.runAsUser||parseInt(q.runAsUser)<0,customValidationMessage:"runAsUser must be present and be 0 or more"},{fieldKey:"tenant_securityContext_runAsGroup",required:!0,value:q.runAsGroup,customValidation:""===q.runAsGroup||parseInt(q.runAsGroup)<0,customValidationMessage:"runAsGroup must be present and be 0 or more"},{fieldKey:"tenant_securityContext_fsGroup",required:!0,value:q.fsGroup,customValidation:""===q.fsGroup||parseInt(q.fsGroup)<0,customValidationMessage:"fsGroup must be present and be 0 or more"}])),f&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"prometheus_storage_class",required:!0,value:w,customValidation:""===w,customValidationMessage:"Field cannot be empty"},{fieldKey:"prometheus_volume_size",required:!0,value:R,customValidation:""===R||parseInt(R)<=0,customValidationMessage:"Volume size must be present and be greater than 0"},{fieldKey:"prometheus_securityContext_runAsUser",required:!0,value:V.runAsUser,customValidation:""===V.runAsUser||parseInt(V.runAsUser)<0,customValidationMessage:"runAsUser must be present and be 0 or more"},{fieldKey:"prometheus_securityContext_runAsGroup",required:!0,value:V.runAsGroup,customValidation:""===V.runAsGroup||parseInt(V.runAsGroup)<0,customValidationMessage:"runAsGroup must be present and be 0 or more"},{fieldKey:"prometheus_securityContext_fsGroup",required:!0,value:V.fsGroup,customValidation:""===V.fsGroup||parseInt(V.fsGroup)<0,customValidationMessage:"fsGroup must be present and be 0 or more"}])),x&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"log_search_storage_class",required:!0,value:z,customValidation:""===z,customValidationMessage:"Field cannot be empty"},{fieldKey:"log_search_volume_size",required:!0,value:v,customValidation:""===v||parseInt(v)<=0,customValidationMessage:"Volume size must be present and be greatter than 0"},{fieldKey:"logSearch_securityContext_runAsUser",required:!0,value:L.runAsUser,customValidation:""===L.runAsUser||parseInt(L.runAsUser)<0,customValidationMessage:"runAsUser must be present and be 0 or more"},{fieldKey:"logSearch_securityContext_runAsGroup",required:!0,value:L.runAsGroup,customValidation:""===L.runAsGroup||parseInt(L.runAsGroup)<0,customValidationMessage:"runAsGroup must be present and be 0 or more"},{fieldKey:"logSearch_securityContext_fsGroup",required:!0,value:L.fsGroup,customValidation:""===L.fsGroup||parseInt(L.fsGroup)<0,customValidationMessage:"fsGroup must be present and be 0 or more"},{fieldKey:"postgres_securityContext_runAsUser",required:!0,value:M.runAsUser,customValidation:""===M.runAsUser||parseInt(M.runAsUser)<0,customValidationMessage:"runAsUser must be present and be 0 or more"},{fieldKey:"postgres_securityContext_runAsGroup",required:!0,value:V.runAsGroup,customValidation:""===M.runAsGroup||parseInt(M.runAsGroup)<0,customValidationMessage:"runAsGroup must be present and be 0 or more"},{fieldKey:"postgres_securityContext_fsGroup",required:!0,value:M.fsGroup,customValidation:""===M.fsGroup||parseInt(M.fsGroup)<0,customValidationMessage:"fsGroup must be present and be 0 or more"}])),r&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"image",required:!1,value:a,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'minio/minio:VERSION'"},{fieldKey:"logSearchImage",required:!1,value:y,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'minio/logsearchapi:VERSION'"},{fieldKey:"kesImage",required:!1,value:S,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'minio/kes:VERSION'"},{fieldKey:"logSearchPostgresImage",required:!1,value:C,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'library/postgres:VERSION'"},{fieldKey:"logSearchPostgresInitImage",required:!1,value:j,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'library/busybox:VERSION'"},{fieldKey:"prometheusImage",required:!1,value:D,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'minio/prometheus:VERSION'"},{fieldKey:"prometheusSidecarImage",required:!1,value:F,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'project/container:VERSION'"},{fieldKey:"prometheusInitImage",required:!1,value:E,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'library/busybox:VERSION'"}]),l&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"registry",required:!0,value:c},{fieldKey:"registryUsername",required:!0,value:u},{fieldKey:"registryPassword",required:!0,value:m}])));var t=(0,P.R)(e);K("configure",0===Object.keys(t).length),W(t)}),[r,a,y,S,C,j,D,F,E,l,c,u,m,K,f,h,x,w,R,z,v,q,L,M,V]),(0,o.useEffect)((function(){n.length>0&&(0===n.filter((function(e){return e.value===w})).length&&Y("prometheusSelectedStorageClass","default"),0===n.filter((function(e){return e.value===z})).length&&Y("logSearchSelectedStorageClass","default"))}),[z,w,G,n,Y]);var Q=function(e){W((0,b.h)($,e))};return(0,k.jsxs)(_.Z,{className:t.paperWrapper,children:[(0,k.jsxs)("div",{className:t.headerElement,children:[(0,k.jsx)("h3",{className:t.h3Section,children:"Configure"}),(0,k.jsx)("span",{className:t.descriptionText,children:"Basic configurations for tenant management"})]}),(0,k.jsxs)("div",{className:t.headerElement,children:[(0,k.jsx)("h3",{className:t.h3Section,children:"Expose Services"}),(0,k.jsx)("span",{className:t.descriptionText,children:"Whether the tenant's services should request an external IP."})]}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.configSectionItem,children:(0,k.jsx)(N.Z,{value:"expose_minio",id:"expose_minio",name:"expose_minio",checked:g,onChange:function(e){var t=e.target.checked;Y("exposeMinIO",t)},label:"Expose MiniO Service"})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.configSectionItem,children:(0,k.jsx)(N.Z,{value:"expose_console",id:"expose_console",name:"expose_console",checked:p,onChange:function(e){var t=e.target.checked;Y("exposeConsole",t)},label:"Expose Console Service"})}),(0,k.jsxs)("div",{className:t.headerElement,children:[(0,k.jsx)("h3",{className:t.h3Section,children:"Additional Configurations"}),(0,k.jsx)("span",{className:t.descriptionText,children:"Configure SecurityContext, Storage Classes & Storage size for Log Search, Prometheus add-ons and your Tenant"})]}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.configSectionItem,children:(0,k.jsx)(N.Z,{value:"tenantConfig",id:"tenant_configuration",name:"tenant_configuration",checked:h,onChange:function(e){var t=e.target.checked;Y("tenantCustom",t)},label:"Override Tenant defaults"})}),h&&(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.tenantCustomizationFields,children:(0,k.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,k.jsx)("legend",{className:t.descriptionText,children:"SecurityContext for MinIO"}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:"".concat(t.configSectionItem),children:(0,k.jsxs)("div",{className:"".concat(t.multiContainer," ").concat(t.responsiveSectionItem),children:[(0,k.jsx)("div",{className:t.containerItem,children:(0,k.jsx)(I.Z,{type:"number",id:"tenant_securityContext_runAsUser",name:"tenant_securityContext_runAsUser",onChange:function(e){Y("tenantSecurityContext",(0,i.Z)((0,i.Z)({},q),{},{runAsUser:e.target.value})),Q("tenant_securityContext_runAsUser")},label:"Run As User",value:q.runAsUser,required:!0,error:$.tenant_securityContext_runAsUser||"",min:"0"})}),(0,k.jsx)("div",{className:t.containerItem,children:(0,k.jsx)(I.Z,{type:"number",id:"tenant_securityContext_runAsGroup",name:"tenant_securityContext_runAsGroup",onChange:function(e){Y("tenantSecurityContext",(0,i.Z)((0,i.Z)({},q),{},{runAsGroup:e.target.value})),Q("tenant_securityContext_runAsGroup")},label:"Run As Group",value:q.runAsGroup,required:!0,error:$.tenant_securityContext_runAsGroup||"",min:"0"})}),(0,k.jsx)("div",{className:t.containerItem,children:(0,k.jsx)(I.Z,{type:"number",id:"tenant_securityContext_fsGroup",name:"tenant_securityContext_fsGroup",onChange:function(e){Y("tenantSecurityContext",(0,i.Z)((0,i.Z)({},q),{},{fsGroup:e.target.value})),Q("tenant_securityContext_fsGroup")},label:"FsGroup",value:q.fsGroup,required:!0,error:$.tenant_securityContext_fsGroup||"",min:"0"})})]})}),(0,k.jsx)("br",{}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.configSectionItem,children:(0,k.jsx)("div",{className:t.multiContainer,children:(0,k.jsx)(N.Z,{value:"tenantSecurityContextRunAsNonRoot",id:"tenant_securityContext_runAsNonRoot",name:"tenant_securityContext_runAsNonRoot",checked:q.runAsNonRoot,onChange:function(e){var t=e.target.checked;Y("tenantSecurityContext",(0,i.Z)((0,i.Z)({},q),{},{runAsNonRoot:t}))},label:"Do not run as Root"})})})]})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.configSectionItem,children:(0,k.jsx)(N.Z,{value:"logSearchConfig",id:"log_search_configuration",name:"log_search_configuration",checked:x,onChange:function(e){var t=e.target.checked;Y("logSearchCustom",t)},label:"Override Log Search defaults"})}),x&&(0,k.jsxs)(d.ZP,{xs:12,className:t.logSearchCustomFields,children:[(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsx)(A.Z,{id:"log_search_storage_class",name:"log_search_storage_class",onChange:function(e){Y("logSearchSelectedStorageClass",e.target.value)},label:"Log Search Storage Class",value:z,options:H,disabled:H.length<1})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsx)("div",{className:t.multiContainer,children:(0,k.jsx)(I.Z,{type:"number",id:"log_search_volume_size",name:"log_search_volume_size",onChange:function(e){Y("logSearchVolumeSize",e.target.value),Q("log_search_volume_size")},label:"Storage Size",overlayObject:(0,k.jsx)(T.Z,{id:"size-unit",onUnitChange:function(){},unitSelected:"Gi",unitsList:[{label:"Gi",value:"Gi"}],disabled:!0}),value:v,required:!0,error:$.log_search_volume_size||"",min:"0"})})}),(0,k.jsxs)("fieldset",{className:"".concat(t.fieldGroup," ").concat(t.fieldSpaceTop),children:[(0,k.jsx)("legend",{className:t.descriptionText,children:"SecurityContext for LogSearch"}),(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsxs)("div",{className:"".concat(t.multiContainer," ").concat(t.responsiveSectionItem),children:[(0,k.jsx)("div",{className:t.configSectionItem,children:(0,k.jsx)(I.Z,{type:"number",id:"logSearch_securityContext_runAsUser",name:"logSearch_securityContext_runAsUser",onChange:function(e){Y("logSearchSecurityContext",(0,i.Z)((0,i.Z)({},L),{},{runAsUser:e.target.value})),Q("logSearch_securityContext_runAsUser")},label:"Run As User",value:L.runAsUser,required:!0,error:$.logSearch_securityContext_runAsUser||"",min:"0"})}),(0,k.jsx)("div",{className:t.configSectionItem,children:(0,k.jsx)(I.Z,{type:"number",id:"logSearch_securityContext_runAsGroup",name:"logSearch_securityContext_runAsGroup",onChange:function(e){Y("logSearchSecurityContext",(0,i.Z)((0,i.Z)({},L),{},{runAsGroup:e.target.value})),Q("logSearch_securityContext_runAsGroup")},label:"Run As Group",value:L.runAsGroup,required:!0,error:$.logSearch_securityContext_runAsGroup||"",min:"0"})}),(0,k.jsx)("div",{className:t.configSectionItem,children:(0,k.jsx)(I.Z,{type:"number",id:"logSearch_securityContext_fsGroup",name:"logSearch_securityContext_fsGroup",onChange:function(e){Y("logSearchSecurityContext",(0,i.Z)((0,i.Z)({},L),{},{fsGroup:e.target.value})),Q("logSearch_securityContext_fsGroup")},label:"FsGroup",value:L.fsGroup,required:!0,error:$.logSearch_securityContext_fsGroup||"",min:"0"})})]})}),(0,k.jsx)("br",{}),(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsx)("div",{className:t.multiContainer,children:(0,k.jsx)(N.Z,{value:"logSearchSecurityContextRunAsNonRoot",id:"logSearch_securityContext_runAsNonRoot",name:"logSearch_securityContext_runAsNonRoot",checked:L.runAsNonRoot,onChange:function(e){var t=e.target.checked;Y("logSearchSecurityContext",(0,i.Z)((0,i.Z)({},L),{},{runAsNonRoot:t}))},label:"Do not run as Root"})})})]}),(0,k.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,k.jsx)("legend",{className:t.descriptionText,children:"SecurityContext for PostgreSQL"}),(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsxs)("div",{className:"".concat(t.multiContainer," ").concat(t.responsiveSectionItem),children:[(0,k.jsx)("div",{className:t.configSectionItem,children:(0,k.jsx)(I.Z,{type:"number",id:"postgres_securityContext_runAsUser",name:"postgres_securityContext_runAsUser",onChange:function(e){Y("logSearchPostgresSecurityContext",(0,i.Z)((0,i.Z)({},M),{},{runAsUser:e.target.value})),Q("postgres_securityContext_runAsUser")},label:"Run As User",value:M.runAsUser,required:!0,error:$.postgres_securityContext_runAsUser||"",min:"0"})}),(0,k.jsx)("div",{className:t.configSectionItem,children:(0,k.jsx)(I.Z,{type:"number",id:"postgres_securityContext_runAsGroup",name:"postgres_securityContext_runAsGroup",onChange:function(e){Y("logSearchPostgresSecurityContext",(0,i.Z)((0,i.Z)({},M),{},{runAsGroup:e.target.value})),Q("postgres_securityContext_runAsGroup")},label:"Run As Group",value:M.runAsGroup,required:!0,error:$.postgres_securityContext_runAsGroup||"",min:"0"})}),(0,k.jsx)("div",{className:t.configSectionItem,children:(0,k.jsx)(I.Z,{type:"number",id:"postgres_securityContext_fsGroup",name:"postgres_securityContext_fsGroup",onChange:function(e){Y("logSearchPostgresSecurityContext",(0,i.Z)((0,i.Z)({},M),{},{fsGroup:e.target.value})),Q("postgres_securityContext_fsGroup")},label:"FsGroup",value:M.fsGroup,required:!0,error:$.postgres_securityContext_fsGroup||"",min:"0"})})]})}),(0,k.jsx)("br",{}),(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsx)("div",{className:t.multiContainer,children:(0,k.jsx)(N.Z,{value:"postgresSecurityContextRunAsNonRoot",id:"postgres_securityContext_runAsNonRoot",name:"postgres_securityContext_runAsNonRoot",checked:M.runAsNonRoot,onChange:function(e){var t=e.target.checked;Y("logSearchPostgresSecurityContext",(0,i.Z)((0,i.Z)({},M),{},{runAsNonRoot:t}))},label:"Do not run as Root"})})})]})]}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.configSectionItem,children:(0,k.jsx)(N.Z,{value:"prometheusConfig",id:"prometheus_configuration",name:"prometheus_configuration",checked:f,onChange:function(e){var t=e.target.checked;Y("prometheusCustom",t)},label:"Override Prometheus defaults"})}),f&&(0,k.jsxs)(d.ZP,{xs:12,className:t.prometheusCustomFields,children:[(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsx)(A.Z,{id:"prometheus_storage_class",name:"prometheus_storage_class",onChange:function(e){Y("prometheusSelectedStorageClass",e.target.value)},label:"Prometheus Storage Class",value:w,options:H,disabled:H.length<1})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsx)("div",{className:t.multiContainer,children:(0,k.jsx)(I.Z,{type:"number",id:"prometheus_volume_size",name:"prometheus_volume_size",onChange:function(e){Y("prometheusVolumeSize",e.target.value),Q("prometheus_volume_size")},label:"Storage Size",overlayObject:(0,k.jsx)(T.Z,{id:"size-unit",onUnitChange:function(){},unitSelected:"Gi",unitsList:[{label:"Gi",value:"Gi"}],disabled:!0}),value:R,required:!0,error:$.prometheus_volume_size||"",min:"0"})})}),(0,k.jsxs)("fieldset",{className:"".concat(t.fieldGroup," ").concat(t.fieldSpaceTop),children:[(0,k.jsx)("legend",{className:t.descriptionText,children:"SecurityContext for Prometheus"}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.configSectionItem,children:(0,k.jsxs)("div",{className:"".concat(t.multiContainer," ").concat(t.responsiveSectionItem),children:[(0,k.jsx)("div",{className:t.configSectionItem,children:(0,k.jsx)(I.Z,{type:"number",id:"prometheus_securityContext_runAsUser",name:"prometheus_securityContext_runAsUser",onChange:function(e){Y("prometheusSecurityContext",(0,i.Z)((0,i.Z)({},V),{},{runAsUser:e.target.value})),Q("prometheus_securityContext_runAsUser")},label:"Run As User",value:V.runAsUser,required:!0,error:$.prometheus_securityContext_runAsUser||"",min:"0"})}),(0,k.jsx)("div",{className:t.configSectionItem,children:(0,k.jsx)(I.Z,{type:"number",id:"prometheus_securityContext_runAsGroup",name:"prometheus_securityContext_runAsGroup",onChange:function(e){Y("prometheusSecurityContext",(0,i.Z)((0,i.Z)({},V),{},{runAsGroup:e.target.value})),Q("prometheus_securityContext_runAsGroup")},label:"Run As Group",value:V.runAsGroup,required:!0,error:$.prometheus_securityContext_runAsGroup||"",min:"0"})}),(0,k.jsx)("div",{className:t.configSectionItem,children:(0,k.jsx)(I.Z,{type:"number",id:"prometheus_securityContext_fsGroup",name:"prometheus_securityContext_fsGroup",onChange:function(e){Y("prometheusSecurityContext",(0,i.Z)((0,i.Z)({},V),{},{fsGroup:e.target.value})),Q("prometheus_securityContext_fsGroup")},label:"FsGroup",value:V.fsGroup,required:!0,error:$.prometheus_securityContext_fsGroup||"",min:"0"})})]})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.configSectionItem,children:(0,k.jsx)("div",{className:"".concat(t.multiContainer," ").concat(t.fieldSpaceTop),children:(0,k.jsx)(N.Z,{value:"prometheusSecurityContextRunAsNonRoot",id:"prometheus_securityContext_runAsNonRoot",name:"prometheus_securityContext_runAsNonRoot",checked:V.runAsNonRoot,onChange:function(e){var t=e.target.checked;Y("prometheusSecurityContext",(0,i.Z)((0,i.Z)({},V),{},{runAsNonRoot:t}))},label:"Do not run as Root"})})})]})]})]})}))),w=n(94187),D=n(95467),F=n(35477),E=n(94759),U=n(43615),K=n(27207),G=n(96152),q=n(35150),L=(0,u.$j)((function(e){return{idpSelection:e.tenants.createTenant.fields.identityProvider.idpSelection,accessKeys:e.tenants.createTenant.fields.identityProvider.accessKeys,secretKeys:e.tenants.createTenant.fields.identityProvider.secretKeys,openIDConfigurationURL:e.tenants.createTenant.fields.identityProvider.openIDConfigurationURL,openIDClientID:e.tenants.createTenant.fields.identityProvider.openIDClientID,openIDSecretID:e.tenants.createTenant.fields.identityProvider.openIDSecretID,openIDCallbackURL:e.tenants.createTenant.fields.identityProvider.openIDCallbackURL,openIDClaimName:e.tenants.createTenant.fields.identityProvider.openIDClaimName,openIDScopes:e.tenants.createTenant.fields.identityProvider.openIDScopes,ADURL:e.tenants.createTenant.fields.identityProvider.ADURL,ADSkipTLS:e.tenants.createTenant.fields.identityProvider.ADSkipTLS,ADServerInsecure:e.tenants.createTenant.fields.identityProvider.ADServerInsecure,ADUserNameSearchFilter:e.tenants.createTenant.fields.identityProvider.ADUserNameSearchFilter,ADGroupSearchBaseDN:e.tenants.createTenant.fields.identityProvider.ADGroupSearchBaseDN,ADGroupSearchFilter:e.tenants.createTenant.fields.identityProvider.ADGroupSearchFilter,ADGroupNameAttribute:e.tenants.createTenant.fields.identityProvider.ADGroupNameAttribute,ADUserDNs:e.tenants.createTenant.fields.identityProvider.ADUserDNs,ADUserNameFormat:e.tenants.createTenant.fields.identityProvider.ADUserNameFormat,ADLookupBindDN:e.tenants.createTenant.fields.identityProvider.ADLookupBindDN,ADLookupBindPassword:e.tenants.createTenant.fields.identityProvider.ADLookupBindPassword,ADUserDNSearchBaseDN:e.tenants.createTenant.fields.identityProvider.ADUserDNSearchBaseDN,ADUserDNSearchFilter:e.tenants.createTenant.fields.identityProvider.ADUserDNSearchFilter,ADServerStartTLS:e.tenants.createTenant.fields.identityProvider.ADServerStartTLS}}),{updateAddField:j.HM,isPageValid:j.NO}),M=(0,p.Z)((function(e){return(0,g.Z)((0,i.Z)((0,i.Z)((0,i.Z)((0,i.Z)({shortened:{gridTemplateColumns:"auto auto 50px 50px",display:"grid",gridGap:15,marginBottom:10,"& input":{fontWeight:400}},buttonTray:{marginLeft:10,display:"flex",height:38,"& button":{background:"#EAEAEA"}},overlayAction:{marginLeft:10,"& svg":{maxWidth:15,maxHeight:15},"& button":{background:"#EAEAEA"}},protocolRadioOptions:{display:"flex",flexFlow:"column",marginBottom:10,"& label":{fontSize:14},"& div":{display:"flex",flexFlow:"column",alignItems:"baseline"}},adUserDnRows:{display:"flex"}},f.QV),f.DF),f.oO),f.AK))}))(L((function(e){var t=e.classes,n=e.idpSelection,r=e.accessKeys,a=e.secretKeys,i=e.openIDConfigurationURL,l=e.openIDClientID,c=e.openIDSecretID,u=e.openIDCallbackURL,m=e.openIDClaimName,g=e.openIDScopes,p=e.ADURL,f=e.ADSkipTLS,h=e.ADServerInsecure,x=e.ADUserNameSearchFilter,v=e.ADGroupSearchBaseDN,y=e.ADGroupSearchFilter,S=e.ADGroupNameAttribute,C=e.ADUserDNs,j=e.ADUserNameFormat,A=e.ADLookupBindDN,T=e.ADLookupBindPassword,R=e.ADUserDNSearchBaseDN,z=e.ADUserDNSearchFilter,L=e.ADServerStartTLS,M=e.updateAddField,V=e.isPageValid,O=(0,o.useState)({}),B=(0,s.Z)(O,2),$=B[0],W=B[1],H=(0,o.useCallback)((function(e,t){M("identityProvider",e,t)}),[M]),Y=function(e,t){var n=(0,Z.Z)(r);n[e]=t,H("accessKeys",n)},Q=function(e,t){var n=(0,Z.Z)(a);n[e]=t,H("secretKeys",n)},X=function(e,t){var n=(0,Z.Z)(C);n[e]=t,H("ADUserDNs",n)},J=function(e){W((0,b.h)($,e))};(0,o.useEffect)((function(){var e=[];if("Built-in"===n){e=(0,Z.Z)(e);for(var t=0;t1&&(r.splice(n,1),a.splice(n,1),Y(r.length-1,r[r.length-1]))},children:(0,k.jsx)(q.Z,{})})})}),(0,k.jsx)(w.Z,{title:"Randomize Credentials","aria-label":"add",children:(0,k.jsx)("div",{className:t.overlayAction,children:(0,k.jsx)(D.Z,{onClick:function(){Y(n,(0,b.z)(16)),Q(n,(0,b.z)(32))},size:"small",children:(0,k.jsx)(E.Z,{})})})})]})]})},"identityField-".concat(n.toString()))}))),"AD"===n&&(ee=C.map((function(e,n){return(0,k.jsx)(o.Fragment,{children:(0,k.jsxs)("div",{className:t.adUserDnRows,children:[(0,k.jsx)(I.Z,{id:"ad-userdn-".concat(n.toString()),label:"",placeholder:"",name:"ad-userdn-".concat(n.toString()),value:C[n],onChange:function(e){X(n,e.target.value),J("ad-userdn-".concat(n.toString()))},index:n,error:$["ad-userdn-".concat(n.toString())]||""},"csv-ad-userdn-".concat(n.toString())),(0,k.jsxs)("div",{className:t.buttonTray,children:[(0,k.jsx)(w.Z,{title:"Add User","aria-label":"add",children:(0,k.jsx)(D.Z,{size:"small",onClick:function(){C.push(""),X(C.length-1,"")},children:(0,k.jsx)(G.Z,{})})}),(0,k.jsx)(w.Z,{title:"Remove","aria-label":"add",children:(0,k.jsx)(D.Z,{size:"small",style:{marginLeft:16},onClick:function(){C.length>1&&(C.splice(n,1),Y(C.length-1,C[C.length-1]))},children:(0,k.jsx)(U.Z,{})})})]})]})},"identityField-".concat(n.toString()))}))),(0,k.jsxs)(_.Z,{className:t.paperWrapper,children:[(0,k.jsxs)("div",{className:t.headerElement,children:[(0,k.jsx)("h3",{className:t.h3Section,children:"Identity Provider"}),(0,k.jsx)("span",{className:t.descriptionText,children:"Access to the tenant can be controlled via an external Identity Manager."})]}),(0,k.jsxs)(d.ZP,{item:!0,xs:12,className:t.protocolRadioOptions,children:[(0,k.jsx)("label",{children:"Protocol"}),(0,k.jsx)(K.Z,{currentSelection:n,id:"idp-options",name:"idp-options",label:" ",onChange:function(e){H("idpSelection",e.target.value)},selectorOptions:[{label:"Built-in",value:"Built-in"},{label:"OpenID",value:"OpenID"},{label:"Active Directory",value:"AD"}]})]}),"Built-in"===n&&(0,k.jsxs)(o.Fragment,{children:["Add additional users",ee]}),"OpenID"===n&&(0,k.jsxs)(o.Fragment,{children:[(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"openID_CONFIGURATION_URL",name:"openID_CONFIGURATION_URL",onChange:function(e){H("openIDConfigurationURL",e.target.value),J("openID_CONFIGURATION_URL")},label:"Configuration URL",value:i,placeholder:"https://your-identity-provider.com/.well-known/openid-configuration",error:$.openID_CONFIGURATION_URL||"",required:!0})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"openID_clientID",name:"openID_clientID",onChange:function(e){H("openIDClientID",e.target.value),J("openID_clientID")},label:"Client ID",value:l,error:$.openID_clientID||"",required:!0})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"openID_secretID",name:"openID_secretID",onChange:function(e){H("openIDSecretID",e.target.value),J("openID_secretID")},label:"Secret ID",value:c,error:$.openID_secretID||"",required:!0})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"openID_callbackURL",name:"openID_callbackURL",onChange:function(e){H("openIDCallbackURL",e.target.value),J("openID_callbackURL")},label:"Callback URL",value:u,placeholder:"https://your-console-endpoint:9443/oauth_callback",error:$.openID_callbackURL||""})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"openID_claimName",name:"openID_claimName",onChange:function(e){H("openIDClaimName",e.target.value),J("openID_claimName")},label:"Claim Name",value:m,error:$.openID_claimName||"",required:!0})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"openID_scopes",name:"openID_scopes",onChange:function(e){H("openIDScopes",e.target.value),J("openID_scopes")},label:"Scopes",value:g})})]}),"AD"===n&&(0,k.jsxs)(o.Fragment,{children:[(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"AD_URL",name:"AD_URL",onChange:function(e){H("ADURL",e.target.value),J("AD_URL")},label:"LDAP Server Address",value:p,placeholder:"ldap-server:636",error:$.AD_URL||"",required:!0})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(N.Z,{value:"ad_skipTLS",id:"ad_skipTLS",name:"ad_skipTLS",checked:f,onChange:function(e){var t=e.target.checked;H("ADSkipTLS",t)},label:"Skip TLS Verification"})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(N.Z,{value:"ad_serverInsecure",id:"ad_serverInsecure",name:"ad_serverInsecure",checked:h,onChange:function(e){var t=e.target.checked;H("ADServerInsecure",t)},label:"Server Insecure"})}),h?(0,k.jsxs)(d.ZP,{item:!0,xs:12,children:[(0,k.jsx)(F.Z,{className:t.error,variant:"caption",display:"block",gutterBottom:!0,children:"Warning: All traffic with Active Directory will be unencrypted"}),(0,k.jsx)("br",{})]}):null,(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(N.Z,{value:"ad_serverStartTLS",id:"ad_serverStartTLS",name:"ad_serverStartTLS",checked:L,onChange:function(e){var t=e.target.checked;H("ADServerStartTLS",t)},label:"Start TLS connection to AD/LDAP server"})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"ad_userNameFormat",name:"ad_userNameFormat",onChange:function(e){H("ADUserNameFormat",e.target.value)},label:"Username Format",value:j,placeholder:"uid=%s,cn=accounts,dc=myldapserver,dc=com"})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"ad_userNameFilter",name:"ad_userNameFilter",onChange:function(e){H("ADUserNameSearchFilter",e.target.value)},label:"Username Search Filter",value:x,placeholder:"(|(objectclass=posixAccount)(uid=%s))"})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"ad_groupSearchBaseDN",name:"ad_groupSearchBaseDN",onChange:function(e){H("ADGroupSearchBaseDN",e.target.value)},label:"Group Search Base DN",value:v,placeholder:"ou=hwengg,dc=min,dc=io;ou=swengg,dc=min,dc=io"})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"ad_groupSearchFilter",name:"ad_groupSearchFilter",onChange:function(e){H("ADGroupSearchFilter",e.target.value)},label:"Group Search Filter",value:y,placeholder:"(&(objectclass=groupOfNames)(member=%s))"})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"ad_groupNameAttribute",name:"ad_groupNameAttribute",onChange:function(e){H("ADGroupNameAttribute",e.target.value)},label:"Group Name Attribute",value:S,placeholder:"cn"})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"ad_lookupBindDN",name:"ad_lookupBindDN",onChange:function(e){H("ADLookupBindDN",e.target.value)},label:"Lookup Bind DN",value:A,placeholder:"cn=admin,dc=min,dc=io"})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"ad_lookupBindPassword",name:"ad_lookupBindPassword",onChange:function(e){H("ADLookupBindPassword",e.target.value)},label:"Lookup Bind Password",value:T,placeholder:"admin"})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"ad_userDNSearchBaseDN",name:"ad_userDNSearchBaseDN",onChange:function(e){H("ADUserDNSearchBaseDN",e.target.value)},label:"User DN Search Base DN",value:R,placeholder:"dc=min,dc=io"})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"ad_userDNSearchFilter",name:"ad_userDNSearchFilter",onChange:function(e){H("ADUserDNSearchFilter",e.target.value)},label:"User DN Search Filter",value:z,placeholder:"(uid=%s)"})}),(0,k.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,k.jsx)("legend",{className:t.descriptionText,children:"List of user DNs (Distinguished Names) to be Tenant Administrators"}),(0,k.jsx)(d.ZP,{item:!0,xs:12,children:ee})]})]})]})}))),V=n(82461),O=n(14792),B=(0,u.$j)((function(e){return{enableTLS:e.tenants.createTenant.fields.security.enableTLS,enableAutoCert:e.tenants.createTenant.fields.security.enableAutoCert,enableCustomCerts:e.tenants.createTenant.fields.security.enableCustomCerts,minioCertificates:e.tenants.createTenant.certificates.minioCertificates,caCertificates:e.tenants.createTenant.certificates.caCertificates}}),{updateAddField:j.HM,isPageValid:j.NO,addFileToCaCertificates:j.Eq,deleteCaCertificate:j.IG,addCaCertificate:j.fK,addKeyPair:j.Mg,addFileToKeyPair:j.aN,deleteKeyPair:j.XX}),$=(0,p.Z)((function(e){return(0,g.Z)((0,i.Z)((0,i.Z)((0,i.Z)({minioCertificateRows:{display:"flex",alignItems:"center",justifyContent:"flex-start",borderBottom:"1px solid #EAEAEA","&:last-child":{borderBottom:0},"@media (max-width: 900px)":{flex:1}},fileItem:{marginRight:10,display:"flex","& div label":{minWidth:50},"@media (max-width: 900px)":{flexFlow:"column"}},minioCertsContainer:{marginBottom:15},minioCACertsRow:{display:"flex",alignItems:"center",justifyContent:"flex-start",borderBottom:"1px solid #EAEAEA","&:last-child":{borderBottom:0},"@media (max-width: 900px)":{flex:1,"& div label":{minWidth:50}}},rowActions:{display:"flex",justifyContent:"flex-end","@media (max-width: 900px)":{flex:1}},overlayAction:{marginLeft:10,"& svg":{maxWidth:15,maxHeight:15},"& button":{background:"#EAEAEA"}}},f.QV),f.oO),f.AK))}))(B((function(e){var t=e.classes,n=e.enableTLS,r=e.enableAutoCert,a=e.enableCustomCerts,s=e.minioCertificates,i=e.caCertificates,l=e.updateAddField,c=e.isPageValid,u=e.addFileToCaCertificates,m=e.deleteCaCertificate,g=e.addCaCertificate,p=e.addKeyPair,f=e.addFileToKeyPair,h=e.deleteKeyPair,x=(0,o.useCallback)((function(e,t){l("security",e,t)}),[l]);return(0,o.useEffect)((function(){c("security",!n||(!!r||!!a))}),[n,r,a,c]),(0,k.jsxs)(_.Z,{className:t.paperWrapper,children:[(0,k.jsx)("div",{className:t.headerElement,children:(0,k.jsx)("h3",{className:t.h3Section,children:"Security"})}),(0,k.jsxs)(d.ZP,{item:!0,xs:12,children:[(0,k.jsx)(N.Z,{value:"enableTLS",id:"enableTLS",name:"enableTLS",checked:n,onChange:function(e){var t=e.target.checked;x("enableTLS",t)},label:"Enable TLS"}),"Enable TLS for the tenant, this is required for Encryption Configuration",n&&(0,k.jsxs)(o.Fragment,{children:[(0,k.jsx)("br",{}),(0,k.jsx)("br",{}),(0,k.jsx)(F.Z,{variant:"caption",display:"block",gutterBottom:!0,children:"AutoCert: MinIO Operator will generate all TLS certificates automatically"}),(0,k.jsx)(F.Z,{variant:"caption",display:"block",gutterBottom:!0,children:"Custom certificates: Allow user to provide your own certificates"}),(0,k.jsx)("br",{})]})]}),n&&(0,k.jsxs)(o.Fragment,{children:[(0,k.jsxs)(d.ZP,{item:!0,xs:12,children:[(0,k.jsx)(N.Z,{value:"enableAutoCert",id:"enableAutoCert",name:"enableAutoCert",checked:r,onChange:function(e){var t=e.target.checked;x("enableAutoCert",t)},label:"Enable AutoCert"}),(0,k.jsx)(N.Z,{value:"enableCustomCerts",id:"enableCustomCerts",name:"enableCustomCerts",checked:a,onChange:function(e){var t=e.target.checked;x("enableCustomCerts",t)},label:"Custom Certificates"})]}),a&&(0,k.jsxs)(o.Fragment,{children:[(0,k.jsx)(d.ZP,{container:!0,children:(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.minioCertsContainer,children:(0,k.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,k.jsx)("legend",{className:t.descriptionText,children:"MinIO Certificates"}),s.map((function(e){return(0,k.jsxs)(d.ZP,{item:!0,xs:12,className:t.minioCertificateRows,children:[(0,k.jsxs)(d.ZP,{item:!0,xs:10,className:t.fileItem,children:[(0,k.jsx)(V.Z,{onChange:function(t,n){f(e.id,"cert",n,t)},accept:".cer,.crt,.cert,.pem",id:"tlsCert",name:"tlsCert",label:"Cert",value:e.cert}),(0,k.jsx)(V.Z,{onChange:function(t,n){f(e.id,"key",n,t)},accept:".key,.pem",id:"tlsKey",name:"tlsKey",label:"Key",value:e.key})]}),(0,k.jsxs)(d.ZP,{item:!0,xs:2,className:t.rowActions,children:[(0,k.jsx)("div",{className:t.overlayAction,children:(0,k.jsx)(D.Z,{size:"small",onClick:p,children:(0,k.jsx)(O.Z,{})})}),(0,k.jsx)("div",{className:t.overlayAction,children:(0,k.jsx)(D.Z,{size:"small",onClick:function(){h(e.id)},children:(0,k.jsx)(q.Z,{})})})]})]},e.id)}))]})})}),(0,k.jsx)(d.ZP,{container:!0,children:(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.minioCertsContainer,children:(0,k.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,k.jsx)("legend",{className:t.descriptionText,children:"MinIO CA Certificates"}),i.map((function(e){return(0,k.jsxs)(d.ZP,{item:!0,xs:12,className:t.minioCACertsRow,children:[(0,k.jsx)(d.ZP,{item:!0,xs:6,children:(0,k.jsx)(V.Z,{onChange:function(t,n){u(e.id,"cert",n,t)},accept:".cer,.crt,.cert,.pem",id:"tlsCert",name:"tlsCert",label:"Cert",value:e.cert})}),(0,k.jsx)(d.ZP,{item:!0,xs:6,children:(0,k.jsxs)("div",{className:t.rowActions,children:[(0,k.jsx)("div",{className:t.overlayAction,children:(0,k.jsx)(D.Z,{size:"small",onClick:g,children:(0,k.jsx)(O.Z,{})})}),(0,k.jsx)("div",{className:t.overlayAction,children:(0,k.jsx)(D.Z,{size:"small",onClick:function(){m(e.id)},children:(0,k.jsx)(q.Z,{})})})]})})]},e.id)}))]})})})]})]})]})}))),W=(0,u.$j)((function(e){return{replicas:e.tenants.createTenant.fields.encryption.replicas,enableEncryption:e.tenants.createTenant.fields.encryption.enableEncryption,encryptionType:e.tenants.createTenant.fields.encryption.encryptionType,gemaltoEndpoint:e.tenants.createTenant.fields.encryption.gemaltoEndpoint,gemaltoToken:e.tenants.createTenant.fields.encryption.gemaltoToken,gemaltoDomain:e.tenants.createTenant.fields.encryption.gemaltoDomain,gemaltoRetry:e.tenants.createTenant.fields.encryption.gemaltoRetry,awsEndpoint:e.tenants.createTenant.fields.encryption.awsEndpoint,awsRegion:e.tenants.createTenant.fields.encryption.awsRegion,awsKMSKey:e.tenants.createTenant.fields.encryption.awsKMSKey,awsAccessKey:e.tenants.createTenant.fields.encryption.awsAccessKey,awsSecretKey:e.tenants.createTenant.fields.encryption.awsSecretKey,awsToken:e.tenants.createTenant.fields.encryption.awsToken,vaultEndpoint:e.tenants.createTenant.fields.encryption.vaultEndpoint,vaultEngine:e.tenants.createTenant.fields.encryption.vaultEngine,vaultNamespace:e.tenants.createTenant.fields.encryption.vaultNamespace,vaultPrefix:e.tenants.createTenant.fields.encryption.vaultPrefix,vaultAppRoleEngine:e.tenants.createTenant.fields.encryption.vaultAppRoleEngine,vaultId:e.tenants.createTenant.fields.encryption.vaultId,vaultSecret:e.tenants.createTenant.fields.encryption.vaultSecret,vaultRetry:e.tenants.createTenant.fields.encryption.vaultRetry,vaultPing:e.tenants.createTenant.fields.encryption.vaultPing,azureEndpoint:e.tenants.createTenant.fields.encryption.azureEndpoint,azureTenantID:e.tenants.createTenant.fields.encryption.azureTenantID,azureClientID:e.tenants.createTenant.fields.encryption.azureClientID,azureClientSecret:e.tenants.createTenant.fields.encryption.azureClientSecret,gcpProjectID:e.tenants.createTenant.fields.encryption.gcpProjectID,gcpEndpoint:e.tenants.createTenant.fields.encryption.gcpEndpoint,gcpClientEmail:e.tenants.createTenant.fields.encryption.gcpClientEmail,gcpClientID:e.tenants.createTenant.fields.encryption.gcpClientID,gcpPrivateKeyID:e.tenants.createTenant.fields.encryption.gcpPrivateKeyID,gcpPrivateKey:e.tenants.createTenant.fields.encryption.gcpPrivateKey,enableCustomCertsForKES:e.tenants.createTenant.fields.encryption.enableCustomCertsForKES,enableAutoCert:e.tenants.createTenant.fields.security.enableAutoCert,enableTLS:e.tenants.createTenant.fields.security.enableTLS,minioCertificates:e.tenants.createTenant.certificates.minioCertificates,serverCertificate:e.tenants.createTenant.certificates.serverCertificate,clientCertificate:e.tenants.createTenant.certificates.clientCertificate,vaultCertificate:e.tenants.createTenant.certificates.vaultCertificate,vaultCA:e.tenants.createTenant.certificates.vaultCA,gemaltoCA:e.tenants.createTenant.certificates.gemaltoCA,enableCustomCerts:e.tenants.createTenant.fields.security.enableCustomCerts,kesSecurityContext:e.tenants.createTenant.fields.encryption.kesSecurityContext}}),{updateAddField:j.HM,isPageValid:j.NO,addFileServerCert:j.$1,addFileClientCert:j.BI,addFileVaultCert:j.cl,addFileVaultCa:j.fk,addFileGemaltoCa:j.MX}),H=(0,p.Z)((function(e){return(0,g.Z)((0,i.Z)((0,i.Z)((0,i.Z)((0,i.Z)({encryptionTypeOptions:{marginBottom:15},mutualTlsConfig:{marginTop:15,"& fieldset":{flex:1}},rightSpacer:{marginRight:15},responsiveContainer:{"@media (max-width: 900px)":{display:"flex",flexFlow:"column"}}},f.QV),f.DF),f.oO),f.AK))}))(W((function(e){var t=e.classes,n=e.updateAddField,r=e.isPageValid,a=e.addFileServerCert,l=e.addFileClientCert,c=e.addFileVaultCert,u=e.addFileVaultCa,m=e.addFileGemaltoCa,g=e.enableEncryption,p=e.enableCustomCerts,f=e.encryptionType,h=e.gemaltoEndpoint,x=e.gemaltoToken,v=e.gemaltoDomain,y=e.gemaltoRetry,S=e.awsEndpoint,C=e.awsRegion,j=e.awsKMSKey,A=e.awsAccessKey,T=e.awsSecretKey,R=e.awsToken,z=e.vaultEndpoint,w=e.vaultEngine,D=e.vaultNamespace,F=e.vaultPrefix,E=e.vaultAppRoleEngine,U=e.vaultId,G=e.vaultSecret,q=e.vaultRetry,L=e.vaultPing,M=e.azureEndpoint,O=e.azureTenantID,B=e.azureClientID,$=e.azureClientSecret,W=e.gcpProjectID,H=e.gcpEndpoint,Y=e.gcpClientEmail,Q=e.gcpClientID,X=e.gcpPrivateKeyID,J=e.gcpPrivateKey,ee=e.enableCustomCertsForKES,te=e.enableAutoCert,ne=e.enableTLS,re=e.minioCertificates,ae=e.serverCertificate,se=e.clientCertificate,ie=e.vaultCertificate,oe=e.vaultCA,le=e.gemaltoCA,ce=e.kesSecurityContext,ue=e.replicas,de=(0,o.useState)({}),me=(0,s.Z)(de,2),ge=me[0],pe=me[1],fe=!1;ne&&(te||re&&re.filter((function(e){return e.encoded_key&&e.encoded_cert})).length>0)&&(fe=!0);var he=(0,o.useCallback)((function(e,t){n("encryption",e,t)}),[n]),xe=function(e){pe((0,b.h)(ge,e))};return(0,o.useEffect)((function(){var e=[];g&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"replicas",required:!0,value:ue,customValidation:parseInt(ue)<1,customValidationMessage:"Replicas needs to be 1 or greater"},{fieldKey:"kes_securityContext_runAsUser",required:!0,value:ce.runAsUser,customValidation:""===ce.runAsUser||parseInt(ce.runAsUser)<0,customValidationMessage:"runAsUser must be present and be 0 or more"},{fieldKey:"kes_securityContext_runAsGroup",required:!0,value:ce.runAsGroup,customValidation:""===ce.runAsGroup||parseInt(ce.runAsGroup)<0,customValidationMessage:"runAsGroup must be present and be 0 or more"},{fieldKey:"kes_securityContext_fsGroup",required:!0,value:ce.fsGroup,customValidation:""===ce.fsGroup||parseInt(ce.fsGroup)<0,customValidationMessage:"fsGroup must be present and be 0 or more"}]),p&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"serverKey",required:!te,value:ae.encoded_key},{fieldKey:"serverCert",required:!te,value:ae.encoded_cert},{fieldKey:"clientKey",required:!te,value:se.encoded_key},{fieldKey:"clientCert",required:!te,value:se.encoded_cert}])),"vault"===f&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"vault_endpoint",required:!0,value:z},{fieldKey:"vault_id",required:!0,value:U},{fieldKey:"vault_secret",required:!0,value:G},{fieldKey:"vault_ping",required:!1,value:L,customValidation:parseInt(L)<0,customValidationMessage:"Value needs to be 0 or greater"},{fieldKey:"vault_retry",required:!1,value:q,customValidation:parseInt(q)<0,customValidationMessage:"Value needs to be 0 or greater"}])),"aws"===f&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"aws_endpoint",required:!0,value:S},{fieldKey:"aws_region",required:!0,value:C},{fieldKey:"aws_accessKey",required:!0,value:A},{fieldKey:"aws_secretKey",required:!0,value:T}])),"gemalto"===f&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"gemalto_endpoint",required:!0,value:h},{fieldKey:"gemalto_token",required:!0,value:x},{fieldKey:"gemalto_domain",required:!0,value:v},{fieldKey:"gemalto_retry",required:!1,value:y,customValidation:parseInt(y)<0,customValidationMessage:"Value needs to be 0 or greater"}])),"azure"===f&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"azure_endpoint",required:!0,value:M},{fieldKey:"azure_tenant_id",required:!0,value:O},{fieldKey:"azure_client_id",required:!0,value:B},{fieldKey:"azure_client_secret",required:!0,value:$}])));var t=(0,P.R)(e);r("encryption",0===Object.keys(t).length),pe(t)}),[g,f,z,w,U,G,L,q,S,C,T,A,h,x,v,y,W,H,Y,Q,X,J,M,O,B,$,r,te,p,ae.encoded_key,ae.encoded_cert,se.encoded_key,se.encoded_cert,ce,ue]),(0,k.jsxs)(_.Z,{className:t.paperWrapper,children:[(0,k.jsxs)("div",{className:t.headerElement,children:[(0,k.jsx)("h3",{className:t.h3Section,children:"Encryption"}),(0,k.jsx)("span",{className:t.descriptionText,children:"How would you like to encrypt the information at rest."})]}),(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsx)(N.Z,{value:"enableEncryption",id:"enableEncryption",name:"enableEncryption",checked:g,onChange:function(e){var t=e.target.checked;he("enableEncryption",t)},label:"Enable Server Side Encryption",disabled:!fe})}),g&&(0,k.jsxs)(o.Fragment,{children:[(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.encryptionTypeOptions,children:(0,k.jsx)(K.Z,{currentSelection:f,id:"encryptionType",name:"encryptionType",label:"Encryption Options",onChange:function(e){he("encryptionType",e.target.value)},selectorOptions:[{label:"Vault",value:"vault"},{label:"AWS",value:"aws"},{label:"Gemalto",value:"gemalto"},{label:"GCP",value:"gcp"},{label:"Azure",value:"azure"}]})}),"vault"===f&&(0,k.jsxs)(o.Fragment,{children:[(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsx)(N.Z,{value:"enableCustomCertsForKES",id:"enableCustomCertsForKES",name:"enableCustomCertsForKES",checked:ee||!te,onChange:function(e){var t=e.target.checked;he("enableCustomCertsForKES",t)},label:"Custom Certificates",disabled:!te})}),(ee||!te)&&(0,k.jsxs)(o.Fragment,{children:[(0,k.jsx)(d.ZP,{container:!0,children:(0,k.jsx)(d.ZP,{item:!0,xs:12,style:{marginBottom:15},children:(0,k.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,k.jsx)("legend",{className:t.descriptionText,children:"Encryption Service Certificates"}),(0,k.jsx)(V.Z,{onChange:function(e,t){a("key",t,e),xe("serverKey")},accept:".key,.pem",id:"serverKey",name:"serverKey",label:"Key",error:ge.serverKey||"",value:ae.key,required:!te}),(0,k.jsx)(V.Z,{onChange:function(e,t){a("cert",t,e),xe("serverCert")},accept:".cer,.crt,.cert,.pem",id:"serverCert",name:"serverCert",label:"Cert",error:ge.serverCert||"",value:ae.cert,required:!te})]})})}),(0,k.jsx)(d.ZP,{container:!0,style:{marginBottom:15},children:(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,k.jsx)("legend",{className:t.descriptionText,children:"Mutual TLS authentication"}),(0,k.jsx)(V.Z,{onChange:function(e,t){l("key",t,e),xe("clientKey")},accept:".key,.pem",id:"clientKey",name:"clientKey",label:"Key",error:ge.clientKey||"",value:se.key,required:!te}),(0,k.jsx)(V.Z,{onChange:function(e,t){l("cert",t,e),xe("clientCert")},accept:".cer,.crt,.cert,.pem",id:"clientCert",name:"clientCert",label:"Cert",error:ge.clientCert||"",value:se.cert,required:!te})]})})})]}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"vault_endpoint",name:"vault_endpoint",onChange:function(e){he("vaultEndpoint",e.target.value),xe("vault_endpoint")},label:"Endpoint",value:z,error:ge.vault_endpoint||"",required:!0})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"vault_engine",name:"vault_engine",onChange:function(e){he("vaultEngine",e.target.value),xe("vault_engine")},label:"Engine",value:w})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"vault_namespace",name:"vault_namespace",onChange:function(e){he("vaultNamespace",e.target.value)},label:"Namespace",value:D})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"vault_prefix",name:"vault_prefix",onChange:function(e){he("vaultPrefix",e.target.value)},label:"Prefix",value:F})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,k.jsx)("legend",{className:t.descriptionText,children:"App Role"}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"vault_approle_engine",name:"vault_approle_engine",onChange:function(e){he("vaultAppRoleEngine",e.target.value)},label:"Engine",value:E})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"vault_id",name:"vault_id",onChange:function(e){he("vaultId",e.target.value),xe("vault_id")},label:"AppRole ID",value:U,error:ge.vault_id||"",required:!0})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"vault_secret",name:"vault_secret",onChange:function(e){he("vaultSecret",e.target.value),xe("vault_secret")},label:"AppRole Secret",value:G,error:ge.vault_secret||"",required:!0})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{type:"number",min:"0",id:"vault_retry",name:"vault_retry",onChange:function(e){he("vaultRetry",e.target.value),xe("vault_retry")},label:"Retry (Seconds)",value:q,error:ge.vault_retry||""})})]})}),(0,k.jsx)(d.ZP,{container:!0,className:t.mutualTlsConfig,children:(0,k.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,k.jsx)("legend",{className:t.descriptionText,children:"Mutual TLS authentication (optional)"}),(0,k.jsx)(V.Z,{onChange:function(e,t){c("key",t,e),xe("vault_key")},accept:".key,.pem",id:"vault_key",name:"vault_key",label:"Key",value:ie.key}),(0,k.jsx)(V.Z,{onChange:function(e,t){c("cert",t,e),xe("vault_cert")},accept:".cer,.crt,.cert,.pem",id:"vault_cert",name:"vault_cert",label:"Cert",value:ie.cert}),(0,k.jsx)(V.Z,{onChange:function(e,t){u(t,e),xe("vault_ca")},accept:".cer,.crt,.cert,.pem",id:"vault_ca",name:"vault_ca",label:"CA",value:oe.cert})]})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,style:{marginTop:15},children:(0,k.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,k.jsx)("legend",{className:t.descriptionText,children:"Status"}),(0,k.jsx)(I.Z,{type:"number",min:"0",id:"vault_ping",name:"vault_ping",onChange:function(e){he("vaultPing",e.target.value),xe("vault_ping")},label:"Ping (Seconds)",value:L,error:ge.vault_ping||""})]})})]}),"azure"===f&&(0,k.jsxs)(o.Fragment,{children:[(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"azure_endpoint",name:"azure_endpoint",onChange:function(e){he("azureEndpoint",e.target.value),xe("azure_endpoint")},label:"Endpoint",value:M,error:ge.azure_endpoint||""})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,k.jsx)("legend",{className:t.descriptionText,children:"Credentials"}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"azure_tenant_id",name:"azure_tenant_id",onChange:function(e){he("azureTenantID",e.target.value),xe("azure_tenant_id")},label:"Tenant ID",value:O,error:ge.azure_tenant_id||""})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"azure_client_id",name:"azure_client_id",onChange:function(e){he("azureClientID",e.target.value),xe("azure_client_id")},label:"Client ID",value:B,error:ge.azure_client_id||""})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"azure_client_secret",name:"azure_client_secret",onChange:function(e){he("azureClientSecret",e.target.value),xe("azure_client_secret")},label:"Client Secret",value:$,error:ge.azure_client_secret||""})})]})})]}),"gcp"===f&&(0,k.jsxs)(o.Fragment,{children:[(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"gcp_project_id",name:"gcp_project_id",onChange:function(e){he("gcpProjectID",e.target.value)},label:"Project ID",value:W})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"gcp_endpoint",name:"gcp_endpoint",onChange:function(e){he("gcpEndpoint",e.target.value)},label:"Endpoint",value:H})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,k.jsx)("legend",{className:t.descriptionText,children:"Credentials"}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"gcp_client_email",name:"gcp_client_email",onChange:function(e){he("gcpClientEmail",e.target.value)},label:"Client Email",value:Y})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"gcp_client_id",name:"gcp_client_id",onChange:function(e){he("gcpClientID",e.target.value)},label:"Client ID",value:Q})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"gcp_private_key_id",name:"gcp_private_key_id",onChange:function(e){he("gcpPrivateKeyID",e.target.value)},label:"Private Key ID",value:X})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"gcp_private_key",name:"gcp_private_key",onChange:function(e){he("gcpPrivateKey",e.target.value)},label:"Private Key",value:J})})]})})]}),"aws"===f&&(0,k.jsxs)(o.Fragment,{children:[(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"aws_endpoint",name:"aws_endpoint",onChange:function(e){he("awsEndpoint",e.target.value),xe("aws_endpoint")},label:"Endpoint",value:S,error:ge.aws_endpoint||"",required:!0})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"aws_region",name:"aws_region",onChange:function(e){he("awsRegion",e.target.value),xe("aws_region")},label:"Region",value:C,error:ge.aws_region||"",required:!0})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"aws_kmsKey",name:"aws_kmsKey",onChange:function(e){he("awsKMSKey",e.target.value)},label:"KMS Key",value:j})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,k.jsx)("legend",{className:t.descriptionText,children:"Credentials"}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"aws_accessKey",name:"aws_accessKey",onChange:function(e){he("awsAccessKey",e.target.value),xe("aws_accessKey")},label:"Access Key",value:A,error:ge.aws_accessKey||"",required:!0})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"aws_secretKey",name:"aws_secretKey",onChange:function(e){he("awsSecretKey",e.target.value),xe("aws_secretKey")},label:"Secret Key",value:T,error:ge.aws_secretKey||"",required:!0})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"aws_token",name:"aws_token",onChange:function(e){he("awsToken",e.target.value)},label:"Token",value:R})})]})})]}),"gemalto"===f&&(0,k.jsxs)(o.Fragment,{children:[(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"gemalto_endpoint",name:"gemalto_endpoint",onChange:function(e){he("gemaltoEndpoint",e.target.value),xe("gemalto_endpoint")},label:"Endpoint",value:h,error:ge.gemalto_endpoint||"",required:!0})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,style:{marginBottom:15},children:(0,k.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,k.jsx)("legend",{className:t.descriptionText,children:"Credentials"}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"gemalto_token",name:"gemalto_token",onChange:function(e){he("gemaltoToken",e.target.value),xe("gemalto_token")},label:"Token",value:x,error:ge.gemalto_token||"",required:!0})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"gemalto_domain",name:"gemalto_domain",onChange:function(e){he("gemaltoDomain",e.target.value),xe("gemalto_domain")},label:"Domain",value:v,error:ge.gemalto_domain||"",required:!0})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{type:"number",min:"0",id:"gemalto_retry",name:"gemalto_retry",onChange:function(e){he("gemaltoRetry",e.target.value),xe("gemalto_retry")},label:"Retry (seconds)",value:y,error:ge.gemalto_retry||""})})]})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,style:{marginBottom:15},children:(0,k.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,k.jsx)("legend",{className:t.descriptionText,children:"Custom CA Root certificate verification"}),(0,k.jsx)(V.Z,{onChange:function(e,t){m(t,e),xe("gemalto_ca")},accept:".cer,.crt,.cert,.pem",id:"gemalto_ca",name:"gemalto_ca",label:"CA",value:le.cert})]})})]}),(0,k.jsx)("div",{className:t.headerElement,children:(0,k.jsx)("h4",{className:t.h3Section,children:"Additional Configurations"})}),(0,k.jsxs)(d.ZP,{item:!0,xs:12,children:[(0,k.jsx)(d.ZP,{item:!0,xs:12,classes:t.formFieldRow,children:(0,k.jsx)(I.Z,{type:"number",min:"1",id:"replicas",name:"replicas",onChange:function(e){he("replicas",e.target.value),xe("replicas")},label:"Replicas",value:ue,required:!0,error:ge.replicas||""})}),(0,k.jsxs)("fieldset",{className:t.fieldGroup,style:{marginTop:15},children:[(0,k.jsx)("legend",{className:t.descriptionText,children:"SecurityContext for KES pods"}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.kesSecurityContext,children:(0,k.jsxs)("div",{className:"".concat(t.multiContainer," ").concat(t.responsiveContainer),children:[(0,k.jsx)("div",{className:"".concat(t.formFieldRow," ").concat(t.rightSpacer),children:(0,k.jsx)(I.Z,{type:"number",id:"kes_securityContext_runAsUser",name:"kes_securityContext_runAsUser",onChange:function(e){he("kesSecurityContext",(0,i.Z)((0,i.Z)({},ce),{},{runAsUser:e.target.value})),xe("kes_securityContext_runAsUser")},label:"Run As User",value:ce.runAsUser,required:!0,error:ge.kes_securityContext_runAsUser||"",min:"0"})}),(0,k.jsx)("div",{className:"".concat(t.formFieldRow," ").concat(t.rightSpacer),children:(0,k.jsx)(I.Z,{type:"number",id:"kes_securityContext_runAsGroup",name:"kes_securityContext_runAsGroup",onChange:function(e){he("kesSecurityContext",(0,i.Z)((0,i.Z)({},ce),{},{runAsGroup:e.target.value})),xe("kes_securityContext_runAsGroup")},label:"Run As Group",value:ce.runAsGroup,required:!0,error:ge.kes_securityContext_runAsGroup||"",min:"0"})}),(0,k.jsx)("div",{className:"".concat(t.formFieldRow," ").concat(t.rightSpacer),children:(0,k.jsx)(I.Z,{type:"number",id:"kes_securityContext_fsGroup",name:"kes_securityContext_fsGroup",onChange:function(e){he("kesSecurityContext",(0,i.Z)((0,i.Z)({},ce),{},{fsGroup:e.target.value})),xe("kes_securityContext_fsGroup")},label:"FsGroup",value:ce.fsGroup,required:!0,error:ge.kes_securityContext_fsGroup||"",min:"0"})})]})}),(0,k.jsx)("br",{}),(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsx)("div",{className:t.multiContainer,children:(0,k.jsx)(N.Z,{value:"kesSecurityContextRunAsNonRoot",id:"kes_securityContext_runAsNonRoot",name:"kes_securityContext_runAsNonRoot",checked:ce.runAsNonRoot,onChange:function(e){var t=e.target.checked;he("kesSecurityContext",(0,i.Z)((0,i.Z)({},ce),{},{runAsNonRoot:t}))},label:"Do not run as Root"})})})]})]})]})]})}))),Y=(0,u.$j)((function(e){var t=e.tenants.createTenant;return{podAffinity:t.fields.affinity.podAffinity,nodeSelectorLabels:t.fields.affinity.nodeSelectorLabels,withPodAntiAffinity:t.fields.affinity.withPodAntiAffinity,keyValuePairs:t.nodeSelectorPairs}}),{setModalErrorSnackMessage:y.zb,updateAddField:j.HM,isPageValid:j.NO,setKeyValuePairs:j.i$}),Q=(0,p.Z)((function(e){return(0,g.Z)((0,i.Z)((0,i.Z)({overlayAction:{marginLeft:10,"& svg":{maxWidth:15,maxHeight:15},"& button":{background:"#EAEAEA"}},affinityConfigField:{display:"flex"},affinityFieldLabel:{display:"flex",flexFlow:"column",flex:1},radioField:{display:"flex",alignItems:"flex-start",marginTop:10,"& div:first-child":{display:"flex",flexFlow:"column",alignItems:"baseline",textAlign:"left !important"}},affinityLabelKey:{"& div:first-child":{marginBottom:0}},affinityLabelValue:{marginLeft:10,"& div:first-child":{marginBottom:0}},rowActions:{display:"flex",alignItems:"center"},fieldContainer:{marginBottom:0},affinityRow:{marginBottom:10,display:"flex"}},f.oO),f.AK))}))(Y((function(e){var t=e.classes,n=e.podAffinity,r=e.nodeSelectorLabels,a=e.withPodAntiAffinity,i=e.setModalErrorSnackMessage,l=e.updateAddField,c=e.keyValuePairs,u=e.setKeyValuePairs,m=e.isPageValid,g=(0,o.useState)({}),p=(0,s.Z)(g,2),f=p[0],x=p[1],v=(0,o.useState)(!0),y=(0,s.Z)(v,2),S=y[0],C=y[1],j=(0,o.useState)({}),b=(0,s.Z)(j,2),T=b[0],R=b[1],z=(0,o.useState)([]),w=(0,s.Z)(z,2),F=w[0],E=w[1],U=(0,o.useCallback)((function(e,t){l("affinity",e,t)}),[l]);return(0,o.useEffect)((function(){S&&h.Z.invoke("GET","/api/v1/nodes/labels").then((function(e){C(!1),R(e);var t=[];for(var n in e)t.push({label:n,value:n});E(t)})).catch((function(e){C(!1),i(e),R({})}))}),[i,S]),(0,o.useEffect)((function(){if(c){var e=c.filter((function(e){return""!==e.key})).map((function(e){return"".concat(e.key,"=").concat(e.value)})).filter((function(e,t,n){return n.indexOf(e)===t})).join("&");U("nodeSelectorLabels",e)}}),[c,U]),(0,o.useEffect)((function(){var e=[];if("nodeSelector"===n){var t=!0,a=r.split("&");1===a.length&&""===a[0]&&(t=!1),a.forEach((function(e,n){var r=e.split("=");2!==r.length&&(t=!1),n+1!==a.length&&(""!==r[0]&&""!==r[1]||(t=!1))})),e=[].concat((0,Z.Z)(e),[{fieldKey:"labels",required:!0,value:r,customValidation:!t,customValidationMessage:"You need to add at least one label key-pair"}])}var s=(0,P.R)(e);m("affinity",0===Object.keys(s).length),x(s)}),[m,n,r]),(0,k.jsxs)(_.Z,{className:t.paperWrapper,children:[(0,k.jsxs)("div",{className:t.headerElement,children:[(0,k.jsx)("h3",{className:t.h3Section,children:"Pod Placement"}),(0,k.jsx)("span",{className:t.descriptionText,children:"Configure how pods will be assigned to nodes"})]}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.affinityConfigField,children:(0,k.jsxs)(d.ZP,{item:!0,className:t.affinityFieldLabel,children:[(0,k.jsx)("div",{className:t.label,children:"Type"}),(0,k.jsx)("div",{className:"".concat(t.descriptionText," ").concat(t.affinityHelpText),children:"MinIO supports multiple configurations for Pod Affinity"}),(0,k.jsx)(d.ZP,{item:!0,className:t.radioField,children:(0,k.jsx)(K.Z,{currentSelection:n,id:"affinity-options",name:"affinity-options",label:" ",onChange:function(e){U("podAffinity",e.target.value)},selectorOptions:[{label:"None",value:"none"},{label:"Default (Pod Anti-Affinnity)",value:"default"},{label:"Node Selector",value:"nodeSelector"}]})})]})}),"nodeSelector"===n&&(0,k.jsxs)(o.Fragment,{children:[(0,k.jsx)("br",{}),(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsx)(N.Z,{value:"with_pod_anti_affinity",id:"with_pod_anti_affinity",name:"with_pod_anti_affinity",checked:a,onChange:function(e){var t=e.target.checked;U("withPodAntiAffinity",t)},label:"With Pod Anti-Affinity"})}),(0,k.jsxs)(d.ZP,{item:!0,xs:12,children:[(0,k.jsx)("h3",{children:"Labels"}),(0,k.jsx)("span",{className:t.error,children:f.labels}),(0,k.jsx)(d.ZP,{container:!0,children:c&&c.map((function(e,n){return(0,k.jsxs)(d.ZP,{item:!0,xs:12,className:t.affinityRow,children:[(0,k.jsxs)(d.ZP,{item:!0,xs:5,className:t.affinityLabelKey,children:[F.length>0&&(0,k.jsx)(A.Z,{onChange:function(e){var t=e.target.value,r=Object.assign([],c);r[n].key=e.target.value,r[n].value=T[t][0],u(r)},id:"select-access-policy",name:"select-access-policy",label:"",value:e.key,options:F}),0===F.length&&(0,k.jsx)(I.Z,{id:"nodeselector-key-".concat(n.toString()),label:"",name:"nodeselector-".concat(n.toString()),value:e.key,onChange:function(e){var t=Object.assign([],c);t[n].key=e.target.value,u(t)},index:n,placeholder:"Key"})]}),(0,k.jsxs)(d.ZP,{item:!0,xs:5,className:t.affinityLabelValue,children:[F.length>0&&(0,k.jsx)(A.Z,{onChange:function(e){var t=Object.assign([],c);t[n].value=e.target.value,u(t)},id:"select-access-policy",name:"select-access-policy",label:"",value:e.value,options:T[e.key]?T[e.key].map((function(e){return{label:e,value:e}})):[]}),0===F.length&&(0,k.jsx)(I.Z,{id:"nodeselector-value-".concat(n.toString()),label:"",name:"nodeselector-".concat(n.toString()),value:e.value,onChange:function(e){var t=Object.assign([],c);t[n].value=e.target.value,u(t)},index:n,placeholder:"value"})]}),(0,k.jsxs)(d.ZP,{item:!0,xs:2,className:t.rowActions,children:[(0,k.jsx)("div",{className:t.overlayAction,children:(0,k.jsx)(D.Z,{size:"small",onClick:function(){var e=Object.assign([],c);F.length>0?e.push({key:F[0].value,value:T[F[0].value][0]}):e.push({key:"",value:""}),u(e)},children:(0,k.jsx)(O.Z,{})})}),c.length>1&&(0,k.jsx)("div",{className:t.overlayAction,children:(0,k.jsx)(D.Z,{size:"small",onClick:function(){var e=c.filter((function(e,t){return t!==n}));u(e)},children:(0,k.jsx)(q.Z,{})})})]})]},"affinity-keyVal-".concat(n.toString()))}))})]})]})]})}))),X=n(35721),J=n(24442),ee=(0,u.$j)((function(e){return{storageClasses:e.tenants.createTenant.storageClasses,customImage:e.tenants.createTenant.fields.configure.customImage,imageName:e.tenants.createTenant.fields.configure.imageName,customDockerhub:e.tenants.createTenant.fields.configure.customDockerhub,imageRegistry:e.tenants.createTenant.fields.configure.imageRegistry,imageRegistryUsername:e.tenants.createTenant.fields.configure.imageRegistryUsername,imageRegistryPassword:e.tenants.createTenant.fields.configure.imageRegistryPassword,exposeMinIO:e.tenants.createTenant.fields.configure.exposeMinIO,exposeConsole:e.tenants.createTenant.fields.configure.exposeConsole,prometheusCustom:e.tenants.createTenant.fields.configure.prometheusCustom,tenantCustom:e.tenants.createTenant.fields.configure.tenantCustom,logSearchCustom:e.tenants.createTenant.fields.configure.logSearchCustom,logSearchVolumeSize:e.tenants.createTenant.fields.configure.logSearchVolumeSize,logSearchSizeFactor:e.tenants.createTenant.fields.configure.logSearchSizeFactor,prometheusVolumeSize:e.tenants.createTenant.fields.configure.prometheusVolumeSize,prometheusSizeFactor:e.tenants.createTenant.fields.configure.prometheusSizeFactor,logSearchSelectedStorageClass:e.tenants.createTenant.fields.configure.logSearchSelectedStorageClass,logSearchImage:e.tenants.createTenant.fields.configure.logSearchImage,kesImage:e.tenants.createTenant.fields.configure.kesImage,logSearchPostgresImage:e.tenants.createTenant.fields.configure.logSearchPostgresImage,logSearchPostgresInitImage:e.tenants.createTenant.fields.configure.logSearchPostgresInitImage,prometheusSelectedStorageClass:e.tenants.createTenant.fields.configure.prometheusSelectedStorageClass,prometheusImage:e.tenants.createTenant.fields.configure.prometheusImage,prometheusSidecarImage:e.tenants.createTenant.fields.configure.prometheusSidecarImage,prometheusInitImage:e.tenants.createTenant.fields.configure.prometheusInitImage,selectedStorageClass:e.tenants.createTenant.fields.nameTenant.selectedStorageClass}}),{updateAddField:j.HM,isPageValid:j.NO}),te=(0,p.Z)((function(e){return(0,g.Z)((0,i.Z)((0,i.Z)((0,i.Z)({},f.DF),f.oO),f.AK))}))(ee((function(e){var t=e.classes,n=(e.storageClasses,e.customImage),r=e.imageName,a=e.customDockerhub,i=e.imageRegistry,l=e.imageRegistryUsername,c=e.imageRegistryPassword,u=(e.exposeMinIO,e.exposeConsole,e.prometheusCustom),m=e.tenantCustom,g=e.logSearchCustom,p=e.logSearchVolumeSize,f=(e.logSearchSizeFactor,e.logSearchImage),h=e.kesImage,x=e.logSearchPostgresImage,v=e.logSearchPostgresInitImage,y=e.prometheusVolumeSize,S=(e.prometheusSizeFactor,e.logSearchSelectedStorageClass),C=e.prometheusSelectedStorageClass,j=e.prometheusImage,A=e.prometheusSidecarImage,T=e.prometheusInitImage,R=e.updateAddField,z=e.isPageValid,w=(e.selectedStorageClass,(0,o.useState)({})),D=(0,s.Z)(w,2),F=D[0],E=D[1],U=(0,o.useCallback)((function(e,t){R("configure",e,t)}),[R]);(0,o.useEffect)((function(){var e=[];u&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"prometheus_storage_class",required:!0,value:C,customValidation:""===C,customValidationMessage:"Field cannot be empty"},{fieldKey:"prometheus_volume_size",required:!0,value:y,customValidation:""===y||parseInt(y)<=0,customValidationMessage:"Volume size must be present and be greatter than 0"}])),g&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"log_search_storage_class",required:!0,value:S,customValidation:""===S,customValidationMessage:"Field cannot be empty"},{fieldKey:"log_search_volume_size",required:!0,value:p,customValidation:""===p||parseInt(p)<=0,customValidationMessage:"Volume size must be present and be greatter than 0"}])),n&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"image",required:!1,value:r,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'minio/minio:VERSION'"},{fieldKey:"logSearchImage",required:!1,value:f,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'minio/logsearchapi:VERSION'"},{fieldKey:"kesImage",required:!1,value:h,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'minio/kes:VERSION'"},{fieldKey:"logSearchPostgresImage",required:!1,value:x,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'library/postgres:VERSION'"},{fieldKey:"logSearchPostgresInitImage",required:!1,value:v,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'library/busybox:VERSION'"},{fieldKey:"prometheusImage",required:!1,value:j,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'minio/prometheus:VERSION'"},{fieldKey:"prometheusSidecarImage",required:!1,value:A,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'project/container:VERSION'"},{fieldKey:"prometheusInitImage",required:!1,value:T,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'library/busybox:VERSION'"}]),a&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"registry",required:!0,value:i},{fieldKey:"registryUsername",required:!0,value:l},{fieldKey:"registryPassword",required:!0,value:c}])));var t=(0,P.R)(e);z("configure",0===Object.keys(t).length),E(t)}),[n,r,f,h,x,v,j,A,T,a,i,l,c,z,u,m,g,C,y,S,p]);var K=function(e){E((0,b.h)(F,e))};return(0,k.jsxs)(_.Z,{className:t.paperWrapper,children:[(0,k.jsxs)("div",{className:t.headerElement,children:[(0,k.jsx)("h3",{className:t.h3Section,children:"Container Images"}),(0,k.jsx)("span",{className:t.descriptionText,children:"Images used by the Tenant Deployment"})]}),(0,k.jsxs)(o.Fragment,{children:[(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"image",name:"image",onChange:function(e){U("imageName",e.target.value),K("image")},label:"MinIO's Image",value:r,error:F.image||"",placeholder:"E.g. minio/minio:RELEASE.2022-01-08T03-11-54Z"})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"logSearchImage",name:"logSearchImage",onChange:function(e){U("logSearchImage",e.target.value),K("logSearchImage")},label:"Log Search API's Image",value:f,error:F.logSearchImage||"",placeholder:"E.g. minio/logsearchapi:v4.1.1"})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"kesImage",name:"kesImage",onChange:function(e){U("kesImage",e.target.value),K("kesImage")},label:"KES Image",value:h,error:F.kesImage||"",placeholder:"E.g. minio/kes:v0.14.0"})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"logSearchPostgresImage",name:"logSearchPostgresImage",onChange:function(e){U("logSearchPostgresImage",e.target.value),K("logSearchPostgresImage")},label:"Log Search Postgres's Image",value:x,error:F.logSearchPostgresImage||"",placeholder:"E.g. library/postgres:13"})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"logSearchPostgresInitImage",name:"logSearchPostgresInitImage",onChange:function(e){U("logSearchPostgresInitImage",e.target.value),K("logSearchPostgresInitImage")},label:"Log Search Postgres's Init Image",value:v,error:F.logSearchPostgresInitImage||"",placeholder:"E.g. library/busybox:1.33.1"})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"prometheusImage",name:"prometheusImage",onChange:function(e){U("prometheusImage",e.target.value),K("prometheusImage")},label:"Prometheus Image",value:j,error:F.prometheusImage||"",placeholder:"E.g. quay.io/prometheus/prometheus:latest"})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"prometheusSidecarImage",name:"prometheusSidecarImage",onChange:function(e){U("prometheusSidecarImage",e.target.value),K("prometheusSidecarImage")},label:"Prometheus Sidecar Image",value:A,error:F.prometheusSidecarImage||"",placeholder:"E.g. quay.io/prometheus/prometheus:latest"})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"prometheusInitImage",name:"prometheusInitImage",onChange:function(e){U("prometheusInitImage",e.target.value),K("prometheusInitImage")},label:"Prometheus Init Image",value:T,error:F.prometheusInitImage||"",placeholder:"E.g. quay.io/prometheus/prometheus:latest"})})]}),n&&(0,k.jsx)(o.Fragment,{children:(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(N.Z,{value:"custom_docker_hub",id:"custom_docker_hub",name:"custom_docker_hub",checked:a,onChange:function(e){var t=e.target.checked;U("customDockerhub",t)},label:"Set/Update Image Registry"})})}),a&&(0,k.jsxs)(o.Fragment,{children:[(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"registry",name:"registry",onChange:function(e){U("imageRegistry",e.target.value)},label:"Endpoint",value:i,error:F.registry||"",placeholder:"E.g. https://index.docker.io/v1/",required:!0})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"registryUsername",name:"registryUsername",onChange:function(e){U("imageRegistryUsername",e.target.value)},label:"Username",value:l,error:F.registryUsername||"",required:!0})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"registryPassword",name:"registryPassword",onChange:function(e){U("imageRegistryPassword",e.target.value)},label:"Password",value:c,error:F.registryPassword||"",required:!0})})]})]})}))),ne=n(25534),re=n(29316),ae=n(3143),se=n.n(ae),ie=n(32120),oe=n(23473),le=n(60656),ce=n(85615),ue={setErrorSnackMessage:y.Ih},de=(0,u.$j)(null,ue),me=(0,p.Z)((function(e){return(0,g.Z)((0,i.Z)((0,i.Z)({wrapText:{maxWidth:"200px",whiteSpace:"normal",wordWrap:"break-word"}},f.oO),f.Qw))}))(de((function(e){var t=e.classes,n=e.namespace,r=e.addNamespaceOpen,a=e.closeAddNamespaceModalAndRefresh,i=e.setErrorSnackMessage,l=(0,o.useState)(!1),c=(0,s.Z)(l,2),u=c[0],d=c[1];(0,o.useEffect)((function(){u&&h.Z.invoke("POST","/api/v1/namespace",{name:n}).then((function(e){d(!1),a(!0)})).catch((function(e){d(!1),i(e)}))}),[u,a,n,i]);return(0,k.jsx)(le.Z,{title:"New namespace",confirmText:"Create",confirmButtonProps:{color:"primary",variant:"contained"},isOpen:r,titleIcon:(0,k.jsx)(ce.Ej,{}),isLoading:u,onConfirm:function(){d(!0)},onClose:function(){a(!1)},confirmationContent:(0,k.jsxs)(o.Fragment,{children:[u&&(0,k.jsx)(m.Z,{}),(0,k.jsxs)(oe.Z,{children:["Are you sure you want to add a namespace called",(0,k.jsx)("br",{}),(0,k.jsx)("b",{className:t.wrapText,children:n}),"?"]})]})})}))),ge=n(4182),pe=n(35044),fe=n(73481),he=n(29399),xe=n(95995),ve=(0,u.$j)((function(e){return{volumeSize:e.tenants.createTenant.fields.tenantSize.volumeSize,sizeFactor:e.tenants.createTenant.fields.tenantSize.sizeFactor,drivesPerServer:e.tenants.createTenant.fields.tenantSize.drivesPerServer,nodes:e.tenants.createTenant.fields.tenantSize.nodes,memoryNode:e.tenants.createTenant.fields.tenantSize.resourcesMemoryRequest,ecParity:e.tenants.createTenant.fields.tenantSize.ecParity,ecParityChoices:e.tenants.createTenant.fields.tenantSize.ecParityChoices,cleanECChoices:e.tenants.createTenant.fields.tenantSize.cleanECChoices,resourcesSize:e.tenants.createTenant.fields.tenantSize.resourcesSize,distribution:e.tenants.createTenant.fields.tenantSize.distribution,ecParityCalc:e.tenants.createTenant.fields.tenantSize.ecParityCalc,limitSize:e.tenants.createTenant.fields.tenantSize.limitSize,selectedStorageClass:e.tenants.createTenant.fields.nameTenant.selectedStorageClass,cpuToUse:e.tenants.createTenant.fields.tenantSize.resourcesCPURequest,integrationSelection:e.tenants.createTenant.fields.tenantSize.integrationSelection}}),{updateAddField:j.HM,isPageValid:j.NO}),ye=(0,p.Z)((function(e){return(0,g.Z)((0,i.Z)((0,i.Z)({root:{margin:4},table:{"& .MuiTableCell-root":{fontSize:13}}},f.oO),f.AK))}))(ve((function(e){var t=e.classes,n=e.nodes,r=e.memoryNode,a=e.ecParity,s=e.distribution,i=e.ecParityCalc,l=e.cpuToUse,c=e.integrationSelection,u=i.storageFactors.find((function(e){return e.erasureCode===a}));return(0,k.jsxs)("div",{className:t.root,children:[(0,k.jsx)("h4",{children:"Resource Allocation"}),(0,k.jsx)(xe.Z,{}),(0,k.jsx)(ge.Z,{className:t.table,"aria-label":"simple table",size:"small",children:(0,k.jsxs)(pe.Z,{children:[(0,k.jsxs)(he.Z,{children:[(0,k.jsx)(fe.Z,{scope:"row",children:"Number of Servers"}),(0,k.jsx)(fe.Z,{align:"right",children:parseInt(n)>0?n:"-"})]}),""===c.typeSelection&&""===c.storageClass&&(0,k.jsxs)(o.Fragment,{children:[(0,k.jsxs)(he.Z,{children:[(0,k.jsx)(fe.Z,{scope:"row",children:"Drives per Server"}),(0,k.jsx)(fe.Z,{align:"right",children:s?s.disks:"-"})]}),(0,k.jsxs)(he.Z,{children:[(0,k.jsx)(fe.Z,{scope:"row",children:"Drive Capacity"}),(0,k.jsx)(fe.Z,{align:"right",children:s?(0,x.ae)(s.pvSize):"-"})]})]}),(0,k.jsxs)(he.Z,{children:[(0,k.jsx)(fe.Z,{scope:"row",children:"Total Volumes"}),(0,k.jsx)(fe.Z,{align:"right",children:s?s.persistentVolumes:"-"})]}),""===c.typeSelection&&""===c.storageClass&&(0,k.jsxs)(o.Fragment,{children:[(0,k.jsxs)(he.Z,{children:[(0,k.jsx)(fe.Z,{scope:"row",children:"Memory per Node"}),(0,k.jsxs)(fe.Z,{align:"right",children:[r," Gi"]})]}),(0,k.jsxs)(he.Z,{children:[(0,k.jsx)(fe.Z,{style:{borderBottom:0},scope:"row",children:"CPU Selection"}),(0,k.jsx)(fe.Z,{style:{borderBottom:0},align:"right",children:l})]})]})]})}),0===i.error&&u&&(0,k.jsxs)(o.Fragment,{children:[(0,k.jsx)("h4",{children:"Erasure Code Configuration"}),(0,k.jsx)(xe.Z,{}),(0,k.jsx)(ge.Z,{className:t.table,"aria-label":"simple table",size:"small",children:(0,k.jsxs)(pe.Z,{children:[(0,k.jsxs)(he.Z,{children:[(0,k.jsx)(fe.Z,{scope:"row",children:"EC Parity"}),(0,k.jsx)(fe.Z,{align:"right",children:""!==a?a:"-"})]}),(0,k.jsxs)(he.Z,{children:[(0,k.jsx)(fe.Z,{scope:"row",children:"Raw Capacity"}),(0,k.jsx)(fe.Z,{align:"right",children:(0,x.ae)(i.rawCapacity)})]}),(0,k.jsxs)(he.Z,{children:[(0,k.jsx)(fe.Z,{scope:"row",children:"Usable Capacity"}),(0,k.jsx)(fe.Z,{align:"right",children:(0,x.ae)(u.maxCapacity)})]}),(0,k.jsxs)(he.Z,{children:[(0,k.jsx)(fe.Z,{style:{borderBottom:0},scope:"row",children:"Server Failures Tolerated"}),(0,k.jsx)(fe.Z,{style:{borderBottom:0},align:"right",children:s?Math.floor(u.maxFailureTolerations/s.disks):"-"})]})]})})]}),""!==c.typeSelection&&""!==c.storageClass&&(0,k.jsxs)(o.Fragment,{children:[(0,k.jsx)("h4",{children:"Single Instance Configuration"}),(0,k.jsx)(xe.Z,{}),(0,k.jsx)(ge.Z,{className:t.table,"aria-label":"simple table",size:"small",children:(0,k.jsxs)(pe.Z,{children:[(0,k.jsxs)(he.Z,{children:[(0,k.jsx)(fe.Z,{scope:"row",children:"CPU"}),(0,k.jsx)(fe.Z,{align:"right",children:0!==c.CPU?c.CPU:"-"})]}),(0,k.jsxs)(he.Z,{children:[(0,k.jsx)(fe.Z,{scope:"row",children:"Memory"}),(0,k.jsx)(fe.Z,{align:"right",children:0!==c.memory?"".concat(c.memory," Gi"):"-"})]}),(0,k.jsxs)(he.Z,{children:[(0,k.jsx)(fe.Z,{scope:"row",children:"Drives per Server"}),(0,k.jsx)(fe.Z,{align:"right",children:0!==c.drivesPerServer?"".concat(c.drivesPerServer):"-"})]}),(0,k.jsxs)(he.Z,{children:[(0,k.jsx)(fe.Z,{style:{borderBottom:0},scope:"row",children:"Drive Size"}),(0,k.jsxs)(fe.Z,{style:{borderBottom:0},align:"right",children:[c.driveSize.driveSize,c.driveSize.sizeUnit]})]})]})})]})]})}))),Se=n(7262),Ce=(0,u.$j)((function(e){return{nodes:e.tenants.createTenant.fields.tenantSize.nodes,resourcesSize:e.tenants.createTenant.fields.tenantSize.resourcesSize,selectedStorageClass:e.tenants.createTenant.fields.nameTenant.selectedStorageClass,maxAllocatableResources:e.tenants.createTenant.fields.tenantSize.maxAllocatableResources,maxCPUsUse:e.tenants.createTenant.fields.tenantSize.maxCPUsUse,maxMemorySize:e.tenants.createTenant.fields.tenantSize.maxMemorySize,resourcesSpecifyLimit:e.tenants.createTenant.fields.tenantSize.resourcesSpecifyLimit,resourcesCPURequestError:e.tenants.createTenant.fields.tenantSize.resourcesCPURequestError,resourcesCPURequest:e.tenants.createTenant.fields.tenantSize.resourcesCPURequest,resourcesCPULimitError:e.tenants.createTenant.fields.tenantSize.resourcesCPULimitError,resourcesCPULimit:e.tenants.createTenant.fields.tenantSize.resourcesCPULimit,resourcesMemoryRequestError:e.tenants.createTenant.fields.tenantSize.resourcesMemoryRequestError,resourcesMemoryRequest:e.tenants.createTenant.fields.tenantSize.resourcesMemoryRequest,resourcesMemoryLimitError:e.tenants.createTenant.fields.tenantSize.resourcesMemoryLimitError,resourcesMemoryLimit:e.tenants.createTenant.fields.tenantSize.resourcesMemoryLimit}}),{updateAddField:j.HM,isPageValid:j.NO}),je=(0,p.Z)((function(e){return(0,g.Z)((0,i.Z)((0,i.Z)((0,i.Z)({compositeFieldContainer:{display:"flex",alignItems:"center"},compositeAddOn:{marginLeft:10,"& div":{marginBottom:0},"@media (max-width: 900px)":{"& div":{marginTop:5}}}},f.DF),f.oO),f.AK))}))(Ce((function(e){var t=e.classes,n=e.updateAddField,r=e.isPageValid,a=e.nodes,s=e.resourcesSize,i=e.selectedStorageClass,l=(e.maxAllocatableResources,e.maxCPUsUse),u=e.maxMemorySize,m=e.resourcesSpecifyLimit,g=e.resourcesCPURequestError,p=e.resourcesCPURequest,f=e.resourcesCPULimitError,x=e.resourcesCPULimit,v=e.resourcesMemoryRequestError,y=e.resourcesMemoryRequest,S=e.resourcesMemoryLimitError,C=e.resourcesMemoryLimit,j=(0,o.useCallback)((function(e,t){n("tenantSize",e,t)}),[n]);return(0,o.useEffect)((function(){r("tenantSize",""===v&&""===S&&""===g&&""===f)}),[r,v,S,g,f]),(0,o.useEffect)((function(){h.Z.invoke("GET","api/v1/cluster/allocatable-resources?num_nodes=".concat(a)).then((function(e){j("maxAllocatableResources",e);var t=e,n=c()(t,"min_allocatable_mem",!1),r=c()(t,"min_allocatable_cpu",!1);if(!1===n||!1===r)return j("cpuToUse",0),j("maxMemorySize",""),void j("maxCPUsUse","");var a=(0,Se.floor)(e.mem_priority.max_allocatable_mem/1024/1024/1024);j("maxMemorySize",a.toString()),j("maxCPUsUse",e.cpu_priority.max_allocatable_cpu.toString());var s=c()(t,"cpu_priority.max_allocatable_cpu",0),i=Math.max(1,(0,Se.floor)(s/2));""===p&&j("resourcesCPURequest",i);var o=Math.max(2,(0,Se.floor)(a/2));""===y&&j("resourcesMemoryRequest",o)})).catch((function(e){j("maxMemorySize",0),j("resourcesCPURequest",""),j("resourcesMemoryRequest",""),console.error(e)}))}),[a,j]),(0,k.jsxs)(o.Fragment,{children:[(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsxs)("div",{className:t.headerElement,children:[(0,k.jsx)("h3",{className:t.h3Section,children:"Resources"}),(0,k.jsx)("span",{className:t.descriptionText,children:"You may specify the amount of CPU and Memory that MinIO servers should reserve on each node."})]})}),""!==s.error&&(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsx)("div",{className:t.error,children:s.error})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{label:"CPU Request",id:"resourcesCPURequest",name:"resourcesCPURequest",onChange:function(e){var t=parseInt(e.target.value);""===e.target.value?j("resourcesCPURequestError",""):isNaN(t)?j("resourcesCPURequestError","Invalid number"):t>parseInt(l)?j("resourcesCPURequestError","Request exceeds available cores (".concat(l,")")):e.target.validity.valid?j("resourcesCPURequestError",""):j("resourcesCPURequestError","Invalid configuration"),j("resourcesCPURequest",e.target.value)},value:p,disabled:""===i,max:l,error:g,pattern:"[0-9]*"})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"resourcesMemoryRequest",name:"resourcesMemoryRequest",onChange:function(e){var t=parseInt(e.target.value);""===e.target.value?j("resourcesMemoryRequestError",""):isNaN(t)?j("resourcesMemoryRequestError","Invalid number"):t>parseInt(u)?j("resourcesMemoryRequestError","Request exceeds available memory across ".concat(a," nodes (").concat(u,"Gi)")):t<2?j("resourcesMemoryRequestError","At least 2Gi must be requested"):e.target.validity.valid?j("resourcesMemoryRequestError",""):j("resourcesMemoryRequestError","Invalid configuration"),j("resourcesMemoryRequest",e.target.value)},label:"Memory Request",overlayObject:(0,k.jsx)(T.Z,{id:"size-unit",onUnitChange:function(){},unitSelected:"Gi",unitsList:[{label:"Gi",value:"Gi"}],disabled:!0}),value:y,disabled:""===i,error:v,pattern:"[0-9]*"})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsx)(N.Z,{value:"resourcesSpecifyLimit",id:"resourcesSpecifyLimit",name:"resourcesSpecifyLimit",checked:m,onChange:function(e){var t=e.target.checked;j("resourcesSpecifyLimit",t)},label:"Specify Limit"})}),m&&(0,k.jsxs)(o.Fragment,{children:[(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{label:"CPU Limit",id:"resourcesCPULimit",name:"resourcesCPULimit",onChange:function(e){var t=parseInt(e.target.value);""===e.target.value?j("resourcesCPULimitError",""):isNaN(t)?j("resourcesCPULimitError","Invalid number"):e.target.validity.valid?j("resourcesCPULimitError",""):j("resourcesCPULimitError","Invalid configuration"),j("resourcesCPULimit",e.target.value)},value:x,disabled:""===i,max:l,error:f,pattern:"[0-9]*"})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"resourcesMemoryLimit",name:"resourcesMemoryLimit",onChange:function(e){var t=parseInt(e.target.value);console.log("value",t),""===e.target.value?j("resourcesMemoryLimitError",""):isNaN(t)?j("resourcesMemoryLimitError","Invalid number"):e.target.validity.valid?j("resourcesMemoryLimitError",""):j("resourcesMemoryLimitError","Invalid configuration"),j("resourcesMemoryLimit",e.target.value)},label:"Memory Limit",overlayObject:(0,k.jsx)(T.Z,{id:"size-unit",onUnitChange:function(){},unitSelected:"Gi",unitsList:[{label:"Gi",value:"Gi"}],disabled:!0}),value:C,disabled:""===i,error:S,pattern:"[0-9]*"})})]})]})}))),Ze=(0,u.$j)((function(e){return{volumeSize:e.tenants.createTenant.fields.tenantSize.volumeSize,sizeFactor:e.tenants.createTenant.fields.tenantSize.sizeFactor,drivesPerServer:e.tenants.createTenant.fields.tenantSize.drivesPerServer,nodes:e.tenants.createTenant.fields.tenantSize.nodes,memoryNode:e.tenants.createTenant.fields.tenantSize.memoryNode,ecParity:e.tenants.createTenant.fields.tenantSize.ecParity,ecParityChoices:e.tenants.createTenant.fields.tenantSize.ecParityChoices,cleanECChoices:e.tenants.createTenant.fields.tenantSize.cleanECChoices,resourcesSize:e.tenants.createTenant.fields.tenantSize.resourcesSize,distribution:e.tenants.createTenant.fields.tenantSize.distribution,ecParityCalc:e.tenants.createTenant.fields.tenantSize.ecParityCalc,limitSize:e.tenants.createTenant.limitSize,selectedStorageClass:e.tenants.createTenant.fields.nameTenant.selectedStorageClass}}),{updateAddField:j.HM,isPageValid:j.NO}),_e=(0,p.Z)((function(e){return(0,g.Z)((0,i.Z)((0,i.Z)((0,i.Z)({compositeFieldContainer:{display:"flex",alignItems:"center"},compositeAddOn:{marginLeft:10,"& div":{marginBottom:0},"@media (max-width: 900px)":{"& div":{marginTop:5}}}},f.DF),f.oO),f.AK))}))(Ze((function(e){var t=e.classes,n=e.updateAddField,r=e.isPageValid,a=e.volumeSize,i=e.sizeFactor,l=e.drivesPerServer,c=e.nodes,u=e.memoryNode,m=e.ecParity,g=e.ecParityChoices,p=e.cleanECChoices,f=e.resourcesSize,v=e.distribution,y=e.ecParityCalc,S=e.limitSize,C=e.selectedStorageClass,j=(0,o.useState)({}),Z=(0,s.Z)(j,2),_=Z[0],N=Z[1],R=(0,o.useState)(!1),z=(0,s.Z)(R,2),w=z[0],D=z[1],F=(0,o.useState)(""),E=(0,s.Z)(F,2),U=E[0],K=E[1],G=(0,o.useCallback)((function(e,t){n("tenantSize",e,t)}),[n]),q=function(e){N((0,b.h)(_,e))};return(0,o.useEffect)((function(){if(g.length>0&&""===v.error){var e=(0,x.ES)(p,v.persistentVolumes,v.pvSize,v.nodes);G("ecParityCalc",e),p.includes(m)&&""!==m||G("ecParity",e.defaultEC)}}),[m,g.length,v,p,G]),(0,o.useEffect)((function(){var e=a,t=i,n=(0,x.Pw)("12","Ti",!0),r={unit:t,value:e.toString()},s=(0,x.zg)(r,parseInt(c),parseInt(n),parseInt(l));G("distribution",s),D(!1),K("")}),[c,a,i,G,l]),(0,o.useEffect)((function(){var e=(0,x.Pw)(a,i,!0),t=(0,P.R)([{fieldKey:"nodes",required:!0,value:c,customValidation:w,customValidationMessage:U},{fieldKey:"volume_size",required:!0,value:a,customValidation:parseInt(e)<1073741824||parseInt(e)>S[C],customValidationMessage:"Volume size must be greater than 1Gi and less than ".concat((0,x.ae)(S[C],!0))},{fieldKey:"drivesps",required:!0,value:l,customValidation:parseInt(l)<1,customValidationMessage:"There must be at least one drive"}]);r("tenantSize",!("nodes"in t)&&!("volume_size"in t)&&!("drivesps"in t)&&""===v.error&&0===y.error&&""!==m),N(t)}),[c,a,i,u,v,y,f,S,C,r,w,U,l,m]),(0,o.useEffect)((function(){""===v.error&&""!==c.trim()&&0!==v.disks&&h.Z.invoke("GET","api/v1/get-parity/".concat(c,"/").concat(v.disks)).then((function(e){G("ecParityChoices",(0,ie.dv)(e)),G("cleanECChoices",e)})).catch((function(e){G("ecparityChoices",[]),r("tenantSize",!1),G("ecParity","")}))}),[v,r,G,c]),(0,k.jsxs)(o.Fragment,{children:[(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsxs)("div",{className:t.headerElement,children:[(0,k.jsx)("h3",{className:t.h3Section,children:"Capacity"}),(0,k.jsx)("span",{className:t.descriptionText,children:"Please select the desired capacity"})]})}),""!==v.error&&(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsx)("div",{className:t.error,children:v.error})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"nodes",name:"nodes",onChange:function(e){e.target.validity.valid&&(G("nodes",e.target.value),q("nodes"))},label:"Number of Servers",disabled:""===C,value:c,min:"4",required:!0,error:_.nodes||"",pattern:"[0-9]*"})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"drivesps",name:"drivesps",onChange:function(e){e.target.validity.valid&&(G("drivesPerServer",e.target.value),q("drivesps"))},label:"Drives per Server",value:l,disabled:""===C,min:"1",required:!0,error:_.drivesps||"",pattern:"[0-9]*"})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsx)("div",{className:t.formFieldRow,children:(0,k.jsx)(I.Z,{type:"number",id:"volume_size",name:"volume_size",onChange:function(e){G("volumeSize",e.target.value),q("volume_size")},label:"Total Size",value:a,disabled:""===C,required:!0,error:_.volume_size||"",min:"0",overlayObject:(0,k.jsx)(T.Z,{id:"size-unit",onUnitChange:function(e){G("sizeFactor",e)},unitSelected:i,unitsList:(0,x.zQ)(["Ki","Mi"]),disabled:""===C})})})}),(0,k.jsxs)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:[(0,k.jsx)(A.Z,{id:"ec_parity",name:"ec_parity",onChange:function(e){G("ecParity",e.target.value)},label:"Erasure Code Parity",disabled:""===C,value:m,options:g}),(0,k.jsx)("span",{className:t.descriptionText,children:"Please select the desired parity. This setting will change the max usable capacity in the cluster"})]}),(0,k.jsx)(je,{})]})}))),be=n(36222),Pe=(0,u.$j)((function(e){return function(){var t=e.tenants.createTenant,n=t.fields.tenantSize,r=n.memoryNode,a=n.ecParityChoices,s=n.distribution,i=n.cleanECChoices,o=n.sizeFactor,l=n.ecParity,c=n.cpuToUse,u=n.integrationSelection,d=n.resourcesSize,m=n.drivesPerServer,g=n.maxCPUsUse,p=n.ecParityCalc;return{volumeSize:n.volumeSize,sizeFactor:o,drivesPerServer:m,nodes:n.nodes,memoryNode:r,ecParity:l,ecParityChoices:a,cleanECChoices:i,resourcesSize:d,distribution:s,ecParityCalc:p,cpuToUse:c,maxCPUsUse:g,integrationSelection:u,limitSize:t.limitSize,selectedStorageType:t.fields.nameTenant.selectedStorageType}}}),{updateAddField:j.HM,isPageValid:j.NO}),Ne=(0,p.Z)((function(e){return(0,g.Z)((0,i.Z)((0,i.Z)((0,i.Z)({compositeFieldContainer:{display:"flex",alignItems:"center"},compositeAddOn:{marginLeft:10,"& div":{marginBottom:0},"@media (max-width: 900px)":{"& div":{marginTop:5}}}},f.DF),f.oO),f.AK))}))(Pe((function(e){var t=e.classes,n=e.updateAddField,r=e.isPageValid,a=e.volumeSize,i=e.sizeFactor,l=e.drivesPerServer,u=e.nodes,m=e.memoryNode,g=e.ecParity,p=e.ecParityChoices,f=e.cleanECChoices,v=e.resourcesSize,y=e.distribution,S=e.ecParityCalc,C=e.limitSize,j=e.cpuToUse,Z=e.selectedStorageType,_=e.maxCPUsUse,N=e.formToRender,T=e.integrationSelection,R=(0,o.useState)({}),z=(0,s.Z)(R,2),w=z[0],D=z[1],F=(0,o.useCallback)((function(e,t){n("tenantSize",e,t)}),[n]),E=(0,o.useCallback)((function(e,t){n("nameTenant",e,t)}),[n]);return(0,o.useEffect)((function(){if(p.length>0&&""===y.error){var e=(0,x.ES)(f,y.persistentVolumes,y.pvSize,y.nodes);F("ecParityCalc",e),f.includes(g)&&""!==g||F("ecParity",e.defaultEC)}}),[g,p,y,f,F]),(0,o.useEffect)((function(){if(void 0!==N&&parseInt(u)>=4){var e=Ae[N];if(Object.keys(e).length>0){var t=c()(e,"configurations",[]).find((function(e){return e.typeSelection===Z}));if(t){F("integrationSelection",t),E("selectedStorageClass",t.storageClass);var n={pvSize:parseInt((0,x.Pw)(t.driveSize.driveSize,t.driveSize.sizeUnit,!0),10),nodes:parseInt(u),disks:t.drivesPerServer,persistentVolumes:t.drivesPerServer*parseInt(u),error:""};F("distribution",n),F("resourcesCPURequest",Math.max(1,t.CPU/2)),F("resourcesMemoryRequest",Math.max(2,t.memory/2))}}}}),[u,Z,N,F,E]),(0,o.useEffect)((function(){var e=(0,P.R)([{fieldKey:"nodes",required:!0,value:u,customValidation:parseInt(u)<4,customValidationMessage:"Al least 4 servers must be selected"}]);r("tenantSize",!("nodes"in e)&&""===y.error&&0===S.error&&""===v.error&&""!==g&&parseInt(u)>=4),D(e)}),[u,a,i,m,y,S,v,C,Z,j,_,r,l,g]),(0,o.useEffect)((function(){0!==T.drivesPerServer&&""!==u.trim()&&h.Z.invoke("GET","api/v1/get-parity/".concat(u,"/").concat(T.drivesPerServer)).then((function(e){F("ecParityChoices",(0,ie.dv)(e)),F("cleanECChoices",e)})).catch((function(e){F("ecparityChoices",[]),r("tenantSize",!1),F("ecParity","")}))}),[T,u,r,F]),(0,k.jsxs)(o.Fragment,{children:[(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsxs)("div",{className:t.headerElement,children:[(0,k.jsx)("h3",{className:t.h3Section,children:"Tenant Size"}),(0,k.jsx)("span",{className:t.descriptionText,children:"Please select the desired capacity"})]})}),""!==y.error&&(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsx)("div",{className:t.error,children:y.error})}),""!==v.error&&(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsx)("div",{className:t.error,children:v.error})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"nodes",name:"nodes",onChange:function(e){var t;e.target.validity.valid&&(F("nodes",e.target.value),t="nodes",D((0,b.h)(w,t)))},label:"Number of Servers",disabled:""===Z,value:u,min:"4",required:!0,error:w.nodes||"",pattern:"[0-9]*"})}),(0,k.jsxs)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:[(0,k.jsx)(A.Z,{id:"ec_parity",name:"ec_parity",onChange:function(e){F("ecParity",e.target.value)},label:"Erasure Code Parity",disabled:""===Z,value:g,options:p}),(0,k.jsx)("span",{className:t.descriptionText,children:"Please select the desired parity. This setting will change the max usable capacity in the cluster"})]})]})})));!function(e){e[e.aws=0]="aws",e[e.azure=1]="azure",e[e.gcp=2]="gcp",e[e.default=3]="default",e[e[void 0]=4]="undefined"}(a||(a={}));var Ie={"mp-mode-aws":a.aws,"mp-mode-azure":a.azure,"mp-mode-gcp":a.gcp},Ae=(r={},(0,be.Z)(r,a.aws,{variantSelectorLabel:"Storage Type",variantSelectorValues:[{label:"NVME",value:"nvme"},{label:"HDD",value:"hdd"}],configurations:[{typeSelection:"nvme",storageClass:"nvme-i3en-12xlarge",CPU:48,memory:384,driveSize:{driveSize:"7500",sizeUnit:"Gi"},drivesPerServer:4},{typeSelection:"hdd",storageClass:"hdd-d3en-12xlarge",CPU:8,memory:32,driveSize:{driveSize:"12.7",sizeUnit:"Ti"},drivesPerServer:4}],sizingComponent:(0,k.jsx)(Ne,{formToRender:a.aws})}),(0,be.Z)(r,a.azure,{variantSelectorLabel:"VM Size",variantSelectorValues:[{label:"Standard_L32s_v2",value:"Standard_L32s_v2"},{label:"Standard_L48s_v2",value:"Standard_L48s_v2"},{label:"Standard_L64s_v2",value:"Standard_L64s_v2"}],configurations:[{typeSelection:"Standard_L8s_v2",storageClass:"local-nvme",CPU:8,memory:64,driveSize:{driveSize:"1787",sizeUnit:"Gi"},drivesPerServer:1},{typeSelection:"Standard_L16s_v2",storageClass:"local-nvme",CPU:16,memory:128,driveSize:{driveSize:"1787",sizeUnit:"Gi"},drivesPerServer:2},{typeSelection:"Standard_L32s_v2",storageClass:"local-nvme",CPU:32,memory:256,driveSize:{driveSize:"1787",sizeUnit:"Gi"},drivesPerServer:4},{typeSelection:"Standard_L48s_v2",storageClass:"local-nvme",CPU:48,memory:384,driveSize:{driveSize:"1787",sizeUnit:"Gi"},drivesPerServer:6},{typeSelection:"Standard_L64s_v2",storageClass:"local-nvme",CPU:64,memory:512,driveSize:{driveSize:"1787",sizeUnit:"Gi"},drivesPerServer:8}],sizingComponent:(0,k.jsx)(Ne,{formToRender:a.azure})}),(0,be.Z)(r,a.gcp,{variantSelectorLabel:"Storage Type",variantSelectorValues:[{label:"SSD",value:"ssd"}],configurations:[{typeSelection:"ssd",storageClass:"local-ssd",CPU:32,memory:128,driveSize:{driveSize:"368",sizeUnit:"Gi"},drivesPerServer:24}],sizingComponent:(0,k.jsx)(Ne,{formToRender:a.gcp})}),(0,be.Z)(r,a.default,{}),(0,be.Z)(r,a.undefined,{}),r),Te=(0,u.$j)((function(e){return{tenantName:e.tenants.createTenant.fields.nameTenant.tenantName,namespace:e.tenants.createTenant.fields.nameTenant.namespace,selectedStorageClass:e.tenants.createTenant.fields.nameTenant.selectedStorageClass,selectedStorageType:e.tenants.createTenant.fields.nameTenant.selectedStorageType,storageClasses:e.tenants.createTenant.storageClasses}}),{setModalErrorSnackMessage:y.zb,updateAddField:j.HM,setStorageClassesList:j.wZ,setLimitSize:j.DH,isPageValid:j.NO}),ke=(0,p.Z)((function(e){return(0,g.Z)((0,i.Z)((0,i.Z)((0,i.Z)({sizePreview:{position:"fixed",marginLeft:10,background:"#FFFFFF",border:"1px solid #EAEAEA",padding:2}},f.DF),f.oO),f.AK))}))(Te((function(e){var t=e.classes,n=e.storageClasses,r=e.tenantName,i=e.namespace,l=e.selectedStorageClass,u=e.selectedStorageType,m=e.formToRender,g=void 0===m?a.default:m,p=e.updateAddField,f=e.setStorageClassesList,x=e.setLimitSize,v=e.isPageValid,y=e.setModalErrorSnackMessage,S=(0,o.useState)({}),C=(0,s.Z)(S,2),j=C[0],Z=C[1],N=(0,o.useState)(!0),T=(0,s.Z)(N,2),R=T[0],z=T[1],w=(0,o.useState)(!1),D=(0,s.Z)(w,2),F=D[0],E=D[1],U=(0,o.useState)(!1),K=(0,s.Z)(U,2),G=K[0],q=K[1],L=(0,o.useState)(!1),M=(0,s.Z)(L,2),V=M[0],B=M[1],$=(0,o.useCallback)((function(e,t){p("nameTenant",e,t)}),[p]),W=(0,o.useCallback)((function(){q(!1),h.Z.invoke("GET","/api/v1/namespaces/".concat(i,"/tenants")).then((function(e){var t=c()(e,"tenants",[]);if(t&&t.length>0)return z(!1),void E(!1);z(!0),h.Z.invoke("GET","/api/v1/namespaces/".concat(i,"/resourcequotas/").concat(i,"-storagequota")).then((function(e){var t=c()(e,"elements",[]);x((0,ie.OU)(e));var n=t.map((function(e){var t=c()(e,"name","").split(".storageclass.storage.k8s.io/requests.storage")[0];return{label:t,value:t}}));f(n);var r=n.findIndex((function(e){return e.value===l}));n.length>0&&-1===r?$("selectedStorageClass",n[0].value):0===n.length&&($("selectedStorageClass",""),f([])),E(!1)})).catch((function(e){E(!1),q(!0),$("selectedStorageClass",""),f([]),console.error("Namespace error: ",e)}))})).catch((function(e){y({errorMessage:"Error validating if namespace already has tenants",detailedError:e.detailedError})}))}),[i,x,y,f,$,l]),H=(0,o.useMemo)((function(){return se()(W,500)}),[W]);(0,o.useEffect)((function(){if(""!==i)return H(),E(!0),H.cancel}),[H,i]),(0,o.useEffect)((function(){var e=!1,t="";R||F?n.length<1&&R&&!F&&(e=!0,t="Please enter a valid namespace"):(e=!0,t="You can only create one tenant per namespace");var s=(0,P.R)([{fieldKey:"tenant-name",required:!0,pattern:/^[a-z0-9-]{3,63}$/,customPatternMessage:"Name only can contain lowercase letters, numbers and '-'. Min. Length: 3",value:r},{fieldKey:"namespace",required:!0,value:i,customValidation:e,customValidationMessage:t}]),o=!("tenant-name"in s)&&!("namespace"in s)&&(g===a.default&&n.length>0||g!==a.default&&""!==u);v("nameTenant",o),Z(s)}),[n,i,r,v,R,F,u,g]);var Y=function(e){Z((0,b.h)(j,e))};return(0,k.jsxs)(o.Fragment,{children:[V&&(0,k.jsx)(me,{addNamespaceOpen:V,closeAddNamespaceModalAndRefresh:function(e){B(!1),e&&H()},namespace:i}),(0,k.jsxs)(d.ZP,{container:!0,children:[(0,k.jsx)(d.ZP,{item:!0,xs:8,md:9,children:(0,k.jsx)(_.Z,{className:t.paperWrapper,sx:{minHeight:550},children:(0,k.jsxs)(d.ZP,{container:!0,children:[(0,k.jsxs)(d.ZP,{item:!0,xs:12,children:[(0,k.jsxs)("div",{className:t.headerElement,children:[(0,k.jsx)("h3",{className:t.h3Section,children:"Name"}),(0,k.jsx)("span",{className:t.descriptionText,children:"How would you like to name this new tenant?"})]}),(0,k.jsx)("div",{className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"tenant-name",name:"tenant-name",onChange:function(e){$("tenantName",e.target.value),Y("tenant-name")},label:"Name",value:r,required:!0,error:j["tenant-name"]||""})})]}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"namespace",name:"namespace",onChange:function(e){$("namespace",e.target.value),Y("namespace")},label:"Namespace",value:i,error:j.namespace||"",overlayIcon:G?(0,k.jsx)(O.Z,{}):null,overlayAction:function(){B(!0)},required:!0})}),g===a.default?(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(A.Z,{id:"storage_class",name:"storage_class",onChange:function(e){$("selectedStorageClass",e.target.value)},label:"Storage Class",value:l,options:n,disabled:n.length<1})}):(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(A.Z,{id:"storage_type",name:"storage_type",onChange:function(e){$("selectedStorageType",e.target.value)},label:c()(Ae,"".concat(g,".variantSelectorLabel"),"Storage Type"),value:u,options:c()(Ae,"".concat(g,".variantSelectorValues"),[])})}),g===a.default?(0,k.jsx)(_e,{}):c()(Ae,"".concat(g,".sizingComponent"),null)]})})}),(0,k.jsx)(d.ZP,{item:!0,xs:4,md:3,children:(0,k.jsx)("div",{className:t.sizePreview,children:(0,k.jsx)(ye,{})})})]})]})}))),Re=(0,u.$j)((function(e){return{features:e.console.session.features}}),null)((function(e){var t=e.features,n=(0,o.useState)(null),r=(0,s.Z)(n,2),i=r[0],l=r[1];return(0,o.useEffect)((function(){var e=a.default;t&&0!==t.length&&Object.keys(Ie).forEach((function(n){t.includes(n)&&(e=c()(Ie,n,a.default))}));l(e)}),[t]),null===i?null:(0,k.jsx)(ke,{formToRender:i})})),ze=(0,u.$j)((function(e){return{namespace:e.tenants.createTenant.fields.nameTenant.namespace,validPages:e.tenants.createTenant.validPages,fields:e.tenants.createTenant.fields,certificates:e.tenants.createTenant.certificates,selectedStorageClass:e.tenants.createTenant.fields.nameTenant.selectedStorageClass}}),{setErrorSnackMessage:y.Ih,updateAddField:j.HM,resetAddTenantForm:j.dS}),we=(0,p.Z)((function(e){return(0,g.Z)((0,i.Z)((0,i.Z)((0,i.Z)({pageBox:{border:"1px solid #EAEAEA"}},f.oO),f.AK),f.Je))}))(ze((function(e){var t=e.classes,n=e.fields,r=e.certificates,a=e.selectedStorageClass,l=e.namespace,u=e.validPages,g=e.setErrorSnackMessage,p=e.resetAddTenantForm,f=(0,o.useState)(!1),y=(0,s.Z)(f,2),j=y[0],Z=y[1],_=(0,o.useState)(null),b=(0,s.Z)(_,2),P=b[0],N=b[1],I=(0,o.useState)(!1),A=(0,s.Z)(I,2),T=A[0],R=A[1];(0,o.useEffect)((function(){var e=n.nameTenant.tenantName,t=n.nameTenant.selectedStorageClass,a=n.configure.imageName,s=n.configure.customDockerhub,o=n.configure.imageRegistry,u=n.configure.imageRegistryUsername,d=n.configure.imageRegistryPassword,m=n.configure.exposeMinIO,p=n.configure.exposeConsole,f=n.identityProvider.idpSelection,v=n.identityProvider.openIDConfigurationURL,y=n.identityProvider.openIDClientID,C=n.identityProvider.openIDClaimName,j=n.identityProvider.openIDCallbackURL,_=n.identityProvider.openIDScopes,b=n.identityProvider.openIDSecretID,P=n.identityProvider.ADURL,I=n.identityProvider.ADSkipTLS,A=n.identityProvider.ADServerInsecure,k=n.identityProvider.ADUserNameSearchFilter,z=n.identityProvider.ADGroupSearchBaseDN,w=n.identityProvider.ADGroupSearchFilter,D=n.identityProvider.ADGroupNameAttribute,F=n.identityProvider.ADUserDNs,E=n.identityProvider.ADUserNameFormat,U=n.identityProvider.ADLookupBindDN,K=n.identityProvider.ADLookupBindPassword,G=n.identityProvider.ADUserDNSearchBaseDN,q=n.identityProvider.ADUserDNSearchFilter,L=n.identityProvider.ADServerStartTLS,M=n.identityProvider.accessKeys,V=n.identityProvider.secretKeys,O=r.minioCertificates,B=r.caCertificates,$=r.consoleCaCertificates,W=r.consoleCertificate,H=r.serverCertificate,Y=r.clientCertificate,Q=r.vaultCertificate,X=r.vaultCA,J=r.gemaltoCA,ee=n.encryption.enableEncryption,te=n.encryption.encryptionType,ne=n.encryption.gemaltoEndpoint,re=n.encryption.gemaltoToken,ae=n.encryption.gemaltoDomain,se=n.encryption.gemaltoRetry,ie=n.encryption.awsEndpoint,oe=n.encryption.awsRegion,le=n.encryption.awsKMSKey,ce=n.encryption.awsAccessKey,ue=n.encryption.awsSecretKey,de=n.encryption.awsToken,me=n.encryption.vaultEndpoint,ge=n.encryption.vaultEngine,pe=n.encryption.vaultNamespace,fe=n.encryption.vaultPrefix,he=n.encryption.vaultAppRoleEngine,xe=n.encryption.vaultId,ve=n.encryption.vaultSecret,ye=n.encryption.vaultRetry,Se=n.encryption.vaultPing,Ce=n.encryption.azureEndpoint,je=n.encryption.azureTenantID,Ze=n.encryption.azureClientID,_e=n.encryption.azureClientSecret,be=n.encryption.gcpProjectID,Pe=n.encryption.gcpEndpoint,Ne=n.encryption.gcpClientEmail,Ie=n.encryption.gcpClientID,Ae=n.encryption.gcpPrivateKeyID,Te=n.encryption.gcpPrivateKey,ke=n.security.enableAutoCert,Re=n.security.enableTLS,ze=n.tenantSize.ecParity,we=n.tenantSize.distribution,De=n.configure.tenantCustom,Fe=n.configure.logSearchCustom,Ee=n.configure.prometheusCustom,Ue=n.configure.logSearchVolumeSize,Ke=n.configure.logSearchSelectedStorageClass,Ge=n.configure.logSearchImage,qe=n.configure.kesImage,Le=n.configure.logSearchPostgresImage,Me=n.configure.logSearchPostgresInitImage,Ve=n.configure.prometheusImage,Oe=n.configure.prometheusSidecarImage,Be=n.configure.prometheusInitImage,$e=n.configure.prometheusSelectedStorageClass,We=n.configure.prometheusVolumeSize,He=n.affinity.podAffinity,Ye=n.affinity.nodeSelectorLabels,Qe=n.affinity.withPodAntiAffinity,Xe=n.configure.tenantSecurityContext,Je=n.configure.logSearchSecurityContext,et=n.configure.logSearchPostgresSecurityContext,tt=n.configure.prometheusSecurityContext,nt=n.encryption.kesSecurityContext,rt=n.encryption.replicas;if(T){var at=(0,x.en)([]),st={};switch(He){case"default":st={affinity:(0,S.P)(e,at)};break;case"nodeSelector":st={affinity:(0,S.q)(Ye,Qe,e,at)}}var it=ze.split(":")[1],ot={name:e,namespace:l,access_key:"",secret_key:"",access_keys:[],secret_keys:[],enable_tls:Re&&ke,enable_console:!0,enable_prometheus:!0,service_name:"",image:a,expose_minio:m,expose_console:p,pools:[(0,i.Z)({name:at,servers:we.nodes,volumes_per_server:we.disks,volume_configuration:{size:we.pvSize,storage_class_name:t},securityContext:De?Xe:null},st)],erasureCodingParity:parseInt(it,10)};""===n.tenantSize.resourcesCPURequest&&""===n.tenantSize.resourcesCPULimit&&""===n.tenantSize.resourcesMemoryRequest&&""===n.tenantSize.resourcesMemoryLimit||(ot.pools[0].resources={},""===n.tenantSize.resourcesCPURequest&&""===n.tenantSize.resourcesMemoryRequest||(ot.pools[0].resources.requests={},""!==n.tenantSize.resourcesCPURequest&&(ot.pools[0].resources.requests.cpu=parseInt(n.tenantSize.resourcesCPURequest)),""!==n.tenantSize.resourcesMemoryRequest&&(ot.pools[0].resources.requests.memory=parseInt((0,x.Pw)(n.tenantSize.resourcesMemoryRequest,"Gi",!0)))),""===n.tenantSize.resourcesCPULimit&&""===n.tenantSize.resourcesMemoryLimit||(ot.pools[0].resources.limits={},""!==n.tenantSize.resourcesCPULimit&&(ot.pools[0].resources.limits.cpu=parseInt(n.tenantSize.resourcesCPULimit)),""!==n.tenantSize.resourcesMemoryLimit&&(ot.pools[0].resources.limits.memory=parseInt((0,x.Pw)(n.tenantSize.resourcesMemoryLimit,"Gi",!0))))),s&&(ot=(0,i.Z)((0,i.Z)({},ot),{},{image_registry:{registry:o,username:u,password:d}})),ot=Fe?(0,i.Z)((0,i.Z)({},ot),{},{logSearchConfiguration:{storageClass:"default"===Ke?"":Ke,storageSize:parseInt(Ue),image:Ge,postgres_image:Le,postgres_init_image:Me,securityContext:Je,postgres_securityContext:et}}):(0,i.Z)((0,i.Z)({},ot),{},{logSearchConfiguration:{image:Ge,postgres_image:Le,postgres_init_image:Me}}),ot=Ee?(0,i.Z)((0,i.Z)({},ot),{},{prometheusConfiguration:{storageClass:"default"===$e?"":$e,storageSize:parseInt(We),image:Ve,sidecar_image:Oe,init_image:Be,securityContext:tt}}):(0,i.Z)((0,i.Z)({},ot),{},{prometheusConfiguration:{image:Ve,sidecar_image:Oe,init_image:Be}});var lt=null,ct=null,ut=null,dt=null;if(B.length>0&&(ut={ca_certificates:B.map((function(e){return e.encoded_cert})).filter((function(e){return e}))}),$.length>0&&(dt={console_ca_certificates:$.map((function(e){return e.encoded_cert})).filter((function(e){return e}))}),Re&&O.length>0&&(lt={minio:O.map((function(e){return{crt:e.encoded_cert,key:e.encoded_key}})).filter((function(e){return e.crt&&e.key}))}),Re&&""!==W.encoded_cert&&""!==W.encoded_key&&(ct={console:{crt:W.encoded_cert,key:W.encoded_key}}),(lt||ct||ut||dt)&&(ot=(0,i.Z)((0,i.Z)({},ot),{},{tls:(0,i.Z)((0,i.Z)((0,i.Z)((0,i.Z)({},lt),ct),ut),dt)})),ee){var mt={};switch(te){case"gemalto":var gt={};""!==J.encoded_cert&&(gt={ca:J.encoded_cert}),mt={gemalto:{keysecure:{endpoint:ne,credentials:{token:re,domain:ae,retry:parseInt(se)},tls:(0,i.Z)({},gt)}}};break;case"aws":mt={aws:{secretsmanager:{endpoint:ie,region:oe,kmskey:le,credentials:{accesskey:ce,secretkey:ue,token:de}}}};break;case"azure":mt={azure:{keyvault:{endpoint:Ce,credentials:{tenant_id:je,client_id:Ze,client_secret:_e}}}};break;case"gcp":mt={gcp:{secretmanager:{project_id:be,endpoint:Pe,credentials:{client_email:Ne,client_id:Ie,private_key_id:Ae,private_key:Te}}}};break;case"vault":var pt=null,ft=null;""!==Q.encoded_key&&""!==Q.encoded_cert&&(pt={key:Q.encoded_key,crt:Q.encoded_cert}),""!==X.encoded_cert&&(ft={ca:X.encoded_cert});var ht=null;(pt||X)&&(ht={tls:(0,i.Z)((0,i.Z)({},pt),ft)}),mt={vault:(0,i.Z)((0,i.Z)({endpoint:me,engine:ge,namespace:pe,prefix:fe,approle:{engine:he,id:xe,secret:ve,retry:parseInt(ye)}},ht),{},{status:{ping:parseInt(Se)}})}}var xt={},vt={};""!==Y.encoded_key&&""!==Y.encoded_cert&&(vt={client:{key:Y.encoded_key,crt:Y.encoded_cert}}),""!==H.encoded_key&&""!==H.encoded_cert&&(xt={server:{key:H.encoded_key,crt:H.encoded_cert}}),ot=(0,i.Z)((0,i.Z)({},ot),{},{encryption:(0,i.Z)((0,i.Z)((0,i.Z)({replicas:rt,securityContext:nt,image:qe},vt),xt),mt)})}var yt={};switch(f){case"Built-in":for(var St=[],Ct=0;Ct.\n\nimport React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { BackSettingsIcon } from \"../icons\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n link: {\n display: \"flex\",\n alignItems: \"center\",\n textDecoration: \"none\",\n maxWidth: \"300px\",\n padding: \"2rem 2rem 0rem 2rem\",\n color: theme.palette.primary.light,\n fontSize: \".8rem\",\n \"&:hover\": {\n textDecoration: \"underline\",\n },\n },\n icon: {\n marginRight: \".3rem\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n \"& svg.min-icon\": {\n width: 12,\n },\n },\n });\n\ninterface IBackLink {\n classes: any;\n to: string;\n label: string;\n className?: any;\n executeOnClick?: () => void;\n}\n\nconst BackLink = ({\n to,\n label,\n classes,\n className,\n executeOnClick,\n}: IBackLink) => {\n return (\n {\n if (executeOnClick) {\n executeOnClick();\n }\n }}\n >\n
\n \n
\n
{label}
\n \n );\n};\n\nexport default withStyles(styles)(BackLink);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { InputAdornment, OutlinedInput } from \"@mui/material\";\nimport BoxIconButton from \"../BoxIconButton/BoxIconButton\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport { CopyIcon } from \"../../../../icons\";\nimport { fieldBasic } from \"../FormComponents/common/styleLibrary\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n container: {\n display: \"flex\",\n flexFlow: \"column\",\n padding: \"20px 0 8px 0\",\n },\n inputWithCopy: {\n \"& .MuiInputBase-root \": {\n width: \"100%\",\n background: \"#FBFAFA\",\n \"& .MuiInputBase-input\": {\n height: \".8rem\",\n },\n \"& .MuiInputAdornment-positionEnd\": {\n marginRight: \".5rem\",\n \"& .MuiButtonBase-root\": {\n height: \"2rem\",\n },\n },\n },\n \"& .MuiButtonBase-root .min-icon\": {\n width: \".8rem\",\n height: \".8rem\",\n },\n },\n inputLabel: {\n ...fieldBasic.inputLabel,\n fontSize: \".8rem\",\n },\n });\n\nconst CredentialItem = ({\n label = \"\",\n value = \"\",\n classes = {},\n}: {\n label: string;\n value: string;\n classes: any;\n}) => {\n return (\n
\n
{label}:
\n
\n \n \n {}}\n onMouseDown={() => {}}\n edge=\"end\"\n >\n \n \n \n \n }\n />\n
\n
\n );\n};\n\nexport default withStyles(styles)(CredentialItem);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport get from \"lodash/get\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { NewServiceAccount } from \"./types\";\nimport { Button } from \"@mui/material\";\nimport ModalWrapper from \"../ModalWrapper/ModalWrapper\";\nimport Grid from \"@mui/material/Grid\";\nimport CredentialItem from \"./CredentialItem\";\nimport WarnIcon from \"../../../../icons/WarnIcon\";\nimport { DownloadIcon, ServiceAccountCredentialsIcon } from \"../../../../icons\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n warningBlock: {\n color: \"red\",\n fontSize: \".85rem\",\n margin: \".5rem 0 .5rem 0\",\n display: \"flex\",\n alignItems: \"center\",\n \"& svg \": {\n marginRight: \".3rem\",\n height: 16,\n width: 16,\n },\n },\n credentialTitle: {\n padding: \".8rem 0 0 0\",\n fontWeight: 600,\n fontSize: \".9rem\",\n },\n buttonContainer: {\n textAlign: \"right\",\n marginTop: \"1rem\",\n },\n credentialsPanel: {\n overflowY: \"auto\",\n maxHeight: 350,\n },\n promptTitle: {\n display: \"flex\",\n alignItems: \"center\",\n },\n buttonSpacer: {\n marginRight: \".9rem\",\n },\n promptIcon: {\n marginRight: \".1rem\",\n display: \"flex\",\n alignItems: \"center\",\n height: \"2rem\",\n width: \"2rem\",\n },\n });\n\ninterface ICredentialsPromptProps {\n classes: any;\n newServiceAccount: NewServiceAccount | null;\n open: boolean;\n entity: string;\n closeModal: () => void;\n}\n\nconst download = (filename: string, text: string) => {\n let element = document.createElement(\"a\");\n element.setAttribute(\n \"href\",\n \"data:text/plain;charset=utf-8,\" + encodeURIComponent(text)\n );\n element.setAttribute(\"download\", filename);\n\n element.style.display = \"none\";\n document.body.appendChild(element);\n\n element.click();\n document.body.removeChild(element);\n};\n\nconst CredentialsPrompt = ({\n classes,\n newServiceAccount,\n open,\n closeModal,\n entity,\n}: ICredentialsPromptProps) => {\n if (!newServiceAccount) {\n return null;\n }\n const consoleCreds = get(newServiceAccount, \"console\", null);\n const idp = get(newServiceAccount, \"idp\", false);\n\n return (\n {\n closeModal();\n }}\n title={\n
\n
New {entity} Created
\n
\n }\n titleIcon={}\n >\n \n \n A new {entity} has been created with the following details:\n {!idp && consoleCreds && (\n \n \n
\n Console Credentials\n
\n {Array.isArray(consoleCreds) &&\n consoleCreds.map((credentialsPair, index) => {\n return (\n <>\n \n \n \n );\n })}\n {!Array.isArray(consoleCreds) && (\n <>\n \n \n \n )}\n
\n
\n )}\n {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 {\n closeModal();\n }}\n color=\"primary\"\n >\n Done\n \n\n {!idp && (\n {\n let consoleExtras = {};\n\n if (consoleCreds) {\n if (!Array.isArray(consoleCreds)) {\n consoleExtras = {\n console: [\n {\n url: consoleCreds.url,\n access_key: consoleCreds.accessKey,\n secret_key: consoleCreds.secretKey,\n api: \"s3v4\",\n path: \"auto\",\n },\n ],\n };\n } else {\n const cCreds = consoleCreds.map((itemMap) => {\n return {\n url: itemMap.url,\n access_key: itemMap.accessKey,\n secret_key: itemMap.secretKey,\n api: \"s3v4\",\n path: \"auto\",\n };\n });\n\n consoleExtras = {\n console: [...cCreds],\n };\n }\n }\n\n download(\n \"credentials.json\",\n JSON.stringify({\n ...consoleExtras,\n })\n );\n }}\n endIcon={}\n variant=\"contained\"\n color=\"primary\"\n >\n Download\n \n )}\n \n
\n \n );\n};\n\nexport default withStyles(styles)(CredentialsPrompt);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport get from \"lodash/get\";\nimport { Grid, InputLabel, Tooltip } from \"@mui/material\";\nimport IconButton from \"@mui/material/IconButton\";\nimport AttachFileIcon from \"@mui/icons-material/AttachFile\";\nimport CancelIcon from \"@mui/icons-material/Cancel\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n fieldBasic,\n fileInputStyles,\n tooltipHelper,\n} from \"../common/styleLibrary\";\nimport { fileProcess } from \"./utils\";\nimport HelpIcon from \"../../../../../icons/HelpIcon\";\nimport ErrorBlock from \"../../../../shared/ErrorBlock\";\n\ninterface InputBoxProps {\n label: string;\n classes: any;\n onChange: (e: string, i: string) => void;\n id: string;\n name: string;\n disabled?: boolean;\n tooltip?: string;\n required?: boolean;\n error?: string;\n accept?: string;\n value?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n valueString: {\n maxWidth: 350,\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n marginTop: 2,\n },\n fileInputField: {\n margin: \"13px 0\",\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n },\n },\n ...fileInputStyles,\n inputLabel: {\n ...fieldBasic.inputLabel,\n fontWeight: \"normal\",\n },\n textBoxContainer: {\n ...fieldBasic.textBoxContainer,\n maxWidth: \"100%\",\n border: \"1px solid #eaeaea\",\n paddingLeft: \"15px\",\n },\n });\n\nconst FileSelector = ({\n label,\n classes,\n onChange,\n id,\n name,\n disabled = false,\n tooltip = \"\",\n required,\n error = \"\",\n accept = \"\",\n value = \"\",\n}: InputBoxProps) => {\n const [showFileSelector, setShowSelector] = useState(false);\n\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
\n \n
\n \n
\n
\n
\n )}\n \n )}\n\n {showFileSelector || value === \"\" ? (\n
\n {\n const fileName = get(e, \"target.files[0].name\", \"\");\n fileProcess(e, (data: any) => {\n onChange(data, fileName);\n });\n }}\n accept={accept}\n required={required}\n disabled={disabled}\n className={classes.fileInputField}\n />\n\n {value !== \"\" && (\n {\n setShowSelector(false);\n }}\n disableRipple={false}\n disableFocusRipple={false}\n size=\"small\"\n >\n \n \n )}\n\n {error !== \"\" && }\n
\n ) : (\n
\n
{value}
\n {\n setShowSelector(true);\n }}\n disableRipple={false}\n disableFocusRipple={false}\n size=\"small\"\n >\n \n \n
\n )}\n \n
\n );\n};\n\nexport default withStyles(styles)(FileSelector);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nexport const fileProcess = (evt: any, callback: any) => {\n const file = evt.target.files[0];\n const reader = new FileReader();\n reader.readAsDataURL(file);\n\n reader.onload = () => {\n // reader.readAsDataURL(file) output will be something like: data:application/x-x509-ca-cert;base64,LS0tLS1CRUdJTiBDRVJUSU\n // we care only about the actual base64 part (everything after \"data:application/x-x509-ca-cert;base64,\")\n const fileBase64 = reader.result;\n if (fileBase64) {\n const fileArray = fileBase64.toString().split(\"base64,\");\n\n if (fileArray.length === 2) {\n callback(fileArray[1]);\n }\n }\n };\n};\n","import React from \"react\";\nimport { Grid } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { pageContentStyles } from \"../FormComponents/common/styleLibrary\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...pageContentStyles,\n });\n\ntype PageLayoutProps = {\n className?: string;\n classes?: any;\n children: any;\n};\n\nconst PageLayout = ({ classes, className = \"\", children }: PageLayoutProps) => {\n return (\n
\n \n \n {children}\n \n \n
\n );\n};\n\nexport default withStyles(styles)(PageLayout);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should 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 { Opts } from \"../../../ListTenants/utils\";\nimport TenantSizeMK from \"./TenantSizeMK\";\n\nexport enum IMkEnvs {\n \"aws\",\n \"azure\",\n \"gcp\",\n \"default\",\n undefined,\n}\n\nexport interface IDriveSizing {\n driveSize: string;\n sizeUnit: string;\n}\n\nexport interface IntegrationConfiguration {\n typeSelection: string;\n storageClass: string;\n CPU: number;\n memory: number;\n drivesPerServer: number;\n driveSize: IDriveSizing;\n}\n\nexport const AWSStorageTypes: Opts[] = [\n { label: \"NVME\", value: \"nvme\" },\n { label: \"HDD\", value: \"hdd\" },\n];\n\nexport const AzureStorageTypes: Opts[] = [\n { label: \"Standard_L32s_v2\", value: \"Standard_L32s_v2\" },\n { label: \"Standard_L48s_v2\", value: \"Standard_L48s_v2\" },\n { label: \"Standard_L64s_v2\", value: \"Standard_L64s_v2\" },\n];\n\nexport const resourcesConfigurations = {\n \"mp-mode-aws\": IMkEnvs.aws,\n \"mp-mode-azure\": IMkEnvs.azure,\n \"mp-mode-gcp\": IMkEnvs.gcp,\n};\n\nexport const AWSConfigurations: IntegrationConfiguration[] = [\n {\n typeSelection: \"nvme\",\n storageClass: \"nvme-i3en-12xlarge\",\n CPU: 48,\n memory: 384,\n driveSize: { driveSize: \"7500\", sizeUnit: \"Gi\" },\n drivesPerServer: 4,\n },\n {\n typeSelection: \"hdd\",\n storageClass: \"hdd-d3en-12xlarge\",\n CPU: 8,\n memory: 32,\n driveSize: { driveSize: \"12.7\", sizeUnit: \"Ti\" },\n drivesPerServer: 4,\n },\n];\n\nexport const AzureConfigurations: IntegrationConfiguration[] = [\n {\n typeSelection: \"Standard_L8s_v2\",\n storageClass: \"local-nvme\",\n CPU: 8,\n memory: 64,\n driveSize: { driveSize: \"1787\", sizeUnit: \"Gi\" },\n drivesPerServer: 1,\n },\n {\n typeSelection: \"Standard_L16s_v2\",\n storageClass: \"local-nvme\",\n CPU: 16,\n memory: 128,\n driveSize: { driveSize: \"1787\", sizeUnit: \"Gi\" },\n drivesPerServer: 2,\n },\n {\n typeSelection: \"Standard_L32s_v2\",\n storageClass: \"local-nvme\",\n CPU: 32,\n memory: 256,\n driveSize: { driveSize: \"1787\", sizeUnit: \"Gi\" },\n drivesPerServer: 4,\n },\n {\n typeSelection: \"Standard_L48s_v2\",\n storageClass: \"local-nvme\",\n CPU: 48,\n memory: 384,\n driveSize: { driveSize: \"1787\", sizeUnit: \"Gi\" },\n drivesPerServer: 6,\n },\n {\n typeSelection: \"Standard_L64s_v2\",\n storageClass: \"local-nvme\",\n CPU: 64,\n memory: 512,\n driveSize: { driveSize: \"1787\", sizeUnit: \"Gi\" },\n drivesPerServer: 8,\n },\n];\n\nexport const GCPStorageTypes: Opts[] = [{ label: \"SSD\", value: \"ssd\" }];\n\nexport const GCPConfigurations: IntegrationConfiguration[] = [\n {\n typeSelection: \"ssd\",\n storageClass: \"local-ssd\",\n CPU: 32,\n memory: 128,\n driveSize: { driveSize: \"368\", sizeUnit: \"Gi\" },\n drivesPerServer: 24,\n },\n];\n\nexport const mkPanelConfigurations = {\n [IMkEnvs.aws]: {\n variantSelectorLabel: \"Storage Type\",\n variantSelectorValues: AWSStorageTypes,\n configurations: AWSConfigurations,\n sizingComponent: ,\n },\n [IMkEnvs.azure]: {\n variantSelectorLabel: \"VM Size\",\n variantSelectorValues: AzureStorageTypes,\n configurations: AzureConfigurations,\n sizingComponent: ,\n },\n [IMkEnvs.gcp]: {\n variantSelectorLabel: \"Storage Type\",\n variantSelectorValues: GCPStorageTypes,\n configurations: GCPConfigurations,\n sizingComponent: ,\n },\n [IMkEnvs.default]: {},\n [IMkEnvs.undefined]: {},\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, { useCallback, useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Grid, Paper, SelectChangeEvent } from \"@mui/material\";\nimport {\n createTenantCommon,\n modalBasic,\n wizardCommon,\n} from \"../../../Common/FormComponents/common/styleLibrary\";\nimport { isPageValid, updateAddField } from \"../../actions\";\nimport { AppState } from \"../../../../../store\";\nimport { clearValidationError } from \"../../utils\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../utils/validationFunctions\";\nimport FormSwitchWrapper from \"../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport InputBoxWrapper from \"../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport SelectWrapper from \"../../../Common/FormComponents/SelectWrapper/SelectWrapper\";\nimport { ISecurityContext } from \"../../types\";\nimport InputUnitMenu from \"../../../Common/FormComponents/InputUnitMenu/InputUnitMenu\";\n\ninterface IConfigureProps {\n updateAddField: typeof updateAddField;\n isPageValid: typeof isPageValid;\n storageClasses: any;\n classes: any;\n customImage: boolean;\n imageName: string;\n customDockerhub: boolean;\n imageRegistry: string;\n imageRegistryUsername: string;\n imageRegistryPassword: string;\n exposeMinIO: boolean;\n exposeConsole: boolean;\n prometheusCustom: boolean;\n tenantCustom: boolean;\n logSearchCustom: boolean;\n logSearchVolumeSize: string;\n logSearchSizeFactor: string;\n prometheusVolumeSize: string;\n prometheusSizeFactor: string;\n logSearchSelectedStorageClass: string;\n logSearchImage: string;\n kesImage: string;\n logSearchPostgresImage: string;\n logSearchPostgresInitImage: string;\n prometheusSelectedStorageClass: string;\n prometheusImage: string;\n prometheusSidecarImage: string;\n prometheusInitImage: string;\n selectedStorageClass: string;\n tenantSecurityContext: ISecurityContext;\n logSearchSecurityContext: ISecurityContext;\n logSearchPostgresSecurityContext: ISecurityContext;\n prometheusSecurityContext: ISecurityContext;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n configSectionItem: {\n marginRight: 15,\n\n \"& .multiContainer\": {\n border: \"1px solid red\",\n },\n },\n tenantCustomizationFields: {\n marginLeft: 30, // 2nd Level(15+15)\n width: \"88%\",\n margin: \"auto\",\n },\n containerItem: {\n marginRight: 15,\n },\n fieldGroup: {\n ...createTenantCommon.fieldGroup,\n paddingTop: 15,\n marginBottom: 25,\n },\n responsiveSectionItem: {\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n alignItems: \"flex-start\",\n\n \"& div > div\": {\n marginBottom: 5,\n marginRight: 0,\n },\n },\n },\n\n logSearchCustomFields: {\n marginLeft: 20, // 2nd Level(15+15)\n padding: 10,\n width: \"90%\",\n margin: \"auto\",\n },\n fieldSpaceTop: {\n marginTop: 15,\n },\n prometheusCustomFields: {\n marginLeft: 20, // 2nd Level(15+15)\n padding: 10,\n width: \"90%\",\n margin: \"auto\",\n },\n ...modalBasic,\n ...wizardCommon,\n });\n\nconst Configure = ({\n classes,\n storageClasses,\n customImage,\n imageName,\n customDockerhub,\n imageRegistry,\n imageRegistryUsername,\n imageRegistryPassword,\n exposeMinIO,\n exposeConsole,\n prometheusCustom,\n tenantCustom,\n logSearchCustom,\n logSearchVolumeSize,\n logSearchSizeFactor,\n logSearchImage,\n kesImage,\n logSearchPostgresImage,\n logSearchPostgresInitImage,\n prometheusVolumeSize,\n prometheusSizeFactor,\n logSearchSelectedStorageClass,\n prometheusSelectedStorageClass,\n prometheusImage,\n prometheusSidecarImage,\n prometheusInitImage,\n updateAddField,\n isPageValid,\n selectedStorageClass,\n tenantSecurityContext,\n logSearchSecurityContext,\n logSearchPostgresSecurityContext,\n prometheusSecurityContext,\n}: IConfigureProps) => {\n const [validationErrors, setValidationErrors] = useState({});\n\n const configureSTClasses = [\n { label: \"Default\", value: \"default\" },\n ...storageClasses,\n ];\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n updateAddField(\"configure\", field, value);\n },\n [updateAddField]\n );\n\n // Validation\n useEffect(() => {\n let customAccountValidation: IValidation[] = [];\n if (tenantCustom) {\n customAccountValidation = [\n ...customAccountValidation,\n {\n fieldKey: \"tenant_securityContext_runAsUser\",\n required: true,\n value: tenantSecurityContext.runAsUser,\n customValidation:\n tenantSecurityContext.runAsUser === \"\" ||\n parseInt(tenantSecurityContext.runAsUser) < 0,\n customValidationMessage: `runAsUser must be present and be 0 or more`,\n },\n {\n fieldKey: \"tenant_securityContext_runAsGroup\",\n required: true,\n value: tenantSecurityContext.runAsGroup,\n customValidation:\n tenantSecurityContext.runAsGroup === \"\" ||\n parseInt(tenantSecurityContext.runAsGroup) < 0,\n customValidationMessage: `runAsGroup must be present and be 0 or more`,\n },\n {\n fieldKey: \"tenant_securityContext_fsGroup\",\n required: true,\n value: tenantSecurityContext.fsGroup,\n customValidation:\n tenantSecurityContext.fsGroup === \"\" ||\n parseInt(tenantSecurityContext.fsGroup) < 0,\n customValidationMessage: `fsGroup must be present and be 0 or more`,\n },\n ];\n }\n if (prometheusCustom) {\n customAccountValidation = [\n ...customAccountValidation,\n {\n fieldKey: \"prometheus_storage_class\",\n required: true,\n value: prometheusSelectedStorageClass,\n customValidation: prometheusSelectedStorageClass === \"\",\n customValidationMessage: \"Field cannot be empty\",\n },\n {\n fieldKey: \"prometheus_volume_size\",\n required: true,\n value: prometheusVolumeSize,\n customValidation:\n prometheusVolumeSize === \"\" || parseInt(prometheusVolumeSize) <= 0,\n customValidationMessage: `Volume size must be present and be greater than 0`,\n },\n {\n fieldKey: \"prometheus_securityContext_runAsUser\",\n required: true,\n value: prometheusSecurityContext.runAsUser,\n customValidation:\n prometheusSecurityContext.runAsUser === \"\" ||\n parseInt(prometheusSecurityContext.runAsUser) < 0,\n customValidationMessage: `runAsUser must be present and be 0 or more`,\n },\n {\n fieldKey: \"prometheus_securityContext_runAsGroup\",\n required: true,\n value: prometheusSecurityContext.runAsGroup,\n customValidation:\n prometheusSecurityContext.runAsGroup === \"\" ||\n parseInt(prometheusSecurityContext.runAsGroup) < 0,\n customValidationMessage: `runAsGroup must be present and be 0 or more`,\n },\n {\n fieldKey: \"prometheus_securityContext_fsGroup\",\n required: true,\n value: prometheusSecurityContext.fsGroup,\n customValidation:\n prometheusSecurityContext.fsGroup === \"\" ||\n parseInt(prometheusSecurityContext.fsGroup) < 0,\n customValidationMessage: `fsGroup must be present and be 0 or more`,\n },\n ];\n }\n if (logSearchCustom) {\n customAccountValidation = [\n ...customAccountValidation,\n {\n fieldKey: \"log_search_storage_class\",\n required: true,\n value: logSearchSelectedStorageClass,\n customValidation: logSearchSelectedStorageClass === \"\",\n customValidationMessage: \"Field cannot be empty\",\n },\n {\n fieldKey: \"log_search_volume_size\",\n required: true,\n value: logSearchVolumeSize,\n customValidation:\n logSearchVolumeSize === \"\" || parseInt(logSearchVolumeSize) <= 0,\n customValidationMessage: `Volume size must be present and be greatter than 0`,\n },\n {\n fieldKey: \"logSearch_securityContext_runAsUser\",\n required: true,\n value: logSearchSecurityContext.runAsUser,\n customValidation:\n logSearchSecurityContext.runAsUser === \"\" ||\n parseInt(logSearchSecurityContext.runAsUser) < 0,\n customValidationMessage: `runAsUser must be present and be 0 or more`,\n },\n {\n fieldKey: \"logSearch_securityContext_runAsGroup\",\n required: true,\n value: logSearchSecurityContext.runAsGroup,\n customValidation:\n logSearchSecurityContext.runAsGroup === \"\" ||\n parseInt(logSearchSecurityContext.runAsGroup) < 0,\n customValidationMessage: `runAsGroup must be present and be 0 or more`,\n },\n {\n fieldKey: \"logSearch_securityContext_fsGroup\",\n required: true,\n value: logSearchSecurityContext.fsGroup,\n customValidation:\n logSearchSecurityContext.fsGroup === \"\" ||\n parseInt(logSearchSecurityContext.fsGroup) < 0,\n customValidationMessage: `fsGroup must be present and be 0 or more`,\n },\n {\n fieldKey: \"postgres_securityContext_runAsUser\",\n required: true,\n value: logSearchPostgresSecurityContext.runAsUser,\n customValidation:\n logSearchPostgresSecurityContext.runAsUser === \"\" ||\n parseInt(logSearchPostgresSecurityContext.runAsUser) < 0,\n customValidationMessage: `runAsUser must be present and be 0 or more`,\n },\n {\n fieldKey: \"postgres_securityContext_runAsGroup\",\n required: true,\n value: prometheusSecurityContext.runAsGroup,\n customValidation:\n logSearchPostgresSecurityContext.runAsGroup === \"\" ||\n parseInt(logSearchPostgresSecurityContext.runAsGroup) < 0,\n customValidationMessage: `runAsGroup must be present and be 0 or more`,\n },\n {\n fieldKey: \"postgres_securityContext_fsGroup\",\n required: true,\n value: logSearchPostgresSecurityContext.fsGroup,\n customValidation:\n logSearchPostgresSecurityContext.fsGroup === \"\" ||\n parseInt(logSearchPostgresSecurityContext.fsGroup) < 0,\n customValidationMessage: `fsGroup must be present and be 0 or more`,\n },\n ];\n }\n\n if (customImage) {\n customAccountValidation = [\n ...customAccountValidation,\n {\n fieldKey: \"image\",\n required: false,\n value: imageName,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage: \"Format must be of form: 'minio/minio:VERSION'\",\n },\n {\n fieldKey: \"logSearchImage\",\n required: false,\n value: logSearchImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage:\n \"Format must be of form: 'minio/logsearchapi:VERSION'\",\n },\n {\n fieldKey: \"kesImage\",\n required: false,\n value: kesImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage: \"Format must be of form: 'minio/kes:VERSION'\",\n },\n {\n fieldKey: \"logSearchPostgresImage\",\n required: false,\n value: logSearchPostgresImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage:\n \"Format must be of form: 'library/postgres:VERSION'\",\n },\n {\n fieldKey: \"logSearchPostgresInitImage\",\n required: false,\n value: logSearchPostgresInitImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage:\n \"Format must be of form: 'library/busybox:VERSION'\",\n },\n {\n fieldKey: \"prometheusImage\",\n required: false,\n value: prometheusImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage:\n \"Format must be of form: 'minio/prometheus:VERSION'\",\n },\n {\n fieldKey: \"prometheusSidecarImage\",\n required: false,\n value: prometheusSidecarImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage:\n \"Format must be of form: 'project/container:VERSION'\",\n },\n {\n fieldKey: \"prometheusInitImage\",\n required: false,\n value: prometheusInitImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage:\n \"Format must be of form: 'library/busybox:VERSION'\",\n },\n ];\n if (customDockerhub) {\n customAccountValidation = [\n ...customAccountValidation,\n {\n fieldKey: \"registry\",\n required: true,\n value: imageRegistry,\n },\n {\n fieldKey: \"registryUsername\",\n required: true,\n value: imageRegistryUsername,\n },\n {\n fieldKey: \"registryPassword\",\n required: true,\n value: imageRegistryPassword,\n },\n ];\n }\n }\n\n const commonVal = commonFormValidation(customAccountValidation);\n\n isPageValid(\"configure\", Object.keys(commonVal).length === 0);\n\n setValidationErrors(commonVal);\n }, [\n customImage,\n imageName,\n logSearchImage,\n kesImage,\n logSearchPostgresImage,\n logSearchPostgresInitImage,\n prometheusImage,\n prometheusSidecarImage,\n prometheusInitImage,\n customDockerhub,\n imageRegistry,\n imageRegistryUsername,\n imageRegistryPassword,\n isPageValid,\n prometheusCustom,\n tenantCustom,\n logSearchCustom,\n prometheusSelectedStorageClass,\n prometheusVolumeSize,\n logSearchSelectedStorageClass,\n logSearchVolumeSize,\n tenantSecurityContext,\n logSearchSecurityContext,\n logSearchPostgresSecurityContext,\n prometheusSecurityContext,\n ]);\n\n useEffect(() => {\n // New default values in current selection is invalid\n if (storageClasses.length > 0) {\n const filterPrometheus = storageClasses.filter(\n (item: any) => item.value === prometheusSelectedStorageClass\n );\n if (filterPrometheus.length === 0) {\n updateField(\"prometheusSelectedStorageClass\", \"default\");\n }\n\n const filterLogSearch = storageClasses.filter(\n (item: any) => item.value === logSearchSelectedStorageClass\n );\n if (filterLogSearch.length === 0) {\n updateField(\"logSearchSelectedStorageClass\", \"default\");\n }\n }\n }, [\n logSearchSelectedStorageClass,\n prometheusSelectedStorageClass,\n selectedStorageClass,\n storageClasses,\n updateField,\n ]);\n\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n return (\n \n
\n

Configure

\n \n Basic configurations for tenant management\n \n
\n
\n

Expose Services

\n \n Whether the tenant's services should request an external IP.\n \n
\n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"exposeMinIO\", checked);\n }}\n label={\"Expose MiniO Service\"}\n />\n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"exposeConsole\", checked);\n }}\n label={\"Expose Console Service\"}\n />\n \n\n
\n

Additional Configurations

\n \n Configure SecurityContext, Storage Classes & Storage size for Log\n Search, Prometheus add-ons and your Tenant\n \n
\n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"tenantCustom\", checked);\n }}\n label={\"Override Tenant defaults\"}\n />\n \n {tenantCustom && (\n \n
\n \n SecurityContext for MinIO\n \n \n \n
\n ) => {\n updateField(\"tenantSecurityContext\", {\n ...tenantSecurityContext,\n runAsUser: e.target.value,\n });\n cleanValidation(\"tenant_securityContext_runAsUser\");\n }}\n label=\"Run As User\"\n value={tenantSecurityContext.runAsUser}\n required\n error={\n validationErrors[\"tenant_securityContext_runAsUser\"] || \"\"\n }\n min=\"0\"\n />\n
\n
\n ) => {\n updateField(\"tenantSecurityContext\", {\n ...tenantSecurityContext,\n runAsGroup: e.target.value,\n });\n cleanValidation(\"tenant_securityContext_runAsGroup\");\n }}\n label=\"Run As Group\"\n value={tenantSecurityContext.runAsGroup}\n required\n error={\n validationErrors[\"tenant_securityContext_runAsGroup\"] ||\n \"\"\n }\n min=\"0\"\n />\n
\n
\n ) => {\n updateField(\"tenantSecurityContext\", {\n ...tenantSecurityContext,\n fsGroup: e.target.value,\n });\n cleanValidation(\"tenant_securityContext_fsGroup\");\n }}\n label=\"FsGroup\"\n value={tenantSecurityContext.fsGroup}\n required\n error={\n validationErrors[\"tenant_securityContext_fsGroup\"] || \"\"\n }\n min=\"0\"\n />\n
\n \n
\n
\n \n
\n {\n const targetD = e.target;\n const checked = targetD.checked;\n updateField(\"tenantSecurityContext\", {\n ...tenantSecurityContext,\n runAsNonRoot: checked,\n });\n }}\n label={\"Do not run as Root\"}\n />\n
\n
\n
\n
\n )}\n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"logSearchCustom\", checked);\n }}\n label={\"Override Log Search defaults\"}\n />\n \n {logSearchCustom && (\n \n \n ) => {\n updateField(\n \"logSearchSelectedStorageClass\",\n e.target.value as string\n );\n }}\n label=\"Log Search Storage Class\"\n value={logSearchSelectedStorageClass}\n options={configureSTClasses}\n disabled={configureSTClasses.length < 1}\n />\n \n \n
\n ) => {\n updateField(\"logSearchVolumeSize\", e.target.value);\n cleanValidation(\"log_search_volume_size\");\n }}\n label=\"Storage Size\"\n overlayObject={\n {}}\n unitSelected={\"Gi\"}\n unitsList={[{ label: \"Gi\", value: \"Gi\" }]}\n disabled={true}\n />\n }\n value={logSearchVolumeSize}\n required\n error={validationErrors[\"log_search_volume_size\"] || \"\"}\n min=\"0\"\n />\n
\n
\n\n \n \n SecurityContext for LogSearch\n \n\n \n \n
\n ) => {\n updateField(\"logSearchSecurityContext\", {\n ...logSearchSecurityContext,\n runAsUser: e.target.value,\n });\n cleanValidation(\"logSearch_securityContext_runAsUser\");\n }}\n label=\"Run As User\"\n value={logSearchSecurityContext.runAsUser}\n required\n error={\n validationErrors[\"logSearch_securityContext_runAsUser\"] ||\n \"\"\n }\n min=\"0\"\n />\n
\n
\n ) => {\n updateField(\"logSearchSecurityContext\", {\n ...logSearchSecurityContext,\n runAsGroup: e.target.value,\n });\n cleanValidation(\"logSearch_securityContext_runAsGroup\");\n }}\n label=\"Run As Group\"\n value={logSearchSecurityContext.runAsGroup}\n required\n error={\n validationErrors[\n \"logSearch_securityContext_runAsGroup\"\n ] || \"\"\n }\n min=\"0\"\n />\n
\n
\n ) => {\n updateField(\"logSearchSecurityContext\", {\n ...logSearchSecurityContext,\n fsGroup: e.target.value,\n });\n cleanValidation(\"logSearch_securityContext_fsGroup\");\n }}\n label=\"FsGroup\"\n value={logSearchSecurityContext.fsGroup}\n required\n error={\n validationErrors[\"logSearch_securityContext_fsGroup\"] ||\n \"\"\n }\n min=\"0\"\n />\n
\n \n
\n
\n \n
\n {\n const targetD = e.target;\n const checked = targetD.checked;\n updateField(\"logSearchSecurityContext\", {\n ...logSearchSecurityContext,\n runAsNonRoot: checked,\n });\n }}\n label={\"Do not run as Root\"}\n />\n
\n
\n \n
\n \n SecurityContext for PostgreSQL\n \n\n \n \n
\n ) => {\n updateField(\"logSearchPostgresSecurityContext\", {\n ...logSearchPostgresSecurityContext,\n runAsUser: e.target.value,\n });\n cleanValidation(\"postgres_securityContext_runAsUser\");\n }}\n label=\"Run As User\"\n value={logSearchPostgresSecurityContext.runAsUser}\n required\n error={\n validationErrors[\"postgres_securityContext_runAsUser\"] ||\n \"\"\n }\n min=\"0\"\n />\n
\n
\n ) => {\n updateField(\"logSearchPostgresSecurityContext\", {\n ...logSearchPostgresSecurityContext,\n runAsGroup: e.target.value,\n });\n cleanValidation(\"postgres_securityContext_runAsGroup\");\n }}\n label=\"Run As Group\"\n value={logSearchPostgresSecurityContext.runAsGroup}\n required\n error={\n validationErrors[\"postgres_securityContext_runAsGroup\"] ||\n \"\"\n }\n min=\"0\"\n />\n
\n
\n ) => {\n updateField(\"logSearchPostgresSecurityContext\", {\n ...logSearchPostgresSecurityContext,\n fsGroup: e.target.value,\n });\n cleanValidation(\"postgres_securityContext_fsGroup\");\n }}\n label=\"FsGroup\"\n value={logSearchPostgresSecurityContext.fsGroup}\n required\n error={\n validationErrors[\"postgres_securityContext_fsGroup\"] || \"\"\n }\n min=\"0\"\n />\n
\n \n
\n
\n \n
\n {\n const targetD = e.target;\n const checked = targetD.checked;\n updateField(\"logSearchPostgresSecurityContext\", {\n ...logSearchPostgresSecurityContext,\n runAsNonRoot: checked,\n });\n }}\n label={\"Do not run as Root\"}\n />\n
\n
\n
\n
\n )}\n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"prometheusCustom\", checked);\n }}\n label={\"Override Prometheus defaults\"}\n />\n \n {prometheusCustom && (\n \n \n ) => {\n updateField(\n \"prometheusSelectedStorageClass\",\n e.target.value as string\n );\n }}\n label=\"Prometheus Storage Class\"\n value={prometheusSelectedStorageClass}\n options={configureSTClasses}\n disabled={configureSTClasses.length < 1}\n />\n \n \n
\n ) => {\n updateField(\"prometheusVolumeSize\", e.target.value);\n cleanValidation(\"prometheus_volume_size\");\n }}\n label=\"Storage Size\"\n overlayObject={\n {}}\n unitSelected={\"Gi\"}\n unitsList={[{ label: \"Gi\", value: \"Gi\" }]}\n disabled={true}\n />\n }\n value={prometheusVolumeSize}\n required\n error={validationErrors[\"prometheus_volume_size\"] || \"\"}\n min=\"0\"\n />\n
\n
\n \n \n SecurityContext for Prometheus\n \n \n \n
\n ) => {\n updateField(\"prometheusSecurityContext\", {\n ...prometheusSecurityContext,\n runAsUser: e.target.value,\n });\n cleanValidation(\"prometheus_securityContext_runAsUser\");\n }}\n label=\"Run As User\"\n value={prometheusSecurityContext.runAsUser}\n required\n error={\n validationErrors[\n \"prometheus_securityContext_runAsUser\"\n ] || \"\"\n }\n min=\"0\"\n />\n
\n
\n ) => {\n updateField(\"prometheusSecurityContext\", {\n ...prometheusSecurityContext,\n runAsGroup: e.target.value,\n });\n cleanValidation(\"prometheus_securityContext_runAsGroup\");\n }}\n label=\"Run As Group\"\n value={prometheusSecurityContext.runAsGroup}\n required\n error={\n validationErrors[\n \"prometheus_securityContext_runAsGroup\"\n ] || \"\"\n }\n min=\"0\"\n />\n
\n
\n ) => {\n updateField(\"prometheusSecurityContext\", {\n ...prometheusSecurityContext,\n fsGroup: e.target.value,\n });\n cleanValidation(\"prometheus_securityContext_fsGroup\");\n }}\n label=\"FsGroup\"\n value={prometheusSecurityContext.fsGroup}\n required\n error={\n validationErrors[\"prometheus_securityContext_fsGroup\"] ||\n \"\"\n }\n min=\"0\"\n />\n
\n \n
\n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n updateField(\"prometheusSecurityContext\", {\n ...prometheusSecurityContext,\n runAsNonRoot: checked,\n });\n }}\n label={\"Do not run as Root\"}\n />\n \n \n \n
\n )}\n
\n );\n};\n\nconst mapState = (state: AppState) => ({\n storageClasses: state.tenants.createTenant.storageClasses,\n customImage: state.tenants.createTenant.fields.configure.customImage,\n imageName: state.tenants.createTenant.fields.configure.imageName,\n customDockerhub: state.tenants.createTenant.fields.configure.customDockerhub,\n imageRegistry: state.tenants.createTenant.fields.configure.imageRegistry,\n imageRegistryUsername:\n state.tenants.createTenant.fields.configure.imageRegistryUsername,\n imageRegistryPassword:\n state.tenants.createTenant.fields.configure.imageRegistryPassword,\n exposeMinIO: state.tenants.createTenant.fields.configure.exposeMinIO,\n exposeConsole: state.tenants.createTenant.fields.configure.exposeConsole,\n prometheusCustom:\n state.tenants.createTenant.fields.configure.prometheusCustom,\n tenantCustom: state.tenants.createTenant.fields.configure.tenantCustom,\n logSearchCustom: state.tenants.createTenant.fields.configure.logSearchCustom,\n logSearchVolumeSize:\n state.tenants.createTenant.fields.configure.logSearchVolumeSize,\n logSearchSizeFactor:\n state.tenants.createTenant.fields.configure.logSearchSizeFactor,\n prometheusVolumeSize:\n state.tenants.createTenant.fields.configure.prometheusVolumeSize,\n prometheusSizeFactor:\n state.tenants.createTenant.fields.configure.prometheusSizeFactor,\n logSearchSelectedStorageClass:\n state.tenants.createTenant.fields.configure.logSearchSelectedStorageClass,\n logSearchImage: state.tenants.createTenant.fields.configure.logSearchImage,\n kesImage: state.tenants.createTenant.fields.configure.kesImage,\n logSearchPostgresImage:\n state.tenants.createTenant.fields.configure.logSearchPostgresImage,\n logSearchPostgresInitImage:\n state.tenants.createTenant.fields.configure.logSearchPostgresInitImage,\n prometheusSelectedStorageClass:\n state.tenants.createTenant.fields.configure.prometheusSelectedStorageClass,\n prometheusImage: state.tenants.createTenant.fields.configure.prometheusImage,\n prometheusSidecarImage:\n state.tenants.createTenant.fields.configure.prometheusSidecarImage,\n prometheusInitImage:\n state.tenants.createTenant.fields.configure.prometheusInitImage,\n selectedStorageClass:\n state.tenants.createTenant.fields.nameTenant.selectedStorageClass,\n tenantSecurityContext:\n state.tenants.createTenant.fields.configure.tenantSecurityContext,\n logSearchSecurityContext:\n state.tenants.createTenant.fields.configure.logSearchSecurityContext,\n logSearchPostgresSecurityContext:\n state.tenants.createTenant.fields.configure\n .logSearchPostgresSecurityContext,\n prometheusSecurityContext:\n state.tenants.createTenant.fields.configure.prometheusSecurityContext,\n});\n\nconst connector = connect(mapState, {\n updateAddField,\n isPageValid,\n});\n\nexport default withStyles(styles)(connector(Configure));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You 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 { connect } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Grid, IconButton, Paper, Tooltip, Typography } from \"@mui/material\";\nimport CasinoIcon from \"@mui/icons-material/Casino\";\nimport DeleteIcon from \"@mui/icons-material/Delete\";\nimport {\n createTenantCommon,\n formFieldStyles,\n modalBasic,\n wizardCommon,\n} from \"../../../Common/FormComponents/common/styleLibrary\";\nimport { isPageValid, updateAddField } from \"../../actions\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../utils/validationFunctions\";\nimport { AppState } from \"../../../../../store\";\nimport { clearValidationError, getRandomString } from \"../../utils\";\nimport RadioGroupSelector from \"../../../Common/FormComponents/RadioGroupSelector/RadioGroupSelector\";\nimport InputBoxWrapper from \"../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport FormSwitchWrapper from \"../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport AddIcon from \"@mui/icons-material/Add\";\nimport RemoveIcon from \"../../../../../icons/RemoveIcon\";\n\ninterface IIdentityProviderProps {\n classes: any;\n idpSelection: string;\n accessKeys: string[];\n secretKeys: string[];\n openIDConfigurationURL: string;\n openIDClientID: string;\n openIDSecretID: string;\n openIDCallbackURL: string;\n openIDClaimName: string;\n openIDScopes: string;\n ADURL: string;\n ADSkipTLS: boolean;\n ADServerInsecure: boolean;\n ADUserNameSearchFilter: string;\n ADGroupSearchBaseDN: string;\n ADGroupSearchFilter: string;\n ADGroupNameAttribute: string;\n ADUserDNs: string[];\n ADUserNameFormat: string;\n ADLookupBindDN: string;\n ADLookupBindPassword: string;\n ADUserDNSearchBaseDN: string;\n ADUserDNSearchFilter: string;\n ADServerStartTLS: boolean;\n updateAddField: typeof updateAddField;\n isPageValid: typeof isPageValid;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n shortened: {\n gridTemplateColumns: \"auto auto 50px 50px\",\n display: \"grid\",\n gridGap: 15,\n marginBottom: 10,\n \"& input\": {\n fontWeight: 400,\n },\n },\n buttonTray: {\n marginLeft: 10,\n display: \"flex\",\n height: 38,\n \"& button\": {\n background: \"#EAEAEA\",\n },\n },\n overlayAction: {\n marginLeft: 10,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"& button\": {\n background: \"#EAEAEA\",\n },\n },\n protocolRadioOptions: {\n display: \"flex\",\n flexFlow: \"column\",\n marginBottom: 10,\n\n \"& label\": {\n fontSize: 14,\n },\n \"& div\": {\n display: \"flex\",\n flexFlow: \"column\",\n alignItems: \"baseline\",\n },\n },\n adUserDnRows: {\n display: \"flex\",\n },\n ...createTenantCommon,\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n });\n\nconst IdentityProvider = ({\n classes,\n idpSelection,\n accessKeys,\n secretKeys,\n openIDConfigurationURL,\n openIDClientID,\n openIDSecretID,\n openIDCallbackURL,\n openIDClaimName,\n openIDScopes,\n ADURL,\n ADSkipTLS,\n ADServerInsecure,\n ADUserNameSearchFilter,\n ADGroupSearchBaseDN,\n ADGroupSearchFilter,\n ADGroupNameAttribute,\n ADUserDNs,\n ADUserNameFormat,\n ADLookupBindDN,\n ADLookupBindPassword,\n ADUserDNSearchBaseDN,\n ADUserDNSearchFilter,\n ADServerStartTLS,\n updateAddField,\n isPageValid,\n}: IIdentityProviderProps) => {\n const [validationErrors, setValidationErrors] = useState({});\n\n const updateField = useCallback(\n (field: string, value: any) => {\n updateAddField(\"identityProvider\", field, value);\n },\n [updateAddField]\n );\n const updateUserField = (index: number, value: string) => {\n const newUserField = [...accessKeys];\n newUserField[index] = value;\n updateField(\"accessKeys\", newUserField);\n };\n const updatePwordField = (index: number, value: string) => {\n const newUserField = [...secretKeys];\n newUserField[index] = value;\n updateField(\"secretKeys\", newUserField);\n };\n const updateADUserField = (index: number, value: string) => {\n const newADUserDNsField = [...ADUserDNs];\n newADUserDNsField[index] = value;\n updateField(\"ADUserDNs\", newADUserDNsField);\n };\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n // Validation\n\n useEffect(() => {\n let customIDPValidation: IValidation[] = [];\n\n if (idpSelection === \"Built-in\") {\n customIDPValidation = [...customIDPValidation];\n for (var i = 0; i < accessKeys.length; i++) {\n customIDPValidation.push({\n fieldKey: `accesskey-${i.toString()}`,\n required: true,\n value: accessKeys[i],\n pattern: /^[a-zA-Z0-9-]{8,63}$/,\n customPatternMessage: \"Keys must be at least length 8\",\n });\n customIDPValidation.push({\n fieldKey: `secretkey-${i.toString()}`,\n required: true,\n value: secretKeys[i],\n pattern: /^[a-zA-Z0-9-]{8,63}$/,\n customPatternMessage: \"Keys must be at least length 8\",\n });\n }\n }\n\n if (idpSelection === \"OpenID\") {\n customIDPValidation = [\n ...customIDPValidation,\n {\n fieldKey: \"openID_CONFIGURATION_URL\",\n required: true,\n value: openIDConfigurationURL,\n },\n {\n fieldKey: \"openID_clientID\",\n required: true,\n value: openIDClientID,\n },\n {\n fieldKey: \"openID_secretID\",\n required: true,\n value: openIDSecretID,\n },\n {\n fieldKey: \"openID_claimName\",\n required: true,\n value: openIDClaimName,\n },\n ];\n }\n\n if (idpSelection === \"AD\") {\n customIDPValidation = [\n ...customIDPValidation,\n {\n fieldKey: \"AD_URL\",\n required: true,\n value: ADURL,\n },\n ];\n // validate user DNs\n for (let i = 0; i < ADUserDNs.length; i++) {\n customIDPValidation.push({\n fieldKey: `ad-userdn-${i.toString()}`,\n required: true,\n value: ADUserDNs[i],\n });\n }\n }\n\n const commonVal = commonFormValidation(customIDPValidation);\n\n isPageValid(\"identityProvider\", Object.keys(commonVal).length === 0);\n\n setValidationErrors(commonVal);\n }, [\n idpSelection,\n accessKeys,\n secretKeys,\n openIDClientID,\n openIDSecretID,\n ADURL,\n ADUserNameSearchFilter,\n ADGroupSearchBaseDN,\n ADGroupSearchFilter,\n ADGroupNameAttribute,\n ADUserDNs,\n isPageValid,\n openIDConfigurationURL,\n openIDClaimName,\n ]);\n let inputs = null;\n if (idpSelection === \"Built-in\") {\n inputs = accessKeys.map((_, index) => {\n return (\n \n
\n ) => {\n updateUserField(index, e.target.value);\n cleanValidation(`accesskey-${index.toString()}`);\n }}\n index={index}\n key={`csv-accesskey-${index.toString()}`}\n error={validationErrors[`accesskey-${index.toString()}`] || \"\"}\n />\n ) => {\n updatePwordField(index, e.target.value);\n cleanValidation(`secretkey-${index.toString()}`);\n }}\n index={index}\n key={`csv-secretkey-${index.toString()}`}\n error={validationErrors[`secretkey-${index.toString()}`] || \"\"}\n />\n
\n \n
\n {\n accessKeys.push(\"\");\n secretKeys.push(\"\");\n updateUserField(accessKeys.length - 1, \"\");\n updatePwordField(secretKeys.length - 1, \"\");\n }}\n >\n \n \n
\n
\n \n
\n {\n if (accessKeys.length > 1) {\n accessKeys.splice(index, 1);\n secretKeys.splice(index, 1);\n updateUserField(\n accessKeys.length - 1,\n accessKeys[accessKeys.length - 1]\n );\n }\n }}\n >\n \n \n
\n
\n \n
\n {\n updateUserField(index, getRandomString(16));\n updatePwordField(index, getRandomString(32));\n }}\n size={\"small\"}\n >\n \n \n
\n
\n
\n
\n
\n );\n });\n }\n if (idpSelection === \"AD\") {\n inputs = ADUserDNs.map((_, index) => {\n return (\n \n
\n ) => {\n updateADUserField(index, e.target.value);\n cleanValidation(`ad-userdn-${index.toString()}`);\n }}\n index={index}\n key={`csv-ad-userdn-${index.toString()}`}\n error={validationErrors[`ad-userdn-${index.toString()}`] || \"\"}\n />\n
\n \n {\n ADUserDNs.push(\"\");\n updateADUserField(ADUserDNs.length - 1, \"\");\n }}\n >\n \n \n \n \n {\n if (ADUserDNs.length > 1) {\n ADUserDNs.splice(index, 1);\n updateUserField(\n ADUserDNs.length - 1,\n ADUserDNs[ADUserDNs.length - 1]\n );\n }\n }}\n >\n \n \n \n
\n
\n
\n );\n });\n }\n return (\n \n
\n

Identity Provider

\n \n Access to the tenant can be controlled via an external Identity\n Manager.\n \n
\n \n \n {\n updateField(\"idpSelection\", e.target.value);\n }}\n selectorOptions={[\n { label: \"Built-in\", value: \"Built-in\" },\n { label: \"OpenID\", value: \"OpenID\" },\n { label: \"Active Directory\", value: \"AD\" },\n ]}\n />\n \n {idpSelection === \"Built-in\" && (\n \n Add additional users\n {inputs}\n \n )}\n {idpSelection === \"OpenID\" && (\n \n \n ) => {\n updateField(\"openIDConfigurationURL\", e.target.value);\n cleanValidation(\"openID_CONFIGURATION_URL\");\n }}\n label=\"Configuration URL\"\n value={openIDConfigurationURL}\n placeholder=\"https://your-identity-provider.com/.well-known/openid-configuration\"\n error={validationErrors[\"openID_CONFIGURATION_URL\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"openIDClientID\", e.target.value);\n cleanValidation(\"openID_clientID\");\n }}\n label=\"Client ID\"\n value={openIDClientID}\n error={validationErrors[\"openID_clientID\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"openIDSecretID\", e.target.value);\n cleanValidation(\"openID_secretID\");\n }}\n label=\"Secret ID\"\n value={openIDSecretID}\n error={validationErrors[\"openID_secretID\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"openIDCallbackURL\", e.target.value);\n cleanValidation(\"openID_callbackURL\");\n }}\n label=\"Callback URL\"\n value={openIDCallbackURL}\n placeholder=\"https://your-console-endpoint:9443/oauth_callback\"\n error={validationErrors[\"openID_callbackURL\"] || \"\"}\n />\n \n \n ) => {\n updateField(\"openIDClaimName\", e.target.value);\n cleanValidation(\"openID_claimName\");\n }}\n label=\"Claim Name\"\n value={openIDClaimName}\n error={validationErrors[\"openID_claimName\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"openIDScopes\", e.target.value);\n cleanValidation(\"openID_scopes\");\n }}\n label=\"Scopes\"\n value={openIDScopes}\n />\n \n \n )}\n {idpSelection === \"AD\" && (\n \n \n ) => {\n updateField(\"ADURL\", e.target.value);\n cleanValidation(\"AD_URL\");\n }}\n label=\"LDAP Server Address\"\n value={ADURL}\n placeholder=\"ldap-server:636\"\n error={validationErrors[\"AD_URL\"] || \"\"}\n required\n />\n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n updateField(\"ADSkipTLS\", checked);\n }}\n label={\"Skip TLS Verification\"}\n />\n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n updateField(\"ADServerInsecure\", checked);\n }}\n label={\"Server Insecure\"}\n />\n \n {ADServerInsecure ? (\n \n \n Warning: All traffic with Active Directory will be unencrypted\n \n
\n
\n ) : null}\n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n updateField(\"ADServerStartTLS\", checked);\n }}\n label={\"Start TLS connection to AD/LDAP server\"}\n />\n \n \n ) => {\n updateField(\"ADUserNameFormat\", e.target.value);\n }}\n label=\"Username Format\"\n value={ADUserNameFormat}\n placeholder=\"uid=%s,cn=accounts,dc=myldapserver,dc=com\"\n />\n \n \n ) => {\n updateField(\"ADUserNameSearchFilter\", e.target.value);\n }}\n label=\"Username Search Filter\"\n value={ADUserNameSearchFilter}\n placeholder=\"(|(objectclass=posixAccount)(uid=%s))\"\n />\n \n \n ) => {\n updateField(\"ADGroupSearchBaseDN\", e.target.value);\n }}\n label=\"Group Search Base DN\"\n value={ADGroupSearchBaseDN}\n placeholder=\"ou=hwengg,dc=min,dc=io;ou=swengg,dc=min,dc=io\"\n />\n \n \n ) => {\n updateField(\"ADGroupSearchFilter\", e.target.value);\n }}\n label=\"Group Search Filter\"\n value={ADGroupSearchFilter}\n placeholder=\"(&(objectclass=groupOfNames)(member=%s))\"\n />\n \n \n ) => {\n updateField(\"ADGroupNameAttribute\", e.target.value);\n }}\n label=\"Group Name Attribute\"\n value={ADGroupNameAttribute}\n placeholder=\"cn\"\n />\n \n \n ) => {\n updateField(\"ADLookupBindDN\", e.target.value);\n }}\n label=\"Lookup Bind DN\"\n value={ADLookupBindDN}\n placeholder=\"cn=admin,dc=min,dc=io\"\n />\n \n \n ) => {\n updateField(\"ADLookupBindPassword\", e.target.value);\n }}\n label=\"Lookup Bind Password\"\n value={ADLookupBindPassword}\n placeholder=\"admin\"\n />\n \n \n ) => {\n updateField(\"ADUserDNSearchBaseDN\", e.target.value);\n }}\n label=\"User DN Search Base DN\"\n value={ADUserDNSearchBaseDN}\n placeholder=\"dc=min,dc=io\"\n />\n \n \n ) => {\n updateField(\"ADUserDNSearchFilter\", e.target.value);\n }}\n label=\"User DN Search Filter\"\n value={ADUserDNSearchFilter}\n placeholder=\"(uid=%s)\"\n />\n \n
\n \n List of user DNs (Distinguished Names) to be Tenant Administrators\n \n \n {inputs}\n \n
\n
\n )}\n
\n );\n};\n\nconst mapState = (state: AppState) => ({\n idpSelection: state.tenants.createTenant.fields.identityProvider.idpSelection,\n accessKeys: state.tenants.createTenant.fields.identityProvider.accessKeys,\n secretKeys: state.tenants.createTenant.fields.identityProvider.secretKeys,\n openIDConfigurationURL:\n state.tenants.createTenant.fields.identityProvider.openIDConfigurationURL,\n openIDClientID:\n state.tenants.createTenant.fields.identityProvider.openIDClientID,\n openIDSecretID:\n state.tenants.createTenant.fields.identityProvider.openIDSecretID,\n openIDCallbackURL:\n state.tenants.createTenant.fields.identityProvider.openIDCallbackURL,\n openIDClaimName:\n state.tenants.createTenant.fields.identityProvider.openIDClaimName,\n openIDScopes: state.tenants.createTenant.fields.identityProvider.openIDScopes,\n ADURL: state.tenants.createTenant.fields.identityProvider.ADURL,\n ADSkipTLS: state.tenants.createTenant.fields.identityProvider.ADSkipTLS,\n ADServerInsecure:\n state.tenants.createTenant.fields.identityProvider.ADServerInsecure,\n ADUserNameSearchFilter:\n state.tenants.createTenant.fields.identityProvider.ADUserNameSearchFilter,\n ADGroupSearchBaseDN:\n state.tenants.createTenant.fields.identityProvider.ADGroupSearchBaseDN,\n ADGroupSearchFilter:\n state.tenants.createTenant.fields.identityProvider.ADGroupSearchFilter,\n ADGroupNameAttribute:\n state.tenants.createTenant.fields.identityProvider.ADGroupNameAttribute,\n ADUserDNs: state.tenants.createTenant.fields.identityProvider.ADUserDNs,\n ADUserNameFormat:\n state.tenants.createTenant.fields.identityProvider.ADUserNameFormat,\n ADLookupBindDN:\n state.tenants.createTenant.fields.identityProvider.ADLookupBindDN,\n ADLookupBindPassword:\n state.tenants.createTenant.fields.identityProvider.ADLookupBindPassword,\n ADUserDNSearchBaseDN:\n state.tenants.createTenant.fields.identityProvider.ADUserDNSearchBaseDN,\n ADUserDNSearchFilter:\n state.tenants.createTenant.fields.identityProvider.ADUserDNSearchFilter,\n ADServerStartTLS:\n state.tenants.createTenant.fields.identityProvider.ADServerStartTLS,\n});\n\nconst connector = connect(mapState, {\n updateAddField,\n isPageValid,\n});\n\nexport default withStyles(styles)(connector(IdentityProvider));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect } from \"react\";\nimport { connect } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Grid, IconButton, Paper, Typography } from \"@mui/material\";\nimport {\n createTenantCommon,\n modalBasic,\n wizardCommon,\n} from \"../../../Common/FormComponents/common/styleLibrary\";\nimport {\n addCaCertificate,\n addFileToCaCertificates,\n addFileToKeyPair,\n addKeyPair,\n deleteCaCertificate,\n deleteKeyPair,\n isPageValid,\n updateAddField,\n} from \"../../actions\";\nimport { AppState } from \"../../../../../store\";\nimport { KeyPair } from \"../../ListTenants/utils\";\nimport FormSwitchWrapper from \"../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport FileSelector from \"../../../Common/FormComponents/FileSelector/FileSelector\";\nimport AddIcon from \"../../../../../icons/AddIcon\";\nimport RemoveIcon from \"../../../../../icons/RemoveIcon\";\n\ninterface ISecurityProps {\n classes: any;\n enableTLS: boolean;\n enableAutoCert: boolean;\n enableCustomCerts: boolean;\n minioCertificates: KeyPair[];\n caCertificates: KeyPair[];\n updateAddField: typeof updateAddField;\n isPageValid: typeof isPageValid;\n addFileToCaCertificates: typeof addFileToCaCertificates;\n deleteCaCertificate: typeof deleteCaCertificate;\n addCaCertificate: typeof addCaCertificate;\n addKeyPair: typeof addKeyPair;\n addFileToKeyPair: typeof addFileToKeyPair;\n deleteKeyPair: typeof deleteKeyPair;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n minioCertificateRows: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-start\",\n borderBottom: \"1px solid #EAEAEA\",\n \"&:last-child\": {\n borderBottom: 0,\n },\n \"@media (max-width: 900px)\": {\n flex: 1,\n },\n },\n fileItem: {\n marginRight: 10,\n display: \"flex\",\n \"& div label\": {\n minWidth: 50,\n },\n\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n },\n },\n minioCertsContainer: {\n marginBottom: 15,\n },\n minioCACertsRow: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-start\",\n\n borderBottom: \"1px solid #EAEAEA\",\n \"&:last-child\": {\n borderBottom: 0,\n },\n \"@media (max-width: 900px)\": {\n flex: 1,\n\n \"& div label\": {\n minWidth: 50,\n },\n },\n },\n rowActions: {\n display: \"flex\",\n justifyContent: \"flex-end\",\n \"@media (max-width: 900px)\": {\n flex: 1,\n },\n },\n overlayAction: {\n marginLeft: 10,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"& button\": {\n background: \"#EAEAEA\",\n },\n },\n\n ...createTenantCommon,\n ...modalBasic,\n ...wizardCommon,\n });\n\nconst Security = ({\n classes,\n enableTLS,\n enableAutoCert,\n enableCustomCerts,\n minioCertificates,\n caCertificates,\n updateAddField,\n isPageValid,\n addFileToCaCertificates,\n deleteCaCertificate,\n addCaCertificate,\n addKeyPair,\n addFileToKeyPair,\n deleteKeyPair,\n}: ISecurityProps) => {\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n updateAddField(\"security\", field, value);\n },\n [updateAddField]\n );\n\n // Validation\n\n useEffect(() => {\n if (!enableTLS) {\n isPageValid(\"security\", true);\n return;\n }\n if (enableAutoCert) {\n isPageValid(\"security\", true);\n return;\n }\n if (enableCustomCerts) {\n isPageValid(\"security\", true);\n return;\n }\n isPageValid(\"security\", false);\n }, [enableTLS, enableAutoCert, enableCustomCerts, isPageValid]);\n\n return (\n \n
\n

Security

\n
\n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"enableTLS\", checked);\n }}\n label={\"Enable TLS\"}\n />\n Enable TLS for the tenant, this is required for Encryption Configuration\n {enableTLS && (\n \n
\n
\n \n AutoCert: MinIO Operator will generate all TLS certificates\n automatically\n \n \n Custom certificates: Allow user to provide your own certificates\n \n
\n
\n )}\n
\n {enableTLS && (\n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"enableAutoCert\", checked);\n }}\n label={\"Enable AutoCert\"}\n />\n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"enableCustomCerts\", checked);\n }}\n label={\"Custom Certificates\"}\n />\n \n {enableCustomCerts && (\n \n \n \n
\n \n MinIO Certificates\n \n {minioCertificates.map((keyPair: KeyPair) => (\n \n \n {\n addFileToKeyPair(\n keyPair.id,\n \"cert\",\n fileName,\n encodedValue\n );\n }}\n accept=\".cer,.crt,.cert,.pem\"\n id=\"tlsCert\"\n name=\"tlsCert\"\n label=\"Cert\"\n value={keyPair.cert}\n />\n {\n addFileToKeyPair(\n keyPair.id,\n \"key\",\n fileName,\n encodedValue\n );\n }}\n accept=\".key,.pem\"\n id=\"tlsKey\"\n name=\"tlsKey\"\n label=\"Key\"\n value={keyPair.key}\n />\n \n\n \n
\n \n \n \n
\n
\n {\n deleteKeyPair(keyPair.id);\n }}\n >\n \n \n
\n
\n \n ))}\n
\n
\n
\n\n \n \n
\n \n MinIO CA Certificates\n \n\n {caCertificates.map((keyPair: KeyPair) => (\n \n \n {\n addFileToCaCertificates(\n keyPair.id,\n \"cert\",\n fileName,\n encodedValue\n );\n }}\n accept=\".cer,.crt,.cert,.pem\"\n id=\"tlsCert\"\n name=\"tlsCert\"\n label=\"Cert\"\n value={keyPair.cert}\n />\n \n \n
\n
\n \n \n \n
\n
\n {\n deleteCaCertificate(keyPair.id);\n }}\n >\n \n \n
\n
\n
\n \n ))}\n
\n
\n
\n
\n )}\n
\n )}\n
\n );\n};\n\nconst mapState = (state: AppState) => ({\n enableTLS: state.tenants.createTenant.fields.security.enableTLS,\n enableAutoCert: state.tenants.createTenant.fields.security.enableAutoCert,\n enableCustomCerts:\n state.tenants.createTenant.fields.security.enableCustomCerts,\n minioCertificates: state.tenants.createTenant.certificates.minioCertificates,\n caCertificates: state.tenants.createTenant.certificates.caCertificates,\n});\n\nconst connector = connect(mapState, {\n updateAddField,\n isPageValid,\n addFileToCaCertificates,\n deleteCaCertificate,\n addCaCertificate,\n addKeyPair,\n addFileToKeyPair,\n deleteKeyPair,\n});\n\nexport default withStyles(styles)(connector(Security));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You 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 { connect } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Paper } from \"@mui/material\";\nimport Grid from \"@mui/material/Grid\";\nimport {\n addFileClientCert,\n addFileGemaltoCa,\n addFileServerCert,\n addFileVaultCa,\n addFileVaultCert,\n isPageValid,\n updateAddField,\n} from \"../../actions\";\nimport {\n createTenantCommon,\n formFieldStyles,\n modalBasic,\n wizardCommon,\n} from \"../../../Common/FormComponents/common/styleLibrary\";\nimport { AppState } from \"../../../../../store\";\nimport { clearValidationError } from \"../../utils\";\nimport InputBoxWrapper from \"../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport FormSwitchWrapper from \"../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport FileSelector from \"../../../Common/FormComponents/FileSelector/FileSelector\";\nimport RadioGroupSelector from \"../../../Common/FormComponents/RadioGroupSelector/RadioGroupSelector\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../utils/validationFunctions\";\nimport { KeyPair } from \"../../ListTenants/utils\";\nimport { ISecurityContext } from \"../../types\";\n\ninterface IEncryptionProps {\n classes: any;\n updateAddField: typeof updateAddField;\n isPageValid: typeof isPageValid;\n addFileServerCert: typeof addFileServerCert;\n addFileClientCert: typeof addFileClientCert;\n addFileVaultCert: typeof addFileVaultCert;\n addFileVaultCa: typeof addFileVaultCa;\n addFileGemaltoCa: typeof addFileGemaltoCa;\n enableEncryption: boolean;\n encryptionType: string;\n gemaltoEndpoint: string;\n gemaltoToken: string;\n gemaltoDomain: string;\n gemaltoRetry: string;\n awsEndpoint: string;\n awsRegion: string;\n awsKMSKey: string;\n awsAccessKey: string;\n awsSecretKey: string;\n awsToken: string;\n vaultEndpoint: string;\n vaultEngine: string;\n vaultNamespace: string;\n vaultPrefix: string;\n vaultAppRoleEngine: string;\n vaultId: string;\n vaultSecret: string;\n vaultRetry: string;\n vaultPing: string;\n azureEndpoint: string;\n azureTenantID: string;\n azureClientID: string;\n azureClientSecret: string;\n gcpProjectID: string;\n gcpEndpoint: string;\n gcpClientEmail: string;\n gcpClientID: string;\n gcpPrivateKeyID: string;\n gcpPrivateKey: string;\n enableCustomCertsForKES: boolean;\n enableAutoCert: boolean;\n enableTLS: boolean;\n enableCustomCerts: boolean;\n minioCertificates: KeyPair[];\n serverCertificate: KeyPair;\n clientCertificate: KeyPair;\n vaultCertificate: KeyPair;\n vaultCA: KeyPair;\n gemaltoCA: KeyPair;\n kesSecurityContext: ISecurityContext;\n replicas: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n encryptionTypeOptions: {\n marginBottom: 15,\n },\n mutualTlsConfig: {\n marginTop: 15,\n \"& fieldset\": {\n flex: 1,\n },\n },\n rightSpacer: {\n marginRight: 15,\n },\n responsiveContainer: {\n \"@media (max-width: 900px)\": {\n display: \"flex\",\n flexFlow: \"column\",\n },\n },\n ...createTenantCommon,\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n });\n\nconst Encryption = ({\n classes,\n updateAddField,\n isPageValid,\n addFileServerCert,\n addFileClientCert,\n addFileVaultCert,\n addFileVaultCa,\n addFileGemaltoCa,\n enableEncryption,\n enableCustomCerts,\n encryptionType,\n gemaltoEndpoint,\n gemaltoToken,\n gemaltoDomain,\n gemaltoRetry,\n awsEndpoint,\n awsRegion,\n awsKMSKey,\n awsAccessKey,\n awsSecretKey,\n awsToken,\n vaultEndpoint,\n vaultEngine,\n vaultNamespace,\n vaultPrefix,\n vaultAppRoleEngine,\n vaultId,\n vaultSecret,\n vaultRetry,\n vaultPing,\n azureEndpoint,\n azureTenantID,\n azureClientID,\n azureClientSecret,\n gcpProjectID,\n gcpEndpoint,\n gcpClientEmail,\n gcpClientID,\n gcpPrivateKeyID,\n gcpPrivateKey,\n enableCustomCertsForKES,\n enableAutoCert,\n enableTLS,\n minioCertificates,\n serverCertificate,\n clientCertificate,\n vaultCertificate,\n vaultCA,\n gemaltoCA,\n kesSecurityContext,\n replicas,\n}: IEncryptionProps) => {\n const [validationErrors, setValidationErrors] = useState({});\n\n let encryptionAvailable = false;\n if (\n enableTLS &&\n (enableAutoCert ||\n (minioCertificates &&\n minioCertificates.filter(\n (item) => item.encoded_key && item.encoded_cert\n ).length > 0))\n ) {\n encryptionAvailable = true;\n }\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n updateAddField(\"encryption\", field, value);\n },\n [updateAddField]\n );\n\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n // Validation\n useEffect(() => {\n let encryptionValidation: IValidation[] = [];\n\n if (enableEncryption) {\n encryptionValidation = [\n ...encryptionValidation,\n {\n fieldKey: \"replicas\",\n required: true,\n value: replicas,\n customValidation: parseInt(replicas) < 1,\n customValidationMessage: \"Replicas needs to be 1 or greater\",\n },\n {\n fieldKey: \"kes_securityContext_runAsUser\",\n required: true,\n value: kesSecurityContext.runAsUser,\n customValidation:\n kesSecurityContext.runAsUser === \"\" ||\n parseInt(kesSecurityContext.runAsUser) < 0,\n customValidationMessage: `runAsUser must be present and be 0 or more`,\n },\n {\n fieldKey: \"kes_securityContext_runAsGroup\",\n required: true,\n value: kesSecurityContext.runAsGroup,\n customValidation:\n kesSecurityContext.runAsGroup === \"\" ||\n parseInt(kesSecurityContext.runAsGroup) < 0,\n customValidationMessage: `runAsGroup must be present and be 0 or more`,\n },\n {\n fieldKey: \"kes_securityContext_fsGroup\",\n required: true,\n value: kesSecurityContext.fsGroup,\n customValidation:\n kesSecurityContext.fsGroup === \"\" ||\n parseInt(kesSecurityContext.fsGroup) < 0,\n customValidationMessage: `fsGroup must be present and be 0 or more`,\n },\n ];\n\n if (enableCustomCerts) {\n encryptionValidation = [\n ...encryptionValidation,\n {\n fieldKey: \"serverKey\",\n required: !enableAutoCert,\n value: serverCertificate.encoded_key,\n },\n {\n fieldKey: \"serverCert\",\n required: !enableAutoCert,\n value: serverCertificate.encoded_cert,\n },\n {\n fieldKey: \"clientKey\",\n required: !enableAutoCert,\n value: clientCertificate.encoded_key,\n },\n {\n fieldKey: \"clientCert\",\n required: !enableAutoCert,\n value: clientCertificate.encoded_cert,\n },\n ];\n }\n\n if (encryptionType === \"vault\") {\n encryptionValidation = [\n ...encryptionValidation,\n {\n fieldKey: \"vault_endpoint\",\n required: true,\n value: vaultEndpoint,\n },\n {\n fieldKey: \"vault_id\",\n required: true,\n value: vaultId,\n },\n {\n fieldKey: \"vault_secret\",\n required: true,\n value: vaultSecret,\n },\n {\n fieldKey: \"vault_ping\",\n required: false,\n value: vaultPing,\n customValidation: parseInt(vaultPing) < 0,\n customValidationMessage: \"Value needs to be 0 or greater\",\n },\n {\n fieldKey: \"vault_retry\",\n required: false,\n value: vaultRetry,\n customValidation: parseInt(vaultRetry) < 0,\n customValidationMessage: \"Value needs to be 0 or greater\",\n },\n ];\n }\n\n if (encryptionType === \"aws\") {\n encryptionValidation = [\n ...encryptionValidation,\n {\n fieldKey: \"aws_endpoint\",\n required: true,\n value: awsEndpoint,\n },\n {\n fieldKey: \"aws_region\",\n required: true,\n value: awsRegion,\n },\n {\n fieldKey: \"aws_accessKey\",\n required: true,\n value: awsAccessKey,\n },\n {\n fieldKey: \"aws_secretKey\",\n required: true,\n value: awsSecretKey,\n },\n ];\n }\n\n if (encryptionType === \"gemalto\") {\n encryptionValidation = [\n ...encryptionValidation,\n {\n fieldKey: \"gemalto_endpoint\",\n required: true,\n value: gemaltoEndpoint,\n },\n {\n fieldKey: \"gemalto_token\",\n required: true,\n value: gemaltoToken,\n },\n {\n fieldKey: \"gemalto_domain\",\n required: true,\n value: gemaltoDomain,\n },\n {\n fieldKey: \"gemalto_retry\",\n required: false,\n value: gemaltoRetry,\n customValidation: parseInt(gemaltoRetry) < 0,\n customValidationMessage: \"Value needs to be 0 or greater\",\n },\n ];\n }\n\n if (encryptionType === \"azure\") {\n encryptionValidation = [\n ...encryptionValidation,\n {\n fieldKey: \"azure_endpoint\",\n required: true,\n value: azureEndpoint,\n },\n {\n fieldKey: \"azure_tenant_id\",\n required: true,\n value: azureTenantID,\n },\n {\n fieldKey: \"azure_client_id\",\n required: true,\n value: azureClientID,\n },\n {\n fieldKey: \"azure_client_secret\",\n required: true,\n value: azureClientSecret,\n },\n ];\n }\n }\n\n const commonVal = commonFormValidation(encryptionValidation);\n\n isPageValid(\"encryption\", Object.keys(commonVal).length === 0);\n\n setValidationErrors(commonVal);\n }, [\n enableEncryption,\n encryptionType,\n vaultEndpoint,\n vaultEngine,\n vaultId,\n vaultSecret,\n vaultPing,\n vaultRetry,\n awsEndpoint,\n awsRegion,\n awsSecretKey,\n awsAccessKey,\n gemaltoEndpoint,\n gemaltoToken,\n gemaltoDomain,\n gemaltoRetry,\n gcpProjectID,\n gcpEndpoint,\n gcpClientEmail,\n gcpClientID,\n gcpPrivateKeyID,\n gcpPrivateKey,\n azureEndpoint,\n azureTenantID,\n azureClientID,\n azureClientSecret,\n isPageValid,\n enableAutoCert,\n enableCustomCerts,\n serverCertificate.encoded_key,\n serverCertificate.encoded_cert,\n clientCertificate.encoded_key,\n clientCertificate.encoded_cert,\n kesSecurityContext,\n replicas,\n ]);\n\n return (\n \n
\n

Encryption

\n \n How would you like to encrypt the information at rest.\n \n
\n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"enableEncryption\", checked);\n }}\n label={\"Enable Server Side Encryption\"}\n disabled={!encryptionAvailable}\n />\n \n {enableEncryption && (\n \n \n {\n updateField(\"encryptionType\", e.target.value);\n }}\n selectorOptions={[\n { label: \"Vault\", value: \"vault\" },\n { label: \"AWS\", value: \"aws\" },\n { label: \"Gemalto\", value: \"gemalto\" },\n { label: \"GCP\", value: \"gcp\" },\n { label: \"Azure\", value: \"azure\" },\n ]}\n />\n \n {encryptionType === \"vault\" && (\n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"enableCustomCertsForKES\", checked);\n }}\n label={\"Custom Certificates\"}\n disabled={!enableAutoCert}\n />\n \n {(enableCustomCertsForKES || !enableAutoCert) && (\n \n \n \n
\n \n Encryption Service Certificates\n \n {\n addFileServerCert(\"key\", fileName, encodedValue);\n cleanValidation(\"serverKey\");\n }}\n accept=\".key,.pem\"\n id=\"serverKey\"\n name=\"serverKey\"\n label=\"Key\"\n error={validationErrors[\"serverKey\"] || \"\"}\n value={serverCertificate.key}\n required={!enableAutoCert}\n />\n {\n addFileServerCert(\"cert\", fileName, encodedValue);\n cleanValidation(\"serverCert\");\n }}\n accept=\".cer,.crt,.cert,.pem\"\n id=\"serverCert\"\n name=\"serverCert\"\n label=\"Cert\"\n error={validationErrors[\"serverCert\"] || \"\"}\n value={serverCertificate.cert}\n required={!enableAutoCert}\n />\n
\n
\n
\n\n \n \n
\n \n Mutual TLS authentication\n \n {\n addFileClientCert(\"key\", fileName, encodedValue);\n cleanValidation(\"clientKey\");\n }}\n accept=\".key,.pem\"\n id=\"clientKey\"\n name=\"clientKey\"\n label=\"Key\"\n error={validationErrors[\"clientKey\"] || \"\"}\n value={clientCertificate.key}\n required={!enableAutoCert}\n />\n {\n addFileClientCert(\"cert\", fileName, encodedValue);\n cleanValidation(\"clientCert\");\n }}\n accept=\".cer,.crt,.cert,.pem\"\n id=\"clientCert\"\n name=\"clientCert\"\n label=\"Cert\"\n error={validationErrors[\"clientCert\"] || \"\"}\n value={clientCertificate.cert}\n required={!enableAutoCert}\n />\n
\n
\n
\n
\n )}\n \n ) => {\n updateField(\"vaultEndpoint\", e.target.value);\n cleanValidation(\"vault_endpoint\");\n }}\n label=\"Endpoint\"\n value={vaultEndpoint}\n error={validationErrors[\"vault_endpoint\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"vaultEngine\", e.target.value);\n cleanValidation(\"vault_engine\");\n }}\n label=\"Engine\"\n value={vaultEngine}\n />\n \n \n ) => {\n updateField(\"vaultNamespace\", e.target.value);\n }}\n label=\"Namespace\"\n value={vaultNamespace}\n />\n \n \n ) => {\n updateField(\"vaultPrefix\", e.target.value);\n }}\n label=\"Prefix\"\n value={vaultPrefix}\n />\n \n\n \n
\n App Role\n \n ) => {\n updateField(\"vaultAppRoleEngine\", e.target.value);\n }}\n label=\"Engine\"\n value={vaultAppRoleEngine}\n />\n \n \n ) => {\n updateField(\"vaultId\", e.target.value);\n cleanValidation(\"vault_id\");\n }}\n label=\"AppRole ID\"\n value={vaultId}\n error={validationErrors[\"vault_id\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"vaultSecret\", e.target.value);\n cleanValidation(\"vault_secret\");\n }}\n label=\"AppRole Secret\"\n value={vaultSecret}\n error={validationErrors[\"vault_secret\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"vaultRetry\", e.target.value);\n cleanValidation(\"vault_retry\");\n }}\n label=\"Retry (Seconds)\"\n value={vaultRetry}\n error={validationErrors[\"vault_retry\"] || \"\"}\n />\n \n
\n
\n\n \n
\n \n Mutual TLS authentication (optional)\n \n {\n addFileVaultCert(\"key\", fileName, encodedValue);\n cleanValidation(\"vault_key\");\n }}\n accept=\".key,.pem\"\n id=\"vault_key\"\n name=\"vault_key\"\n label=\"Key\"\n value={vaultCertificate.key}\n />\n {\n addFileVaultCert(\"cert\", fileName, encodedValue);\n cleanValidation(\"vault_cert\");\n }}\n accept=\".cer,.crt,.cert,.pem\"\n id=\"vault_cert\"\n name=\"vault_cert\"\n label=\"Cert\"\n value={vaultCertificate.cert}\n />\n {\n addFileVaultCa(fileName, encodedValue);\n cleanValidation(\"vault_ca\");\n }}\n accept=\".cer,.crt,.cert,.pem\"\n id=\"vault_ca\"\n name=\"vault_ca\"\n label=\"CA\"\n value={vaultCA.cert}\n />\n
\n
\n \n
\n Status\n ) => {\n updateField(\"vaultPing\", e.target.value);\n cleanValidation(\"vault_ping\");\n }}\n label=\"Ping (Seconds)\"\n value={vaultPing}\n error={validationErrors[\"vault_ping\"] || \"\"}\n />\n
\n \n
\n )}\n {encryptionType === \"azure\" && (\n \n \n ) => {\n updateField(\"azureEndpoint\", e.target.value);\n cleanValidation(\"azure_endpoint\");\n }}\n label=\"Endpoint\"\n value={azureEndpoint}\n error={validationErrors[\"azure_endpoint\"] || \"\"}\n />\n \n \n
\n \n Credentials\n \n \n ) => {\n updateField(\"azureTenantID\", e.target.value);\n cleanValidation(\"azure_tenant_id\");\n }}\n label=\"Tenant ID\"\n value={azureTenantID}\n error={validationErrors[\"azure_tenant_id\"] || \"\"}\n />\n \n \n ) => {\n updateField(\"azureClientID\", e.target.value);\n cleanValidation(\"azure_client_id\");\n }}\n label=\"Client ID\"\n value={azureClientID}\n error={validationErrors[\"azure_client_id\"] || \"\"}\n />\n \n \n ) => {\n updateField(\"azureClientSecret\", e.target.value);\n cleanValidation(\"azure_client_secret\");\n }}\n label=\"Client Secret\"\n value={azureClientSecret}\n error={validationErrors[\"azure_client_secret\"] || \"\"}\n />\n \n
\n
\n
\n )}\n {encryptionType === \"gcp\" && (\n \n \n ) => {\n updateField(\"gcpProjectID\", e.target.value);\n }}\n label=\"Project ID\"\n value={gcpProjectID}\n />\n \n \n ) => {\n updateField(\"gcpEndpoint\", e.target.value);\n }}\n label=\"Endpoint\"\n value={gcpEndpoint}\n />\n \n \n
\n \n Credentials\n \n \n ) => {\n updateField(\"gcpClientEmail\", e.target.value);\n }}\n label=\"Client Email\"\n value={gcpClientEmail}\n />\n \n \n ) => {\n updateField(\"gcpClientID\", e.target.value);\n }}\n label=\"Client ID\"\n value={gcpClientID}\n />\n \n \n ) => {\n updateField(\"gcpPrivateKeyID\", e.target.value);\n }}\n label=\"Private Key ID\"\n value={gcpPrivateKeyID}\n />\n \n \n ) => {\n updateField(\"gcpPrivateKey\", e.target.value);\n }}\n label=\"Private Key\"\n value={gcpPrivateKey}\n />\n \n
\n
\n
\n )}\n {encryptionType === \"aws\" && (\n \n \n ) => {\n updateField(\"awsEndpoint\", e.target.value);\n cleanValidation(\"aws_endpoint\");\n }}\n label=\"Endpoint\"\n value={awsEndpoint}\n error={validationErrors[\"aws_endpoint\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"awsRegion\", e.target.value);\n cleanValidation(\"aws_region\");\n }}\n label=\"Region\"\n value={awsRegion}\n error={validationErrors[\"aws_region\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"awsKMSKey\", e.target.value);\n }}\n label=\"KMS Key\"\n value={awsKMSKey}\n />\n \n \n
\n \n Credentials\n \n \n ) => {\n updateField(\"awsAccessKey\", e.target.value);\n cleanValidation(\"aws_accessKey\");\n }}\n label=\"Access Key\"\n value={awsAccessKey}\n error={validationErrors[\"aws_accessKey\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"awsSecretKey\", e.target.value);\n cleanValidation(\"aws_secretKey\");\n }}\n label=\"Secret Key\"\n value={awsSecretKey}\n error={validationErrors[\"aws_secretKey\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"awsToken\", e.target.value);\n }}\n label=\"Token\"\n value={awsToken}\n />\n \n
\n
\n
\n )}\n {encryptionType === \"gemalto\" && (\n \n \n ) => {\n updateField(\"gemaltoEndpoint\", e.target.value);\n cleanValidation(\"gemalto_endpoint\");\n }}\n label=\"Endpoint\"\n value={gemaltoEndpoint}\n error={validationErrors[\"gemalto_endpoint\"] || \"\"}\n required\n />\n \n \n
\n \n Credentials\n \n \n ) => {\n updateField(\"gemaltoToken\", e.target.value);\n cleanValidation(\"gemalto_token\");\n }}\n label=\"Token\"\n value={gemaltoToken}\n error={validationErrors[\"gemalto_token\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"gemaltoDomain\", e.target.value);\n cleanValidation(\"gemalto_domain\");\n }}\n label=\"Domain\"\n value={gemaltoDomain}\n error={validationErrors[\"gemalto_domain\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"gemaltoRetry\", e.target.value);\n cleanValidation(\"gemalto_retry\");\n }}\n label=\"Retry (seconds)\"\n value={gemaltoRetry}\n error={validationErrors[\"gemalto_retry\"] || \"\"}\n />\n \n
\n \n \n
\n \n Custom CA Root certificate verification\n \n\n {\n addFileGemaltoCa(fileName, encodedValue);\n cleanValidation(\"gemalto_ca\");\n }}\n accept=\".cer,.crt,.cert,.pem\"\n id=\"gemalto_ca\"\n name=\"gemalto_ca\"\n label=\"CA\"\n value={gemaltoCA.cert}\n />\n
\n \n
\n )}\n
\n

Additional Configurations

\n
\n \n \n ) => {\n updateField(\"replicas\", e.target.value);\n cleanValidation(\"replicas\");\n }}\n label=\"Replicas\"\n value={replicas}\n required\n error={validationErrors[\"replicas\"] || \"\"}\n />\n \n\n
\n \n SecurityContext for KES pods\n \n \n \n \n ) => {\n updateField(\"kesSecurityContext\", {\n ...kesSecurityContext,\n runAsUser: e.target.value,\n });\n cleanValidation(\"kes_securityContext_runAsUser\");\n }}\n label=\"Run As User\"\n value={kesSecurityContext.runAsUser}\n required\n error={\n validationErrors[\"kes_securityContext_runAsUser\"] || \"\"\n }\n min=\"0\"\n />\n \n \n ) => {\n updateField(\"kesSecurityContext\", {\n ...kesSecurityContext,\n runAsGroup: e.target.value,\n });\n cleanValidation(\"kes_securityContext_runAsGroup\");\n }}\n label=\"Run As Group\"\n value={kesSecurityContext.runAsGroup}\n required\n error={\n validationErrors[\"kes_securityContext_runAsGroup\"] || \"\"\n }\n min=\"0\"\n />\n \n \n ) => {\n updateField(\"kesSecurityContext\", {\n ...kesSecurityContext,\n fsGroup: e.target.value,\n });\n cleanValidation(\"kes_securityContext_fsGroup\");\n }}\n label=\"FsGroup\"\n value={kesSecurityContext.fsGroup}\n required\n error={\n validationErrors[\"kes_securityContext_fsGroup\"] || \"\"\n }\n min=\"0\"\n />\n \n \n \n
\n \n
\n {\n const targetD = e.target;\n const checked = targetD.checked;\n updateField(\"kesSecurityContext\", {\n ...kesSecurityContext,\n runAsNonRoot: checked,\n });\n }}\n label={\"Do not run as Root\"}\n />\n
\n
\n
\n
\n
\n )}\n
\n );\n};\n\nconst mapState = (state: AppState) => ({\n replicas: state.tenants.createTenant.fields.encryption.replicas,\n enableEncryption:\n state.tenants.createTenant.fields.encryption.enableEncryption,\n encryptionType: state.tenants.createTenant.fields.encryption.encryptionType,\n gemaltoEndpoint: state.tenants.createTenant.fields.encryption.gemaltoEndpoint,\n gemaltoToken: state.tenants.createTenant.fields.encryption.gemaltoToken,\n gemaltoDomain: state.tenants.createTenant.fields.encryption.gemaltoDomain,\n gemaltoRetry: state.tenants.createTenant.fields.encryption.gemaltoRetry,\n awsEndpoint: state.tenants.createTenant.fields.encryption.awsEndpoint,\n awsRegion: state.tenants.createTenant.fields.encryption.awsRegion,\n awsKMSKey: state.tenants.createTenant.fields.encryption.awsKMSKey,\n awsAccessKey: state.tenants.createTenant.fields.encryption.awsAccessKey,\n awsSecretKey: state.tenants.createTenant.fields.encryption.awsSecretKey,\n awsToken: state.tenants.createTenant.fields.encryption.awsToken,\n vaultEndpoint: state.tenants.createTenant.fields.encryption.vaultEndpoint,\n vaultEngine: state.tenants.createTenant.fields.encryption.vaultEngine,\n vaultNamespace: state.tenants.createTenant.fields.encryption.vaultNamespace,\n vaultPrefix: state.tenants.createTenant.fields.encryption.vaultPrefix,\n vaultAppRoleEngine:\n state.tenants.createTenant.fields.encryption.vaultAppRoleEngine,\n vaultId: state.tenants.createTenant.fields.encryption.vaultId,\n vaultSecret: state.tenants.createTenant.fields.encryption.vaultSecret,\n vaultRetry: state.tenants.createTenant.fields.encryption.vaultRetry,\n vaultPing: state.tenants.createTenant.fields.encryption.vaultPing,\n azureEndpoint: state.tenants.createTenant.fields.encryption.azureEndpoint,\n azureTenantID: state.tenants.createTenant.fields.encryption.azureTenantID,\n azureClientID: state.tenants.createTenant.fields.encryption.azureClientID,\n azureClientSecret:\n state.tenants.createTenant.fields.encryption.azureClientSecret,\n gcpProjectID: state.tenants.createTenant.fields.encryption.gcpProjectID,\n gcpEndpoint: state.tenants.createTenant.fields.encryption.gcpEndpoint,\n gcpClientEmail: state.tenants.createTenant.fields.encryption.gcpClientEmail,\n gcpClientID: state.tenants.createTenant.fields.encryption.gcpClientID,\n gcpPrivateKeyID: state.tenants.createTenant.fields.encryption.gcpPrivateKeyID,\n gcpPrivateKey: state.tenants.createTenant.fields.encryption.gcpPrivateKey,\n enableCustomCertsForKES:\n state.tenants.createTenant.fields.encryption.enableCustomCertsForKES,\n enableAutoCert: state.tenants.createTenant.fields.security.enableAutoCert,\n enableTLS: state.tenants.createTenant.fields.security.enableTLS,\n minioCertificates: state.tenants.createTenant.certificates.minioCertificates,\n serverCertificate: state.tenants.createTenant.certificates.serverCertificate,\n clientCertificate: state.tenants.createTenant.certificates.clientCertificate,\n vaultCertificate: state.tenants.createTenant.certificates.vaultCertificate,\n vaultCA: state.tenants.createTenant.certificates.vaultCA,\n gemaltoCA: state.tenants.createTenant.certificates.gemaltoCA,\n enableCustomCerts:\n state.tenants.createTenant.fields.security.enableCustomCerts,\n kesSecurityContext:\n state.tenants.createTenant.fields.encryption.kesSecurityContext,\n});\n\nconst connector = connect(mapState, {\n updateAddField,\n isPageValid,\n addFileServerCert,\n addFileClientCert,\n addFileVaultCert,\n addFileVaultCa,\n addFileGemaltoCa,\n});\n\nexport default withStyles(styles)(connector(Encryption));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Grid, IconButton, Paper, SelectChangeEvent } from \"@mui/material\";\nimport { AppState } from \"../../../../../store\";\nimport { isPageValid, setKeyValuePairs, updateAddField } from \"../../actions\";\nimport { setModalErrorSnackMessage } from \"../../../../../actions\";\nimport {\n modalBasic,\n wizardCommon,\n} from \"../../../Common/FormComponents/common/styleLibrary\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../utils/validationFunctions\";\nimport { ErrorResponseHandler } from \"../../../../../common/types\";\nimport { LabelKeyPair } from \"../../types\";\nimport RadioGroupSelector from \"../../../Common/FormComponents/RadioGroupSelector/RadioGroupSelector\";\nimport FormSwitchWrapper from \"../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport api from \"../../../../../common/api\";\nimport InputBoxWrapper from \"../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport AddIcon from \"../../../../../icons/AddIcon\";\nimport RemoveIcon from \"../../../../../icons/RemoveIcon\";\nimport SelectWrapper from \"../../../Common/FormComponents/SelectWrapper/SelectWrapper\";\n\ninterface IAffinityProps {\n classes: any;\n podAffinity: string;\n nodeSelectorLabels: string;\n withPodAntiAffinity: boolean;\n keyValuePairs: LabelKeyPair[];\n setModalErrorSnackMessage: typeof setModalErrorSnackMessage;\n updateAddField: typeof updateAddField;\n isPageValid: typeof isPageValid;\n setKeyValuePairs: typeof setKeyValuePairs;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n overlayAction: {\n marginLeft: 10,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"& button\": {\n background: \"#EAEAEA\",\n },\n },\n affinityConfigField: {\n display: \"flex\",\n },\n affinityFieldLabel: {\n display: \"flex\",\n flexFlow: \"column\",\n flex: 1,\n },\n radioField: {\n display: \"flex\",\n alignItems: \"flex-start\",\n marginTop: 10,\n \"& div:first-child\": {\n display: \"flex\",\n flexFlow: \"column\",\n alignItems: \"baseline\",\n textAlign: \"left !important\",\n },\n },\n affinityLabelKey: {\n \"& div:first-child\": {\n marginBottom: 0,\n },\n },\n affinityLabelValue: {\n marginLeft: 10,\n \"& div:first-child\": {\n marginBottom: 0,\n },\n },\n rowActions: {\n display: \"flex\",\n alignItems: \"center\",\n },\n fieldContainer: {\n marginBottom: 0,\n },\n affinityRow: {\n marginBottom: 10,\n display: \"flex\",\n },\n ...modalBasic,\n ...wizardCommon,\n });\n\ninterface OptionPair {\n label: string;\n value: string;\n}\n\nconst Affinity = ({\n classes,\n podAffinity,\n nodeSelectorLabels,\n withPodAntiAffinity,\n setModalErrorSnackMessage,\n updateAddField,\n keyValuePairs,\n setKeyValuePairs,\n isPageValid,\n}: IAffinityProps) => {\n const [validationErrors, setValidationErrors] = useState({});\n const [loading, setLoading] = useState(true);\n const [keyValueMap, setKeyValueMap] = useState<{ [key: string]: string[] }>(\n {}\n );\n const [keyOptions, setKeyOptions] = useState([]);\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n updateAddField(\"affinity\", field, value);\n },\n [updateAddField]\n );\n\n useEffect(() => {\n if (loading) {\n api\n .invoke(\"GET\", `/api/v1/nodes/labels`)\n .then((res: { [key: string]: string[] }) => {\n setLoading(false);\n setKeyValueMap(res);\n let keys: OptionPair[] = [];\n for (let k in res) {\n keys.push({\n label: k,\n value: k,\n });\n }\n setKeyOptions(keys);\n })\n .catch((err: ErrorResponseHandler) => {\n setLoading(false);\n setModalErrorSnackMessage(err);\n setKeyValueMap({});\n });\n }\n }, [setModalErrorSnackMessage, loading]);\n\n useEffect(() => {\n if (keyValuePairs) {\n const vlr = keyValuePairs\n .filter((kvp) => kvp.key !== \"\")\n .map((kvp) => `${kvp.key}=${kvp.value}`)\n .filter((kvs, i, a) => a.indexOf(kvs) === i);\n const vl = vlr.join(\"&\");\n updateField(\"nodeSelectorLabels\", vl);\n }\n }, [keyValuePairs, updateField]);\n\n // Validation\n useEffect(() => {\n let customAccountValidation: IValidation[] = [];\n\n if (podAffinity === \"nodeSelector\") {\n let valid = true;\n\n const splittedLabels = nodeSelectorLabels.split(\"&\");\n\n if (splittedLabels.length === 1 && splittedLabels[0] === \"\") {\n valid = false;\n }\n\n splittedLabels.forEach((item: string, index: number) => {\n const splitItem = item.split(\"=\");\n\n if (splitItem.length !== 2) {\n valid = false;\n }\n\n if (index + 1 !== splittedLabels.length) {\n if (splitItem[0] === \"\" || splitItem[1] === \"\") {\n valid = false;\n }\n }\n });\n\n customAccountValidation = [\n ...customAccountValidation,\n {\n fieldKey: \"labels\",\n required: true,\n value: nodeSelectorLabels,\n customValidation: !valid,\n customValidationMessage:\n \"You need to add at least one label key-pair\",\n },\n ];\n }\n\n const commonVal = commonFormValidation(customAccountValidation);\n\n isPageValid(\"affinity\", Object.keys(commonVal).length === 0);\n\n setValidationErrors(commonVal);\n }, [isPageValid, podAffinity, nodeSelectorLabels]);\n\n return (\n \n
\n

Pod Placement

\n \n Configure how pods will be assigned to nodes\n \n
\n \n \n
Type
\n \n MinIO supports multiple configurations for Pod Affinity\n \n \n {\n updateField(\"podAffinity\", e.target.value);\n }}\n selectorOptions={[\n { label: \"None\", value: \"none\" },\n { label: \"Default (Pod Anti-Affinnity)\", value: \"default\" },\n { label: \"Node Selector\", value: \"nodeSelector\" },\n ]}\n />\n \n
\n
\n {podAffinity === \"nodeSelector\" && (\n \n
\n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"withPodAntiAffinity\", checked);\n }}\n label={\"With Pod Anti-Affinity\"}\n />\n \n \n

Labels

\n {validationErrors[\"labels\"]}\n \n {keyValuePairs &&\n keyValuePairs.map((kvp, i) => {\n return (\n \n \n {keyOptions.length > 0 && (\n ) => {\n const newKey = e.target.value as string;\n const arrCp: LabelKeyPair[] = Object.assign(\n [],\n keyValuePairs\n );\n\n arrCp[i].key = e.target.value as string;\n arrCp[i].value = keyValueMap[newKey][0];\n setKeyValuePairs(arrCp);\n }}\n id=\"select-access-policy\"\n name=\"select-access-policy\"\n label={\"\"}\n value={kvp.key}\n options={keyOptions}\n />\n )}\n {keyOptions.length === 0 && (\n {\n const arrCp: LabelKeyPair[] = Object.assign(\n [],\n keyValuePairs\n );\n arrCp[i].key = e.target.value;\n setKeyValuePairs(arrCp);\n }}\n index={i}\n placeholder={\"Key\"}\n />\n )}\n \n \n {keyOptions.length > 0 && (\n ) => {\n const arrCp: LabelKeyPair[] = Object.assign(\n [],\n keyValuePairs\n );\n arrCp[i].value = e.target.value as string;\n setKeyValuePairs(arrCp);\n }}\n id=\"select-access-policy\"\n name=\"select-access-policy\"\n label={\"\"}\n value={kvp.value}\n options={\n keyValueMap[kvp.key]\n ? keyValueMap[kvp.key].map((v) => {\n return { label: v, value: v };\n })\n : []\n }\n />\n )}\n {keyOptions.length === 0 && (\n {\n const arrCp: LabelKeyPair[] = Object.assign(\n [],\n keyValuePairs\n );\n arrCp[i].value = e.target.value;\n setKeyValuePairs(arrCp);\n }}\n index={i}\n placeholder={\"value\"}\n />\n )}\n \n \n
\n {\n const arrCp = Object.assign([], keyValuePairs);\n if (keyOptions.length > 0) {\n arrCp.push({\n key: keyOptions[0].value,\n value: keyValueMap[keyOptions[0].value][0],\n });\n } else {\n arrCp.push({ key: \"\", value: \"\" });\n }\n\n setKeyValuePairs(arrCp);\n }}\n >\n \n \n
\n {keyValuePairs.length > 1 && (\n
\n {\n const arrCp = keyValuePairs.filter(\n (item, index) => index !== i\n );\n setKeyValuePairs(arrCp);\n }}\n >\n \n \n
\n )}\n
\n
\n );\n })}\n
\n \n
\n )}\n
\n );\n};\n\nconst mapState = (state: AppState) => {\n const createTenant = state.tenants.createTenant;\n\n return {\n podAffinity: createTenant.fields.affinity.podAffinity,\n nodeSelectorLabels: createTenant.fields.affinity.nodeSelectorLabels,\n withPodAntiAffinity: createTenant.fields.affinity.withPodAntiAffinity,\n keyValuePairs: createTenant.nodeSelectorPairs,\n };\n};\n\nconst connector = connect(mapState, {\n setModalErrorSnackMessage,\n updateAddField,\n isPageValid,\n setKeyValuePairs,\n});\n\nexport default withStyles(styles)(connector(Affinity));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Grid, Paper } from \"@mui/material\";\nimport {\n formFieldStyles,\n modalBasic,\n wizardCommon,\n} from \"../../../Common/FormComponents/common/styleLibrary\";\nimport { isPageValid, updateAddField } from \"../../actions\";\nimport { AppState } from \"../../../../../store\";\nimport { clearValidationError } from \"../../utils\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../utils/validationFunctions\";\nimport FormSwitchWrapper from \"../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport InputBoxWrapper from \"../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\n\ninterface IImagesProps {\n updateAddField: typeof updateAddField;\n isPageValid: typeof isPageValid;\n storageClasses: any;\n classes: any;\n customImage: boolean;\n imageName: string;\n customDockerhub: boolean;\n imageRegistry: string;\n imageRegistryUsername: string;\n imageRegistryPassword: string;\n exposeMinIO: boolean;\n exposeConsole: boolean;\n prometheusCustom: boolean;\n tenantCustom: boolean;\n logSearchCustom: boolean;\n logSearchVolumeSize: string;\n logSearchSizeFactor: string;\n prometheusVolumeSize: string;\n prometheusSizeFactor: string;\n logSearchSelectedStorageClass: string;\n logSearchImage: string;\n kesImage: string;\n logSearchPostgresImage: string;\n logSearchPostgresInitImage: string;\n prometheusSelectedStorageClass: string;\n prometheusImage: string;\n prometheusSidecarImage: string;\n prometheusInitImage: string;\n selectedStorageClass: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n });\n\nconst Images = ({\n classes,\n storageClasses,\n customImage,\n imageName,\n customDockerhub,\n imageRegistry,\n imageRegistryUsername,\n imageRegistryPassword,\n exposeMinIO,\n exposeConsole,\n prometheusCustom,\n tenantCustom,\n logSearchCustom,\n logSearchVolumeSize,\n logSearchSizeFactor,\n logSearchImage,\n kesImage,\n logSearchPostgresImage,\n logSearchPostgresInitImage,\n prometheusVolumeSize,\n prometheusSizeFactor,\n logSearchSelectedStorageClass,\n prometheusSelectedStorageClass,\n prometheusImage,\n prometheusSidecarImage,\n prometheusInitImage,\n updateAddField,\n isPageValid,\n selectedStorageClass,\n}: IImagesProps) => {\n const [validationErrors, setValidationErrors] = useState({});\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n updateAddField(\"configure\", field, value);\n },\n [updateAddField]\n );\n\n // Validation\n useEffect(() => {\n let customAccountValidation: IValidation[] = [];\n\n if (prometheusCustom) {\n customAccountValidation = [\n ...customAccountValidation,\n {\n fieldKey: \"prometheus_storage_class\",\n required: true,\n value: prometheusSelectedStorageClass,\n customValidation: prometheusSelectedStorageClass === \"\",\n customValidationMessage: \"Field cannot be empty\",\n },\n {\n fieldKey: \"prometheus_volume_size\",\n required: true,\n value: prometheusVolumeSize,\n customValidation:\n prometheusVolumeSize === \"\" || parseInt(prometheusVolumeSize) <= 0,\n customValidationMessage: `Volume size must be present and be greatter than 0`,\n },\n ];\n }\n if (logSearchCustom) {\n customAccountValidation = [\n ...customAccountValidation,\n {\n fieldKey: \"log_search_storage_class\",\n required: true,\n value: logSearchSelectedStorageClass,\n customValidation: logSearchSelectedStorageClass === \"\",\n customValidationMessage: \"Field cannot be empty\",\n },\n {\n fieldKey: \"log_search_volume_size\",\n required: true,\n value: logSearchVolumeSize,\n customValidation:\n logSearchVolumeSize === \"\" || parseInt(logSearchVolumeSize) <= 0,\n customValidationMessage: `Volume size must be present and be greatter than 0`,\n },\n ];\n }\n\n if (customImage) {\n customAccountValidation = [\n ...customAccountValidation,\n {\n fieldKey: \"image\",\n required: false,\n value: imageName,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage: \"Format must be of form: 'minio/minio:VERSION'\",\n },\n {\n fieldKey: \"logSearchImage\",\n required: false,\n value: logSearchImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage:\n \"Format must be of form: 'minio/logsearchapi:VERSION'\",\n },\n {\n fieldKey: \"kesImage\",\n required: false,\n value: kesImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage: \"Format must be of form: 'minio/kes:VERSION'\",\n },\n {\n fieldKey: \"logSearchPostgresImage\",\n required: false,\n value: logSearchPostgresImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage:\n \"Format must be of form: 'library/postgres:VERSION'\",\n },\n {\n fieldKey: \"logSearchPostgresInitImage\",\n required: false,\n value: logSearchPostgresInitImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage:\n \"Format must be of form: 'library/busybox:VERSION'\",\n },\n {\n fieldKey: \"prometheusImage\",\n required: false,\n value: prometheusImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage:\n \"Format must be of form: 'minio/prometheus:VERSION'\",\n },\n {\n fieldKey: \"prometheusSidecarImage\",\n required: false,\n value: prometheusSidecarImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage:\n \"Format must be of form: 'project/container:VERSION'\",\n },\n {\n fieldKey: \"prometheusInitImage\",\n required: false,\n value: prometheusInitImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage:\n \"Format must be of form: 'library/busybox:VERSION'\",\n },\n ];\n if (customDockerhub) {\n customAccountValidation = [\n ...customAccountValidation,\n {\n fieldKey: \"registry\",\n required: true,\n value: imageRegistry,\n },\n {\n fieldKey: \"registryUsername\",\n required: true,\n value: imageRegistryUsername,\n },\n {\n fieldKey: \"registryPassword\",\n required: true,\n value: imageRegistryPassword,\n },\n ];\n }\n }\n\n const commonVal = commonFormValidation(customAccountValidation);\n\n isPageValid(\"configure\", Object.keys(commonVal).length === 0);\n\n setValidationErrors(commonVal);\n }, [\n customImage,\n imageName,\n logSearchImage,\n kesImage,\n logSearchPostgresImage,\n logSearchPostgresInitImage,\n prometheusImage,\n prometheusSidecarImage,\n prometheusInitImage,\n customDockerhub,\n imageRegistry,\n imageRegistryUsername,\n imageRegistryPassword,\n isPageValid,\n prometheusCustom,\n tenantCustom,\n logSearchCustom,\n prometheusSelectedStorageClass,\n prometheusVolumeSize,\n logSearchSelectedStorageClass,\n logSearchVolumeSize,\n ]);\n\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n return (\n \n
\n

Container Images

\n \n Images used by the Tenant Deployment\n \n
\n\n \n \n ) => {\n updateField(\"imageName\", e.target.value);\n cleanValidation(\"image\");\n }}\n label=\"MinIO's Image\"\n value={imageName}\n error={validationErrors[\"image\"] || \"\"}\n placeholder=\"E.g. minio/minio:RELEASE.2022-01-08T03-11-54Z\"\n />\n \n \n ) => {\n updateField(\"logSearchImage\", e.target.value);\n cleanValidation(\"logSearchImage\");\n }}\n label=\"Log Search API's Image\"\n value={logSearchImage}\n error={validationErrors[\"logSearchImage\"] || \"\"}\n placeholder=\"E.g. minio/logsearchapi:v4.1.1\"\n />\n \n \n ) => {\n updateField(\"kesImage\", e.target.value);\n cleanValidation(\"kesImage\");\n }}\n label=\"KES Image\"\n value={kesImage}\n error={validationErrors[\"kesImage\"] || \"\"}\n placeholder=\"E.g. minio/kes:v0.14.0\"\n />\n \n \n ) => {\n updateField(\"logSearchPostgresImage\", e.target.value);\n cleanValidation(\"logSearchPostgresImage\");\n }}\n label=\"Log Search Postgres's Image\"\n value={logSearchPostgresImage}\n error={validationErrors[\"logSearchPostgresImage\"] || \"\"}\n placeholder=\"E.g. library/postgres:13\"\n />\n \n \n ) => {\n updateField(\"logSearchPostgresInitImage\", e.target.value);\n cleanValidation(\"logSearchPostgresInitImage\");\n }}\n label=\"Log Search Postgres's Init Image\"\n value={logSearchPostgresInitImage}\n error={validationErrors[\"logSearchPostgresInitImage\"] || \"\"}\n placeholder=\"E.g. library/busybox:1.33.1\"\n />\n \n \n ) => {\n updateField(\"prometheusImage\", e.target.value);\n cleanValidation(\"prometheusImage\");\n }}\n label=\"Prometheus Image\"\n value={prometheusImage}\n error={validationErrors[\"prometheusImage\"] || \"\"}\n placeholder=\"E.g. quay.io/prometheus/prometheus:latest\"\n />\n \n \n ) => {\n updateField(\"prometheusSidecarImage\", e.target.value);\n cleanValidation(\"prometheusSidecarImage\");\n }}\n label=\"Prometheus Sidecar Image\"\n value={prometheusSidecarImage}\n error={validationErrors[\"prometheusSidecarImage\"] || \"\"}\n placeholder=\"E.g. quay.io/prometheus/prometheus:latest\"\n />\n \n \n ) => {\n updateField(\"prometheusInitImage\", e.target.value);\n cleanValidation(\"prometheusInitImage\");\n }}\n label=\"Prometheus Init Image\"\n value={prometheusInitImage}\n error={validationErrors[\"prometheusInitImage\"] || \"\"}\n placeholder=\"E.g. quay.io/prometheus/prometheus:latest\"\n />\n \n \n\n {customImage && (\n \n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"customDockerhub\", checked);\n }}\n label={\"Set/Update Image Registry\"}\n />\n \n \n )}\n {customDockerhub && (\n \n \n ) => {\n updateField(\"imageRegistry\", e.target.value);\n }}\n label=\"Endpoint\"\n value={imageRegistry}\n error={validationErrors[\"registry\"] || \"\"}\n placeholder=\"E.g. https://index.docker.io/v1/\"\n required\n />\n \n \n ) => {\n updateField(\"imageRegistryUsername\", e.target.value);\n }}\n label=\"Username\"\n value={imageRegistryUsername}\n error={validationErrors[\"registryUsername\"] || \"\"}\n required\n />\n \n \n ) => {\n updateField(\"imageRegistryPassword\", e.target.value);\n }}\n label=\"Password\"\n value={imageRegistryPassword}\n error={validationErrors[\"registryPassword\"] || \"\"}\n required\n />\n \n \n )}\n
\n );\n};\n\nconst mapState = (state: AppState) => ({\n storageClasses: state.tenants.createTenant.storageClasses,\n customImage: state.tenants.createTenant.fields.configure.customImage,\n imageName: state.tenants.createTenant.fields.configure.imageName,\n customDockerhub: state.tenants.createTenant.fields.configure.customDockerhub,\n imageRegistry: state.tenants.createTenant.fields.configure.imageRegistry,\n imageRegistryUsername:\n state.tenants.createTenant.fields.configure.imageRegistryUsername,\n imageRegistryPassword:\n state.tenants.createTenant.fields.configure.imageRegistryPassword,\n exposeMinIO: state.tenants.createTenant.fields.configure.exposeMinIO,\n exposeConsole: state.tenants.createTenant.fields.configure.exposeConsole,\n prometheusCustom:\n state.tenants.createTenant.fields.configure.prometheusCustom,\n tenantCustom: state.tenants.createTenant.fields.configure.tenantCustom,\n logSearchCustom: state.tenants.createTenant.fields.configure.logSearchCustom,\n logSearchVolumeSize:\n state.tenants.createTenant.fields.configure.logSearchVolumeSize,\n logSearchSizeFactor:\n state.tenants.createTenant.fields.configure.logSearchSizeFactor,\n prometheusVolumeSize:\n state.tenants.createTenant.fields.configure.prometheusVolumeSize,\n prometheusSizeFactor:\n state.tenants.createTenant.fields.configure.prometheusSizeFactor,\n logSearchSelectedStorageClass:\n state.tenants.createTenant.fields.configure.logSearchSelectedStorageClass,\n logSearchImage: state.tenants.createTenant.fields.configure.logSearchImage,\n kesImage: state.tenants.createTenant.fields.configure.kesImage,\n logSearchPostgresImage:\n state.tenants.createTenant.fields.configure.logSearchPostgresImage,\n logSearchPostgresInitImage:\n state.tenants.createTenant.fields.configure.logSearchPostgresInitImage,\n prometheusSelectedStorageClass:\n state.tenants.createTenant.fields.configure.prometheusSelectedStorageClass,\n prometheusImage: state.tenants.createTenant.fields.configure.prometheusImage,\n prometheusSidecarImage:\n state.tenants.createTenant.fields.configure.prometheusSidecarImage,\n prometheusInitImage:\n state.tenants.createTenant.fields.configure.prometheusInitImage,\n selectedStorageClass:\n state.tenants.createTenant.fields.nameTenant.selectedStorageClass,\n});\n\nconst connector = connect(mapState, {\n updateAddField,\n isPageValid,\n});\n\nexport default withStyles(styles)(connector(Images));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport { DialogContentText, LinearProgress } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n deleteDialogStyles,\n modalBasic,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { setErrorSnackMessage } from \"../../../../../../actions\";\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\nimport api from \"../../../../../../common/api\";\nimport ConfirmDialog from \"../../../../Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmModalIcon } from \"../../../../../../icons\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n wrapText: {\n maxWidth: \"200px\",\n whiteSpace: \"normal\",\n wordWrap: \"break-word\",\n },\n ...modalBasic,\n ...deleteDialogStyles,\n });\n\ninterface IAddNamespace {\n classes: any;\n namespace: string;\n addNamespaceOpen: boolean;\n closeAddNamespaceModalAndRefresh: (reloadNamespaceData: boolean) => void;\n setErrorSnackMessage: typeof setErrorSnackMessage;\n}\n\nconst AddNamespaceModal = ({\n classes,\n namespace,\n addNamespaceOpen,\n closeAddNamespaceModalAndRefresh,\n setErrorSnackMessage,\n}: IAddNamespace) => {\n const [addNamespaceLoading, setAddNamespaceLoading] =\n useState(false);\n\n useEffect(() => {\n if (addNamespaceLoading) {\n api\n .invoke(\"POST\", \"/api/v1/namespace\", {\n name: namespace,\n })\n .then((res) => {\n setAddNamespaceLoading(false);\n closeAddNamespaceModalAndRefresh(true);\n })\n .catch((err: ErrorResponseHandler) => {\n setAddNamespaceLoading(false);\n setErrorSnackMessage(err);\n });\n }\n }, [\n addNamespaceLoading,\n closeAddNamespaceModalAndRefresh,\n namespace,\n setErrorSnackMessage,\n ]);\n\n const addNamespace = () => {\n setAddNamespaceLoading(true);\n };\n\n return (\n }\n isLoading={addNamespaceLoading}\n onConfirm={addNamespace}\n onClose={() => {\n closeAddNamespaceModalAndRefresh(false);\n }}\n confirmationContent={\n \n {addNamespaceLoading && }\n \n Are you sure you want to add a namespace called\n
\n {namespace}?\n
\n
\n }\n />\n );\n};\n\nconst mapDispatchToProps = {\n setErrorSnackMessage,\n};\n\nconst connector = connect(null, mapDispatchToProps);\n\nexport default withStyles(styles)(connector(AddNamespaceModal));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You 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 { connect } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { AppState } from \"../../../../../store\";\nimport { isPageValid, updateAddField } from \"../../actions\";\nimport {\n modalBasic,\n wizardCommon,\n} from \"../../../Common/FormComponents/common/styleLibrary\";\nimport Table from \"@mui/material/Table\";\nimport TableBody from \"@mui/material/TableBody\";\nimport TableCell from \"@mui/material/TableCell\";\nimport TableRow from \"@mui/material/TableRow\";\nimport { niceBytes } from \"../../../../../common/utils\";\nimport { Opts } from \"../../ListTenants/utils\";\nimport { IResourcesSize } from \"../../ListTenants/types\";\nimport { IErasureCodeCalc } from \"../../../../../common/types\";\n\nimport { Divider } from \"@mui/material\";\nimport { IntegrationConfiguration } from \"./TenantResources/utils\";\n\ninterface ISizePreviewProps {\n classes: any;\n updateAddField: typeof updateAddField;\n isPageValid: typeof isPageValid;\n volumeSize: string;\n sizeFactor: string;\n drivesPerServer: string;\n nodes: string;\n memoryNode: string;\n ecParity: string;\n ecParityChoices: Opts[];\n cleanECChoices: string[];\n resourcesSize: IResourcesSize;\n distribution: any;\n ecParityCalc: IErasureCodeCalc;\n limitSize: any;\n selectedStorageClass: string;\n cpuToUse: string;\n integrationSelection: IntegrationConfiguration;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n root: {\n margin: 4,\n },\n table: {\n \"& .MuiTableCell-root\": {\n fontSize: 13,\n },\n },\n ...modalBasic,\n ...wizardCommon,\n });\n\nconst SizePreview = ({\n classes,\n nodes,\n memoryNode,\n ecParity,\n distribution,\n ecParityCalc,\n cpuToUse,\n integrationSelection,\n}: ISizePreviewProps) => {\n const usableInformation = ecParityCalc.storageFactors.find(\n (element) => element.erasureCode === ecParity\n );\n\n return (\n
\n

Resource Allocation

\n \n \n \n \n Number of Servers\n \n {parseInt(nodes) > 0 ? nodes : \"-\"}\n \n \n {integrationSelection.typeSelection === \"\" &&\n integrationSelection.storageClass === \"\" && (\n \n \n Drives per Server\n \n {distribution ? distribution.disks : \"-\"}\n \n \n \n Drive Capacity\n \n {distribution ? niceBytes(distribution.pvSize) : \"-\"}\n \n \n \n )}\n\n \n Total Volumes\n \n {distribution ? distribution.persistentVolumes : \"-\"}\n \n \n {integrationSelection.typeSelection === \"\" &&\n integrationSelection.storageClass === \"\" && (\n \n \n Memory per Node\n {memoryNode} Gi\n \n \n \n CPU Selection\n \n \n {cpuToUse}\n \n \n \n )}\n \n
\n {ecParityCalc.error === 0 && usableInformation && (\n \n

Erasure Code Configuration

\n \n \n \n \n EC Parity\n \n {ecParity !== \"\" ? ecParity : \"-\"}\n \n \n \n Raw Capacity\n \n {niceBytes(ecParityCalc.rawCapacity)}\n \n \n \n Usable Capacity\n \n {niceBytes(usableInformation.maxCapacity)}\n \n \n \n \n Server Failures Tolerated\n \n \n {distribution\n ? Math.floor(\n usableInformation.maxFailureTolerations /\n distribution.disks\n )\n : \"-\"}\n \n \n \n \n
\n )}\n {integrationSelection.typeSelection !== \"\" &&\n integrationSelection.storageClass !== \"\" && (\n \n

Single Instance Configuration

\n \n \n \n \n CPU\n \n {integrationSelection.CPU !== 0\n ? integrationSelection.CPU\n : \"-\"}\n \n \n \n Memory\n \n {integrationSelection.memory !== 0\n ? `${integrationSelection.memory} Gi`\n : \"-\"}\n \n \n \n Drives per Server\n \n {integrationSelection.drivesPerServer !== 0\n ? `${integrationSelection.drivesPerServer}`\n : \"-\"}\n \n \n \n \n Drive Size\n \n \n {integrationSelection.driveSize.driveSize}\n {integrationSelection.driveSize.sizeUnit}\n \n \n \n \n
\n )}\n
\n );\n};\n\nconst mapState = (state: AppState) => ({\n volumeSize: state.tenants.createTenant.fields.tenantSize.volumeSize,\n sizeFactor: state.tenants.createTenant.fields.tenantSize.sizeFactor,\n drivesPerServer: state.tenants.createTenant.fields.tenantSize.drivesPerServer,\n nodes: state.tenants.createTenant.fields.tenantSize.nodes,\n memoryNode:\n state.tenants.createTenant.fields.tenantSize.resourcesMemoryRequest,\n ecParity: state.tenants.createTenant.fields.tenantSize.ecParity,\n ecParityChoices: state.tenants.createTenant.fields.tenantSize.ecParityChoices,\n cleanECChoices: state.tenants.createTenant.fields.tenantSize.cleanECChoices,\n resourcesSize: state.tenants.createTenant.fields.tenantSize.resourcesSize,\n distribution: state.tenants.createTenant.fields.tenantSize.distribution,\n ecParityCalc: state.tenants.createTenant.fields.tenantSize.ecParityCalc,\n limitSize: state.tenants.createTenant.fields.tenantSize.limitSize,\n selectedStorageClass:\n state.tenants.createTenant.fields.nameTenant.selectedStorageClass,\n cpuToUse: state.tenants.createTenant.fields.tenantSize.resourcesCPURequest,\n integrationSelection:\n state.tenants.createTenant.fields.tenantSize.integrationSelection,\n});\n\nconst connector = connect(mapState, {\n updateAddField,\n isPageValid,\n});\n\nexport default withStyles(styles)(connector(SizePreview));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect } from \"react\";\nimport { connect } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport get from \"lodash/get\";\nimport { AppState } from \"../../../../../../store\";\nimport { isPageValid, updateAddField } from \"../../../actions\";\nimport {\n formFieldStyles,\n modalBasic,\n wizardCommon,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport Grid from \"@mui/material/Grid\";\nimport { IResourcesSize } from \"../../../ListTenants/types\";\nimport { AllocableResourcesResponse } from \"../../../types\";\nimport api from \"../../../../../../common/api\";\nimport InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport FormSwitchWrapper from \"../../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport { floor } from \"lodash\";\nimport InputUnitMenu from \"../../../../Common/FormComponents/InputUnitMenu/InputUnitMenu\";\n\ninterface ITenantSizeResourcesProps {\n classes: any;\n updateAddField: typeof updateAddField;\n isPageValid: typeof isPageValid;\n nodes: string;\n resourcesSize: IResourcesSize;\n selectedStorageClass: string;\n maxAllocatableResources: AllocableResourcesResponse;\n maxCPUsUse: string;\n maxMemorySize: string;\n\n resourcesSpecifyLimit: boolean;\n resourcesCPURequestError: string;\n resourcesCPURequest: string;\n resourcesCPULimitError: string;\n resourcesCPULimit: string;\n resourcesMemoryRequestError: string;\n resourcesMemoryRequest: string;\n resourcesMemoryLimitError: string;\n resourcesMemoryLimit: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n compositeFieldContainer: {\n display: \"flex\",\n alignItems: \"center\",\n },\n compositeAddOn: {\n marginLeft: 10,\n \"& div\": {\n marginBottom: 0,\n },\n \"@media (max-width: 900px)\": {\n \"& div\": {\n marginTop: 5,\n },\n },\n },\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n });\n\nconst TenantSizeResources = ({\n classes,\n updateAddField,\n isPageValid,\n nodes,\n\n resourcesSize,\n selectedStorageClass,\n maxAllocatableResources,\n maxCPUsUse,\n maxMemorySize,\n resourcesSpecifyLimit,\n resourcesCPURequestError,\n resourcesCPURequest,\n resourcesCPULimitError,\n resourcesCPULimit,\n resourcesMemoryRequestError,\n resourcesMemoryRequest,\n resourcesMemoryLimitError,\n resourcesMemoryLimit,\n}: ITenantSizeResourcesProps) => {\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n updateAddField(\"tenantSize\", field, value);\n },\n [updateAddField]\n );\n\n /*Debounce functions*/\n\n useEffect(() => {\n isPageValid(\n \"tenantSize\",\n resourcesMemoryRequestError === \"\" &&\n resourcesMemoryLimitError === \"\" &&\n resourcesCPURequestError === \"\" &&\n resourcesCPULimitError === \"\"\n );\n }, [\n isPageValid,\n resourcesMemoryRequestError,\n resourcesMemoryLimitError,\n resourcesCPURequestError,\n resourcesCPULimitError,\n ]);\n\n /*End debounce functions*/\n\n /*Calculate Allocation*/\n useEffect(() => {\n // Get allocatable Resources\n api\n .invoke(\"GET\", `api/v1/cluster/allocatable-resources?num_nodes=${nodes}`)\n .then((res: AllocableResourcesResponse) => {\n updateField(\"maxAllocatableResources\", res);\n\n const maxAllocatableResources = res;\n\n const memoryExists = get(\n maxAllocatableResources,\n \"min_allocatable_mem\",\n false\n );\n\n const cpuExists = get(\n maxAllocatableResources,\n \"min_allocatable_cpu\",\n false\n );\n\n if (memoryExists === false || cpuExists === false) {\n updateField(\"cpuToUse\", 0);\n\n updateField(\"maxMemorySize\", \"\");\n updateField(\"maxCPUsUse\", \"\");\n\n return;\n }\n\n const maxMemory = floor(\n res.mem_priority.max_allocatable_mem / 1024 / 1024 / 1024\n );\n // We default to Best CPU Configuration\n updateField(\"maxMemorySize\", maxMemory.toString());\n updateField(\n \"maxCPUsUse\",\n res.cpu_priority.max_allocatable_cpu.toString()\n );\n\n const maxAllocatableCPU = get(\n maxAllocatableResources,\n \"cpu_priority.max_allocatable_cpu\",\n 0\n );\n\n const baseCpuUse = Math.max(1, floor(maxAllocatableCPU / 2));\n if (resourcesCPURequest === \"\") {\n updateField(\"resourcesCPURequest\", baseCpuUse);\n }\n\n const baseMemoryUse = Math.max(2, floor(maxMemory / 2));\n if (resourcesMemoryRequest === \"\") {\n updateField(\"resourcesMemoryRequest\", baseMemoryUse);\n }\n })\n .catch((err: any) => {\n updateField(\"maxMemorySize\", 0);\n updateField(\"resourcesCPURequest\", \"\");\n updateField(\"resourcesMemoryRequest\", \"\");\n\n console.error(err);\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [nodes, updateField]);\n\n /*Calculate Allocation End*/\n\n return (\n \n \n
\n

Resources

\n \n You may specify the amount of CPU and Memory that MinIO servers\n should reserve on each node.\n \n
\n
\n {resourcesSize.error !== \"\" && (\n \n
{resourcesSize.error}
\n
\n )}\n\n \n {\n let value = parseInt(e.target.value);\n if (e.target.value === \"\") {\n updateField(\"resourcesCPURequestError\", \"\");\n } else if (isNaN(value)) {\n updateField(\"resourcesCPURequestError\", \"Invalid number\");\n } else if (value > parseInt(maxCPUsUse)) {\n updateField(\n \"resourcesCPURequestError\",\n `Request exceeds available cores (${maxCPUsUse})`\n );\n } else if (e.target.validity.valid) {\n updateField(\"resourcesCPURequestError\", \"\");\n } else {\n updateField(\"resourcesCPURequestError\", \"Invalid configuration\");\n }\n updateField(\"resourcesCPURequest\", e.target.value);\n }}\n value={resourcesCPURequest}\n disabled={selectedStorageClass === \"\"}\n max={maxCPUsUse}\n error={resourcesCPURequestError}\n pattern={\"[0-9]*\"}\n />\n \n\n \n ) => {\n let value = parseInt(e.target.value);\n if (e.target.value === \"\") {\n updateField(\"resourcesMemoryRequestError\", \"\");\n } else if (isNaN(value)) {\n updateField(\"resourcesMemoryRequestError\", \"Invalid number\");\n } else if (value > parseInt(maxMemorySize)) {\n updateField(\n \"resourcesMemoryRequestError\",\n `Request exceeds available memory across ${nodes} nodes (${maxMemorySize}Gi)`\n );\n } else if (value < 2) {\n updateField(\n \"resourcesMemoryRequestError\",\n \"At least 2Gi must be requested\"\n );\n } else if (e.target.validity.valid) {\n updateField(\"resourcesMemoryRequestError\", \"\");\n } else {\n updateField(\n \"resourcesMemoryRequestError\",\n \"Invalid configuration\"\n );\n }\n updateField(\"resourcesMemoryRequest\", e.target.value);\n }}\n label=\"Memory Request\"\n overlayObject={\n {}}\n unitSelected={\"Gi\"}\n unitsList={[{ label: \"Gi\", value: \"Gi\" }]}\n disabled={true}\n />\n }\n value={resourcesMemoryRequest}\n disabled={selectedStorageClass === \"\"}\n error={resourcesMemoryRequestError}\n pattern={\"[0-9]*\"}\n />\n \n\n \n {\n const targetD = e.target;\n const checked = targetD.checked;\n\n updateField(\"resourcesSpecifyLimit\", checked);\n }}\n label={\"Specify Limit\"}\n />\n \n\n {resourcesSpecifyLimit && (\n \n \n {\n let value = parseInt(e.target.value);\n if (e.target.value === \"\") {\n updateField(\"resourcesCPULimitError\", \"\");\n } else if (isNaN(value)) {\n updateField(\"resourcesCPULimitError\", \"Invalid number\");\n } else if (e.target.validity.valid) {\n updateField(\"resourcesCPULimitError\", \"\");\n } else {\n updateField(\n \"resourcesCPULimitError\",\n \"Invalid configuration\"\n );\n }\n updateField(\"resourcesCPULimit\", e.target.value);\n }}\n value={resourcesCPULimit}\n disabled={selectedStorageClass === \"\"}\n max={maxCPUsUse}\n error={resourcesCPULimitError}\n pattern={\"[0-9]*\"}\n />\n \n\n \n ) => {\n let value = parseInt(e.target.value);\n console.log(\"value\", value);\n if (e.target.value === \"\") {\n updateField(\"resourcesMemoryLimitError\", \"\");\n } else if (isNaN(value)) {\n updateField(\"resourcesMemoryLimitError\", \"Invalid number\");\n } else if (e.target.validity.valid) {\n updateField(\"resourcesMemoryLimitError\", \"\");\n } else {\n updateField(\n \"resourcesMemoryLimitError\",\n \"Invalid configuration\"\n );\n }\n updateField(\"resourcesMemoryLimit\", e.target.value);\n }}\n label=\"Memory Limit\"\n overlayObject={\n {}}\n unitSelected={\"Gi\"}\n unitsList={[{ label: \"Gi\", value: \"Gi\" }]}\n disabled={true}\n />\n }\n value={resourcesMemoryLimit}\n disabled={selectedStorageClass === \"\"}\n error={resourcesMemoryLimitError}\n pattern={\"[0-9]*\"}\n />\n \n \n )}\n
\n );\n};\n\nconst mapState = (state: AppState) => ({\n nodes: state.tenants.createTenant.fields.tenantSize.nodes,\n\n resourcesSize: state.tenants.createTenant.fields.tenantSize.resourcesSize,\n selectedStorageClass:\n state.tenants.createTenant.fields.nameTenant.selectedStorageClass,\n maxAllocatableResources:\n state.tenants.createTenant.fields.tenantSize.maxAllocatableResources,\n maxCPUsUse: state.tenants.createTenant.fields.tenantSize.maxCPUsUse,\n maxMemorySize: state.tenants.createTenant.fields.tenantSize.maxMemorySize,\n\n resourcesSpecifyLimit:\n state.tenants.createTenant.fields.tenantSize.resourcesSpecifyLimit,\n\n resourcesCPURequestError:\n state.tenants.createTenant.fields.tenantSize.resourcesCPURequestError,\n resourcesCPURequest:\n state.tenants.createTenant.fields.tenantSize.resourcesCPURequest,\n resourcesCPULimitError:\n state.tenants.createTenant.fields.tenantSize.resourcesCPULimitError,\n resourcesCPULimit:\n state.tenants.createTenant.fields.tenantSize.resourcesCPULimit,\n\n resourcesMemoryRequestError:\n state.tenants.createTenant.fields.tenantSize.resourcesMemoryRequestError,\n resourcesMemoryRequest:\n state.tenants.createTenant.fields.tenantSize.resourcesMemoryRequest,\n resourcesMemoryLimitError:\n state.tenants.createTenant.fields.tenantSize.resourcesMemoryLimitError,\n resourcesMemoryLimit:\n state.tenants.createTenant.fields.tenantSize.resourcesMemoryLimit,\n});\n\nconst connector = connect(mapState, {\n updateAddField,\n isPageValid,\n});\n\nexport default withStyles(styles)(connector(TenantSizeResources));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You 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 { connect } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport { SelectChangeEvent } from \"@mui/material\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { AppState } from \"../../../../../../store\";\nimport { isPageValid, updateAddField } from \"../../../actions\";\nimport {\n formFieldStyles,\n modalBasic,\n wizardCommon,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport Grid from \"@mui/material/Grid\";\nimport {\n calculateDistribution,\n erasureCodeCalc,\n getBytes,\n k8sScalarUnitsExcluding,\n niceBytes,\n} from \"../../../../../../common/utils\";\nimport { clearValidationError } from \"../../../utils\";\nimport { ecListTransform, Opts } from \"../../../ListTenants/utils\";\nimport { IResourcesSize } from \"../../../ListTenants/types\";\nimport { ICapacity, IErasureCodeCalc } from \"../../../../../../common/types\";\nimport { commonFormValidation } from \"../../../../../../utils/validationFunctions\";\nimport api from \"../../../../../../common/api\";\nimport InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport SelectWrapper from \"../../../../Common/FormComponents/SelectWrapper/SelectWrapper\";\nimport TenantSizeResources from \"./TenantSizeResources\";\nimport InputUnitMenu from \"../../../../Common/FormComponents/InputUnitMenu/InputUnitMenu\";\n\ninterface ITenantSizeProps {\n classes: any;\n updateAddField: typeof updateAddField;\n isPageValid: typeof isPageValid;\n volumeSize: string;\n sizeFactor: string;\n drivesPerServer: string;\n nodes: string;\n memoryNode: string;\n ecParity: string;\n ecParityChoices: Opts[];\n cleanECChoices: string[];\n resourcesSize: IResourcesSize;\n distribution: any;\n ecParityCalc: IErasureCodeCalc;\n limitSize: any;\n selectedStorageClass: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n compositeFieldContainer: {\n display: \"flex\",\n alignItems: \"center\",\n },\n compositeAddOn: {\n marginLeft: 10,\n \"& div\": {\n marginBottom: 0,\n },\n \"@media (max-width: 900px)\": {\n \"& div\": {\n marginTop: 5,\n },\n },\n },\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n });\n\nconst TenantSize = ({\n classes,\n updateAddField,\n isPageValid,\n volumeSize,\n sizeFactor,\n drivesPerServer,\n nodes,\n memoryNode,\n ecParity,\n ecParityChoices,\n cleanECChoices,\n resourcesSize,\n distribution,\n ecParityCalc,\n limitSize,\n selectedStorageClass,\n}: ITenantSizeProps) => {\n const [validationErrors, setValidationErrors] = useState({});\n const [errorFlag, setErrorFlag] = useState(false);\n const [nodeError, setNodeError] = useState(\"\");\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n updateAddField(\"tenantSize\", field, value);\n },\n [updateAddField]\n );\n\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n /*Debounce functions*/\n\n // Storage Quotas\n\n useEffect(() => {\n if (ecParityChoices.length > 0 && distribution.error === \"\") {\n const ecCodeValidated = erasureCodeCalc(\n cleanECChoices,\n distribution.persistentVolumes,\n distribution.pvSize,\n distribution.nodes\n );\n\n updateField(\"ecParityCalc\", ecCodeValidated);\n if (!cleanECChoices.includes(ecParity) || ecParity === \"\") {\n updateField(\"ecParity\", ecCodeValidated.defaultEC);\n }\n }\n }, [\n ecParity,\n ecParityChoices.length,\n distribution,\n cleanECChoices,\n updateField,\n ]);\n /*End debounce functions*/\n\n /*Calculate Allocation*/\n useEffect(() => {\n //Validate Cluster Size\n const size = volumeSize;\n const factor = sizeFactor;\n const limitSize = getBytes(\"12\", \"Ti\", true);\n\n const clusterCapacity: ICapacity = {\n unit: factor,\n value: size.toString(),\n };\n\n const distrCalculate = calculateDistribution(\n clusterCapacity,\n parseInt(nodes),\n parseInt(limitSize),\n parseInt(drivesPerServer)\n );\n\n updateField(\"distribution\", distrCalculate);\n setErrorFlag(false);\n setNodeError(\"\");\n }, [nodes, volumeSize, sizeFactor, updateField, drivesPerServer]);\n\n /*Calculate Allocation End*/\n\n /* Validations of pages */\n\n useEffect(() => {\n const parsedSize = getBytes(volumeSize, sizeFactor, true);\n\n const commonValidation = commonFormValidation([\n {\n fieldKey: \"nodes\",\n required: true,\n value: nodes,\n customValidation: errorFlag,\n customValidationMessage: nodeError,\n },\n {\n fieldKey: \"volume_size\",\n required: true,\n value: volumeSize,\n customValidation:\n parseInt(parsedSize) < 1073741824 ||\n parseInt(parsedSize) > limitSize[selectedStorageClass],\n customValidationMessage: `Volume size must be greater than 1Gi and less than ${niceBytes(\n limitSize[selectedStorageClass],\n true\n )}`,\n },\n {\n fieldKey: \"drivesps\",\n required: true,\n value: drivesPerServer,\n customValidation: parseInt(drivesPerServer) < 1,\n customValidationMessage: \"There must be at least one drive\",\n },\n ]);\n\n isPageValid(\n \"tenantSize\",\n !(\"nodes\" in commonValidation) &&\n !(\"volume_size\" in commonValidation) &&\n !(\"drivesps\" in commonValidation) &&\n distribution.error === \"\" &&\n ecParityCalc.error === 0 &&\n ecParity !== \"\"\n );\n\n setValidationErrors(commonValidation);\n }, [\n nodes,\n volumeSize,\n sizeFactor,\n memoryNode,\n distribution,\n ecParityCalc,\n resourcesSize,\n limitSize,\n selectedStorageClass,\n isPageValid,\n errorFlag,\n nodeError,\n drivesPerServer,\n ecParity,\n ]);\n\n useEffect(() => {\n if (distribution.error === \"\") {\n // Get EC Value\n if (nodes.trim() !== \"\" && distribution.disks !== 0) {\n api\n .invoke(\"GET\", `api/v1/get-parity/${nodes}/${distribution.disks}`)\n .then((ecList: string[]) => {\n updateField(\"ecParityChoices\", ecListTransform(ecList));\n updateField(\"cleanECChoices\", ecList);\n })\n .catch((err: any) => {\n updateField(\"ecparityChoices\", []);\n isPageValid(\"tenantSize\", false);\n updateField(\"ecParity\", \"\");\n });\n }\n }\n }, [distribution, isPageValid, updateField, nodes]);\n\n /* End Validation of pages */\n\n return (\n \n \n
\n

Capacity

\n \n Please select the desired capacity\n \n
\n
\n {distribution.error !== \"\" && (\n \n
{distribution.error}
\n
\n )}\n \n ) => {\n if (e.target.validity.valid) {\n updateField(\"nodes\", e.target.value);\n cleanValidation(\"nodes\");\n }\n }}\n label=\"Number of Servers\"\n disabled={selectedStorageClass === \"\"}\n value={nodes}\n min=\"4\"\n required\n error={validationErrors[\"nodes\"] || \"\"}\n pattern={\"[0-9]*\"}\n />\n \n \n ) => {\n if (e.target.validity.valid) {\n updateField(\"drivesPerServer\", e.target.value);\n cleanValidation(\"drivesps\");\n }\n }}\n label=\"Drives per Server\"\n value={drivesPerServer}\n disabled={selectedStorageClass === \"\"}\n min=\"1\"\n required\n error={validationErrors[\"drivesps\"] || \"\"}\n pattern={\"[0-9]*\"}\n />\n \n \n
\n ) => {\n updateField(\"volumeSize\", e.target.value);\n cleanValidation(\"volume_size\");\n }}\n label=\"Total Size\"\n value={volumeSize}\n disabled={selectedStorageClass === \"\"}\n required\n error={validationErrors[\"volume_size\"] || \"\"}\n min=\"0\"\n overlayObject={\n {\n updateField(\"sizeFactor\", newValue);\n }}\n unitSelected={sizeFactor}\n unitsList={k8sScalarUnitsExcluding([\"Ki\", \"Mi\"])}\n disabled={selectedStorageClass === \"\"}\n />\n }\n />\n
\n
\n\n \n ) => {\n updateField(\"ecParity\", e.target.value as string);\n }}\n label=\"Erasure Code Parity\"\n disabled={selectedStorageClass === \"\"}\n value={ecParity}\n options={ecParityChoices}\n />\n \n Please select the desired parity. This setting will change the max\n usable capacity in the cluster\n \n \n\n \n
\n );\n};\n\nconst mapState = (state: AppState) => ({\n volumeSize: state.tenants.createTenant.fields.tenantSize.volumeSize,\n sizeFactor: state.tenants.createTenant.fields.tenantSize.sizeFactor,\n drivesPerServer: state.tenants.createTenant.fields.tenantSize.drivesPerServer,\n nodes: state.tenants.createTenant.fields.tenantSize.nodes,\n memoryNode: state.tenants.createTenant.fields.tenantSize.memoryNode,\n ecParity: state.tenants.createTenant.fields.tenantSize.ecParity,\n ecParityChoices: state.tenants.createTenant.fields.tenantSize.ecParityChoices,\n cleanECChoices: state.tenants.createTenant.fields.tenantSize.cleanECChoices,\n\n resourcesSize: state.tenants.createTenant.fields.tenantSize.resourcesSize,\n distribution: state.tenants.createTenant.fields.tenantSize.distribution,\n ecParityCalc: state.tenants.createTenant.fields.tenantSize.ecParityCalc,\n limitSize: state.tenants.createTenant.limitSize,\n selectedStorageClass:\n state.tenants.createTenant.fields.nameTenant.selectedStorageClass,\n});\n\nconst connector = connect(mapState, {\n updateAddField,\n isPageValid,\n});\n\nexport default withStyles(styles)(connector(TenantSize));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You 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 { connect } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport { SelectChangeEvent } from \"@mui/material\";\nimport get from \"lodash/get\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { AppState } from \"../../../../../../store\";\nimport { isPageValid, updateAddField } from \"../../../actions\";\nimport {\n formFieldStyles,\n modalBasic,\n wizardCommon,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport Grid from \"@mui/material/Grid\";\nimport { erasureCodeCalc, getBytes } from \"../../../../../../common/utils\";\nimport { clearValidationError } from \"../../../utils\";\nimport { ecListTransform, Opts } from \"../../../ListTenants/utils\";\nimport { IResourcesSize } from \"../../../ListTenants/types\";\nimport {\n IErasureCodeCalc,\n IStorageDistribution,\n} from \"../../../../../../common/types\";\nimport { commonFormValidation } from \"../../../../../../utils/validationFunctions\";\nimport api from \"../../../../../../common/api\";\nimport InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport SelectWrapper from \"../../../../Common/FormComponents/SelectWrapper/SelectWrapper\";\nimport {\n IMkEnvs,\n IntegrationConfiguration,\n mkPanelConfigurations,\n} from \"./utils\";\n\ninterface ITenantSizeAWSProps {\n classes: any;\n updateAddField: typeof updateAddField;\n isPageValid: typeof isPageValid;\n volumeSize: string;\n sizeFactor: string;\n drivesPerServer: string;\n nodes: string;\n memoryNode: string;\n ecParity: string;\n ecParityChoices: Opts[];\n cleanECChoices: string[];\n resourcesSize: IResourcesSize;\n distribution: any;\n ecParityCalc: IErasureCodeCalc;\n limitSize: any;\n selectedStorageType: string;\n cpuToUse: string;\n maxCPUsUse: string;\n formToRender?: IMkEnvs;\n integrationSelection: IntegrationConfiguration;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n compositeFieldContainer: {\n display: \"flex\",\n alignItems: \"center\",\n },\n compositeAddOn: {\n marginLeft: 10,\n \"& div\": {\n marginBottom: 0,\n },\n \"@media (max-width: 900px)\": {\n \"& div\": {\n marginTop: 5,\n },\n },\n },\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n });\n\nconst TenantSizeMK = ({\n classes,\n updateAddField,\n isPageValid,\n volumeSize,\n sizeFactor,\n drivesPerServer,\n nodes,\n memoryNode,\n ecParity,\n ecParityChoices,\n cleanECChoices,\n resourcesSize,\n distribution,\n ecParityCalc,\n limitSize,\n cpuToUse,\n selectedStorageType,\n maxCPUsUse,\n formToRender,\n integrationSelection,\n}: ITenantSizeAWSProps) => {\n const [validationErrors, setValidationErrors] = useState({});\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n updateAddField(\"tenantSize\", field, value);\n },\n [updateAddField]\n );\n\n const updateMainField = useCallback(\n (field: string, value: string) => {\n updateAddField(\"nameTenant\", field, value);\n },\n [updateAddField]\n );\n\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n /*Debounce functions*/\n\n // Storage Quotas\n useEffect(() => {\n if (ecParityChoices.length > 0 && distribution.error === \"\") {\n const ecCodeValidated = erasureCodeCalc(\n cleanECChoices,\n distribution.persistentVolumes,\n distribution.pvSize,\n distribution.nodes\n );\n\n updateField(\"ecParityCalc\", ecCodeValidated);\n\n if (!cleanECChoices.includes(ecParity) || ecParity === \"\") {\n updateField(\"ecParity\", ecCodeValidated.defaultEC);\n }\n }\n }, [ecParity, ecParityChoices, distribution, cleanECChoices, updateField]);\n /*End debounce functions*/\n\n /*Set location Storage Types*/\n useEffect(() => {\n if (formToRender !== undefined && parseInt(nodes) >= 4) {\n const setConfigs = mkPanelConfigurations[formToRender];\n const keyCount = Object.keys(setConfigs).length;\n\n //Configuration is filled\n if (keyCount > 0) {\n const configs: IntegrationConfiguration[] = get(\n setConfigs,\n \"configurations\",\n []\n );\n\n const mainSelection = configs.find(\n (item) => item.typeSelection === selectedStorageType\n );\n\n if (mainSelection) {\n updateField(\"integrationSelection\", mainSelection);\n updateMainField(\"selectedStorageClass\", mainSelection.storageClass);\n\n let pvSize = parseInt(\n getBytes(\n mainSelection.driveSize.driveSize,\n mainSelection.driveSize.sizeUnit,\n true\n ),\n 10\n );\n\n const distrCalculate: IStorageDistribution = {\n pvSize,\n nodes: parseInt(nodes),\n disks: mainSelection.drivesPerServer,\n persistentVolumes: mainSelection.drivesPerServer * parseInt(nodes),\n error: \"\",\n };\n\n updateField(\"distribution\", distrCalculate);\n // apply requests, half of the available resources\n updateField(\n \"resourcesCPURequest\",\n Math.max(1, mainSelection.CPU / 2)\n );\n updateField(\n \"resourcesMemoryRequest\",\n Math.max(2, mainSelection.memory / 2)\n );\n }\n }\n }\n }, [nodes, selectedStorageType, formToRender, updateField, updateMainField]);\n\n /*Calculate Allocation End*/\n\n /* Validations of pages */\n\n useEffect(() => {\n const commonValidation = commonFormValidation([\n {\n fieldKey: \"nodes\",\n required: true,\n value: nodes,\n customValidation: parseInt(nodes) < 4,\n customValidationMessage: \"Al least 4 servers must be selected\",\n },\n ]);\n\n isPageValid(\n \"tenantSize\",\n !(\"nodes\" in commonValidation) &&\n distribution.error === \"\" &&\n ecParityCalc.error === 0 &&\n resourcesSize.error === \"\" &&\n ecParity !== \"\" &&\n parseInt(nodes) >= 4\n );\n\n setValidationErrors(commonValidation);\n }, [\n nodes,\n volumeSize,\n sizeFactor,\n memoryNode,\n distribution,\n ecParityCalc,\n resourcesSize,\n limitSize,\n selectedStorageType,\n cpuToUse,\n maxCPUsUse,\n isPageValid,\n drivesPerServer,\n ecParity,\n ]);\n\n useEffect(() => {\n if (integrationSelection.drivesPerServer !== 0) {\n // Get EC Value\n if (nodes.trim() !== \"\") {\n api\n .invoke(\n \"GET\",\n `api/v1/get-parity/${nodes}/${integrationSelection.drivesPerServer}`\n )\n .then((ecList: string[]) => {\n updateField(\"ecParityChoices\", ecListTransform(ecList));\n updateField(\"cleanECChoices\", ecList);\n })\n .catch((err: any) => {\n updateField(\"ecparityChoices\", []);\n isPageValid(\"tenantSize\", false);\n updateField(\"ecParity\", \"\");\n });\n }\n }\n }, [integrationSelection, nodes, isPageValid, updateField]);\n\n /* End Validation of pages */\n\n return (\n \n \n
\n

Tenant Size

\n \n Please select the desired capacity\n \n
\n
\n {distribution.error !== \"\" && (\n \n
{distribution.error}
\n
\n )}\n {resourcesSize.error !== \"\" && (\n \n
{resourcesSize.error}
\n
\n )}\n \n ) => {\n if (e.target.validity.valid) {\n updateField(\"nodes\", e.target.value);\n cleanValidation(\"nodes\");\n }\n }}\n label=\"Number of Servers\"\n disabled={selectedStorageType === \"\"}\n value={nodes}\n min=\"4\"\n required\n error={validationErrors[\"nodes\"] || \"\"}\n pattern={\"[0-9]*\"}\n />\n \n \n ) => {\n updateField(\"ecParity\", e.target.value as string);\n }}\n label=\"Erasure Code Parity\"\n disabled={selectedStorageType === \"\"}\n value={ecParity}\n options={ecParityChoices}\n />\n \n Please select the desired parity. This setting will change the max\n usable capacity in the cluster\n \n \n
\n );\n};\n\nconst mapState = (state: AppState) => () => {\n const createTenant = state.tenants.createTenant;\n\n const {\n memoryNode,\n ecParityChoices,\n distribution,\n cleanECChoices,\n sizeFactor,\n ecParity,\n cpuToUse,\n integrationSelection,\n resourcesSize,\n drivesPerServer,\n maxCPUsUse,\n ecParityCalc,\n volumeSize,\n nodes,\n } = createTenant.fields.tenantSize;\n\n return {\n volumeSize,\n sizeFactor,\n drivesPerServer,\n nodes,\n memoryNode,\n ecParity,\n ecParityChoices,\n cleanECChoices,\n resourcesSize,\n distribution,\n ecParityCalc,\n cpuToUse,\n maxCPUsUse,\n integrationSelection,\n limitSize: createTenant.limitSize,\n selectedStorageType: createTenant.fields.nameTenant.selectedStorageType,\n };\n};\n\nconst connector = connect(mapState, {\n updateAddField,\n isPageValid,\n});\n\nexport default withStyles(styles)(connector(TenantSizeMK));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// 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 useState,\n} from \"react\";\nimport { connect } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport get from \"lodash/get\";\nimport debounce from \"lodash/debounce\";\nimport Grid from \"@mui/material/Grid\";\nimport {\n formFieldStyles,\n modalBasic,\n wizardCommon,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { setModalErrorSnackMessage } from \"../../../../../../actions\";\nimport {\n isPageValid,\n setLimitSize,\n setStorageClassesList,\n updateAddField,\n} from \"../../../actions\";\nimport {\n getLimitSizes,\n IQuotaElement,\n IQuotas,\n Opts,\n} from \"../../../ListTenants/utils\";\nimport { AppState } from \"../../../../../../store\";\nimport { commonFormValidation } from \"../../../../../../utils/validationFunctions\";\nimport { clearValidationError } from \"../../../utils\";\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\nimport api from \"../../../../../../common/api\";\nimport InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport SelectWrapper from \"../../../../Common/FormComponents/SelectWrapper/SelectWrapper\";\nimport AddIcon from \"../../../../../../icons/AddIcon\";\nimport AddNamespaceModal from \"../helpers/AddNamespaceModal\";\nimport SizePreview from \"../SizePreview\";\nimport TenantSize from \"./TenantSize\";\nimport { Paper, SelectChangeEvent } from \"@mui/material\";\nimport { IMkEnvs, mkPanelConfigurations } from \"./utils\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n sizePreview: {\n position: \"fixed\",\n marginLeft: 10,\n background: \"#FFFFFF\",\n border: \"1px solid #EAEAEA\",\n padding: 2,\n },\n ...formFieldStyles,\n ...modalBasic,\n ...wizardCommon,\n });\n\ninterface INameTenantMainScreen {\n classes: any;\n storageClasses: Opts[];\n setModalErrorSnackMessage: typeof setModalErrorSnackMessage;\n updateAddField: typeof updateAddField;\n isPageValid: typeof isPageValid;\n setStorageClassesList: typeof setStorageClassesList;\n setLimitSize: typeof setLimitSize;\n tenantName: string;\n namespace: string;\n selectedStorageClass: string;\n selectedStorageType: string;\n formToRender?: IMkEnvs;\n}\n\nconst NameTenantMain = ({\n classes,\n storageClasses,\n tenantName,\n namespace,\n selectedStorageClass,\n selectedStorageType,\n formToRender = IMkEnvs.default,\n updateAddField,\n setStorageClassesList,\n setLimitSize,\n isPageValid,\n setModalErrorSnackMessage,\n}: INameTenantMainScreen) => {\n const [validationErrors, setValidationErrors] = useState({});\n const [emptyNamespace, setEmptyNamespace] = useState(true);\n const [loadingNamespaceInfo, setLoadingNamespaceInfo] =\n useState(false);\n const [showCreateButton, setShowCreateButton] = useState(false);\n const [openAddNSConfirm, setOpenAddNSConfirm] = useState(false);\n\n // Common\n const updateField = useCallback(\n (field: string, value: string) => {\n updateAddField(\"nameTenant\", field, value);\n },\n [updateAddField]\n );\n\n // Storage classes retrieval\n const getNamespaceInformation = useCallback(() => {\n setShowCreateButton(false);\n // Empty tenantValidation\n api\n .invoke(\"GET\", `/api/v1/namespaces/${namespace}/tenants`)\n .then((res: any[]) => {\n const tenantsList = get(res, \"tenants\", []);\n\n if (tenantsList && tenantsList.length > 0) {\n setEmptyNamespace(false);\n setLoadingNamespaceInfo(false);\n return;\n }\n setEmptyNamespace(true);\n\n // Storagequotas retrieval\n api\n .invoke(\n \"GET\",\n `/api/v1/namespaces/${namespace}/resourcequotas/${namespace}-storagequota`\n )\n .then((res: IQuotas) => {\n const elements: IQuotaElement[] = get(res, \"elements\", []);\n setLimitSize(getLimitSizes(res));\n\n const newStorage = elements.map((storageClass: any) => {\n const name = get(storageClass, \"name\", \"\").split(\n \".storageclass.storage.k8s.io/requests.storage\"\n )[0];\n\n return { label: name, value: name };\n });\n\n setStorageClassesList(newStorage);\n\n const stExists = newStorage.findIndex(\n (storageClass) => storageClass.value === selectedStorageClass\n );\n\n if (newStorage.length > 0 && stExists === -1) {\n updateField(\"selectedStorageClass\", newStorage[0].value);\n } else if (newStorage.length === 0) {\n updateField(\"selectedStorageClass\", \"\");\n setStorageClassesList([]);\n }\n setLoadingNamespaceInfo(false);\n })\n .catch((err: ErrorResponseHandler) => {\n setLoadingNamespaceInfo(false);\n setShowCreateButton(true);\n updateField(\"selectedStorageClass\", \"\");\n setStorageClassesList([]);\n console.error(\"Namespace error: \", err);\n });\n })\n .catch((err: ErrorResponseHandler) => {\n setModalErrorSnackMessage({\n errorMessage: \"Error validating if namespace already has tenants\",\n detailedError: err.detailedError,\n });\n });\n }, [\n namespace,\n setLimitSize,\n setModalErrorSnackMessage,\n setStorageClassesList,\n updateField,\n selectedStorageClass,\n ]);\n\n const debounceNamespace = useMemo(\n () => debounce(getNamespaceInformation, 500),\n [getNamespaceInformation]\n );\n\n useEffect(() => {\n if (namespace !== \"\") {\n debounceNamespace();\n setLoadingNamespaceInfo(true);\n\n // Cancel previous debounce calls during useEffect cleanup.\n return debounceNamespace.cancel;\n }\n }, [debounceNamespace, namespace]);\n\n // Validation\n useEffect(() => {\n let customNamespaceError = false;\n let errorMessage = \"\";\n\n if (!emptyNamespace && !loadingNamespaceInfo) {\n customNamespaceError = true;\n errorMessage = \"You can only create one tenant per namespace\";\n } else if (\n storageClasses.length < 1 &&\n emptyNamespace &&\n !loadingNamespaceInfo\n ) {\n customNamespaceError = true;\n errorMessage = \"Please enter a valid namespace\";\n }\n\n const commonValidation = commonFormValidation([\n {\n fieldKey: \"tenant-name\",\n required: true,\n pattern: /^[a-z0-9-]{3,63}$/,\n customPatternMessage:\n \"Name only can contain lowercase letters, numbers and '-'. Min. Length: 3\",\n value: tenantName,\n },\n {\n fieldKey: \"namespace\",\n required: true,\n value: namespace,\n customValidation: customNamespaceError,\n customValidationMessage: errorMessage,\n },\n ]);\n\n const isValid =\n !(\"tenant-name\" in commonValidation) &&\n !(\"namespace\" in commonValidation) &&\n ((formToRender === IMkEnvs.default && storageClasses.length > 0) ||\n (formToRender !== IMkEnvs.default && selectedStorageType !== \"\"));\n\n isPageValid(\"nameTenant\", isValid);\n\n setValidationErrors(commonValidation);\n }, [\n storageClasses,\n namespace,\n tenantName,\n isPageValid,\n emptyNamespace,\n loadingNamespaceInfo,\n selectedStorageType,\n formToRender,\n ]);\n\n const frmValidationCleanup = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n const addNamespace = () => {\n setOpenAddNSConfirm(true);\n };\n\n const closeAddNamespace = (refresh: boolean) => {\n setOpenAddNSConfirm(false);\n\n if (refresh) {\n debounceNamespace();\n }\n };\n\n return (\n \n {openAddNSConfirm && (\n \n )}\n \n \n \n \n \n
\n

Name

\n \n How would you like to name this new tenant?\n \n
\n
\n ) => {\n updateField(\"tenantName\", e.target.value);\n frmValidationCleanup(\"tenant-name\");\n }}\n label=\"Name\"\n value={tenantName}\n required\n error={validationErrors[\"tenant-name\"] || \"\"}\n />\n
\n
\n \n ) => {\n updateField(\"namespace\", e.target.value);\n frmValidationCleanup(\"namespace\");\n }}\n label=\"Namespace\"\n value={namespace}\n error={validationErrors[\"namespace\"] || \"\"}\n overlayIcon={showCreateButton ? : null}\n overlayAction={addNamespace}\n required\n />\n \n {formToRender === IMkEnvs.default ? (\n \n ) => {\n updateField(\n \"selectedStorageClass\",\n e.target.value as string\n );\n }}\n label=\"Storage Class\"\n value={selectedStorageClass}\n options={storageClasses}\n disabled={storageClasses.length < 1}\n />\n \n ) : (\n \n ) => {\n updateField(\n \"selectedStorageType\",\n e.target.value as string\n );\n }}\n label={get(\n mkPanelConfigurations,\n `${formToRender}.variantSelectorLabel`,\n \"Storage Type\"\n )}\n value={selectedStorageType}\n options={get(\n mkPanelConfigurations,\n `${formToRender}.variantSelectorValues`,\n []\n )}\n />\n \n )}\n {formToRender === IMkEnvs.default ? (\n \n ) : (\n get(\n mkPanelConfigurations,\n `${formToRender}.sizingComponent`,\n null\n )\n )}\n
\n
\n
\n \n
\n \n
\n
\n
\n
\n );\n};\n\nconst mapState = (state: AppState) => ({\n tenantName: state.tenants.createTenant.fields.nameTenant.tenantName,\n namespace: state.tenants.createTenant.fields.nameTenant.namespace,\n selectedStorageClass:\n state.tenants.createTenant.fields.nameTenant.selectedStorageClass,\n selectedStorageType:\n state.tenants.createTenant.fields.nameTenant.selectedStorageType,\n storageClasses: state.tenants.createTenant.storageClasses,\n});\n\nconst connector = connect(mapState, {\n setModalErrorSnackMessage,\n updateAddField,\n setStorageClassesList,\n setLimitSize,\n isPageValid,\n});\n\nexport default withStyles(styles)(connector(NameTenantMain));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport get from \"lodash/get\";\nimport NameTenantMain from \"./NameTenantMain\";\nimport { IMkEnvs, resourcesConfigurations } from \"./utils\";\nimport { AppState } from \"../../../../../../store\";\n\ninterface ITenantResources {\n features?: string[];\n}\n\nconst TenantResources = ({ features }: ITenantResources) => {\n const [formRender, setFormRender] = useState(null);\n\n useEffect(() => {\n let setConfiguration = IMkEnvs.default;\n\n if (features && features.length !== 0) {\n const possibleVariables = Object.keys(resourcesConfigurations);\n\n possibleVariables.forEach((element) => {\n if (features.includes(element)) {\n setConfiguration = get(\n resourcesConfigurations,\n element,\n IMkEnvs.default\n );\n }\n });\n }\n\n setFormRender(setConfiguration);\n }, [features]);\n\n if (formRender === null) {\n return null;\n }\n\n return ;\n};\n\nconst mapState = (state: AppState) => ({\n features: state.console.session.features,\n});\n\nconst connector = connect(mapState, null);\n\nexport default connector(TenantResources);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You 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 { connect } from \"react-redux\";\nimport Grid from \"@mui/material/Grid\";\nimport { LinearProgress } from \"@mui/material\";\n\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n modalBasic,\n settingsCommon,\n wizardCommon,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport api from \"../../../../common/api\";\nimport { generatePoolName, getBytes } from \"../../../../common/utils\";\nimport GenericWizard from \"../../Common/GenericWizard/GenericWizard\";\nimport { IWizardElement } from \"../../Common/GenericWizard/types\";\nimport { NewServiceAccount } from \"../../Common/CredentialsPrompt/types\";\nimport { ErrorResponseHandler, ITenantCreator } from \"../../../../common/types\";\nimport { KeyPair } from \"../ListTenants/utils\";\n\nimport { setErrorSnackMessage } from \"../../../../actions\";\nimport { getDefaultAffinity, getNodeSelector } from \"../TenantDetails/utils\";\nimport CredentialsPrompt from \"../../Common/CredentialsPrompt/CredentialsPrompt\";\nimport { AppState } from \"../../../../store\";\nimport { ICertificatesItems, IFieldStore } from \"../types\";\nimport { resetAddTenantForm, updateAddField } from \"../actions\";\nimport Configure from \"./Steps/Configure\";\nimport IdentityProvider from \"./Steps/IdentityProvider\";\nimport Security from \"./Steps/Security\";\nimport Encryption from \"./Steps/Encryption\";\nimport Affinity from \"./Steps/Affinity\";\nimport PageHeader from \"../../Common/PageHeader/PageHeader\";\nimport history from \"../../../../history\";\nimport Images from \"./Steps/Images\";\nimport PageLayout from \"../../Common/Layout/PageLayout\";\nimport BackLink from \"../../../../common/BackLink\";\nimport TenantResources from \"./Steps/TenantResources/TenantResources\";\n\ninterface IAddTenantProps {\n setErrorSnackMessage: typeof setErrorSnackMessage;\n resetAddTenantForm: typeof resetAddTenantForm;\n updateAddField: typeof updateAddField;\n fields: IFieldStore;\n certificates: ICertificatesItems;\n selectedStorageClass: string;\n namespace: string;\n validPages: string[];\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n pageBox: {\n border: \"1px solid #EAEAEA\",\n },\n ...modalBasic,\n ...wizardCommon,\n ...settingsCommon,\n });\n\nconst AddTenant = ({\n classes,\n fields,\n certificates,\n selectedStorageClass,\n namespace,\n validPages,\n setErrorSnackMessage,\n resetAddTenantForm,\n}: IAddTenantProps) => {\n // Modals\n const [showNewCredentials, setShowNewCredentials] = useState(false);\n const [createdAccount, setCreatedAccount] =\n useState(null);\n\n // Fields\n const [addSending, setAddSending] = useState(false);\n\n /* Send Information to backend */\n useEffect(() => {\n const tenantName = fields.nameTenant.tenantName;\n const selectedStorageClass = fields.nameTenant.selectedStorageClass;\n const imageName = fields.configure.imageName;\n const customDockerhub = fields.configure.customDockerhub;\n const imageRegistry = fields.configure.imageRegistry;\n const imageRegistryUsername = fields.configure.imageRegistryUsername;\n const imageRegistryPassword = fields.configure.imageRegistryPassword;\n const exposeMinIO = fields.configure.exposeMinIO;\n const exposeConsole = fields.configure.exposeConsole;\n const idpSelection = fields.identityProvider.idpSelection;\n const openIDConfigurationURL =\n fields.identityProvider.openIDConfigurationURL;\n const openIDClientID = fields.identityProvider.openIDClientID;\n const openIDClaimName = fields.identityProvider.openIDClaimName;\n const openIDCallbackURL = fields.identityProvider.openIDCallbackURL;\n const openIDScopes = fields.identityProvider.openIDScopes;\n const openIDSecretID = fields.identityProvider.openIDSecretID;\n const ADURL = fields.identityProvider.ADURL;\n const ADSkipTLS = fields.identityProvider.ADSkipTLS;\n const ADServerInsecure = fields.identityProvider.ADServerInsecure;\n const ADUserNameSearchFilter =\n fields.identityProvider.ADUserNameSearchFilter;\n const ADGroupSearchBaseDN = fields.identityProvider.ADGroupSearchBaseDN;\n const ADGroupSearchFilter = fields.identityProvider.ADGroupSearchFilter;\n const ADGroupNameAttribute = fields.identityProvider.ADGroupNameAttribute;\n const ADUserDNs = fields.identityProvider.ADUserDNs;\n const ADUserNameFormat = fields.identityProvider.ADUserNameFormat;\n const ADLookupBindDN = fields.identityProvider.ADLookupBindDN;\n const ADLookupBindPassword = fields.identityProvider.ADLookupBindPassword;\n const ADUserDNSearchBaseDN = fields.identityProvider.ADUserDNSearchBaseDN;\n const ADUserDNSearchFilter = fields.identityProvider.ADUserDNSearchFilter;\n const ADServerStartTLS = fields.identityProvider.ADServerStartTLS;\n const accessKeys = fields.identityProvider.accessKeys;\n const secretKeys = fields.identityProvider.secretKeys;\n const minioCertificates = certificates.minioCertificates;\n const caCertificates = certificates.caCertificates;\n const consoleCaCertificates = certificates.consoleCaCertificates;\n const consoleCertificate = certificates.consoleCertificate;\n const serverCertificate = certificates.serverCertificate;\n const clientCertificate = certificates.clientCertificate;\n const vaultCertificate = certificates.vaultCertificate;\n const vaultCA = certificates.vaultCA;\n const gemaltoCA = certificates.gemaltoCA;\n const enableEncryption = fields.encryption.enableEncryption;\n const encryptionType = fields.encryption.encryptionType;\n const gemaltoEndpoint = fields.encryption.gemaltoEndpoint;\n const gemaltoToken = fields.encryption.gemaltoToken;\n const gemaltoDomain = fields.encryption.gemaltoDomain;\n const gemaltoRetry = fields.encryption.gemaltoRetry;\n const awsEndpoint = fields.encryption.awsEndpoint;\n const awsRegion = fields.encryption.awsRegion;\n const awsKMSKey = fields.encryption.awsKMSKey;\n const awsAccessKey = fields.encryption.awsAccessKey;\n const awsSecretKey = fields.encryption.awsSecretKey;\n const awsToken = fields.encryption.awsToken;\n const vaultEndpoint = fields.encryption.vaultEndpoint;\n const vaultEngine = fields.encryption.vaultEngine;\n const vaultNamespace = fields.encryption.vaultNamespace;\n const vaultPrefix = fields.encryption.vaultPrefix;\n const vaultAppRoleEngine = fields.encryption.vaultAppRoleEngine;\n const vaultId = fields.encryption.vaultId;\n const vaultSecret = fields.encryption.vaultSecret;\n const vaultRetry = fields.encryption.vaultRetry;\n const vaultPing = fields.encryption.vaultPing;\n const azureEndpoint = fields.encryption.azureEndpoint;\n const azureTenantID = fields.encryption.azureTenantID;\n const azureClientID = fields.encryption.azureClientID;\n const azureClientSecret = fields.encryption.azureClientSecret;\n const gcpProjectID = fields.encryption.gcpProjectID;\n const gcpEndpoint = fields.encryption.gcpEndpoint;\n const gcpClientEmail = fields.encryption.gcpClientEmail;\n const gcpClientID = fields.encryption.gcpClientID;\n const gcpPrivateKeyID = fields.encryption.gcpPrivateKeyID;\n const gcpPrivateKey = fields.encryption.gcpPrivateKey;\n const enableAutoCert = fields.security.enableAutoCert;\n const enableTLS = fields.security.enableTLS;\n const ecParity = fields.tenantSize.ecParity;\n const distribution = fields.tenantSize.distribution;\n const tenantCustom = fields.configure.tenantCustom;\n const logSearchCustom = fields.configure.logSearchCustom;\n const prometheusCustom = fields.configure.prometheusCustom;\n const logSearchVolumeSize = fields.configure.logSearchVolumeSize;\n const logSearchSelectedStorageClass =\n fields.configure.logSearchSelectedStorageClass;\n const logSearchImage = fields.configure.logSearchImage;\n const kesImage = fields.configure.kesImage;\n const logSearchPostgresImage = fields.configure.logSearchPostgresImage;\n const logSearchPostgresInitImage =\n fields.configure.logSearchPostgresInitImage;\n const prometheusImage = fields.configure.prometheusImage;\n const prometheusSidecarImage = fields.configure.prometheusSidecarImage;\n const prometheusInitImage = fields.configure.prometheusInitImage;\n const prometheusSelectedStorageClass =\n fields.configure.prometheusSelectedStorageClass;\n const prometheusVolumeSize = fields.configure.prometheusVolumeSize;\n const affinityType = fields.affinity.podAffinity;\n const nodeSelectorLabels = fields.affinity.nodeSelectorLabels;\n const withPodAntiAffinity = fields.affinity.withPodAntiAffinity;\n\n const tenantSecurityContext = fields.configure.tenantSecurityContext;\n const logSearchSecurityContext = fields.configure.logSearchSecurityContext;\n const logSearchPostgresSecurityContext =\n fields.configure.logSearchPostgresSecurityContext;\n const prometheusSecurityContext =\n fields.configure.prometheusSecurityContext;\n const kesSecurityContext = fields.encryption.kesSecurityContext;\n const kesReplicas = fields.encryption.replicas;\n\n if (addSending) {\n const poolName = generatePoolName([]);\n\n let affinityObject = {};\n\n switch (affinityType) {\n case \"default\":\n affinityObject = {\n affinity: getDefaultAffinity(tenantName, poolName),\n };\n break;\n case \"nodeSelector\":\n affinityObject = {\n affinity: getNodeSelector(\n nodeSelectorLabels,\n withPodAntiAffinity,\n tenantName,\n poolName\n ),\n };\n break;\n }\n\n const erasureCode = ecParity.split(\":\")[1];\n\n let dataSend: ITenantCreator = {\n name: tenantName,\n namespace: namespace,\n access_key: \"\",\n secret_key: \"\",\n access_keys: [],\n secret_keys: [],\n enable_tls: enableTLS && enableAutoCert,\n enable_console: true,\n enable_prometheus: true,\n service_name: \"\",\n image: imageName,\n expose_minio: exposeMinIO,\n expose_console: exposeConsole,\n pools: [\n {\n name: poolName,\n servers: distribution.nodes,\n volumes_per_server: distribution.disks,\n volume_configuration: {\n size: distribution.pvSize,\n storage_class_name: selectedStorageClass,\n },\n securityContext: tenantCustom ? tenantSecurityContext : null,\n ...affinityObject,\n },\n ],\n erasureCodingParity: parseInt(erasureCode, 10),\n };\n\n // Set Resources\n if (\n fields.tenantSize.resourcesCPURequest !== \"\" ||\n fields.tenantSize.resourcesCPULimit !== \"\" ||\n fields.tenantSize.resourcesMemoryRequest !== \"\" ||\n fields.tenantSize.resourcesMemoryLimit !== \"\"\n ) {\n dataSend.pools[0].resources = {};\n // requests\n if (\n fields.tenantSize.resourcesCPURequest !== \"\" ||\n fields.tenantSize.resourcesMemoryRequest !== \"\"\n ) {\n dataSend.pools[0].resources.requests = {};\n if (fields.tenantSize.resourcesCPURequest !== \"\") {\n dataSend.pools[0].resources.requests.cpu = parseInt(\n fields.tenantSize.resourcesCPURequest\n );\n }\n if (fields.tenantSize.resourcesMemoryRequest !== \"\") {\n dataSend.pools[0].resources.requests.memory = parseInt(\n getBytes(fields.tenantSize.resourcesMemoryRequest, \"Gi\", true)\n );\n }\n }\n // limits\n if (\n fields.tenantSize.resourcesCPULimit !== \"\" ||\n fields.tenantSize.resourcesMemoryLimit !== \"\"\n ) {\n dataSend.pools[0].resources.limits = {};\n if (fields.tenantSize.resourcesCPULimit !== \"\") {\n dataSend.pools[0].resources.limits.cpu = parseInt(\n fields.tenantSize.resourcesCPULimit\n );\n }\n if (fields.tenantSize.resourcesMemoryLimit !== \"\") {\n dataSend.pools[0].resources.limits.memory = parseInt(\n getBytes(fields.tenantSize.resourcesMemoryLimit, \"Gi\", true)\n );\n }\n }\n }\n if (customDockerhub) {\n dataSend = {\n ...dataSend,\n image_registry: {\n registry: imageRegistry,\n username: imageRegistryUsername,\n password: imageRegistryPassword,\n },\n };\n }\n\n if (logSearchCustom) {\n dataSend = {\n ...dataSend,\n logSearchConfiguration: {\n storageClass:\n logSearchSelectedStorageClass === \"default\"\n ? \"\"\n : logSearchSelectedStorageClass,\n storageSize: parseInt(logSearchVolumeSize),\n image: logSearchImage,\n postgres_image: logSearchPostgresImage,\n postgres_init_image: logSearchPostgresInitImage,\n securityContext: logSearchSecurityContext,\n postgres_securityContext: logSearchPostgresSecurityContext,\n },\n };\n } else {\n dataSend = {\n ...dataSend,\n logSearchConfiguration: {\n image: logSearchImage,\n postgres_image: logSearchPostgresImage,\n postgres_init_image: logSearchPostgresInitImage,\n },\n };\n }\n\n if (prometheusCustom) {\n dataSend = {\n ...dataSend,\n prometheusConfiguration: {\n storageClass:\n prometheusSelectedStorageClass === \"default\"\n ? \"\"\n : prometheusSelectedStorageClass,\n storageSize: parseInt(prometheusVolumeSize),\n image: prometheusImage,\n sidecar_image: prometheusSidecarImage,\n init_image: prometheusInitImage,\n securityContext: prometheusSecurityContext,\n },\n };\n } else {\n dataSend = {\n ...dataSend,\n prometheusConfiguration: {\n image: prometheusImage,\n sidecar_image: prometheusSidecarImage,\n init_image: prometheusInitImage,\n },\n };\n }\n\n let tenantCerts: any = null;\n let consoleCerts: any = null;\n let caCerts: any = null;\n let consoleCaCerts: any = null;\n\n if (caCertificates.length > 0) {\n caCerts = {\n ca_certificates: caCertificates\n .map((keyPair: KeyPair) => keyPair.encoded_cert)\n .filter((keyPair) => keyPair),\n };\n }\n\n if (consoleCaCertificates.length > 0) {\n consoleCaCerts = {\n console_ca_certificates: consoleCaCertificates\n .map((keyPair: KeyPair) => keyPair.encoded_cert)\n .filter((keyPair) => keyPair),\n };\n }\n\n if (enableTLS && minioCertificates.length > 0) {\n tenantCerts = {\n minio: minioCertificates\n .map((keyPair: KeyPair) => ({\n crt: keyPair.encoded_cert,\n key: keyPair.encoded_key,\n }))\n .filter((keyPair) => keyPair.crt && keyPair.key),\n };\n }\n\n if (\n enableTLS &&\n consoleCertificate.encoded_cert !== \"\" &&\n consoleCertificate.encoded_key !== \"\"\n ) {\n consoleCerts = {\n console: {\n crt: consoleCertificate.encoded_cert,\n key: consoleCertificate.encoded_key,\n },\n };\n }\n\n if (tenantCerts || consoleCerts || caCerts || consoleCaCerts) {\n dataSend = {\n ...dataSend,\n tls: {\n ...tenantCerts,\n ...consoleCerts,\n ...caCerts,\n ...consoleCaCerts,\n },\n };\n }\n\n if (enableEncryption) {\n let insertEncrypt = {};\n\n switch (encryptionType) {\n case \"gemalto\":\n let gemaltoCAIntroduce = {};\n\n if (gemaltoCA.encoded_cert !== \"\") {\n gemaltoCAIntroduce = {\n ca: gemaltoCA.encoded_cert,\n };\n }\n insertEncrypt = {\n gemalto: {\n keysecure: {\n endpoint: gemaltoEndpoint,\n credentials: {\n token: gemaltoToken,\n domain: gemaltoDomain,\n retry: parseInt(gemaltoRetry),\n },\n tls: {\n ...gemaltoCAIntroduce,\n },\n },\n },\n };\n break;\n case \"aws\":\n insertEncrypt = {\n aws: {\n secretsmanager: {\n endpoint: awsEndpoint,\n region: awsRegion,\n kmskey: awsKMSKey,\n credentials: {\n accesskey: awsAccessKey,\n secretkey: awsSecretKey,\n token: awsToken,\n },\n },\n },\n };\n break;\n case \"azure\":\n insertEncrypt = {\n azure: {\n keyvault: {\n endpoint: azureEndpoint,\n credentials: {\n tenant_id: azureTenantID,\n client_id: azureClientID,\n client_secret: azureClientSecret,\n },\n },\n },\n };\n break;\n case \"gcp\":\n insertEncrypt = {\n gcp: {\n secretmanager: {\n project_id: gcpProjectID,\n endpoint: gcpEndpoint,\n credentials: {\n client_email: gcpClientEmail,\n client_id: gcpClientID,\n private_key_id: gcpPrivateKeyID,\n private_key: gcpPrivateKey,\n },\n },\n },\n };\n break;\n case \"vault\":\n let vaultKeyPair = null;\n let vaultCAInsert = null;\n if (\n vaultCertificate.encoded_key !== \"\" &&\n vaultCertificate.encoded_cert !== \"\"\n ) {\n vaultKeyPair = {\n key: vaultCertificate.encoded_key,\n crt: vaultCertificate.encoded_cert,\n };\n }\n if (vaultCA.encoded_cert !== \"\") {\n vaultCAInsert = {\n ca: vaultCA.encoded_cert,\n };\n }\n let vaultTLS = null;\n if (vaultKeyPair || vaultCA) {\n vaultTLS = {\n tls: {\n ...vaultKeyPair,\n ...vaultCAInsert,\n },\n };\n }\n insertEncrypt = {\n vault: {\n endpoint: vaultEndpoint,\n engine: vaultEngine,\n namespace: vaultNamespace,\n prefix: vaultPrefix,\n approle: {\n engine: vaultAppRoleEngine,\n id: vaultId,\n secret: vaultSecret,\n retry: parseInt(vaultRetry),\n },\n ...vaultTLS,\n status: {\n ping: parseInt(vaultPing),\n },\n },\n };\n break;\n }\n\n let encryptionServerKeyPair: any = {};\n let encryptionClientKeyPair: any = {};\n\n if (\n clientCertificate.encoded_key !== \"\" &&\n clientCertificate.encoded_cert !== \"\"\n ) {\n encryptionClientKeyPair = {\n client: {\n key: clientCertificate.encoded_key,\n crt: clientCertificate.encoded_cert,\n },\n };\n }\n\n if (\n serverCertificate.encoded_key !== \"\" &&\n serverCertificate.encoded_cert !== \"\"\n ) {\n encryptionServerKeyPair = {\n server: {\n key: serverCertificate.encoded_key,\n crt: serverCertificate.encoded_cert,\n },\n };\n }\n\n dataSend = {\n ...dataSend,\n encryption: {\n replicas: kesReplicas,\n securityContext: kesSecurityContext,\n image: kesImage,\n ...encryptionClientKeyPair,\n ...encryptionServerKeyPair,\n ...insertEncrypt,\n },\n };\n }\n\n let dataIDP: any = {};\n switch (idpSelection) {\n case \"Built-in\":\n let keyarray = [];\n for (let i = 0; i < accessKeys.length; i++) {\n keyarray.push({\n access_key: accessKeys[i],\n secret_key: secretKeys[i],\n });\n }\n dataIDP = {\n keys: keyarray,\n };\n break;\n case \"OpenID\":\n dataIDP = {\n oidc: {\n configuration_url: openIDConfigurationURL,\n client_id: openIDClientID,\n secret_id: openIDSecretID,\n claim_name: openIDClaimName,\n callback_url: openIDCallbackURL,\n scopes: openIDScopes,\n },\n };\n break;\n case \"AD\":\n dataIDP = {\n active_directory: {\n url: ADURL,\n skip_tls_verification: ADSkipTLS,\n server_insecure: ADServerInsecure,\n username_format: ADUserNameFormat,\n username_search_filter: ADUserNameSearchFilter,\n group_search_base_dn: ADGroupSearchBaseDN,\n group_search_filter: ADGroupSearchFilter,\n group_name_attribute: ADGroupNameAttribute,\n user_dns: ADUserDNs,\n lookup_bind_dn: ADLookupBindDN,\n lookup_bind_password: ADLookupBindPassword,\n user_dn_search_base_dn: ADUserDNSearchBaseDN,\n user_dn_search_filter: ADUserDNSearchFilter,\n server_start_tls: ADServerStartTLS,\n },\n };\n break;\n }\n\n dataSend = {\n ...dataSend,\n idp: { ...dataIDP },\n };\n api\n .invoke(\"POST\", `/api/v1/tenants`, dataSend)\n .then((res) => {\n const consoleSAList = get(res, \"console\", []);\n\n let newSrvAcc: NewServiceAccount = {\n idp: get(res, \"externalIDP\", false),\n console: [],\n };\n\n if (consoleSAList) {\n if (Array.isArray(consoleSAList)) {\n const consoleItem = consoleSAList.map((consoleKey) => {\n return {\n accessKey: consoleKey.access_key,\n secretKey: consoleKey.secret_key,\n api: \"s3v4\",\n path: \"auto\",\n url: consoleKey.url,\n };\n });\n\n newSrvAcc.console = consoleItem;\n } else {\n newSrvAcc = {\n console: {\n accessKey: res.console.access_key,\n secretKey: res.console.secret_key,\n url: res.console.url,\n },\n };\n }\n }\n setAddSending(false);\n setShowNewCredentials(true);\n setCreatedAccount(newSrvAcc);\n })\n .catch((err: ErrorResponseHandler) => {\n setAddSending(false);\n setErrorSnackMessage(err);\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [addSending]);\n\n const cancelButton = {\n label: \"Cancel\",\n type: \"other\",\n enabled: true,\n action: () => {\n resetAddTenantForm();\n history.push(\"/tenants\");\n },\n };\n const requiredPages = [\n \"nameTenant\",\n \"tenantSize\",\n \"configure\",\n \"affinity\",\n \"identityProvider\",\n \"security\",\n \"encryption\",\n ];\n const createButton = {\n label: \"Create\",\n type: \"submit\",\n enabled:\n !addSending &&\n selectedStorageClass !== \"\" &&\n requiredPages.every((v) => validPages.includes(v)),\n action: () => {\n setAddSending(true);\n },\n };\n\n const wizardSteps: IWizardElement[] = [\n {\n label: \"Setup\",\n componentRender: ,\n buttons: [cancelButton, createButton],\n },\n {\n label: \"Configure\",\n advancedOnly: true,\n componentRender: ,\n buttons: [cancelButton, createButton],\n },\n {\n label: \"Images\",\n advancedOnly: true,\n componentRender: ,\n buttons: [cancelButton, createButton],\n },\n {\n label: \"Pod Placement\",\n advancedOnly: true,\n componentRender: ,\n buttons: [cancelButton, createButton],\n },\n {\n label: \"Identity Provider\",\n advancedOnly: true,\n componentRender: ,\n buttons: [cancelButton, createButton],\n },\n {\n label: \"Security\",\n advancedOnly: true,\n componentRender: ,\n buttons: [cancelButton, createButton],\n },\n {\n label: \"Encryption\",\n advancedOnly: true,\n componentRender: ,\n buttons: [cancelButton, createButton],\n },\n ];\n\n let filteredWizardSteps = wizardSteps;\n\n const closeCredentialsModal = () => {\n resetAddTenantForm();\n history.push(\"/tenants\");\n };\n\n return (\n \n {showNewCredentials && (\n {\n closeCredentialsModal();\n }}\n entity=\"Tenant\"\n />\n )}\n \n \n \n {addSending && (\n \n \n \n )}\n \n \n \n \n \n );\n};\n\nconst mapState = (state: AppState) => ({\n namespace: state.tenants.createTenant.fields.nameTenant.namespace,\n validPages: state.tenants.createTenant.validPages,\n fields: state.tenants.createTenant.fields,\n certificates: state.tenants.createTenant.certificates,\n selectedStorageClass:\n state.tenants.createTenant.fields.nameTenant.selectedStorageClass,\n});\n\nconst connector = connect(mapState, {\n setErrorSnackMessage,\n updateAddField,\n resetAddTenantForm,\n});\n\nexport default withStyles(styles)(connector(AddTenant));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport get from \"lodash/get\";\nimport { ITenant } from \"./types\";\n\nexport interface Opts {\n label: string;\n value: string;\n}\n\nexport interface IQuotaElement {\n hard: number;\n name: string;\n}\n\nexport interface IQuotas {\n elements?: IQuotaElement[];\n name: string;\n}\n\nexport const minMemReq = 2147483648;\n\nexport interface KeyPair {\n id: string;\n encoded_cert: string;\n encoded_key: string;\n cert: string;\n key: string;\n}\n\nexport const ecListTransform = (ecList: string[]): Opts[] => {\n return ecList.map((value) => {\n return { label: value, value };\n });\n};\n\nexport const getLimitSizes = (resourceQuotas: IQuotas) => {\n const quotas: IQuotaElement[] = get(resourceQuotas, \"elements\", []);\n\n const returnQuotas: any = {};\n\n quotas.forEach((rsQuota) => {\n const stCName = rsQuota.name.split(\n \".storageclass.storage.k8s.io/requests.storage\"\n )[0];\n const hard = get(rsQuota, \"hard\", 0);\n const used = get(rsQuota, \"used\", 0);\n\n returnQuotas[stCName] = hard - used;\n });\n\n return returnQuotas;\n};\n\nexport const tenantIsOnline = (tenant: ITenant): boolean => {\n if (tenant.currentState === \"\") {\n return false;\n }\n if (\n !tenant.status &&\n tenant.health_status !== \"green\" &&\n tenant.health_status !== \"yellow\"\n ) {\n return false;\n }\n if (\n tenant.status &&\n tenant.status.health_status !== \"green\" &&\n tenant.status.health_status !== \"yellow\"\n ) {\n return false;\n }\n return true;\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport { IAffinityModel } from \"../../../../common/types\";\n\nexport const getDefaultAffinity = (tenantName: string, poolName: string) => {\n const defaultAffinity: IAffinityModel = {\n podAntiAffinity: {\n requiredDuringSchedulingIgnoredDuringExecution: [\n {\n labelSelector: {\n matchExpressions: [\n {\n key: \"v1.min.io/tenant\",\n operator: \"In\",\n values: [tenantName],\n },\n {\n key: \"v1.min.io/pool\",\n operator: \"In\",\n values: [poolName],\n },\n ],\n },\n topologyKey: \"kubernetes.io/hostname\",\n },\n ],\n },\n };\n return defaultAffinity;\n};\n\nexport const getNodeSelector = (\n labels: string,\n withPodAntiAffinity: boolean,\n tenantName: string,\n poolName: string\n) => {\n // Labels in the form of key1=value1&key2=value2&key3=value3...\n const splittedLabels = labels.split(\"&\");\n let matchExpressions: any = [];\n\n splittedLabels.forEach((label: string) => {\n const splitKeyValue = label.split(\"=\");\n if (splitKeyValue.length === 2) {\n matchExpressions.push({\n key: splitKeyValue[0],\n operator: \"In\",\n values: [splitKeyValue[1]],\n });\n }\n });\n\n const nodeSelector: IAffinityModel = {\n nodeAffinity: {\n requiredDuringSchedulingIgnoredDuringExecution: {\n nodeSelectorTerms: [\n {\n matchExpressions: matchExpressions,\n },\n ],\n },\n },\n };\n if (withPodAntiAffinity) {\n const def = getDefaultAffinity(tenantName, poolName);\n nodeSelector.podAntiAffinity = def.podAntiAffinity;\n }\n console.log(nodeSelector);\n return nodeSelector;\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 { ITenant } from \"./ListTenants/types\";\nimport { Opts } from \"./ListTenants/utils\";\nimport {\n ADD_TENANT_ADD_CA_KEYPAIR,\n ADD_TENANT_ADD_CONSOLE_CA_KEYPAIR,\n ADD_TENANT_ADD_CONSOLE_CERT,\n ADD_TENANT_ADD_FILE_TO_CA_KEYPAIR,\n ADD_TENANT_ADD_FILE_TO_CONSOLE_CA_KEYPAIR,\n ADD_TENANT_ADD_FILE_TO_MINIO_KEYPAIR,\n ADD_TENANT_ADD_MINIO_KEYPAIR,\n ADD_TENANT_DELETE_CA_KEYPAIR,\n ADD_TENANT_DELETE_CONSOLE_CA_KEYPAIR,\n ADD_TENANT_DELETE_MINIO_KEYPAIR,\n ADD_TENANT_ENCRYPTION_CLIENT_CERT,\n ADD_TENANT_ENCRYPTION_GEMALTO_CA,\n ADD_TENANT_ENCRYPTION_SERVER_CERT,\n ADD_TENANT_ENCRYPTION_VAULT_CA,\n ADD_TENANT_ENCRYPTION_VAULT_CERT,\n ADD_TENANT_RESET_FORM,\n ADD_TENANT_SET_CURRENT_PAGE,\n ADD_TENANT_SET_LIMIT_SIZE,\n ADD_TENANT_SET_PAGE_VALID,\n ADD_TENANT_SET_STORAGE_CLASSES_LIST,\n ADD_TENANT_UPDATE_FIELD,\n TENANT_DETAILS_SET_CURRENT_TENANT,\n TENANT_DETAILS_SET_LOADING,\n TENANT_DETAILS_SET_TAB,\n TENANT_DETAILS_SET_TENANT,\n ADD_TENANT_SET_KEY_PAIR_VALUE,\n LabelKeyPair,\n} from \"./types\";\n\n// Basic actions\nexport const setWizardPage = (page: number) => {\n return {\n type: ADD_TENANT_SET_CURRENT_PAGE,\n page,\n };\n};\n\nexport const updateAddField = (\n pageName: string,\n fieldName: string,\n value: any\n) => {\n return {\n type: ADD_TENANT_UPDATE_FIELD,\n pageName,\n field: fieldName,\n value,\n };\n};\n\nexport const isPageValid = (pageName: string, valid: boolean) => {\n return {\n type: ADD_TENANT_SET_PAGE_VALID,\n pageName,\n valid,\n };\n};\n\n// Name Tenant actions\n\nexport const setStorageClassesList = (storageClasses: Opts[]) => {\n return {\n type: ADD_TENANT_SET_STORAGE_CLASSES_LIST,\n storageClasses,\n };\n};\n\nexport const setLimitSize = (limitSize: any) => {\n return {\n type: ADD_TENANT_SET_LIMIT_SIZE,\n limitSize,\n };\n};\n\n// Security actions\n\nexport const addCaCertificate = () => {\n return {\n type: ADD_TENANT_ADD_CA_KEYPAIR,\n };\n};\n\nexport const deleteCaCertificate = (id: string) => {\n return {\n type: ADD_TENANT_DELETE_CA_KEYPAIR,\n id,\n };\n};\n\nexport const addFileToCaCertificates = (\n id: string,\n key: string,\n fileName: string,\n value: string\n) => {\n return {\n type: ADD_TENANT_ADD_FILE_TO_CA_KEYPAIR,\n id,\n key,\n fileName,\n value,\n };\n};\n\nexport const addConsoleCaCertificate = () => {\n return {\n type: ADD_TENANT_ADD_CONSOLE_CA_KEYPAIR,\n };\n};\n\nexport const deleteConsoleCaCertificate = (id: string) => {\n return {\n type: ADD_TENANT_DELETE_CONSOLE_CA_KEYPAIR,\n id,\n };\n};\n\nexport const addFileToConsoleCaCertificates = (\n id: string,\n key: string,\n fileName: string,\n value: string\n) => {\n return {\n type: ADD_TENANT_ADD_FILE_TO_CONSOLE_CA_KEYPAIR,\n id,\n key,\n fileName,\n value,\n };\n};\n\nexport const addKeyPair = () => {\n return {\n type: ADD_TENANT_ADD_MINIO_KEYPAIR,\n };\n};\n\nexport const deleteKeyPair = (id: string) => {\n return {\n type: ADD_TENANT_DELETE_MINIO_KEYPAIR,\n id,\n };\n};\n\nexport const addFileToKeyPair = (\n id: string,\n key: string,\n fileName: string,\n value: string\n) => {\n return {\n type: ADD_TENANT_ADD_FILE_TO_MINIO_KEYPAIR,\n id,\n key,\n fileName,\n value,\n };\n};\n\nexport const addConsoleCertificate = (\n key: string,\n fileName: string,\n value: string\n) => {\n return {\n type: ADD_TENANT_ADD_CONSOLE_CERT,\n key,\n fileName,\n value,\n };\n};\n\nexport const addFileServerCert = (\n key: string,\n fileName: string,\n value: string\n) => {\n return {\n type: ADD_TENANT_ENCRYPTION_SERVER_CERT,\n key,\n fileName,\n value,\n };\n};\n\nexport const addFileClientCert = (\n key: string,\n fileName: string,\n value: string\n) => {\n return {\n type: ADD_TENANT_ENCRYPTION_CLIENT_CERT,\n key,\n fileName,\n value,\n };\n};\n\nexport const addFileVaultCert = (\n key: string,\n fileName: string,\n value: string\n) => {\n return {\n type: ADD_TENANT_ENCRYPTION_VAULT_CERT,\n key,\n fileName,\n value,\n };\n};\n\nexport const addFileVaultCa = (fileName: string, value: string) => {\n return {\n type: ADD_TENANT_ENCRYPTION_VAULT_CA,\n fileName,\n value,\n };\n};\n\nexport const addFileGemaltoCa = (fileName: string, value: string) => {\n return {\n type: ADD_TENANT_ENCRYPTION_GEMALTO_CA,\n fileName,\n value,\n };\n};\n\nexport const resetAddTenantForm = () => {\n return {\n type: ADD_TENANT_RESET_FORM,\n };\n};\n\nexport const setTenantDetailsLoad = (loading: boolean) => {\n return {\n type: TENANT_DETAILS_SET_LOADING,\n state: loading,\n };\n};\n\nexport const setTenantName = (tenantName: string, tenantNamespace: string) => {\n return {\n type: TENANT_DETAILS_SET_CURRENT_TENANT,\n name: tenantName,\n namespace: tenantNamespace,\n };\n};\n\nexport const setTenantInfo = (tenant: ITenant | null) => {\n return {\n type: TENANT_DETAILS_SET_TENANT,\n tenant,\n };\n};\n\nexport const setTenantTab = (tab: string) => {\n return {\n type: TENANT_DETAILS_SET_TAB,\n tab,\n };\n};\n\nexport const setKeyValuePairs = (newArray: LabelKeyPair[]) => {\n return {\n type: ADD_TENANT_SET_KEY_PAIR_VALUE,\n newArray,\n };\n};\n","import React from \"react\";\nimport Typography from \"@mui/material/Typography\";\nimport { Theme } from \"@mui/material/styles\";\n\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n errorBlock: {\n color: theme.palette?.error.main || \"#C83B51\",\n },\n });\n\ninterface IErrorBlockProps {\n classes: any;\n errorMessage: string;\n withBreak?: boolean;\n}\n\nconst ErrorBlock = ({\n classes,\n errorMessage,\n withBreak = true,\n}: IErrorBlockProps) => {\n return (\n \n {withBreak &&
}\n \n {errorMessage}\n \n
\n );\n};\n\nexport default withStyles(styles)(ErrorBlock);\n"],"names":["withStyles","theme","createStyles","link","display","alignItems","textDecoration","maxWidth","padding","color","palette","primary","light","fontSize","icon","marginRight","justifyContent","width","to","label","classes","className","executeOnClick","onClick","container","flexFlow","inputWithCopy","background","height","inputLabel","fieldBasic","value","OutlinedInput","readOnly","endAdornment","InputAdornment","position","text","BoxIconButton","tooltip","onMouseDown","edge","warningBlock","margin","credentialTitle","fontWeight","buttonContainer","textAlign","marginTop","credentialsPanel","overflowY","maxHeight","promptTitle","buttonSpacer","promptIcon","newServiceAccount","open","closeModal","entity","consoleCreds","get","idp","ModalWrapper","modalOpen","onClose","title","titleIcon","Grid","item","xs","formScrollable","Array","isArray","map","credentialsPair","index","accessKey","secretKey","WarnIcon","Button","id","variant","consoleExtras","cCreds","itemMap","url","access_key","secret_key","api","path","console","filename","element","document","createElement","setAttribute","encodeURIComponent","style","body","appendChild","click","removeChild","download","JSON","stringify","endIcon","tooltipHelper","valueString","whiteSpace","overflow","textOverflow","fileInputField","fileInputStyles","textBoxContainer","border","paddingLeft","onChange","name","disabled","required","error","accept","useState","showFileSelector","setShowSelector","fieldBottom","fieldContainer","errorInField","InputLabel","htmlFor","fieldLabelError","tooltipContainer","Tooltip","placement","HelpIcon","type","e","fileName","evt","callback","file","target","files","reader","FileReader","readAsDataURL","onload","fileBase64","result","fileArray","toString","split","length","fileProcess","data","IconButton","component","disableRipple","disableFocusRipple","size","Cancel","ErrorBlock","errorMessage","fileReselect","AttachFile","pageContentStyles","children","contentSpacer","IMkEnvs","connector","connect","state","storageClasses","tenants","createTenant","customImage","fields","configure","imageName","customDockerhub","imageRegistry","imageRegistryUsername","imageRegistryPassword","exposeMinIO","exposeConsole","prometheusCustom","tenantCustom","logSearchCustom","logSearchVolumeSize","logSearchSizeFactor","prometheusVolumeSize","prometheusSizeFactor","logSearchSelectedStorageClass","logSearchImage","kesImage","logSearchPostgresImage","logSearchPostgresInitImage","prometheusSelectedStorageClass","prometheusImage","prometheusSidecarImage","prometheusInitImage","selectedStorageClass","nameTenant","tenantSecurityContext","logSearchSecurityContext","logSearchPostgresSecurityContext","prometheusSecurityContext","updateAddField","isPageValid","configSectionItem","tenantCustomizationFields","marginLeft","containerItem","fieldGroup","createTenantCommon","paddingTop","marginBottom","responsiveSectionItem","logSearchCustomFields","fieldSpaceTop","prometheusCustomFields","modalBasic","wizardCommon","validationErrors","setValidationErrors","configureSTClasses","updateField","useCallback","field","useEffect","customAccountValidation","fieldKey","runAsUser","customValidation","parseInt","customValidationMessage","runAsGroup","fsGroup","pattern","customPatternMessage","commonVal","commonFormValidation","Object","keys","filter","cleanValidation","fieldName","clearValidationError","Paper","paperWrapper","headerElement","h3Section","descriptionText","FormSwitchWrapper","checked","multiContainer","InputBoxWrapper","min","runAsNonRoot","SelectWrapper","options","overlayObject","InputUnitMenu","onUnitChange","unitSelected","unitsList","idpSelection","identityProvider","accessKeys","secretKeys","openIDConfigurationURL","openIDClientID","openIDSecretID","openIDCallbackURL","openIDClaimName","openIDScopes","ADURL","ADSkipTLS","ADServerInsecure","ADUserNameSearchFilter","ADGroupSearchBaseDN","ADGroupSearchFilter","ADGroupNameAttribute","ADUserDNs","ADUserNameFormat","ADLookupBindDN","ADLookupBindPassword","ADUserDNSearchBaseDN","ADUserDNSearchFilter","ADServerStartTLS","shortened","gridTemplateColumns","gridGap","buttonTray","overlayAction","protocolRadioOptions","adUserDnRows","formFieldStyles","updateUserField","newUserField","updatePwordField","updateADUserField","newADUserDNsField","customIDPValidation","i","push","inputs","_","Fragment","placeholder","Add","splice","RemoveIcon","getRandomString","Casino","Delete","RadioGroupSelector","currentSelection","selectorOptions","formFieldRow","Typography","gutterBottom","enableTLS","security","enableAutoCert","enableCustomCerts","minioCertificates","certificates","caCertificates","addFileToCaCertificates","deleteCaCertificate","addCaCertificate","addKeyPair","addFileToKeyPair","deleteKeyPair","minioCertificateRows","borderBottom","flex","fileItem","minWidth","minioCertsContainer","minioCACertsRow","rowActions","keyPair","FileSelector","encodedValue","cert","key","AddIcon","replicas","encryption","enableEncryption","encryptionType","gemaltoEndpoint","gemaltoToken","gemaltoDomain","gemaltoRetry","awsEndpoint","awsRegion","awsKMSKey","awsAccessKey","awsSecretKey","awsToken","vaultEndpoint","vaultEngine","vaultNamespace","vaultPrefix","vaultAppRoleEngine","vaultId","vaultSecret","vaultRetry","vaultPing","azureEndpoint","azureTenantID","azureClientID","azureClientSecret","gcpProjectID","gcpEndpoint","gcpClientEmail","gcpClientID","gcpPrivateKeyID","gcpPrivateKey","enableCustomCertsForKES","serverCertificate","clientCertificate","vaultCertificate","vaultCA","gemaltoCA","kesSecurityContext","addFileServerCert","addFileClientCert","addFileVaultCert","addFileVaultCa","addFileGemaltoCa","encryptionTypeOptions","mutualTlsConfig","rightSpacer","responsiveContainer","encryptionAvailable","encoded_key","encoded_cert","encryptionValidation","podAffinity","affinity","nodeSelectorLabels","withPodAntiAffinity","keyValuePairs","nodeSelectorPairs","setModalErrorSnackMessage","setKeyValuePairs","affinityConfigField","affinityFieldLabel","radioField","affinityLabelKey","affinityLabelValue","affinityRow","loading","setLoading","keyValueMap","setKeyValueMap","keyOptions","setKeyOptions","then","res","k","catch","err","vl","kvp","kvs","a","indexOf","join","valid","splittedLabels","forEach","splitItem","affinityHelpText","newKey","arrCp","assign","v","mapDispatchToProps","setErrorSnackMessage","wrapText","wordWrap","deleteDialogStyles","namespace","addNamespaceOpen","closeAddNamespaceModalAndRefresh","addNamespaceLoading","setAddNamespaceLoading","ConfirmDialog","confirmText","confirmButtonProps","isOpen","isLoading","onConfirm","confirmationContent","LinearProgress","DialogContentText","volumeSize","tenantSize","sizeFactor","drivesPerServer","nodes","memoryNode","resourcesMemoryRequest","ecParity","ecParityChoices","cleanECChoices","resourcesSize","distribution","ecParityCalc","limitSize","cpuToUse","resourcesCPURequest","integrationSelection","root","table","usableInformation","storageFactors","find","erasureCode","Divider","Table","TableBody","TableRow","TableCell","scope","align","typeSelection","storageClass","disks","niceBytes","pvSize","persistentVolumes","rawCapacity","maxCapacity","Math","floor","maxFailureTolerations","CPU","memory","driveSize","sizeUnit","maxAllocatableResources","maxCPUsUse","maxMemorySize","resourcesSpecifyLimit","resourcesCPURequestError","resourcesCPULimitError","resourcesCPULimit","resourcesMemoryRequestError","resourcesMemoryLimitError","resourcesMemoryLimit","compositeFieldContainer","compositeAddOn","memoryExists","cpuExists","maxMemory","mem_priority","max_allocatable_mem","cpu_priority","max_allocatable_cpu","maxAllocatableCPU","baseCpuUse","max","baseMemoryUse","isNaN","validity","log","errorFlag","setErrorFlag","nodeError","setNodeError","ecCodeValidated","erasureCodeCalc","includes","defaultEC","factor","getBytes","clusterCapacity","unit","distrCalculate","calculateDistribution","parsedSize","commonValidation","trim","ecList","ecListTransform","newValue","k8sScalarUnitsExcluding","selectedStorageType","formToRender","updateMainField","undefined","setConfigs","mkPanelConfigurations","mainSelection","resourcesConfigurations","aws","azure","gcp","variantSelectorLabel","variantSelectorValues","configurations","sizingComponent","default","tenantName","setStorageClassesList","setLimitSize","sizePreview","emptyNamespace","setEmptyNamespace","loadingNamespaceInfo","setLoadingNamespaceInfo","showCreateButton","setShowCreateButton","openAddNSConfirm","setOpenAddNSConfirm","getNamespaceInformation","tenantsList","elements","getLimitSizes","newStorage","stExists","findIndex","detailedError","debounceNamespace","useMemo","debounce","cancel","customNamespaceError","isValid","frmValidationCleanup","refresh","md","sx","minHeight","overlayIcon","features","session","formRender","setFormRender","setConfiguration","validPages","resetAddTenantForm","pageBox","settingsCommon","showNewCredentials","setShowNewCredentials","createdAccount","setCreatedAccount","addSending","setAddSending","consoleCaCertificates","consoleCertificate","affinityType","kesReplicas","poolName","generatePoolName","affinityObject","getDefaultAffinity","getNodeSelector","dataSend","access_keys","secret_keys","enable_tls","enable_console","enable_prometheus","service_name","image","expose_minio","expose_console","pools","servers","volumes_per_server","volume_configuration","storage_class_name","securityContext","erasureCodingParity","resources","requests","cpu","limits","image_registry","registry","username","password","logSearchConfiguration","storageSize","postgres_image","postgres_init_image","postgres_securityContext","prometheusConfiguration","sidecar_image","init_image","tenantCerts","consoleCerts","caCerts","consoleCaCerts","ca_certificates","console_ca_certificates","minio","crt","tls","insertEncrypt","gemaltoCAIntroduce","ca","gemalto","keysecure","endpoint","credentials","token","domain","retry","secretsmanager","region","kmskey","accesskey","secretkey","keyvault","tenant_id","client_id","client_secret","secretmanager","project_id","client_email","private_key_id","private_key","vaultKeyPair","vaultCAInsert","vaultTLS","vault","engine","prefix","approle","secret","status","ping","encryptionServerKeyPair","encryptionClientKeyPair","client","server","dataIDP","keyarray","oidc","configuration_url","secret_id","claim_name","callback_url","scopes","active_directory","skip_tls_verification","server_insecure","username_format","username_search_filter","group_search_base_dn","group_search_filter","group_name_attribute","user_dns","lookup_bind_dn","lookup_bind_password","user_dn_search_base_dn","user_dn_search_filter","server_start_tls","consoleSAList","newSrvAcc","consoleItem","consoleKey","cancelButton","enabled","action","history","createButton","every","filteredWizardSteps","componentRender","buttons","advancedOnly","CredentialsPrompt","PageHeader","BackLink","PageLayout","GenericWizard","wizardSteps","resourceQuotas","quotas","returnQuotas","rsQuota","stCName","hard","used","tenantIsOnline","tenant","currentState","health_status","podAntiAffinity","requiredDuringSchedulingIgnoredDuringExecution","labelSelector","matchExpressions","operator","values","topologyKey","labels","splitKeyValue","nodeSelector","nodeAffinity","nodeSelectorTerms","def","pageName","ADD_TENANT_UPDATE_FIELD","ADD_TENANT_SET_PAGE_VALID","ADD_TENANT_SET_STORAGE_CLASSES_LIST","ADD_TENANT_SET_LIMIT_SIZE","ADD_TENANT_ADD_CA_KEYPAIR","ADD_TENANT_DELETE_CA_KEYPAIR","ADD_TENANT_ADD_FILE_TO_CA_KEYPAIR","ADD_TENANT_ADD_MINIO_KEYPAIR","ADD_TENANT_DELETE_MINIO_KEYPAIR","ADD_TENANT_ADD_FILE_TO_MINIO_KEYPAIR","ADD_TENANT_ENCRYPTION_SERVER_CERT","ADD_TENANT_ENCRYPTION_CLIENT_CERT","ADD_TENANT_ENCRYPTION_VAULT_CERT","ADD_TENANT_ENCRYPTION_VAULT_CA","ADD_TENANT_ENCRYPTION_GEMALTO_CA","ADD_TENANT_RESET_FORM","setTenantDetailsLoad","TENANT_DETAILS_SET_LOADING","setTenantName","tenantNamespace","TENANT_DETAILS_SET_CURRENT_TENANT","setTenantInfo","TENANT_DETAILS_SET_TENANT","setTenantTab","tab","TENANT_DETAILS_SET_TAB","newArray","ADD_TENANT_SET_KEY_PAIR_VALUE","errorBlock","main","withBreak"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/1069.771a8a37.chunk.js b/portal-ui/build/static/js/1069.a96e20d9.chunk.js similarity index 99% rename from portal-ui/build/static/js/1069.771a8a37.chunk.js rename to portal-ui/build/static/js/1069.a96e20d9.chunk.js index eae337633..119c13fea 100644 --- a/portal-ui/build/static/js/1069.771a8a37.chunk.js +++ b/portal-ui/build/static/js/1069.a96e20d9.chunk.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1069],{82461:function(e,a,n){n.d(a,{Z:function(){return j}});var t=n(23430),r=n(18489),o=n(50390),s=n(38342),i=n.n(s),l=n(25594),c=n(36554),d=n(94187),u=n(95467),m=n(46529),p=n(94258),x=n(86509),f=n(4285),h=n(72462),v=n(97538),g=n(82981),Z=n(62559),j=(0,f.Z)((function(e){return(0,x.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)({},h.YI),h.Hr),{},{valueString:{maxWidth:350,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",marginTop:2},fileInputField:{margin:"13px 0","@media (max-width: 900px)":{flexFlow:"column"}}},h.bV),{},{inputLabel:(0,r.Z)((0,r.Z)({},h.YI.inputLabel),{},{fontWeight:"normal"}),textBoxContainer:(0,r.Z)((0,r.Z)({},h.YI.textBoxContainer),{},{maxWidth:"100%",border:"1px solid #eaeaea",paddingLeft:"15px"})}))}))((function(e){var a=e.label,n=e.classes,r=e.onChange,s=e.id,x=e.name,f=e.disabled,h=void 0!==f&&f,j=e.tooltip,b=void 0===j?"":j,C=e.required,y=e.error,N=void 0===y?"":y,S=e.accept,k=void 0===S?"":S,M=e.value,w=void 0===M?"":M,F=(0,o.useState)(!1),E=(0,t.Z)(F,2),L=E[0],B=E[1];return(0,Z.jsx)(o.Fragment,{children:(0,Z.jsxs)(l.ZP,{item:!0,xs:12,className:"".concat(n.fileInputField," ").concat(n.fieldBottom," ").concat(n.fieldContainer," ").concat(""!==N?n.errorInField:""),children:[""!==a&&(0,Z.jsxs)(c.Z,{htmlFor:s,className:"".concat(""!==N?n.fieldLabelError:""," ").concat(n.inputLabel),children:[(0,Z.jsxs)("span",{children:[a,C?"*":""]}),""!==b&&(0,Z.jsx)("div",{className:n.tooltipContainer,children:(0,Z.jsx)(d.Z,{title:b,placement:"top-start",children:(0,Z.jsx)("div",{className:n.tooltip,children:(0,Z.jsx)(v.Z,{})})})})]}),L||""===w?(0,Z.jsxs)("div",{className:n.textBoxContainer,children:[(0,Z.jsx)("input",{type:"file",name:x,onChange:function(e){var a=i()(e,"target.files[0].name","");!function(e,a){var n=e.target.files[0],t=new FileReader;t.readAsDataURL(n),t.onload=function(){var e=t.result;if(e){var n=e.toString().split("base64,");2===n.length&&a(n[1])}}}(e,(function(e){r(e,a)}))},accept:k,required:C,disabled:h,className:n.fileInputField}),""!==w&&(0,Z.jsx)(u.Z,{color:"primary","aria-label":"upload picture",component:"span",onClick:function(){B(!1)},disableRipple:!1,disableFocusRipple:!1,size:"small",children:(0,Z.jsx)(p.Z,{})}),""!==N&&(0,Z.jsx)(g.Z,{errorMessage:N})]}):(0,Z.jsxs)("div",{className:n.fileReselect,children:[(0,Z.jsx)("div",{className:n.valueString,children:w}),(0,Z.jsx)(u.Z,{color:"primary","aria-label":"upload picture",component:"span",onClick:function(){B(!0)},disableRipple:!1,disableFocusRipple:!1,size:"small",children:(0,Z.jsx)(m.Z,{})})]})]})})}))},66964:function(e,a,n){var t=n(18489),r=n(50390),o=n(12066),s=n(25594),i=n(36554),l=n(94187),c=n(95467),d=n(86509),u=n(62449),m=n(4285),p=n(72462),x=n(97538),f=n(44977),h=n(62559),v=(0,u.Z)((function(e){return(0,d.Z)((0,t.Z)({},p.gM))}));function g(e){var a=v();return(0,h.jsx)(o.Z,(0,t.Z)({InputProps:{classes:a}},e))}a.Z=(0,m.Z)((function(e){return(0,d.Z)((0,t.Z)((0,t.Z)((0,t.Z)({},p.YI),p.Hr),{},{textBoxContainer:{flexGrow:1,position:"relative"},overlayAction:{position:"absolute",right:5,top:6,"& svg":{maxWidth:15,maxHeight:15},"&.withLabel":{top:5}},inputLabel:(0,t.Z)((0,t.Z)({},p.YI.inputLabel),{},{fontWeight:"normal"})}))}))((function(e){var a=e.label,n=e.onChange,o=e.value,d=e.id,u=e.name,m=e.type,p=void 0===m?"text":m,v=e.autoComplete,Z=void 0===v?"off":v,j=e.disabled,b=void 0!==j&&j,C=e.multiline,y=void 0!==C&&C,N=e.tooltip,S=void 0===N?"":N,k=e.index,M=void 0===k?0:k,w=e.error,F=void 0===w?"":w,E=e.required,L=void 0!==E&&E,B=e.placeholder,I=void 0===B?"":B,R=e.min,z=e.max,D=e.overlayIcon,K=void 0===D?null:D,P=e.overlayObject,A=void 0===P?null:P,W=e.extraInputProps,O=void 0===W?{}:W,T=e.overlayAction,H=e.noLabelMinWidth,V=void 0!==H&&H,Y=e.pattern,_=void 0===Y?"":Y,q=e.autoFocus,U=void 0!==q&&q,$=e.classes,G=e.className,Q=void 0===G?"":G,X=e.onKeyPress,J=(0,t.Z)({"data-index":M},O);return"number"===p&&R&&(J.min=R),"number"===p&&z&&(J.max=z),""!==_&&(J.pattern=_),(0,h.jsx)(r.Fragment,{children:(0,h.jsxs)(s.ZP,{container:!0,className:(0,f.Z)(""!==Q?Q:"",""!==F?$.errorInField:$.inputBoxContainer),children:[""!==a&&(0,h.jsxs)(i.Z,{htmlFor:d,className:V?$.noMinWidthLabel:$.inputLabel,children:[(0,h.jsxs)("span",{children:[a,L?"*":""]}),""!==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)(x.Z,{})})})})]}),(0,h.jsxs)("div",{className:$.textBoxContainer,children:[(0,h.jsx)(g,{id:d,name:u,fullWidth:!0,value:o,autoFocus:U,disabled:b,onChange:n,type:p,multiline:y,autoComplete:Z,inputProps:J,error:""!==F,helperText:F,placeholder:I,className:$.inputRebase,onKeyPress:X}),K&&(0,h.jsx)("div",{className:"".concat($.overlayAction," ").concat(""!==a?"withLabel":""),children:(0,h.jsx)(c.Z,{onClick:T?function(){T()}:function(){return null},size:"small",disableFocusRipple:!1,disableRipple:!1,disableTouchRipple:!1,children:K})}),A&&(0,h.jsx)("div",{className:"".concat($.overlayAction," ").concat(""!==a?"withLabel":""),children:A})]})]})})}))},76352:function(e,a,n){n.d(a,{Z:function(){return M}});var t,r=n(23430),o=n(18489),s=n(50390),i=n(34424),l=n(95467),c=n(97771),d=n(84402),u=n(78426),m=n(93085),p=n(86509),x=n(4285),f=n(72462),h=n(44149),v=n(38342),g=n.n(v),Z=n(92125),j=n(19538),b=n(21278),C=n(62559),y=function(){clearInterval(t)},N={displayErrorMessage:h.zb},S=(0,i.$j)((function(e){return{modalSnackMessage:e.system.modalSnackBar}}),N)((0,x.Z)((function(e){return(0,p.Z)({modalErrorContainer:{position:"absolute",marginTop:10,width:"80%",backgroundColor:"#fff",border:"#C72C48 1px solid",borderLeftWidth:12,borderRadius:3,zIndex:1e3,padding:"10px 15px",left:"50%",transform:"translateX(-50%)",opacity:0,transitionDuration:"0.2s"},modalErrorShow:{opacity:1},closeButton:{position:"absolute",right:5,fontSize:"small",border:0,backgroundColor:"#fff",cursor:"pointer"},errorTitle:{display:"flex",alignItems:"center"},errorLabel:{color:"#000",fontSize:18,fontWeight:500,marginLeft:5,marginRight:25},messageIcon:{color:"#C72C48",display:"flex","& svg":{width:32,height:32}},detailsButton:{color:"#9C9C9C",display:"flex",alignItems:"center",border:0,backgroundColor:"transparent",paddingLeft:5,fontSize:14,transformDuration:"0.3s",cursor:"pointer"},extraDetailsContainer:{fontStyle:"italic",color:"#9C9C9C",lineHeight:0,padding:"0 10px",transition:"all .2s ease-in-out",overflow:"hidden"},extraDetailsOpen:{lineHeight:1,padding:"3px 10px"},arrowElement:{marginLeft:-5},arrowOpen:{transform:"rotateZ(90deg)",transformDuration:"0.3s"}})}))((function(e){var a=e.classes,n=e.modalSnackMessage,o=e.displayErrorMessage,i=e.customStyle,l=(0,s.useState)(!1),c=(0,r.Z)(l,2),d=c[0],u=c[1],m=(0,s.useState)(!1),p=(0,r.Z)(m,2),x=p[0],f=p[1],h=(0,s.useCallback)((function(){f(!1)}),[]);(0,s.useEffect)((function(){x||(o({detailedError:"",errorMessage:""}),u(!1))}),[o,x]),(0,s.useEffect)((function(){""!==n.message&&"error"===n.type&&f(!0)}),[h,n.message,n.type]);var v=g()(n,"message",""),N=g()(n,"detailedErrorMsg","");return"error"!==n.type||""===v?null:(0,C.jsx)(s.Fragment,{children:(0,C.jsxs)("div",{className:"".concat(a.modalErrorContainer," ").concat(x?a.modalErrorShow:""),style:i,onMouseOver:y,onMouseLeave:function(){t=setInterval(h,1e4)},children:[(0,C.jsx)("button",{className:a.closeButton,onClick:h,children:(0,C.jsx)(b.Z,{})}),(0,C.jsxs)("div",{className:a.errorTitle,children:[(0,C.jsx)("span",{className:a.messageIcon,children:(0,C.jsx)(j.Z,{})}),(0,C.jsx)("span",{className:a.errorLabel,children:v})]}),""!==N&&(0,C.jsxs)(s.Fragment,{children:[(0,C.jsx)("div",{className:a.detailsContainerLink,children:(0,C.jsxs)("button",{className:a.detailsButton,onClick:function(){u(!d)},children:["Details",(0,C.jsx)(Z.Z,{className:"".concat(a.arrowElement," ").concat(d?a.arrowOpen:"")})]})}),(0,C.jsx)("div",{className:"".concat(a.extraDetailsContainer," ").concat(d?a.extraDetailsOpen:""),children:N})]})]})})}))),k=(0,i.$j)((function(e){return{modalSnackMessage:e.system.modalSnackBar}}),{setModalSnackMessage:h.MK}),M=(0,x.Z)((function(e){return(0,p.Z)((0,o.Z)((0,o.Z)({},f.Qw),{},{root:{"& .MuiPaper-root":{padding:"0 2rem 2rem 1rem"}},content:{padding:25,paddingBottom:0},customDialogSize:{width:"100%",maxWidth:765}},f.sN))}))(k((function(e){var a=e.onClose,n=e.modalOpen,t=e.title,i=e.children,p=e.classes,x=e.wideLimit,f=void 0===x||x,h=e.modalSnackMessage,v=e.noContentPadding,g=e.setModalSnackMessage,Z=e.titleIcon,j=void 0===Z?null:Z,y=(0,s.useState)(!1),N=(0,r.Z)(y,2),k=N[0],M=N[1];(0,s.useEffect)((function(){g("")}),[g]),(0,s.useEffect)((function(){if(h){if(""===h.message)return void M(!1);"error"!==h.type&&M(!0)}}),[h]);var w=f?{classes:{paper:p.customDialogSize}}:{maxWidth:"lg",fullWidth:!0},F="";return h&&(F=h.detailedErrorMsg,(""===h.detailedErrorMsg||h.detailedErrorMsg.length<5)&&(F=h.message)),(0,C.jsxs)(d.Z,(0,o.Z)((0,o.Z)({open:n,classes:p},w),{},{scroll:"paper",onClose:function(e,n){"backdropClick"!==n&&a()},className:p.root,children:[(0,C.jsxs)(u.Z,{className:p.title,children:[(0,C.jsxs)("div",{className:p.titleText,children:[j," ",t]}),(0,C.jsx)("div",{className:p.closeContainer,children:(0,C.jsx)(l.Z,{"aria-label":"close",className:p.closeButton,onClick:a,disableRipple:!0,size:"small",children:(0,C.jsx)(b.Z,{})})})]}),(0,C.jsx)(S,{}),(0,C.jsx)(c.Z,{open:k,className:p.snackBarModal,onClose:function(){M(!1),g("")},message:F,ContentProps:{className:"".concat(p.snackBar," ").concat(h&&"error"===h.type?p.errorSnackBar:"")},autoHideDuration:h&&"error"===h.type?1e4:5e3}),(0,C.jsx)(m.Z,{className:v?"":p.content,children:i})]}))})))},81069:function(e,a,n){n.r(a);var t=n(23430),r=n(18489),o=n(50390),s=n(38342),i=n.n(s),l=n(34424),c=n(86509),d=n(4285),u=n(66946),m=n(81378),p=n(25594),x=n(72462),f=n(44149),h=n(66964),v=n(82461),g=n(30324),Z=n(76352),j=n(85615),b=n(62559),C=(0,l.$j)(null,{setModalErrorSnackMessage:f.zb});a.default=(0,d.Z)((function(e){return(0,c.Z)((0,r.Z)((0,r.Z)({buttonContainer:{textAlign:"right"}},x.oO),x.DF))}))(C((function(e){var a=e.open,n=e.closeModalAndRefresh,r=e.classes,s=e.tierData,l=e.setModalErrorSnackMessage,c=(0,o.useState)(!1),d=(0,t.Z)(c,2),x=d[0],f=d[1],C=(0,o.useState)(""),y=(0,t.Z)(C,2),N=y[0],S=y[1],k=(0,o.useState)(""),M=(0,t.Z)(k,2),w=M[0],F=M[1],E=(0,o.useState)(""),L=(0,t.Z)(E,2),B=L[0],I=L[1],R=(0,o.useState)(""),z=(0,t.Z)(R,2),D=z[0],K=z[1],P=(0,o.useState)(""),A=(0,t.Z)(P,2),W=A[0],O=A[1],T=(0,o.useState)(""),H=(0,t.Z)(T,2),V=H[0],Y=H[1],_=(0,o.useState)(!0),q=(0,t.Z)(_,2),U=q[0],$=q[1],G=i()(s,"type",""),Q=i()(s,"".concat(G,".name"),"");(0,o.useEffect)((function(){var e=!0;"s3"===G||"azure"===G?""!==W&&""!==V||(e=!1):"gcs"===G&&""===D&&(e=!1),$(e)}),[V,W,D,G]);return(0,b.jsx)(Z.Z,{modalOpen:a,titleIcon:(0,b.jsx)(j.mB,{}),onClose:function(){n(!1)},title:"Update Credentials - ".concat(G," / ").concat(Q),children:(0,b.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){e.preventDefault(),f(!0),function(){var e={};"s3"===G||"azure"===G?e={access_key:W,secret_key:V}:"gcs"===G&&(e={creds:D}),""!==Q?g.Z.invoke("PUT","/api/v1/admin/tiers/".concat(G,"/").concat(Q,"/credentials"),e).then((function(){f(!1),n(!0)})).catch((function(e){f(!1),l(e)})):l({errorMessage:"There was an error retrieving tier information",detailedError:""})}()},children:(0,b.jsxs)(p.ZP,{container:!0,children:[(0,b.jsxs)(p.ZP,{item:!0,xs:12,children:["s3"===G&&(0,b.jsxs)(o.Fragment,{children:[(0,b.jsx)("div",{className:r.formFieldRow,children:(0,b.jsx)(h.Z,{id:"accessKey",name:"accessKey",label:"Access Key",placeholder:"Enter Access Key",value:N,onChange:function(e){S(e.target.value)}})}),(0,b.jsx)("div",{className:r.formFieldRow,children:(0,b.jsx)(h.Z,{id:"secretKey",name:"secretKey",label:"Secret Key",placeholder:"Enter Secret Key",value:w,onChange:function(e){F(e.target.value)}})})]}),"gcs"===G&&(0,b.jsx)(o.Fragment,{children:(0,b.jsx)(v.Z,{accept:".json",id:"creds",label:"Credentials",name:"creds",onChange:function(e,a){K(e),I(a)},value:B})}),"azure"===G&&(0,b.jsxs)(o.Fragment,{children:[(0,b.jsx)("div",{className:r.formFieldRow,children:(0,b.jsx)(h.Z,{id:"accountName",name:"accountName",label:"Account Name",placeholder:"Enter Account Name",value:W,onChange:function(e){O(e.target.value)}})}),(0,b.jsx)("div",{className:r.formFieldRow,children:(0,b.jsx)(h.Z,{id:"accountKey",name:"accountKey",label:"Account Key",placeholder:"Enter Account Key",value:V,onChange:function(e){Y(e.target.value)}})})]})]}),(0,b.jsx)(p.ZP,{item:!0,xs:12,className:r.buttonContainer,children:(0,b.jsx)(u.Z,{type:"submit",variant:"contained",color:"primary",disabled:x||!U,children:"Save"})}),x&&(0,b.jsx)(p.ZP,{item:!0,xs:12,children:(0,b.jsx)(m.Z,{})})]})})})})))},82981:function(e,a,n){var t=n(50390),r=n(35477),o=n(86509),s=n(4285),i=n(62559);a.Z=(0,s.Z)((function(e){var a;return(0,o.Z)({errorBlock:{color:(null===(a=e.palette)||void 0===a?void 0:a.error.main)||"#C83B51"}})}))((function(e){var a=e.classes,n=e.errorMessage,o=e.withBreak,s=void 0===o||o;return(0,i.jsxs)(t.Fragment,{children:[s&&(0,i.jsx)("br",{}),(0,i.jsx)(r.Z,{component:"p",variant:"body1",className:a.errorBlock,children:n})]})}))},46529:function(e,a,n){var t=n(64119);a.Z=void 0;var r=t(n(66830)),o=n(62559),s=(0,r.default)((0,o.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=s},94258:function(e,a,n){var t=n(64119);a.Z=void 0;var r=t(n(66830)),o=n(62559),s=(0,r.default)((0,o.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=s}}]); -//# sourceMappingURL=1069.771a8a37.chunk.js.map \ No newline at end of file +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1069],{82461:function(e,a,n){n.d(a,{Z:function(){return j}});var t=n(23430),r=n(18489),o=n(50390),s=n(38342),i=n.n(s),l=n(25594),c=n(36554),d=n(94187),u=n(95467),m=n(46529),p=n(94258),x=n(86509),f=n(4285),h=n(72462),v=n(97538),g=n(82981),Z=n(62559),j=(0,f.Z)((function(e){return(0,x.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)({},h.YI),h.Hr),{},{valueString:{maxWidth:350,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",marginTop:2},fileInputField:{margin:"13px 0","@media (max-width: 900px)":{flexFlow:"column"}}},h.bV),{},{inputLabel:(0,r.Z)((0,r.Z)({},h.YI.inputLabel),{},{fontWeight:"normal"}),textBoxContainer:(0,r.Z)((0,r.Z)({},h.YI.textBoxContainer),{},{maxWidth:"100%",border:"1px solid #eaeaea",paddingLeft:"15px"})}))}))((function(e){var a=e.label,n=e.classes,r=e.onChange,s=e.id,x=e.name,f=e.disabled,h=void 0!==f&&f,j=e.tooltip,b=void 0===j?"":j,C=e.required,y=e.error,N=void 0===y?"":y,S=e.accept,k=void 0===S?"":S,M=e.value,w=void 0===M?"":M,F=(0,o.useState)(!1),E=(0,t.Z)(F,2),L=E[0],B=E[1];return(0,Z.jsx)(o.Fragment,{children:(0,Z.jsxs)(l.ZP,{item:!0,xs:12,className:"".concat(n.fileInputField," ").concat(n.fieldBottom," ").concat(n.fieldContainer," ").concat(""!==N?n.errorInField:""),children:[""!==a&&(0,Z.jsxs)(c.Z,{htmlFor:s,className:"".concat(""!==N?n.fieldLabelError:""," ").concat(n.inputLabel),children:[(0,Z.jsxs)("span",{children:[a,C?"*":""]}),""!==b&&(0,Z.jsx)("div",{className:n.tooltipContainer,children:(0,Z.jsx)(d.Z,{title:b,placement:"top-start",children:(0,Z.jsx)("div",{className:n.tooltip,children:(0,Z.jsx)(v.Z,{})})})})]}),L||""===w?(0,Z.jsxs)("div",{className:n.textBoxContainer,children:[(0,Z.jsx)("input",{type:"file",name:x,onChange:function(e){var a=i()(e,"target.files[0].name","");!function(e,a){var n=e.target.files[0],t=new FileReader;t.readAsDataURL(n),t.onload=function(){var e=t.result;if(e){var n=e.toString().split("base64,");2===n.length&&a(n[1])}}}(e,(function(e){r(e,a)}))},accept:k,required:C,disabled:h,className:n.fileInputField}),""!==w&&(0,Z.jsx)(u.Z,{color:"primary","aria-label":"upload picture",component:"span",onClick:function(){B(!1)},disableRipple:!1,disableFocusRipple:!1,size:"small",children:(0,Z.jsx)(p.Z,{})}),""!==N&&(0,Z.jsx)(g.Z,{errorMessage:N})]}):(0,Z.jsxs)("div",{className:n.fileReselect,children:[(0,Z.jsx)("div",{className:n.valueString,children:w}),(0,Z.jsx)(u.Z,{color:"primary","aria-label":"upload picture",component:"span",onClick:function(){B(!0)},disableRipple:!1,disableFocusRipple:!1,size:"small",children:(0,Z.jsx)(m.Z,{})})]})]})})}))},66964:function(e,a,n){var t=n(18489),r=n(50390),o=n(12066),s=n(25594),i=n(36554),l=n(94187),c=n(95467),d=n(86509),u=n(62449),m=n(4285),p=n(72462),x=n(97538),f=n(44977),h=n(62559),v=(0,u.Z)((function(e){return(0,d.Z)((0,t.Z)({},p.gM))}));function g(e){var a=v();return(0,h.jsx)(o.Z,(0,t.Z)({InputProps:{classes:a}},e))}a.Z=(0,m.Z)((function(e){return(0,d.Z)((0,t.Z)((0,t.Z)((0,t.Z)({},p.YI),p.Hr),{},{textBoxContainer:{flexGrow:1,position:"relative"},overlayAction:{position:"absolute",right:5,top:6,"& svg":{maxWidth:15,maxHeight:15},"&.withLabel":{top:5}},inputLabel:(0,t.Z)((0,t.Z)({},p.YI.inputLabel),{},{fontWeight:"normal"})}))}))((function(e){var a=e.label,n=e.onChange,o=e.value,d=e.id,u=e.name,m=e.type,p=void 0===m?"text":m,v=e.autoComplete,Z=void 0===v?"off":v,j=e.disabled,b=void 0!==j&&j,C=e.multiline,y=void 0!==C&&C,N=e.tooltip,S=void 0===N?"":N,k=e.index,M=void 0===k?0:k,w=e.error,F=void 0===w?"":w,E=e.required,L=void 0!==E&&E,B=e.placeholder,I=void 0===B?"":B,R=e.min,z=e.max,D=e.overlayIcon,K=void 0===D?null:D,P=e.overlayObject,A=void 0===P?null:P,W=e.extraInputProps,O=void 0===W?{}:W,T=e.overlayAction,H=e.noLabelMinWidth,V=void 0!==H&&H,Y=e.pattern,_=void 0===Y?"":Y,q=e.autoFocus,U=void 0!==q&&q,$=e.classes,G=e.className,Q=void 0===G?"":G,X=e.onKeyPress,J=(0,t.Z)({"data-index":M},O);return"number"===p&&R&&(J.min=R),"number"===p&&z&&(J.max=z),""!==_&&(J.pattern=_),(0,h.jsx)(r.Fragment,{children:(0,h.jsxs)(s.ZP,{container:!0,className:(0,f.Z)(""!==Q?Q:"",""!==F?$.errorInField:$.inputBoxContainer),children:[""!==a&&(0,h.jsxs)(i.Z,{htmlFor:d,className:V?$.noMinWidthLabel:$.inputLabel,children:[(0,h.jsxs)("span",{children:[a,L?"*":""]}),""!==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)(x.Z,{})})})})]}),(0,h.jsxs)("div",{className:$.textBoxContainer,children:[(0,h.jsx)(g,{id:d,name:u,fullWidth:!0,value:o,autoFocus:U,disabled:b,onChange:n,type:p,multiline:y,autoComplete:Z,inputProps:J,error:""!==F,helperText:F,placeholder:I,className:$.inputRebase,onKeyPress:X}),K&&(0,h.jsx)("div",{className:"".concat($.overlayAction," ").concat(""!==a?"withLabel":""),children:(0,h.jsx)(c.Z,{onClick:T?function(){T()}:function(){return null},size:"small",disableFocusRipple:!1,disableRipple:!1,disableTouchRipple:!1,children:K})}),A&&(0,h.jsx)("div",{className:"".concat($.overlayAction," ").concat(""!==a?"withLabel":""),children:A})]})]})})}))},76352:function(e,a,n){n.d(a,{Z:function(){return M}});var t,r=n(23430),o=n(18489),s=n(50390),i=n(34424),l=n(95467),c=n(97771),d=n(84402),u=n(78426),m=n(93085),p=n(86509),x=n(4285),f=n(72462),h=n(44149),v=n(38342),g=n.n(v),Z=n(92125),j=n(19538),b=n(21278),C=n(62559),y=function(){clearInterval(t)},N={displayErrorMessage:h.zb},S=(0,i.$j)((function(e){return{modalSnackMessage:e.system.modalSnackBar}}),N)((0,x.Z)((function(e){return(0,p.Z)({modalErrorContainer:{position:"absolute",marginTop:10,width:"80%",backgroundColor:"#fff",border:"#C72C48 1px solid",borderLeftWidth:12,borderRadius:3,zIndex:1e3,padding:"10px 15px",left:"50%",transform:"translateX(-50%)",opacity:0,transitionDuration:"0.2s"},modalErrorShow:{opacity:1},closeButton:{position:"absolute",right:5,fontSize:"small",border:0,backgroundColor:"#fff",cursor:"pointer"},errorTitle:{display:"flex",alignItems:"center"},errorLabel:{color:"#000",fontSize:18,fontWeight:500,marginLeft:5,marginRight:25},messageIcon:{color:"#C72C48",display:"flex","& svg":{width:32,height:32}},detailsButton:{color:"#9C9C9C",display:"flex",alignItems:"center",border:0,backgroundColor:"transparent",paddingLeft:5,fontSize:14,transformDuration:"0.3s",cursor:"pointer"},extraDetailsContainer:{fontStyle:"italic",color:"#9C9C9C",lineHeight:0,padding:"0 10px",transition:"all .2s ease-in-out",overflow:"hidden"},extraDetailsOpen:{lineHeight:1,padding:"3px 10px"},arrowElement:{marginLeft:-5},arrowOpen:{transform:"rotateZ(90deg)",transformDuration:"0.3s"}})}))((function(e){var a=e.classes,n=e.modalSnackMessage,o=e.displayErrorMessage,i=e.customStyle,l=(0,s.useState)(!1),c=(0,r.Z)(l,2),d=c[0],u=c[1],m=(0,s.useState)(!1),p=(0,r.Z)(m,2),x=p[0],f=p[1],h=(0,s.useCallback)((function(){f(!1)}),[]);(0,s.useEffect)((function(){x||(o({detailedError:"",errorMessage:""}),u(!1))}),[o,x]),(0,s.useEffect)((function(){""!==n.message&&"error"===n.type&&f(!0)}),[h,n.message,n.type]);var v=g()(n,"message",""),N=g()(n,"detailedErrorMsg","");return"error"!==n.type||""===v?null:(0,C.jsx)(s.Fragment,{children:(0,C.jsxs)("div",{className:"".concat(a.modalErrorContainer," ").concat(x?a.modalErrorShow:""),style:i,onMouseOver:y,onMouseLeave:function(){t=setInterval(h,1e4)},children:[(0,C.jsx)("button",{className:a.closeButton,onClick:h,children:(0,C.jsx)(b.Z,{})}),(0,C.jsxs)("div",{className:a.errorTitle,children:[(0,C.jsx)("span",{className:a.messageIcon,children:(0,C.jsx)(j.Z,{})}),(0,C.jsx)("span",{className:a.errorLabel,children:v})]}),""!==N&&(0,C.jsxs)(s.Fragment,{children:[(0,C.jsx)("div",{className:a.detailsContainerLink,children:(0,C.jsxs)("button",{className:a.detailsButton,onClick:function(){u(!d)},children:["Details",(0,C.jsx)(Z.Z,{className:"".concat(a.arrowElement," ").concat(d?a.arrowOpen:"")})]})}),(0,C.jsx)("div",{className:"".concat(a.extraDetailsContainer," ").concat(d?a.extraDetailsOpen:""),children:N})]})]})})}))),k=(0,i.$j)((function(e){return{modalSnackMessage:e.system.modalSnackBar}}),{setModalSnackMessage:h.MK}),M=(0,x.Z)((function(e){return(0,p.Z)((0,o.Z)((0,o.Z)({},f.Qw),{},{root:{"& .MuiPaper-root":{padding:"0 2rem 2rem 1rem"}},content:{padding:25,paddingBottom:0},customDialogSize:{width:"100%",maxWidth:765}},f.sN))}))(k((function(e){var a=e.onClose,n=e.modalOpen,t=e.title,i=e.children,p=e.classes,x=e.wideLimit,f=void 0===x||x,h=e.modalSnackMessage,v=e.noContentPadding,g=e.setModalSnackMessage,Z=e.titleIcon,j=void 0===Z?null:Z,y=(0,s.useState)(!1),N=(0,r.Z)(y,2),k=N[0],M=N[1];(0,s.useEffect)((function(){g("")}),[g]),(0,s.useEffect)((function(){if(h){if(""===h.message)return void M(!1);"error"!==h.type&&M(!0)}}),[h]);var w=f?{classes:{paper:p.customDialogSize}}:{maxWidth:"lg",fullWidth:!0},F="";return h&&(F=h.detailedErrorMsg,(""===h.detailedErrorMsg||h.detailedErrorMsg.length<5)&&(F=h.message)),(0,C.jsxs)(d.Z,(0,o.Z)((0,o.Z)({open:n,classes:p},w),{},{scroll:"paper",onClose:function(e,n){"backdropClick"!==n&&a()},className:p.root,children:[(0,C.jsxs)(u.Z,{className:p.title,children:[(0,C.jsxs)("div",{className:p.titleText,children:[j," ",t]}),(0,C.jsx)("div",{className:p.closeContainer,children:(0,C.jsx)(l.Z,{"aria-label":"close",className:p.closeButton,onClick:a,disableRipple:!0,size:"small",children:(0,C.jsx)(b.Z,{})})})]}),(0,C.jsx)(S,{}),(0,C.jsx)(c.Z,{open:k,className:p.snackBarModal,onClose:function(){M(!1),g("")},message:F,ContentProps:{className:"".concat(p.snackBar," ").concat(h&&"error"===h.type?p.errorSnackBar:"")},autoHideDuration:h&&"error"===h.type?1e4:5e3}),(0,C.jsx)(m.Z,{className:v?"":p.content,children:i})]}))})))},81069:function(e,a,n){n.r(a);var t=n(23430),r=n(18489),o=n(50390),s=n(38342),i=n.n(s),l=n(34424),c=n(86509),d=n(4285),u=n(66946),m=n(81378),p=n(25594),x=n(72462),f=n(44149),h=n(66964),v=n(82461),g=n(30324),Z=n(76352),j=n(85204),b=n(62559),C=(0,l.$j)(null,{setModalErrorSnackMessage:f.zb});a.default=(0,d.Z)((function(e){return(0,c.Z)((0,r.Z)((0,r.Z)({buttonContainer:{textAlign:"right"}},x.oO),x.DF))}))(C((function(e){var a=e.open,n=e.closeModalAndRefresh,r=e.classes,s=e.tierData,l=e.setModalErrorSnackMessage,c=(0,o.useState)(!1),d=(0,t.Z)(c,2),x=d[0],f=d[1],C=(0,o.useState)(""),y=(0,t.Z)(C,2),N=y[0],S=y[1],k=(0,o.useState)(""),M=(0,t.Z)(k,2),w=M[0],F=M[1],E=(0,o.useState)(""),L=(0,t.Z)(E,2),B=L[0],I=L[1],R=(0,o.useState)(""),z=(0,t.Z)(R,2),D=z[0],K=z[1],P=(0,o.useState)(""),A=(0,t.Z)(P,2),W=A[0],O=A[1],T=(0,o.useState)(""),H=(0,t.Z)(T,2),V=H[0],Y=H[1],_=(0,o.useState)(!0),q=(0,t.Z)(_,2),U=q[0],$=q[1],G=i()(s,"type",""),Q=i()(s,"".concat(G,".name"),"");(0,o.useEffect)((function(){var e=!0;"s3"===G||"azure"===G?""!==W&&""!==V||(e=!1):"gcs"===G&&""===D&&(e=!1),$(e)}),[V,W,D,G]);return(0,b.jsx)(Z.Z,{modalOpen:a,titleIcon:(0,b.jsx)(j.mB,{}),onClose:function(){n(!1)},title:"Update Credentials - ".concat(G," / ").concat(Q),children:(0,b.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){e.preventDefault(),f(!0),function(){var e={};"s3"===G||"azure"===G?e={access_key:W,secret_key:V}:"gcs"===G&&(e={creds:D}),""!==Q?g.Z.invoke("PUT","/api/v1/admin/tiers/".concat(G,"/").concat(Q,"/credentials"),e).then((function(){f(!1),n(!0)})).catch((function(e){f(!1),l(e)})):l({errorMessage:"There was an error retrieving tier information",detailedError:""})}()},children:(0,b.jsxs)(p.ZP,{container:!0,children:[(0,b.jsxs)(p.ZP,{item:!0,xs:12,children:["s3"===G&&(0,b.jsxs)(o.Fragment,{children:[(0,b.jsx)("div",{className:r.formFieldRow,children:(0,b.jsx)(h.Z,{id:"accessKey",name:"accessKey",label:"Access Key",placeholder:"Enter Access Key",value:N,onChange:function(e){S(e.target.value)}})}),(0,b.jsx)("div",{className:r.formFieldRow,children:(0,b.jsx)(h.Z,{id:"secretKey",name:"secretKey",label:"Secret Key",placeholder:"Enter Secret Key",value:w,onChange:function(e){F(e.target.value)}})})]}),"gcs"===G&&(0,b.jsx)(o.Fragment,{children:(0,b.jsx)(v.Z,{accept:".json",id:"creds",label:"Credentials",name:"creds",onChange:function(e,a){K(e),I(a)},value:B})}),"azure"===G&&(0,b.jsxs)(o.Fragment,{children:[(0,b.jsx)("div",{className:r.formFieldRow,children:(0,b.jsx)(h.Z,{id:"accountName",name:"accountName",label:"Account Name",placeholder:"Enter Account Name",value:W,onChange:function(e){O(e.target.value)}})}),(0,b.jsx)("div",{className:r.formFieldRow,children:(0,b.jsx)(h.Z,{id:"accountKey",name:"accountKey",label:"Account Key",placeholder:"Enter Account Key",value:V,onChange:function(e){Y(e.target.value)}})})]})]}),(0,b.jsx)(p.ZP,{item:!0,xs:12,className:r.buttonContainer,children:(0,b.jsx)(u.Z,{type:"submit",variant:"contained",color:"primary",disabled:x||!U,children:"Save"})}),x&&(0,b.jsx)(p.ZP,{item:!0,xs:12,children:(0,b.jsx)(m.Z,{})})]})})})})))},82981:function(e,a,n){var t=n(50390),r=n(35477),o=n(86509),s=n(4285),i=n(62559);a.Z=(0,s.Z)((function(e){var a;return(0,o.Z)({errorBlock:{color:(null===(a=e.palette)||void 0===a?void 0:a.error.main)||"#C83B51"}})}))((function(e){var a=e.classes,n=e.errorMessage,o=e.withBreak,s=void 0===o||o;return(0,i.jsxs)(t.Fragment,{children:[s&&(0,i.jsx)("br",{}),(0,i.jsx)(r.Z,{component:"p",variant:"body1",className:a.errorBlock,children:n})]})}))},46529:function(e,a,n){var t=n(64119);a.Z=void 0;var r=t(n(66830)),o=n(62559),s=(0,r.default)((0,o.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=s},94258:function(e,a,n){var t=n(64119);a.Z=void 0;var r=t(n(66830)),o=n(62559),s=(0,r.default)((0,o.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=s}}]); +//# sourceMappingURL=1069.a96e20d9.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/1069.771a8a37.chunk.js.map b/portal-ui/build/static/js/1069.a96e20d9.chunk.js.map similarity index 99% rename from portal-ui/build/static/js/1069.771a8a37.chunk.js.map rename to portal-ui/build/static/js/1069.a96e20d9.chunk.js.map index 43f3a1670..fe4c3e734 100644 --- a/portal-ui/build/static/js/1069.771a8a37.chunk.js.map +++ b/portal-ui/build/static/js/1069.a96e20d9.chunk.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/1069.771a8a37.chunk.js","mappings":"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","sources":["screens/Console/Common/FormComponents/FileSelector/FileSelector.tsx","screens/Console/Common/FormComponents/FileSelector/utils.ts","screens/Console/Common/FormComponents/InputBoxWrapper/InputBoxWrapper.tsx","screens/Console/Common/FormComponents/ModalError/ModalError.tsx","screens/Console/Common/ModalWrapper/ModalWrapper.tsx","screens/Console/Configurations/TiersConfiguration/UpdateTierCredentialsModal.tsx","screens/shared/ErrorBlock.tsx","../node_modules/@mui/icons-material/AttachFile.js","../node_modules/@mui/icons-material/Cancel.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 get from \"lodash/get\";\nimport { Grid, InputLabel, Tooltip } from \"@mui/material\";\nimport IconButton from \"@mui/material/IconButton\";\nimport AttachFileIcon from \"@mui/icons-material/AttachFile\";\nimport CancelIcon from \"@mui/icons-material/Cancel\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n fieldBasic,\n fileInputStyles,\n tooltipHelper,\n} from \"../common/styleLibrary\";\nimport { fileProcess } from \"./utils\";\nimport HelpIcon from \"../../../../../icons/HelpIcon\";\nimport ErrorBlock from \"../../../../shared/ErrorBlock\";\n\ninterface InputBoxProps {\n label: string;\n classes: any;\n onChange: (e: string, i: string) => void;\n id: string;\n name: string;\n disabled?: boolean;\n tooltip?: string;\n required?: boolean;\n error?: string;\n accept?: string;\n value?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n valueString: {\n maxWidth: 350,\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n marginTop: 2,\n },\n fileInputField: {\n margin: \"13px 0\",\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n },\n },\n ...fileInputStyles,\n inputLabel: {\n ...fieldBasic.inputLabel,\n fontWeight: \"normal\",\n },\n textBoxContainer: {\n ...fieldBasic.textBoxContainer,\n maxWidth: \"100%\",\n border: \"1px solid #eaeaea\",\n paddingLeft: \"15px\",\n },\n });\n\nconst FileSelector = ({\n label,\n classes,\n onChange,\n id,\n name,\n disabled = false,\n tooltip = \"\",\n required,\n error = \"\",\n accept = \"\",\n value = \"\",\n}: InputBoxProps) => {\n const [showFileSelector, setShowSelector] = useState(false);\n\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
\n \n
\n \n
\n
\n
\n )}\n \n )}\n\n {showFileSelector || value === \"\" ? (\n
\n {\n const fileName = get(e, \"target.files[0].name\", \"\");\n fileProcess(e, (data: any) => {\n onChange(data, fileName);\n });\n }}\n accept={accept}\n required={required}\n disabled={disabled}\n className={classes.fileInputField}\n />\n\n {value !== \"\" && (\n {\n setShowSelector(false);\n }}\n disableRipple={false}\n disableFocusRipple={false}\n size=\"small\"\n >\n \n \n )}\n\n {error !== \"\" && }\n
\n ) : (\n
\n
{value}
\n {\n setShowSelector(true);\n }}\n disableRipple={false}\n disableFocusRipple={false}\n size=\"small\"\n >\n \n \n
\n )}\n \n
\n );\n};\n\nexport default withStyles(styles)(FileSelector);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nexport const fileProcess = (evt: any, callback: any) => {\n const file = evt.target.files[0];\n const reader = new FileReader();\n reader.readAsDataURL(file);\n\n reader.onload = () => {\n // reader.readAsDataURL(file) output will be something like: data:application/x-x509-ca-cert;base64,LS0tLS1CRUdJTiBDRVJUSU\n // we care only about the actual base64 part (everything after \"data:application/x-x509-ca-cert;base64,\")\n const fileBase64 = reader.result;\n if (fileBase64) {\n const fileArray = fileBase64.toString().split(\"base64,\");\n\n if (fileArray.length === 2) {\n callback(fileArray[1]);\n }\n }\n };\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React 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 { 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 \"../../../../../icons/HelpIcon\";\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 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 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 inputLabel: {\n ...fieldBasic.inputLabel,\n fontWeight: \"normal\",\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 overlayIcon = null,\n overlayObject = null,\n extraInputProps = {},\n overlayAction,\n noLabelMinWidth = false,\n pattern = \"\",\n autoFocus = false,\n classes,\n className = \"\",\n onKeyPress,\n}: InputBoxProps) => {\n let inputProps: any = { \"data-index\": index, ...extraInputProps };\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 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 size={\"small\"}\n disableFocusRipple={false}\n disableRipple={false}\n disableTouchRipple={false}\n >\n {overlayIcon}\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) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\n// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You 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 { connect } from \"react-redux\";\nimport get from \"lodash/get\";\nimport ArrowRightIcon from \"@mui/icons-material/ArrowRight\";\nimport ErrorOutlineIcon from \"@mui/icons-material/ErrorOutline\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { AppState } from \"../../../../../store\";\nimport {\n setErrorSnackMessage,\n setModalErrorSnackMessage,\n} from \"../../../../../actions\";\nimport { snackBarMessage } from \"../../../../../types\";\n\ninterface ImodalErrorProps {\n customStyle?: any;\n classes: any;\n modalSnackMessage: snackBarMessage;\n displayErrorMessage: typeof setErrorSnackMessage;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n modalErrorContainer: {\n position: \"absolute\",\n marginTop: 10,\n width: \"80%\",\n backgroundColor: \"#fff\",\n border: \"#C72C48 1px solid\",\n borderLeftWidth: 12,\n borderRadius: 3,\n zIndex: 1000,\n padding: \"10px 15px\",\n left: \"50%\",\n transform: \"translateX(-50%)\",\n opacity: 0,\n transitionDuration: \"0.2s\",\n },\n modalErrorShow: {\n opacity: 1,\n },\n closeButton: {\n position: \"absolute\",\n right: 5,\n fontSize: \"small\",\n border: 0,\n backgroundColor: \"#fff\",\n cursor: \"pointer\",\n },\n errorTitle: {\n display: \"flex\",\n alignItems: \"center\",\n },\n errorLabel: {\n color: \"#000\",\n fontSize: 18,\n fontWeight: 500,\n marginLeft: 5,\n marginRight: 25,\n },\n messageIcon: {\n color: \"#C72C48\",\n display: \"flex\",\n \"& svg\": {\n width: 32,\n height: 32,\n },\n },\n detailsButton: {\n color: \"#9C9C9C\",\n display: \"flex\",\n alignItems: \"center\",\n border: 0,\n backgroundColor: \"transparent\",\n paddingLeft: 5,\n fontSize: 14,\n transformDuration: \"0.3s\",\n cursor: \"pointer\",\n },\n extraDetailsContainer: {\n fontStyle: \"italic\",\n color: \"#9C9C9C\",\n lineHeight: 0,\n padding: \"0 10px\",\n transition: \"all .2s ease-in-out\",\n overflow: \"hidden\",\n },\n extraDetailsOpen: {\n lineHeight: 1,\n padding: \"3px 10px\",\n },\n arrowElement: {\n marginLeft: -5,\n },\n arrowOpen: {\n transform: \"rotateZ(90deg)\",\n transformDuration: \"0.3s\",\n },\n });\n\nvar timerI: any;\n\nconst startHideTimer = (callbackFunction: () => void) => {\n timerI = setInterval(callbackFunction, 10000);\n};\n\nconst stopHideTimer = () => {\n clearInterval(timerI);\n};\n\nconst ModalError = ({\n classes,\n modalSnackMessage,\n displayErrorMessage,\n customStyle,\n}: ImodalErrorProps) => {\n const [detailsOpen, setDetailsOpen] = useState(false);\n const [displayErrorMsg, setDisplayErrorMsg] = useState(false);\n\n const closeErrorMessage = useCallback(() => {\n setDisplayErrorMsg(false);\n }, []);\n\n useEffect(() => {\n if (!displayErrorMsg) {\n displayErrorMessage({ detailedError: \"\", errorMessage: \"\" });\n setDetailsOpen(false);\n //clearInterval(timerI);\n }\n }, [displayErrorMessage, displayErrorMsg]);\n\n useEffect(() => {\n if (\n modalSnackMessage.message !== \"\" &&\n modalSnackMessage.type === \"error\"\n ) {\n //Error message received, we trigger the animation\n setDisplayErrorMsg(true);\n //startHideTimer(closeErrorMessage);\n }\n }, [closeErrorMessage, modalSnackMessage.message, modalSnackMessage.type]);\n\n const detailsToggle = () => {\n setDetailsOpen(!detailsOpen);\n };\n\n const message = get(modalSnackMessage, \"message\", \"\");\n const messageDetails = get(modalSnackMessage, \"detailedErrorMsg\", \"\");\n\n if (modalSnackMessage.type !== \"error\" || message === \"\") {\n return null;\n }\n\n return (\n \n startHideTimer(closeErrorMessage)}\n >\n \n
\n \n \n \n {message}\n
\n {messageDetails !== \"\" && (\n \n
\n \n
\n \n {messageDetails}\n \n
\n )}\n \n
\n );\n};\n\nconst mapState = (state: AppState) => ({\n modalSnackMessage: state.system.modalSnackBar,\n});\n\nconst mapDispatchToProps = {\n displayErrorMessage: setModalErrorSnackMessage,\n};\n\nconst connector = connect(mapState, mapDispatchToProps);\n\nexport default connector(withStyles(styles)(ModalError));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, { useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Snackbar from \"@mui/material/Snackbar\";\nimport { Dialog, DialogContent, DialogTitle } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n deleteDialogStyles,\n snackBarCommon,\n} from \"../FormComponents/common/styleLibrary\";\nimport { AppState } from \"../../../../store\";\nimport { snackBarMessage } from \"../../../../types\";\nimport { setModalSnackMessage } from \"../../../../actions\";\nimport ModalError from \"../FormComponents/ModalError/ModalError\";\nimport CloseIcon from \"@mui/icons-material/Close\";\n\ninterface IModalProps {\n classes: any;\n onClose: () => void;\n modalOpen: boolean;\n title: string | React.ReactNode;\n children: any;\n wideLimit?: boolean;\n modalSnackMessage?: snackBarMessage;\n noContentPadding?: boolean;\n setModalSnackMessage: typeof setModalSnackMessage;\n titleIcon?: React.ReactNode;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...deleteDialogStyles,\n root: {\n \"& .MuiPaper-root\": {\n padding: \"0 2rem 2rem 1rem\",\n },\n },\n content: {\n padding: 25,\n paddingBottom: 0,\n },\n customDialogSize: {\n width: \"100%\",\n maxWidth: 765,\n },\n ...snackBarCommon,\n });\n\nconst ModalWrapper = ({\n onClose,\n modalOpen,\n title,\n children,\n classes,\n wideLimit = true,\n modalSnackMessage,\n noContentPadding,\n setModalSnackMessage,\n titleIcon = null,\n}: IModalProps) => {\n const [openSnackbar, setOpenSnackbar] = useState(false);\n\n useEffect(() => {\n setModalSnackMessage(\"\");\n }, [setModalSnackMessage]);\n\n useEffect(() => {\n if (modalSnackMessage) {\n if (modalSnackMessage.message === \"\") {\n setOpenSnackbar(false);\n return;\n }\n // Open SnackBar\n if (modalSnackMessage.type !== \"error\") {\n setOpenSnackbar(true);\n }\n }\n }, [modalSnackMessage]);\n\n const closeSnackBar = () => {\n setOpenSnackbar(false);\n setModalSnackMessage(\"\");\n };\n\n const customSize = wideLimit\n ? {\n classes: {\n paper: classes.customDialogSize,\n },\n }\n : { maxWidth: \"lg\" as const, fullWidth: true };\n\n let message = \"\";\n\n if (modalSnackMessage) {\n message = modalSnackMessage.detailedErrorMsg;\n if (\n modalSnackMessage.detailedErrorMsg === \"\" ||\n modalSnackMessage.detailedErrorMsg.length < 5\n ) {\n message = modalSnackMessage.message;\n }\n }\n\n return (\n {\n if (reason !== \"backdropClick\") {\n onClose(); // close on Esc but not on click outside\n }\n }}\n className={classes.root}\n >\n \n
\n {titleIcon} {title}\n
\n
\n \n \n \n
\n
\n\n \n {\n closeSnackBar();\n }}\n message={message}\n ContentProps={{\n className: `${classes.snackBar} ${\n modalSnackMessage && modalSnackMessage.type === \"error\"\n ? classes.errorSnackBar\n : \"\"\n }`,\n }}\n autoHideDuration={\n modalSnackMessage && modalSnackMessage.type === \"error\" ? 10000 : 5000\n }\n />\n \n {children}\n \n \n );\n};\n\nconst mapState = (state: AppState) => ({\n modalSnackMessage: state.system.modalSnackBar,\n});\n\nconst connector = connect(mapState, {\n setModalSnackMessage,\n});\n\nexport default withStyles(styles)(connector(ModalWrapper));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport get from \"lodash/get\";\nimport { connect } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Button, LinearProgress } from \"@mui/material\";\nimport Grid from \"@mui/material/Grid\";\nimport {\n formFieldStyles,\n modalBasic,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport { setModalErrorSnackMessage } from \"../../../../actions\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport FileSelector from \"../../Common/FormComponents/FileSelector/FileSelector\";\nimport api from \"../../../../common/api\";\nimport { ITierElement } from \"./types\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport { LockIcon } from \"../../../../icons\";\n\ninterface ITierCredentialsModal {\n open: boolean;\n closeModalAndRefresh: (refresh: boolean) => any;\n classes: any;\n tierData: ITierElement;\n setModalErrorSnackMessage: typeof setModalErrorSnackMessage;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n buttonContainer: {\n textAlign: \"right\",\n },\n ...modalBasic,\n ...formFieldStyles,\n });\n\nconst UpdateTierCredentialsModal = ({\n open,\n closeModalAndRefresh,\n classes,\n tierData,\n setModalErrorSnackMessage,\n}: ITierCredentialsModal) => {\n const [savingTiers, setSavingTiers] = useState(false);\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 // 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\") {\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\") {\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\n .invoke(\"PUT\", `/api/v1/admin/tiers/${type}/${name}/credentials`, rules)\n .then(() => {\n setSavingTiers(false);\n closeModalAndRefresh(true);\n })\n .catch((err: ErrorResponseHandler) => {\n setSavingTiers(false);\n setModalErrorSnackMessage(err);\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 \n {type === \"s3\" && (\n \n
\n ) => {\n setAccessKey(e.target.value);\n }}\n />\n
\n
\n ) => {\n setSecretKey(e.target.value);\n }}\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 ) => {\n setAccountName(e.target.value);\n }}\n />\n
\n
\n ) => {\n setAccountKey(e.target.value);\n }}\n />\n
\n
\n )}\n
\n \n \n Save\n \n \n {savingTiers && (\n \n \n \n )}\n
\n \n \n );\n};\n\nconst connector = connect(null, {\n setModalErrorSnackMessage,\n});\n\nexport default withStyles(styles)(connector(UpdateTierCredentialsModal));\n","import React from \"react\";\nimport Typography from \"@mui/material/Typography\";\nimport { Theme } from \"@mui/material/styles\";\n\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n errorBlock: {\n color: theme.palette?.error.main || \"#C83B51\",\n },\n });\n\ninterface IErrorBlockProps {\n classes: any;\n errorMessage: string;\n withBreak?: boolean;\n}\n\nconst ErrorBlock = ({\n classes,\n errorMessage,\n withBreak = true,\n}: IErrorBlockProps) => {\n return (\n \n {withBreak &&
}\n \n {errorMessage}\n \n
\n );\n};\n\nexport default withStyles(styles)(ErrorBlock);\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\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');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\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');\n\nexports.default = _default;"],"names":["withStyles","theme","createStyles","fieldBasic","tooltipHelper","valueString","maxWidth","whiteSpace","overflow","textOverflow","marginTop","fileInputField","margin","flexFlow","fileInputStyles","inputLabel","fontWeight","textBoxContainer","border","paddingLeft","label","classes","onChange","id","name","disabled","tooltip","required","error","accept","value","useState","showFileSelector","setShowSelector","Grid","item","xs","className","fieldBottom","fieldContainer","errorInField","InputLabel","htmlFor","fieldLabelError","tooltipContainer","Tooltip","title","placement","HelpIcon","type","e","fileName","get","evt","callback","file","target","files","reader","FileReader","readAsDataURL","onload","fileBase64","result","fileArray","toString","split","length","fileProcess","data","IconButton","color","component","onClick","disableRipple","disableFocusRipple","size","Cancel","ErrorBlock","errorMessage","fileReselect","AttachFile","inputStyles","makeStyles","inputFieldStyles","InputField","props","InputProps","flexGrow","position","overlayAction","right","top","maxHeight","autoComplete","multiline","index","placeholder","min","max","overlayIcon","overlayObject","extraInputProps","noLabelMinWidth","pattern","autoFocus","onKeyPress","inputProps","container","clsx","inputBoxContainer","noMinWidthLabel","fullWidth","helperText","inputRebase","disableTouchRipple","timerI","stopHideTimer","clearInterval","mapDispatchToProps","displayErrorMessage","setModalErrorSnackMessage","connect","state","modalSnackMessage","system","modalSnackBar","modalErrorContainer","width","backgroundColor","borderLeftWidth","borderRadius","zIndex","padding","left","transform","opacity","transitionDuration","modalErrorShow","closeButton","fontSize","cursor","errorTitle","display","alignItems","errorLabel","marginLeft","marginRight","messageIcon","height","detailsButton","transformDuration","extraDetailsContainer","fontStyle","lineHeight","transition","extraDetailsOpen","arrowElement","arrowOpen","customStyle","detailsOpen","setDetailsOpen","displayErrorMsg","setDisplayErrorMsg","closeErrorMessage","useCallback","useEffect","detailedError","message","messageDetails","Fragment","style","onMouseOver","onMouseLeave","setInterval","Close","ErrorOutline","detailsContainerLink","ArrowRight","connector","setModalSnackMessage","deleteDialogStyles","root","content","paddingBottom","customDialogSize","snackBarCommon","onClose","modalOpen","children","wideLimit","noContentPadding","titleIcon","openSnackbar","setOpenSnackbar","customSize","paper","detailedErrorMsg","Dialog","open","scroll","event","reason","DialogTitle","titleText","closeContainer","Snackbar","snackBarModal","ContentProps","snackBar","errorSnackBar","autoHideDuration","DialogContent","buttonContainer","textAlign","modalBasic","formFieldStyles","closeModalAndRefresh","tierData","savingTiers","setSavingTiers","accessKey","setAccessKey","secretKey","setSecretKey","creds","setCreds","encodedCreds","setEncodedCreds","accountName","setAccountName","accountKey","setAccountKey","isFormValid","setIsFormValid","valid","noValidate","onSubmit","preventDefault","rules","access_key","secret_key","api","then","catch","err","addRecord","formFieldRow","encodedValue","variant","errorBlock","palette","main","withBreak","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/1069.a96e20d9.chunk.js","mappings":"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","sources":["screens/Console/Common/FormComponents/FileSelector/FileSelector.tsx","screens/Console/Common/FormComponents/FileSelector/utils.ts","screens/Console/Common/FormComponents/InputBoxWrapper/InputBoxWrapper.tsx","screens/Console/Common/FormComponents/ModalError/ModalError.tsx","screens/Console/Common/ModalWrapper/ModalWrapper.tsx","screens/Console/Configurations/TiersConfiguration/UpdateTierCredentialsModal.tsx","screens/shared/ErrorBlock.tsx","../node_modules/@mui/icons-material/AttachFile.js","../node_modules/@mui/icons-material/Cancel.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 get from \"lodash/get\";\nimport { Grid, InputLabel, Tooltip } from \"@mui/material\";\nimport IconButton from \"@mui/material/IconButton\";\nimport AttachFileIcon from \"@mui/icons-material/AttachFile\";\nimport CancelIcon from \"@mui/icons-material/Cancel\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n fieldBasic,\n fileInputStyles,\n tooltipHelper,\n} from \"../common/styleLibrary\";\nimport { fileProcess } from \"./utils\";\nimport HelpIcon from \"../../../../../icons/HelpIcon\";\nimport ErrorBlock from \"../../../../shared/ErrorBlock\";\n\ninterface InputBoxProps {\n label: string;\n classes: any;\n onChange: (e: string, i: string) => void;\n id: string;\n name: string;\n disabled?: boolean;\n tooltip?: string;\n required?: boolean;\n error?: string;\n accept?: string;\n value?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n valueString: {\n maxWidth: 350,\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n marginTop: 2,\n },\n fileInputField: {\n margin: \"13px 0\",\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n },\n },\n ...fileInputStyles,\n inputLabel: {\n ...fieldBasic.inputLabel,\n fontWeight: \"normal\",\n },\n textBoxContainer: {\n ...fieldBasic.textBoxContainer,\n maxWidth: \"100%\",\n border: \"1px solid #eaeaea\",\n paddingLeft: \"15px\",\n },\n });\n\nconst FileSelector = ({\n label,\n classes,\n onChange,\n id,\n name,\n disabled = false,\n tooltip = \"\",\n required,\n error = \"\",\n accept = \"\",\n value = \"\",\n}: InputBoxProps) => {\n const [showFileSelector, setShowSelector] = useState(false);\n\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
\n \n
\n \n
\n
\n
\n )}\n \n )}\n\n {showFileSelector || value === \"\" ? (\n
\n {\n const fileName = get(e, \"target.files[0].name\", \"\");\n fileProcess(e, (data: any) => {\n onChange(data, fileName);\n });\n }}\n accept={accept}\n required={required}\n disabled={disabled}\n className={classes.fileInputField}\n />\n\n {value !== \"\" && (\n {\n setShowSelector(false);\n }}\n disableRipple={false}\n disableFocusRipple={false}\n size=\"small\"\n >\n \n \n )}\n\n {error !== \"\" && }\n
\n ) : (\n
\n
{value}
\n {\n setShowSelector(true);\n }}\n disableRipple={false}\n disableFocusRipple={false}\n size=\"small\"\n >\n \n \n
\n )}\n \n
\n );\n};\n\nexport default withStyles(styles)(FileSelector);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nexport const fileProcess = (evt: any, callback: any) => {\n const file = evt.target.files[0];\n const reader = new FileReader();\n reader.readAsDataURL(file);\n\n reader.onload = () => {\n // reader.readAsDataURL(file) output will be something like: data:application/x-x509-ca-cert;base64,LS0tLS1CRUdJTiBDRVJUSU\n // we care only about the actual base64 part (everything after \"data:application/x-x509-ca-cert;base64,\")\n const fileBase64 = reader.result;\n if (fileBase64) {\n const fileArray = fileBase64.toString().split(\"base64,\");\n\n if (fileArray.length === 2) {\n callback(fileArray[1]);\n }\n }\n };\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React 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 { 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 \"../../../../../icons/HelpIcon\";\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 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 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 inputLabel: {\n ...fieldBasic.inputLabel,\n fontWeight: \"normal\",\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 overlayIcon = null,\n overlayObject = null,\n extraInputProps = {},\n overlayAction,\n noLabelMinWidth = false,\n pattern = \"\",\n autoFocus = false,\n classes,\n className = \"\",\n onKeyPress,\n}: InputBoxProps) => {\n let inputProps: any = { \"data-index\": index, ...extraInputProps };\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 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 size={\"small\"}\n disableFocusRipple={false}\n disableRipple={false}\n disableTouchRipple={false}\n >\n {overlayIcon}\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) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\n// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You 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 { connect } from \"react-redux\";\nimport get from \"lodash/get\";\nimport ArrowRightIcon from \"@mui/icons-material/ArrowRight\";\nimport ErrorOutlineIcon from \"@mui/icons-material/ErrorOutline\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { AppState } from \"../../../../../store\";\nimport {\n setErrorSnackMessage,\n setModalErrorSnackMessage,\n} from \"../../../../../actions\";\nimport { snackBarMessage } from \"../../../../../types\";\n\ninterface ImodalErrorProps {\n customStyle?: any;\n classes: any;\n modalSnackMessage: snackBarMessage;\n displayErrorMessage: typeof setErrorSnackMessage;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n modalErrorContainer: {\n position: \"absolute\",\n marginTop: 10,\n width: \"80%\",\n backgroundColor: \"#fff\",\n border: \"#C72C48 1px solid\",\n borderLeftWidth: 12,\n borderRadius: 3,\n zIndex: 1000,\n padding: \"10px 15px\",\n left: \"50%\",\n transform: \"translateX(-50%)\",\n opacity: 0,\n transitionDuration: \"0.2s\",\n },\n modalErrorShow: {\n opacity: 1,\n },\n closeButton: {\n position: \"absolute\",\n right: 5,\n fontSize: \"small\",\n border: 0,\n backgroundColor: \"#fff\",\n cursor: \"pointer\",\n },\n errorTitle: {\n display: \"flex\",\n alignItems: \"center\",\n },\n errorLabel: {\n color: \"#000\",\n fontSize: 18,\n fontWeight: 500,\n marginLeft: 5,\n marginRight: 25,\n },\n messageIcon: {\n color: \"#C72C48\",\n display: \"flex\",\n \"& svg\": {\n width: 32,\n height: 32,\n },\n },\n detailsButton: {\n color: \"#9C9C9C\",\n display: \"flex\",\n alignItems: \"center\",\n border: 0,\n backgroundColor: \"transparent\",\n paddingLeft: 5,\n fontSize: 14,\n transformDuration: \"0.3s\",\n cursor: \"pointer\",\n },\n extraDetailsContainer: {\n fontStyle: \"italic\",\n color: \"#9C9C9C\",\n lineHeight: 0,\n padding: \"0 10px\",\n transition: \"all .2s ease-in-out\",\n overflow: \"hidden\",\n },\n extraDetailsOpen: {\n lineHeight: 1,\n padding: \"3px 10px\",\n },\n arrowElement: {\n marginLeft: -5,\n },\n arrowOpen: {\n transform: \"rotateZ(90deg)\",\n transformDuration: \"0.3s\",\n },\n });\n\nvar timerI: any;\n\nconst startHideTimer = (callbackFunction: () => void) => {\n timerI = setInterval(callbackFunction, 10000);\n};\n\nconst stopHideTimer = () => {\n clearInterval(timerI);\n};\n\nconst ModalError = ({\n classes,\n modalSnackMessage,\n displayErrorMessage,\n customStyle,\n}: ImodalErrorProps) => {\n const [detailsOpen, setDetailsOpen] = useState(false);\n const [displayErrorMsg, setDisplayErrorMsg] = useState(false);\n\n const closeErrorMessage = useCallback(() => {\n setDisplayErrorMsg(false);\n }, []);\n\n useEffect(() => {\n if (!displayErrorMsg) {\n displayErrorMessage({ detailedError: \"\", errorMessage: \"\" });\n setDetailsOpen(false);\n //clearInterval(timerI);\n }\n }, [displayErrorMessage, displayErrorMsg]);\n\n useEffect(() => {\n if (\n modalSnackMessage.message !== \"\" &&\n modalSnackMessage.type === \"error\"\n ) {\n //Error message received, we trigger the animation\n setDisplayErrorMsg(true);\n //startHideTimer(closeErrorMessage);\n }\n }, [closeErrorMessage, modalSnackMessage.message, modalSnackMessage.type]);\n\n const detailsToggle = () => {\n setDetailsOpen(!detailsOpen);\n };\n\n const message = get(modalSnackMessage, \"message\", \"\");\n const messageDetails = get(modalSnackMessage, \"detailedErrorMsg\", \"\");\n\n if (modalSnackMessage.type !== \"error\" || message === \"\") {\n return null;\n }\n\n return (\n \n startHideTimer(closeErrorMessage)}\n >\n \n
\n \n \n \n {message}\n
\n {messageDetails !== \"\" && (\n \n
\n \n
\n \n {messageDetails}\n \n
\n )}\n \n
\n );\n};\n\nconst mapState = (state: AppState) => ({\n modalSnackMessage: state.system.modalSnackBar,\n});\n\nconst mapDispatchToProps = {\n displayErrorMessage: setModalErrorSnackMessage,\n};\n\nconst connector = connect(mapState, mapDispatchToProps);\n\nexport default connector(withStyles(styles)(ModalError));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, { useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Snackbar from \"@mui/material/Snackbar\";\nimport { Dialog, DialogContent, DialogTitle } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n deleteDialogStyles,\n snackBarCommon,\n} from \"../FormComponents/common/styleLibrary\";\nimport { AppState } from \"../../../../store\";\nimport { snackBarMessage } from \"../../../../types\";\nimport { setModalSnackMessage } from \"../../../../actions\";\nimport ModalError from \"../FormComponents/ModalError/ModalError\";\nimport CloseIcon from \"@mui/icons-material/Close\";\n\ninterface IModalProps {\n classes: any;\n onClose: () => void;\n modalOpen: boolean;\n title: string | React.ReactNode;\n children: any;\n wideLimit?: boolean;\n modalSnackMessage?: snackBarMessage;\n noContentPadding?: boolean;\n setModalSnackMessage: typeof setModalSnackMessage;\n titleIcon?: React.ReactNode;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...deleteDialogStyles,\n root: {\n \"& .MuiPaper-root\": {\n padding: \"0 2rem 2rem 1rem\",\n },\n },\n content: {\n padding: 25,\n paddingBottom: 0,\n },\n customDialogSize: {\n width: \"100%\",\n maxWidth: 765,\n },\n ...snackBarCommon,\n });\n\nconst ModalWrapper = ({\n onClose,\n modalOpen,\n title,\n children,\n classes,\n wideLimit = true,\n modalSnackMessage,\n noContentPadding,\n setModalSnackMessage,\n titleIcon = null,\n}: IModalProps) => {\n const [openSnackbar, setOpenSnackbar] = useState(false);\n\n useEffect(() => {\n setModalSnackMessage(\"\");\n }, [setModalSnackMessage]);\n\n useEffect(() => {\n if (modalSnackMessage) {\n if (modalSnackMessage.message === \"\") {\n setOpenSnackbar(false);\n return;\n }\n // Open SnackBar\n if (modalSnackMessage.type !== \"error\") {\n setOpenSnackbar(true);\n }\n }\n }, [modalSnackMessage]);\n\n const closeSnackBar = () => {\n setOpenSnackbar(false);\n setModalSnackMessage(\"\");\n };\n\n const customSize = wideLimit\n ? {\n classes: {\n paper: classes.customDialogSize,\n },\n }\n : { maxWidth: \"lg\" as const, fullWidth: true };\n\n let message = \"\";\n\n if (modalSnackMessage) {\n message = modalSnackMessage.detailedErrorMsg;\n if (\n modalSnackMessage.detailedErrorMsg === \"\" ||\n modalSnackMessage.detailedErrorMsg.length < 5\n ) {\n message = modalSnackMessage.message;\n }\n }\n\n return (\n {\n if (reason !== \"backdropClick\") {\n onClose(); // close on Esc but not on click outside\n }\n }}\n className={classes.root}\n >\n \n
\n {titleIcon} {title}\n
\n
\n \n \n \n
\n
\n\n \n {\n closeSnackBar();\n }}\n message={message}\n ContentProps={{\n className: `${classes.snackBar} ${\n modalSnackMessage && modalSnackMessage.type === \"error\"\n ? classes.errorSnackBar\n : \"\"\n }`,\n }}\n autoHideDuration={\n modalSnackMessage && modalSnackMessage.type === \"error\" ? 10000 : 5000\n }\n />\n \n {children}\n \n \n );\n};\n\nconst mapState = (state: AppState) => ({\n modalSnackMessage: state.system.modalSnackBar,\n});\n\nconst connector = connect(mapState, {\n setModalSnackMessage,\n});\n\nexport default withStyles(styles)(connector(ModalWrapper));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport get from \"lodash/get\";\nimport { connect } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Button, LinearProgress } from \"@mui/material\";\nimport Grid from \"@mui/material/Grid\";\nimport {\n formFieldStyles,\n modalBasic,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport { setModalErrorSnackMessage } from \"../../../../actions\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport FileSelector from \"../../Common/FormComponents/FileSelector/FileSelector\";\nimport api from \"../../../../common/api\";\nimport { ITierElement } from \"./types\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport { LockIcon } from \"../../../../icons\";\n\ninterface ITierCredentialsModal {\n open: boolean;\n closeModalAndRefresh: (refresh: boolean) => any;\n classes: any;\n tierData: ITierElement;\n setModalErrorSnackMessage: typeof setModalErrorSnackMessage;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n buttonContainer: {\n textAlign: \"right\",\n },\n ...modalBasic,\n ...formFieldStyles,\n });\n\nconst UpdateTierCredentialsModal = ({\n open,\n closeModalAndRefresh,\n classes,\n tierData,\n setModalErrorSnackMessage,\n}: ITierCredentialsModal) => {\n const [savingTiers, setSavingTiers] = useState(false);\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 // 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\") {\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\") {\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\n .invoke(\"PUT\", `/api/v1/admin/tiers/${type}/${name}/credentials`, rules)\n .then(() => {\n setSavingTiers(false);\n closeModalAndRefresh(true);\n })\n .catch((err: ErrorResponseHandler) => {\n setSavingTiers(false);\n setModalErrorSnackMessage(err);\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 \n {type === \"s3\" && (\n \n
\n ) => {\n setAccessKey(e.target.value);\n }}\n />\n
\n
\n ) => {\n setSecretKey(e.target.value);\n }}\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 ) => {\n setAccountName(e.target.value);\n }}\n />\n
\n
\n ) => {\n setAccountKey(e.target.value);\n }}\n />\n
\n
\n )}\n
\n \n \n Save\n \n \n {savingTiers && (\n \n \n \n )}\n
\n \n \n );\n};\n\nconst connector = connect(null, {\n setModalErrorSnackMessage,\n});\n\nexport default withStyles(styles)(connector(UpdateTierCredentialsModal));\n","import React from \"react\";\nimport Typography from \"@mui/material/Typography\";\nimport { Theme } from \"@mui/material/styles\";\n\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n errorBlock: {\n color: theme.palette?.error.main || \"#C83B51\",\n },\n });\n\ninterface IErrorBlockProps {\n classes: any;\n errorMessage: string;\n withBreak?: boolean;\n}\n\nconst ErrorBlock = ({\n classes,\n errorMessage,\n withBreak = true,\n}: IErrorBlockProps) => {\n return (\n \n {withBreak &&
}\n \n {errorMessage}\n \n
\n );\n};\n\nexport default withStyles(styles)(ErrorBlock);\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\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');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\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');\n\nexports.default = _default;"],"names":["withStyles","theme","createStyles","fieldBasic","tooltipHelper","valueString","maxWidth","whiteSpace","overflow","textOverflow","marginTop","fileInputField","margin","flexFlow","fileInputStyles","inputLabel","fontWeight","textBoxContainer","border","paddingLeft","label","classes","onChange","id","name","disabled","tooltip","required","error","accept","value","useState","showFileSelector","setShowSelector","Grid","item","xs","className","fieldBottom","fieldContainer","errorInField","InputLabel","htmlFor","fieldLabelError","tooltipContainer","Tooltip","title","placement","HelpIcon","type","e","fileName","get","evt","callback","file","target","files","reader","FileReader","readAsDataURL","onload","fileBase64","result","fileArray","toString","split","length","fileProcess","data","IconButton","color","component","onClick","disableRipple","disableFocusRipple","size","Cancel","ErrorBlock","errorMessage","fileReselect","AttachFile","inputStyles","makeStyles","inputFieldStyles","InputField","props","InputProps","flexGrow","position","overlayAction","right","top","maxHeight","autoComplete","multiline","index","placeholder","min","max","overlayIcon","overlayObject","extraInputProps","noLabelMinWidth","pattern","autoFocus","onKeyPress","inputProps","container","clsx","inputBoxContainer","noMinWidthLabel","fullWidth","helperText","inputRebase","disableTouchRipple","timerI","stopHideTimer","clearInterval","mapDispatchToProps","displayErrorMessage","setModalErrorSnackMessage","connect","state","modalSnackMessage","system","modalSnackBar","modalErrorContainer","width","backgroundColor","borderLeftWidth","borderRadius","zIndex","padding","left","transform","opacity","transitionDuration","modalErrorShow","closeButton","fontSize","cursor","errorTitle","display","alignItems","errorLabel","marginLeft","marginRight","messageIcon","height","detailsButton","transformDuration","extraDetailsContainer","fontStyle","lineHeight","transition","extraDetailsOpen","arrowElement","arrowOpen","customStyle","detailsOpen","setDetailsOpen","displayErrorMsg","setDisplayErrorMsg","closeErrorMessage","useCallback","useEffect","detailedError","message","messageDetails","Fragment","style","onMouseOver","onMouseLeave","setInterval","Close","ErrorOutline","detailsContainerLink","ArrowRight","connector","setModalSnackMessage","deleteDialogStyles","root","content","paddingBottom","customDialogSize","snackBarCommon","onClose","modalOpen","children","wideLimit","noContentPadding","titleIcon","openSnackbar","setOpenSnackbar","customSize","paper","detailedErrorMsg","Dialog","open","scroll","event","reason","DialogTitle","titleText","closeContainer","Snackbar","snackBarModal","ContentProps","snackBar","errorSnackBar","autoHideDuration","DialogContent","buttonContainer","textAlign","modalBasic","formFieldStyles","closeModalAndRefresh","tierData","savingTiers","setSavingTiers","accessKey","setAccessKey","secretKey","setSecretKey","creds","setCreds","encodedCreds","setEncodedCreds","accountName","setAccountName","accountKey","setAccountKey","isFormValid","setIsFormValid","valid","noValidate","onSubmit","preventDefault","rules","access_key","secret_key","api","then","catch","err","addRecord","formFieldRow","encodedValue","variant","errorBlock","palette","main","withBreak","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/1140.35a12cb4.chunk.js b/portal-ui/build/static/js/1140.49ee98af.chunk.js similarity index 97% rename from portal-ui/build/static/js/1140.35a12cb4.chunk.js rename to portal-ui/build/static/js/1140.49ee98af.chunk.js index 992e6c7e1..8a1b1c93a 100644 --- a/portal-ui/build/static/js/1140.35a12cb4.chunk.js +++ b/portal-ui/build/static/js/1140.49ee98af.chunk.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1140],{39080:function(e,n,t){t.r(n),t.d(n,{default:function(){return Z}});var i=t(18489),r=t(35531),a=t(50390),s=t(38342),l=t.n(s),o=t(86509),c=t(4285),d=t(66946),u=t(76352),m=t(25594),h=t(58217),p=t(65771),x=t(70758),y=t(33034),g=t.n(y),f=t(85615),v=t(72462),j=t(62559),b=(0,c.Z)((function(e){return(0,o.Z)({container:{display:"flex",flexFlow:"column",padding:"20px 0 8px 0"},inputWithCopy:{"& .MuiInputBase-root ":{width:"100%",background:"#FBFAFA","& .MuiInputBase-input":{height:".8rem"},"& .MuiInputAdornment-positionEnd":{marginRight:".5rem","& .MuiButtonBase-root":{height:"2rem"}}},"& .MuiButtonBase-root .min-icon":{width:".8rem",height:".8rem"}},inputLabel:(0,i.Z)((0,i.Z)({},v.YI.inputLabel),{},{fontSize:".8rem"})})}))((function(e){var n=e.label,t=void 0===n?"":n,i=e.value,r=void 0===i?"":i,a=e.classes,s=void 0===a?{}:a;return(0,j.jsxs)("div",{className:s.container,children:[(0,j.jsxs)("div",{className:s.inputLabel,children:[t,":"]}),(0,j.jsx)("div",{className:s.inputWithCopy,children:(0,j.jsx)(h.Z,{value:r,readOnly:!0,endAdornment:(0,j.jsx)(p.Z,{position:"end",children:(0,j.jsx)(g(),{text:r,children:(0,j.jsx)(x.Z,{"aria-label":"copy",tooltip:"Copy",onClick:function(){},onMouseDown:function(){},edge:"end",children:(0,j.jsx)(f.TI,{})})})})})})]})})),w=t(47424),Z=(0,c.Z)((function(e){return(0,o.Z)({warningBlock:{color:"red",fontSize:".85rem",margin:".5rem 0 .5rem 0",display:"flex",alignItems:"center","& svg ":{marginRight:".3rem",height:16,width:16}},credentialTitle:{padding:".8rem 0 0 0",fontWeight:600,fontSize:".9rem"},buttonContainer:{textAlign:"right",marginTop:"1rem"},credentialsPanel:{overflowY:"auto",maxHeight:350},promptTitle:{display:"flex",alignItems:"center"},buttonSpacer:{marginRight:".9rem"},promptIcon:{marginRight:".1rem",display:"flex",alignItems:"center",height:"2rem",width:"2rem"}})}))((function(e){var n=e.classes,t=e.newServiceAccount,s=e.open,o=e.closeModal,c=e.entity;if(!t)return null;var h=l()(t,"console",null),p=l()(t,"idp",!1);return(0,j.jsx)(u.Z,{modalOpen:s,onClose:function(){o()},title:(0,j.jsx)("div",{className:n.promptTitle,children:(0,j.jsxs)("div",{children:["New ",c," Created"]})}),titleIcon:(0,j.jsx)(f.tV,{}),children:(0,j.jsxs)(m.ZP,{container:!0,children:[(0,j.jsxs)(m.ZP,{item:!0,xs:12,className:n.formScrollable,children:["A new ",c," has been created with the following details:",!p&&h&&(0,j.jsx)(a.Fragment,{children:(0,j.jsxs)(m.ZP,{item:!0,xs:12,className:n.credentialsPanel,children:[(0,j.jsx)("div",{className:n.credentialTitle,children:"Console Credentials"}),Array.isArray(h)&&h.map((function(e,n){return(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(b,{label:"Access Key",value:e.accessKey}),(0,j.jsx)(b,{label:"Secret Key",value:e.secretKey})]})})),!Array.isArray(h)&&(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(b,{label:"Access Key",value:h.accessKey}),(0,j.jsx)(b,{label:"Secret Key",value:h.secretKey})]})]})}),p?(0,j.jsx)("div",{className:n.warningBlock,children:"Please Login via the configured external identity provider."}):(0,j.jsxs)("div",{className:n.warningBlock,children:[(0,j.jsx)(w.Z,{}),(0,j.jsx)("span",{children:"Write these down, as this is the only time the secret will be displayed."})]})]}),(0,j.jsxs)(m.ZP,{item:!0,xs:12,className:n.buttonContainer,children:[(0,j.jsx)(d.Z,{id:"done-button",variant:"outlined",className:n.buttonSpacer,onClick:function(){o()},color:"primary",children:"Done"}),!p&&(0,j.jsx)(d.Z,{id:"download-button",onClick:function(){var e={};if(h)if(Array.isArray(h)){var n=h.map((function(e){return{url:e.url,access_key:e.accessKey,secret_key:e.secretKey,api:"s3v4",path:"auto"}}));e={console:(0,r.Z)(n)}}else e={console:[{url:h.url,access_key:h.accessKey,secret_key:h.secretKey,api:"s3v4",path:"auto"}]};!function(e,n){var t=document.createElement("a");t.setAttribute("href","data:text/plain;charset=utf-8,"+encodeURIComponent(n)),t.setAttribute("download",e),t.style.display="none",document.body.appendChild(t),t.click(),document.body.removeChild(t)}("credentials.json",JSON.stringify((0,i.Z)({},e)))},endIcon:(0,j.jsx)(f._8,{}),variant:"contained",color:"primary",children:"Download"})]})]})})}))}}]); -//# sourceMappingURL=1140.35a12cb4.chunk.js.map \ No newline at end of file +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1140],{39080:function(e,n,t){t.r(n),t.d(n,{default:function(){return Z}});var i=t(18489),r=t(35531),a=t(50390),s=t(38342),l=t.n(s),o=t(86509),c=t(4285),d=t(66946),u=t(76352),m=t(25594),h=t(58217),p=t(65771),x=t(70758),y=t(33034),g=t.n(y),f=t(85204),v=t(72462),j=t(62559),b=(0,c.Z)((function(e){return(0,o.Z)({container:{display:"flex",flexFlow:"column",padding:"20px 0 8px 0"},inputWithCopy:{"& .MuiInputBase-root ":{width:"100%",background:"#FBFAFA","& .MuiInputBase-input":{height:".8rem"},"& .MuiInputAdornment-positionEnd":{marginRight:".5rem","& .MuiButtonBase-root":{height:"2rem"}}},"& .MuiButtonBase-root .min-icon":{width:".8rem",height:".8rem"}},inputLabel:(0,i.Z)((0,i.Z)({},v.YI.inputLabel),{},{fontSize:".8rem"})})}))((function(e){var n=e.label,t=void 0===n?"":n,i=e.value,r=void 0===i?"":i,a=e.classes,s=void 0===a?{}:a;return(0,j.jsxs)("div",{className:s.container,children:[(0,j.jsxs)("div",{className:s.inputLabel,children:[t,":"]}),(0,j.jsx)("div",{className:s.inputWithCopy,children:(0,j.jsx)(h.Z,{value:r,readOnly:!0,endAdornment:(0,j.jsx)(p.Z,{position:"end",children:(0,j.jsx)(g(),{text:r,children:(0,j.jsx)(x.Z,{"aria-label":"copy",tooltip:"Copy",onClick:function(){},onMouseDown:function(){},edge:"end",children:(0,j.jsx)(f.TI,{})})})})})})]})})),w=t(47424),Z=(0,c.Z)((function(e){return(0,o.Z)({warningBlock:{color:"red",fontSize:".85rem",margin:".5rem 0 .5rem 0",display:"flex",alignItems:"center","& svg ":{marginRight:".3rem",height:16,width:16}},credentialTitle:{padding:".8rem 0 0 0",fontWeight:600,fontSize:".9rem"},buttonContainer:{textAlign:"right",marginTop:"1rem"},credentialsPanel:{overflowY:"auto",maxHeight:350},promptTitle:{display:"flex",alignItems:"center"},buttonSpacer:{marginRight:".9rem"},promptIcon:{marginRight:".1rem",display:"flex",alignItems:"center",height:"2rem",width:"2rem"}})}))((function(e){var n=e.classes,t=e.newServiceAccount,s=e.open,o=e.closeModal,c=e.entity;if(!t)return null;var h=l()(t,"console",null),p=l()(t,"idp",!1);return(0,j.jsx)(u.Z,{modalOpen:s,onClose:function(){o()},title:(0,j.jsx)("div",{className:n.promptTitle,children:(0,j.jsxs)("div",{children:["New ",c," Created"]})}),titleIcon:(0,j.jsx)(f.tV,{}),children:(0,j.jsxs)(m.ZP,{container:!0,children:[(0,j.jsxs)(m.ZP,{item:!0,xs:12,className:n.formScrollable,children:["A new ",c," has been created with the following details:",!p&&h&&(0,j.jsx)(a.Fragment,{children:(0,j.jsxs)(m.ZP,{item:!0,xs:12,className:n.credentialsPanel,children:[(0,j.jsx)("div",{className:n.credentialTitle,children:"Console Credentials"}),Array.isArray(h)&&h.map((function(e,n){return(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(b,{label:"Access Key",value:e.accessKey}),(0,j.jsx)(b,{label:"Secret Key",value:e.secretKey})]})})),!Array.isArray(h)&&(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(b,{label:"Access Key",value:h.accessKey}),(0,j.jsx)(b,{label:"Secret Key",value:h.secretKey})]})]})}),p?(0,j.jsx)("div",{className:n.warningBlock,children:"Please Login via the configured external identity provider."}):(0,j.jsxs)("div",{className:n.warningBlock,children:[(0,j.jsx)(w.Z,{}),(0,j.jsx)("span",{children:"Write these down, as this is the only time the secret will be displayed."})]})]}),(0,j.jsxs)(m.ZP,{item:!0,xs:12,className:n.buttonContainer,children:[(0,j.jsx)(d.Z,{id:"done-button",variant:"outlined",className:n.buttonSpacer,onClick:function(){o()},color:"primary",children:"Done"}),!p&&(0,j.jsx)(d.Z,{id:"download-button",onClick:function(){var e={};if(h)if(Array.isArray(h)){var n=h.map((function(e){return{url:e.url,access_key:e.accessKey,secret_key:e.secretKey,api:"s3v4",path:"auto"}}));e={console:(0,r.Z)(n)}}else e={console:[{url:h.url,access_key:h.accessKey,secret_key:h.secretKey,api:"s3v4",path:"auto"}]};!function(e,n){var t=document.createElement("a");t.setAttribute("href","data:text/plain;charset=utf-8,"+encodeURIComponent(n)),t.setAttribute("download",e),t.style.display="none",document.body.appendChild(t),t.click(),document.body.removeChild(t)}("credentials.json",JSON.stringify((0,i.Z)({},e)))},endIcon:(0,j.jsx)(f._8,{}),variant:"contained",color:"primary",children:"Download"})]})]})})}))}}]); +//# sourceMappingURL=1140.49ee98af.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/1140.35a12cb4.chunk.js.map b/portal-ui/build/static/js/1140.49ee98af.chunk.js.map similarity index 99% rename from portal-ui/build/static/js/1140.35a12cb4.chunk.js.map rename to portal-ui/build/static/js/1140.49ee98af.chunk.js.map index b9246bd07..4672e9c5c 100644 --- a/portal-ui/build/static/js/1140.35a12cb4.chunk.js.map +++ b/portal-ui/build/static/js/1140.49ee98af.chunk.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/1140.35a12cb4.chunk.js","mappings":"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","sources":["screens/Console/Common/CredentialsPrompt/CredentialItem.tsx","screens/Console/Common/CredentialsPrompt/CredentialsPrompt.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 { InputAdornment, OutlinedInput } from \"@mui/material\";\nimport BoxIconButton from \"../BoxIconButton/BoxIconButton\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport { CopyIcon } from \"../../../../icons\";\nimport { fieldBasic } from \"../FormComponents/common/styleLibrary\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n container: {\n display: \"flex\",\n flexFlow: \"column\",\n padding: \"20px 0 8px 0\",\n },\n inputWithCopy: {\n \"& .MuiInputBase-root \": {\n width: \"100%\",\n background: \"#FBFAFA\",\n \"& .MuiInputBase-input\": {\n height: \".8rem\",\n },\n \"& .MuiInputAdornment-positionEnd\": {\n marginRight: \".5rem\",\n \"& .MuiButtonBase-root\": {\n height: \"2rem\",\n },\n },\n },\n \"& .MuiButtonBase-root .min-icon\": {\n width: \".8rem\",\n height: \".8rem\",\n },\n },\n inputLabel: {\n ...fieldBasic.inputLabel,\n fontSize: \".8rem\",\n },\n });\n\nconst CredentialItem = ({\n label = \"\",\n value = \"\",\n classes = {},\n}: {\n label: string;\n value: string;\n classes: any;\n}) => {\n return (\n
\n
{label}:
\n
\n \n \n {}}\n onMouseDown={() => {}}\n edge=\"end\"\n >\n \n \n \n \n }\n />\n
\n
\n );\n};\n\nexport default withStyles(styles)(CredentialItem);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport get from \"lodash/get\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { NewServiceAccount } from \"./types\";\nimport { Button } from \"@mui/material\";\nimport ModalWrapper from \"../ModalWrapper/ModalWrapper\";\nimport Grid from \"@mui/material/Grid\";\nimport CredentialItem from \"./CredentialItem\";\nimport WarnIcon from \"../../../../icons/WarnIcon\";\nimport { DownloadIcon, ServiceAccountCredentialsIcon } from \"../../../../icons\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n warningBlock: {\n color: \"red\",\n fontSize: \".85rem\",\n margin: \".5rem 0 .5rem 0\",\n display: \"flex\",\n alignItems: \"center\",\n \"& svg \": {\n marginRight: \".3rem\",\n height: 16,\n width: 16,\n },\n },\n credentialTitle: {\n padding: \".8rem 0 0 0\",\n fontWeight: 600,\n fontSize: \".9rem\",\n },\n buttonContainer: {\n textAlign: \"right\",\n marginTop: \"1rem\",\n },\n credentialsPanel: {\n overflowY: \"auto\",\n maxHeight: 350,\n },\n promptTitle: {\n display: \"flex\",\n alignItems: \"center\",\n },\n buttonSpacer: {\n marginRight: \".9rem\",\n },\n promptIcon: {\n marginRight: \".1rem\",\n display: \"flex\",\n alignItems: \"center\",\n height: \"2rem\",\n width: \"2rem\",\n },\n });\n\ninterface ICredentialsPromptProps {\n classes: any;\n newServiceAccount: NewServiceAccount | null;\n open: boolean;\n entity: string;\n closeModal: () => void;\n}\n\nconst download = (filename: string, text: string) => {\n let element = document.createElement(\"a\");\n element.setAttribute(\n \"href\",\n \"data:text/plain;charset=utf-8,\" + encodeURIComponent(text)\n );\n element.setAttribute(\"download\", filename);\n\n element.style.display = \"none\";\n document.body.appendChild(element);\n\n element.click();\n document.body.removeChild(element);\n};\n\nconst CredentialsPrompt = ({\n classes,\n newServiceAccount,\n open,\n closeModal,\n entity,\n}: ICredentialsPromptProps) => {\n if (!newServiceAccount) {\n return null;\n }\n const consoleCreds = get(newServiceAccount, \"console\", null);\n const idp = get(newServiceAccount, \"idp\", false);\n\n return (\n {\n closeModal();\n }}\n title={\n
\n
New {entity} Created
\n
\n }\n titleIcon={}\n >\n \n \n A new {entity} has been created with the following details:\n {!idp && consoleCreds && (\n \n \n
\n Console Credentials\n
\n {Array.isArray(consoleCreds) &&\n consoleCreds.map((credentialsPair, index) => {\n return (\n <>\n \n \n \n );\n })}\n {!Array.isArray(consoleCreds) && (\n <>\n \n \n \n )}\n
\n
\n )}\n {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 {\n closeModal();\n }}\n color=\"primary\"\n >\n Done\n \n\n {!idp && (\n {\n let consoleExtras = {};\n\n if (consoleCreds) {\n if (!Array.isArray(consoleCreds)) {\n consoleExtras = {\n console: [\n {\n url: consoleCreds.url,\n access_key: consoleCreds.accessKey,\n secret_key: consoleCreds.secretKey,\n api: \"s3v4\",\n path: \"auto\",\n },\n ],\n };\n } else {\n const cCreds = consoleCreds.map((itemMap) => {\n return {\n url: itemMap.url,\n access_key: itemMap.accessKey,\n secret_key: itemMap.secretKey,\n api: \"s3v4\",\n path: \"auto\",\n };\n });\n\n consoleExtras = {\n console: [...cCreds],\n };\n }\n }\n\n download(\n \"credentials.json\",\n JSON.stringify({\n ...consoleExtras,\n })\n );\n }}\n endIcon={}\n variant=\"contained\"\n color=\"primary\"\n >\n Download\n \n )}\n \n
\n \n );\n};\n\nexport default withStyles(styles)(CredentialsPrompt);\n"],"names":["withStyles","theme","createStyles","container","display","flexFlow","padding","inputWithCopy","width","background","height","marginRight","inputLabel","fieldBasic","fontSize","label","value","classes","className","OutlinedInput","readOnly","endAdornment","InputAdornment","position","text","BoxIconButton","tooltip","onClick","onMouseDown","edge","warningBlock","color","margin","alignItems","credentialTitle","fontWeight","buttonContainer","textAlign","marginTop","credentialsPanel","overflowY","maxHeight","promptTitle","buttonSpacer","promptIcon","newServiceAccount","open","closeModal","entity","consoleCreds","get","idp","ModalWrapper","modalOpen","onClose","title","titleIcon","Grid","item","xs","formScrollable","Array","isArray","map","credentialsPair","index","accessKey","secretKey","WarnIcon","Button","id","variant","consoleExtras","cCreds","itemMap","url","access_key","secret_key","api","path","console","filename","element","document","createElement","setAttribute","encodeURIComponent","style","body","appendChild","click","removeChild","download","JSON","stringify","endIcon"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/1140.49ee98af.chunk.js","mappings":"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","sources":["screens/Console/Common/CredentialsPrompt/CredentialItem.tsx","screens/Console/Common/CredentialsPrompt/CredentialsPrompt.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 { InputAdornment, OutlinedInput } from \"@mui/material\";\nimport BoxIconButton from \"../BoxIconButton/BoxIconButton\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport { CopyIcon } from \"../../../../icons\";\nimport { fieldBasic } from \"../FormComponents/common/styleLibrary\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n container: {\n display: \"flex\",\n flexFlow: \"column\",\n padding: \"20px 0 8px 0\",\n },\n inputWithCopy: {\n \"& .MuiInputBase-root \": {\n width: \"100%\",\n background: \"#FBFAFA\",\n \"& .MuiInputBase-input\": {\n height: \".8rem\",\n },\n \"& .MuiInputAdornment-positionEnd\": {\n marginRight: \".5rem\",\n \"& .MuiButtonBase-root\": {\n height: \"2rem\",\n },\n },\n },\n \"& .MuiButtonBase-root .min-icon\": {\n width: \".8rem\",\n height: \".8rem\",\n },\n },\n inputLabel: {\n ...fieldBasic.inputLabel,\n fontSize: \".8rem\",\n },\n });\n\nconst CredentialItem = ({\n label = \"\",\n value = \"\",\n classes = {},\n}: {\n label: string;\n value: string;\n classes: any;\n}) => {\n return (\n
\n
{label}:
\n
\n \n \n {}}\n onMouseDown={() => {}}\n edge=\"end\"\n >\n \n \n \n \n }\n />\n
\n
\n );\n};\n\nexport default withStyles(styles)(CredentialItem);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport get from \"lodash/get\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { NewServiceAccount } from \"./types\";\nimport { Button } from \"@mui/material\";\nimport ModalWrapper from \"../ModalWrapper/ModalWrapper\";\nimport Grid from \"@mui/material/Grid\";\nimport CredentialItem from \"./CredentialItem\";\nimport WarnIcon from \"../../../../icons/WarnIcon\";\nimport { DownloadIcon, ServiceAccountCredentialsIcon } from \"../../../../icons\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n warningBlock: {\n color: \"red\",\n fontSize: \".85rem\",\n margin: \".5rem 0 .5rem 0\",\n display: \"flex\",\n alignItems: \"center\",\n \"& svg \": {\n marginRight: \".3rem\",\n height: 16,\n width: 16,\n },\n },\n credentialTitle: {\n padding: \".8rem 0 0 0\",\n fontWeight: 600,\n fontSize: \".9rem\",\n },\n buttonContainer: {\n textAlign: \"right\",\n marginTop: \"1rem\",\n },\n credentialsPanel: {\n overflowY: \"auto\",\n maxHeight: 350,\n },\n promptTitle: {\n display: \"flex\",\n alignItems: \"center\",\n },\n buttonSpacer: {\n marginRight: \".9rem\",\n },\n promptIcon: {\n marginRight: \".1rem\",\n display: \"flex\",\n alignItems: \"center\",\n height: \"2rem\",\n width: \"2rem\",\n },\n });\n\ninterface ICredentialsPromptProps {\n classes: any;\n newServiceAccount: NewServiceAccount | null;\n open: boolean;\n entity: string;\n closeModal: () => void;\n}\n\nconst download = (filename: string, text: string) => {\n let element = document.createElement(\"a\");\n element.setAttribute(\n \"href\",\n \"data:text/plain;charset=utf-8,\" + encodeURIComponent(text)\n );\n element.setAttribute(\"download\", filename);\n\n element.style.display = \"none\";\n document.body.appendChild(element);\n\n element.click();\n document.body.removeChild(element);\n};\n\nconst CredentialsPrompt = ({\n classes,\n newServiceAccount,\n open,\n closeModal,\n entity,\n}: ICredentialsPromptProps) => {\n if (!newServiceAccount) {\n return null;\n }\n const consoleCreds = get(newServiceAccount, \"console\", null);\n const idp = get(newServiceAccount, \"idp\", false);\n\n return (\n {\n closeModal();\n }}\n title={\n
\n
New {entity} Created
\n
\n }\n titleIcon={}\n >\n \n \n A new {entity} has been created with the following details:\n {!idp && consoleCreds && (\n \n \n
\n Console Credentials\n
\n {Array.isArray(consoleCreds) &&\n consoleCreds.map((credentialsPair, index) => {\n return (\n <>\n \n \n \n );\n })}\n {!Array.isArray(consoleCreds) && (\n <>\n \n \n \n )}\n
\n
\n )}\n {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 {\n closeModal();\n }}\n color=\"primary\"\n >\n Done\n \n\n {!idp && (\n {\n let consoleExtras = {};\n\n if (consoleCreds) {\n if (!Array.isArray(consoleCreds)) {\n consoleExtras = {\n console: [\n {\n url: consoleCreds.url,\n access_key: consoleCreds.accessKey,\n secret_key: consoleCreds.secretKey,\n api: \"s3v4\",\n path: \"auto\",\n },\n ],\n };\n } else {\n const cCreds = consoleCreds.map((itemMap) => {\n return {\n url: itemMap.url,\n access_key: itemMap.accessKey,\n secret_key: itemMap.secretKey,\n api: \"s3v4\",\n path: \"auto\",\n };\n });\n\n consoleExtras = {\n console: [...cCreds],\n };\n }\n }\n\n download(\n \"credentials.json\",\n JSON.stringify({\n ...consoleExtras,\n })\n );\n }}\n endIcon={}\n variant=\"contained\"\n color=\"primary\"\n >\n Download\n \n )}\n \n
\n \n );\n};\n\nexport default withStyles(styles)(CredentialsPrompt);\n"],"names":["withStyles","theme","createStyles","container","display","flexFlow","padding","inputWithCopy","width","background","height","marginRight","inputLabel","fieldBasic","fontSize","label","value","classes","className","OutlinedInput","readOnly","endAdornment","InputAdornment","position","text","BoxIconButton","tooltip","onClick","onMouseDown","edge","warningBlock","color","margin","alignItems","credentialTitle","fontWeight","buttonContainer","textAlign","marginTop","credentialsPanel","overflowY","maxHeight","promptTitle","buttonSpacer","promptIcon","newServiceAccount","open","closeModal","entity","consoleCreds","get","idp","ModalWrapper","modalOpen","onClose","title","titleIcon","Grid","item","xs","formScrollable","Array","isArray","map","credentialsPair","index","accessKey","secretKey","WarnIcon","Button","id","variant","consoleExtras","cCreds","itemMap","url","access_key","secret_key","api","path","console","filename","element","document","createElement","setAttribute","encodeURIComponent","style","body","appendChild","click","removeChild","download","JSON","stringify","endIcon"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/1233.9903fc82.chunk.js.map b/portal-ui/build/static/js/1233.9903fc82.chunk.js.map deleted file mode 100644 index 7555c9d74..000000000 --- a/portal-ui/build/static/js/1233.9903fc82.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/1233.9903fc82.chunk.js","mappings":"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","sources":["../node_modules/@mui/icons-material/ExpandLess.js","../node_modules/@mui/icons-material/ExpandMore.js","../node_modules/@mui/icons-material/WatchLater.js","../node_modules/@mui/icons-material/ZoomOutMap.js","../node_modules/@mui/material/Card/cardClasses.js","../node_modules/@mui/material/Card/Card.js","../node_modules/@mui/material/CardHeader/cardHeaderClasses.js","../node_modules/@mui/material/CardHeader/CardHeader.js","../node_modules/@mui/material/DialogActions/dialogActionsClasses.js","../node_modules/@mui/material/DialogActions/DialogActions.js","../node_modules/@mui/material/InputAdornment/inputAdornmentClasses.js","../node_modules/@mui/material/InputAdornment/InputAdornment.js","../node_modules/@mui/material/ListItemButton/ListItemButton.js","../node_modules/@mui/material/ListSubheader/listSubheaderClasses.js","../node_modules/@mui/material/ListSubheader/ListSubheader.js","../node_modules/lodash/_arrayAggregator.js","../node_modules/lodash/_baseAggregator.js","../node_modules/lodash/_createAggregator.js","../node_modules/lodash/_getPrototype.js","../node_modules/lodash/groupBy.js","../node_modules/lodash/isPlainObject.js","../node_modules/lodash/maxBy.js","../node_modules/lodash/minBy.js","../node_modules/recharts/es6/cartesian/ErrorBar.js","../node_modules/recharts/es6/cartesian/Bar.js","../node_modules/recharts/es6/chart/BarChart.js","../node_modules/recharts/es6/shape/Polygon.js","../node_modules/recharts/es6/polar/PolarAngleAxis.js","../node_modules/recharts/es6/polar/PolarRadiusAxis.js","../node_modules/recharts/es6/chart/PieChart.js","../node_modules/recharts/es6/component/Cell.js","../node_modules/recharts/es6/polar/Pie.js"],"sourcesContent":["\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"m12 8-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z\"\n}), 'ExpandLess');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z\"\n}), 'ExpandMore');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\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');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"m15 3 2.3 2.3-2.89 2.87 1.42 1.42L18.7 6.7 21 9V3h-6zM3 9l2.3-2.3 2.87 2.89 1.42-1.42L6.7 5.3 9 3H3v6zm6 12-2.3-2.3 2.89-2.87-1.42-1.42L5.3 17.3 3 15v6h6zm12-6-2.3 2.3-2.87-2.89-1.42 1.42 2.89 2.87L15 21h6v-6z\"\n}), 'ZoomOutMap');\n\nexports.default = _default;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getCardUtilityClass(slot) {\n return generateUtilityClass('MuiCard', slot);\n}\nconst cardClasses = generateUtilityClasses('MuiCard', ['root']);\nexport default cardClasses;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"raised\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { chainPropTypes } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport Paper from '../Paper';\nimport { getCardUtilityClass } from './cardClasses';\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, getCardUtilityClass, classes);\n};\n\nconst CardRoot = styled(Paper, {\n name: 'MuiCard',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})(() => {\n return {\n overflow: 'hidden'\n };\n});\nconst Card = /*#__PURE__*/React.forwardRef(function Card(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiCard'\n });\n\n const {\n className,\n raised = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = _extends({}, props, {\n raised\n });\n\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(CardRoot, _extends({\n className: clsx(classes.root, className),\n elevation: raised ? 8 : undefined,\n ref: ref,\n ownerState: ownerState\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? Card.propTypes\n/* remove-proptypes */\n= {\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 /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * If `true`, the card will use raised styling.\n * @default false\n */\n raised: chainPropTypes(PropTypes.bool, props => {\n if (props.raised && props.variant === 'outlined') {\n return new Error('MUI: Combining `raised={true}` with `variant=\"outlined\"` has no effect.');\n }\n\n return null;\n }),\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 Card;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getCardHeaderUtilityClass(slot) {\n return generateUtilityClass('MuiCardHeader', slot);\n}\nconst cardHeaderClasses = generateUtilityClasses('MuiCardHeader', ['root', 'avatar', 'action', 'content', 'title', 'subheader']);\nexport default cardHeaderClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"action\", \"avatar\", \"className\", \"component\", \"disableTypography\", \"subheader\", \"subheaderTypographyProps\", \"title\", \"titleTypographyProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport Typography from '../Typography';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport cardHeaderClasses, { getCardHeaderUtilityClass } from './cardHeaderClasses';\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 avatar: ['avatar'],\n action: ['action'],\n content: ['content'],\n title: ['title'],\n subheader: ['subheader']\n };\n return composeClasses(slots, getCardHeaderUtilityClass, classes);\n};\n\nconst CardHeaderRoot = styled('div', {\n name: 'MuiCardHeader',\n slot: 'Root',\n overridesResolver: (props, styles) => _extends({\n [`& .${cardHeaderClasses.title}`]: styles.title,\n [`& .${cardHeaderClasses.subheader}`]: styles.subheader\n }, styles.root)\n})({\n display: 'flex',\n alignItems: 'center',\n padding: 16\n});\nconst CardHeaderAvatar = styled('div', {\n name: 'MuiCardHeader',\n slot: 'Avatar',\n overridesResolver: (props, styles) => styles.avatar\n})({\n display: 'flex',\n flex: '0 0 auto',\n marginRight: 16\n});\nconst CardHeaderAction = styled('div', {\n name: 'MuiCardHeader',\n slot: 'Action',\n overridesResolver: (props, styles) => styles.action\n})({\n flex: '0 0 auto',\n alignSelf: 'flex-start',\n marginTop: -4,\n marginRight: -8,\n marginBottom: -4\n});\nconst CardHeaderContent = styled('div', {\n name: 'MuiCardHeader',\n slot: 'Content',\n overridesResolver: (props, styles) => styles.content\n})({\n flex: '1 1 auto'\n});\nconst CardHeader = /*#__PURE__*/React.forwardRef(function CardHeader(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiCardHeader'\n });\n\n const {\n action,\n avatar,\n className,\n component = 'div',\n disableTypography = false,\n subheader: subheaderProp,\n subheaderTypographyProps,\n title: titleProp,\n titleTypographyProps\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = _extends({}, props, {\n component,\n disableTypography\n });\n\n const classes = useUtilityClasses(ownerState);\n let title = titleProp;\n\n if (title != null && title.type !== Typography && !disableTypography) {\n title = /*#__PURE__*/_jsx(Typography, _extends({\n variant: avatar ? 'body2' : 'h5',\n className: classes.title,\n component: \"span\",\n display: \"block\"\n }, titleTypographyProps, {\n children: title\n }));\n }\n\n let subheader = subheaderProp;\n\n if (subheader != null && subheader.type !== Typography && !disableTypography) {\n subheader = /*#__PURE__*/_jsx(Typography, _extends({\n variant: avatar ? 'body2' : 'body1',\n className: classes.subheader,\n color: \"text.secondary\",\n component: \"span\",\n display: \"block\"\n }, subheaderTypographyProps, {\n children: subheader\n }));\n }\n\n return /*#__PURE__*/_jsxs(CardHeaderRoot, _extends({\n className: clsx(classes.root, className),\n as: component,\n ref: ref,\n ownerState: ownerState\n }, other, {\n children: [avatar && /*#__PURE__*/_jsx(CardHeaderAvatar, {\n className: classes.avatar,\n ownerState: ownerState,\n children: avatar\n }), /*#__PURE__*/_jsxs(CardHeaderContent, {\n className: classes.content,\n ownerState: ownerState,\n children: [title, subheader]\n }), action && /*#__PURE__*/_jsx(CardHeaderAction, {\n className: classes.action,\n ownerState: ownerState,\n children: action\n })]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? CardHeader.propTypes\n/* remove-proptypes */\n= {\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 /**\n * The action to display in the card header.\n */\n action: PropTypes.node,\n\n /**\n * The Avatar element to display.\n */\n avatar: PropTypes.node,\n\n /**\n * @ignore\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\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\n /* @typescript-to-proptypes-ignore */\n .elementType,\n\n /**\n * If `true`, `subheader` and `title` won't be wrapped by a Typography component.\n * This can be useful to render an alternative Typography variant by wrapping\n * the `title` text, and optional `subheader` text\n * with the Typography component.\n * @default false\n */\n disableTypography: PropTypes.bool,\n\n /**\n * The content of the component.\n */\n subheader: PropTypes.node,\n\n /**\n * These props will be forwarded to the subheader\n * (as long as disableTypography is not `true`).\n */\n subheaderTypographyProps: 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 /**\n * The content of the component.\n */\n title: PropTypes.node,\n\n /**\n * These props will be forwarded to the title\n * (as long as disableTypography is not `true`).\n */\n titleTypographyProps: PropTypes.object\n} : void 0;\nexport default CardHeader;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getDialogActionsUtilityClass(slot) {\n return generateUtilityClass('MuiDialogActions', slot);\n}\nconst dialogActionsClasses = generateUtilityClasses('MuiDialogActions', ['root', 'spacing']);\nexport default dialogActionsClasses;","import _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';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport { getDialogActionsUtilityClass } from './dialogActionsClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\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};\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\n const {\n className,\n disableSpacing = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = _extends({}, props, {\n disableSpacing\n });\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\n/* remove-proptypes */\n= {\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 /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * If `true`, the actions do not have additional margin.\n * @default false\n */\n disableSpacing: 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} : void 0;\nexport default DialogActions;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\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;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\n\nvar _span;\n\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';\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\";\n\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};\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};\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.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\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\n const muiFormControl = useFormControl() || {};\n let variant = variantProp;\n\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\n if (muiFormControl && !variant) {\n variant = muiFormControl.variant;\n }\n\n const ownerState = _extends({}, props, {\n hiddenLabel: muiFormControl.hiddenLabel,\n size: muiFormControl.size,\n disablePointerEvents,\n position,\n variant\n });\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' ?\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 })) : null, children]\n })\n }))\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? InputAdornment.propTypes\n/* remove-proptypes */\n= {\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 /**\n * The content of the component, normally an `IconButton` or string.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\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 /**\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 /**\n * If children is a string then disable wrapping in a Typography component.\n * @default false\n */\n disableTypography: PropTypes.bool,\n\n /**\n * The position this adornment should appear relative to the `Input`.\n */\n position: PropTypes.oneOf(['end', 'start']).isRequired,\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 * 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;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"alignItems\", \"autoFocus\", \"component\", \"children\", \"dense\", \"disableGutters\", \"divider\", \"focusVisibleClassName\", \"selected\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { alpha } from '@mui/system';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport ButtonBase from '../ButtonBase';\nimport useEnhancedEffect from '../utils/useEnhancedEffect';\nimport useForkRef from '../utils/useForkRef';\nimport ListContext from '../List/ListContext';\nimport listItemButtonClasses, { getListItemButtonUtilityClass } from './listItemButtonClasses';\nimport { jsx as _jsx } 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];\n};\n\nconst useUtilityClasses = ownerState => {\n const {\n alignItems,\n classes,\n dense,\n disabled,\n disableGutters,\n divider,\n selected\n } = ownerState;\n const slots = {\n root: ['root', dense && 'dense', !disableGutters && 'gutters', divider && 'divider', disabled && 'disabled', alignItems === 'flex-start' && 'alignItemsFlexStart', selected && 'selected']\n };\n const composedClasses = composeClasses(slots, getListItemButtonUtilityClass, classes);\n return _extends({}, classes, composedClasses);\n};\n\nconst ListItemButtonRoot = styled(ButtonBase, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiListItemButton',\n slot: 'Root',\n overridesResolver\n})(({\n theme,\n ownerState\n}) => _extends({\n display: 'flex',\n flexGrow: 1,\n justifyContent: 'flex-start',\n alignItems: 'center',\n position: 'relative',\n textDecoration: 'none',\n boxSizing: 'border-box',\n textAlign: 'left',\n paddingTop: 8,\n paddingBottom: 8,\n transition: theme.transitions.create('background-color', {\n duration: theme.transitions.duration.shortest\n }),\n '&:hover': {\n textDecoration: 'none',\n backgroundColor: theme.palette.action.hover,\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n },\n [`&.${listItemButtonClasses.selected}`]: {\n backgroundColor: alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity),\n [`&.${listItemButtonClasses.focusVisible}`]: {\n backgroundColor: alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n }\n },\n [`&.${listItemButtonClasses.selected}:hover`]: {\n backgroundColor: 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: alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity)\n }\n },\n [`&.${listItemButtonClasses.focusVisible}`]: {\n backgroundColor: theme.palette.action.focus\n },\n [`&.${listItemButtonClasses.disabled}`]: {\n opacity: theme.palette.action.disabledOpacity\n }\n}, ownerState.divider && {\n borderBottom: `1px solid ${theme.palette.divider}`,\n backgroundClip: 'padding-box'\n}, ownerState.alignItems === 'flex-start' && {\n alignItems: 'flex-start'\n}, !ownerState.disableGutters && {\n paddingLeft: 16,\n paddingRight: 16\n}, ownerState.dense && {\n paddingTop: 4,\n paddingBottom: 4\n}));\nconst ListItemButton = /*#__PURE__*/React.forwardRef(function ListItemButton(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiListItemButton'\n });\n\n const {\n alignItems = 'center',\n autoFocus = false,\n component = 'div',\n children,\n dense = false,\n disableGutters = false,\n divider = false,\n focusVisibleClassName,\n selected = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const context = React.useContext(ListContext);\n const childContext = {\n dense: dense || context.dense || false,\n alignItems,\n disableGutters\n };\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 ListItemButton whose component has not been rendered.');\n }\n }\n }, [autoFocus]);\n\n const ownerState = _extends({}, props, {\n alignItems,\n dense: childContext.dense,\n disableGutters,\n divider,\n selected\n });\n\n const classes = useUtilityClasses(ownerState);\n const handleRef = useForkRef(listItemRef, ref);\n return /*#__PURE__*/_jsx(ListContext.Provider, {\n value: childContext,\n children: /*#__PURE__*/_jsx(ListItemButtonRoot, _extends({\n ref: handleRef,\n component: component,\n focusVisibleClassName: clsx(classes.focusVisible, focusVisibleClassName),\n ownerState: ownerState\n }, other, {\n classes: classes,\n children: children\n }))\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? ListItemButton.propTypes\n/* remove-proptypes */\n= {\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 /**\n * Defines the `align-items` style property.\n * @default 'center'\n */\n alignItems: PropTypes.oneOf(['center', 'flex-start']),\n\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 */\n autoFocus: PropTypes.bool,\n\n /**\n * The content of the component if a `ListItemSecondaryAction` is used it must\n * be the last child.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\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 /**\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 /**\n * If `true`, the component is disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true`, the left and right padding is removed.\n * @default false\n */\n disableGutters: PropTypes.bool,\n\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 /**\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 /**\n * Use to apply selected styling.\n * @default false\n */\n selected: 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} : void 0;\nexport default ListItemButton;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getListSubheaderUtilityClass(slot) {\n return generateUtilityClass('MuiListSubheader', slot);\n}\nconst listSubheaderClasses = generateUtilityClasses('MuiListSubheader', ['root', 'colorPrimary', 'colorInherit', 'gutters', 'inset', 'sticky']);\nexport default listSubheaderClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"color\", \"component\", \"disableGutters\", \"disableSticky\", \"inset\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport capitalize from '../utils/capitalize';\nimport { getListSubheaderUtilityClass } from './listSubheaderClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\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};\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.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.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.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\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\n const ownerState = _extends({}, props, {\n color,\n component,\n disableGutters,\n disableSticky,\n inset\n });\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});\nprocess.env.NODE_ENV !== \"production\" ? ListSubheader.propTypes\n/* remove-proptypes */\n= {\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 /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\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 /**\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 /**\n * If `true`, the List Subheader will not have gutters.\n * @default false\n */\n disableGutters: PropTypes.bool,\n\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 /**\n * If `true`, the List Subheader is indented.\n * @default false\n */\n inset: 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} : void 0;\nexport default ListSubheader;","/**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n}\n\nmodule.exports = arrayAggregator;\n","var baseEach = require('./_baseEach');\n\n/**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n}\n\nmodule.exports = baseAggregator;\n","var arrayAggregator = require('./_arrayAggregator'),\n baseAggregator = require('./_baseAggregator'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray');\n\n/**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\nfunction createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, baseIteratee(iteratee, 2), accumulator);\n };\n}\n\nmodule.exports = createAggregator;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","var baseAssignValue = require('./_baseAssignValue'),\n createAggregator = require('./_createAggregator');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\nvar groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n});\n\nmodule.exports = groupBy;\n","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","var baseExtremum = require('./_baseExtremum'),\n baseGt = require('./_baseGt'),\n baseIteratee = require('./_baseIteratee');\n\n/**\n * This method is like `_.max` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\nfunction maxBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, baseIteratee(iteratee, 2), baseGt)\n : undefined;\n}\n\nmodule.exports = maxBy;\n","var baseExtremum = require('./_baseExtremum'),\n baseIteratee = require('./_baseIteratee'),\n baseLt = require('./_baseLt');\n\n/**\n * This method is like `_.min` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * // The `_.property` iteratee shorthand.\n * _.minBy(objects, 'n');\n * // => { 'n': 1 }\n */\nfunction minBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, baseIteratee(iteratee, 2), baseLt)\n : undefined;\n}\n\nmodule.exports = minBy;\n","function _extends() { _extends = Object.assign || 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); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\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); }\n\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; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\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\n/**\n * @fileOverview Render a group of error bar\n */\nimport React from 'react';\nimport { Layer } from '../container/Layer';\nimport { filterProps } from '../util/types';\nexport function ErrorBar(props) {\n var offset = props.offset,\n layout = props.layout,\n width = props.width,\n dataKey = props.dataKey,\n data = props.data,\n dataPointFormatter = props.dataPointFormatter,\n xAxis = props.xAxis,\n yAxis = props.yAxis,\n others = _objectWithoutProperties(props, [\"offset\", \"layout\", \"width\", \"dataKey\", \"data\", \"dataPointFormatter\", \"xAxis\", \"yAxis\"]);\n\n var svgProps = filterProps(others);\n var errorBars = data.map(function (entry, i) {\n var _dataPointFormatter = dataPointFormatter(entry, dataKey),\n x = _dataPointFormatter.x,\n y = _dataPointFormatter.y,\n value = _dataPointFormatter.value,\n errorVal = _dataPointFormatter.errorVal;\n\n if (!errorVal) {\n return null;\n }\n\n var lineCoordinates = [];\n var lowBound, highBound;\n\n if (Array.isArray(errorVal)) {\n var _errorVal = _slicedToArray(errorVal, 2);\n\n lowBound = _errorVal[0];\n highBound = _errorVal[1];\n } else {\n lowBound = highBound = errorVal;\n }\n\n if (layout === 'vertical') {\n // error bar for horizontal charts, the y is fixed, x is a range value\n var scale = xAxis.scale;\n var yMid = y + offset;\n var yMin = yMid + width;\n var yMax = yMid - width;\n var xMin = scale(value - lowBound);\n var xMax = scale(value + highBound); // the right line of |--|\n\n lineCoordinates.push({\n x1: xMax,\n y1: yMin,\n x2: xMax,\n y2: yMax\n }); // the middle line of |--|\n\n lineCoordinates.push({\n x1: xMin,\n y1: yMid,\n x2: xMax,\n y2: yMid\n }); // the left line of |--|\n\n lineCoordinates.push({\n x1: xMin,\n y1: yMin,\n x2: xMin,\n y2: yMax\n });\n } else if (layout === 'horizontal') {\n // error bar for horizontal charts, the x is fixed, y is a range value\n var _scale = yAxis.scale;\n var xMid = x + offset;\n\n var _xMin = xMid - width;\n\n var _xMax = xMid + width;\n\n var _yMin = _scale(value - lowBound);\n\n var _yMax = _scale(value + highBound); // the top line\n\n\n lineCoordinates.push({\n x1: _xMin,\n y1: _yMax,\n x2: _xMax,\n y2: _yMax\n }); // the middle line\n\n lineCoordinates.push({\n x1: xMid,\n y1: _yMin,\n x2: xMid,\n y2: _yMax\n }); // the bottom line\n\n lineCoordinates.push({\n x1: _xMin,\n y1: _yMin,\n x2: _xMax,\n y2: _yMin\n });\n }\n\n return (\n /*#__PURE__*/\n // eslint-disable-next-line react/no-array-index-key\n React.createElement(Layer, _extends({\n className: \"recharts-errorBar\",\n key: \"bar-\".concat(i)\n }, svgProps), lineCoordinates.map(function (coordinates, index) {\n return (\n /*#__PURE__*/\n // eslint-disable-next-line react/no-array-index-key\n React.createElement(\"line\", _extends({}, coordinates, {\n key: \"line-\".concat(index)\n }))\n );\n }))\n );\n });\n return /*#__PURE__*/React.createElement(Layer, {\n className: \"recharts-errorBars\"\n }, errorBars);\n}\nErrorBar.defaultProps = {\n stroke: 'black',\n strokeWidth: 1.5,\n width: 5,\n offset: 0,\n layout: 'horizontal'\n};\nErrorBar.displayName = 'ErrorBar';","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport _isNil from \"lodash/isNil\";\nimport _isEqual from \"lodash/isEqual\";\nimport _isFunction from \"lodash/isFunction\";\nimport _isArray from \"lodash/isArray\";\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 _extends() { _extends = Object.assign || 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); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (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 = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\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\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); 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 } }); 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; } 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\n/**\n * @fileOverview Render a group of bar\n */\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport Animate from 'react-smooth';\nimport { Rectangle } from '../shape/Rectangle';\nimport { Layer } from '../container/Layer';\nimport { ErrorBar } from './ErrorBar';\nimport { Cell } from '../component/Cell';\nimport { LabelList } from '../component/LabelList';\nimport { uniqueId, mathSign, interpolateNumber } from '../util/DataUtils';\nimport { findAllByType } from '../util/ReactUtils';\nimport { Global } from '../util/Global';\nimport { getCateCoordinateOfBar, getValueByDataKey, truncateByDomain, getBaseValueOfBar, findPositionOfBar, getTooltipItem } from '../util/ChartUtils';\nimport { filterProps, adaptEventsOfChild } from '../util/types';\nexport var Bar = /*#__PURE__*/function (_PureComponent) {\n _inherits(Bar, _PureComponent);\n\n var _super = _createSuper(Bar);\n\n function Bar() {\n var _this;\n\n _classCallCheck(this, Bar);\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 _this.state = {\n isAnimationFinished: false\n };\n _this.id = uniqueId('recharts-bar-');\n\n _this.handleAnimationEnd = function () {\n var onAnimationEnd = _this.props.onAnimationEnd;\n\n _this.setState({\n isAnimationFinished: true\n });\n\n if (onAnimationEnd) {\n onAnimationEnd();\n }\n };\n\n _this.handleAnimationStart = function () {\n var onAnimationStart = _this.props.onAnimationStart;\n\n _this.setState({\n isAnimationFinished: false\n });\n\n if (onAnimationStart) {\n onAnimationStart();\n }\n };\n\n return _this;\n }\n\n _createClass(Bar, [{\n key: \"renderRectanglesStatically\",\n value: function renderRectanglesStatically(data) {\n var _this2 = this;\n\n var shape = this.props.shape;\n var baseProps = filterProps(this.props);\n return data && data.map(function (entry, i) {\n var props = _objectSpread(_objectSpread(_objectSpread({}, baseProps), entry), {}, {\n index: i\n });\n\n return /*#__PURE__*/React.createElement(Layer, _extends({\n className: \"recharts-bar-rectangle\"\n }, adaptEventsOfChild(_this2.props, entry, i), {\n key: \"rectangle-\".concat(i) // eslint-disable-line react/no-array-index-key\n\n }), Bar.renderRectangle(shape, props));\n });\n }\n }, {\n key: \"renderRectanglesWithAnimation\",\n value: function renderRectanglesWithAnimation() {\n var _this3 = this;\n\n var _this$props = this.props,\n data = _this$props.data,\n layout = _this$props.layout,\n isAnimationActive = _this$props.isAnimationActive,\n animationBegin = _this$props.animationBegin,\n animationDuration = _this$props.animationDuration,\n animationEasing = _this$props.animationEasing,\n animationId = _this$props.animationId;\n var prevData = this.state.prevData;\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: \"bar-\".concat(animationId),\n onAnimationEnd: this.handleAnimationEnd,\n onAnimationStart: this.handleAnimationStart\n }, function (_ref) {\n var t = _ref.t;\n var stepData = data.map(function (entry, index) {\n var prev = prevData && prevData[index];\n\n if (prev) {\n var interpolatorX = interpolateNumber(prev.x, entry.x);\n var interpolatorY = interpolateNumber(prev.y, entry.y);\n var interpolatorWidth = interpolateNumber(prev.width, entry.width);\n var interpolatorHeight = interpolateNumber(prev.height, entry.height);\n return _objectSpread(_objectSpread({}, entry), {}, {\n x: interpolatorX(t),\n y: interpolatorY(t),\n width: interpolatorWidth(t),\n height: interpolatorHeight(t)\n });\n }\n\n if (layout === 'horizontal') {\n var _interpolatorHeight = interpolateNumber(0, entry.height);\n\n var h = _interpolatorHeight(t);\n\n return _objectSpread(_objectSpread({}, entry), {}, {\n y: entry.y + entry.height - h,\n height: h\n });\n }\n\n var interpolator = interpolateNumber(0, entry.width);\n var w = interpolator(t);\n return _objectSpread(_objectSpread({}, entry), {}, {\n width: w\n });\n });\n return /*#__PURE__*/React.createElement(Layer, null, _this3.renderRectanglesStatically(stepData));\n });\n }\n }, {\n key: \"renderRectangles\",\n value: function renderRectangles() {\n var _this$props2 = this.props,\n data = _this$props2.data,\n isAnimationActive = _this$props2.isAnimationActive;\n var prevData = this.state.prevData;\n\n if (isAnimationActive && data && data.length && (!prevData || !_isEqual(prevData, data))) {\n return this.renderRectanglesWithAnimation();\n }\n\n return this.renderRectanglesStatically(data);\n }\n }, {\n key: \"renderBackground\",\n value: function renderBackground() {\n var _this4 = this;\n\n var data = this.props.data;\n var backgroundProps = filterProps(this.props.background);\n return data.map(function (entry, i) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var value = entry.value,\n background = entry.background,\n rest = _objectWithoutProperties(entry, [\"value\", \"background\"]);\n\n if (!background) {\n return null;\n }\n\n var props = _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, rest), {}, {\n fill: '#eee'\n }, background), backgroundProps), adaptEventsOfChild(_this4.props, entry, i)), {}, {\n index: i,\n key: \"background-bar-\".concat(i),\n className: 'recharts-bar-background-rectangle'\n });\n\n return Bar.renderRectangle(_this4.props.background, props);\n });\n }\n }, {\n key: \"renderErrorBar\",\n value: function renderErrorBar() {\n if (this.props.isAnimationActive && !this.state.isAnimationFinished) {\n return null;\n }\n\n var _this$props3 = this.props,\n data = _this$props3.data,\n xAxis = _this$props3.xAxis,\n yAxis = _this$props3.yAxis,\n layout = _this$props3.layout,\n children = _this$props3.children;\n var errorBarItems = findAllByType(children, ErrorBar.displayName);\n\n if (!errorBarItems) {\n return null;\n }\n\n var offset = layout === 'vertical' ? data[0].height / 2 : data[0].width / 2;\n\n function dataPointFormatter(dataPoint, dataKey) {\n return {\n x: dataPoint.x,\n y: dataPoint.y,\n value: dataPoint.value,\n errorVal: getValueByDataKey(dataPoint, dataKey)\n };\n }\n\n return errorBarItems.map(function (item, i) {\n return /*#__PURE__*/React.cloneElement(item, {\n key: \"error-bar-\".concat(i),\n // eslint-disable-line react/no-array-index-key\n data: data,\n xAxis: xAxis,\n yAxis: yAxis,\n layout: layout,\n offset: offset,\n dataPointFormatter: dataPointFormatter\n });\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props4 = this.props,\n hide = _this$props4.hide,\n data = _this$props4.data,\n className = _this$props4.className,\n xAxis = _this$props4.xAxis,\n yAxis = _this$props4.yAxis,\n left = _this$props4.left,\n top = _this$props4.top,\n width = _this$props4.width,\n height = _this$props4.height,\n isAnimationActive = _this$props4.isAnimationActive,\n background = _this$props4.background,\n id = _this$props4.id;\n\n if (hide || !data || !data.length) {\n return null;\n }\n\n var isAnimationFinished = this.state.isAnimationFinished;\n var layerClass = classNames('recharts-bar', className);\n var needClip = xAxis && xAxis.allowDataOverflow || yAxis && yAxis.allowDataOverflow;\n var clipPathId = _isNil(id) ? this.id : id;\n return /*#__PURE__*/React.createElement(Layer, {\n className: layerClass\n }, needClip ? /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clipPath-\".concat(clipPathId)\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: left,\n y: top,\n width: width,\n height: height\n }))) : null, /*#__PURE__*/React.createElement(Layer, {\n className: \"recharts-bar-rectangles\",\n clipPath: needClip ? \"url(#clipPath-\".concat(clipPathId, \")\") : null\n }, background ? this.renderBackground() : null, this.renderRectangles()), this.renderErrorBar(), (!isAnimationActive || isAnimationFinished) && LabelList.renderCallByParent(this.props, data));\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.animationId !== prevState.prevAnimationId) {\n return {\n prevAnimationId: nextProps.animationId,\n curData: nextProps.data,\n prevData: prevState.curData\n };\n }\n\n if (nextProps.data !== prevState.curData) {\n return {\n curData: nextProps.data\n };\n }\n\n return null;\n }\n }, {\n key: \"renderRectangle\",\n value: function renderRectangle(option, props) {\n var rectangle;\n\n if ( /*#__PURE__*/React.isValidElement(option)) {\n rectangle = /*#__PURE__*/React.cloneElement(option, props);\n } else if (_isFunction(option)) {\n rectangle = option(props);\n } else {\n rectangle = /*#__PURE__*/React.createElement(Rectangle, props);\n }\n\n return rectangle;\n }\n }]);\n\n return Bar;\n}(PureComponent);\nBar.displayName = 'Bar';\nBar.defaultProps = {\n xAxisId: 0,\n yAxisId: 0,\n legendType: 'rect',\n minPointSize: 0,\n hide: false,\n // data of bar\n data: [],\n layout: 'vertical',\n isAnimationActive: !Global.isSsr,\n animationBegin: 0,\n animationDuration: 400,\n animationEasing: 'ease'\n};\n\nBar.getComposedData = function (_ref2) {\n var props = _ref2.props,\n item = _ref2.item,\n barPosition = _ref2.barPosition,\n bandSize = _ref2.bandSize,\n xAxis = _ref2.xAxis,\n yAxis = _ref2.yAxis,\n xAxisTicks = _ref2.xAxisTicks,\n yAxisTicks = _ref2.yAxisTicks,\n stackedData = _ref2.stackedData,\n dataStartIndex = _ref2.dataStartIndex,\n displayedData = _ref2.displayedData,\n offset = _ref2.offset;\n var pos = findPositionOfBar(barPosition, item);\n\n if (!pos) {\n return null;\n }\n\n var layout = props.layout;\n var _item$props = item.props,\n dataKey = _item$props.dataKey,\n children = _item$props.children,\n minPointSize = _item$props.minPointSize;\n var numericAxis = layout === 'horizontal' ? yAxis : xAxis;\n var stackedDomain = stackedData ? numericAxis.scale.domain() : null;\n var baseValue = getBaseValueOfBar({\n numericAxis: numericAxis\n });\n var cells = findAllByType(children, Cell.displayName);\n var rects = displayedData.map(function (entry, index) {\n var value, x, y, width, height, background;\n\n if (stackedData) {\n value = truncateByDomain(stackedData[dataStartIndex + index], stackedDomain);\n } else {\n value = getValueByDataKey(entry, dataKey);\n\n if (!_isArray(value)) {\n value = [baseValue, value];\n }\n }\n\n if (layout === 'horizontal') {\n x = getCateCoordinateOfBar({\n axis: xAxis,\n ticks: xAxisTicks,\n bandSize: bandSize,\n offset: pos.offset,\n entry: entry,\n index: index\n });\n y = yAxis.scale(value[1]);\n width = pos.size;\n height = yAxis.scale(value[0]) - yAxis.scale(value[1]);\n background = {\n x: x,\n y: yAxis.y,\n width: width,\n height: yAxis.height\n };\n\n if (Math.abs(minPointSize) > 0 && Math.abs(height) < Math.abs(minPointSize)) {\n var delta = mathSign(height || minPointSize) * (Math.abs(minPointSize) - Math.abs(height));\n y -= delta;\n height += delta;\n }\n } else {\n x = xAxis.scale(value[0]);\n y = getCateCoordinateOfBar({\n axis: yAxis,\n ticks: yAxisTicks,\n bandSize: bandSize,\n offset: pos.offset,\n entry: entry,\n index: index\n });\n width = xAxis.scale(value[1]) - xAxis.scale(value[0]);\n height = pos.size;\n background = {\n x: xAxis.x,\n y: y,\n width: xAxis.width,\n height: height\n };\n\n if (Math.abs(minPointSize) > 0 && Math.abs(width) < Math.abs(minPointSize)) {\n var _delta = mathSign(width || minPointSize) * (Math.abs(minPointSize) - Math.abs(width));\n\n width += _delta;\n }\n }\n\n return _objectSpread(_objectSpread(_objectSpread({}, entry), {}, {\n x: x,\n y: y,\n width: width,\n height: height,\n value: stackedData ? value : value[1],\n payload: entry,\n background: background\n }, cells && cells[index] && cells[index].props), {}, {\n tooltipPayload: [getTooltipItem(item, entry)],\n tooltipPosition: {\n x: x + width / 2,\n y: y + height / 2\n }\n });\n });\n return _objectSpread({\n data: rects,\n layout: layout\n }, offset);\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});","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || 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); }\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); 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 } }); 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; } 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 _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\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.\"); }\n\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); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\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; }\n\n/**\n * @fileOverview Polygon\n */\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { filterProps } from '../util/types';\n\nvar isValidatePoint = function isValidatePoint(point) {\n return point && point.x === +point.x && point.y === +point.y;\n};\n\nvar getParsedPoints = function getParsedPoints() {\n var points = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var segmentPoints = [[]];\n points.forEach(function (entry) {\n if (isValidatePoint(entry)) {\n segmentPoints[segmentPoints.length - 1].push(entry);\n } else if (segmentPoints[segmentPoints.length - 1].length > 0) {\n // add another path\n segmentPoints.push([]);\n }\n });\n\n if (isValidatePoint(points[0])) {\n segmentPoints[segmentPoints.length - 1].push(points[0]);\n }\n\n if (segmentPoints[segmentPoints.length - 1].length <= 0) {\n segmentPoints = segmentPoints.slice(0, -1);\n }\n\n return segmentPoints;\n};\n\nvar getSinglePolygonPath = function getSinglePolygonPath(points, connectNulls) {\n var segmentPoints = getParsedPoints(points);\n\n if (connectNulls) {\n segmentPoints = [segmentPoints.reduce(function (res, segPoints) {\n return [].concat(_toConsumableArray(res), _toConsumableArray(segPoints));\n }, [])];\n }\n\n var polygonPath = segmentPoints.map(function (segPoints) {\n return segPoints.reduce(function (path, point, index) {\n return \"\".concat(path).concat(index === 0 ? 'M' : 'L').concat(point.x, \",\").concat(point.y);\n }, '');\n }).join('');\n return segmentPoints.length === 1 ? \"\".concat(polygonPath, \"Z\") : polygonPath;\n};\n\nvar getRanglePath = function getRanglePath(points, baseLinePoints, connectNulls) {\n var outerPath = getSinglePolygonPath(points, connectNulls);\n return \"\".concat(outerPath.slice(-1) === 'Z' ? outerPath.slice(0, -1) : outerPath, \"L\").concat(getSinglePolygonPath(baseLinePoints.reverse(), connectNulls).slice(1));\n};\n\nexport var Polygon = /*#__PURE__*/function (_PureComponent) {\n _inherits(Polygon, _PureComponent);\n\n var _super = _createSuper(Polygon);\n\n function Polygon() {\n _classCallCheck(this, Polygon);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Polygon, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n points = _this$props.points,\n className = _this$props.className,\n baseLinePoints = _this$props.baseLinePoints,\n connectNulls = _this$props.connectNulls,\n others = _objectWithoutProperties(_this$props, [\"points\", \"className\", \"baseLinePoints\", \"connectNulls\"]);\n\n if (!points || !points.length) {\n return null;\n }\n\n var layerClass = classNames('recharts-polygon', className);\n\n if (baseLinePoints && baseLinePoints.length) {\n var hasStroke = others.stroke && others.stroke !== 'none';\n var rangePath = getRanglePath(points, baseLinePoints, connectNulls);\n return /*#__PURE__*/React.createElement(\"g\", {\n className: layerClass\n }, /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(others, true), {\n fill: rangePath.slice(-1) === 'Z' ? others.fill : 'none',\n stroke: \"none\",\n d: rangePath\n })), hasStroke ? /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(others, true), {\n fill: \"none\",\n d: getSinglePolygonPath(points, connectNulls)\n })) : null, hasStroke ? /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(others, true), {\n fill: \"none\",\n d: getSinglePolygonPath(baseLinePoints, connectNulls)\n })) : null);\n }\n\n var singlePath = getSinglePolygonPath(points, connectNulls);\n return /*#__PURE__*/React.createElement(\"path\", _extends({}, filterProps(others, true), {\n fill: singlePath.slice(-1) === 'Z' ? others.fill : 'none',\n className: layerClass,\n d: singlePath\n }));\n }\n }]);\n\n return Polygon;\n}(PureComponent);","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport _isFunction from \"lodash/isFunction\";\n\nfunction _extends() { _extends = Object.assign || 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); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (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 = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\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\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); 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 } }); 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; } 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\n/**\n * @fileOverview Axis of radial direction\n */\nimport React, { PureComponent } from 'react';\nimport { Layer } from '../container/Layer';\nimport { Dot } from '../shape/Dot';\nimport { Polygon } from '../shape/Polygon';\nimport { Text } from '../component/Text';\nimport { filterProps, adaptEventsOfChild } from '../util/types';\nimport { polarToCartesian } from '../util/PolarUtils';\nvar RADIAN = Math.PI / 180;\nvar eps = 1e-5;\nexport var PolarAngleAxis = /*#__PURE__*/function (_PureComponent) {\n _inherits(PolarAngleAxis, _PureComponent);\n\n var _super = _createSuper(PolarAngleAxis);\n\n function PolarAngleAxis() {\n _classCallCheck(this, PolarAngleAxis);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(PolarAngleAxis, [{\n key: \"getTickLineCoord\",\n value:\n /**\n * Calculate the coordinate of line endpoint\n * @param {Object} data The Data if ticks\n * @return {Object} (x0, y0): The start point of text,\n * (x1, y1): The end point close to text,\n * (x2, y2): The end point close to axis\n */\n function getTickLineCoord(data) {\n var _this$props = this.props,\n cx = _this$props.cx,\n cy = _this$props.cy,\n radius = _this$props.radius,\n orientation = _this$props.orientation,\n tickSize = _this$props.tickSize;\n var tickLineSize = tickSize || 8;\n var p1 = polarToCartesian(cx, cy, radius, data.coordinate);\n var p2 = polarToCartesian(cx, cy, radius + (orientation === 'inner' ? -1 : 1) * tickLineSize, data.coordinate);\n return {\n x1: p1.x,\n y1: p1.y,\n x2: p2.x,\n y2: p2.y\n };\n }\n /**\n * Get the text-anchor of each tick\n * @param {Object} data Data of ticks\n * @return {String} text-anchor\n */\n\n }, {\n key: \"getTickTextAnchor\",\n value: function getTickTextAnchor(data) {\n var orientation = this.props.orientation;\n var cos = Math.cos(-data.coordinate * RADIAN);\n var textAnchor;\n\n if (cos > eps) {\n textAnchor = orientation === 'outer' ? 'start' : 'end';\n } else if (cos < -eps) {\n textAnchor = orientation === 'outer' ? 'end' : 'start';\n } else {\n textAnchor = 'middle';\n }\n\n return textAnchor;\n }\n }, {\n key: \"renderAxisLine\",\n value: function renderAxisLine() {\n var _this$props2 = this.props,\n cx = _this$props2.cx,\n cy = _this$props2.cy,\n radius = _this$props2.radius,\n axisLine = _this$props2.axisLine,\n axisLineType = _this$props2.axisLineType;\n\n var props = _objectSpread(_objectSpread({}, filterProps(this.props)), {}, {\n fill: 'none'\n }, filterProps(axisLine));\n\n if (axisLineType === 'circle') {\n return /*#__PURE__*/React.createElement(Dot, _extends({\n className: \"recharts-polar-angle-axis-line\"\n }, props, {\n cx: cx,\n cy: cy,\n r: radius\n }));\n }\n\n var ticks = this.props.ticks;\n var points = ticks.map(function (entry) {\n return polarToCartesian(cx, cy, radius, entry.coordinate);\n });\n return /*#__PURE__*/React.createElement(Polygon, _extends({\n className: \"recharts-polar-angle-axis-line\"\n }, props, {\n points: points\n }));\n }\n }, {\n key: \"renderTicks\",\n value: function renderTicks() {\n var _this = this;\n\n var _this$props3 = this.props,\n ticks = _this$props3.ticks,\n tick = _this$props3.tick,\n tickLine = _this$props3.tickLine,\n tickFormatter = _this$props3.tickFormatter,\n stroke = _this$props3.stroke;\n var axisProps = filterProps(this.props);\n var customTickProps = filterProps(tick);\n\n var tickLineProps = _objectSpread(_objectSpread({}, axisProps), {}, {\n fill: 'none'\n }, filterProps(tickLine));\n\n var items = ticks.map(function (entry, i) {\n var lineCoord = _this.getTickLineCoord(entry);\n\n var textAnchor = _this.getTickTextAnchor(entry);\n\n var tickProps = _objectSpread(_objectSpread(_objectSpread({\n textAnchor: textAnchor\n }, axisProps), {}, {\n stroke: 'none',\n fill: stroke\n }, customTickProps), {}, {\n index: i,\n payload: entry,\n x: lineCoord.x2,\n y: lineCoord.y2\n });\n\n return /*#__PURE__*/React.createElement(Layer, _extends({\n className: \"recharts-polar-angle-axis-tick\",\n key: \"tick-\".concat(i) // eslint-disable-line react/no-array-index-key\n\n }, adaptEventsOfChild(_this.props, entry, i)), tickLine && /*#__PURE__*/React.createElement(\"line\", _extends({\n className: \"recharts-polar-angle-axis-tick-line\"\n }, tickLineProps, lineCoord)), tick && PolarAngleAxis.renderTickItem(tick, tickProps, tickFormatter ? tickFormatter(entry.value, i) : entry.value));\n });\n return /*#__PURE__*/React.createElement(Layer, {\n className: \"recharts-polar-angle-axis-ticks\"\n }, items);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props4 = this.props,\n ticks = _this$props4.ticks,\n radius = _this$props4.radius,\n axisLine = _this$props4.axisLine;\n\n if (radius <= 0 || !ticks || !ticks.length) {\n return null;\n }\n\n return /*#__PURE__*/React.createElement(Layer, {\n className: \"recharts-polar-angle-axis\"\n }, axisLine && this.renderAxisLine(), this.renderTicks());\n }\n }], [{\n key: \"renderTickItem\",\n value: function renderTickItem(option, props, value) {\n var tickItem;\n\n if ( /*#__PURE__*/React.isValidElement(option)) {\n tickItem = /*#__PURE__*/React.cloneElement(option, props);\n } else if (_isFunction(option)) {\n tickItem = option(props);\n } else {\n tickItem = /*#__PURE__*/React.createElement(Text, _extends({}, props, {\n className: \"recharts-polar-angle-axis-tick-value\"\n }), value);\n }\n\n return tickItem;\n }\n }]);\n\n return PolarAngleAxis;\n}(PureComponent);\nPolarAngleAxis.displayName = 'PolarAngleAxis';\nPolarAngleAxis.axisType = 'angleAxis';\nPolarAngleAxis.defaultProps = {\n type: 'category',\n angleAxisId: 0,\n scale: 'auto',\n cx: 0,\n cy: 0,\n domain: [0, 'auto'],\n orientation: 'outer',\n axisLine: true,\n tickLine: true,\n tickSize: 8,\n tick: true,\n hide: false,\n allowDuplicatedCategory: true\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport _isFunction from \"lodash/isFunction\";\nimport _minBy from \"lodash/minBy\";\nimport _maxBy from \"lodash/maxBy\";\n\nfunction _extends() { _extends = Object.assign || 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); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (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 = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\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\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); 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 } }); 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; } 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\n/**\n * @fileOverview The axis of polar coordinate system\n */\nimport React, { PureComponent } from 'react';\nimport { Text } from '../component/Text';\nimport { Label } from '../component/Label';\nimport { Layer } from '../container/Layer';\nimport { polarToCartesian } from '../util/PolarUtils';\nimport { filterProps, adaptEventsOfChild } from '../util/types';\nexport var PolarRadiusAxis = /*#__PURE__*/function (_PureComponent) {\n _inherits(PolarRadiusAxis, _PureComponent);\n\n var _super = _createSuper(PolarRadiusAxis);\n\n function PolarRadiusAxis() {\n _classCallCheck(this, PolarRadiusAxis);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(PolarRadiusAxis, [{\n key: \"getTickValueCoord\",\n value:\n /**\n * Calculate the coordinate of tick\n * @param {Number} coordinate The radius of tick\n * @return {Object} (x, y)\n */\n function getTickValueCoord(_ref) {\n var coordinate = _ref.coordinate;\n var _this$props = this.props,\n angle = _this$props.angle,\n cx = _this$props.cx,\n cy = _this$props.cy;\n return polarToCartesian(cx, cy, coordinate, angle);\n }\n }, {\n key: \"getTickTextAnchor\",\n value: function getTickTextAnchor() {\n var orientation = this.props.orientation;\n var textAnchor;\n\n switch (orientation) {\n case 'left':\n textAnchor = 'end';\n break;\n\n case 'right':\n textAnchor = 'start';\n break;\n\n default:\n textAnchor = 'middle';\n break;\n }\n\n return textAnchor;\n }\n }, {\n key: \"getViewBox\",\n value: function getViewBox() {\n var _this$props2 = this.props,\n cx = _this$props2.cx,\n cy = _this$props2.cy,\n angle = _this$props2.angle,\n ticks = _this$props2.ticks;\n\n var maxRadiusTick = _maxBy(ticks, function (entry) {\n return entry.coordinate || 0;\n });\n\n var minRadiusTick = _minBy(ticks, function (entry) {\n return entry.coordinate || 0;\n });\n\n return {\n cx: cx,\n cy: cy,\n startAngle: angle,\n endAngle: angle,\n innerRadius: minRadiusTick.coordinate || 0,\n outerRadius: maxRadiusTick.coordinate || 0\n };\n }\n }, {\n key: \"renderAxisLine\",\n value: function renderAxisLine() {\n var _this$props3 = this.props,\n cx = _this$props3.cx,\n cy = _this$props3.cy,\n angle = _this$props3.angle,\n ticks = _this$props3.ticks,\n axisLine = _this$props3.axisLine,\n others = _objectWithoutProperties(_this$props3, [\"cx\", \"cy\", \"angle\", \"ticks\", \"axisLine\"]);\n\n var extent = ticks.reduce(function (result, entry) {\n return [Math.min(result[0], entry.coordinate), Math.max(result[1], entry.coordinate)];\n }, [Infinity, -Infinity]);\n var point0 = polarToCartesian(cx, cy, extent[0], angle);\n var point1 = polarToCartesian(cx, cy, extent[1], angle);\n\n var props = _objectSpread(_objectSpread(_objectSpread({}, filterProps(others)), {}, {\n fill: 'none'\n }, filterProps(axisLine)), {}, {\n x1: point0.x,\n y1: point0.y,\n x2: point1.x,\n y2: point1.y\n });\n\n return /*#__PURE__*/React.createElement(\"line\", _extends({\n className: \"recharts-polar-radius-axis-line\"\n }, props));\n }\n }, {\n key: \"renderTicks\",\n value: function renderTicks() {\n var _this = this;\n\n var _this$props4 = this.props,\n ticks = _this$props4.ticks,\n tick = _this$props4.tick,\n angle = _this$props4.angle,\n tickFormatter = _this$props4.tickFormatter,\n stroke = _this$props4.stroke,\n others = _objectWithoutProperties(_this$props4, [\"ticks\", \"tick\", \"angle\", \"tickFormatter\", \"stroke\"]);\n\n var textAnchor = this.getTickTextAnchor();\n var axisProps = filterProps(others);\n var customTickProps = filterProps(tick);\n var items = ticks.map(function (entry, i) {\n var coord = _this.getTickValueCoord(entry);\n\n var tickProps = _objectSpread(_objectSpread(_objectSpread(_objectSpread({\n textAnchor: textAnchor,\n transform: \"rotate(\".concat(90 - angle, \", \").concat(coord.x, \", \").concat(coord.y, \")\")\n }, axisProps), {}, {\n stroke: 'none',\n fill: stroke\n }, customTickProps), {}, {\n index: i\n }, coord), {}, {\n payload: entry\n });\n\n return /*#__PURE__*/React.createElement(Layer, _extends({\n className: \"recharts-polar-radius-axis-tick\",\n key: \"tick-\".concat(i) // eslint-disable-line react/no-array-index-key\n\n }, adaptEventsOfChild(_this.props, entry, i)), PolarRadiusAxis.renderTickItem(tick, tickProps, tickFormatter ? tickFormatter(entry.value, i) : entry.value));\n });\n return /*#__PURE__*/React.createElement(Layer, {\n className: \"recharts-polar-radius-axis-ticks\"\n }, items);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props5 = this.props,\n ticks = _this$props5.ticks,\n axisLine = _this$props5.axisLine,\n tick = _this$props5.tick;\n\n if (!ticks || !ticks.length) {\n return null;\n }\n\n return /*#__PURE__*/React.createElement(Layer, {\n className: \"recharts-polar-radius-axis\"\n }, axisLine && this.renderAxisLine(), tick && this.renderTicks(), Label.renderCallByParent(this.props, this.getViewBox()));\n }\n }], [{\n key: \"renderTickItem\",\n value: function renderTickItem(option, props, value) {\n var tickItem;\n\n if ( /*#__PURE__*/React.isValidElement(option)) {\n tickItem = /*#__PURE__*/React.cloneElement(option, props);\n } else if (_isFunction(option)) {\n tickItem = option(props);\n } else {\n tickItem = /*#__PURE__*/React.createElement(Text, _extends({}, props, {\n className: \"recharts-polar-radius-axis-tick-value\"\n }), value);\n }\n\n return tickItem;\n }\n }]);\n\n return PolarRadiusAxis;\n}(PureComponent);\nPolarRadiusAxis.displayName = 'PolarRadiusAxis';\nPolarRadiusAxis.axisType = 'radiusAxis';\nPolarRadiusAxis.defaultProps = {\n type: 'number',\n radiusAxisId: 0,\n cx: 0,\n cy: 0,\n angle: 0,\n orientation: 'right',\n stroke: '#ccc',\n axisLine: true,\n tick: true,\n tickCount: 5,\n domain: [0, 'auto'],\n allowDataOverflow: false,\n scale: 'auto',\n allowDuplicatedCategory: true\n};","/**\n * @fileOverview Pie Chart\n */\nimport { generateCategoricalChart } from './generateCategoricalChart';\nimport { PolarAngleAxis } from '../polar/PolarAngleAxis';\nimport { PolarRadiusAxis } from '../polar/PolarRadiusAxis';\nimport { formatAxisMap } from '../util/PolarUtils';\nimport { Pie } from '../polar/Pie';\nexport var PieChart = generateCategoricalChart({\n chartName: 'PieChart',\n GraphicalChild: Pie,\n validateTooltipEventTypes: ['item'],\n defaultTooltipEventType: 'item',\n legendContent: 'children',\n axisComponents: [{\n axisType: 'angleAxis',\n AxisComp: PolarAngleAxis\n }, {\n axisType: 'radiusAxis',\n AxisComp: PolarRadiusAxis\n }],\n formatAxisMap: formatAxisMap,\n defaultProps: {\n layout: 'centric',\n startAngle: 0,\n endAngle: 360,\n cx: '50%',\n cy: '50%',\n innerRadius: 0,\n outerRadius: '80%'\n }\n});","/**\n * @fileOverview Cross\n */\nexport var Cell = function Cell(_props) {\n return null;\n};\nCell.displayName = 'Cell';","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport _isEqual from \"lodash/isEqual\";\nimport _get from \"lodash/get\";\nimport _isPlainObject from \"lodash/isPlainObject\";\nimport _isFunction from \"lodash/isFunction\";\nimport _isNil from \"lodash/isNil\";\n\nfunction _extends() { _extends = Object.assign || 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); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (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 = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\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\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); 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 } }); 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; } 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\n/**\n * @fileOverview Render sectors of a pie\n */\nimport React, { PureComponent } from 'react';\nimport Animate from 'react-smooth';\nimport classNames from 'classnames';\nimport { Layer } from '../container/Layer';\nimport { Sector } from '../shape/Sector';\nimport { Curve } from '../shape/Curve';\nimport { Text } from '../component/Text';\nimport { Label } from '../component/Label';\nimport { LabelList } from '../component/LabelList';\nimport { Cell } from '../component/Cell';\nimport { findAllByType } from '../util/ReactUtils';\nimport { Global } from '../util/Global';\nimport { polarToCartesian, getMaxRadius } from '../util/PolarUtils';\nimport { isNumber, getPercentValue, mathSign, interpolateNumber, uniqueId } from '../util/DataUtils';\nimport { getValueByDataKey } from '../util/ChartUtils';\nimport { warn } from '../util/LogUtils';\nimport { filterProps, adaptEventsOfChild } from '../util/types';\nexport var Pie = /*#__PURE__*/function (_PureComponent) {\n _inherits(Pie, _PureComponent);\n\n var _super = _createSuper(Pie);\n\n function Pie(props) {\n var _this;\n\n _classCallCheck(this, Pie);\n\n _this = _super.call(this, props);\n _this.state = void 0;\n _this.id = uniqueId('recharts-pie-');\n\n _this.handleAnimationEnd = function () {\n var onAnimationEnd = _this.props.onAnimationEnd;\n\n _this.setState({\n isAnimationFinished: true\n });\n\n if (_isFunction(onAnimationEnd)) {\n onAnimationEnd();\n }\n };\n\n _this.handleAnimationStart = function () {\n var onAnimationStart = _this.props.onAnimationStart;\n\n _this.setState({\n isAnimationFinished: false\n });\n\n if (_isFunction(onAnimationStart)) {\n onAnimationStart();\n }\n };\n\n _this.state = {\n isAnimationFinished: !props.isAnimationActive,\n prevIsAnimationActive: props.isAnimationActive,\n prevAnimationId: props.animationId\n };\n return _this;\n }\n\n _createClass(Pie, [{\n key: \"isActiveIndex\",\n value: function isActiveIndex(i) {\n var activeIndex = this.props.activeIndex;\n\n if (Array.isArray(activeIndex)) {\n return activeIndex.indexOf(i) !== -1;\n }\n\n return i === activeIndex;\n }\n }, {\n key: \"renderLabels\",\n value: function renderLabels(sectors) {\n var isAnimationActive = this.props.isAnimationActive;\n\n if (isAnimationActive && !this.state.isAnimationFinished) {\n return null;\n }\n\n var _this$props = this.props,\n label = _this$props.label,\n labelLine = _this$props.labelLine,\n dataKey = _this$props.dataKey,\n valueKey = _this$props.valueKey;\n var pieProps = filterProps(this.props);\n var customLabelProps = filterProps(label);\n var customLabelLineProps = filterProps(labelLine);\n var offsetRadius = label && label.offsetRadius || 20;\n var labels = sectors.map(function (entry, i) {\n var midAngle = (entry.startAngle + entry.endAngle) / 2;\n var endPoint = polarToCartesian(entry.cx, entry.cy, entry.outerRadius + offsetRadius, midAngle);\n\n var labelProps = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, pieProps), entry), {}, {\n stroke: 'none'\n }, customLabelProps), {}, {\n index: i,\n textAnchor: Pie.getTextAnchor(endPoint.x, entry.cx)\n }, endPoint);\n\n var lineProps = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, pieProps), entry), {}, {\n fill: 'none',\n stroke: entry.fill\n }, customLabelLineProps), {}, {\n index: i,\n points: [polarToCartesian(entry.cx, entry.cy, entry.outerRadius, midAngle), endPoint],\n key: 'line'\n });\n\n var realDataKey = dataKey; // TODO: compatible to lower versions\n\n if (_isNil(dataKey) && _isNil(valueKey)) {\n realDataKey = 'value';\n } else if (_isNil(dataKey)) {\n realDataKey = valueKey;\n }\n\n return (\n /*#__PURE__*/\n // eslint-disable-next-line react/no-array-index-key\n React.createElement(Layer, {\n key: \"label-\".concat(i)\n }, labelLine && Pie.renderLabelLineItem(labelLine, lineProps), Pie.renderLabelItem(label, labelProps, getValueByDataKey(entry, realDataKey)))\n );\n });\n return /*#__PURE__*/React.createElement(Layer, {\n className: \"recharts-pie-labels\"\n }, labels);\n }\n }, {\n key: \"renderSectorsStatically\",\n value: function renderSectorsStatically(sectors) {\n var _this2 = this;\n\n var _this$props2 = this.props,\n activeShape = _this$props2.activeShape,\n blendStroke = _this$props2.blendStroke;\n return sectors.map(function (entry, i) {\n var sectorOptions = _this2.isActiveIndex(i) ? activeShape : null;\n\n var sectorProps = _objectSpread(_objectSpread({}, entry), {}, {\n stroke: blendStroke ? entry.fill : entry.stroke\n });\n\n return /*#__PURE__*/React.createElement(Layer, _extends({\n className: \"recharts-pie-sector\"\n }, adaptEventsOfChild(_this2.props, entry, i), {\n key: \"sector-\".concat(i) // eslint-disable-line react/no-array-index-key\n\n }), Pie.renderSectorItem(sectorOptions, sectorProps));\n });\n }\n }, {\n key: \"renderSectorsWithAnimation\",\n value: function renderSectorsWithAnimation() {\n var _this3 = this;\n\n var _this$props3 = this.props,\n sectors = _this$props3.sectors,\n isAnimationActive = _this$props3.isAnimationActive,\n animationBegin = _this$props3.animationBegin,\n animationDuration = _this$props3.animationDuration,\n animationEasing = _this$props3.animationEasing,\n animationId = _this$props3.animationId;\n var _this$state = this.state,\n prevSectors = _this$state.prevSectors,\n prevIsAnimationActive = _this$state.prevIsAnimationActive;\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: \"pie-\".concat(animationId, \"-\").concat(prevIsAnimationActive),\n onAnimationStart: this.handleAnimationStart,\n onAnimationEnd: this.handleAnimationEnd\n }, function (_ref) {\n var t = _ref.t;\n var stepData = [];\n var first = sectors && sectors[0];\n var curAngle = first.startAngle;\n sectors.forEach(function (entry, index) {\n var prev = prevSectors && prevSectors[index];\n var paddingAngle = index > 0 ? _get(entry, 'paddingAngle', 0) : 0;\n\n if (prev) {\n var angleIp = interpolateNumber(prev.endAngle - prev.startAngle, entry.endAngle - entry.startAngle);\n\n var latest = _objectSpread(_objectSpread({}, entry), {}, {\n startAngle: curAngle + paddingAngle,\n endAngle: curAngle + angleIp(t) + paddingAngle\n });\n\n stepData.push(latest);\n curAngle = latest.endAngle;\n } else {\n var endAngle = entry.endAngle,\n startAngle = entry.startAngle;\n var interpolatorAngle = interpolateNumber(0, endAngle - startAngle);\n var deltaAngle = interpolatorAngle(t);\n\n var _latest = _objectSpread(_objectSpread({}, entry), {}, {\n startAngle: curAngle + paddingAngle,\n endAngle: curAngle + deltaAngle + paddingAngle\n });\n\n stepData.push(_latest);\n curAngle = _latest.endAngle;\n }\n });\n return /*#__PURE__*/React.createElement(Layer, null, _this3.renderSectorsStatically(stepData));\n });\n }\n }, {\n key: \"renderSectors\",\n value: function renderSectors() {\n var _this$props4 = this.props,\n sectors = _this$props4.sectors,\n isAnimationActive = _this$props4.isAnimationActive;\n var prevSectors = this.state.prevSectors;\n\n if (isAnimationActive && sectors && sectors.length && (!prevSectors || !_isEqual(prevSectors, sectors))) {\n return this.renderSectorsWithAnimation();\n }\n\n return this.renderSectorsStatically(sectors);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props5 = this.props,\n hide = _this$props5.hide,\n sectors = _this$props5.sectors,\n className = _this$props5.className,\n label = _this$props5.label,\n cx = _this$props5.cx,\n cy = _this$props5.cy,\n innerRadius = _this$props5.innerRadius,\n outerRadius = _this$props5.outerRadius,\n isAnimationActive = _this$props5.isAnimationActive;\n var isAnimationFinished = this.state.isAnimationFinished;\n\n if (hide || !sectors || !sectors.length || !isNumber(cx) || !isNumber(cy) || !isNumber(innerRadius) || !isNumber(outerRadius)) {\n return null;\n }\n\n var layerClass = classNames('recharts-pie', className);\n return /*#__PURE__*/React.createElement(Layer, {\n className: layerClass\n }, this.renderSectors(), label && this.renderLabels(sectors), Label.renderCallByParent(this.props, null, false), (!isAnimationActive || isAnimationFinished) && LabelList.renderCallByParent(this.props, sectors, false));\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (prevState.prevIsAnimationActive !== nextProps.isAnimationActive) {\n return {\n prevIsAnimationActive: nextProps.isAnimationActive,\n prevAnimationId: nextProps.animationId,\n curSectors: nextProps.sectors,\n prevSectors: []\n };\n }\n\n if (nextProps.isAnimationActive && nextProps.animationId !== prevState.prevAnimationId) {\n return {\n prevAnimationId: nextProps.animationId,\n curSectors: nextProps.sectors,\n prevSectors: prevState.curSectors\n };\n }\n\n if (nextProps.sectors !== prevState.curSectors) {\n return {\n curSectors: nextProps.sectors\n };\n }\n\n return null;\n }\n }, {\n key: \"getTextAnchor\",\n value: function getTextAnchor(x, cx) {\n if (x > cx) {\n return 'start';\n }\n\n if (x < cx) {\n return 'end';\n }\n\n return 'middle';\n }\n }, {\n key: \"renderLabelLineItem\",\n value: function renderLabelLineItem(option, props) {\n if ( /*#__PURE__*/React.isValidElement(option)) {\n return /*#__PURE__*/React.cloneElement(option, props);\n }\n\n if (_isFunction(option)) {\n return option(props);\n }\n\n return /*#__PURE__*/React.createElement(Curve, _extends({}, props, {\n type: \"linear\",\n className: \"recharts-pie-label-line\"\n }));\n }\n }, {\n key: \"renderLabelItem\",\n value: function renderLabelItem(option, props, value) {\n if ( /*#__PURE__*/React.isValidElement(option)) {\n return /*#__PURE__*/React.cloneElement(option, props);\n }\n\n var label = value;\n\n if (_isFunction(option)) {\n label = option(props);\n\n if ( /*#__PURE__*/React.isValidElement(label)) {\n return label;\n }\n }\n\n return /*#__PURE__*/React.createElement(Text, _extends({}, props, {\n alignmentBaseline: \"middle\",\n className: \"recharts-pie-label-text\"\n }), label);\n }\n }, {\n key: \"renderSectorItem\",\n value: function renderSectorItem(option, props) {\n if ( /*#__PURE__*/React.isValidElement(option)) {\n return /*#__PURE__*/React.cloneElement(option, props);\n }\n\n if (_isFunction(option)) {\n return option(props);\n }\n\n if (_isPlainObject(option)) {\n return /*#__PURE__*/React.createElement(Sector, _extends({}, props, option));\n }\n\n return /*#__PURE__*/React.createElement(Sector, props);\n }\n }]);\n\n return Pie;\n}(PureComponent);\nPie.displayName = 'Pie';\nPie.defaultProps = {\n stroke: '#fff',\n fill: '#808080',\n legendType: 'rect',\n cx: '50%',\n cy: '50%',\n startAngle: 0,\n endAngle: 360,\n innerRadius: 0,\n outerRadius: '80%',\n paddingAngle: 0,\n labelLine: true,\n hide: false,\n minAngle: 0,\n isAnimationActive: !Global.isSsr,\n animationBegin: 400,\n animationDuration: 1500,\n animationEasing: 'ease',\n nameKey: 'name',\n blendStroke: false\n};\n\nPie.parseDeltaAngle = function (startAngle, endAngle) {\n var sign = mathSign(endAngle - startAngle);\n var deltaAngle = Math.min(Math.abs(endAngle - startAngle), 360);\n return sign * deltaAngle;\n};\n\nPie.getRealPieData = function (item) {\n var _item$props = item.props,\n data = _item$props.data,\n children = _item$props.children;\n var presentationProps = filterProps(item.props);\n var cells = findAllByType(children, Cell.displayName);\n\n if (data && data.length) {\n return data.map(function (entry, index) {\n return _objectSpread(_objectSpread(_objectSpread({\n payload: entry\n }, presentationProps), entry), cells && cells[index] && cells[index].props);\n });\n }\n\n if (cells && cells.length) {\n return cells.map(function (cell) {\n return _objectSpread(_objectSpread({}, presentationProps), cell.props);\n });\n }\n\n return [];\n};\n\nPie.parseCoordinateOfPie = function (item, offset) {\n var top = offset.top,\n left = offset.left,\n width = offset.width,\n height = offset.height;\n var maxPieRadius = getMaxRadius(width, height);\n var cx = left + getPercentValue(item.props.cx, width, width / 2);\n var cy = top + getPercentValue(item.props.cy, height, height / 2);\n var innerRadius = getPercentValue(item.props.innerRadius, maxPieRadius, 0);\n var outerRadius = getPercentValue(item.props.outerRadius, maxPieRadius, maxPieRadius * 0.8);\n var maxRadius = item.props.maxRadius || Math.sqrt(width * width + height * height) / 2;\n return {\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n maxRadius: maxRadius\n };\n};\n\nPie.getComposedData = function (_ref2) {\n var item = _ref2.item,\n offset = _ref2.offset;\n var pieData = Pie.getRealPieData(item);\n\n if (!pieData || !pieData.length) {\n return null;\n }\n\n var _item$props2 = item.props,\n cornerRadius = _item$props2.cornerRadius,\n startAngle = _item$props2.startAngle,\n endAngle = _item$props2.endAngle,\n paddingAngle = _item$props2.paddingAngle,\n dataKey = _item$props2.dataKey,\n nameKey = _item$props2.nameKey,\n valueKey = _item$props2.valueKey,\n tooltipType = _item$props2.tooltipType;\n var minAngle = Math.abs(item.props.minAngle);\n var coordinate = Pie.parseCoordinateOfPie(item, offset);\n var deltaAngle = Pie.parseDeltaAngle(startAngle, endAngle);\n var absDeltaAngle = Math.abs(deltaAngle);\n var realDataKey = dataKey;\n\n if (_isNil(dataKey) && _isNil(valueKey)) {\n warn(false, \"Use \\\"dataKey\\\" to specify the value of pie,\\n the props \\\"valueKey\\\" will be deprecated in 1.1.0\");\n realDataKey = 'value';\n } else if (_isNil(dataKey)) {\n warn(false, \"Use \\\"dataKey\\\" to specify the value of pie,\\n the props \\\"valueKey\\\" will be deprecated in 1.1.0\");\n realDataKey = valueKey;\n }\n\n var notZeroItemCount = pieData.filter(function (entry) {\n return getValueByDataKey(entry, realDataKey, 0) !== 0;\n }).length;\n var totalPadingAngle = (absDeltaAngle >= 360 ? notZeroItemCount : notZeroItemCount - 1) * paddingAngle;\n var realTotalAngle = absDeltaAngle - notZeroItemCount * minAngle - totalPadingAngle;\n var sum = pieData.reduce(function (result, entry) {\n var val = getValueByDataKey(entry, realDataKey, 0);\n return result + (isNumber(val) ? val : 0);\n }, 0);\n var sectors;\n\n if (sum > 0) {\n var prev;\n sectors = pieData.map(function (entry, i) {\n var val = getValueByDataKey(entry, realDataKey, 0);\n var name = getValueByDataKey(entry, nameKey, i);\n var percent = (isNumber(val) ? val : 0) / sum;\n var tempStartAngle;\n\n if (i) {\n tempStartAngle = prev.endAngle + mathSign(deltaAngle) * paddingAngle * (val !== 0 ? 1 : 0);\n } else {\n tempStartAngle = startAngle;\n }\n\n var tempEndAngle = tempStartAngle + mathSign(deltaAngle) * ((val !== 0 ? minAngle : 0) + percent * realTotalAngle);\n var midAngle = (tempStartAngle + tempEndAngle) / 2;\n var middleRadius = (coordinate.innerRadius + coordinate.outerRadius) / 2;\n var tooltipPayload = [{\n name: name,\n value: val,\n payload: entry,\n dataKey: realDataKey,\n type: tooltipType\n }];\n var tooltipPosition = polarToCartesian(coordinate.cx, coordinate.cy, middleRadius, midAngle);\n prev = _objectSpread(_objectSpread(_objectSpread({\n percent: percent,\n cornerRadius: cornerRadius,\n name: name,\n tooltipPayload: tooltipPayload,\n midAngle: midAngle,\n middleRadius: middleRadius,\n tooltipPosition: tooltipPosition\n }, entry), coordinate), {}, {\n value: getValueByDataKey(entry, realDataKey),\n startAngle: tempStartAngle,\n endAngle: tempEndAngle,\n payload: entry,\n paddingAngle: mathSign(deltaAngle) * paddingAngle\n });\n return prev;\n });\n }\n\n return _objectSpread(_objectSpread({}, coordinate), {}, {\n sectors: sectors,\n data: pieData\n });\n};"],"names":["_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","getCardUtilityClass","slot","generateUtilityClass","generateUtilityClasses","_excluded","CardRoot","styled","Paper","name","overridesResolver","props","styles","root","overflow","React","inProps","ref","useThemeProps","className","raised","other","_objectWithoutPropertiesLoose","ownerState","_extends","classes","composeClasses","useUtilityClasses","_jsx","clsx","elevation","undefined","getCardHeaderUtilityClass","CardHeaderRoot","cardHeaderClasses","title","subheader","display","alignItems","padding","CardHeaderAvatar","avatar","flex","marginRight","CardHeaderAction","action","alignSelf","marginTop","marginBottom","CardHeaderContent","content","component","disableTypography","subheaderProp","subheaderTypographyProps","titleProp","titleTypographyProps","type","Typography","variant","children","color","_jsxs","as","getDialogActionsUtilityClass","DialogActionsRoot","disableSpacing","spacing","justifyContent","marginLeft","slots","getInputAdornmentUtilityClass","_span","InputAdornmentRoot","capitalize","position","disablePointerEvents","theme","height","maxHeight","whiteSpace","palette","active","inputAdornmentClasses","pointerEvents","variantProp","muiFormControl","useFormControl","hiddenLabel","size","FormControlContext","value","ListItemButtonRoot","ButtonBase","shouldForwardProp","prop","rootShouldForwardProp","dense","alignItemsFlexStart","divider","disableGutters","gutters","flexGrow","textDecoration","boxSizing","textAlign","paddingTop","paddingBottom","transition","transitions","create","duration","shortest","backgroundColor","hover","listItemButtonClasses","alpha","primary","main","selectedOpacity","focusOpacity","hoverOpacity","focus","opacity","disabledOpacity","borderBottom","backgroundClip","paddingLeft","paddingRight","ListItemButton","autoFocus","focusVisibleClassName","selected","context","ListContext","childContext","listItemRef","useEnhancedEffect","current","disabled","composedClasses","getListItemButtonUtilityClass","handleRef","useForkRef","focusVisible","getListSubheaderUtilityClass","ListSubheaderRoot","inset","disableSticky","sticky","lineHeight","listStyle","text","secondary","fontFamily","typography","fontWeight","fontWeightMedium","fontSize","pxToRem","top","zIndex","background","paper","module","array","setter","iteratee","accumulator","index","length","baseEach","collection","key","arrayAggregator","baseAggregator","baseIteratee","isArray","initializer","func","getPrototype","overArg","Object","getPrototypeOf","baseAssignValue","createAggregator","hasOwnProperty","prototype","groupBy","result","call","push","baseGetTag","isObjectLike","funcProto","Function","objectProto","funcToString","toString","objectCtorString","proto","Ctor","constructor","baseExtremum","baseGt","baseLt","assign","target","i","arguments","source","apply","this","_slicedToArray","arr","Array","_arrayWithHoles","Symbol","iterator","_arr","_n","_d","_e","_s","_i","next","done","err","_iterableToArrayLimit","o","minLen","_arrayLikeToArray","n","slice","from","test","_unsupportedIterableToArray","TypeError","_nonIterableRest","len","arr2","_objectWithoutProperties","excluded","sourceKeys","keys","indexOf","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","ErrorBar","offset","layout","width","dataKey","data","dataPointFormatter","xAxis","yAxis","others","svgProps","filterProps","errorBars","map","entry","_dataPointFormatter","x","y","errorVal","lowBound","highBound","lineCoordinates","_errorVal","scale","yMid","yMin","yMax","xMin","xMax","x1","y1","x2","y2","_scale","xMid","_xMin","_xMax","_yMin","_yMax","Layer","concat","coordinates","defaultProps","stroke","strokeWidth","displayName","_typeof","obj","ownKeys","object","enumerableOnly","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","_objectSpread","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","configurable","writable","_classCallCheck","instance","Constructor","_defineProperties","descriptor","_setPrototypeOf","p","setPrototypeOf","__proto__","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","e","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","_possibleConstructorReturn","self","ReferenceError","_assertThisInitialized","Bar","_PureComponent","subClass","superClass","_inherits","protoProps","staticProps","_super","_this","_len","args","_key","state","isAnimationFinished","id","uniqueId","handleAnimationEnd","onAnimationEnd","setState","handleAnimationStart","onAnimationStart","nextProps","prevState","animationId","prevAnimationId","curData","prevData","option","_isFunction","Rectangle","_this2","shape","baseProps","adaptEventsOfChild","renderRectangle","_this3","_this$props","isAnimationActive","animationBegin","animationDuration","animationEasing","Animate","begin","isActive","easing","t","to","_ref","stepData","prev","interpolatorX","interpolateNumber","interpolatorY","interpolatorWidth","interpolatorHeight","h","_interpolatorHeight","w","interpolator","renderRectanglesStatically","_this$props2","_isEqual","renderRectanglesWithAnimation","_this4","backgroundProps","rest","fill","_this$props3","errorBarItems","findAllByType","dataPoint","getValueByDataKey","item","_this$props4","hide","left","layerClass","classNames","needClip","allowDataOverflow","clipPathId","_isNil","clipPath","renderBackground","renderRectangles","renderErrorBar","LabelList","PureComponent","xAxisId","yAxisId","legendType","minPointSize","Global","getComposedData","_ref2","barPosition","bandSize","xAxisTicks","yAxisTicks","stackedData","dataStartIndex","displayedData","pos","findPositionOfBar","_item$props","numericAxis","stackedDomain","domain","baseValue","getBaseValueOfBar","cells","Cell","rects","truncateByDomain","_isArray","getCateCoordinateOfBar","axis","ticks","Math","abs","delta","mathSign","payload","tooltipPayload","getTooltipItem","tooltipPosition","BarChart","generateCategoricalChart","chartName","GraphicalChild","defaultTooltipEventType","validateTooltipEventTypes","axisComponents","axisType","AxisComp","XAxis","YAxis","formatAxisMap","_toConsumableArray","_arrayWithoutHoles","iter","_iterableToArray","_nonIterableSpread","isValidatePoint","point","getSinglePolygonPath","points","connectNulls","segmentPoints","getParsedPoints","reduce","res","segPoints","polygonPath","path","join","Polygon","baseLinePoints","hasStroke","rangePath","outerPath","reverse","getRanglePath","singlePath","RADIAN","PI","eps","PolarAngleAxis","Text","cx","cy","radius","orientation","tickLineSize","tickSize","p1","polarToCartesian","coordinate","p2","cos","axisLine","axisLineType","Dot","r","tick","tickLine","tickFormatter","axisProps","customTickProps","tickLineProps","items","lineCoord","getTickLineCoord","tickProps","textAnchor","getTickTextAnchor","renderTickItem","renderAxisLine","renderTicks","angleAxisId","allowDuplicatedCategory","PolarRadiusAxis","angle","maxRadiusTick","_maxBy","startAngle","endAngle","innerRadius","_minBy","outerRadius","extent","min","max","Infinity","point0","point1","coord","getTickValueCoord","transform","_this$props5","Label","getViewBox","radiusAxisId","tickCount","PieChart","Pie","legendContent","_props","prevIsAnimationActive","curSectors","sectors","prevSectors","Curve","label","alignmentBaseline","_isPlainObject","Sector","activeIndex","labelLine","valueKey","pieProps","customLabelProps","customLabelLineProps","offsetRadius","labels","midAngle","endPoint","labelProps","getTextAnchor","lineProps","realDataKey","renderLabelLineItem","renderLabelItem","activeShape","blendStroke","sectorOptions","isActiveIndex","sectorProps","renderSectorItem","_this$state","curAngle","paddingAngle","_get","angleIp","latest","deltaAngle","interpolatorAngle","_latest","renderSectorsStatically","renderSectorsWithAnimation","isNumber","renderSectors","renderLabels","minAngle","nameKey","parseDeltaAngle","getRealPieData","presentationProps","cell","parseCoordinateOfPie","maxPieRadius","getMaxRadius","getPercentValue","maxRadius","sqrt","pieData","_item$props2","cornerRadius","tooltipType","absDeltaAngle","warn","notZeroItemCount","realTotalAngle","sum","val","tempStartAngle","percent","tempEndAngle","middleRadius"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/1237.dbb13c2b.chunk.js b/portal-ui/build/static/js/1237.b46ec019.chunk.js similarity index 97% rename from portal-ui/build/static/js/1237.dbb13c2b.chunk.js rename to portal-ui/build/static/js/1237.b46ec019.chunk.js index 6731e6d12..1949d49a3 100644 --- a/portal-ui/build/static/js/1237.dbb13c2b.chunk.js +++ b/portal-ui/build/static/js/1237.b46ec019.chunk.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1237],{37882:function(n,e,r){var o=r(18489),t=r(50390),i=r(62559);e.Z=function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;function r(r){return(0,i.jsx)(t.Suspense,{fallback:e,children:(0,i.jsx)(n,(0,o.Z)({},r))})}return r}},25534:function(n,e,r){var o=r(18489),t=(r(50390),r(25594)),i=r(86509),a=r(4285),c=r(72462),l=r(62559);e.Z=(0,a.Z)((function(n){return(0,i.Z)((0,o.Z)({},c.Bw))}))((function(n){var e=n.classes,r=n.className,o=void 0===r?"":r,i=n.children;return(0,l.jsx)("div",{className:e.contentSpacer,children:(0,l.jsx)(t.ZP,{container:!0,children:(0,l.jsx)(t.ZP,{item:!0,xs:12,className:o,children:i})})})}))},31237:function(n,e,r){r.r(e);var o=r(50390),t=r(24442),i=r(70971),a=r(34424),c=r(44149),l=r(36176),u=r(37882),s=r(49495),d=r(62559),f=(0,u.Z)(o.lazy((function(){return Promise.all([r.e(14),r.e(3152),r.e(2066),r.e(3690),r.e(5399),r.e(8174),r.e(3967)]).then(r.bind(r,63967))}))),p=(0,u.Z)(o.lazy((function(){return Promise.all([r.e(14),r.e(3152),r.e(2066),r.e(3690),r.e(5399),r.e(9998),r.e(8954),r.e(8174),r.e(4084)]).then(r.bind(r,5604))}))),m=(0,a.$j)((function(n){return{open:n.system.sidebarOpen}}),{setMenuOpen:c.gG});e.default=(0,i.EN)(m((function(){return(0,d.jsx)(i.F0,{history:t.Z,children:(0,d.jsxs)(i.rs,{children:[(0,d.jsx)(i.AW,{path:s.gA.POLICIES,exact:!0,component:f}),(0,d.jsx)(i.AW,{path:"".concat(s.gA.POLICIES,"/*"),component:p}),(0,d.jsx)(i.AW,{path:"/",component:f}),(0,d.jsx)(i.AW,{component:l.Z})]})})})))},36176:function(n,e,r){r.d(e,{Z:function(){return u}});r(50390);var o=r(56805),t=r(35477),i=r(10567),a=r(62559);function c(){return(0,a.jsxs)(t.Z,{variant:"body2",color:"textSecondary",align:"center",children:["Copyright \xa9 ",(0,a.jsx)(i.Z,{color:"inherit",href:"https://min.io/?ref=con",children:"MinIO"})," ",(new Date).getFullYear(),"."]})}var l=r(25534),u=function(){return(0,a.jsx)(l.Z,{children:(0,a.jsxs)(o.Z,{sx:{display:"flex",alignItems:"center",justifyContent:"center",height:"100%",textAlign:"center",margin:"auto",flexFlow:"column"},children:[(0,a.jsx)(o.Z,{sx:{fontSize:"110%",margin:"0 0 0.25rem",color:"#909090"},children:"404 Error"}),(0,a.jsx)(o.Z,{sx:{fontStyle:"normal",fontSize:"clamp(2rem,calc(2rem + 1.2vw),3rem)",fontWeight:700},children:"Sorry, the page could not be found."}),(0,a.jsx)(o.Z,{mt:5,children:(0,a.jsx)(c,{})})]})})}},10567:function(n,e,r){r.d(e,{Z:function(){return k}});var o=r(23430),t=r(36222),i=r(1048),a=r(32793),c=r(50390),l=r(44977),u=r(50076),s=r(29001),d=r(36128),f=r(91442),p=r(8208),m=r(15573),h=r(42081),x=r(3299),Z=r(35477),v=r(10594);function y(n){return(0,v.Z)("MuiLink",n)}var b=(0,r(43349).Z)("MuiLink",["root","underlineNone","underlineHover","underlineAlways","button","focusVisible"]),g=r(62559),j=["className","color","component","onBlur","onFocus","TypographyClasses","underline","variant"],S={primary:"primary.main",textPrimary:"text.primary",secondary:"secondary.main",textSecondary:"text.secondary",error:"error.main"},w=(0,p.ZP)(Z.Z,{name:"MuiLink",slot:"Root",overridesResolver:function(n,e){var r=n.ownerState;return[e.root,e["underline".concat((0,f.Z)(r.underline))],"button"===r.component&&e.button]}})((function(n){var e=n.theme,r=n.ownerState,o=(0,s.D)(e,"palette.".concat(function(n){return S[n]||n}(r.color)))||r.color;return(0,a.Z)({},"none"===r.underline&&{textDecoration:"none"},"hover"===r.underline&&{textDecoration:"none","&:hover":{textDecoration:"underline"}},"always"===r.underline&&{textDecoration:"underline",textDecorationColor:"inherit"!==o?(0,d.Fq)(o,.4):void 0,"&:hover":{textDecorationColor:"inherit"}},"button"===r.component&&(0,t.Z)({position:"relative",WebkitTapHighlightColor:"transparent",backgroundColor:"transparent",outline:0,border:0,margin:0,borderRadius:0,padding:0,cursor:"pointer",userSelect:"none",verticalAlign:"middle",MozAppearance:"none",WebkitAppearance:"none","&::-moz-focus-inner":{borderStyle:"none"}},"&.".concat(b.focusVisible),{outline:"auto"}))})),k=c.forwardRef((function(n,e){var r=(0,m.Z)({props:n,name:"MuiLink"}),t=r.className,s=r.color,d=void 0===s?"primary":s,p=r.component,Z=void 0===p?"a":p,v=r.onBlur,b=r.onFocus,S=r.TypographyClasses,k=r.underline,C=void 0===k?"always":k,A=r.variant,F=void 0===A?"inherit":A,D=(0,i.Z)(r,j),N=(0,h.Z)(),P=N.isFocusVisibleRef,M=N.onBlur,W=N.onFocus,z=N.ref,I=c.useState(!1),L=(0,o.Z)(I,2),V=L[0],B=L[1],O=(0,x.Z)(e,z),R=(0,a.Z)({},r,{color:d,component:Z,focusVisible:V,underline:C,variant:F}),E=function(n){var e=n.classes,r=n.component,o=n.focusVisible,t=n.underline,i={root:["root","underline".concat((0,f.Z)(t)),"button"===r&&"button",o&&"focusVisible"]};return(0,u.Z)(i,y,e)}(R);return(0,g.jsx)(w,(0,a.Z)({className:(0,l.Z)(E.root,t),classes:S,color:d,component:Z,onBlur:function(n){M(n),!1===P.current&&B(!1),v&&v(n)},onFocus:function(n){W(n),!0===P.current&&B(!0),b&&b(n)},ref:O,ownerState:R,variant:F},D))}))}}]); -//# sourceMappingURL=1237.dbb13c2b.chunk.js.map \ No newline at end of file +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1237],{37882:function(n,e,r){var o=r(18489),t=r(50390),i=r(62559);e.Z=function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;function r(r){return(0,i.jsx)(t.Suspense,{fallback:e,children:(0,i.jsx)(n,(0,o.Z)({},r))})}return r}},25534:function(n,e,r){var o=r(18489),t=(r(50390),r(25594)),i=r(86509),a=r(4285),c=r(72462),l=r(62559);e.Z=(0,a.Z)((function(n){return(0,i.Z)((0,o.Z)({},c.Bw))}))((function(n){var e=n.classes,r=n.className,o=void 0===r?"":r,i=n.children;return(0,l.jsx)("div",{className:e.contentSpacer,children:(0,l.jsx)(t.ZP,{container:!0,children:(0,l.jsx)(t.ZP,{item:!0,xs:12,className:o,children:i})})})}))},31237:function(n,e,r){r.r(e);var o=r(50390),t=r(24442),i=r(70971),a=r(34424),c=r(44149),l=r(36176),u=r(37882),s=r(49495),d=r(62559),f=(0,u.Z)(o.lazy((function(){return Promise.all([r.e(14),r.e(3152),r.e(2066),r.e(3690),r.e(5399),r.e(8174),r.e(3967)]).then(r.bind(r,63967))}))),p=(0,u.Z)(o.lazy((function(){return Promise.all([r.e(14),r.e(3152),r.e(2066),r.e(3690),r.e(5399),r.e(6117),r.e(8954),r.e(8174),r.e(4084)]).then(r.bind(r,5604))}))),m=(0,a.$j)((function(n){return{open:n.system.sidebarOpen}}),{setMenuOpen:c.gG});e.default=(0,i.EN)(m((function(){return(0,d.jsx)(i.F0,{history:t.Z,children:(0,d.jsxs)(i.rs,{children:[(0,d.jsx)(i.AW,{path:s.gA.POLICIES,exact:!0,component:f}),(0,d.jsx)(i.AW,{path:"".concat(s.gA.POLICIES,"/*"),component:p}),(0,d.jsx)(i.AW,{path:"/",component:f}),(0,d.jsx)(i.AW,{component:l.Z})]})})})))},36176:function(n,e,r){r.d(e,{Z:function(){return u}});r(50390);var o=r(56805),t=r(35477),i=r(10567),a=r(62559);function c(){return(0,a.jsxs)(t.Z,{variant:"body2",color:"textSecondary",align:"center",children:["Copyright \xa9 ",(0,a.jsx)(i.Z,{color:"inherit",href:"https://min.io/?ref=con",children:"MinIO"})," ",(new Date).getFullYear(),"."]})}var l=r(25534),u=function(){return(0,a.jsx)(l.Z,{children:(0,a.jsxs)(o.Z,{sx:{display:"flex",alignItems:"center",justifyContent:"center",height:"100%",textAlign:"center",margin:"auto",flexFlow:"column"},children:[(0,a.jsx)(o.Z,{sx:{fontSize:"110%",margin:"0 0 0.25rem",color:"#909090"},children:"404 Error"}),(0,a.jsx)(o.Z,{sx:{fontStyle:"normal",fontSize:"clamp(2rem,calc(2rem + 1.2vw),3rem)",fontWeight:700},children:"Sorry, the page could not be found."}),(0,a.jsx)(o.Z,{mt:5,children:(0,a.jsx)(c,{})})]})})}},10567:function(n,e,r){r.d(e,{Z:function(){return k}});var o=r(23430),t=r(36222),i=r(1048),a=r(32793),c=r(50390),l=r(44977),u=r(50076),s=r(29001),d=r(36128),f=r(91442),p=r(8208),m=r(15573),h=r(42081),x=r(3299),Z=r(35477),v=r(10594);function y(n){return(0,v.Z)("MuiLink",n)}var b=(0,r(43349).Z)("MuiLink",["root","underlineNone","underlineHover","underlineAlways","button","focusVisible"]),g=r(62559),j=["className","color","component","onBlur","onFocus","TypographyClasses","underline","variant"],S={primary:"primary.main",textPrimary:"text.primary",secondary:"secondary.main",textSecondary:"text.secondary",error:"error.main"},w=(0,p.ZP)(Z.Z,{name:"MuiLink",slot:"Root",overridesResolver:function(n,e){var r=n.ownerState;return[e.root,e["underline".concat((0,f.Z)(r.underline))],"button"===r.component&&e.button]}})((function(n){var e=n.theme,r=n.ownerState,o=(0,s.D)(e,"palette.".concat(function(n){return S[n]||n}(r.color)))||r.color;return(0,a.Z)({},"none"===r.underline&&{textDecoration:"none"},"hover"===r.underline&&{textDecoration:"none","&:hover":{textDecoration:"underline"}},"always"===r.underline&&{textDecoration:"underline",textDecorationColor:"inherit"!==o?(0,d.Fq)(o,.4):void 0,"&:hover":{textDecorationColor:"inherit"}},"button"===r.component&&(0,t.Z)({position:"relative",WebkitTapHighlightColor:"transparent",backgroundColor:"transparent",outline:0,border:0,margin:0,borderRadius:0,padding:0,cursor:"pointer",userSelect:"none",verticalAlign:"middle",MozAppearance:"none",WebkitAppearance:"none","&::-moz-focus-inner":{borderStyle:"none"}},"&.".concat(b.focusVisible),{outline:"auto"}))})),k=c.forwardRef((function(n,e){var r=(0,m.Z)({props:n,name:"MuiLink"}),t=r.className,s=r.color,d=void 0===s?"primary":s,p=r.component,Z=void 0===p?"a":p,v=r.onBlur,b=r.onFocus,S=r.TypographyClasses,k=r.underline,C=void 0===k?"always":k,A=r.variant,F=void 0===A?"inherit":A,D=(0,i.Z)(r,j),N=(0,h.Z)(),P=N.isFocusVisibleRef,M=N.onBlur,W=N.onFocus,z=N.ref,I=c.useState(!1),L=(0,o.Z)(I,2),V=L[0],B=L[1],O=(0,x.Z)(e,z),R=(0,a.Z)({},r,{color:d,component:Z,focusVisible:V,underline:C,variant:F}),E=function(n){var e=n.classes,r=n.component,o=n.focusVisible,t=n.underline,i={root:["root","underline".concat((0,f.Z)(t)),"button"===r&&"button",o&&"focusVisible"]};return(0,u.Z)(i,y,e)}(R);return(0,g.jsx)(w,(0,a.Z)({className:(0,l.Z)(E.root,t),classes:S,color:d,component:Z,onBlur:function(n){M(n),!1===P.current&&B(!1),v&&v(n)},onFocus:function(n){W(n),!0===P.current&&B(!0),b&&b(n)},ref:O,ownerState:R,variant:F},D))}))}}]); +//# sourceMappingURL=1237.b46ec019.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/1237.dbb13c2b.chunk.js.map b/portal-ui/build/static/js/1237.b46ec019.chunk.js.map similarity index 99% rename from portal-ui/build/static/js/1237.dbb13c2b.chunk.js.map rename to portal-ui/build/static/js/1237.b46ec019.chunk.js.map index b57b8e0e3..4271af6e9 100644 --- a/portal-ui/build/static/js/1237.dbb13c2b.chunk.js.map +++ b/portal-ui/build/static/js/1237.b46ec019.chunk.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/1237.dbb13c2b.chunk.js","mappings":"kJAiCA,IAfA,SACEA,GAEC,IADDC,EACA,uDADsC,KAEtC,SAASC,EAAsBC,GAC7B,OACE,SAAC,EAAAC,SAAD,CAAUH,SAAUA,EAApB,UACE,SAACD,GAAD,UAAsBG,MAK5B,OAAOD,I,sGCAT,KAAeG,EAAAA,EAAAA,IAvBA,SAACC,GAAD,OACbC,EAAAA,EAAAA,IAAa,UACRC,EAAAA,OAqBP,EAZmB,SAAC,GAA4D,IAA1DC,EAAyD,EAAzDA,QAAyD,IAAhDC,UAAAA,OAAgD,MAApC,GAAoC,EAAhCC,EAAgC,EAAhCA,SAC7C,OACE,gBAAKD,UAAWD,EAAQG,cAAxB,UACE,SAAC,KAAD,CAAMC,WAAS,EAAf,UACE,SAAC,KAAD,CAAMC,MAAI,EAACC,GAAI,GAAIL,UAAWA,EAA9B,SACGC,Y,oICXLK,GAAeC,EAAAA,EAAAA,GAAaC,EAAAA,MAAW,kBAAM,6GAC7CC,GAAgBF,EAAAA,EAAAA,GAAaC,EAAAA,MAAW,kBAAM,gIAM9CE,GAAYC,EAAAA,EAAAA,KAJD,SAACC,GAAD,MAAsB,CACrCC,KAAMD,EAAME,OAAOC,eAGe,CAAEC,YAAAA,EAAAA,KAmBtC,WAAeC,EAAAA,EAAAA,IAAWP,GAjBT,WACf,OACE,SAAC,KAAD,CAAQQ,QAASA,EAAAA,EAAjB,UACE,UAAC,KAAD,YACE,SAAC,KAAD,CACEC,KAAMC,EAAAA,GAAAA,SACNC,OAAO,EACPC,UAAWhB,KAEb,SAAC,KAAD,CAAOa,KAAI,UAAKC,EAAAA,GAAAA,SAAL,MAA6BE,UAAWb,KACnD,SAAC,KAAD,CAAOU,KAAK,IAAIG,UAAWhB,KAC3B,SAAC,KAAD,CAAOgB,UAAWC,EAAAA,c,+GCZX,SAASC,IACtB,OACE,UAACC,EAAA,EAAD,CAAYC,QAAQ,QAAQC,MAAM,gBAAgBC,MAAM,SAAxD,UACG,mBACD,SAACC,EAAA,EAAD,CAAMF,MAAM,UAAUG,KAAK,0BAA3B,mBAEQ,KACP,IAAIC,MAAOC,cACX,O,eCiCP,EAxC2B,WACzB,OACE,SAACC,EAAA,EAAD,WACE,UAACC,EAAA,EAAD,CACEC,GAAI,CACFC,QAAS,OACTC,WAAY,SACZC,eAAgB,SAChBC,OAAQ,OACRC,UAAW,SACXC,OAAQ,OACRC,SAAU,UARd,WAWE,SAACR,EAAA,EAAD,CACEC,GAAI,CACFQ,SAAU,OACVF,OAAQ,cACRd,MAAO,WAJX,wBASA,SAACO,EAAA,EAAD,CACEC,GAAI,CACFS,UAAW,SACXD,SAAU,sCACVE,WAAY,KAJhB,kDASA,SAACX,EAAA,EAAD,CAAKY,GAAI,EAAT,UACE,SAACtB,EAAD,a,uOCrDH,SAASuB,EAAoBC,GAClC,OAAOC,EAAAA,EAAAA,GAAqB,UAAWD,GAEzC,IACA,GADoBE,E,SAAAA,GAAuB,UAAW,CAAC,OAAQ,gBAAiB,iBAAkB,kBAAmB,SAAU,iB,WCFzHC,EAAY,CAAC,YAAa,QAAS,YAAa,SAAU,UAAW,oBAAqB,YAAa,WAevGC,EAAuB,CAC3BC,QAAS,eACTC,YAAa,eACbC,UAAW,iBACXC,cAAe,iBACfC,MAAO,cAoBHC,GAAWC,EAAAA,EAAAA,IAAOlC,EAAAA,EAAY,CAClCmC,KAAM,UACNZ,KAAM,OACNa,kBAAmB,SAACpE,EAAOqE,GACzB,IACEC,EACEtE,EADFsE,WAEF,MAAO,CAACD,EAAOE,KAAMF,EAAO,YAAD,QAAaG,EAAAA,EAAAA,GAAWF,EAAWG,aAAwC,WAAzBH,EAAWzC,WAA0BwC,EAAOK,UAP5GR,EASd,YAGG,IAFJ/D,EAEI,EAFJA,MACAmE,EACI,EADJA,WAEMpC,GAAQyC,EAAAA,EAAAA,GAAQxE,EAAD,kBA9BW,SAAA+B,GAChC,OAAOyB,EAAqBzB,IAAUA,EA6BE0C,CAA0BN,EAAWpC,UAAaoC,EAAWpC,MACrG,OAAO2C,EAAAA,EAAAA,GAAS,GAA6B,SAAzBP,EAAWG,WAAwB,CACrDK,eAAgB,QACU,UAAzBR,EAAWG,WAAyB,CACrCK,eAAgB,OAChB,UAAW,CACTA,eAAgB,cAEQ,WAAzBR,EAAWG,WAA0B,CACtCK,eAAgB,YAChBC,oBAA+B,YAAV7C,GAAsB8C,EAAAA,EAAAA,IAAM9C,EAAO,SAAO+C,EAC/D,UAAW,CACTF,oBAAqB,YAEG,WAAzBT,EAAWzC,YAAX,QACDqD,SAAU,WACVC,wBAAyB,cACzBC,gBAAiB,cAGjBC,QAAS,EACTC,OAAQ,EACRtC,OAAQ,EAERuC,aAAc,EACdC,QAAS,EAETC,OAAQ,UACRC,WAAY,OACZC,cAAe,SACfC,cAAe,OAEfC,iBAAkB,OAElB,sBAAuB,CACrBC,YAAa,SArBd,YAwBKC,EAAAA,cAA6B,CACjCV,QAAS,aAmJf,EA/I0BtE,EAAAA,YAAiB,SAAciF,EAASC,GAChE,IAAMjG,GAAQkG,EAAAA,EAAAA,GAAc,CAC1BlG,MAAOgG,EACP7B,KAAM,YAIN5D,EAQEP,EARFO,UADF,EASIP,EAPFkC,MAAAA,OAFF,MAEU,UAFV,IASIlC,EANF6B,UAAAA,OAHF,MAGc,IAHd,EAIEsE,EAKEnG,EALFmG,OACAC,EAIEpG,EAJFoG,QACAC,EAGErG,EAHFqG,kBANF,EASIrG,EAFFyE,UAAAA,OAPF,MAOc,SAPd,IASIzE,EADFiC,QAAAA,OARF,MAQY,UARZ,EAUMqE,GAAQC,EAAAA,EAAAA,GAA8BvG,EAAO0D,GAEnD,GAKI8C,EAAAA,EAAAA,KAJFC,EADF,EACEA,kBACQC,EAFV,EAEEP,OACSQ,EAHX,EAGEP,QACKQ,EAJP,EAIEX,IAEF,EAAwClF,EAAAA,UAAe,GAAvD,eAAO8F,EAAP,KAAqBC,EAArB,KACMC,GAAaC,EAAAA,EAAAA,GAAWf,EAAKW,GA0B7BtC,GAAaO,EAAAA,EAAAA,GAAS,GAAI7E,EAAO,CACrCkC,MAAAA,EACAL,UAAAA,EACAgF,aAAAA,EACApC,UAAAA,EACAxC,QAAAA,IAGI3B,EAhIkB,SAAAgE,GACxB,IACEhE,EAIEgE,EAJFhE,QACAuB,EAGEyC,EAHFzC,UACAgF,EAEEvC,EAFFuC,aACApC,EACEH,EADFG,UAEIwC,EAAQ,CACZ1C,KAAM,CAAC,OAAD,oBAAqBC,EAAAA,EAAAA,GAAWC,IAA4B,WAAd5C,GAA0B,SAAUgF,GAAgB,iBAE1G,OAAOK,EAAAA,EAAAA,GAAeD,EAAO3D,EAAqBhD,GAsHlC6G,CAAkB7C,GAClC,OAAoB8C,EAAAA,EAAAA,KAAKnD,GAAUY,EAAAA,EAAAA,GAAS,CAC1CtE,WAAW8G,EAAAA,EAAAA,GAAK/G,EAAQiE,KAAMhE,GAC9BD,QAAS+F,EACTnE,MAAOA,EACPL,UAAWA,EACXsE,OAtCiB,SAAAmB,GACjBZ,EAAkBY,IAEgB,IAA9Bb,EAAkBc,SACpBT,GAAgB,GAGdX,GACFA,EAAOmB,IA+BTlB,QA3BkB,SAAAkB,GAClBX,EAAmBW,IAEe,IAA9Bb,EAAkBc,SACpBT,GAAgB,GAGdV,GACFA,EAAQkB,IAoBVrB,IAAKc,EACLzC,WAAYA,EACZrC,QAASA,GACRqE","sources":["screens/Console/Common/Components/withSuspense.tsx","screens/Console/Common/Layout/PageLayout.tsx","screens/Console/Policies/Policies.tsx","common/Copyright.tsx","screens/NotFoundPage.tsx","../node_modules/@mui/material/Link/linkClasses.js","../node_modules/@mui/material/Link/Link.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","import React from \"react\";\nimport { Grid } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { pageContentStyles } from \"../FormComponents/common/styleLibrary\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...pageContentStyles,\n });\n\ntype PageLayoutProps = {\n className?: string;\n classes?: any;\n children: any;\n};\n\nconst PageLayout = ({ classes, className = \"\", children }: PageLayoutProps) => {\n return (\n

\n \n \n {children}\n \n \n
\n );\n};\n\nexport default withStyles(styles)(PageLayout);\n","// You should 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 history from \"../../../history\";\nimport { Route, Router, Switch, withRouter } from \"react-router-dom\";\nimport { connect } from \"react-redux\";\nimport { AppState } from \"../../../store\";\nimport { setMenuOpen } from \"../../../actions\";\nimport NotFoundPage from \"../../NotFoundPage\";\nimport withSuspense from \"../Common/Components/withSuspense\";\nimport { IAM_PAGES } from \"../../../common/SecureComponent/permissions\";\nconst ListPolicies = withSuspense(React.lazy(() => import(\"./ListPolicies\")));\nconst PolicyDetails = withSuspense(React.lazy(() => import(\"./PolicyDetails\")));\n\nconst mapState = (state: AppState) => ({\n open: state.system.sidebarOpen,\n});\n\nconst connector = connect(mapState, { setMenuOpen });\n\nconst Policies = () => {\n return (\n \n \n \n \n \n \n \n \n );\n};\n\nexport default withRouter(connector(Policies));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should 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 Typography from \"@mui/material/Typography\";\nimport Link from \"@mui/material/Link\";\n\nexport default function Copyright() {\n return (\n \n {\"Copyright © \"}\n \n MinIO\n {\" \"}\n {new Date().getFullYear()}\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 from \"react\";\nimport Box from \"@mui/material/Box\";\nimport Copyright from \"../common/Copyright\";\nimport PageLayout from \"./Console/Common/Layout/PageLayout\";\n\nconst NotFound: React.FC = () => {\n return (\n \n \n \n 404 Error\n \n \n Sorry, the page could not be found.\n \n \n \n \n \n \n );\n};\n\nexport default NotFound;\n","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getLinkUtilityClass(slot) {\n return generateUtilityClass('MuiLink', slot);\n}\nconst linkClasses = generateUtilityClasses('MuiLink', ['root', 'underlineNone', 'underlineHover', 'underlineAlways', 'button', 'focusVisible']);\nexport default linkClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"color\", \"component\", \"onBlur\", \"onFocus\", \"TypographyClasses\", \"underline\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { elementTypeAcceptingRef } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { alpha, getPath } from '@mui/system';\nimport capitalize from '../utils/capitalize';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport useIsFocusVisible from '../utils/useIsFocusVisible';\nimport useForkRef from '../utils/useForkRef';\nimport Typography from '../Typography';\nimport linkClasses, { getLinkUtilityClass } from './linkClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst colorTransformations = {\n primary: 'primary.main',\n textPrimary: 'text.primary',\n secondary: 'secondary.main',\n textSecondary: 'text.secondary',\n error: 'error.main'\n};\n\nconst transformDeprecatedColors = color => {\n return colorTransformations[color] || color;\n};\n\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n component,\n focusVisible,\n underline\n } = ownerState;\n const slots = {\n root: ['root', `underline${capitalize(underline)}`, component === 'button' && 'button', focusVisible && 'focusVisible']\n };\n return composeClasses(slots, getLinkUtilityClass, classes);\n};\n\nconst LinkRoot = styled(Typography, {\n name: 'MuiLink',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[`underline${capitalize(ownerState.underline)}`], ownerState.component === 'button' && styles.button];\n }\n})(({\n theme,\n ownerState\n}) => {\n const color = getPath(theme, `palette.${transformDeprecatedColors(ownerState.color)}`) || ownerState.color;\n return _extends({}, ownerState.underline === 'none' && {\n textDecoration: 'none'\n }, ownerState.underline === 'hover' && {\n textDecoration: 'none',\n '&:hover': {\n textDecoration: 'underline'\n }\n }, ownerState.underline === 'always' && {\n textDecoration: 'underline',\n textDecorationColor: color !== 'inherit' ? alpha(color, 0.4) : undefined,\n '&:hover': {\n textDecorationColor: 'inherit'\n }\n }, ownerState.component === 'button' && {\n position: 'relative',\n WebkitTapHighlightColor: 'transparent',\n backgroundColor: 'transparent',\n // Reset default value\n // We disable the focus ring for mouse, touch and keyboard users.\n outline: 0,\n border: 0,\n margin: 0,\n // Remove the margin in Safari\n borderRadius: 0,\n padding: 0,\n // Remove the padding in Firefox\n cursor: 'pointer',\n userSelect: 'none',\n verticalAlign: 'middle',\n MozAppearance: 'none',\n // Reset\n WebkitAppearance: 'none',\n // Reset\n '&::-moz-focus-inner': {\n borderStyle: 'none' // Remove Firefox dotted outline.\n\n },\n [`&.${linkClasses.focusVisible}`]: {\n outline: 'auto'\n }\n });\n});\nconst Link = /*#__PURE__*/React.forwardRef(function Link(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiLink'\n });\n\n const {\n className,\n color = 'primary',\n component = 'a',\n onBlur,\n onFocus,\n TypographyClasses,\n underline = 'always',\n variant = 'inherit'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const {\n isFocusVisibleRef,\n onBlur: handleBlurVisible,\n onFocus: handleFocusVisible,\n ref: focusVisibleRef\n } = useIsFocusVisible();\n const [focusVisible, setFocusVisible] = React.useState(false);\n const handlerRef = useForkRef(ref, focusVisibleRef);\n\n const handleBlur = event => {\n handleBlurVisible(event);\n\n if (isFocusVisibleRef.current === false) {\n setFocusVisible(false);\n }\n\n if (onBlur) {\n onBlur(event);\n }\n };\n\n const handleFocus = event => {\n handleFocusVisible(event);\n\n if (isFocusVisibleRef.current === true) {\n setFocusVisible(true);\n }\n\n if (onFocus) {\n onFocus(event);\n }\n };\n\n const ownerState = _extends({}, props, {\n color,\n component,\n focusVisible,\n underline,\n variant\n });\n\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(LinkRoot, _extends({\n className: clsx(classes.root, className),\n classes: TypographyClasses,\n color: color,\n component: component,\n onBlur: handleBlur,\n onFocus: handleFocus,\n ref: handlerRef,\n ownerState: ownerState,\n variant: variant\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? Link.propTypes\n/* remove-proptypes */\n= {\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 /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The color of the link.\n * @default 'primary'\n */\n color: PropTypes\n /* @typescript-to-proptypes-ignore */\n .any,\n\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 /**\n * @ignore\n */\n onBlur: PropTypes.func,\n\n /**\n * @ignore\n */\n onFocus: 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\n /**\n * `classes` prop applied to the [`Typography`](/api/typography/) element.\n */\n TypographyClasses: PropTypes.object,\n\n /**\n * Controls when the link should have an underline.\n * @default 'always'\n */\n underline: PropTypes.oneOf(['always', 'hover', 'none']),\n\n /**\n * Applies the theme typography styles.\n * @default 'inherit'\n */\n variant: PropTypes\n /* @typescript-to-proptypes-ignore */\n .oneOfType([PropTypes.oneOf(['body1', 'body2', 'button', 'caption', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'inherit', 'overline', 'subtitle1', 'subtitle2']), PropTypes.string])\n} : void 0;\nexport default Link;"],"names":["WrappedComponent","fallback","ComponentWithSuspense","props","Suspense","withStyles","theme","createStyles","pageContentStyles","classes","className","children","contentSpacer","container","item","xs","ListPolicies","withSuspense","React","PolicyDetails","connector","connect","state","open","system","sidebarOpen","setMenuOpen","withRouter","history","path","IAM_PAGES","exact","component","NotFoundPage","Copyright","Typography","variant","color","align","Link","href","Date","getFullYear","PageLayout","Box","sx","display","alignItems","justifyContent","height","textAlign","margin","flexFlow","fontSize","fontStyle","fontWeight","mt","getLinkUtilityClass","slot","generateUtilityClass","generateUtilityClasses","_excluded","colorTransformations","primary","textPrimary","secondary","textSecondary","error","LinkRoot","styled","name","overridesResolver","styles","ownerState","root","capitalize","underline","button","getPath","transformDeprecatedColors","_extends","textDecoration","textDecorationColor","alpha","undefined","position","WebkitTapHighlightColor","backgroundColor","outline","border","borderRadius","padding","cursor","userSelect","verticalAlign","MozAppearance","WebkitAppearance","borderStyle","linkClasses","inProps","ref","useThemeProps","onBlur","onFocus","TypographyClasses","other","_objectWithoutPropertiesLoose","useIsFocusVisible","isFocusVisibleRef","handleBlurVisible","handleFocusVisible","focusVisibleRef","focusVisible","setFocusVisible","handlerRef","useForkRef","slots","composeClasses","useUtilityClasses","_jsx","clsx","event","current"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/1237.b46ec019.chunk.js","mappings":"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","sources":["screens/Console/Common/Components/withSuspense.tsx","screens/Console/Common/Layout/PageLayout.tsx","screens/Console/Policies/Policies.tsx","common/Copyright.tsx","screens/NotFoundPage.tsx","../node_modules/@mui/material/Link/linkClasses.js","../node_modules/@mui/material/Link/Link.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","import React from \"react\";\nimport { Grid } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { pageContentStyles } from \"../FormComponents/common/styleLibrary\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...pageContentStyles,\n });\n\ntype PageLayoutProps = {\n className?: string;\n classes?: any;\n children: any;\n};\n\nconst PageLayout = ({ classes, className = \"\", children }: PageLayoutProps) => {\n return (\n

\n \n \n {children}\n \n \n
\n );\n};\n\nexport default withStyles(styles)(PageLayout);\n","// You should 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 history from \"../../../history\";\nimport { Route, Router, Switch, withRouter } from \"react-router-dom\";\nimport { connect } from \"react-redux\";\nimport { AppState } from \"../../../store\";\nimport { setMenuOpen } from \"../../../actions\";\nimport NotFoundPage from \"../../NotFoundPage\";\nimport withSuspense from \"../Common/Components/withSuspense\";\nimport { IAM_PAGES } from \"../../../common/SecureComponent/permissions\";\nconst ListPolicies = withSuspense(React.lazy(() => import(\"./ListPolicies\")));\nconst PolicyDetails = withSuspense(React.lazy(() => import(\"./PolicyDetails\")));\n\nconst mapState = (state: AppState) => ({\n open: state.system.sidebarOpen,\n});\n\nconst connector = connect(mapState, { setMenuOpen });\n\nconst Policies = () => {\n return (\n \n \n \n \n \n \n \n \n );\n};\n\nexport default withRouter(connector(Policies));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should 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 Typography from \"@mui/material/Typography\";\nimport Link from \"@mui/material/Link\";\n\nexport default function Copyright() {\n return (\n \n {\"Copyright © \"}\n \n MinIO\n {\" \"}\n {new Date().getFullYear()}\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 from \"react\";\nimport Box from \"@mui/material/Box\";\nimport Copyright from \"../common/Copyright\";\nimport PageLayout from \"./Console/Common/Layout/PageLayout\";\n\nconst NotFound: React.FC = () => {\n return (\n \n \n \n 404 Error\n \n \n Sorry, the page could not be found.\n \n \n \n \n \n \n );\n};\n\nexport default NotFound;\n","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getLinkUtilityClass(slot) {\n return generateUtilityClass('MuiLink', slot);\n}\nconst linkClasses = generateUtilityClasses('MuiLink', ['root', 'underlineNone', 'underlineHover', 'underlineAlways', 'button', 'focusVisible']);\nexport default linkClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"color\", \"component\", \"onBlur\", \"onFocus\", \"TypographyClasses\", \"underline\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { elementTypeAcceptingRef } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { alpha, getPath } from '@mui/system';\nimport capitalize from '../utils/capitalize';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport useIsFocusVisible from '../utils/useIsFocusVisible';\nimport useForkRef from '../utils/useForkRef';\nimport Typography from '../Typography';\nimport linkClasses, { getLinkUtilityClass } from './linkClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst colorTransformations = {\n primary: 'primary.main',\n textPrimary: 'text.primary',\n secondary: 'secondary.main',\n textSecondary: 'text.secondary',\n error: 'error.main'\n};\n\nconst transformDeprecatedColors = color => {\n return colorTransformations[color] || color;\n};\n\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n component,\n focusVisible,\n underline\n } = ownerState;\n const slots = {\n root: ['root', `underline${capitalize(underline)}`, component === 'button' && 'button', focusVisible && 'focusVisible']\n };\n return composeClasses(slots, getLinkUtilityClass, classes);\n};\n\nconst LinkRoot = styled(Typography, {\n name: 'MuiLink',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[`underline${capitalize(ownerState.underline)}`], ownerState.component === 'button' && styles.button];\n }\n})(({\n theme,\n ownerState\n}) => {\n const color = getPath(theme, `palette.${transformDeprecatedColors(ownerState.color)}`) || ownerState.color;\n return _extends({}, ownerState.underline === 'none' && {\n textDecoration: 'none'\n }, ownerState.underline === 'hover' && {\n textDecoration: 'none',\n '&:hover': {\n textDecoration: 'underline'\n }\n }, ownerState.underline === 'always' && {\n textDecoration: 'underline',\n textDecorationColor: color !== 'inherit' ? alpha(color, 0.4) : undefined,\n '&:hover': {\n textDecorationColor: 'inherit'\n }\n }, ownerState.component === 'button' && {\n position: 'relative',\n WebkitTapHighlightColor: 'transparent',\n backgroundColor: 'transparent',\n // Reset default value\n // We disable the focus ring for mouse, touch and keyboard users.\n outline: 0,\n border: 0,\n margin: 0,\n // Remove the margin in Safari\n borderRadius: 0,\n padding: 0,\n // Remove the padding in Firefox\n cursor: 'pointer',\n userSelect: 'none',\n verticalAlign: 'middle',\n MozAppearance: 'none',\n // Reset\n WebkitAppearance: 'none',\n // Reset\n '&::-moz-focus-inner': {\n borderStyle: 'none' // Remove Firefox dotted outline.\n\n },\n [`&.${linkClasses.focusVisible}`]: {\n outline: 'auto'\n }\n });\n});\nconst Link = /*#__PURE__*/React.forwardRef(function Link(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiLink'\n });\n\n const {\n className,\n color = 'primary',\n component = 'a',\n onBlur,\n onFocus,\n TypographyClasses,\n underline = 'always',\n variant = 'inherit'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const {\n isFocusVisibleRef,\n onBlur: handleBlurVisible,\n onFocus: handleFocusVisible,\n ref: focusVisibleRef\n } = useIsFocusVisible();\n const [focusVisible, setFocusVisible] = React.useState(false);\n const handlerRef = useForkRef(ref, focusVisibleRef);\n\n const handleBlur = event => {\n handleBlurVisible(event);\n\n if (isFocusVisibleRef.current === false) {\n setFocusVisible(false);\n }\n\n if (onBlur) {\n onBlur(event);\n }\n };\n\n const handleFocus = event => {\n handleFocusVisible(event);\n\n if (isFocusVisibleRef.current === true) {\n setFocusVisible(true);\n }\n\n if (onFocus) {\n onFocus(event);\n }\n };\n\n const ownerState = _extends({}, props, {\n color,\n component,\n focusVisible,\n underline,\n variant\n });\n\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(LinkRoot, _extends({\n className: clsx(classes.root, className),\n classes: TypographyClasses,\n color: color,\n component: component,\n onBlur: handleBlur,\n onFocus: handleFocus,\n ref: handlerRef,\n ownerState: ownerState,\n variant: variant\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? Link.propTypes\n/* remove-proptypes */\n= {\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 /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The color of the link.\n * @default 'primary'\n */\n color: PropTypes\n /* @typescript-to-proptypes-ignore */\n .any,\n\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 /**\n * @ignore\n */\n onBlur: PropTypes.func,\n\n /**\n * @ignore\n */\n onFocus: 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\n /**\n * `classes` prop applied to the [`Typography`](/api/typography/) element.\n */\n TypographyClasses: PropTypes.object,\n\n /**\n * Controls when the link should have an underline.\n * @default 'always'\n */\n underline: PropTypes.oneOf(['always', 'hover', 'none']),\n\n /**\n * Applies the theme typography styles.\n * @default 'inherit'\n */\n variant: PropTypes\n /* @typescript-to-proptypes-ignore */\n .oneOfType([PropTypes.oneOf(['body1', 'body2', 'button', 'caption', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'inherit', 'overline', 'subtitle1', 'subtitle2']), PropTypes.string])\n} : void 0;\nexport default Link;"],"names":["WrappedComponent","fallback","ComponentWithSuspense","props","Suspense","withStyles","theme","createStyles","pageContentStyles","classes","className","children","contentSpacer","container","item","xs","ListPolicies","withSuspense","React","PolicyDetails","connector","connect","state","open","system","sidebarOpen","setMenuOpen","withRouter","history","path","IAM_PAGES","exact","component","NotFoundPage","Copyright","Typography","variant","color","align","Link","href","Date","getFullYear","PageLayout","Box","sx","display","alignItems","justifyContent","height","textAlign","margin","flexFlow","fontSize","fontStyle","fontWeight","mt","getLinkUtilityClass","slot","generateUtilityClass","generateUtilityClasses","_excluded","colorTransformations","primary","textPrimary","secondary","textSecondary","error","LinkRoot","styled","name","overridesResolver","styles","ownerState","root","capitalize","underline","button","getPath","transformDeprecatedColors","_extends","textDecoration","textDecorationColor","alpha","undefined","position","WebkitTapHighlightColor","backgroundColor","outline","border","borderRadius","padding","cursor","userSelect","verticalAlign","MozAppearance","WebkitAppearance","borderStyle","linkClasses","inProps","ref","useThemeProps","onBlur","onFocus","TypographyClasses","other","_objectWithoutPropertiesLoose","useIsFocusVisible","isFocusVisibleRef","handleBlurVisible","handleFocusVisible","focusVisibleRef","focusVisible","setFocusVisible","handlerRef","useForkRef","slots","composeClasses","useUtilityClasses","_jsx","clsx","event","current"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/1612.2e1e75b9.chunk.js b/portal-ui/build/static/js/1612.2e1e75b9.chunk.js new file mode 100644 index 000000000..f56d37b27 --- /dev/null +++ b/portal-ui/build/static/js/1612.2e1e75b9.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1612],{53224:function(e,t,n){var a=n(18489),i=n(83738),o=(n(50390),n(70758)),r=n(62449),l=n(62559),s=["onClick","text","disabled","tooltip","icon"],c=(0,r.Z)((function(e){return{root:{padding:"7px",color:function(t){return function(t){var n=t.variant,a=t.color,i=e.palette.primary.main;return"primary"===a&&"contained"===n?i=e.palette.primary.contrastText:"primary"===a&&"outlined"===n?i=e.palette.primary.main:"secondary"===a&&(i=e.palette.secondary.main),i}(t)},borderColor:function(t){return"secondary"===t.color?e.palette.secondary.main:e.palette.primary.main},"& svg.min-icon":{width:12,marginLeft:function(e){return e.text?"5px":"0px"},"@media (max-width: 900px)":{width:16,marginLeft:"0px !important"}}}}}));t.Z=function(e){var t=c(e),n=e.onClick,r=e.text,d=void 0===r?"":r,u=e.disabled,p=void 0!==u&&u,m=e.tooltip,v=e.icon,f=void 0===v?null:v,g=(0,i.Z)(e,s);return(0,l.jsxs)(o.Z,(0,a.Z)((0,a.Z)({classes:t,tooltip:m||d,variant:"outlined",onClick:n,disabled:p,color:"secondary",size:"medium",sx:{border:"1px solid #f44336","& span":{fontSize:14,"@media (max-width: 900px)":{display:"none"}}}},g),{},{children:[(0,l.jsx)("span",{children:d})," ",f]}))}},55572:function(e,t,n){var a=n(35531),i=n(18489),o=n(50390),r=n(86509),l=n(4285),s=n(72462),c=n(66964),d=n(94187),u=n(95467),p=n(96152),m=n(43615),v=n(84201),f=n(10369),g=n(62559);t.Z=(0,l.Z)((function(e){return(0,r.Z)((0,i.Z)({buttonContainer:{textAlign:"right"},multiContainer:{display:"flex",alignItems:"center",justifyContent:"flex-start"},sizeFactorContainer:{marginLeft:8},bottomContainer:{display:"flex",flexGrow:1,alignItems:"center","& div":{flexGrow:1,width:"100%"}},factorElements:{display:"flex",justifyContent:"flex-start"},sizeNumber:{fontSize:35,fontWeight:700,textAlign:"center"},sizeDescription:{fontSize:14,color:"#777",textAlign:"center"},shortened:{gridTemplateColumns:"auto auto 20px 20px",display:"grid",gridGap:20,paddingRight:20}},s.oO))}))((function(e){var t=e.classes,n=e.paramName,i=e.newValues,r=e.setNewValues,l=e.error,s=e.setError,h=function(e){s((0,f.h)(l,e))};(0,o.useEffect)((function(){for(var e=[],t=0;t1){var e=(0,a.Z)(i);e.splice(s,1),r(e)}},children:(0,g.jsx)(m.Z,{})})})]})},"keyvalue-".concat(s.toString()))}));return(0,g.jsx)(o.Fragment,{children:Z})}))},88370:function(e,t,n){var a=n(18489),i=n(50390),o=n(34424),r=n(38342),l=n.n(r),s=n(86509),c=n(4285),d=n(72462),u=n(8174),p=n(62559),m=(0,o.$j)((function(e){return{loadingTenant:e.tenants.tenantDetails.loadingTenant,selectedTenant:e.tenants.tenantDetails.currentTenant,tenant:e.tenants.tenantDetails.tenantInfo,logEnabled:l()(e.tenants.tenantDetails.tenantInfo,"logEnabled",!1),monitoringEnabled:l()(e.tenants.tenantDetails.tenantInfo,"monitoringEnabled",!1),encryptionEnabled:l()(e.tenants.tenantDetails.tenantInfo,"encryptionEnabled",!1),minioTLS:l()(e.tenants.tenantDetails.tenantInfo,"minioTLS",!1),consoleTLS:l()(e.tenants.tenantDetails.tenantInfo,"consoleTLS",!1),consoleEnabled:l()(e.tenants.tenantDetails.tenantInfo,"consoleEnabled",!1),adEnabled:l()(e.tenants.tenantDetails.tenantInfo,"idpAdEnabled",!1),oidcEnabled:l()(e.tenants.tenantDetails.tenantInfo,"idpOidcEnabled",!1)}}),null);t.Z=(0,c.Z)((function(e){return(0,s.Z)((0,a.Z)((0,a.Z)({},d.oZ),{},{centerAlign:{textAlign:"center"},listHeight:{height:"50"}},(0,d.Bz)(e.spacing(4))))}))(m((function(e){var t=e.classes,n=e.records,a=e.recordName;return(0,p.jsx)(i.Fragment,{children:(0,p.jsx)(u.Z,{columns:[{label:"Key",elementKey:"key"},{label:"Value",elementKey:"value"}],isLoading:!1,records:n,itemActions:[],entityName:a,idField:"name",customPaperHeight:t.listHeight})})})))},96152:function(e,t,n){var a=n(64119);t.Z=void 0;var i=a(n(66830)),o=n(62559),r=(0,i.default)((0,o.jsx)("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"}),"Add");t.Z=r},43615:function(e,t,n){var a=n(64119);t.Z=void 0;var i=a(n(66830)),o=n(62559),r=(0,i.default)((0,o.jsx)("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z"}),"Delete");t.Z=r},4247:function(e,t,n){n.d(t,{V:function(){return i}});var a=n(10594);function i(e){return(0,a.Z)("MuiDivider",e)}var o=(0,n(43349).Z)("MuiDivider",["root","absolute","fullWidth","inset","middle","flexItem","light","vertical","withChildren","withChildrenVertical","textAlignRight","textAlignLeft","wrapper","wrapperVertical"]);t.Z=o},31680:function(e,t,n){n.d(t,{Z:function(){return j}});var a=n(36222),i=n(1048),o=n(32793),r=n(50390),l=n(44977),s=n(50076),c=n(36128),d=n(8208),u=n(15573),p=n(57308),m=n(86875),v=n(40839),f=n(3299),g=n(4247),h=n(2198),Z=n(23586),b=n(10594);function x(e){return(0,b.Z)("MuiMenuItem",e)}var y=(0,n(43349).Z)("MuiMenuItem",["root","focusVisible","dense","disabled","divider","gutters","selected"]),k=n(62559),C=["autoFocus","component","dense","divider","disableGutters","focusVisibleClassName","role","tabIndex"],S=(0,d.ZP)(m.Z,{shouldForwardProp:function(e){return(0,d.FO)(e)||"classes"===e},name:"MuiMenuItem",slot:"Root",overridesResolver:function(e,t){var n=e.ownerState;return[t.root,n.dense&&t.dense,n.divider&&t.divider,!n.disableGutters&&t.gutters]}})((function(e){var t,n=e.theme,i=e.ownerState;return(0,o.Z)({},n.typography.body1,{display:"flex",justifyContent:"flex-start",alignItems:"center",position:"relative",textDecoration:"none",minHeight:48,paddingTop:6,paddingBottom:6,boxSizing:"border-box",whiteSpace:"nowrap"},!i.disableGutters&&{paddingLeft:16,paddingRight:16},i.divider&&{borderBottom:"1px solid ".concat(n.palette.divider),backgroundClip:"padding-box"},(t={"&:hover":{textDecoration:"none",backgroundColor:n.palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}}},(0,a.Z)(t,"&.".concat(y.selected),(0,a.Z)({backgroundColor:(0,c.Fq)(n.palette.primary.main,n.palette.action.selectedOpacity)},"&.".concat(y.focusVisible),{backgroundColor:(0,c.Fq)(n.palette.primary.main,n.palette.action.selectedOpacity+n.palette.action.focusOpacity)})),(0,a.Z)(t,"&.".concat(y.selected,":hover"),{backgroundColor:(0,c.Fq)(n.palette.primary.main,n.palette.action.selectedOpacity+n.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:(0,c.Fq)(n.palette.primary.main,n.palette.action.selectedOpacity)}}),(0,a.Z)(t,"&.".concat(y.focusVisible),{backgroundColor:n.palette.action.focus}),(0,a.Z)(t,"&.".concat(y.disabled),{opacity:n.palette.action.disabledOpacity}),(0,a.Z)(t,"& + .".concat(g.Z.root),{marginTop:n.spacing(1),marginBottom:n.spacing(1)}),(0,a.Z)(t,"& + .".concat(g.Z.inset),{marginLeft:52}),(0,a.Z)(t,"& .".concat(Z.Z.root),{marginTop:0,marginBottom:0}),(0,a.Z)(t,"& .".concat(Z.Z.inset),{paddingLeft:36}),(0,a.Z)(t,"& .".concat(h.Z.root),{minWidth:36}),t),!i.dense&&(0,a.Z)({},n.breakpoints.up("sm"),{minHeight:"auto"}),i.dense&&(0,o.Z)({minHeight:32,paddingTop:4,paddingBottom:4},n.typography.body2,(0,a.Z)({},"& .".concat(h.Z.root," svg"),{fontSize:"1.25rem"})))})),j=r.forwardRef((function(e,t){var n=(0,u.Z)({props:e,name:"MuiMenuItem"}),a=n.autoFocus,c=void 0!==a&&a,d=n.component,m=void 0===d?"li":d,g=n.dense,h=void 0!==g&&g,Z=n.divider,b=void 0!==Z&&Z,y=n.disableGutters,j=void 0!==y&&y,w=n.focusVisibleClassName,I=n.role,z=void 0===I?"menuitem":I,D=n.tabIndex,V=(0,i.Z)(n,C),E=r.useContext(p.Z),M={dense:h||E.dense||!1,disableGutters:j},L=r.useRef(null);(0,v.Z)((function(){c&&L.current&&L.current.focus()}),[c]);var T,A=(0,o.Z)({},n,{dense:M.dense,divider:b,disableGutters:j}),F=function(e){var t=e.disabled,n=e.dense,a=e.divider,i=e.disableGutters,r=e.selected,l=e.classes,c={root:["root",n&&"dense",t&&"disabled",!i&&"gutters",a&&"divider",r&&"selected"]},d=(0,s.Z)(c,x,l);return(0,o.Z)({},l,d)}(n),G=(0,f.Z)(L,t);return n.disabled||(T=void 0!==D?D:-1),(0,k.jsx)(p.Z.Provider,{value:M,children:(0,k.jsx)(S,(0,o.Z)({ref:G,role:z,tabIndex:T,component:m,focusVisibleClassName:(0,l.Z)(F.focusVisible,w)},V,{ownerState:A,classes:F}))})}))}}]); +//# sourceMappingURL=1612.2e1e75b9.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/1612.2e1e75b9.chunk.js.map b/portal-ui/build/static/js/1612.2e1e75b9.chunk.js.map new file mode 100644 index 000000000..c49c5517f --- /dev/null +++ b/portal-ui/build/static/js/1612.2e1e75b9.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/1612.2e1e75b9.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/SummaryItems/RBIconButton.tsx","screens/Console/Tenants/TenantDetails/KeyPairEdit.tsx","screens/Console/Tenants/TenantDetails/KeyPairView.tsx","../node_modules/@mui/icons-material/Add.js","../node_modules/@mui/icons-material/Delete.js","../node_modules/@mui/material/Divider/dividerClasses.js","../node_modules/@mui/material/MenuItem/menuItemClasses.js","../node_modules/@mui/material/MenuItem/MenuItem.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 BoxIconButton from \"../../../Common/BoxIconButton/BoxIconButton\";\nimport { IconButtonProps } from \"@mui/material\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { Theme } from \"@mui/material/styles\";\n\ntype DeleteButtonProps = {\n onClick: (e: any) => void;\n text?: string;\n disabled?: boolean;\n size?: string;\n tooltip?: string;\n classes?: any;\n icon?: React.ReactNode;\n [x: string]: any;\n};\n\ntype RBIconProps = Partial & DeleteButtonProps;\n\nconst useStyles = makeStyles((theme: Theme) => {\n const getButtonColor = (props: RBIconProps) => {\n const { variant, color } = props;\n\n let tgtColor = theme.palette.primary.main;\n\n if (color === \"primary\" && variant === \"contained\") {\n tgtColor = theme.palette.primary.contrastText;\n } else if (color === \"primary\" && variant === \"outlined\") {\n tgtColor = theme.palette.primary.main;\n } else if (color === \"secondary\") {\n tgtColor = theme.palette.secondary.main;\n }\n\n return tgtColor;\n };\n\n return {\n root: {\n padding: \"7px\",\n color: (props: RBIconProps) => getButtonColor(props),\n borderColor: (props: RBIconProps) =>\n props.color === \"secondary\"\n ? theme.palette.secondary.main\n : theme.palette.primary.main,\n \"& svg.min-icon\": {\n width: 12,\n marginLeft: (props: RBIconProps) => (props.text ? \"5px\" : \"0px\"),\n \"@media (max-width: 900px)\": {\n width: 16,\n marginLeft: \"0px !important\",\n },\n },\n },\n };\n});\n\nconst RBIconButton = (props: RBIconProps) => {\n const classes = useStyles(props);\n\n const {\n onClick,\n text = \"\",\n disabled = false,\n tooltip,\n icon = null,\n ...restProps\n } = props;\n\n return (\n \n {text} {icon}\n \n );\n};\nexport default RBIconButton;\n","import React, { Fragment, useEffect } from \"react\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport { modalBasic } from \"../../Common/FormComponents/common/styleLibrary\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport { IconButton, Tooltip } from \"@mui/material\";\nimport AddIcon from \"@mui/icons-material/Add\";\nimport DeleteIcon from \"@mui/icons-material/Delete\";\nimport { IKeyValue } from \"../ListTenants/types\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../utils/validationFunctions\";\nimport { clearValidationError } from \"../utils\";\n\ninterface IKeyPairEditProps {\n classes: any;\n paramName: string;\n error: any;\n setError: (e: any) => void;\n newValues: IKeyValue[];\n setNewValues: (vals: IKeyValue[]) => void;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n buttonContainer: {\n textAlign: \"right\",\n },\n multiContainer: {\n display: \"flex\",\n alignItems: \"center\" as const,\n justifyContent: \"flex-start\" as const,\n },\n sizeFactorContainer: {\n marginLeft: 8,\n },\n bottomContainer: {\n display: \"flex\",\n flexGrow: 1,\n alignItems: \"center\",\n \"& div\": {\n flexGrow: 1,\n width: \"100%\",\n },\n },\n factorElements: {\n display: \"flex\",\n justifyContent: \"flex-start\",\n },\n sizeNumber: {\n fontSize: 35,\n fontWeight: 700,\n textAlign: \"center\",\n },\n sizeDescription: {\n fontSize: 14,\n color: \"#777\",\n textAlign: \"center\",\n },\n shortened: {\n gridTemplateColumns: \"auto auto 20px 20px\",\n display: \"grid\",\n gridGap: 20,\n paddingRight: 20,\n },\n ...modalBasic,\n });\n\nconst KeyPairEdit = ({\n classes,\n paramName,\n newValues,\n setNewValues,\n error,\n setError,\n}: IKeyPairEditProps) => {\n const cleanValidation = (fieldName: string) => {\n setError(clearValidationError(error, fieldName));\n };\n\n useEffect(() => {\n let keyPairValidation: IValidation[] = [];\n\n for (var i = 0; i < newValues.length; i++) {\n keyPairValidation.push({\n fieldKey: `key-${i.toString()}`,\n required: false,\n value: newValues[i].key,\n pattern: /^[a-zA-Z0-9-_.]{1,63}$/,\n customPatternMessage: \"Invalid key\",\n });\n keyPairValidation.push({\n fieldKey: `val-${i.toString()}`,\n required: false,\n value: newValues[i].value,\n pattern: /^[a-zA-Z0-9-_.]{1,63}$/,\n customPatternMessage: \"Invalid value\",\n });\n }\n\n const commonVal = commonFormValidation(keyPairValidation);\n setError(commonVal);\n }, [newValues, setError]);\n\n let keyValueInputs = newValues.map((_, index) => {\n return (\n \n
\n {\n let tempLabels = [...newValues];\n tempLabels[index].key = e.target.value;\n setNewValues(tempLabels);\n cleanValidation(`key-${index.toString()}`);\n }}\n index={index}\n key={`csv-key-${index.toString()}`}\n error={error[`key-${index.toString()}`] || \"\"}\n />\n {\n let tempLabels = [...newValues];\n tempLabels[index].value = e.target.value;\n setNewValues(tempLabels);\n cleanValidation(`val-${index.toString()}`);\n }}\n index={index}\n key={`csv-val-${index.toString()}`}\n error={error[`val-${index.toString()}`] || \"\"}\n />\n \n {\n let tempLabels = [...newValues];\n tempLabels.push({ key: \"\", value: \"\" });\n setNewValues(tempLabels);\n }}\n >\n \n \n \n \n {\n if (newValues.length === 1) {\n setNewValues([{ key: \"\", value: \"\" }]);\n }\n if (newValues.length > 1) {\n let tempLabels = [...newValues];\n tempLabels.splice(index, 1);\n setNewValues(tempLabels);\n }\n }}\n >\n \n \n \n
\n
\n );\n });\n\n return {keyValueInputs};\n};\n\nexport default withStyles(styles)(KeyPairEdit);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You 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 { connect } from \"react-redux\";\nimport get from \"lodash/get\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport {\n containerForHeader,\n tenantDetailsStyles,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport { AppState } from \"../../../../store\";\nimport TableWrapper from \"../../Common/TableWrapper/TableWrapper\";\nimport { IKeyValue } from \"../ListTenants/types\";\n\ninterface IKeyPairView {\n classes: any;\n records: IKeyValue[];\n recordName: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...tenantDetailsStyles,\n centerAlign: {\n textAlign: \"center\",\n },\n listHeight: {\n height: \"50\",\n },\n ...containerForHeader(theme.spacing(4)),\n });\n\nconst KeyPairView = ({ classes, records, recordName }: IKeyPairView) => {\n return (\n \n \n \n );\n};\n\nconst mapState = (state: AppState) => ({\n loadingTenant: state.tenants.tenantDetails.loadingTenant,\n selectedTenant: state.tenants.tenantDetails.currentTenant,\n tenant: state.tenants.tenantDetails.tenantInfo,\n logEnabled: get(state.tenants.tenantDetails.tenantInfo, \"logEnabled\", false),\n monitoringEnabled: get(\n state.tenants.tenantDetails.tenantInfo,\n \"monitoringEnabled\",\n false\n ),\n encryptionEnabled: get(\n state.tenants.tenantDetails.tenantInfo,\n \"encryptionEnabled\",\n false\n ),\n minioTLS: get(state.tenants.tenantDetails.tenantInfo, \"minioTLS\", false),\n consoleTLS: get(state.tenants.tenantDetails.tenantInfo, \"consoleTLS\", false),\n consoleEnabled: get(\n state.tenants.tenantDetails.tenantInfo,\n \"consoleEnabled\",\n false\n ),\n adEnabled: get(state.tenants.tenantDetails.tenantInfo, \"idpAdEnabled\", false),\n oidcEnabled: get(\n state.tenants.tenantDetails.tenantInfo,\n \"idpOidcEnabled\",\n false\n ),\n});\n\nconst connector = connect(mapState, null);\n\nexport default withStyles(styles)(connector(KeyPairView));\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z\"\n}), 'Add');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z\"\n}), 'Delete');\n\nexports.default = _default;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getDividerUtilityClass(slot) {\n return generateUtilityClass('MuiDivider', slot);\n}\nconst dividerClasses = generateUtilityClasses('MuiDivider', ['root', 'absolute', 'fullWidth', 'inset', 'middle', 'flexItem', 'light', 'vertical', 'withChildren', 'withChildrenVertical', 'textAlignRight', 'textAlignLeft', 'wrapper', 'wrapperVertical']);\nexport default dividerClasses;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getMenuItemUtilityClass(slot) {\n return generateUtilityClass('MuiMenuItem', slot);\n}\nconst menuItemClasses = generateUtilityClasses('MuiMenuItem', ['root', 'focusVisible', 'dense', 'disabled', 'divider', 'gutters', 'selected']);\nexport default menuItemClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"autoFocus\", \"component\", \"dense\", \"divider\", \"disableGutters\", \"focusVisibleClassName\", \"role\", \"tabIndex\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { alpha } from '@mui/system';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport ListContext from '../List/ListContext';\nimport ButtonBase from '../ButtonBase';\nimport useEnhancedEffect from '../utils/useEnhancedEffect';\nimport useForkRef from '../utils/useForkRef';\nimport { dividerClasses } from '../Divider';\nimport { listItemIconClasses } from '../ListItemIcon';\nimport { listItemTextClasses } from '../ListItemText';\nimport menuItemClasses, { getMenuItemUtilityClass } from './menuItemClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const overridesResolver = (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.dense && styles.dense, ownerState.divider && styles.divider, !ownerState.disableGutters && styles.gutters];\n};\n\nconst useUtilityClasses = ownerState => {\n const {\n disabled,\n dense,\n divider,\n disableGutters,\n selected,\n classes\n } = ownerState;\n const slots = {\n root: ['root', dense && 'dense', disabled && 'disabled', !disableGutters && 'gutters', divider && 'divider', selected && 'selected']\n };\n const composedClasses = composeClasses(slots, getMenuItemUtilityClass, classes);\n return _extends({}, classes, composedClasses);\n};\n\nconst MenuItemRoot = styled(ButtonBase, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiMenuItem',\n slot: 'Root',\n overridesResolver\n})(({\n theme,\n ownerState\n}) => _extends({}, theme.typography.body1, {\n display: 'flex',\n justifyContent: 'flex-start',\n alignItems: 'center',\n position: 'relative',\n textDecoration: 'none',\n minHeight: 48,\n paddingTop: 6,\n paddingBottom: 6,\n boxSizing: 'border-box',\n whiteSpace: 'nowrap'\n}, !ownerState.disableGutters && {\n paddingLeft: 16,\n paddingRight: 16\n}, ownerState.divider && {\n borderBottom: `1px solid ${theme.palette.divider}`,\n backgroundClip: 'padding-box'\n}, {\n '&:hover': {\n textDecoration: 'none',\n backgroundColor: theme.palette.action.hover,\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n },\n [`&.${menuItemClasses.selected}`]: {\n backgroundColor: alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity),\n [`&.${menuItemClasses.focusVisible}`]: {\n backgroundColor: alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n }\n },\n [`&.${menuItemClasses.selected}:hover`]: {\n backgroundColor: 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: alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity)\n }\n },\n [`&.${menuItemClasses.focusVisible}`]: {\n backgroundColor: theme.palette.action.focus\n },\n [`&.${menuItemClasses.disabled}`]: {\n opacity: theme.palette.action.disabledOpacity\n },\n [`& + .${dividerClasses.root}`]: {\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1)\n },\n [`& + .${dividerClasses.inset}`]: {\n marginLeft: 52\n },\n [`& .${listItemTextClasses.root}`]: {\n marginTop: 0,\n marginBottom: 0\n },\n [`& .${listItemTextClasses.inset}`]: {\n paddingLeft: 36\n },\n [`& .${listItemIconClasses.root}`]: {\n minWidth: 36\n }\n}, !ownerState.dense && {\n [theme.breakpoints.up('sm')]: {\n minHeight: 'auto'\n }\n}, ownerState.dense && _extends({\n minHeight: 32,\n // https://material.io/components/menus#specs > Dense\n paddingTop: 4,\n paddingBottom: 4\n}, theme.typography.body2, {\n [`& .${listItemIconClasses.root} svg`]: {\n fontSize: '1.25rem'\n }\n})));\nconst MenuItem = /*#__PURE__*/React.forwardRef(function MenuItem(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiMenuItem'\n });\n\n const {\n autoFocus = false,\n component = 'li',\n dense = false,\n divider = false,\n disableGutters = false,\n focusVisibleClassName,\n role = 'menuitem',\n tabIndex: tabIndexProp\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const context = React.useContext(ListContext);\n const childContext = {\n dense: dense || context.dense || false,\n disableGutters\n };\n const menuItemRef = React.useRef(null);\n useEnhancedEffect(() => {\n if (autoFocus) {\n if (menuItemRef.current) {\n menuItemRef.current.focus();\n } else if (process.env.NODE_ENV !== 'production') {\n console.error('MUI: Unable to set focus to a MenuItem whose component has not been rendered.');\n }\n }\n }, [autoFocus]);\n\n const ownerState = _extends({}, props, {\n dense: childContext.dense,\n divider,\n disableGutters\n });\n\n const classes = useUtilityClasses(props);\n const handleRef = useForkRef(menuItemRef, ref);\n let tabIndex;\n\n if (!props.disabled) {\n tabIndex = tabIndexProp !== undefined ? tabIndexProp : -1;\n }\n\n return /*#__PURE__*/_jsx(ListContext.Provider, {\n value: childContext,\n children: /*#__PURE__*/_jsx(MenuItemRoot, _extends({\n ref: handleRef,\n role: role,\n tabIndex: tabIndex,\n component: component,\n focusVisibleClassName: clsx(classes.focusVisible, focusVisibleClassName)\n }, other, {\n ownerState: ownerState,\n classes: classes\n }))\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? MenuItem.propTypes\n/* remove-proptypes */\n= {\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 /**\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 */\n autoFocus: PropTypes.bool,\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\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 /**\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 Menu component.\n * @default false\n */\n dense: PropTypes.bool,\n\n /**\n * @ignore\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true`, the left and right padding is removed.\n * @default false\n */\n disableGutters: PropTypes.bool,\n\n /**\n * If `true`, a 1px light border is added to the bottom of the menu item.\n * @default false\n */\n divider: PropTypes.bool,\n\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 /**\n * @ignore\n */\n role: PropTypes\n /* @typescript-to-proptypes-ignore */\n .string,\n\n /**\n * @ignore\n */\n selected: 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 * @default 0\n */\n tabIndex: PropTypes.number\n} : void 0;\nexport default MenuItem;"],"names":["useStyles","makeStyles","theme","root","padding","color","props","variant","tgtColor","palette","primary","main","contrastText","secondary","getButtonColor","borderColor","width","marginLeft","text","classes","onClick","disabled","tooltip","icon","restProps","size","sx","border","fontSize","display","withStyles","createStyles","buttonContainer","textAlign","multiContainer","alignItems","justifyContent","sizeFactorContainer","bottomContainer","flexGrow","factorElements","sizeNumber","fontWeight","sizeDescription","shortened","gridTemplateColumns","gridGap","paddingRight","modalBasic","paramName","newValues","setNewValues","error","setError","cleanValidation","fieldName","clearValidationError","useEffect","keyPairValidation","i","length","push","fieldKey","toString","required","value","key","pattern","customPatternMessage","commonVal","commonFormValidation","keyValueInputs","map","_","index","Fragment","className","id","label","placeholder","name","onChange","e","tempLabels","target","title","style","splice","connector","connect","state","loadingTenant","tenants","tenantDetails","selectedTenant","currentTenant","tenant","tenantInfo","logEnabled","get","monitoringEnabled","encryptionEnabled","minioTLS","consoleTLS","consoleEnabled","adEnabled","oidcEnabled","tenantDetailsStyles","centerAlign","listHeight","height","containerForHeader","spacing","records","recordName","columns","elementKey","isLoading","itemActions","entityName","idField","customPaperHeight","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","getDividerUtilityClass","slot","generateUtilityClass","dividerClasses","generateUtilityClasses","getMenuItemUtilityClass","_excluded","MenuItemRoot","styled","ButtonBase","shouldForwardProp","prop","rootShouldForwardProp","overridesResolver","styles","ownerState","dense","divider","disableGutters","gutters","_extends","typography","body1","position","textDecoration","minHeight","paddingTop","paddingBottom","boxSizing","whiteSpace","paddingLeft","borderBottom","backgroundClip","backgroundColor","action","hover","menuItemClasses","alpha","selectedOpacity","focusOpacity","hoverOpacity","focus","opacity","disabledOpacity","marginTop","marginBottom","listItemTextClasses","listItemIconClasses","minWidth","breakpoints","up","body2","React","inProps","ref","useThemeProps","autoFocus","component","focusVisibleClassName","role","tabIndexProp","tabIndex","other","_objectWithoutPropertiesLoose","context","ListContext","childContext","menuItemRef","useEnhancedEffect","current","selected","slots","composedClasses","composeClasses","useUtilityClasses","handleRef","useForkRef","undefined","_jsx","children","clsx","focusVisible"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/1666.29b376af.chunk.js b/portal-ui/build/static/js/1666.3eefd4d5.chunk.js similarity index 98% rename from portal-ui/build/static/js/1666.29b376af.chunk.js rename to portal-ui/build/static/js/1666.3eefd4d5.chunk.js index 6edb02b0d..918cc6b3d 100644 --- a/portal-ui/build/static/js/1666.29b376af.chunk.js +++ b/portal-ui/build/static/js/1666.3eefd4d5.chunk.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1666],{23152:function(e,a,n){n.r(a);var t=n(23430),o=n(18489),r=n(50390),s=n(38342),i=n.n(s),l=n(34424),c=n(25594),d=n(66946),u=n(86509),m=n(4285),p=n(72462),x=n(44149),f=n(66964),h=n(76352),g=n(30324),v=n(85615),Z=n(62559),b={setModalErrorSnackMessage:x.zb},j=(0,l.$j)((function(e){var a=e.system;return{distributedSetup:i()(a,"distributedSetup",!1)}}),b);a.default=(0,m.Z)((function(e){return(0,u.Z)((0,o.Z)((0,o.Z)((0,o.Z)({},p.DF),p.ID),p.bK))}))(j((function(e){var a=e.modalOpen,n=e.currentTags,s=e.onCloseAndUpdate,i=e.bucketName,l=e.setModalErrorSnackMessage,u=e.classes,m=(0,r.useState)(""),p=(0,t.Z)(m,2),x=p[0],b=p[1],j=(0,r.useState)(""),C=(0,t.Z)(j,2),y=C[0],N=C[1],k=(0,r.useState)(!1),w=(0,t.Z)(k,2),S=w[0],M=w[1];return(0,Z.jsx)(h.Z,{modalOpen:a,title:"Add New Tag ",onClose:function(){s(!1)},titleIcon:(0,Z.jsx)(v.OC,{}),children:(0,Z.jsxs)(c.ZP,{container:!0,children:[(0,Z.jsxs)("div",{className:u.spacerBottom,children:[(0,Z.jsx)("strong",{children:"Bucket"}),": ",i]}),(0,Z.jsx)(c.ZP,{item:!0,xs:12,className:u.formFieldRow,children:(0,Z.jsx)(f.Z,{value:x,label:"New Tag Key",id:"newTagKey",name:"newTagKey",placeholder:"Enter New Tag Key",onChange:function(e){b(e.target.value)}})}),(0,Z.jsx)(c.ZP,{item:!0,xs:12,className:u.formFieldRow,children:(0,Z.jsx)(f.Z,{value:y,label:"New Tag Label",id:"newTagLabel",name:"newTagLabel",placeholder:"Enter New Tag Label",onChange:function(e){N(e.target.value)}})}),(0,Z.jsxs)(c.ZP,{item:!0,xs:12,className:u.modalButtonBar,children:[(0,Z.jsx)(d.Z,{type:"button",variant:"outlined",color:"primary",onClick:function(){N(""),b("")},children:"Clear"}),(0,Z.jsx)(d.Z,{type:"submit",variant:"contained",color:"primary",disabled:""===y.trim()||""===x.trim()||S,onClick:function(){M(!0);var e={};e[x]=y;var a=(0,o.Z)((0,o.Z)({},n),e);g.Z.invoke("PUT","/api/v1/buckets/".concat(i,"/tags"),{tags:a}).then((function(e){M(!1),s(!0)})).catch((function(e){l(e),M(!1)}))},children:"Save"})]})]})})})))},66964:function(e,a,n){var t=n(18489),o=n(50390),r=n(12066),s=n(25594),i=n(36554),l=n(94187),c=n(95467),d=n(86509),u=n(62449),m=n(4285),p=n(72462),x=n(97538),f=n(44977),h=n(62559),g=(0,u.Z)((function(e){return(0,d.Z)((0,t.Z)({},p.gM))}));function v(e){var a=g();return(0,h.jsx)(r.Z,(0,t.Z)({InputProps:{classes:a}},e))}a.Z=(0,m.Z)((function(e){return(0,d.Z)((0,t.Z)((0,t.Z)((0,t.Z)({},p.YI),p.Hr),{},{textBoxContainer:{flexGrow:1,position:"relative"},overlayAction:{position:"absolute",right:5,top:6,"& svg":{maxWidth:15,maxHeight:15},"&.withLabel":{top:5}},inputLabel:(0,t.Z)((0,t.Z)({},p.YI.inputLabel),{},{fontWeight:"normal"})}))}))((function(e){var a=e.label,n=e.onChange,r=e.value,d=e.id,u=e.name,m=e.type,p=void 0===m?"text":m,g=e.autoComplete,Z=void 0===g?"off":g,b=e.disabled,j=void 0!==b&&b,C=e.multiline,y=void 0!==C&&C,N=e.tooltip,k=void 0===N?"":N,w=e.index,S=void 0===w?0:w,M=e.error,E=void 0===M?"":M,L=e.required,B=void 0!==L&&L,T=e.placeholder,I=void 0===T?"":T,P=e.min,D=e.max,F=e.overlayIcon,z=void 0===F?null:F,O=e.overlayObject,W=void 0===O?null:O,R=e.extraInputProps,K=void 0===R?{}:R,A=e.overlayAction,H=e.noLabelMinWidth,$=void 0!==H&&H,U=e.pattern,Y=void 0===U?"":U,_=e.autoFocus,q=void 0!==_&&_,G=e.classes,Q=e.className,X=void 0===Q?"":Q,J=e.onKeyPress,V=(0,t.Z)({"data-index":S},K);return"number"===p&&P&&(V.min=P),"number"===p&&D&&(V.max=D),""!==Y&&(V.pattern=Y),(0,h.jsx)(o.Fragment,{children:(0,h.jsxs)(s.ZP,{container:!0,className:(0,f.Z)(""!==X?X:"",""!==E?G.errorInField:G.inputBoxContainer),children:[""!==a&&(0,h.jsxs)(i.Z,{htmlFor:d,className:$?G.noMinWidthLabel:G.inputLabel,children:[(0,h.jsxs)("span",{children:[a,B?"*":""]}),""!==k&&(0,h.jsx)("div",{className:G.tooltipContainer,children:(0,h.jsx)(l.Z,{title:k,placement:"top-start",children:(0,h.jsx)("div",{className:G.tooltip,children:(0,h.jsx)(x.Z,{})})})})]}),(0,h.jsxs)("div",{className:G.textBoxContainer,children:[(0,h.jsx)(v,{id:d,name:u,fullWidth:!0,value:r,autoFocus:q,disabled:j,onChange:n,type:p,multiline:y,autoComplete:Z,inputProps:V,error:""!==E,helperText:E,placeholder:I,className:G.inputRebase,onKeyPress:J}),z&&(0,h.jsx)("div",{className:"".concat(G.overlayAction," ").concat(""!==a?"withLabel":""),children:(0,h.jsx)(c.Z,{onClick:A?function(){A()}:function(){return null},size:"small",disableFocusRipple:!1,disableRipple:!1,disableTouchRipple:!1,children:z})}),W&&(0,h.jsx)("div",{className:"".concat(G.overlayAction," ").concat(""!==a?"withLabel":""),children:W})]})]})})}))},76352:function(e,a,n){n.d(a,{Z:function(){return S}});var t,o=n(23430),r=n(18489),s=n(50390),i=n(34424),l=n(95467),c=n(97771),d=n(84402),u=n(78426),m=n(93085),p=n(86509),x=n(4285),f=n(72462),h=n(44149),g=n(38342),v=n.n(g),Z=n(92125),b=n(19538),j=n(21278),C=n(62559),y=function(){clearInterval(t)},N={displayErrorMessage:h.zb},k=(0,i.$j)((function(e){return{modalSnackMessage:e.system.modalSnackBar}}),N)((0,x.Z)((function(e){return(0,p.Z)({modalErrorContainer:{position:"absolute",marginTop:10,width:"80%",backgroundColor:"#fff",border:"#C72C48 1px solid",borderLeftWidth:12,borderRadius:3,zIndex:1e3,padding:"10px 15px",left:"50%",transform:"translateX(-50%)",opacity:0,transitionDuration:"0.2s"},modalErrorShow:{opacity:1},closeButton:{position:"absolute",right:5,fontSize:"small",border:0,backgroundColor:"#fff",cursor:"pointer"},errorTitle:{display:"flex",alignItems:"center"},errorLabel:{color:"#000",fontSize:18,fontWeight:500,marginLeft:5,marginRight:25},messageIcon:{color:"#C72C48",display:"flex","& svg":{width:32,height:32}},detailsButton:{color:"#9C9C9C",display:"flex",alignItems:"center",border:0,backgroundColor:"transparent",paddingLeft:5,fontSize:14,transformDuration:"0.3s",cursor:"pointer"},extraDetailsContainer:{fontStyle:"italic",color:"#9C9C9C",lineHeight:0,padding:"0 10px",transition:"all .2s ease-in-out",overflow:"hidden"},extraDetailsOpen:{lineHeight:1,padding:"3px 10px"},arrowElement:{marginLeft:-5},arrowOpen:{transform:"rotateZ(90deg)",transformDuration:"0.3s"}})}))((function(e){var a=e.classes,n=e.modalSnackMessage,r=e.displayErrorMessage,i=e.customStyle,l=(0,s.useState)(!1),c=(0,o.Z)(l,2),d=c[0],u=c[1],m=(0,s.useState)(!1),p=(0,o.Z)(m,2),x=p[0],f=p[1],h=(0,s.useCallback)((function(){f(!1)}),[]);(0,s.useEffect)((function(){x||(r({detailedError:"",errorMessage:""}),u(!1))}),[r,x]),(0,s.useEffect)((function(){""!==n.message&&"error"===n.type&&f(!0)}),[h,n.message,n.type]);var g=v()(n,"message",""),N=v()(n,"detailedErrorMsg","");return"error"!==n.type||""===g?null:(0,C.jsx)(s.Fragment,{children:(0,C.jsxs)("div",{className:"".concat(a.modalErrorContainer," ").concat(x?a.modalErrorShow:""),style:i,onMouseOver:y,onMouseLeave:function(){t=setInterval(h,1e4)},children:[(0,C.jsx)("button",{className:a.closeButton,onClick:h,children:(0,C.jsx)(j.Z,{})}),(0,C.jsxs)("div",{className:a.errorTitle,children:[(0,C.jsx)("span",{className:a.messageIcon,children:(0,C.jsx)(b.Z,{})}),(0,C.jsx)("span",{className:a.errorLabel,children:g})]}),""!==N&&(0,C.jsxs)(s.Fragment,{children:[(0,C.jsx)("div",{className:a.detailsContainerLink,children:(0,C.jsxs)("button",{className:a.detailsButton,onClick:function(){u(!d)},children:["Details",(0,C.jsx)(Z.Z,{className:"".concat(a.arrowElement," ").concat(d?a.arrowOpen:"")})]})}),(0,C.jsx)("div",{className:"".concat(a.extraDetailsContainer," ").concat(d?a.extraDetailsOpen:""),children:N})]})]})})}))),w=(0,i.$j)((function(e){return{modalSnackMessage:e.system.modalSnackBar}}),{setModalSnackMessage:h.MK}),S=(0,x.Z)((function(e){return(0,p.Z)((0,r.Z)((0,r.Z)({},f.Qw),{},{root:{"& .MuiPaper-root":{padding:"0 2rem 2rem 1rem"}},content:{padding:25,paddingBottom:0},customDialogSize:{width:"100%",maxWidth:765}},f.sN))}))(w((function(e){var a=e.onClose,n=e.modalOpen,t=e.title,i=e.children,p=e.classes,x=e.wideLimit,f=void 0===x||x,h=e.modalSnackMessage,g=e.noContentPadding,v=e.setModalSnackMessage,Z=e.titleIcon,b=void 0===Z?null:Z,y=(0,s.useState)(!1),N=(0,o.Z)(y,2),w=N[0],S=N[1];(0,s.useEffect)((function(){v("")}),[v]),(0,s.useEffect)((function(){if(h){if(""===h.message)return void S(!1);"error"!==h.type&&S(!0)}}),[h]);var M=f?{classes:{paper:p.customDialogSize}}:{maxWidth:"lg",fullWidth:!0},E="";return h&&(E=h.detailedErrorMsg,(""===h.detailedErrorMsg||h.detailedErrorMsg.length<5)&&(E=h.message)),(0,C.jsxs)(d.Z,(0,r.Z)((0,r.Z)({open:n,classes:p},M),{},{scroll:"paper",onClose:function(e,n){"backdropClick"!==n&&a()},className:p.root,children:[(0,C.jsxs)(u.Z,{className:p.title,children:[(0,C.jsxs)("div",{className:p.titleText,children:[b," ",t]}),(0,C.jsx)("div",{className:p.closeContainer,children:(0,C.jsx)(l.Z,{"aria-label":"close",className:p.closeButton,onClick:a,disableRipple:!0,size:"small",children:(0,C.jsx)(j.Z,{})})})]}),(0,C.jsx)(k,{}),(0,C.jsx)(c.Z,{open:w,className:p.snackBarModal,onClose:function(){S(!1),v("")},message:E,ContentProps:{className:"".concat(p.snackBar," ").concat(h&&"error"===h.type?p.errorSnackBar:"")},autoHideDuration:h&&"error"===h.type?1e4:5e3}),(0,C.jsx)(m.Z,{className:g?"":p.content,children:i})]}))})))}}]); -//# sourceMappingURL=1666.29b376af.chunk.js.map \ No newline at end of file +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1666],{23152:function(e,a,n){n.r(a);var t=n(23430),o=n(18489),r=n(50390),s=n(38342),i=n.n(s),l=n(34424),c=n(25594),d=n(66946),u=n(86509),m=n(4285),p=n(72462),x=n(44149),f=n(66964),h=n(76352),g=n(30324),v=n(85204),Z=n(62559),b={setModalErrorSnackMessage:x.zb},j=(0,l.$j)((function(e){var a=e.system;return{distributedSetup:i()(a,"distributedSetup",!1)}}),b);a.default=(0,m.Z)((function(e){return(0,u.Z)((0,o.Z)((0,o.Z)((0,o.Z)({},p.DF),p.ID),p.bK))}))(j((function(e){var a=e.modalOpen,n=e.currentTags,s=e.onCloseAndUpdate,i=e.bucketName,l=e.setModalErrorSnackMessage,u=e.classes,m=(0,r.useState)(""),p=(0,t.Z)(m,2),x=p[0],b=p[1],j=(0,r.useState)(""),C=(0,t.Z)(j,2),y=C[0],N=C[1],k=(0,r.useState)(!1),w=(0,t.Z)(k,2),S=w[0],M=w[1];return(0,Z.jsx)(h.Z,{modalOpen:a,title:"Add New Tag ",onClose:function(){s(!1)},titleIcon:(0,Z.jsx)(v.OC,{}),children:(0,Z.jsxs)(c.ZP,{container:!0,children:[(0,Z.jsxs)("div",{className:u.spacerBottom,children:[(0,Z.jsx)("strong",{children:"Bucket"}),": ",i]}),(0,Z.jsx)(c.ZP,{item:!0,xs:12,className:u.formFieldRow,children:(0,Z.jsx)(f.Z,{value:x,label:"New Tag Key",id:"newTagKey",name:"newTagKey",placeholder:"Enter New Tag Key",onChange:function(e){b(e.target.value)}})}),(0,Z.jsx)(c.ZP,{item:!0,xs:12,className:u.formFieldRow,children:(0,Z.jsx)(f.Z,{value:y,label:"New Tag Label",id:"newTagLabel",name:"newTagLabel",placeholder:"Enter New Tag Label",onChange:function(e){N(e.target.value)}})}),(0,Z.jsxs)(c.ZP,{item:!0,xs:12,className:u.modalButtonBar,children:[(0,Z.jsx)(d.Z,{type:"button",variant:"outlined",color:"primary",onClick:function(){N(""),b("")},children:"Clear"}),(0,Z.jsx)(d.Z,{type:"submit",variant:"contained",color:"primary",disabled:""===y.trim()||""===x.trim()||S,onClick:function(){M(!0);var e={};e[x]=y;var a=(0,o.Z)((0,o.Z)({},n),e);g.Z.invoke("PUT","/api/v1/buckets/".concat(i,"/tags"),{tags:a}).then((function(e){M(!1),s(!0)})).catch((function(e){l(e),M(!1)}))},children:"Save"})]})]})})})))},66964:function(e,a,n){var t=n(18489),o=n(50390),r=n(12066),s=n(25594),i=n(36554),l=n(94187),c=n(95467),d=n(86509),u=n(62449),m=n(4285),p=n(72462),x=n(97538),f=n(44977),h=n(62559),g=(0,u.Z)((function(e){return(0,d.Z)((0,t.Z)({},p.gM))}));function v(e){var a=g();return(0,h.jsx)(r.Z,(0,t.Z)({InputProps:{classes:a}},e))}a.Z=(0,m.Z)((function(e){return(0,d.Z)((0,t.Z)((0,t.Z)((0,t.Z)({},p.YI),p.Hr),{},{textBoxContainer:{flexGrow:1,position:"relative"},overlayAction:{position:"absolute",right:5,top:6,"& svg":{maxWidth:15,maxHeight:15},"&.withLabel":{top:5}},inputLabel:(0,t.Z)((0,t.Z)({},p.YI.inputLabel),{},{fontWeight:"normal"})}))}))((function(e){var a=e.label,n=e.onChange,r=e.value,d=e.id,u=e.name,m=e.type,p=void 0===m?"text":m,g=e.autoComplete,Z=void 0===g?"off":g,b=e.disabled,j=void 0!==b&&b,C=e.multiline,y=void 0!==C&&C,N=e.tooltip,k=void 0===N?"":N,w=e.index,S=void 0===w?0:w,M=e.error,E=void 0===M?"":M,L=e.required,B=void 0!==L&&L,T=e.placeholder,I=void 0===T?"":T,P=e.min,D=e.max,F=e.overlayIcon,z=void 0===F?null:F,O=e.overlayObject,W=void 0===O?null:O,R=e.extraInputProps,K=void 0===R?{}:R,A=e.overlayAction,H=e.noLabelMinWidth,$=void 0!==H&&H,U=e.pattern,Y=void 0===U?"":U,_=e.autoFocus,q=void 0!==_&&_,G=e.classes,Q=e.className,X=void 0===Q?"":Q,J=e.onKeyPress,V=(0,t.Z)({"data-index":S},K);return"number"===p&&P&&(V.min=P),"number"===p&&D&&(V.max=D),""!==Y&&(V.pattern=Y),(0,h.jsx)(o.Fragment,{children:(0,h.jsxs)(s.ZP,{container:!0,className:(0,f.Z)(""!==X?X:"",""!==E?G.errorInField:G.inputBoxContainer),children:[""!==a&&(0,h.jsxs)(i.Z,{htmlFor:d,className:$?G.noMinWidthLabel:G.inputLabel,children:[(0,h.jsxs)("span",{children:[a,B?"*":""]}),""!==k&&(0,h.jsx)("div",{className:G.tooltipContainer,children:(0,h.jsx)(l.Z,{title:k,placement:"top-start",children:(0,h.jsx)("div",{className:G.tooltip,children:(0,h.jsx)(x.Z,{})})})})]}),(0,h.jsxs)("div",{className:G.textBoxContainer,children:[(0,h.jsx)(v,{id:d,name:u,fullWidth:!0,value:r,autoFocus:q,disabled:j,onChange:n,type:p,multiline:y,autoComplete:Z,inputProps:V,error:""!==E,helperText:E,placeholder:I,className:G.inputRebase,onKeyPress:J}),z&&(0,h.jsx)("div",{className:"".concat(G.overlayAction," ").concat(""!==a?"withLabel":""),children:(0,h.jsx)(c.Z,{onClick:A?function(){A()}:function(){return null},size:"small",disableFocusRipple:!1,disableRipple:!1,disableTouchRipple:!1,children:z})}),W&&(0,h.jsx)("div",{className:"".concat(G.overlayAction," ").concat(""!==a?"withLabel":""),children:W})]})]})})}))},76352:function(e,a,n){n.d(a,{Z:function(){return S}});var t,o=n(23430),r=n(18489),s=n(50390),i=n(34424),l=n(95467),c=n(97771),d=n(84402),u=n(78426),m=n(93085),p=n(86509),x=n(4285),f=n(72462),h=n(44149),g=n(38342),v=n.n(g),Z=n(92125),b=n(19538),j=n(21278),C=n(62559),y=function(){clearInterval(t)},N={displayErrorMessage:h.zb},k=(0,i.$j)((function(e){return{modalSnackMessage:e.system.modalSnackBar}}),N)((0,x.Z)((function(e){return(0,p.Z)({modalErrorContainer:{position:"absolute",marginTop:10,width:"80%",backgroundColor:"#fff",border:"#C72C48 1px solid",borderLeftWidth:12,borderRadius:3,zIndex:1e3,padding:"10px 15px",left:"50%",transform:"translateX(-50%)",opacity:0,transitionDuration:"0.2s"},modalErrorShow:{opacity:1},closeButton:{position:"absolute",right:5,fontSize:"small",border:0,backgroundColor:"#fff",cursor:"pointer"},errorTitle:{display:"flex",alignItems:"center"},errorLabel:{color:"#000",fontSize:18,fontWeight:500,marginLeft:5,marginRight:25},messageIcon:{color:"#C72C48",display:"flex","& svg":{width:32,height:32}},detailsButton:{color:"#9C9C9C",display:"flex",alignItems:"center",border:0,backgroundColor:"transparent",paddingLeft:5,fontSize:14,transformDuration:"0.3s",cursor:"pointer"},extraDetailsContainer:{fontStyle:"italic",color:"#9C9C9C",lineHeight:0,padding:"0 10px",transition:"all .2s ease-in-out",overflow:"hidden"},extraDetailsOpen:{lineHeight:1,padding:"3px 10px"},arrowElement:{marginLeft:-5},arrowOpen:{transform:"rotateZ(90deg)",transformDuration:"0.3s"}})}))((function(e){var a=e.classes,n=e.modalSnackMessage,r=e.displayErrorMessage,i=e.customStyle,l=(0,s.useState)(!1),c=(0,o.Z)(l,2),d=c[0],u=c[1],m=(0,s.useState)(!1),p=(0,o.Z)(m,2),x=p[0],f=p[1],h=(0,s.useCallback)((function(){f(!1)}),[]);(0,s.useEffect)((function(){x||(r({detailedError:"",errorMessage:""}),u(!1))}),[r,x]),(0,s.useEffect)((function(){""!==n.message&&"error"===n.type&&f(!0)}),[h,n.message,n.type]);var g=v()(n,"message",""),N=v()(n,"detailedErrorMsg","");return"error"!==n.type||""===g?null:(0,C.jsx)(s.Fragment,{children:(0,C.jsxs)("div",{className:"".concat(a.modalErrorContainer," ").concat(x?a.modalErrorShow:""),style:i,onMouseOver:y,onMouseLeave:function(){t=setInterval(h,1e4)},children:[(0,C.jsx)("button",{className:a.closeButton,onClick:h,children:(0,C.jsx)(j.Z,{})}),(0,C.jsxs)("div",{className:a.errorTitle,children:[(0,C.jsx)("span",{className:a.messageIcon,children:(0,C.jsx)(b.Z,{})}),(0,C.jsx)("span",{className:a.errorLabel,children:g})]}),""!==N&&(0,C.jsxs)(s.Fragment,{children:[(0,C.jsx)("div",{className:a.detailsContainerLink,children:(0,C.jsxs)("button",{className:a.detailsButton,onClick:function(){u(!d)},children:["Details",(0,C.jsx)(Z.Z,{className:"".concat(a.arrowElement," ").concat(d?a.arrowOpen:"")})]})}),(0,C.jsx)("div",{className:"".concat(a.extraDetailsContainer," ").concat(d?a.extraDetailsOpen:""),children:N})]})]})})}))),w=(0,i.$j)((function(e){return{modalSnackMessage:e.system.modalSnackBar}}),{setModalSnackMessage:h.MK}),S=(0,x.Z)((function(e){return(0,p.Z)((0,r.Z)((0,r.Z)({},f.Qw),{},{root:{"& .MuiPaper-root":{padding:"0 2rem 2rem 1rem"}},content:{padding:25,paddingBottom:0},customDialogSize:{width:"100%",maxWidth:765}},f.sN))}))(w((function(e){var a=e.onClose,n=e.modalOpen,t=e.title,i=e.children,p=e.classes,x=e.wideLimit,f=void 0===x||x,h=e.modalSnackMessage,g=e.noContentPadding,v=e.setModalSnackMessage,Z=e.titleIcon,b=void 0===Z?null:Z,y=(0,s.useState)(!1),N=(0,o.Z)(y,2),w=N[0],S=N[1];(0,s.useEffect)((function(){v("")}),[v]),(0,s.useEffect)((function(){if(h){if(""===h.message)return void S(!1);"error"!==h.type&&S(!0)}}),[h]);var M=f?{classes:{paper:p.customDialogSize}}:{maxWidth:"lg",fullWidth:!0},E="";return h&&(E=h.detailedErrorMsg,(""===h.detailedErrorMsg||h.detailedErrorMsg.length<5)&&(E=h.message)),(0,C.jsxs)(d.Z,(0,r.Z)((0,r.Z)({open:n,classes:p},M),{},{scroll:"paper",onClose:function(e,n){"backdropClick"!==n&&a()},className:p.root,children:[(0,C.jsxs)(u.Z,{className:p.title,children:[(0,C.jsxs)("div",{className:p.titleText,children:[b," ",t]}),(0,C.jsx)("div",{className:p.closeContainer,children:(0,C.jsx)(l.Z,{"aria-label":"close",className:p.closeButton,onClick:a,disableRipple:!0,size:"small",children:(0,C.jsx)(j.Z,{})})})]}),(0,C.jsx)(k,{}),(0,C.jsx)(c.Z,{open:w,className:p.snackBarModal,onClose:function(){S(!1),v("")},message:E,ContentProps:{className:"".concat(p.snackBar," ").concat(h&&"error"===h.type?p.errorSnackBar:"")},autoHideDuration:h&&"error"===h.type?1e4:5e3}),(0,C.jsx)(m.Z,{className:g?"":p.content,children:i})]}))})))}}]); +//# sourceMappingURL=1666.3eefd4d5.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/1666.29b376af.chunk.js.map b/portal-ui/build/static/js/1666.3eefd4d5.chunk.js.map similarity index 99% rename from portal-ui/build/static/js/1666.29b376af.chunk.js.map rename to portal-ui/build/static/js/1666.3eefd4d5.chunk.js.map index 5eb2aa30d..9653cf3ab 100644 --- a/portal-ui/build/static/js/1666.29b376af.chunk.js.map +++ b/portal-ui/build/static/js/1666.3eefd4d5.chunk.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/1666.29b376af.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/AddBucketTagModal.tsx","screens/Console/Common/FormComponents/InputBoxWrapper/InputBoxWrapper.tsx","screens/Console/Common/FormComponents/ModalError/ModalError.tsx","screens/Console/Common/ModalWrapper/ModalWrapper.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport get from \"lodash/get\";\nimport { connect } from \"react-redux\";\nimport { Button, 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 { setModalErrorSnackMessage } from \"../../../../actions\";\nimport { AppState } from \"../../../../store\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport api from \"../../../../common/api\";\nimport { AddNewTagIcon } from \"../../../../icons\";\n\ninterface IBucketTagModal {\n modalOpen: boolean;\n currentTags: any;\n bucketName: string;\n onCloseAndUpdate: (refresh: boolean) => void;\n setModalErrorSnackMessage: typeof setModalErrorSnackMessage;\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 setModalErrorSnackMessage,\n classes,\n}: IBucketTagModal) => {\n const [newKey, setNewKey] = useState(\"\");\n const [newLabel, setNewLabel] = useState(\"\");\n const [isSending, setIsSending] = useState(false);\n\n const resetForm = () => {\n setNewLabel(\"\");\n setNewKey(\"\");\n };\n\n const addTagProcess = () => {\n setIsSending(true);\n const newTag: any = {};\n\n newTag[newKey] = newLabel;\n const newTagList = { ...currentTags, ...newTag };\n\n api\n .invoke(\"PUT\", `/api/v1/buckets/${bucketName}/tags`, {\n tags: newTagList,\n })\n .then((res: any) => {\n setIsSending(false);\n onCloseAndUpdate(true);\n })\n .catch((error: ErrorResponseHandler) => {\n setModalErrorSnackMessage(error);\n setIsSending(false);\n });\n };\n\n return (\n {\n onCloseAndUpdate(false);\n }}\n titleIcon={}\n >\n \n
\n Bucket: {bucketName}\n
\n \n {\n setNewKey(e.target.value);\n }}\n />\n \n \n {\n setNewLabel(e.target.value);\n }}\n />\n \n \n \n Clear\n \n \n Save\n \n \n
\n \n );\n};\n\nconst mapStateToProps = ({ system }: AppState) => ({\n distributedSetup: get(system, \"distributedSetup\", false),\n});\n\nconst mapDispatchToProps = {\n setModalErrorSnackMessage,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport default withStyles(styles)(connector(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 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 { 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 \"../../../../../icons/HelpIcon\";\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 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 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 inputLabel: {\n ...fieldBasic.inputLabel,\n fontWeight: \"normal\",\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 overlayIcon = null,\n overlayObject = null,\n extraInputProps = {},\n overlayAction,\n noLabelMinWidth = false,\n pattern = \"\",\n autoFocus = false,\n classes,\n className = \"\",\n onKeyPress,\n}: InputBoxProps) => {\n let inputProps: any = { \"data-index\": index, ...extraInputProps };\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 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 size={\"small\"}\n disableFocusRipple={false}\n disableRipple={false}\n disableTouchRipple={false}\n >\n {overlayIcon}\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) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\n// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You 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 { connect } from \"react-redux\";\nimport get from \"lodash/get\";\nimport ArrowRightIcon from \"@mui/icons-material/ArrowRight\";\nimport ErrorOutlineIcon from \"@mui/icons-material/ErrorOutline\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { AppState } from \"../../../../../store\";\nimport {\n setErrorSnackMessage,\n setModalErrorSnackMessage,\n} from \"../../../../../actions\";\nimport { snackBarMessage } from \"../../../../../types\";\n\ninterface ImodalErrorProps {\n customStyle?: any;\n classes: any;\n modalSnackMessage: snackBarMessage;\n displayErrorMessage: typeof setErrorSnackMessage;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n modalErrorContainer: {\n position: \"absolute\",\n marginTop: 10,\n width: \"80%\",\n backgroundColor: \"#fff\",\n border: \"#C72C48 1px solid\",\n borderLeftWidth: 12,\n borderRadius: 3,\n zIndex: 1000,\n padding: \"10px 15px\",\n left: \"50%\",\n transform: \"translateX(-50%)\",\n opacity: 0,\n transitionDuration: \"0.2s\",\n },\n modalErrorShow: {\n opacity: 1,\n },\n closeButton: {\n position: \"absolute\",\n right: 5,\n fontSize: \"small\",\n border: 0,\n backgroundColor: \"#fff\",\n cursor: \"pointer\",\n },\n errorTitle: {\n display: \"flex\",\n alignItems: \"center\",\n },\n errorLabel: {\n color: \"#000\",\n fontSize: 18,\n fontWeight: 500,\n marginLeft: 5,\n marginRight: 25,\n },\n messageIcon: {\n color: \"#C72C48\",\n display: \"flex\",\n \"& svg\": {\n width: 32,\n height: 32,\n },\n },\n detailsButton: {\n color: \"#9C9C9C\",\n display: \"flex\",\n alignItems: \"center\",\n border: 0,\n backgroundColor: \"transparent\",\n paddingLeft: 5,\n fontSize: 14,\n transformDuration: \"0.3s\",\n cursor: \"pointer\",\n },\n extraDetailsContainer: {\n fontStyle: \"italic\",\n color: \"#9C9C9C\",\n lineHeight: 0,\n padding: \"0 10px\",\n transition: \"all .2s ease-in-out\",\n overflow: \"hidden\",\n },\n extraDetailsOpen: {\n lineHeight: 1,\n padding: \"3px 10px\",\n },\n arrowElement: {\n marginLeft: -5,\n },\n arrowOpen: {\n transform: \"rotateZ(90deg)\",\n transformDuration: \"0.3s\",\n },\n });\n\nvar timerI: any;\n\nconst startHideTimer = (callbackFunction: () => void) => {\n timerI = setInterval(callbackFunction, 10000);\n};\n\nconst stopHideTimer = () => {\n clearInterval(timerI);\n};\n\nconst ModalError = ({\n classes,\n modalSnackMessage,\n displayErrorMessage,\n customStyle,\n}: ImodalErrorProps) => {\n const [detailsOpen, setDetailsOpen] = useState(false);\n const [displayErrorMsg, setDisplayErrorMsg] = useState(false);\n\n const closeErrorMessage = useCallback(() => {\n setDisplayErrorMsg(false);\n }, []);\n\n useEffect(() => {\n if (!displayErrorMsg) {\n displayErrorMessage({ detailedError: \"\", errorMessage: \"\" });\n setDetailsOpen(false);\n //clearInterval(timerI);\n }\n }, [displayErrorMessage, displayErrorMsg]);\n\n useEffect(() => {\n if (\n modalSnackMessage.message !== \"\" &&\n modalSnackMessage.type === \"error\"\n ) {\n //Error message received, we trigger the animation\n setDisplayErrorMsg(true);\n //startHideTimer(closeErrorMessage);\n }\n }, [closeErrorMessage, modalSnackMessage.message, modalSnackMessage.type]);\n\n const detailsToggle = () => {\n setDetailsOpen(!detailsOpen);\n };\n\n const message = get(modalSnackMessage, \"message\", \"\");\n const messageDetails = get(modalSnackMessage, \"detailedErrorMsg\", \"\");\n\n if (modalSnackMessage.type !== \"error\" || message === \"\") {\n return null;\n }\n\n return (\n \n startHideTimer(closeErrorMessage)}\n >\n \n
\n \n \n \n {message}\n
\n {messageDetails !== \"\" && (\n \n
\n \n
\n \n {messageDetails}\n \n
\n )}\n \n
\n );\n};\n\nconst mapState = (state: AppState) => ({\n modalSnackMessage: state.system.modalSnackBar,\n});\n\nconst mapDispatchToProps = {\n displayErrorMessage: setModalErrorSnackMessage,\n};\n\nconst connector = connect(mapState, mapDispatchToProps);\n\nexport default connector(withStyles(styles)(ModalError));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, { useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Snackbar from \"@mui/material/Snackbar\";\nimport { Dialog, DialogContent, DialogTitle } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n deleteDialogStyles,\n snackBarCommon,\n} from \"../FormComponents/common/styleLibrary\";\nimport { AppState } from \"../../../../store\";\nimport { snackBarMessage } from \"../../../../types\";\nimport { setModalSnackMessage } from \"../../../../actions\";\nimport ModalError from \"../FormComponents/ModalError/ModalError\";\nimport CloseIcon from \"@mui/icons-material/Close\";\n\ninterface IModalProps {\n classes: any;\n onClose: () => void;\n modalOpen: boolean;\n title: string | React.ReactNode;\n children: any;\n wideLimit?: boolean;\n modalSnackMessage?: snackBarMessage;\n noContentPadding?: boolean;\n setModalSnackMessage: typeof setModalSnackMessage;\n titleIcon?: React.ReactNode;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...deleteDialogStyles,\n root: {\n \"& .MuiPaper-root\": {\n padding: \"0 2rem 2rem 1rem\",\n },\n },\n content: {\n padding: 25,\n paddingBottom: 0,\n },\n customDialogSize: {\n width: \"100%\",\n maxWidth: 765,\n },\n ...snackBarCommon,\n });\n\nconst ModalWrapper = ({\n onClose,\n modalOpen,\n title,\n children,\n classes,\n wideLimit = true,\n modalSnackMessage,\n noContentPadding,\n setModalSnackMessage,\n titleIcon = null,\n}: IModalProps) => {\n const [openSnackbar, setOpenSnackbar] = useState(false);\n\n useEffect(() => {\n setModalSnackMessage(\"\");\n }, [setModalSnackMessage]);\n\n useEffect(() => {\n if (modalSnackMessage) {\n if (modalSnackMessage.message === \"\") {\n setOpenSnackbar(false);\n return;\n }\n // Open SnackBar\n if (modalSnackMessage.type !== \"error\") {\n setOpenSnackbar(true);\n }\n }\n }, [modalSnackMessage]);\n\n const closeSnackBar = () => {\n setOpenSnackbar(false);\n setModalSnackMessage(\"\");\n };\n\n const customSize = wideLimit\n ? {\n classes: {\n paper: classes.customDialogSize,\n },\n }\n : { maxWidth: \"lg\" as const, fullWidth: true };\n\n let message = \"\";\n\n if (modalSnackMessage) {\n message = modalSnackMessage.detailedErrorMsg;\n if (\n modalSnackMessage.detailedErrorMsg === \"\" ||\n modalSnackMessage.detailedErrorMsg.length < 5\n ) {\n message = modalSnackMessage.message;\n }\n }\n\n return (\n {\n if (reason !== \"backdropClick\") {\n onClose(); // close on Esc but not on click outside\n }\n }}\n className={classes.root}\n >\n \n
\n {titleIcon} {title}\n
\n
\n \n \n \n
\n
\n\n \n {\n closeSnackBar();\n }}\n message={message}\n ContentProps={{\n className: `${classes.snackBar} ${\n modalSnackMessage && modalSnackMessage.type === \"error\"\n ? classes.errorSnackBar\n : \"\"\n }`,\n }}\n autoHideDuration={\n modalSnackMessage && modalSnackMessage.type === \"error\" ? 10000 : 5000\n }\n />\n \n {children}\n \n \n );\n};\n\nconst mapState = (state: AppState) => ({\n modalSnackMessage: state.system.modalSnackBar,\n});\n\nconst connector = connect(mapState, {\n setModalSnackMessage,\n});\n\nexport default withStyles(styles)(connector(ModalWrapper));\n"],"names":["mapDispatchToProps","setModalErrorSnackMessage","connector","connect","system","distributedSetup","get","withStyles","theme","createStyles","formFieldStyles","modalStyleUtils","spacingUtils","modalOpen","currentTags","onCloseAndUpdate","bucketName","classes","useState","newKey","setNewKey","newLabel","setNewLabel","isSending","setIsSending","title","onClose","titleIcon","container","className","spacerBottom","item","xs","formFieldRow","value","label","id","name","placeholder","onChange","e","target","modalButtonBar","type","variant","color","onClick","disabled","trim","newTag","newTagList","api","tags","then","res","catch","error","inputStyles","makeStyles","inputFieldStyles","InputField","props","InputProps","fieldBasic","tooltipHelper","textBoxContainer","flexGrow","position","overlayAction","right","top","maxWidth","maxHeight","inputLabel","fontWeight","autoComplete","multiline","tooltip","index","required","min","max","overlayIcon","overlayObject","extraInputProps","noLabelMinWidth","pattern","autoFocus","onKeyPress","inputProps","clsx","errorInField","inputBoxContainer","htmlFor","noMinWidthLabel","tooltipContainer","placement","fullWidth","helperText","inputRebase","size","disableFocusRipple","disableRipple","disableTouchRipple","timerI","stopHideTimer","clearInterval","displayErrorMessage","state","modalSnackMessage","modalSnackBar","modalErrorContainer","marginTop","width","backgroundColor","border","borderLeftWidth","borderRadius","zIndex","padding","left","transform","opacity","transitionDuration","modalErrorShow","closeButton","fontSize","cursor","errorTitle","display","alignItems","errorLabel","marginLeft","marginRight","messageIcon","height","detailsButton","paddingLeft","transformDuration","extraDetailsContainer","fontStyle","lineHeight","transition","overflow","extraDetailsOpen","arrowElement","arrowOpen","customStyle","detailsOpen","setDetailsOpen","displayErrorMsg","setDisplayErrorMsg","closeErrorMessage","useCallback","useEffect","detailedError","errorMessage","message","messageDetails","Fragment","style","onMouseOver","onMouseLeave","setInterval","Close","ErrorOutline","detailsContainerLink","ArrowRight","setModalSnackMessage","deleteDialogStyles","root","content","paddingBottom","customDialogSize","snackBarCommon","children","wideLimit","noContentPadding","openSnackbar","setOpenSnackbar","customSize","paper","detailedErrorMsg","length","Dialog","open","scroll","event","reason","DialogTitle","titleText","closeContainer","IconButton","Snackbar","snackBarModal","ContentProps","snackBar","errorSnackBar","autoHideDuration","DialogContent"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/1666.3eefd4d5.chunk.js","mappings":"gTA6JMA,EAAqB,CACzBC,0BAAAA,EAAAA,IAGIC,GAAYC,EAAAA,EAAAA,KARM,SAAC,GAAD,IAAGC,EAAH,EAAGA,OAAH,MAA2B,CACjDC,iBAAkBC,GAAAA,CAAIF,EAAQ,oBAAoB,MAOTJ,GAE3C,WAAeO,EAAAA,EAAAA,IAtHA,SAACC,GAAD,OACbC,EAAAA,EAAAA,IAAa,0BACRC,EAAAA,IACAC,EAAAA,IACAC,EAAAA,OAkHP,CAAkCV,GA/GR,SAAC,GAOH,IANtBW,EAMqB,EANrBA,UACAC,EAKqB,EALrBA,YACAC,EAIqB,EAJrBA,iBACAC,EAGqB,EAHrBA,WACAf,EAEqB,EAFrBA,0BACAgB,EACqB,EADrBA,QAEA,GAA4BC,EAAAA,EAAAA,UAAiB,IAA7C,eAAOC,EAAP,KAAeC,EAAf,KACA,GAAgCF,EAAAA,EAAAA,UAAiB,IAAjD,eAAOG,EAAP,KAAiBC,EAAjB,KACA,GAAkCJ,EAAAA,EAAAA,WAAkB,GAApD,eAAOK,EAAP,KAAkBC,EAAlB,KA4BA,OACE,SAAC,IAAD,CACEX,UAAWA,EACXY,MAAK,eACLC,QAAS,WACPX,GAAiB,IAEnBY,WAAW,SAAC,KAAD,IANb,UAQE,UAAC,KAAD,CAAMC,WAAS,EAAf,WACE,iBAAKC,UAAWZ,EAAQa,aAAxB,WACE,uCADF,KAC4Bd,MAE5B,SAAC,KAAD,CAAMe,MAAI,EAACC,GAAI,GAAIH,UAAWZ,EAAQgB,aAAtC,UACE,SAAC,IAAD,CACEC,MAAOf,EACPgB,MAAO,cACPC,GAAI,YACJC,KAAM,YACNC,YAAa,oBACbC,SAAU,SAACC,GACTpB,EAAUoB,EAAEC,OAAOP,aAIzB,SAAC,KAAD,CAAMH,MAAI,EAACC,GAAI,GAAIH,UAAWZ,EAAQgB,aAAtC,UACE,SAAC,IAAD,CACEC,MAAOb,EACPc,MAAO,gBACPC,GAAI,cACJC,KAAM,cACNC,YAAa,sBACbC,SAAU,SAACC,GACTlB,EAAYkB,EAAEC,OAAOP,aAI3B,UAAC,KAAD,CAAMH,MAAI,EAACC,GAAI,GAAIH,UAAWZ,EAAQyB,eAAtC,WACE,SAAC,IAAD,CACEC,KAAK,SACLC,QAAQ,WACRC,MAAM,UACNC,QApEQ,WAChBxB,EAAY,IACZF,EAAU,KA8DJ,oBAQA,SAAC,IAAD,CACEuB,KAAK,SACLC,QAAQ,YACRC,MAAM,UACNE,SACsB,KAApB1B,EAAS2B,QAAmC,KAAlB7B,EAAO6B,QAAiBzB,EAEpDuB,QA1EY,WACpBtB,GAAa,GACb,IAAMyB,EAAc,GAEpBA,EAAO9B,GAAUE,EACjB,IAAM6B,GAAU,kBAAQpC,GAAgBmC,GAExCE,EAAAA,EAAAA,OACU,MADV,0BACoCnC,EADpC,SACuD,CACnDoC,KAAMF,IAEPG,MAAK,SAACC,GACL9B,GAAa,GACbT,GAAiB,MAElBwC,OAAM,SAACC,GACNvD,EAA0BuD,GAC1BhC,GAAa,OAkDX,+B,mLC3CJiC,GAAcC,EAAAA,EAAAA,IAAW,SAAClD,GAAD,OAC7BC,EAAAA,EAAAA,IAAa,UACRkD,EAAAA,QAIP,SAASC,EAAWC,GAClB,IAAM5C,EAAUwC,IAEhB,OACE,SAAC,KAAD,QACEK,WAAY,CAAE7C,QAAAA,IACV4C,IAwIV,KAAetD,EAAAA,EAAAA,IA9KA,SAACC,GAAD,OACbC,EAAAA,EAAAA,IAAa,0BACRsD,EAAAA,IACAC,EAAAA,IAFO,IAGVC,iBAAkB,CAChBC,SAAU,EACVC,SAAU,YAEZC,cAAe,CACbD,SAAU,WACVE,MAAO,EACPC,IAAK,EACL,QAAS,CACPC,SAAU,GACVC,UAAW,IAEb,cAAe,CACbF,IAAK,IAGTG,YAAW,kBACNV,EAAAA,GAAAA,YADK,IAERW,WAAY,gBAwJlB,EAnIwB,SAAC,GA2BH,IA1BpBvC,EA0BmB,EA1BnBA,MACAI,EAyBmB,EAzBnBA,SACAL,EAwBmB,EAxBnBA,MACAE,EAuBmB,EAvBnBA,GACAC,EAsBmB,EAtBnBA,KAsBmB,IArBnBM,KAAAA,OAqBmB,MArBZ,OAqBY,MApBnBgC,aAAAA,OAoBmB,MApBJ,MAoBI,MAnBnB5B,SAAAA,OAmBmB,aAlBnB6B,UAAAA,OAkBmB,aAjBnBC,QAAAA,OAiBmB,MAjBT,GAiBS,MAhBnBC,MAAAA,OAgBmB,MAhBX,EAgBW,MAfnBtB,MAAAA,OAemB,MAfX,GAeW,MAdnBuB,SAAAA,OAcmB,aAbnBzC,YAAAA,OAamB,MAbL,GAaK,EAZnB0C,EAYmB,EAZnBA,IACAC,EAWmB,EAXnBA,IAWmB,IAVnBC,YAAAA,OAUmB,MAVL,KAUK,MATnBC,cAAAA,OASmB,MATH,KASG,MARnBC,gBAAAA,OAQmB,MARD,GAQC,EAPnBhB,EAOmB,EAPnBA,cAOmB,IANnBiB,gBAAAA,OAMmB,aALnBC,QAAAA,OAKmB,MALT,GAKS,MAJnBC,UAAAA,OAImB,SAHnBtE,EAGmB,EAHnBA,QAGmB,IAFnBY,UAAAA,OAEmB,MAFP,GAEO,EADnB2D,EACmB,EADnBA,WAEIC,GAAe,QAAK,aAAcX,GAAUM,GAchD,MAZa,WAATzC,GAAqBqC,IACvBS,EAAU,IAAUT,GAGT,WAATrC,GAAqBsC,IACvBQ,EAAU,IAAUR,GAGN,KAAZK,IACFG,EAAU,QAAcH,IAIxB,SAAC,WAAD,WACE,UAAC,KAAD,CACE1D,WAAS,EACTC,WAAW6D,EAAAA,EAAAA,GACK,KAAd7D,EAAmBA,EAAY,GACrB,KAAV2B,EAAevC,EAAQ0E,aAAe1E,EAAQ2E,mBAJlD,UAOa,KAAVzD,IACC,UAAC,IAAD,CACE0D,QAASzD,EACTP,UACEwD,EAAkBpE,EAAQ6E,gBAAkB7E,EAAQwD,WAHxD,WAME,4BACGtC,EACA4C,EAAW,IAAM,MAEP,KAAZF,IACC,gBAAKhD,UAAWZ,EAAQ8E,iBAAxB,UACE,SAAC,IAAD,CAAStE,MAAOoD,EAASmB,UAAU,YAAnC,UACE,gBAAKnE,UAAWZ,EAAQ4D,QAAxB,UACE,SAAC,IAAD,cAQZ,iBAAKhD,UAAWZ,EAAQgD,iBAAxB,WACE,SAACL,EAAD,CACExB,GAAIA,EACJC,KAAMA,EACN4D,WAAS,EACT/D,MAAOA,EACPqD,UAAWA,EACXxC,SAAUA,EACVR,SAAUA,EACVI,KAAMA,EACNiC,UAAWA,EACXD,aAAcA,EACdc,WAAYA,EACZjC,MAAiB,KAAVA,EACP0C,WAAY1C,EACZlB,YAAaA,EACbT,UAAWZ,EAAQkF,YACnBX,WAAYA,IAEbN,IACC,gBACErD,UAAS,UAAKZ,EAAQmD,cAAb,YACG,KAAVjC,EAAe,YAAc,IAFjC,UAKE,SAAC,IAAD,CACEW,QACEsB,EACI,WACEA,KAEF,kBAAM,MAEZgC,KAAM,QACNC,oBAAoB,EACpBC,eAAe,EACfC,oBAAoB,EAXtB,SAaGrB,MAINC,IACC,gBACEtD,UAAS,UAAKZ,EAAQmD,cAAb,YACG,KAAVjC,EAAe,YAAc,IAFjC,SAKGgD,gB,0DClGXqB,E,8MAMEC,EAAgB,WACpBC,cAAcF,IA+FVxG,EAAqB,CACzB2G,oBAAqB1G,EAAAA,IAKvB,GAFkBE,EAAAA,EAAAA,KARD,SAACyG,GAAD,MAAsB,CACrCC,kBAAmBD,EAAMxG,OAAO0G,iBAOE9G,EAEpC,EAAyBO,EAAAA,EAAAA,IA3LV,SAACC,GAAD,OACbC,EAAAA,EAAAA,GAAa,CACXsG,oBAAqB,CACnB5C,SAAU,WACV6C,UAAW,GACXC,MAAO,MACPC,gBAAiB,OACjBC,OAAQ,oBACRC,gBAAiB,GACjBC,aAAc,EACdC,OAAQ,IACRC,QAAS,YACTC,KAAM,MACNC,UAAW,mBACXC,QAAS,EACTC,mBAAoB,QAEtBC,eAAgB,CACdF,QAAS,GAEXG,YAAa,CACX1D,SAAU,WACVE,MAAO,EACPyD,SAAU,QACVX,OAAQ,EACRD,gBAAiB,OACjBa,OAAQ,WAEVC,WAAY,CACVC,QAAS,OACTC,WAAY,UAEdC,WAAY,CACVtF,MAAO,OACPiF,SAAU,GACVpD,WAAY,IACZ0D,WAAY,EACZC,YAAa,IAEfC,YAAa,CACXzF,MAAO,UACPoF,QAAS,OACT,QAAS,CACPhB,MAAO,GACPsB,OAAQ,KAGZC,cAAe,CACb3F,MAAO,UACPoF,QAAS,OACTC,WAAY,SACZf,OAAQ,EACRD,gBAAiB,cACjBuB,YAAa,EACbX,SAAU,GACVY,kBAAmB,OACnBX,OAAQ,WAEVY,sBAAuB,CACrBC,UAAW,SACX/F,MAAO,UACPgG,WAAY,EACZtB,QAAS,SACTuB,WAAY,sBACZC,SAAU,UAEZC,iBAAkB,CAChBH,WAAY,EACZtB,QAAS,YAEX0B,aAAc,CACZb,YAAa,GAEfc,UAAW,CACTzB,UAAW,iBACXiB,kBAAmB,YAgHAnI,EAlGN,SAAC,GAKK,IAJvBU,EAIsB,EAJtBA,QACA4F,EAGsB,EAHtBA,kBACAF,EAEsB,EAFtBA,oBACAwC,EACsB,EADtBA,YAEA,GAAsCjI,EAAAA,EAAAA,WAAkB,GAAxD,eAAOkI,EAAP,KAAoBC,EAApB,KACA,GAA8CnI,EAAAA,EAAAA,WAAkB,GAAhE,eAAOoI,EAAP,KAAwBC,EAAxB,KAEMC,GAAoBC,EAAAA,EAAAA,cAAY,WACpCF,GAAmB,KAClB,KAEHG,EAAAA,EAAAA,YAAU,WACHJ,IACH3C,EAAoB,CAAEgD,cAAe,GAAIC,aAAc,KACvDP,GAAe,MAGhB,CAAC1C,EAAqB2C,KAEzBI,EAAAA,EAAAA,YAAU,WAEwB,KAA9B7C,EAAkBgD,SACS,UAA3BhD,EAAkBlE,MAGlB4G,GAAmB,KAGpB,CAACC,EAAmB3C,EAAkBgD,QAAShD,EAAkBlE,OAEpE,IAIMkH,EAAUvJ,GAAAA,CAAIuG,EAAmB,UAAW,IAC5CiD,EAAiBxJ,GAAAA,CAAIuG,EAAmB,mBAAoB,IAElE,MAA+B,UAA3BA,EAAkBlE,MAAgC,KAAZkH,EACjC,MAIP,SAAC,EAAAE,SAAD,WACE,iBACElI,UAAS,UAAKZ,EAAQ8F,oBAAb,YACPuC,EAAkBrI,EAAQ2G,eAAiB,IAE7CoC,MAAOb,EACPc,YAAaxD,EACbyD,aAAc,WA1DpB1D,EAAS2D,YA0DgCX,EA1DF,MAoDnC,WAQE,mBAAQ3H,UAAWZ,EAAQ4G,YAAa/E,QAAS0G,EAAjD,UACE,SAACY,EAAA,EAAD,OAEF,iBAAKvI,UAAWZ,EAAQ+G,WAAxB,WACE,iBAAMnG,UAAWZ,EAAQqH,YAAzB,UACE,SAAC+B,EAAA,EAAD,OAEF,iBAAMxI,UAAWZ,EAAQkH,WAAzB,SAAsC0B,OAEpB,KAAnBC,IACC,UAAC,EAAAC,SAAD,YACE,gBAAKlI,UAAWZ,EAAQqJ,qBAAxB,UACE,oBAAQzI,UAAWZ,EAAQuH,cAAe1F,QAjChC,WACpBuG,GAAgBD,IAgCN,qBAEE,SAACmB,EAAA,EAAD,CACE1I,UAAS,UAAKZ,EAAQgI,aAAb,YACPG,EAAcnI,EAAQiI,UAAY,YAK1C,gBACErH,UAAS,UAAKZ,EAAQ0H,sBAAb,YACPS,EAAcnI,EAAQ+H,iBAAmB,IAF7C,SAKGc,gBC1CT5J,GAAYC,EAAAA,EAAAA,KAJD,SAACyG,GAAD,MAAsB,CACrCC,kBAAmBD,EAAMxG,OAAO0G,iBAGE,CAClC0D,qBAAAA,EAAAA,KAGF,GAAejK,EAAAA,EAAAA,IA3IA,SAACC,GAAD,OACbC,EAAAA,EAAAA,IAAa,kBACRgK,EAAAA,IADO,IAEVC,KAAM,CACJ,mBAAoB,CAClBnD,QAAS,qBAGboD,QAAS,CACPpD,QAAS,GACTqD,cAAe,GAEjBC,iBAAkB,CAChB5D,MAAO,OACP1C,SAAU,MAETuG,EAAAA,OA2HP,CAAkC5K,GAxHb,SAAC,GAWF,IAVlBwB,EAUiB,EAVjBA,QACAb,EASiB,EATjBA,UACAY,EAQiB,EARjBA,MACAsJ,EAOiB,EAPjBA,SACA9J,EAMiB,EANjBA,QAMiB,IALjB+J,UAAAA,OAKiB,SAJjBnE,EAIiB,EAJjBA,kBACAoE,EAGiB,EAHjBA,iBACAT,EAEiB,EAFjBA,qBAEiB,IADjB7I,UAAAA,OACiB,MADL,KACK,EACjB,GAAwCT,EAAAA,EAAAA,WAAkB,GAA1D,eAAOgK,EAAP,KAAqBC,EAArB,MAEAzB,EAAAA,EAAAA,YAAU,WACRc,EAAqB,MACpB,CAACA,KAEJd,EAAAA,EAAAA,YAAU,WACR,GAAI7C,EAAmB,CACrB,GAAkC,KAA9BA,EAAkBgD,QAEpB,YADAsB,GAAgB,GAIa,UAA3BtE,EAAkBlE,MACpBwI,GAAgB,MAGnB,CAACtE,IAEJ,IAKMuE,EAAaJ,EACf,CACE/J,QAAS,CACPoK,MAAOpK,EAAQ4J,mBAGnB,CAAEtG,SAAU,KAAe0B,WAAW,GAEtC4D,EAAU,GAYd,OAVIhD,IACFgD,EAAUhD,EAAkByE,kBAEa,KAAvCzE,EAAkByE,kBAClBzE,EAAkByE,iBAAiBC,OAAS,KAE5C1B,EAAUhD,EAAkBgD,WAK9B,UAAC2B,EAAA,GAAD,gBACEC,KAAM5K,EACNI,QAASA,GACLmK,GAHN,IAIEM,OAAQ,QACRhK,QAAS,SAACiK,EAAOC,GACA,kBAAXA,GACFlK,KAGJG,UAAWZ,EAAQyJ,KAVrB,WAYE,UAACmB,EAAA,EAAD,CAAahK,UAAWZ,EAAQQ,MAAhC,WACE,iBAAKI,UAAWZ,EAAQ6K,UAAxB,UACGnK,EADH,IACeF,MAEf,gBAAKI,UAAWZ,EAAQ8K,eAAxB,UACE,SAACC,EAAA,EAAD,CACE,aAAW,QACXnK,UAAWZ,EAAQ4G,YACnB/E,QAASpB,EACT4E,eAAa,EACbF,KAAK,QALP,UAOE,SAACgE,EAAA,EAAD,YAKN,SAAC,EAAD,KACA,SAAC6B,EAAA,EAAD,CACER,KAAMP,EACNrJ,UAAWZ,EAAQiL,cACnBxK,QAAS,WA1DbyJ,GAAgB,GAChBX,EAAqB,KA4DjBX,QAASA,EACTsC,aAAc,CACZtK,UAAU,GAAD,OAAKZ,EAAQmL,SAAb,YACPvF,GAAgD,UAA3BA,EAAkBlE,KACnC1B,EAAQoL,cACR,KAGRC,iBACEzF,GAAgD,UAA3BA,EAAkBlE,KAAmB,IAAQ,OAGtE,SAAC4J,EAAA,EAAD,CAAe1K,UAAWoJ,EAAmB,GAAKhK,EAAQ0J,QAA1D,SACGI","sources":["screens/Console/Buckets/BucketDetails/AddBucketTagModal.tsx","screens/Console/Common/FormComponents/InputBoxWrapper/InputBoxWrapper.tsx","screens/Console/Common/FormComponents/ModalError/ModalError.tsx","screens/Console/Common/ModalWrapper/ModalWrapper.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport get from \"lodash/get\";\nimport { connect } from \"react-redux\";\nimport { Button, 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 { setModalErrorSnackMessage } from \"../../../../actions\";\nimport { AppState } from \"../../../../store\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport api from \"../../../../common/api\";\nimport { AddNewTagIcon } from \"../../../../icons\";\n\ninterface IBucketTagModal {\n modalOpen: boolean;\n currentTags: any;\n bucketName: string;\n onCloseAndUpdate: (refresh: boolean) => void;\n setModalErrorSnackMessage: typeof setModalErrorSnackMessage;\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 setModalErrorSnackMessage,\n classes,\n}: IBucketTagModal) => {\n const [newKey, setNewKey] = useState(\"\");\n const [newLabel, setNewLabel] = useState(\"\");\n const [isSending, setIsSending] = useState(false);\n\n const resetForm = () => {\n setNewLabel(\"\");\n setNewKey(\"\");\n };\n\n const addTagProcess = () => {\n setIsSending(true);\n const newTag: any = {};\n\n newTag[newKey] = newLabel;\n const newTagList = { ...currentTags, ...newTag };\n\n api\n .invoke(\"PUT\", `/api/v1/buckets/${bucketName}/tags`, {\n tags: newTagList,\n })\n .then((res: any) => {\n setIsSending(false);\n onCloseAndUpdate(true);\n })\n .catch((error: ErrorResponseHandler) => {\n setModalErrorSnackMessage(error);\n setIsSending(false);\n });\n };\n\n return (\n {\n onCloseAndUpdate(false);\n }}\n titleIcon={}\n >\n \n
\n Bucket: {bucketName}\n
\n \n {\n setNewKey(e.target.value);\n }}\n />\n \n \n {\n setNewLabel(e.target.value);\n }}\n />\n \n \n \n Clear\n \n \n Save\n \n \n
\n \n );\n};\n\nconst mapStateToProps = ({ system }: AppState) => ({\n distributedSetup: get(system, \"distributedSetup\", false),\n});\n\nconst mapDispatchToProps = {\n setModalErrorSnackMessage,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport default withStyles(styles)(connector(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 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 { 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 \"../../../../../icons/HelpIcon\";\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 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 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 inputLabel: {\n ...fieldBasic.inputLabel,\n fontWeight: \"normal\",\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 overlayIcon = null,\n overlayObject = null,\n extraInputProps = {},\n overlayAction,\n noLabelMinWidth = false,\n pattern = \"\",\n autoFocus = false,\n classes,\n className = \"\",\n onKeyPress,\n}: InputBoxProps) => {\n let inputProps: any = { \"data-index\": index, ...extraInputProps };\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 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 size={\"small\"}\n disableFocusRipple={false}\n disableRipple={false}\n disableTouchRipple={false}\n >\n {overlayIcon}\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) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\n// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You 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 { connect } from \"react-redux\";\nimport get from \"lodash/get\";\nimport ArrowRightIcon from \"@mui/icons-material/ArrowRight\";\nimport ErrorOutlineIcon from \"@mui/icons-material/ErrorOutline\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { AppState } from \"../../../../../store\";\nimport {\n setErrorSnackMessage,\n setModalErrorSnackMessage,\n} from \"../../../../../actions\";\nimport { snackBarMessage } from \"../../../../../types\";\n\ninterface ImodalErrorProps {\n customStyle?: any;\n classes: any;\n modalSnackMessage: snackBarMessage;\n displayErrorMessage: typeof setErrorSnackMessage;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n modalErrorContainer: {\n position: \"absolute\",\n marginTop: 10,\n width: \"80%\",\n backgroundColor: \"#fff\",\n border: \"#C72C48 1px solid\",\n borderLeftWidth: 12,\n borderRadius: 3,\n zIndex: 1000,\n padding: \"10px 15px\",\n left: \"50%\",\n transform: \"translateX(-50%)\",\n opacity: 0,\n transitionDuration: \"0.2s\",\n },\n modalErrorShow: {\n opacity: 1,\n },\n closeButton: {\n position: \"absolute\",\n right: 5,\n fontSize: \"small\",\n border: 0,\n backgroundColor: \"#fff\",\n cursor: \"pointer\",\n },\n errorTitle: {\n display: \"flex\",\n alignItems: \"center\",\n },\n errorLabel: {\n color: \"#000\",\n fontSize: 18,\n fontWeight: 500,\n marginLeft: 5,\n marginRight: 25,\n },\n messageIcon: {\n color: \"#C72C48\",\n display: \"flex\",\n \"& svg\": {\n width: 32,\n height: 32,\n },\n },\n detailsButton: {\n color: \"#9C9C9C\",\n display: \"flex\",\n alignItems: \"center\",\n border: 0,\n backgroundColor: \"transparent\",\n paddingLeft: 5,\n fontSize: 14,\n transformDuration: \"0.3s\",\n cursor: \"pointer\",\n },\n extraDetailsContainer: {\n fontStyle: \"italic\",\n color: \"#9C9C9C\",\n lineHeight: 0,\n padding: \"0 10px\",\n transition: \"all .2s ease-in-out\",\n overflow: \"hidden\",\n },\n extraDetailsOpen: {\n lineHeight: 1,\n padding: \"3px 10px\",\n },\n arrowElement: {\n marginLeft: -5,\n },\n arrowOpen: {\n transform: \"rotateZ(90deg)\",\n transformDuration: \"0.3s\",\n },\n });\n\nvar timerI: any;\n\nconst startHideTimer = (callbackFunction: () => void) => {\n timerI = setInterval(callbackFunction, 10000);\n};\n\nconst stopHideTimer = () => {\n clearInterval(timerI);\n};\n\nconst ModalError = ({\n classes,\n modalSnackMessage,\n displayErrorMessage,\n customStyle,\n}: ImodalErrorProps) => {\n const [detailsOpen, setDetailsOpen] = useState(false);\n const [displayErrorMsg, setDisplayErrorMsg] = useState(false);\n\n const closeErrorMessage = useCallback(() => {\n setDisplayErrorMsg(false);\n }, []);\n\n useEffect(() => {\n if (!displayErrorMsg) {\n displayErrorMessage({ detailedError: \"\", errorMessage: \"\" });\n setDetailsOpen(false);\n //clearInterval(timerI);\n }\n }, [displayErrorMessage, displayErrorMsg]);\n\n useEffect(() => {\n if (\n modalSnackMessage.message !== \"\" &&\n modalSnackMessage.type === \"error\"\n ) {\n //Error message received, we trigger the animation\n setDisplayErrorMsg(true);\n //startHideTimer(closeErrorMessage);\n }\n }, [closeErrorMessage, modalSnackMessage.message, modalSnackMessage.type]);\n\n const detailsToggle = () => {\n setDetailsOpen(!detailsOpen);\n };\n\n const message = get(modalSnackMessage, \"message\", \"\");\n const messageDetails = get(modalSnackMessage, \"detailedErrorMsg\", \"\");\n\n if (modalSnackMessage.type !== \"error\" || message === \"\") {\n return null;\n }\n\n return (\n \n startHideTimer(closeErrorMessage)}\n >\n \n
\n \n \n \n {message}\n
\n {messageDetails !== \"\" && (\n \n
\n \n
\n \n {messageDetails}\n \n
\n )}\n \n
\n );\n};\n\nconst mapState = (state: AppState) => ({\n modalSnackMessage: state.system.modalSnackBar,\n});\n\nconst mapDispatchToProps = {\n displayErrorMessage: setModalErrorSnackMessage,\n};\n\nconst connector = connect(mapState, mapDispatchToProps);\n\nexport default connector(withStyles(styles)(ModalError));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, { useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Snackbar from \"@mui/material/Snackbar\";\nimport { Dialog, DialogContent, DialogTitle } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n deleteDialogStyles,\n snackBarCommon,\n} from \"../FormComponents/common/styleLibrary\";\nimport { AppState } from \"../../../../store\";\nimport { snackBarMessage } from \"../../../../types\";\nimport { setModalSnackMessage } from \"../../../../actions\";\nimport ModalError from \"../FormComponents/ModalError/ModalError\";\nimport CloseIcon from \"@mui/icons-material/Close\";\n\ninterface IModalProps {\n classes: any;\n onClose: () => void;\n modalOpen: boolean;\n title: string | React.ReactNode;\n children: any;\n wideLimit?: boolean;\n modalSnackMessage?: snackBarMessage;\n noContentPadding?: boolean;\n setModalSnackMessage: typeof setModalSnackMessage;\n titleIcon?: React.ReactNode;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...deleteDialogStyles,\n root: {\n \"& .MuiPaper-root\": {\n padding: \"0 2rem 2rem 1rem\",\n },\n },\n content: {\n padding: 25,\n paddingBottom: 0,\n },\n customDialogSize: {\n width: \"100%\",\n maxWidth: 765,\n },\n ...snackBarCommon,\n });\n\nconst ModalWrapper = ({\n onClose,\n modalOpen,\n title,\n children,\n classes,\n wideLimit = true,\n modalSnackMessage,\n noContentPadding,\n setModalSnackMessage,\n titleIcon = null,\n}: IModalProps) => {\n const [openSnackbar, setOpenSnackbar] = useState(false);\n\n useEffect(() => {\n setModalSnackMessage(\"\");\n }, [setModalSnackMessage]);\n\n useEffect(() => {\n if (modalSnackMessage) {\n if (modalSnackMessage.message === \"\") {\n setOpenSnackbar(false);\n return;\n }\n // Open SnackBar\n if (modalSnackMessage.type !== \"error\") {\n setOpenSnackbar(true);\n }\n }\n }, [modalSnackMessage]);\n\n const closeSnackBar = () => {\n setOpenSnackbar(false);\n setModalSnackMessage(\"\");\n };\n\n const customSize = wideLimit\n ? {\n classes: {\n paper: classes.customDialogSize,\n },\n }\n : { maxWidth: \"lg\" as const, fullWidth: true };\n\n let message = \"\";\n\n if (modalSnackMessage) {\n message = modalSnackMessage.detailedErrorMsg;\n if (\n modalSnackMessage.detailedErrorMsg === \"\" ||\n modalSnackMessage.detailedErrorMsg.length < 5\n ) {\n message = modalSnackMessage.message;\n }\n }\n\n return (\n {\n if (reason !== \"backdropClick\") {\n onClose(); // close on Esc but not on click outside\n }\n }}\n className={classes.root}\n >\n \n
\n {titleIcon} {title}\n
\n
\n \n \n \n
\n
\n\n \n {\n closeSnackBar();\n }}\n message={message}\n ContentProps={{\n className: `${classes.snackBar} ${\n modalSnackMessage && modalSnackMessage.type === \"error\"\n ? classes.errorSnackBar\n : \"\"\n }`,\n }}\n autoHideDuration={\n modalSnackMessage && modalSnackMessage.type === \"error\" ? 10000 : 5000\n }\n />\n \n {children}\n \n \n );\n};\n\nconst mapState = (state: AppState) => ({\n modalSnackMessage: state.system.modalSnackBar,\n});\n\nconst connector = connect(mapState, {\n setModalSnackMessage,\n});\n\nexport default withStyles(styles)(connector(ModalWrapper));\n"],"names":["mapDispatchToProps","setModalErrorSnackMessage","connector","connect","system","distributedSetup","get","withStyles","theme","createStyles","formFieldStyles","modalStyleUtils","spacingUtils","modalOpen","currentTags","onCloseAndUpdate","bucketName","classes","useState","newKey","setNewKey","newLabel","setNewLabel","isSending","setIsSending","title","onClose","titleIcon","container","className","spacerBottom","item","xs","formFieldRow","value","label","id","name","placeholder","onChange","e","target","modalButtonBar","type","variant","color","onClick","disabled","trim","newTag","newTagList","api","tags","then","res","catch","error","inputStyles","makeStyles","inputFieldStyles","InputField","props","InputProps","fieldBasic","tooltipHelper","textBoxContainer","flexGrow","position","overlayAction","right","top","maxWidth","maxHeight","inputLabel","fontWeight","autoComplete","multiline","tooltip","index","required","min","max","overlayIcon","overlayObject","extraInputProps","noLabelMinWidth","pattern","autoFocus","onKeyPress","inputProps","clsx","errorInField","inputBoxContainer","htmlFor","noMinWidthLabel","tooltipContainer","placement","fullWidth","helperText","inputRebase","size","disableFocusRipple","disableRipple","disableTouchRipple","timerI","stopHideTimer","clearInterval","displayErrorMessage","state","modalSnackMessage","modalSnackBar","modalErrorContainer","marginTop","width","backgroundColor","border","borderLeftWidth","borderRadius","zIndex","padding","left","transform","opacity","transitionDuration","modalErrorShow","closeButton","fontSize","cursor","errorTitle","display","alignItems","errorLabel","marginLeft","marginRight","messageIcon","height","detailsButton","paddingLeft","transformDuration","extraDetailsContainer","fontStyle","lineHeight","transition","overflow","extraDetailsOpen","arrowElement","arrowOpen","customStyle","detailsOpen","setDetailsOpen","displayErrorMsg","setDisplayErrorMsg","closeErrorMessage","useCallback","useEffect","detailedError","errorMessage","message","messageDetails","Fragment","style","onMouseOver","onMouseLeave","setInterval","Close","ErrorOutline","detailsContainerLink","ArrowRight","setModalSnackMessage","deleteDialogStyles","root","content","paddingBottom","customDialogSize","snackBarCommon","children","wideLimit","noContentPadding","openSnackbar","setOpenSnackbar","customSize","paper","detailedErrorMsg","length","Dialog","open","scroll","event","reason","DialogTitle","titleText","closeContainer","IconButton","Snackbar","snackBarModal","ContentProps","snackBar","errorSnackBar","autoHideDuration","DialogContent"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/1711.1d689e21.chunk.js b/portal-ui/build/static/js/1711.1d689e21.chunk.js new file mode 100644 index 000000000..7fa1ebe79 --- /dev/null +++ b/portal-ui/build/static/js/1711.1d689e21.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1711],{31711:function(e,n,t){t.r(n);var a=t(23430),o=t(18489),i=t(50390),r=t(34424),s=t(66946),l=t(81378),c=t(86509),d=t(4285),u=t(25594),m=t(28948),p=t(44149),h=t(72462),x=t(92440),f=t(66964),b=t(76352),g=t(30324),v=t(85204),Z=t(1365),j=t(62559),C=(0,r.$j)(null,{setModalErrorSnackMessage:p.zb});n.default=(0,d.Z)((function(e){return(0,c.Z)((0,o.Z)((0,o.Z)({},h.DF),h.ID))}))(C((function(e){var n=e.classes,t=e.open,o=e.enabled,r=e.cfg,c=e.selectedBucket,d=e.closeModalAndRefresh,p=e.setModalErrorSnackMessage,h=(0,i.useState)(!1),C=(0,a.Z)(h,2),k=C[0],y=C[1],N=(0,i.useState)(!1),S=(0,a.Z)(N,2),w=S[0],F=S[1],M=(0,i.useState)("1"),E=(0,a.Z)(M,2),L=E[0],P=E[1],B=(0,i.useState)("TiB"),I=(0,a.Z)(B,2),z=I[0],D=I[1];(0,i.useEffect)((function(){if(o&&(F(!0),r)){P("".concat(r.quota)),D("Gi");for(var e="B",n=r.quota,t=0;t1?M[1]:"OFF"}),(0,f.jsx)(b,{checked:v,onChange:r,color:"primary",name:p,inputProps:(0,o.Z)({"aria-label":"primary checkbox"},L),disabled:j,disableRipple:!0,disableFocusRipple:!0,disableTouchRipple:!0,value:s}),!k&&(0,f.jsx)("span",{className:(0,x.Z)(F.indicatorLabel,(0,a.Z)({},F.indicatorLabelOn,v)),children:M?M[0]:"ON"})]});return k?P:(0,f.jsx)("div",{className:F.divContainer,children:(0,f.jsxs)(m.ZP,{container:!0,alignItems:"center",children:[(0,f.jsx)(m.ZP,{item:!0,xs:!0,children:(0,f.jsxs)(m.ZP,{container:!0,children:[(0,f.jsx)(m.ZP,{item:!0,xs:12,sm:""!==w?4:10,md:""!==w?3:9,children:""!==t&&(0,f.jsxs)(c.Z,{htmlFor:l,className:F.inputLabel,children:[(0,f.jsx)("span",{children:t}),""!==N&&(0,f.jsx)("div",{className:F.tooltipContainer,children:(0,f.jsx)(d.Z,{title:N,placement:"top-start",children:(0,f.jsx)("div",{className:F.tooltip,children:(0,f.jsx)(h.Z,{})})})})]})}),(0,f.jsx)(m.ZP,{item:!0,xs:12,sm:!0,textAlign:"left",children:""!==w&&(0,f.jsx)(u.Z,{component:"p",className:F.fieldDescription,children:w})})]})}),(0,f.jsx)(m.ZP,{item:!0,xs:12,sm:2,textAlign:"right",className:F.switchContainer,children:P})]})})}))},66964:function(e,n,t){var a=t(18489),o=t(50390),i=t(12066),r=t(25594),s=t(36554),l=t(94187),c=t(95467),d=t(86509),u=t(62449),m=t(4285),p=t(72462),h=t(97538),x=t(44977),f=t(62559),b=(0,u.Z)((function(e){return(0,d.Z)((0,a.Z)({},p.gM))}));function g(e){var n=b();return(0,f.jsx)(i.Z,(0,a.Z)({InputProps:{classes:n}},e))}n.Z=(0,m.Z)((function(e){return(0,d.Z)((0,a.Z)((0,a.Z)((0,a.Z)({},p.YI),p.Hr),{},{textBoxContainer:{flexGrow:1,position:"relative"},overlayAction:{position:"absolute",right:5,top:6,"& svg":{maxWidth:15,maxHeight:15},"&.withLabel":{top:5}},inputLabel:(0,a.Z)((0,a.Z)({},p.YI.inputLabel),{},{fontWeight:"normal"})}))}))((function(e){var n=e.label,t=e.onChange,i=e.value,d=e.id,u=e.name,m=e.type,p=void 0===m?"text":m,b=e.autoComplete,v=void 0===b?"off":b,Z=e.disabled,j=void 0!==Z&&Z,C=e.multiline,k=void 0!==C&&C,y=e.tooltip,N=void 0===y?"":y,S=e.index,w=void 0===S?0:S,F=e.error,M=void 0===F?"":F,E=e.required,L=void 0!==E&&E,P=e.placeholder,B=void 0===P?"":P,I=e.min,z=e.max,D=e.overlayIcon,O=void 0===D?null:D,R=e.overlayObject,q=void 0===R?null:R,T=e.extraInputProps,W=void 0===T?{}:T,A=e.overlayAction,_=e.noLabelMinWidth,$=void 0!==_&&_,H=e.pattern,K=void 0===H?"":H,Q=e.autoFocus,U=void 0!==Q&&Q,V=e.classes,Y=e.className,G=void 0===Y?"":Y,X=e.onKeyPress,J=(0,a.Z)({"data-index":w},W);return"number"===p&&I&&(J.min=I),"number"===p&&z&&(J.max=z),""!==K&&(J.pattern=K),(0,f.jsx)(o.Fragment,{children:(0,f.jsxs)(r.ZP,{container:!0,className:(0,x.Z)(""!==G?G:"",""!==M?V.errorInField:V.inputBoxContainer),children:[""!==n&&(0,f.jsxs)(s.Z,{htmlFor:d,className:$?V.noMinWidthLabel:V.inputLabel,children:[(0,f.jsxs)("span",{children:[n,L?"*":""]}),""!==N&&(0,f.jsx)("div",{className:V.tooltipContainer,children:(0,f.jsx)(l.Z,{title:N,placement:"top-start",children:(0,f.jsx)("div",{className:V.tooltip,children:(0,f.jsx)(h.Z,{})})})})]}),(0,f.jsxs)("div",{className:V.textBoxContainer,children:[(0,f.jsx)(g,{id:d,name:u,fullWidth:!0,value:i,autoFocus:U,disabled:j,onChange:t,type:p,multiline:k,autoComplete:v,inputProps:J,error:""!==M,helperText:M,placeholder:B,className:V.inputRebase,onKeyPress:X}),O&&(0,f.jsx)("div",{className:"".concat(V.overlayAction," ").concat(""!==n?"withLabel":""),children:(0,f.jsx)(c.Z,{onClick:A?function(){A()}:function(){return null},size:"small",disableFocusRipple:!1,disableRipple:!1,disableTouchRipple:!1,children:O})}),q&&(0,f.jsx)("div",{className:"".concat(V.overlayAction," ").concat(""!==n?"withLabel":""),children:q})]})]})})}))},1365:function(e,n,t){var a=t(23430),o=t(50390),i=t(86509),r=t(4285),s=t(26936),l=t(31680),c=t(62559);n.Z=(0,r.Z)((function(e){return(0,i.Z)({buttonTrigger:{border:"#F0F2F2 1px solid",borderRadius:3,color:"#838383",backgroundColor:"#fff",fontSize:12}})}))((function(e){var n=e.classes,t=e.id,i=e.unitSelected,r=e.unitsList,d=e.disabled,u=void 0!==d&&d,m=e.onUnitChange,p=o.useState(null),h=(0,a.Z)(p,2),x=h[0],f=h[1],b=Boolean(x),g=function(e){f(null),""!==e&&m&&m(e)};return(0,c.jsxs)(o.Fragment,{children:[(0,c.jsx)("button",{id:"".concat(t,"-button"),"aria-controls":"".concat(t,"-menu"),"aria-haspopup":"true","aria-expanded":b?"true":void 0,onClick:function(e){f(e.currentTarget)},className:n.buttonTrigger,disabled:u,type:"button",children:i}),(0,c.jsx)(s.Z,{id:"".concat(t,"-menu"),"aria-labelledby":"".concat(t,"-button"),anchorEl:x,open:b,onClose:function(){g("")},anchorOrigin:{vertical:"bottom",horizontal:"center"},transformOrigin:{vertical:"top",horizontal:"center"},children:r.map((function(e){return(0,c.jsx)(l.Z,{onClick:function(){return g(e.value)},children:e.label},"itemUnit-".concat(e.value,"-").concat(e.label))}))})]})}))},76352:function(e,n,t){t.d(n,{Z:function(){return w}});var a,o=t(23430),i=t(18489),r=t(50390),s=t(34424),l=t(95467),c=t(97771),d=t(84402),u=t(78426),m=t(93085),p=t(86509),h=t(4285),x=t(72462),f=t(44149),b=t(38342),g=t.n(b),v=t(92125),Z=t(19538),j=t(21278),C=t(62559),k=function(){clearInterval(a)},y={displayErrorMessage:f.zb},N=(0,s.$j)((function(e){return{modalSnackMessage:e.system.modalSnackBar}}),y)((0,h.Z)((function(e){return(0,p.Z)({modalErrorContainer:{position:"absolute",marginTop:10,width:"80%",backgroundColor:"#fff",border:"#C72C48 1px solid",borderLeftWidth:12,borderRadius:3,zIndex:1e3,padding:"10px 15px",left:"50%",transform:"translateX(-50%)",opacity:0,transitionDuration:"0.2s"},modalErrorShow:{opacity:1},closeButton:{position:"absolute",right:5,fontSize:"small",border:0,backgroundColor:"#fff",cursor:"pointer"},errorTitle:{display:"flex",alignItems:"center"},errorLabel:{color:"#000",fontSize:18,fontWeight:500,marginLeft:5,marginRight:25},messageIcon:{color:"#C72C48",display:"flex","& svg":{width:32,height:32}},detailsButton:{color:"#9C9C9C",display:"flex",alignItems:"center",border:0,backgroundColor:"transparent",paddingLeft:5,fontSize:14,transformDuration:"0.3s",cursor:"pointer"},extraDetailsContainer:{fontStyle:"italic",color:"#9C9C9C",lineHeight:0,padding:"0 10px",transition:"all .2s ease-in-out",overflow:"hidden"},extraDetailsOpen:{lineHeight:1,padding:"3px 10px"},arrowElement:{marginLeft:-5},arrowOpen:{transform:"rotateZ(90deg)",transformDuration:"0.3s"}})}))((function(e){var n=e.classes,t=e.modalSnackMessage,i=e.displayErrorMessage,s=e.customStyle,l=(0,r.useState)(!1),c=(0,o.Z)(l,2),d=c[0],u=c[1],m=(0,r.useState)(!1),p=(0,o.Z)(m,2),h=p[0],x=p[1],f=(0,r.useCallback)((function(){x(!1)}),[]);(0,r.useEffect)((function(){h||(i({detailedError:"",errorMessage:""}),u(!1))}),[i,h]),(0,r.useEffect)((function(){""!==t.message&&"error"===t.type&&x(!0)}),[f,t.message,t.type]);var b=g()(t,"message",""),y=g()(t,"detailedErrorMsg","");return"error"!==t.type||""===b?null:(0,C.jsx)(r.Fragment,{children:(0,C.jsxs)("div",{className:"".concat(n.modalErrorContainer," ").concat(h?n.modalErrorShow:""),style:s,onMouseOver:k,onMouseLeave:function(){a=setInterval(f,1e4)},children:[(0,C.jsx)("button",{className:n.closeButton,onClick:f,children:(0,C.jsx)(j.Z,{})}),(0,C.jsxs)("div",{className:n.errorTitle,children:[(0,C.jsx)("span",{className:n.messageIcon,children:(0,C.jsx)(Z.Z,{})}),(0,C.jsx)("span",{className:n.errorLabel,children:b})]}),""!==y&&(0,C.jsxs)(r.Fragment,{children:[(0,C.jsx)("div",{className:n.detailsContainerLink,children:(0,C.jsxs)("button",{className:n.detailsButton,onClick:function(){u(!d)},children:["Details",(0,C.jsx)(v.Z,{className:"".concat(n.arrowElement," ").concat(d?n.arrowOpen:"")})]})}),(0,C.jsx)("div",{className:"".concat(n.extraDetailsContainer," ").concat(d?n.extraDetailsOpen:""),children:y})]})]})})}))),S=(0,s.$j)((function(e){return{modalSnackMessage:e.system.modalSnackBar}}),{setModalSnackMessage:f.MK}),w=(0,h.Z)((function(e){return(0,p.Z)((0,i.Z)((0,i.Z)({},x.Qw),{},{root:{"& .MuiPaper-root":{padding:"0 2rem 2rem 1rem"}},content:{padding:25,paddingBottom:0},customDialogSize:{width:"100%",maxWidth:765}},x.sN))}))(S((function(e){var n=e.onClose,t=e.modalOpen,a=e.title,s=e.children,p=e.classes,h=e.wideLimit,x=void 0===h||h,f=e.modalSnackMessage,b=e.noContentPadding,g=e.setModalSnackMessage,v=e.titleIcon,Z=void 0===v?null:v,k=(0,r.useState)(!1),y=(0,o.Z)(k,2),S=y[0],w=y[1];(0,r.useEffect)((function(){g("")}),[g]),(0,r.useEffect)((function(){if(f){if(""===f.message)return void w(!1);"error"!==f.type&&w(!0)}}),[f]);var F=x?{classes:{paper:p.customDialogSize}}:{maxWidth:"lg",fullWidth:!0},M="";return f&&(M=f.detailedErrorMsg,(""===f.detailedErrorMsg||f.detailedErrorMsg.length<5)&&(M=f.message)),(0,C.jsxs)(d.Z,(0,i.Z)((0,i.Z)({open:t,classes:p},F),{},{scroll:"paper",onClose:function(e,t){"backdropClick"!==t&&n()},className:p.root,children:[(0,C.jsxs)(u.Z,{className:p.title,children:[(0,C.jsxs)("div",{className:p.titleText,children:[Z," ",a]}),(0,C.jsx)("div",{className:p.closeContainer,children:(0,C.jsx)(l.Z,{"aria-label":"close",className:p.closeButton,onClick:n,disableRipple:!0,size:"small",children:(0,C.jsx)(j.Z,{})})})]}),(0,C.jsx)(N,{}),(0,C.jsx)(c.Z,{open:S,className:p.snackBarModal,onClose:function(){w(!1),g("")},message:M,ContentProps:{className:"".concat(p.snackBar," ").concat(f&&"error"===f.type?p.errorSnackBar:"")},autoHideDuration:f&&"error"===f.type?1e4:5e3}),(0,C.jsx)(m.Z,{className:b?"":p.content,children:s})]}))})))}}]); +//# sourceMappingURL=1711.1d689e21.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/1711.1d689e21.chunk.js.map b/portal-ui/build/static/js/1711.1d689e21.chunk.js.map new file mode 100644 index 000000000..ac4c7c5d7 --- /dev/null +++ b/portal-ui/build/static/js/1711.1d689e21.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/1711.1d689e21.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/EnableQuota.tsx","screens/Console/Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper.tsx","screens/Console/Common/FormComponents/InputBoxWrapper/InputBoxWrapper.tsx","screens/Console/Common/FormComponents/InputUnitMenu/InputUnitMenu.tsx","screens/Console/Common/FormComponents/ModalError/ModalError.tsx","screens/Console/Common/ModalWrapper/ModalWrapper.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport { Button, LinearProgress } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport Grid from \"@mui/material/Grid\";\nimport {\n getBytes,\n k8sScalarUnitsExcluding,\n units,\n} from \"../../../../common/utils\";\nimport { BucketQuota } from \"../types\";\nimport { setModalErrorSnackMessage } from \"../../../../actions\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport FormSwitchWrapper from \"../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport api from \"../../../../common/api\";\nimport { BucketQuotaIcon } from \"../../../../icons\";\nimport InputUnitMenu from \"../../Common/FormComponents/InputUnitMenu/InputUnitMenu\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...formFieldStyles,\n ...modalStyleUtils,\n });\n\ninterface IEnableQuotaProps {\n classes: any;\n open: boolean;\n enabled: boolean;\n cfg: BucketQuota | null;\n selectedBucket: string;\n closeModalAndRefresh: () => void;\n setModalErrorSnackMessage: typeof setModalErrorSnackMessage;\n}\n\nconst EnableQuota = ({\n classes,\n open,\n enabled,\n cfg,\n selectedBucket,\n closeModalAndRefresh,\n setModalErrorSnackMessage,\n}: IEnableQuotaProps) => {\n const [loading, setLoading] = useState(false);\n const [quotaEnabled, setQuotaEnabled] = useState(false);\n const [quotaSize, setQuotaSize] = useState(\"1\");\n const [quotaUnit, setQuotaUnit] = useState(\"TiB\");\n\n useEffect(() => {\n if (enabled) {\n setQuotaEnabled(true);\n if (cfg) {\n setQuotaSize(`${cfg.quota}`);\n setQuotaUnit(`Gi`);\n\n let maxUnit = \"B\";\n let maxQuota = cfg.quota;\n\n for (let i = 0; i < units.length; i++) {\n if (cfg.quota % Math.pow(1024, i) === 0) {\n maxQuota = cfg.quota / Math.pow(1024, i);\n maxUnit = units[i];\n } else {\n break;\n }\n }\n setQuotaSize(`${maxQuota}`);\n setQuotaUnit(maxUnit);\n }\n }\n }, [enabled, cfg]);\n\n const enableBucketEncryption = () => {\n if (loading) {\n return;\n }\n let req = {\n enabled: quotaEnabled,\n amount: parseInt(getBytes(quotaSize, quotaUnit, true)),\n quota_type: \"hard\",\n };\n\n api\n .invoke(\"PUT\", `/api/v1/buckets/${selectedBucket}/quota`, req)\n .then(() => {\n setLoading(false);\n closeModalAndRefresh();\n })\n .catch((err: ErrorResponseHandler) => {\n setLoading(false);\n setModalErrorSnackMessage(err);\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 \n ) => {\n setQuotaEnabled(event.target.checked);\n }}\n label={\"Enabled\"}\n />\n \n {quotaEnabled && (\n \n \n \n \n ) => {\n if (e.target.validity.valid) {\n setQuotaSize(e.target.value);\n }\n }}\n pattern={\"[0-9]*\"}\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 />\n \n \n \n \n )}\n \n \n {\n closeModalAndRefresh();\n }}\n >\n Cancel\n \n\n \n Save\n \n \n {loading && (\n \n \n \n )}\n \n \n \n );\n};\n\nconst connector = connect(null, {\n setModalErrorSnackMessage,\n});\n\nexport default withStyles(styles)(connector(EnableQuota));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { InputLabel, Switch, Tooltip, Typography } from \"@mui/material\";\nimport Grid from \"@mui/material/Grid\";\nimport { actionsTray, fieldBasic } from \"../common/styleLibrary\";\nimport HelpIcon from \"../../../../../icons/HelpIcon\";\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 divContainer: {\n marginBottom: 20,\n },\n indicatorLabelOn: {\n fontWeight: \"bold\",\n color: \"#081C42 !important\",\n },\n indicatorLabel: {\n fontSize: 12,\n color: \"#E2E2E2\",\n margin: \"0 8px 0 10px\",\n },\n fieldDescription: {\n marginTop: 4,\n color: \"#999999\",\n },\n tooltip: {\n fontSize: 16,\n },\n ...actionsTray,\n ...fieldBasic,\n });\n\nconst StyledSwitch = withStyles((theme) => ({\n root: {\n width: 50,\n height: 24,\n padding: 0,\n margin: 0,\n },\n switchBase: {\n padding: 1,\n \"&$checked\": {\n transform: \"translateX(24px)\",\n color: theme.palette.common.white,\n \"& + $track\": {\n backgroundColor: \"#4CCB92\",\n boxShadow: \"inset 0px 1px 4px rgba(0,0,0,0.1)\",\n opacity: 1,\n border: \"none\",\n },\n },\n \"&$focusVisible $thumb\": {\n color: \"#4CCB92\",\n border: \"6px solid #fff\",\n },\n },\n thumb: {\n width: 22,\n height: 22,\n backgroundColor: \"#FAFAFA\",\n border: \"2px solid #FFFFFF\",\n marginLeft: 1,\n },\n track: {\n borderRadius: 24 / 2,\n backgroundColor: \"#E2E2E2\",\n boxShadow: \"inset 0px 1px 4px rgba(0,0,0,0.1)\",\n opacity: 1,\n transition: theme.transitions.create([\"background-color\", \"border\"]),\n },\n checked: {},\n focusVisible: {},\n switchContainer: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n },\n}))(Switch);\n\nconst FormSwitchWrapper = ({\n label = \"\",\n onChange,\n value,\n id,\n name,\n checked = false,\n disabled = false,\n switchOnly = false,\n tooltip = \"\",\n description = \"\",\n classes,\n indicatorLabels,\n extraInputProps = {},\n}: IFormSwitch) => {\n const switchComponent = (\n \n {!switchOnly && (\n \n {indicatorLabels && indicatorLabels.length > 1\n ? indicatorLabels[1]\n : \"OFF\"}\n \n )}\n \n {!switchOnly && (\n \n {indicatorLabels ? indicatorLabels[0] : \"ON\"}\n \n )}\n \n );\n\n if (switchOnly) {\n return switchComponent;\n }\n\n return (\n
\n \n \n \n \n {label !== \"\" && (\n \n {label}\n {tooltip !== \"\" && (\n
\n \n
\n \n
\n
\n
\n )}\n
\n )}\n
\n \n {description !== \"\" && (\n \n {description}\n \n )}\n \n
\n
\n\n \n {switchComponent}\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 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 { 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 \"../../../../../icons/HelpIcon\";\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 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 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 inputLabel: {\n ...fieldBasic.inputLabel,\n fontWeight: \"normal\",\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 overlayIcon = null,\n overlayObject = null,\n extraInputProps = {},\n overlayAction,\n noLabelMinWidth = false,\n pattern = \"\",\n autoFocus = false,\n classes,\n className = \"\",\n onKeyPress,\n}: InputBoxProps) => {\n let inputProps: any = { \"data-index\": index, ...extraInputProps };\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 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 size={\"small\"}\n disableFocusRipple={false}\n disableRipple={false}\n disableTouchRipple={false}\n >\n {overlayIcon}\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) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { selectorTypes } from \"../SelectWrapper/SelectWrapper\";\nimport { Menu, MenuItem } from \"@mui/material\";\n\ninterface IInputUnitBox {\n classes: any;\n id: string;\n unitSelected: string;\n unitsList: selectorTypes[];\n disabled?: boolean;\n onUnitChange?: (newValue: string) => void;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n buttonTrigger: {\n border: \"#F0F2F2 1px solid\",\n borderRadius: 3,\n color: \"#838383\",\n backgroundColor: \"#fff\",\n fontSize: 12,\n },\n });\n\nconst InputUnitMenu = ({\n classes,\n id,\n unitSelected,\n unitsList,\n disabled = false,\n onUnitChange,\n}: IInputUnitBox) => {\n const [anchorEl, setAnchorEl] = React.useState(null);\n const open = Boolean(anchorEl);\n const handleClick = (event: React.MouseEvent) => {\n setAnchorEl(event.currentTarget);\n };\n const handleClose = (newUnit: string) => {\n setAnchorEl(null);\n if (newUnit !== \"\" && onUnitChange) {\n onUnitChange(newUnit);\n }\n };\n\n return (\n \n \n {unitSelected}\n \n {\n 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 .\n\n// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport get from \"lodash/get\";\nimport ArrowRightIcon from \"@mui/icons-material/ArrowRight\";\nimport ErrorOutlineIcon from \"@mui/icons-material/ErrorOutline\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { AppState } from \"../../../../../store\";\nimport {\n setErrorSnackMessage,\n setModalErrorSnackMessage,\n} from \"../../../../../actions\";\nimport { snackBarMessage } from \"../../../../../types\";\n\ninterface ImodalErrorProps {\n customStyle?: any;\n classes: any;\n modalSnackMessage: snackBarMessage;\n displayErrorMessage: typeof setErrorSnackMessage;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n modalErrorContainer: {\n position: \"absolute\",\n marginTop: 10,\n width: \"80%\",\n backgroundColor: \"#fff\",\n border: \"#C72C48 1px solid\",\n borderLeftWidth: 12,\n borderRadius: 3,\n zIndex: 1000,\n padding: \"10px 15px\",\n left: \"50%\",\n transform: \"translateX(-50%)\",\n opacity: 0,\n transitionDuration: \"0.2s\",\n },\n modalErrorShow: {\n opacity: 1,\n },\n closeButton: {\n position: \"absolute\",\n right: 5,\n fontSize: \"small\",\n border: 0,\n backgroundColor: \"#fff\",\n cursor: \"pointer\",\n },\n errorTitle: {\n display: \"flex\",\n alignItems: \"center\",\n },\n errorLabel: {\n color: \"#000\",\n fontSize: 18,\n fontWeight: 500,\n marginLeft: 5,\n marginRight: 25,\n },\n messageIcon: {\n color: \"#C72C48\",\n display: \"flex\",\n \"& svg\": {\n width: 32,\n height: 32,\n },\n },\n detailsButton: {\n color: \"#9C9C9C\",\n display: \"flex\",\n alignItems: \"center\",\n border: 0,\n backgroundColor: \"transparent\",\n paddingLeft: 5,\n fontSize: 14,\n transformDuration: \"0.3s\",\n cursor: \"pointer\",\n },\n extraDetailsContainer: {\n fontStyle: \"italic\",\n color: \"#9C9C9C\",\n lineHeight: 0,\n padding: \"0 10px\",\n transition: \"all .2s ease-in-out\",\n overflow: \"hidden\",\n },\n extraDetailsOpen: {\n lineHeight: 1,\n padding: \"3px 10px\",\n },\n arrowElement: {\n marginLeft: -5,\n },\n arrowOpen: {\n transform: \"rotateZ(90deg)\",\n transformDuration: \"0.3s\",\n },\n });\n\nvar timerI: any;\n\nconst startHideTimer = (callbackFunction: () => void) => {\n timerI = setInterval(callbackFunction, 10000);\n};\n\nconst stopHideTimer = () => {\n clearInterval(timerI);\n};\n\nconst ModalError = ({\n classes,\n modalSnackMessage,\n displayErrorMessage,\n customStyle,\n}: ImodalErrorProps) => {\n const [detailsOpen, setDetailsOpen] = useState(false);\n const [displayErrorMsg, setDisplayErrorMsg] = useState(false);\n\n const closeErrorMessage = useCallback(() => {\n setDisplayErrorMsg(false);\n }, []);\n\n useEffect(() => {\n if (!displayErrorMsg) {\n displayErrorMessage({ detailedError: \"\", errorMessage: \"\" });\n setDetailsOpen(false);\n //clearInterval(timerI);\n }\n }, [displayErrorMessage, displayErrorMsg]);\n\n useEffect(() => {\n if (\n modalSnackMessage.message !== \"\" &&\n modalSnackMessage.type === \"error\"\n ) {\n //Error message received, we trigger the animation\n setDisplayErrorMsg(true);\n //startHideTimer(closeErrorMessage);\n }\n }, [closeErrorMessage, modalSnackMessage.message, modalSnackMessage.type]);\n\n const detailsToggle = () => {\n setDetailsOpen(!detailsOpen);\n };\n\n const message = get(modalSnackMessage, \"message\", \"\");\n const messageDetails = get(modalSnackMessage, \"detailedErrorMsg\", \"\");\n\n if (modalSnackMessage.type !== \"error\" || message === \"\") {\n return null;\n }\n\n return (\n \n startHideTimer(closeErrorMessage)}\n >\n \n
\n \n \n \n {message}\n
\n {messageDetails !== \"\" && (\n \n
\n \n
\n \n {messageDetails}\n \n
\n )}\n \n
\n );\n};\n\nconst mapState = (state: AppState) => ({\n modalSnackMessage: state.system.modalSnackBar,\n});\n\nconst mapDispatchToProps = {\n displayErrorMessage: setModalErrorSnackMessage,\n};\n\nconst connector = connect(mapState, mapDispatchToProps);\n\nexport default connector(withStyles(styles)(ModalError));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, { useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Snackbar from \"@mui/material/Snackbar\";\nimport { Dialog, DialogContent, DialogTitle } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n deleteDialogStyles,\n snackBarCommon,\n} from \"../FormComponents/common/styleLibrary\";\nimport { AppState } from \"../../../../store\";\nimport { snackBarMessage } from \"../../../../types\";\nimport { setModalSnackMessage } from \"../../../../actions\";\nimport ModalError from \"../FormComponents/ModalError/ModalError\";\nimport CloseIcon from \"@mui/icons-material/Close\";\n\ninterface IModalProps {\n classes: any;\n onClose: () => void;\n modalOpen: boolean;\n title: string | React.ReactNode;\n children: any;\n wideLimit?: boolean;\n modalSnackMessage?: snackBarMessage;\n noContentPadding?: boolean;\n setModalSnackMessage: typeof setModalSnackMessage;\n titleIcon?: React.ReactNode;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...deleteDialogStyles,\n root: {\n \"& .MuiPaper-root\": {\n padding: \"0 2rem 2rem 1rem\",\n },\n },\n content: {\n padding: 25,\n paddingBottom: 0,\n },\n customDialogSize: {\n width: \"100%\",\n maxWidth: 765,\n },\n ...snackBarCommon,\n });\n\nconst ModalWrapper = ({\n onClose,\n modalOpen,\n title,\n children,\n classes,\n wideLimit = true,\n modalSnackMessage,\n noContentPadding,\n setModalSnackMessage,\n titleIcon = null,\n}: IModalProps) => {\n const [openSnackbar, setOpenSnackbar] = useState(false);\n\n useEffect(() => {\n setModalSnackMessage(\"\");\n }, [setModalSnackMessage]);\n\n useEffect(() => {\n if (modalSnackMessage) {\n if (modalSnackMessage.message === \"\") {\n setOpenSnackbar(false);\n return;\n }\n // Open SnackBar\n if (modalSnackMessage.type !== \"error\") {\n setOpenSnackbar(true);\n }\n }\n }, [modalSnackMessage]);\n\n const closeSnackBar = () => {\n setOpenSnackbar(false);\n setModalSnackMessage(\"\");\n };\n\n const customSize = wideLimit\n ? {\n classes: {\n paper: classes.customDialogSize,\n },\n }\n : { maxWidth: \"lg\" as const, fullWidth: true };\n\n let message = \"\";\n\n if (modalSnackMessage) {\n message = modalSnackMessage.detailedErrorMsg;\n if (\n modalSnackMessage.detailedErrorMsg === \"\" ||\n modalSnackMessage.detailedErrorMsg.length < 5\n ) {\n message = modalSnackMessage.message;\n }\n }\n\n return (\n {\n if (reason !== \"backdropClick\") {\n onClose(); // close on Esc but not on click outside\n }\n }}\n className={classes.root}\n >\n \n
\n {titleIcon} {title}\n
\n
\n \n \n \n
\n
\n\n \n {\n closeSnackBar();\n }}\n message={message}\n ContentProps={{\n className: `${classes.snackBar} ${\n modalSnackMessage && modalSnackMessage.type === \"error\"\n ? classes.errorSnackBar\n : \"\"\n }`,\n }}\n autoHideDuration={\n modalSnackMessage && modalSnackMessage.type === \"error\" ? 10000 : 5000\n }\n />\n \n {children}\n \n \n );\n};\n\nconst mapState = (state: AppState) => ({\n modalSnackMessage: state.system.modalSnackBar,\n});\n\nconst connector = connect(mapState, {\n setModalSnackMessage,\n});\n\nexport default withStyles(styles)(connector(ModalWrapper));\n"],"names":["connector","connect","setModalErrorSnackMessage","withStyles","theme","createStyles","formFieldStyles","modalStyleUtils","classes","open","enabled","cfg","selectedBucket","closeModalAndRefresh","useState","loading","setLoading","quotaEnabled","setQuotaEnabled","quotaSize","setQuotaSize","quotaUnit","setQuotaUnit","useEffect","quota","maxUnit","maxQuota","i","units","Math","pow","modalOpen","onClose","title","titleIcon","noValidate","autoComplete","onSubmit","e","preventDefault","req","amount","parseInt","getBytes","quota_type","api","then","catch","err","enableBucketEncryption","container","item","xs","className","formScrollable","formFieldRow","value","id","name","checked","onChange","event","target","label","validity","valid","pattern","required","min","overlayObject","onUnitChange","newValue","unitSelected","unitsList","k8sScalarUnitsExcluding","disabled","modalButtonBar","type","variant","color","onClick","StyledSwitch","root","width","height","padding","margin","switchBase","transform","palette","common","white","backgroundColor","boxShadow","opacity","border","thumb","marginLeft","track","borderRadius","transition","transitions","create","focusVisible","switchContainer","display","alignItems","justifyContent","Switch","divContainer","marginBottom","indicatorLabelOn","fontWeight","indicatorLabel","fontSize","fieldDescription","marginTop","tooltip","actionsTray","fieldBasic","switchOnly","description","indicatorLabels","extraInputProps","switchComponent","clsx","length","inputProps","disableRipple","disableFocusRipple","disableTouchRipple","sm","md","htmlFor","inputLabel","tooltipContainer","placement","textAlign","component","inputStyles","makeStyles","inputFieldStyles","InputField","props","InputProps","tooltipHelper","textBoxContainer","flexGrow","position","overlayAction","right","top","maxWidth","maxHeight","multiline","index","error","placeholder","max","overlayIcon","noLabelMinWidth","autoFocus","onKeyPress","errorInField","inputBoxContainer","noMinWidthLabel","fullWidth","helperText","inputRebase","size","buttonTrigger","React","anchorEl","setAnchorEl","Boolean","handleClose","newUnit","Fragment","undefined","currentTarget","anchorOrigin","vertical","horizontal","transformOrigin","map","unit","timerI","stopHideTimer","clearInterval","mapDispatchToProps","displayErrorMessage","state","modalSnackMessage","system","modalSnackBar","modalErrorContainer","borderLeftWidth","zIndex","left","transitionDuration","modalErrorShow","closeButton","cursor","errorTitle","errorLabel","marginRight","messageIcon","detailsButton","paddingLeft","transformDuration","extraDetailsContainer","fontStyle","lineHeight","overflow","extraDetailsOpen","arrowElement","arrowOpen","customStyle","detailsOpen","setDetailsOpen","displayErrorMsg","setDisplayErrorMsg","closeErrorMessage","useCallback","detailedError","errorMessage","message","get","messageDetails","style","onMouseOver","onMouseLeave","setInterval","Close","ErrorOutline","detailsContainerLink","ArrowRight","setModalSnackMessage","deleteDialogStyles","content","paddingBottom","customDialogSize","snackBarCommon","children","wideLimit","noContentPadding","openSnackbar","setOpenSnackbar","customSize","paper","detailedErrorMsg","Dialog","scroll","reason","DialogTitle","titleText","closeContainer","IconButton","Snackbar","snackBarModal","ContentProps","snackBar","errorSnackBar","autoHideDuration","DialogContent"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/1711.755e1931.chunk.js b/portal-ui/build/static/js/1711.755e1931.chunk.js deleted file mode 100644 index 1b6942c4a..000000000 --- a/portal-ui/build/static/js/1711.755e1931.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1711],{31711:function(e,n,t){t.r(n);var a=t(23430),o=t(18489),i=t(50390),r=t(34424),s=t(66946),l=t(81378),c=t(86509),d=t(4285),u=t(25594),m=t(28948),p=t(44149),h=t(72462),x=t(92440),f=t(66964),b=t(76352),g=t(30324),v=t(85615),Z=t(1365),j=t(62559),C=(0,r.$j)(null,{setModalErrorSnackMessage:p.zb});n.default=(0,d.Z)((function(e){return(0,c.Z)((0,o.Z)((0,o.Z)({},h.DF),h.ID))}))(C((function(e){var n=e.classes,t=e.open,o=e.enabled,r=e.cfg,c=e.selectedBucket,d=e.closeModalAndRefresh,p=e.setModalErrorSnackMessage,h=(0,i.useState)(!1),C=(0,a.Z)(h,2),k=C[0],y=C[1],N=(0,i.useState)(!1),S=(0,a.Z)(N,2),w=S[0],F=S[1],M=(0,i.useState)("1"),E=(0,a.Z)(M,2),L=E[0],P=E[1],B=(0,i.useState)("TiB"),I=(0,a.Z)(B,2),z=I[0],D=I[1];(0,i.useEffect)((function(){if(o&&(F(!0),r)){P("".concat(r.quota)),D("Gi");for(var e="B",n=r.quota,t=0;t1?M[1]:"OFF"}),(0,f.jsx)(b,{checked:v,onChange:r,color:"primary",name:p,inputProps:(0,o.Z)({"aria-label":"primary checkbox"},L),disabled:j,disableRipple:!0,disableFocusRipple:!0,disableTouchRipple:!0,value:s}),!k&&(0,f.jsx)("span",{className:(0,x.Z)(F.indicatorLabel,(0,a.Z)({},F.indicatorLabelOn,v)),children:M?M[0]:"ON"})]});return k?P:(0,f.jsx)("div",{className:F.divContainer,children:(0,f.jsxs)(m.ZP,{container:!0,alignItems:"center",children:[(0,f.jsx)(m.ZP,{item:!0,xs:!0,children:(0,f.jsxs)(m.ZP,{container:!0,children:[(0,f.jsx)(m.ZP,{item:!0,xs:12,sm:10,md:9,children:""!==t&&(0,f.jsxs)(c.Z,{htmlFor:l,className:F.inputLabel,children:[(0,f.jsx)("span",{children:t}),""!==N&&(0,f.jsx)("div",{className:F.tooltipContainer,children:(0,f.jsx)(d.Z,{title:N,placement:"top-start",children:(0,f.jsx)("div",{className:F.tooltip,children:(0,f.jsx)(h.Z,{})})})})]})}),(0,f.jsx)(m.ZP,{item:!0,xs:12,sm:!0,textAlign:"left",children:""!==w&&(0,f.jsx)(u.Z,{component:"p",className:F.fieldDescription,children:w})})]})}),(0,f.jsx)(m.ZP,{item:!0,xs:12,sm:2,textAlign:"right",className:F.switchContainer,children:P})]})})}))},66964:function(e,n,t){var a=t(18489),o=t(50390),i=t(12066),r=t(25594),s=t(36554),l=t(94187),c=t(95467),d=t(86509),u=t(62449),m=t(4285),p=t(72462),h=t(97538),x=t(44977),f=t(62559),b=(0,u.Z)((function(e){return(0,d.Z)((0,a.Z)({},p.gM))}));function g(e){var n=b();return(0,f.jsx)(i.Z,(0,a.Z)({InputProps:{classes:n}},e))}n.Z=(0,m.Z)((function(e){return(0,d.Z)((0,a.Z)((0,a.Z)((0,a.Z)({},p.YI),p.Hr),{},{textBoxContainer:{flexGrow:1,position:"relative"},overlayAction:{position:"absolute",right:5,top:6,"& svg":{maxWidth:15,maxHeight:15},"&.withLabel":{top:5}},inputLabel:(0,a.Z)((0,a.Z)({},p.YI.inputLabel),{},{fontWeight:"normal"})}))}))((function(e){var n=e.label,t=e.onChange,i=e.value,d=e.id,u=e.name,m=e.type,p=void 0===m?"text":m,b=e.autoComplete,v=void 0===b?"off":b,Z=e.disabled,j=void 0!==Z&&Z,C=e.multiline,k=void 0!==C&&C,y=e.tooltip,N=void 0===y?"":y,S=e.index,w=void 0===S?0:S,F=e.error,M=void 0===F?"":F,E=e.required,L=void 0!==E&&E,P=e.placeholder,B=void 0===P?"":P,I=e.min,z=e.max,D=e.overlayIcon,O=void 0===D?null:D,R=e.overlayObject,q=void 0===R?null:R,T=e.extraInputProps,W=void 0===T?{}:T,A=e.overlayAction,_=e.noLabelMinWidth,$=void 0!==_&&_,H=e.pattern,K=void 0===H?"":H,Q=e.autoFocus,U=void 0!==Q&&Q,V=e.classes,Y=e.className,G=void 0===Y?"":Y,X=e.onKeyPress,J=(0,a.Z)({"data-index":w},W);return"number"===p&&I&&(J.min=I),"number"===p&&z&&(J.max=z),""!==K&&(J.pattern=K),(0,f.jsx)(o.Fragment,{children:(0,f.jsxs)(r.ZP,{container:!0,className:(0,x.Z)(""!==G?G:"",""!==M?V.errorInField:V.inputBoxContainer),children:[""!==n&&(0,f.jsxs)(s.Z,{htmlFor:d,className:$?V.noMinWidthLabel:V.inputLabel,children:[(0,f.jsxs)("span",{children:[n,L?"*":""]}),""!==N&&(0,f.jsx)("div",{className:V.tooltipContainer,children:(0,f.jsx)(l.Z,{title:N,placement:"top-start",children:(0,f.jsx)("div",{className:V.tooltip,children:(0,f.jsx)(h.Z,{})})})})]}),(0,f.jsxs)("div",{className:V.textBoxContainer,children:[(0,f.jsx)(g,{id:d,name:u,fullWidth:!0,value:i,autoFocus:U,disabled:j,onChange:t,type:p,multiline:k,autoComplete:v,inputProps:J,error:""!==M,helperText:M,placeholder:B,className:V.inputRebase,onKeyPress:X}),O&&(0,f.jsx)("div",{className:"".concat(V.overlayAction," ").concat(""!==n?"withLabel":""),children:(0,f.jsx)(c.Z,{onClick:A?function(){A()}:function(){return null},size:"small",disableFocusRipple:!1,disableRipple:!1,disableTouchRipple:!1,children:O})}),q&&(0,f.jsx)("div",{className:"".concat(V.overlayAction," ").concat(""!==n?"withLabel":""),children:q})]})]})})}))},1365:function(e,n,t){var a=t(23430),o=t(50390),i=t(86509),r=t(4285),s=t(26936),l=t(31680),c=t(62559);n.Z=(0,r.Z)((function(e){return(0,i.Z)({buttonTrigger:{border:"#F0F2F2 1px solid",borderRadius:3,color:"#838383",backgroundColor:"#fff",fontSize:12}})}))((function(e){var n=e.classes,t=e.id,i=e.unitSelected,r=e.unitsList,d=e.disabled,u=void 0!==d&&d,m=e.onUnitChange,p=o.useState(null),h=(0,a.Z)(p,2),x=h[0],f=h[1],b=Boolean(x),g=function(e){f(null),""!==e&&m&&m(e)};return(0,c.jsxs)(o.Fragment,{children:[(0,c.jsx)("button",{id:"".concat(t,"-button"),"aria-controls":"".concat(t,"-menu"),"aria-haspopup":"true","aria-expanded":b?"true":void 0,onClick:function(e){f(e.currentTarget)},className:n.buttonTrigger,disabled:u,type:"button",children:i}),(0,c.jsx)(s.Z,{id:"".concat(t,"-menu"),"aria-labelledby":"".concat(t,"-button"),anchorEl:x,open:b,onClose:function(){g("")},anchorOrigin:{vertical:"bottom",horizontal:"center"},transformOrigin:{vertical:"top",horizontal:"center"},children:r.map((function(e){return(0,c.jsx)(l.Z,{onClick:function(){return g(e.value)},children:e.label},"itemUnit-".concat(e.value,"-").concat(e.label))}))})]})}))},76352:function(e,n,t){t.d(n,{Z:function(){return w}});var a,o=t(23430),i=t(18489),r=t(50390),s=t(34424),l=t(95467),c=t(97771),d=t(84402),u=t(78426),m=t(93085),p=t(86509),h=t(4285),x=t(72462),f=t(44149),b=t(38342),g=t.n(b),v=t(92125),Z=t(19538),j=t(21278),C=t(62559),k=function(){clearInterval(a)},y={displayErrorMessage:f.zb},N=(0,s.$j)((function(e){return{modalSnackMessage:e.system.modalSnackBar}}),y)((0,h.Z)((function(e){return(0,p.Z)({modalErrorContainer:{position:"absolute",marginTop:10,width:"80%",backgroundColor:"#fff",border:"#C72C48 1px solid",borderLeftWidth:12,borderRadius:3,zIndex:1e3,padding:"10px 15px",left:"50%",transform:"translateX(-50%)",opacity:0,transitionDuration:"0.2s"},modalErrorShow:{opacity:1},closeButton:{position:"absolute",right:5,fontSize:"small",border:0,backgroundColor:"#fff",cursor:"pointer"},errorTitle:{display:"flex",alignItems:"center"},errorLabel:{color:"#000",fontSize:18,fontWeight:500,marginLeft:5,marginRight:25},messageIcon:{color:"#C72C48",display:"flex","& svg":{width:32,height:32}},detailsButton:{color:"#9C9C9C",display:"flex",alignItems:"center",border:0,backgroundColor:"transparent",paddingLeft:5,fontSize:14,transformDuration:"0.3s",cursor:"pointer"},extraDetailsContainer:{fontStyle:"italic",color:"#9C9C9C",lineHeight:0,padding:"0 10px",transition:"all .2s ease-in-out",overflow:"hidden"},extraDetailsOpen:{lineHeight:1,padding:"3px 10px"},arrowElement:{marginLeft:-5},arrowOpen:{transform:"rotateZ(90deg)",transformDuration:"0.3s"}})}))((function(e){var n=e.classes,t=e.modalSnackMessage,i=e.displayErrorMessage,s=e.customStyle,l=(0,r.useState)(!1),c=(0,o.Z)(l,2),d=c[0],u=c[1],m=(0,r.useState)(!1),p=(0,o.Z)(m,2),h=p[0],x=p[1],f=(0,r.useCallback)((function(){x(!1)}),[]);(0,r.useEffect)((function(){h||(i({detailedError:"",errorMessage:""}),u(!1))}),[i,h]),(0,r.useEffect)((function(){""!==t.message&&"error"===t.type&&x(!0)}),[f,t.message,t.type]);var b=g()(t,"message",""),y=g()(t,"detailedErrorMsg","");return"error"!==t.type||""===b?null:(0,C.jsx)(r.Fragment,{children:(0,C.jsxs)("div",{className:"".concat(n.modalErrorContainer," ").concat(h?n.modalErrorShow:""),style:s,onMouseOver:k,onMouseLeave:function(){a=setInterval(f,1e4)},children:[(0,C.jsx)("button",{className:n.closeButton,onClick:f,children:(0,C.jsx)(j.Z,{})}),(0,C.jsxs)("div",{className:n.errorTitle,children:[(0,C.jsx)("span",{className:n.messageIcon,children:(0,C.jsx)(Z.Z,{})}),(0,C.jsx)("span",{className:n.errorLabel,children:b})]}),""!==y&&(0,C.jsxs)(r.Fragment,{children:[(0,C.jsx)("div",{className:n.detailsContainerLink,children:(0,C.jsxs)("button",{className:n.detailsButton,onClick:function(){u(!d)},children:["Details",(0,C.jsx)(v.Z,{className:"".concat(n.arrowElement," ").concat(d?n.arrowOpen:"")})]})}),(0,C.jsx)("div",{className:"".concat(n.extraDetailsContainer," ").concat(d?n.extraDetailsOpen:""),children:y})]})]})})}))),S=(0,s.$j)((function(e){return{modalSnackMessage:e.system.modalSnackBar}}),{setModalSnackMessage:f.MK}),w=(0,h.Z)((function(e){return(0,p.Z)((0,i.Z)((0,i.Z)({},x.Qw),{},{root:{"& .MuiPaper-root":{padding:"0 2rem 2rem 1rem"}},content:{padding:25,paddingBottom:0},customDialogSize:{width:"100%",maxWidth:765}},x.sN))}))(S((function(e){var n=e.onClose,t=e.modalOpen,a=e.title,s=e.children,p=e.classes,h=e.wideLimit,x=void 0===h||h,f=e.modalSnackMessage,b=e.noContentPadding,g=e.setModalSnackMessage,v=e.titleIcon,Z=void 0===v?null:v,k=(0,r.useState)(!1),y=(0,o.Z)(k,2),S=y[0],w=y[1];(0,r.useEffect)((function(){g("")}),[g]),(0,r.useEffect)((function(){if(f){if(""===f.message)return void w(!1);"error"!==f.type&&w(!0)}}),[f]);var F=x?{classes:{paper:p.customDialogSize}}:{maxWidth:"lg",fullWidth:!0},M="";return f&&(M=f.detailedErrorMsg,(""===f.detailedErrorMsg||f.detailedErrorMsg.length<5)&&(M=f.message)),(0,C.jsxs)(d.Z,(0,i.Z)((0,i.Z)({open:t,classes:p},F),{},{scroll:"paper",onClose:function(e,t){"backdropClick"!==t&&n()},className:p.root,children:[(0,C.jsxs)(u.Z,{className:p.title,children:[(0,C.jsxs)("div",{className:p.titleText,children:[Z," ",a]}),(0,C.jsx)("div",{className:p.closeContainer,children:(0,C.jsx)(l.Z,{"aria-label":"close",className:p.closeButton,onClick:n,disableRipple:!0,size:"small",children:(0,C.jsx)(j.Z,{})})})]}),(0,C.jsx)(N,{}),(0,C.jsx)(c.Z,{open:S,className:p.snackBarModal,onClose:function(){w(!1),g("")},message:M,ContentProps:{className:"".concat(p.snackBar," ").concat(f&&"error"===f.type?p.errorSnackBar:"")},autoHideDuration:f&&"error"===f.type?1e4:5e3}),(0,C.jsx)(m.Z,{className:b?"":p.content,children:s})]}))})))}}]); -//# sourceMappingURL=1711.755e1931.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/1711.755e1931.chunk.js.map b/portal-ui/build/static/js/1711.755e1931.chunk.js.map deleted file mode 100644 index 13b7d7c9e..000000000 --- a/portal-ui/build/static/js/1711.755e1931.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/1711.755e1931.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/EnableQuota.tsx","screens/Console/Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper.tsx","screens/Console/Common/FormComponents/InputBoxWrapper/InputBoxWrapper.tsx","screens/Console/Common/FormComponents/InputUnitMenu/InputUnitMenu.tsx","screens/Console/Common/FormComponents/ModalError/ModalError.tsx","screens/Console/Common/ModalWrapper/ModalWrapper.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport { Button, LinearProgress } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport Grid from \"@mui/material/Grid\";\nimport {\n getBytes,\n k8sScalarUnitsExcluding,\n units,\n} from \"../../../../common/utils\";\nimport { BucketQuota } from \"../types\";\nimport { setModalErrorSnackMessage } from \"../../../../actions\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport FormSwitchWrapper from \"../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport api from \"../../../../common/api\";\nimport { BucketQuotaIcon } from \"../../../../icons\";\nimport InputUnitMenu from \"../../Common/FormComponents/InputUnitMenu/InputUnitMenu\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...formFieldStyles,\n ...modalStyleUtils,\n });\n\ninterface IEnableQuotaProps {\n classes: any;\n open: boolean;\n enabled: boolean;\n cfg: BucketQuota | null;\n selectedBucket: string;\n closeModalAndRefresh: () => void;\n setModalErrorSnackMessage: typeof setModalErrorSnackMessage;\n}\n\nconst EnableQuota = ({\n classes,\n open,\n enabled,\n cfg,\n selectedBucket,\n closeModalAndRefresh,\n setModalErrorSnackMessage,\n}: IEnableQuotaProps) => {\n const [loading, setLoading] = useState(false);\n const [quotaEnabled, setQuotaEnabled] = useState(false);\n const [quotaSize, setQuotaSize] = useState(\"1\");\n const [quotaUnit, setQuotaUnit] = useState(\"TiB\");\n\n useEffect(() => {\n if (enabled) {\n setQuotaEnabled(true);\n if (cfg) {\n setQuotaSize(`${cfg.quota}`);\n setQuotaUnit(`Gi`);\n\n let maxUnit = \"B\";\n let maxQuota = cfg.quota;\n\n for (let i = 0; i < units.length; i++) {\n if (cfg.quota % Math.pow(1024, i) === 0) {\n maxQuota = cfg.quota / Math.pow(1024, i);\n maxUnit = units[i];\n } else {\n break;\n }\n }\n setQuotaSize(`${maxQuota}`);\n setQuotaUnit(maxUnit);\n }\n }\n }, [enabled, cfg]);\n\n const enableBucketEncryption = () => {\n if (loading) {\n return;\n }\n let req = {\n enabled: quotaEnabled,\n amount: parseInt(getBytes(quotaSize, quotaUnit, true)),\n quota_type: \"hard\",\n };\n\n api\n .invoke(\"PUT\", `/api/v1/buckets/${selectedBucket}/quota`, req)\n .then(() => {\n setLoading(false);\n closeModalAndRefresh();\n })\n .catch((err: ErrorResponseHandler) => {\n setLoading(false);\n setModalErrorSnackMessage(err);\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 \n ) => {\n setQuotaEnabled(event.target.checked);\n }}\n label={\"Enabled\"}\n />\n \n {quotaEnabled && (\n \n \n \n \n ) => {\n if (e.target.validity.valid) {\n setQuotaSize(e.target.value);\n }\n }}\n pattern={\"[0-9]*\"}\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 />\n \n \n \n \n )}\n \n \n {\n closeModalAndRefresh();\n }}\n >\n Cancel\n \n\n \n Save\n \n \n {loading && (\n \n \n \n )}\n \n \n \n );\n};\n\nconst connector = connect(null, {\n setModalErrorSnackMessage,\n});\n\nexport default withStyles(styles)(connector(EnableQuota));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { InputLabel, Switch, Tooltip, Typography } from \"@mui/material\";\nimport Grid from \"@mui/material/Grid\";\nimport { actionsTray, fieldBasic } from \"../common/styleLibrary\";\nimport HelpIcon from \"../../../../../icons/HelpIcon\";\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 divContainer: {\n marginBottom: 20,\n },\n indicatorLabelOn: {\n fontWeight: \"bold\",\n color: \"#081C42 !important\",\n },\n indicatorLabel: {\n fontSize: 12,\n color: \"#E2E2E2\",\n margin: \"0 8px 0 10px\",\n },\n fieldDescription: {\n marginTop: 4,\n color: \"#999999\",\n },\n tooltip: {\n fontSize: 16,\n },\n ...actionsTray,\n ...fieldBasic,\n });\n\nconst StyledSwitch = withStyles((theme) => ({\n root: {\n width: 50,\n height: 24,\n padding: 0,\n margin: 0,\n },\n switchBase: {\n padding: 1,\n \"&$checked\": {\n transform: \"translateX(24px)\",\n color: theme.palette.common.white,\n \"& + $track\": {\n backgroundColor: \"#4CCB92\",\n boxShadow: \"inset 0px 1px 4px rgba(0,0,0,0.1)\",\n opacity: 1,\n border: \"none\",\n },\n },\n \"&$focusVisible $thumb\": {\n color: \"#4CCB92\",\n border: \"6px solid #fff\",\n },\n },\n thumb: {\n width: 22,\n height: 22,\n backgroundColor: \"#FAFAFA\",\n border: \"2px solid #FFFFFF\",\n marginLeft: 1,\n },\n track: {\n borderRadius: 24 / 2,\n backgroundColor: \"#E2E2E2\",\n boxShadow: \"inset 0px 1px 4px rgba(0,0,0,0.1)\",\n opacity: 1,\n transition: theme.transitions.create([\"background-color\", \"border\"]),\n },\n checked: {},\n focusVisible: {},\n switchContainer: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n },\n}))(Switch);\n\nconst FormSwitchWrapper = ({\n label = \"\",\n onChange,\n value,\n id,\n name,\n checked = false,\n disabled = false,\n switchOnly = false,\n tooltip = \"\",\n description = \"\",\n classes,\n indicatorLabels,\n extraInputProps = {},\n}: IFormSwitch) => {\n const switchComponent = (\n \n {!switchOnly && (\n \n {indicatorLabels && indicatorLabels.length > 1\n ? indicatorLabels[1]\n : \"OFF\"}\n \n )}\n \n {!switchOnly && (\n \n {indicatorLabels ? indicatorLabels[0] : \"ON\"}\n \n )}\n \n );\n\n if (switchOnly) {\n return switchComponent;\n }\n\n return (\n
\n \n \n \n \n {label !== \"\" && (\n \n {label}\n {tooltip !== \"\" && (\n
\n \n
\n \n
\n
\n
\n )}\n
\n )}\n
\n \n {description !== \"\" && (\n \n {description}\n \n )}\n \n
\n
\n\n \n {switchComponent}\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 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 { 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 \"../../../../../icons/HelpIcon\";\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 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 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 inputLabel: {\n ...fieldBasic.inputLabel,\n fontWeight: \"normal\",\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 overlayIcon = null,\n overlayObject = null,\n extraInputProps = {},\n overlayAction,\n noLabelMinWidth = false,\n pattern = \"\",\n autoFocus = false,\n classes,\n className = \"\",\n onKeyPress,\n}: InputBoxProps) => {\n let inputProps: any = { \"data-index\": index, ...extraInputProps };\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 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 size={\"small\"}\n disableFocusRipple={false}\n disableRipple={false}\n disableTouchRipple={false}\n >\n {overlayIcon}\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) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { selectorTypes } from \"../SelectWrapper/SelectWrapper\";\nimport { Menu, MenuItem } from \"@mui/material\";\n\ninterface IInputUnitBox {\n classes: any;\n id: string;\n unitSelected: string;\n unitsList: selectorTypes[];\n disabled?: boolean;\n onUnitChange?: (newValue: string) => void;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n buttonTrigger: {\n border: \"#F0F2F2 1px solid\",\n borderRadius: 3,\n color: \"#838383\",\n backgroundColor: \"#fff\",\n fontSize: 12,\n },\n });\n\nconst InputUnitMenu = ({\n classes,\n id,\n unitSelected,\n unitsList,\n disabled = false,\n onUnitChange,\n}: IInputUnitBox) => {\n const [anchorEl, setAnchorEl] = React.useState(null);\n const open = Boolean(anchorEl);\n const handleClick = (event: React.MouseEvent) => {\n setAnchorEl(event.currentTarget);\n };\n const handleClose = (newUnit: string) => {\n setAnchorEl(null);\n if (newUnit !== \"\" && onUnitChange) {\n onUnitChange(newUnit);\n }\n };\n\n return (\n \n \n {unitSelected}\n \n {\n 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 .\n\n// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport get from \"lodash/get\";\nimport ArrowRightIcon from \"@mui/icons-material/ArrowRight\";\nimport ErrorOutlineIcon from \"@mui/icons-material/ErrorOutline\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { AppState } from \"../../../../../store\";\nimport {\n setErrorSnackMessage,\n setModalErrorSnackMessage,\n} from \"../../../../../actions\";\nimport { snackBarMessage } from \"../../../../../types\";\n\ninterface ImodalErrorProps {\n customStyle?: any;\n classes: any;\n modalSnackMessage: snackBarMessage;\n displayErrorMessage: typeof setErrorSnackMessage;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n modalErrorContainer: {\n position: \"absolute\",\n marginTop: 10,\n width: \"80%\",\n backgroundColor: \"#fff\",\n border: \"#C72C48 1px solid\",\n borderLeftWidth: 12,\n borderRadius: 3,\n zIndex: 1000,\n padding: \"10px 15px\",\n left: \"50%\",\n transform: \"translateX(-50%)\",\n opacity: 0,\n transitionDuration: \"0.2s\",\n },\n modalErrorShow: {\n opacity: 1,\n },\n closeButton: {\n position: \"absolute\",\n right: 5,\n fontSize: \"small\",\n border: 0,\n backgroundColor: \"#fff\",\n cursor: \"pointer\",\n },\n errorTitle: {\n display: \"flex\",\n alignItems: \"center\",\n },\n errorLabel: {\n color: \"#000\",\n fontSize: 18,\n fontWeight: 500,\n marginLeft: 5,\n marginRight: 25,\n },\n messageIcon: {\n color: \"#C72C48\",\n display: \"flex\",\n \"& svg\": {\n width: 32,\n height: 32,\n },\n },\n detailsButton: {\n color: \"#9C9C9C\",\n display: \"flex\",\n alignItems: \"center\",\n border: 0,\n backgroundColor: \"transparent\",\n paddingLeft: 5,\n fontSize: 14,\n transformDuration: \"0.3s\",\n cursor: \"pointer\",\n },\n extraDetailsContainer: {\n fontStyle: \"italic\",\n color: \"#9C9C9C\",\n lineHeight: 0,\n padding: \"0 10px\",\n transition: \"all .2s ease-in-out\",\n overflow: \"hidden\",\n },\n extraDetailsOpen: {\n lineHeight: 1,\n padding: \"3px 10px\",\n },\n arrowElement: {\n marginLeft: -5,\n },\n arrowOpen: {\n transform: \"rotateZ(90deg)\",\n transformDuration: \"0.3s\",\n },\n });\n\nvar timerI: any;\n\nconst startHideTimer = (callbackFunction: () => void) => {\n timerI = setInterval(callbackFunction, 10000);\n};\n\nconst stopHideTimer = () => {\n clearInterval(timerI);\n};\n\nconst ModalError = ({\n classes,\n modalSnackMessage,\n displayErrorMessage,\n customStyle,\n}: ImodalErrorProps) => {\n const [detailsOpen, setDetailsOpen] = useState(false);\n const [displayErrorMsg, setDisplayErrorMsg] = useState(false);\n\n const closeErrorMessage = useCallback(() => {\n setDisplayErrorMsg(false);\n }, []);\n\n useEffect(() => {\n if (!displayErrorMsg) {\n displayErrorMessage({ detailedError: \"\", errorMessage: \"\" });\n setDetailsOpen(false);\n //clearInterval(timerI);\n }\n }, [displayErrorMessage, displayErrorMsg]);\n\n useEffect(() => {\n if (\n modalSnackMessage.message !== \"\" &&\n modalSnackMessage.type === \"error\"\n ) {\n //Error message received, we trigger the animation\n setDisplayErrorMsg(true);\n //startHideTimer(closeErrorMessage);\n }\n }, [closeErrorMessage, modalSnackMessage.message, modalSnackMessage.type]);\n\n const detailsToggle = () => {\n setDetailsOpen(!detailsOpen);\n };\n\n const message = get(modalSnackMessage, \"message\", \"\");\n const messageDetails = get(modalSnackMessage, \"detailedErrorMsg\", \"\");\n\n if (modalSnackMessage.type !== \"error\" || message === \"\") {\n return null;\n }\n\n return (\n \n startHideTimer(closeErrorMessage)}\n >\n \n
\n \n \n \n {message}\n
\n {messageDetails !== \"\" && (\n \n
\n \n
\n \n {messageDetails}\n \n
\n )}\n \n
\n );\n};\n\nconst mapState = (state: AppState) => ({\n modalSnackMessage: state.system.modalSnackBar,\n});\n\nconst mapDispatchToProps = {\n displayErrorMessage: setModalErrorSnackMessage,\n};\n\nconst connector = connect(mapState, mapDispatchToProps);\n\nexport default connector(withStyles(styles)(ModalError));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, { useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Snackbar from \"@mui/material/Snackbar\";\nimport { Dialog, DialogContent, DialogTitle } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n deleteDialogStyles,\n snackBarCommon,\n} from \"../FormComponents/common/styleLibrary\";\nimport { AppState } from \"../../../../store\";\nimport { snackBarMessage } from \"../../../../types\";\nimport { setModalSnackMessage } from \"../../../../actions\";\nimport ModalError from \"../FormComponents/ModalError/ModalError\";\nimport CloseIcon from \"@mui/icons-material/Close\";\n\ninterface IModalProps {\n classes: any;\n onClose: () => void;\n modalOpen: boolean;\n title: string | React.ReactNode;\n children: any;\n wideLimit?: boolean;\n modalSnackMessage?: snackBarMessage;\n noContentPadding?: boolean;\n setModalSnackMessage: typeof setModalSnackMessage;\n titleIcon?: React.ReactNode;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...deleteDialogStyles,\n root: {\n \"& .MuiPaper-root\": {\n padding: \"0 2rem 2rem 1rem\",\n },\n },\n content: {\n padding: 25,\n paddingBottom: 0,\n },\n customDialogSize: {\n width: \"100%\",\n maxWidth: 765,\n },\n ...snackBarCommon,\n });\n\nconst ModalWrapper = ({\n onClose,\n modalOpen,\n title,\n children,\n classes,\n wideLimit = true,\n modalSnackMessage,\n noContentPadding,\n setModalSnackMessage,\n titleIcon = null,\n}: IModalProps) => {\n const [openSnackbar, setOpenSnackbar] = useState(false);\n\n useEffect(() => {\n setModalSnackMessage(\"\");\n }, [setModalSnackMessage]);\n\n useEffect(() => {\n if (modalSnackMessage) {\n if (modalSnackMessage.message === \"\") {\n setOpenSnackbar(false);\n return;\n }\n // Open SnackBar\n if (modalSnackMessage.type !== \"error\") {\n setOpenSnackbar(true);\n }\n }\n }, [modalSnackMessage]);\n\n const closeSnackBar = () => {\n setOpenSnackbar(false);\n setModalSnackMessage(\"\");\n };\n\n const customSize = wideLimit\n ? {\n classes: {\n paper: classes.customDialogSize,\n },\n }\n : { maxWidth: \"lg\" as const, fullWidth: true };\n\n let message = \"\";\n\n if (modalSnackMessage) {\n message = modalSnackMessage.detailedErrorMsg;\n if (\n modalSnackMessage.detailedErrorMsg === \"\" ||\n modalSnackMessage.detailedErrorMsg.length < 5\n ) {\n message = modalSnackMessage.message;\n }\n }\n\n return (\n {\n if (reason !== \"backdropClick\") {\n onClose(); // close on Esc but not on click outside\n }\n }}\n className={classes.root}\n >\n \n
\n {titleIcon} {title}\n
\n
\n \n \n \n
\n
\n\n \n {\n closeSnackBar();\n }}\n message={message}\n ContentProps={{\n className: `${classes.snackBar} ${\n modalSnackMessage && modalSnackMessage.type === \"error\"\n ? classes.errorSnackBar\n : \"\"\n }`,\n }}\n autoHideDuration={\n modalSnackMessage && modalSnackMessage.type === \"error\" ? 10000 : 5000\n }\n />\n \n {children}\n \n \n );\n};\n\nconst mapState = (state: AppState) => ({\n modalSnackMessage: state.system.modalSnackBar,\n});\n\nconst connector = connect(mapState, {\n setModalSnackMessage,\n});\n\nexport default withStyles(styles)(connector(ModalWrapper));\n"],"names":["connector","connect","setModalErrorSnackMessage","withStyles","theme","createStyles","formFieldStyles","modalStyleUtils","classes","open","enabled","cfg","selectedBucket","closeModalAndRefresh","useState","loading","setLoading","quotaEnabled","setQuotaEnabled","quotaSize","setQuotaSize","quotaUnit","setQuotaUnit","useEffect","quota","maxUnit","maxQuota","i","units","Math","pow","modalOpen","onClose","title","titleIcon","noValidate","autoComplete","onSubmit","e","preventDefault","req","amount","parseInt","getBytes","quota_type","api","then","catch","err","enableBucketEncryption","container","item","xs","className","formScrollable","formFieldRow","value","id","name","checked","onChange","event","target","label","validity","valid","pattern","required","min","overlayObject","onUnitChange","newValue","unitSelected","unitsList","k8sScalarUnitsExcluding","disabled","modalButtonBar","type","variant","color","onClick","StyledSwitch","root","width","height","padding","margin","switchBase","transform","palette","common","white","backgroundColor","boxShadow","opacity","border","thumb","marginLeft","track","borderRadius","transition","transitions","create","focusVisible","switchContainer","display","alignItems","justifyContent","Switch","divContainer","marginBottom","indicatorLabelOn","fontWeight","indicatorLabel","fontSize","fieldDescription","marginTop","tooltip","actionsTray","fieldBasic","switchOnly","description","indicatorLabels","extraInputProps","switchComponent","clsx","length","inputProps","disableRipple","disableFocusRipple","disableTouchRipple","sm","md","htmlFor","inputLabel","tooltipContainer","placement","textAlign","component","inputStyles","makeStyles","inputFieldStyles","InputField","props","InputProps","tooltipHelper","textBoxContainer","flexGrow","position","overlayAction","right","top","maxWidth","maxHeight","multiline","index","error","placeholder","max","overlayIcon","noLabelMinWidth","autoFocus","onKeyPress","errorInField","inputBoxContainer","noMinWidthLabel","fullWidth","helperText","inputRebase","size","buttonTrigger","React","anchorEl","setAnchorEl","Boolean","handleClose","newUnit","Fragment","undefined","currentTarget","anchorOrigin","vertical","horizontal","transformOrigin","map","unit","timerI","stopHideTimer","clearInterval","mapDispatchToProps","displayErrorMessage","state","modalSnackMessage","system","modalSnackBar","modalErrorContainer","borderLeftWidth","zIndex","left","transitionDuration","modalErrorShow","closeButton","cursor","errorTitle","errorLabel","marginRight","messageIcon","detailsButton","paddingLeft","transformDuration","extraDetailsContainer","fontStyle","lineHeight","overflow","extraDetailsOpen","arrowElement","arrowOpen","customStyle","detailsOpen","setDetailsOpen","displayErrorMsg","setDisplayErrorMsg","closeErrorMessage","useCallback","detailedError","errorMessage","message","get","messageDetails","style","onMouseOver","onMouseLeave","setInterval","Close","ErrorOutline","detailsContainerLink","ArrowRight","setModalSnackMessage","deleteDialogStyles","content","paddingBottom","customDialogSize","snackBarCommon","children","wideLimit","noContentPadding","openSnackbar","setOpenSnackbar","customSize","paper","detailedErrorMsg","Dialog","scroll","reason","DialogTitle","titleText","closeContainer","IconButton","Snackbar","snackBarModal","ContentProps","snackBar","errorSnackBar","autoHideDuration","DialogContent"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/1719.c433d41f.chunk.js b/portal-ui/build/static/js/1719.75b1e59d.chunk.js similarity index 98% rename from portal-ui/build/static/js/1719.c433d41f.chunk.js rename to portal-ui/build/static/js/1719.75b1e59d.chunk.js index 88ae8d099..09b1e96fa 100644 --- a/portal-ui/build/static/js/1719.c433d41f.chunk.js +++ b/portal-ui/build/static/js/1719.75b1e59d.chunk.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1719],{66964:function(e,n,t){var a=t(18489),o=t(50390),i=t(12066),s=t(25594),l=t(36554),r=t(94187),c=t(95467),d=t(86509),u=t(62449),m=t(4285),p=t(72462),h=t(97538),v=t(44977),x=t(62559),Z=(0,u.Z)((function(e){return(0,d.Z)((0,a.Z)({},p.gM))}));function f(e){var n=Z();return(0,x.jsx)(i.Z,(0,a.Z)({InputProps:{classes:n}},e))}n.Z=(0,m.Z)((function(e){return(0,d.Z)((0,a.Z)((0,a.Z)((0,a.Z)({},p.YI),p.Hr),{},{textBoxContainer:{flexGrow:1,position:"relative"},overlayAction:{position:"absolute",right:5,top:6,"& svg":{maxWidth:15,maxHeight:15},"&.withLabel":{top:5}},inputLabel:(0,a.Z)((0,a.Z)({},p.YI.inputLabel),{},{fontWeight:"normal"})}))}))((function(e){var n=e.label,t=e.onChange,i=e.value,d=e.id,u=e.name,m=e.type,p=void 0===m?"text":m,Z=e.autoComplete,j=void 0===Z?"off":Z,b=e.disabled,g=void 0!==b&&b,C=e.multiline,y=void 0!==C&&C,N=e.tooltip,P=void 0===N?"":N,k=e.index,I=void 0===k?0:k,T=e.error,L=void 0===T?"":T,E=e.required,S=void 0!==E&&E,w=e.placeholder,F=void 0===w?"":w,B=e.min,M=e.max,A=e.overlayIcon,K=void 0===A?null:A,R=e.overlayObject,D=void 0===R?null:R,O=e.extraInputProps,W=void 0===O?{}:O,z=e.overlayAction,G=e.noLabelMinWidth,H=void 0!==G&&G,Y=e.pattern,$=void 0===Y?"":Y,_=e.autoFocus,q=void 0!==_&&_,Q=e.classes,U=e.className,V=void 0===U?"":U,X=e.onKeyPress,J=(0,a.Z)({"data-index":I},W);return"number"===p&&B&&(J.min=B),"number"===p&&M&&(J.max=M),""!==$&&(J.pattern=$),(0,x.jsx)(o.Fragment,{children:(0,x.jsxs)(s.ZP,{container:!0,className:(0,v.Z)(""!==V?V:"",""!==L?Q.errorInField:Q.inputBoxContainer),children:[""!==n&&(0,x.jsxs)(l.Z,{htmlFor:d,className:H?Q.noMinWidthLabel:Q.inputLabel,children:[(0,x.jsxs)("span",{children:[n,S?"*":""]}),""!==P&&(0,x.jsx)("div",{className:Q.tooltipContainer,children:(0,x.jsx)(r.Z,{title:P,placement:"top-start",children:(0,x.jsx)("div",{className:Q.tooltip,children:(0,x.jsx)(h.Z,{})})})})]}),(0,x.jsxs)("div",{className:Q.textBoxContainer,children:[(0,x.jsx)(f,{id:d,name:u,fullWidth:!0,value:i,autoFocus:q,disabled:g,onChange:t,type:p,multiline:y,autoComplete:j,inputProps:J,error:""!==L,helperText:L,placeholder:F,className:Q.inputRebase,onKeyPress:X}),K&&(0,x.jsx)("div",{className:"".concat(Q.overlayAction," ").concat(""!==n?"withLabel":""),children:(0,x.jsx)(c.Z,{onClick:z?function(){z()}:function(){return null},size:"small",disableFocusRipple:!1,disableRipple:!1,disableTouchRipple:!1,children:K})}),D&&(0,x.jsx)("div",{className:"".concat(Q.overlayAction," ").concat(""!==n?"withLabel":""),children:D})]})]})})}))},21639:function(e,n,t){var a=t(23430),o=t(50390),i=t(30324);n.Z=function(e,n){var t=(0,o.useState)(!1),s=(0,a.Z)(t,2),l=s[0],r=s[1];return[l,function(t,a,o){r(!0),i.Z.invoke(t,a,o).then((function(n){r(!1),e(n)})).catch((function(e){r(!1),n(e)}))}]}},60656:function(e,n,t){var a=t(18489),o=t(50390),i=t(84402),s=t(78426),l=t(93085),r=t(7887),c=t(66946),d=t(14476),u=t(95467),m=t(21278),p=t(86509),h=t(4285),v=t(72462),x=t(62559);n.Z=(0,h.Z)((function(e){return(0,p.Z)((0,a.Z)({},v.Qw))}))((function(e){var n=e.isOpen,t=void 0!==n&&n,p=e.onClose,h=e.onCancel,v=e.onConfirm,Z=e.classes,f=void 0===Z?{}:Z,j=e.title,b=void 0===j?"":j,g=e.isLoading,C=e.confirmationContent,y=e.cancelText,N=void 0===y?"Cancel":y,P=e.confirmText,k=void 0===P?"Confirm":P,I=e.confirmButtonProps,T=void 0===I?{}:I,L=e.cancelButtonProps,E=void 0===L?{}:L,S=e.titleIcon,w=void 0===S?null:S;return(0,x.jsxs)(i.Z,{open:t,onClose:function(e,n){"backdropClick"!==n&&p()},className:f.root,sx:{"& .MuiPaper-root":{padding:"1rem 2rem 2rem 1rem"}},children:[(0,x.jsxs)(s.Z,{className:f.title,children:[(0,x.jsxs)("div",{className:f.titleText,children:[w," ",b]}),(0,x.jsx)("div",{className:f.closeContainer,children:(0,x.jsx)(u.Z,{"aria-label":"close",className:f.closeButton,onClick:p,disableRipple:!0,size:"small",children:(0,x.jsx)(m.Z,{})})})]}),(0,x.jsx)(l.Z,{className:f.content,children:C}),(0,x.jsxs)(r.Z,{className:f.actions,children:[(0,x.jsx)(c.Z,(0,a.Z)((0,a.Z)({className:f.cancelButton,onClick:h||p,disabled:g,type:"button"},E),{},{variant:"outlined",color:"primary",children:N})),(0,x.jsx)(d.Z,(0,a.Z)((0,a.Z)({className:f.confirmButton,type:"button",onClick:v,loading:g,disabled:g,variant:"outlined",color:"secondary",loadingPosition:"start",startIcon:(0,x.jsx)(o.Fragment,{}),autoFocus:!0},T),{},{children:k}))]})]})}))},51719:function(e,n,t){t.r(n),t.d(n,{default:function(){return k}});var a=t(23430),o=t(18489),i=t(50390),s=t(34424),l=t(86509),r=t(4285),c=t(72462),d=t(28948),u=t(44149),m=t(30324),p=t(8174),h=t(23473),v=t(66964),x=t(25594),Z=t(21639),f=t(60656),j=t(85615),b=t(62559),g=(0,s.$j)(null,{setErrorSnackMessage:u.Ih})((function(e){var n=e.deleteOpen,t=e.selectedPod,o=e.closeDeleteModalAndRefresh,s=e.setErrorSnackMessage,l=(0,i.useState)(""),r=(0,a.Z)(l,2),c=r[0],d=r[1],u=(0,Z.Z)((function(){return o(!0)}),(function(e){return s(e)})),m=(0,a.Z)(u,2),p=m[0],g=m[1];return(0,b.jsx)(f.Z,{title:"Delete Pod",confirmText:"Delete",isOpen:n,titleIcon:(0,b.jsx)(j.Nv,{}),isLoading:p,onConfirm:function(){c===t.name?g("DELETE","/api/v1/namespaces/".concat(t.namespace,"/tenants/").concat(t.tenant,"/pods/").concat(t.name)):s({errorMessage:"Tenant name is incorrect",detailedError:""})},onClose:function(){return o(!1)},confirmButtonProps:{disabled:c!==t.name||p},confirmationContent:(0,b.jsxs)(h.Z,{children:["To continue please type ",(0,b.jsx)("b",{children:t.name})," in the box.",(0,b.jsx)(x.ZP,{item:!0,xs:12,children:(0,b.jsx)(v.Z,{id:"retype-pod",name:"retype-pod",onChange:function(e){d(e.target.value)},label:"",value:c})})]})})})),C=t(12066),y=t(65771),N=t(13336),P=(0,s.$j)((function(e){return{loadingTenant:e.tenants.tenantDetails.loadingTenant}}),{setErrorSnackMessage:u.Ih}),k=(0,r.Z)((function(e){return(0,l.Z)((0,o.Z)((0,o.Z)((0,o.Z)({},c.oZ),c.VX),(0,c.Bz)(e.spacing(4))))}))(P((function(e){var n=e.classes,t=e.match,o=e.history,s=e.loadingTenant,l=(0,i.useState)([]),r=(0,a.Z)(l,2),c=r[0],h=r[1],v=(0,i.useState)(!0),Z=(0,a.Z)(v,2),f=Z[0],j=Z[1],P=(0,i.useState)(!1),k=(0,a.Z)(P,2),I=k[0],T=k[1],L=(0,i.useState)(null),E=(0,a.Z)(L,2),S=E[0],w=E[1],F=(0,i.useState)(""),B=(0,a.Z)(F,2),M=B[0],A=B[1],K=t.params.tenantName,R=t.params.tenantNamespace,D=c.filter((function(e){return e.name.toLowerCase().includes(M.toLowerCase())})),O=[{type:"view",onClick:function(e){o.push("/namespaces/".concat(R,"/tenants/").concat(K,"/pods/").concat(e.name))}},{type:"delete",onClick:function(e){e.tenant=K,e.namespace=R,w(e),T(!0)}}];return(0,i.useEffect)((function(){s&&j(!0)}),[s]),(0,i.useEffect)((function(){f&&m.Z.invoke("GET","/api/v1/namespaces/".concat(R,"/tenants/").concat(K,"/pods")).then((function(e){for(var n=0;n.\nimport React 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 { 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 \"../../../../../icons/HelpIcon\";\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 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 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 inputLabel: {\n ...fieldBasic.inputLabel,\n fontWeight: \"normal\",\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 overlayIcon = null,\n overlayObject = null,\n extraInputProps = {},\n overlayAction,\n noLabelMinWidth = false,\n pattern = \"\",\n autoFocus = false,\n classes,\n className = \"\",\n onKeyPress,\n}: InputBoxProps) => {\n let inputProps: any = { \"data-index\": index, ...extraInputProps };\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 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 size={\"small\"}\n disableFocusRipple={false}\n disableRipple={false}\n disableTouchRipple={false}\n >\n {overlayIcon}\n \n
\n )}\n {overlayObject && (\n \n {overlayObject}\n \n )}\n \n \n
\n );\n};\n\nexport default withStyles(styles)(InputBoxWrapper);\n","import { useState } from \"react\";\nimport api from \"../../../../common/api\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\n\ntype NoReturnFunction = (param?: any) => void;\ntype ApiMethodToInvoke = (method: string, url: string, data?: any) => void;\ntype IsApiInProgress = boolean;\n\nconst useApi = (\n onSuccess: NoReturnFunction,\n onError: NoReturnFunction\n): [IsApiInProgress, ApiMethodToInvoke] => {\n const [isLoading, setIsLoading] = useState(false);\n\n const callApi = (method: string, url: string, data?: any) => {\n setIsLoading(true);\n api\n .invoke(method, url, data)\n .then((res: any) => {\n setIsLoading(false);\n onSuccess(res);\n })\n .catch((err: ErrorResponseHandler) => {\n setIsLoading(false);\n onError(err);\n });\n };\n\n return [isLoading, callApi];\n};\n\nexport default useApi;\n","import React from \"react\";\nimport {\n Button,\n ButtonProps,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n} from \"@mui/material\";\nimport { LoadingButton } from \"@mui/lab\";\nimport IconButton from \"@mui/material/IconButton\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { deleteDialogStyles } from \"../FormComponents/common/styleLibrary\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...deleteDialogStyles,\n });\n\ntype ConfirmDialogProps = {\n isOpen?: boolean;\n onClose: () => void;\n onCancel?: () => void;\n onConfirm: () => void;\n classes?: any;\n title: string;\n isLoading?: boolean;\n confirmationContent: React.ReactNode | React.ReactNode[];\n cancelText?: string;\n confirmText?: string;\n confirmButtonProps?: Partial;\n cancelButtonProps?: Partial;\n titleIcon?: React.ReactNode;\n};\n\nconst ConfirmDialog = ({\n isOpen = false,\n onClose,\n onCancel,\n onConfirm,\n classes = {},\n title = \"\",\n isLoading,\n confirmationContent,\n cancelText = \"Cancel\",\n confirmText = \"Confirm\",\n confirmButtonProps = {},\n cancelButtonProps = {},\n titleIcon = null,\n}: ConfirmDialogProps) => {\n return (\n {\n if (reason !== \"backdropClick\") {\n onClose(); // close on Esc but not on click outside\n }\n }}\n className={classes.root}\n sx={{\n \"& .MuiPaper-root\": {\n padding: \"1rem 2rem 2rem 1rem\",\n },\n }}\n >\n \n
\n {titleIcon} {title}\n
\n
\n \n \n \n
\n
\n\n \n {confirmationContent}\n \n \n \n {cancelText}\n \n\n }\n autoFocus\n {...confirmButtonProps}\n >\n {confirmText}\n \n \n \n );\n};\n\nexport default withStyles(styles)(ConfirmDialog);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport { DialogContentText } from \"@mui/material\";\nimport { IPodListElement } from \"../ListTenants/types\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport Grid from \"@mui/material/Grid\";\nimport { connect } from \"react-redux\";\nimport { setErrorSnackMessage } from \"../../../../actions\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport useApi from \"../../Common/Hooks/useApi\";\nimport ConfirmDialog from \"../../Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmDeleteIcon } from \"../../../../icons\";\n\ninterface IDeletePod {\n deleteOpen: boolean;\n selectedPod: IPodListElement;\n closeDeleteModalAndRefresh: (refreshList: boolean) => any;\n setErrorSnackMessage: typeof setErrorSnackMessage;\n}\n\nconst DeletePod = ({\n deleteOpen,\n selectedPod,\n closeDeleteModalAndRefresh,\n setErrorSnackMessage,\n}: IDeletePod) => {\n const [retypePod, setRetypePod] = useState(\"\");\n\n const onDelSuccess = () => closeDeleteModalAndRefresh(true);\n const onDelError = (err: ErrorResponseHandler) => setErrorSnackMessage(err);\n const onClose = () => closeDeleteModalAndRefresh(false);\n\n const [deleteLoading, invokeDeleteApi] = useApi(onDelSuccess, onDelError);\n\n const onConfirmDelete = () => {\n if (retypePod !== selectedPod.name) {\n setErrorSnackMessage({\n errorMessage: \"Tenant name is incorrect\",\n detailedError: \"\",\n });\n return;\n }\n invokeDeleteApi(\n \"DELETE\",\n `/api/v1/namespaces/${selectedPod.namespace}/tenants/${selectedPod.tenant}/pods/${selectedPod.name}`\n );\n };\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmButtonProps={{\n disabled: retypePod !== selectedPod.name || deleteLoading,\n }}\n confirmationContent={\n \n To continue please type {selectedPod.name} in the box.\n \n ) => {\n setRetypePod(event.target.value);\n }}\n label=\"\"\n value={retypePod}\n />\n \n \n }\n />\n );\n};\n\nconst connector = connect(null, {\n setErrorSnackMessage,\n});\n\nexport default connector(DeletePod);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { connect } 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 tableStyles,\n tenantDetailsStyles,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport { niceDays } from \"../../../../common/utils\";\nimport { IPodListElement } from \"../ListTenants/types\";\nimport { setErrorSnackMessage } from \"../../../../actions\";\nimport api from \"../../../../common/api\";\nimport TableWrapper from \"../../Common/TableWrapper/TableWrapper\";\nimport { AppState } from \"../../../../store\";\nimport { setTenantDetailsLoad } from \"../actions\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport DeletePod from \"./DeletePod\";\nimport { Grid, InputAdornment, TextField } from \"@mui/material\";\nimport SearchIcon from \"../../../../icons/SearchIcon\";\n\ninterface IPodsSummary {\n classes: any;\n match: any;\n history: any;\n loadingTenant: boolean;\n setTenantDetailsLoad: typeof setTenantDetailsLoad;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...tenantDetailsStyles,\n ...tableStyles,\n ...containerForHeader(theme.spacing(4)),\n });\n\nconst PodsSummary = ({\n classes,\n match,\n history,\n loadingTenant,\n}: IPodsSummary) => {\n const [pods, setPods] = useState([]);\n const [loadingPods, setLoadingPods] = useState(true);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [selectedPod, setSelectedPod] = useState(null);\n const [filter, setFilter] = useState(\"\");\n const tenantName = match.params[\"tenantName\"];\n const tenantNamespace = match.params[\"tenantNamespace\"];\n\n const podViewAction = (pod: IPodListElement) => {\n history.push(\n `/namespaces/${tenantNamespace}/tenants/${tenantName}/pods/${pod.name}`\n );\n return;\n };\n\n const closeDeleteModalAndRefresh = (reloadData: boolean) => {\n setDeleteOpen(false);\n setLoadingPods(true);\n };\n\n const confirmDeletePod = (pod: IPodListElement) => {\n pod.tenant = tenantName;\n pod.namespace = tenantNamespace;\n setSelectedPod(pod);\n setDeleteOpen(true);\n };\n\n const filteredRecords: IPodListElement[] = pods.filter((elementItem) =>\n elementItem.name.toLowerCase().includes(filter.toLowerCase())\n );\n\n const podTableActions = [\n { type: \"view\", onClick: podViewAction },\n { type: \"delete\", onClick: confirmDeletePod },\n ];\n\n useEffect(() => {\n if (loadingTenant) {\n setLoadingPods(true);\n }\n }, [loadingTenant]);\n\n useEffect(() => {\n if (loadingPods) {\n api\n .invoke(\n \"GET\",\n `/api/v1/namespaces/${tenantNamespace}/tenants/${tenantName}/pods`\n )\n .then((result: IPodListElement[]) => {\n for (let i = 0; i < result.length; i++) {\n let currentTime = (Date.now() / 1000) | 0;\n result[i].time = niceDays(\n (currentTime - parseInt(result[i].timeCreated)).toString()\n );\n }\n setPods(result);\n setLoadingPods(false);\n })\n .catch((err: ErrorResponseHandler) => {\n setErrorSnackMessage({\n errorMessage: \"Error loading pods\",\n detailedError: err.detailedError,\n });\n });\n }\n }, [loadingPods, tenantName, tenantNamespace]);\n\n return (\n \n {deleteOpen && (\n \n )}\n

Pods

\n \n \n \n \n ),\n }}\n onChange={(e) => {\n setFilter(e.target.value);\n }}\n variant=\"standard\"\n />\n \n \n {\n return input !== null ? input : 0;\n },\n },\n { label: \"Node\", elementKey: \"node\" },\n ]}\n isLoading={loadingPods}\n records={filteredRecords}\n itemActions={podTableActions}\n entityName=\"Pods\"\n idField=\"name\"\n />\n \n
\n );\n};\n\nconst mapState = (state: AppState) => ({\n loadingTenant: state.tenants.tenantDetails.loadingTenant,\n});\n\nconst connector = connect(mapState, {\n setErrorSnackMessage,\n});\n\nexport default withStyles(styles)(connector(PodsSummary));\n"],"names":["inputStyles","makeStyles","theme","createStyles","inputFieldStyles","InputField","props","classes","InputProps","withStyles","fieldBasic","tooltipHelper","textBoxContainer","flexGrow","position","overlayAction","right","top","maxWidth","maxHeight","inputLabel","fontWeight","label","onChange","value","id","name","type","autoComplete","disabled","multiline","tooltip","index","error","required","placeholder","min","max","overlayIcon","overlayObject","extraInputProps","noLabelMinWidth","pattern","autoFocus","className","onKeyPress","inputProps","container","clsx","errorInField","inputBoxContainer","htmlFor","noMinWidthLabel","tooltipContainer","title","placement","fullWidth","helperText","inputRebase","onClick","size","disableFocusRipple","disableRipple","disableTouchRipple","onSuccess","onError","useState","isLoading","setIsLoading","method","url","data","api","then","res","catch","err","deleteDialogStyles","isOpen","onClose","onCancel","onConfirm","confirmationContent","cancelText","confirmText","confirmButtonProps","cancelButtonProps","titleIcon","open","event","reason","root","sx","padding","titleText","closeContainer","closeButton","content","actions","cancelButton","variant","color","confirmButton","loading","loadingPosition","startIcon","connect","setErrorSnackMessage","deleteOpen","selectedPod","closeDeleteModalAndRefresh","retypePod","setRetypePod","useApi","deleteLoading","invokeDeleteApi","ConfirmDialog","namespace","tenant","errorMessage","detailedError","DialogContentText","Grid","item","xs","InputBoxWrapper","target","connector","state","loadingTenant","tenants","tenantDetails","tenantDetailsStyles","tableStyles","containerForHeader","spacing","match","history","pods","setPods","loadingPods","setLoadingPods","setDeleteOpen","setSelectedPod","filter","setFilter","tenantName","params","tenantNamespace","filteredRecords","elementItem","toLowerCase","includes","podTableActions","pod","push","useEffect","result","i","length","currentTime","Date","now","time","niceDays","parseInt","timeCreated","toString","Fragment","reloadData","sectionTitle","actionsTray","TextField","searchField","disableUnderline","startAdornment","InputAdornment","SearchIcon","e","tableBlock","TableWrapper","columns","elementKey","width","renderFunction","input","records","itemActions","entityName","idField"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"static/js/1719.75b1e59d.chunk.js","mappings":"0QA6FMA,GAAcC,EAAAA,EAAAA,IAAW,SAACC,GAAD,OAC7BC,EAAAA,EAAAA,IAAa,UACRC,EAAAA,QAIP,SAASC,EAAWC,GAClB,IAAMC,EAAUP,IAEhB,OACE,SAAC,KAAD,QACEQ,WAAY,CAAED,QAAAA,IACVD,IAwIV,KAAeG,EAAAA,EAAAA,IA9KA,SAACP,GAAD,OACbC,EAAAA,EAAAA,IAAa,0BACRO,EAAAA,IACAC,EAAAA,IAFO,IAGVC,iBAAkB,CAChBC,SAAU,EACVC,SAAU,YAEZC,cAAe,CACbD,SAAU,WACVE,MAAO,EACPC,IAAK,EACL,QAAS,CACPC,SAAU,GACVC,UAAW,IAEb,cAAe,CACbF,IAAK,IAGTG,YAAW,kBACNV,EAAAA,GAAAA,YADK,IAERW,WAAY,gBAwJlB,EAnIwB,SAAC,GA2BH,IA1BpBC,EA0BmB,EA1BnBA,MACAC,EAyBmB,EAzBnBA,SACAC,EAwBmB,EAxBnBA,MACAC,EAuBmB,EAvBnBA,GACAC,EAsBmB,EAtBnBA,KAsBmB,IArBnBC,KAAAA,OAqBmB,MArBZ,OAqBY,MApBnBC,aAAAA,OAoBmB,MApBJ,MAoBI,MAnBnBC,SAAAA,OAmBmB,aAlBnBC,UAAAA,OAkBmB,aAjBnBC,QAAAA,OAiBmB,MAjBT,GAiBS,MAhBnBC,MAAAA,OAgBmB,MAhBX,EAgBW,MAfnBC,MAAAA,OAemB,MAfX,GAeW,MAdnBC,SAAAA,OAcmB,aAbnBC,YAAAA,OAamB,MAbL,GAaK,EAZnBC,EAYmB,EAZnBA,IACAC,EAWmB,EAXnBA,IAWmB,IAVnBC,YAAAA,OAUmB,MAVL,KAUK,MATnBC,cAAAA,OASmB,MATH,KASG,MARnBC,gBAAAA,OAQmB,MARD,GAQC,EAPnBzB,EAOmB,EAPnBA,cAOmB,IANnB0B,gBAAAA,OAMmB,aALnBC,QAAAA,OAKmB,MALT,GAKS,MAJnBC,UAAAA,OAImB,SAHnBpC,EAGmB,EAHnBA,QAGmB,IAFnBqC,UAAAA,OAEmB,MAFP,GAEO,EADnBC,EACmB,EADnBA,WAEIC,GAAe,QAAK,aAAcd,GAAUQ,GAchD,MAZa,WAATb,GAAqBS,IACvBU,EAAU,IAAUV,GAGT,WAATT,GAAqBU,IACvBS,EAAU,IAAUT,GAGN,KAAZK,IACFI,EAAU,QAAcJ,IAIxB,SAAC,WAAD,WACE,UAAC,KAAD,CACEK,WAAS,EACTH,WAAWI,EAAAA,EAAAA,GACK,KAAdJ,EAAmBA,EAAY,GACrB,KAAVX,EAAe1B,EAAQ0C,aAAe1C,EAAQ2C,mBAJlD,UAOa,KAAV5B,IACC,UAAC,IAAD,CACE6B,QAAS1B,EACTmB,UACEH,EAAkBlC,EAAQ6C,gBAAkB7C,EAAQa,WAHxD,WAME,4BACGE,EACAY,EAAW,IAAM,MAEP,KAAZH,IACC,gBAAKa,UAAWrC,EAAQ8C,iBAAxB,UACE,SAAC,IAAD,CAASC,MAAOvB,EAASwB,UAAU,YAAnC,UACE,gBAAKX,UAAWrC,EAAQwB,QAAxB,UACE,SAAC,IAAD,cAQZ,iBAAKa,UAAWrC,EAAQK,iBAAxB,WACE,SAACP,EAAD,CACEoB,GAAIA,EACJC,KAAMA,EACN8B,WAAS,EACThC,MAAOA,EACPmB,UAAWA,EACXd,SAAUA,EACVN,SAAUA,EACVI,KAAMA,EACNG,UAAWA,EACXF,aAAcA,EACdkB,WAAYA,EACZb,MAAiB,KAAVA,EACPwB,WAAYxB,EACZE,YAAaA,EACbS,UAAWrC,EAAQmD,YACnBb,WAAYA,IAEbP,IACC,gBACEM,UAAS,UAAKrC,EAAQQ,cAAb,YACG,KAAVO,EAAe,YAAc,IAFjC,UAKE,SAAC,IAAD,CACEqC,QACE5C,EACI,WACEA,KAEF,kBAAM,MAEZ6C,KAAM,QACNC,oBAAoB,EACpBC,eAAe,EACfC,oBAAoB,EAXtB,SAaGzB,MAINC,IACC,gBACEK,UAAS,UAAKrC,EAAQQ,cAAb,YACG,KAAVO,EAAe,YAAc,IAFjC,SAKGiB,gB,2DCzMf,IAvBe,SACbyB,EACAC,GAEA,OAAkCC,EAAAA,EAAAA,WAAkB,GAApD,eAAOC,EAAP,KAAkBC,EAAlB,KAgBA,MAAO,CAACD,EAdQ,SAACE,EAAgBC,EAAaC,GAC5CH,GAAa,GACbI,EAAAA,EAAAA,OACUH,EAAQC,EAAKC,GACpBE,MAAK,SAACC,GACLN,GAAa,GACbJ,EAAUU,MAEXC,OAAM,SAACC,GACNR,GAAa,GACbH,EAAQW,U,kLCiGhB,KAAenE,EAAAA,EAAAA,IAxGA,SAACP,GAAD,OACbC,EAAAA,EAAAA,IAAa,UACR0E,EAAAA,OAsGP,EAnFsB,SAAC,GAcI,IAAD,IAbxBC,OAAAA,OAawB,SAZxBC,EAYwB,EAZxBA,QACAC,EAWwB,EAXxBA,SACAC,EAUwB,EAVxBA,UAUwB,IATxB1E,QAAAA,OASwB,MATd,GASc,MARxB+C,MAAAA,OAQwB,MARhB,GAQgB,EAPxBa,EAOwB,EAPxBA,UACAe,EAMwB,EANxBA,oBAMwB,IALxBC,WAAAA,OAKwB,MALX,SAKW,MAJxBC,YAAAA,OAIwB,MAJV,UAIU,MAHxBC,mBAAAA,OAGwB,MAHH,GAGG,MAFxBC,kBAAAA,OAEwB,MAFJ,GAEI,MADxBC,UAAAA,OACwB,MADZ,KACY,EACxB,OACE,UAAC,IAAD,CACEC,KAAMV,EACNC,QAAS,SAACU,EAAOC,GACA,kBAAXA,GACFX,KAGJnC,UAAWrC,EAAQoF,KACnBC,GAAI,CACF,mBAAoB,CAClBC,QAAS,wBAVf,WAcE,UAAC,IAAD,CAAajD,UAAWrC,EAAQ+C,MAAhC,WACE,iBAAKV,UAAWrC,EAAQuF,UAAxB,UACGP,EADH,IACejC,MAEf,gBAAKV,UAAWrC,EAAQwF,eAAxB,UACE,SAAC,IAAD,CACE,aAAW,QACXnD,UAAWrC,EAAQyF,YACnBrC,QAASoB,EACTjB,eAAa,EACbF,KAAK,QALP,UAOE,SAAC,IAAD,YAKN,SAAC,IAAD,CAAehB,UAAWrC,EAAQ0F,QAAlC,SACGf,KAEH,UAAC,IAAD,CAAetC,UAAWrC,EAAQ2F,QAAlC,WACE,SAAC,KAAD,gBACEtD,UAAWrC,EAAQ4F,aACnBxC,QAASqB,GAAYD,EACrBlD,SAAUsC,EACVxC,KAAK,UACD2D,GALN,IAMEc,QAAQ,WACRC,MAAM,UAPR,SASGlB,MAGH,SAAC,KAAD,gBACEvC,UAAWrC,EAAQ+F,cACnB3E,KAAK,SACLgC,QAASsB,EACTsB,QAASpC,EACTtC,SAAUsC,EACViC,QAAQ,WACRC,MAAM,YACNG,gBAAgB,QAChBC,WAAW,SAAC,WAAD,IACX9D,WAAS,GACL0C,GAXN,aAaGD,e,2QCfX,GAJkBsB,EAAAA,EAAAA,IAAQ,KAAM,CAC9BC,qBAAAA,EAAAA,IAGF,EAhEkB,SAAC,GAKA,IAJjBC,EAIgB,EAJhBA,WACAC,EAGgB,EAHhBA,YACAC,EAEgB,EAFhBA,2BACAH,EACgB,EADhBA,qBAEA,GAAkCzC,EAAAA,EAAAA,UAAS,IAA3C,eAAO6C,EAAP,KAAkBC,EAAlB,KAMA,GAAyCC,EAAAA,EAAAA,IAJpB,kBAAMH,GAA2B,MACnC,SAAClC,GAAD,OAA+B+B,EAAqB/B,MAGvE,eAAOsC,EAAP,KAAsBC,EAAtB,KAgBA,OACE,SAACC,EAAA,EAAD,CACE9D,MAAK,aACL8B,YAAa,SACbN,OAAQ8B,EACRrB,WAAW,SAAC,KAAD,IACXpB,UAAW+C,EACXjC,UArBoB,WAClB8B,IAAcF,EAAYnF,KAO9ByF,EACE,SADa,6BAESN,EAAYQ,UAFrB,oBAE0CR,EAAYS,OAFtD,iBAEqET,EAAYnF,OAR9FiF,EAAqB,CACnBY,aAAc,2BACdC,cAAe,MAkBjBzC,QA1BY,kBAAM+B,GAA2B,IA2B7CzB,mBAAoB,CAClBxD,SAAUkF,IAAcF,EAAYnF,MAAQwF,GAE9ChC,qBACE,UAACuC,EAAA,EAAD,uCAC0B,uBAAIZ,EAAYnF,OAD1C,gBAEE,SAACgG,EAAA,GAAD,CAAMC,MAAI,EAACC,GAAI,GAAf,UACE,SAACC,EAAA,EAAD,CACEpG,GAAG,aACHC,KAAK,aACLH,SAAU,SAACkE,GACTuB,EAAavB,EAAMqC,OAAOtG,QAE5BF,MAAM,GACNE,MAAOuF,c,iCCsGfgB,GAAYrB,EAAAA,EAAAA,KAJD,SAACsB,GAAD,MAAsB,CACrCC,cAAeD,EAAME,QAAQC,cAAcF,iBAGT,CAClCtB,qBAAAA,EAAAA,KAGF,GAAelG,EAAAA,EAAAA,IAlJA,SAACP,GAAD,OACbC,EAAAA,EAAAA,IAAa,0BACRiI,EAAAA,IACAC,EAAAA,KACAC,EAAAA,EAAAA,IAAmBpI,EAAMqI,QAAQ,QA8IxC,CAAkCR,GA3Id,SAAC,GAKA,IAJnBxH,EAIkB,EAJlBA,QACAiI,EAGkB,EAHlBA,MACAC,EAEkB,EAFlBA,QACAR,EACkB,EADlBA,cAEA,GAAwB/D,EAAAA,EAAAA,UAA4B,IAApD,eAAOwE,EAAP,KAAaC,EAAb,KACA,GAAsCzE,EAAAA,EAAAA,WAAkB,GAAxD,eAAO0E,EAAP,KAAoBC,EAApB,KACA,GAAoC3E,EAAAA,EAAAA,WAAkB,GAAtD,eAAO0C,EAAP,KAAmBkC,EAAnB,KACA,GAAsC5E,EAAAA,EAAAA,UAAc,MAApD,eAAO2C,EAAP,KAAoBkC,EAApB,KACA,GAA4B7E,EAAAA,EAAAA,UAAS,IAArC,eAAO8E,EAAP,KAAeC,EAAf,KACMC,EAAaV,EAAMW,OAAN,WACbC,EAAkBZ,EAAMW,OAAN,gBAqBlBE,EAAqCX,EAAKM,QAAO,SAACM,GAAD,OACrDA,EAAY5H,KAAK6H,cAAcC,SAASR,EAAOO,kBAG3CE,EAAkB,CACtB,CAAE9H,KAAM,OAAQgC,QAxBI,SAAC+F,GACrBjB,EAAQkB,KAAR,sBACiBP,EADjB,oBAC4CF,EAD5C,iBAC+DQ,EAAIhI,SAuBnE,CAAEC,KAAM,SAAUgC,QAbK,SAAC+F,GACxBA,EAAIpC,OAAS4B,EACbQ,EAAIrC,UAAY+B,EAChBL,EAAeW,GACfZ,GAAc,MA4ChB,OAhCAc,EAAAA,EAAAA,YAAU,WACJ3B,GACFY,GAAe,KAEhB,CAACZ,KAEJ2B,EAAAA,EAAAA,YAAU,WACJhB,GACFpE,EAAAA,EAAAA,OAEI,MAFJ,6BAG0B4E,EAH1B,oBAGqDF,EAHrD,UAKGzE,MAAK,SAACoF,GACL,IAAK,IAAIC,EAAI,EAAGA,EAAID,EAAOE,OAAQD,IAAK,CACtC,IAAIE,EAAeC,KAAKC,MAAQ,IAAQ,EACxCL,EAAOC,GAAGK,MAAOC,EAAAA,EAAAA,KACdJ,EAAcK,SAASR,EAAOC,GAAGQ,cAAcC,YAGpD5B,EAAQkB,GACRhB,GAAe,MAEhBlE,OAAM,SAACC,IACN+B,EAAAA,EAAAA,IAAqB,CACnBY,aAAc,qBACdC,cAAe5C,EAAI4C,qBAI1B,CAACoB,EAAaM,EAAYE,KAG3B,UAAC,EAAAoB,SAAD,WACG5D,IACC,SAAC,EAAD,CACEA,WAAYA,EACZC,YAAaA,EACbC,2BA3D2B,SAAC2D,GAClC3B,GAAc,GACdD,GAAe,OA4Db,eAAIjG,UAAWrC,EAAQmK,aAAvB,mBACA,SAAChD,EAAA,GAAD,CAAMC,MAAI,EAACC,GAAI,GAAIhF,UAAWrC,EAAQoK,YAAtC,UACE,SAACC,EAAA,EAAD,CACEzI,YAAY,cACZS,UAAWrC,EAAQsK,YACnBpJ,GAAG,kBACHH,MAAM,GACNd,WAAY,CACVsK,kBAAkB,EAClBC,gBACE,SAACC,EAAA,EAAD,CAAgBlK,SAAS,QAAzB,UACE,SAACmK,EAAA,EAAD,OAIN1J,SAAU,SAAC2J,GACTjC,EAAUiC,EAAEpD,OAAOtG,QAErB4E,QAAQ,gBAGZ,SAACsB,EAAA,GAAD,CAAMC,MAAI,EAACC,GAAI,GAAIhF,UAAWrC,EAAQ4K,WAAtC,UACE,SAACC,EAAA,EAAD,CACEC,QAAS,CACP,CAAE/J,MAAO,OAAQgK,WAAY,OAAQC,MAAO,KAC5C,CAAEjK,MAAO,SAAUgK,WAAY,UAC/B,CAAEhK,MAAO,MAAOgK,WAAY,QAC5B,CAAEhK,MAAO,SAAUgK,WAAY,SAC/B,CACEhK,MAAO,WACPgK,WAAY,WACZE,eAAgB,SAACC,GACf,OAAiB,OAAVA,EAAiBA,EAAQ,IAGpC,CAAEnK,MAAO,OAAQgK,WAAY,SAE/BnH,UAAWyE,EACX8C,QAASrC,EACTsC,YAAalC,EACbmC,WAAW,OACXC,QAAQ","sources":["screens/Console/Common/FormComponents/InputBoxWrapper/InputBoxWrapper.tsx","screens/Console/Common/Hooks/useApi.tsx","screens/Console/Common/ModalWrapper/ConfirmDialog.tsx","screens/Console/Tenants/TenantDetails/DeletePod.tsx","screens/Console/Tenants/TenantDetails/PodsSummary.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 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 { 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 \"../../../../../icons/HelpIcon\";\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 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 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 inputLabel: {\n ...fieldBasic.inputLabel,\n fontWeight: \"normal\",\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 overlayIcon = null,\n overlayObject = null,\n extraInputProps = {},\n overlayAction,\n noLabelMinWidth = false,\n pattern = \"\",\n autoFocus = false,\n classes,\n className = \"\",\n onKeyPress,\n}: InputBoxProps) => {\n let inputProps: any = { \"data-index\": index, ...extraInputProps };\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 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 size={\"small\"}\n disableFocusRipple={false}\n disableRipple={false}\n disableTouchRipple={false}\n >\n {overlayIcon}\n \n
\n )}\n {overlayObject && (\n \n {overlayObject}\n \n )}\n \n \n
\n );\n};\n\nexport default withStyles(styles)(InputBoxWrapper);\n","import { useState } from \"react\";\nimport api from \"../../../../common/api\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\n\ntype NoReturnFunction = (param?: any) => void;\ntype ApiMethodToInvoke = (method: string, url: string, data?: any) => void;\ntype IsApiInProgress = boolean;\n\nconst useApi = (\n onSuccess: NoReturnFunction,\n onError: NoReturnFunction\n): [IsApiInProgress, ApiMethodToInvoke] => {\n const [isLoading, setIsLoading] = useState(false);\n\n const callApi = (method: string, url: string, data?: any) => {\n setIsLoading(true);\n api\n .invoke(method, url, data)\n .then((res: any) => {\n setIsLoading(false);\n onSuccess(res);\n })\n .catch((err: ErrorResponseHandler) => {\n setIsLoading(false);\n onError(err);\n });\n };\n\n return [isLoading, callApi];\n};\n\nexport default useApi;\n","import React from \"react\";\nimport {\n Button,\n ButtonProps,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n} from \"@mui/material\";\nimport { LoadingButton } from \"@mui/lab\";\nimport IconButton from \"@mui/material/IconButton\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { deleteDialogStyles } from \"../FormComponents/common/styleLibrary\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...deleteDialogStyles,\n });\n\ntype ConfirmDialogProps = {\n isOpen?: boolean;\n onClose: () => void;\n onCancel?: () => void;\n onConfirm: () => void;\n classes?: any;\n title: string;\n isLoading?: boolean;\n confirmationContent: React.ReactNode | React.ReactNode[];\n cancelText?: string;\n confirmText?: string;\n confirmButtonProps?: Partial;\n cancelButtonProps?: Partial;\n titleIcon?: React.ReactNode;\n};\n\nconst ConfirmDialog = ({\n isOpen = false,\n onClose,\n onCancel,\n onConfirm,\n classes = {},\n title = \"\",\n isLoading,\n confirmationContent,\n cancelText = \"Cancel\",\n confirmText = \"Confirm\",\n confirmButtonProps = {},\n cancelButtonProps = {},\n titleIcon = null,\n}: ConfirmDialogProps) => {\n return (\n {\n if (reason !== \"backdropClick\") {\n onClose(); // close on Esc but not on click outside\n }\n }}\n className={classes.root}\n sx={{\n \"& .MuiPaper-root\": {\n padding: \"1rem 2rem 2rem 1rem\",\n },\n }}\n >\n \n
\n {titleIcon} {title}\n
\n
\n \n \n \n
\n
\n\n \n {confirmationContent}\n \n \n \n {cancelText}\n \n\n }\n autoFocus\n {...confirmButtonProps}\n >\n {confirmText}\n \n \n \n );\n};\n\nexport default withStyles(styles)(ConfirmDialog);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport { DialogContentText } from \"@mui/material\";\nimport { IPodListElement } from \"../ListTenants/types\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport Grid from \"@mui/material/Grid\";\nimport { connect } from \"react-redux\";\nimport { setErrorSnackMessage } from \"../../../../actions\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport useApi from \"../../Common/Hooks/useApi\";\nimport ConfirmDialog from \"../../Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmDeleteIcon } from \"../../../../icons\";\n\ninterface IDeletePod {\n deleteOpen: boolean;\n selectedPod: IPodListElement;\n closeDeleteModalAndRefresh: (refreshList: boolean) => any;\n setErrorSnackMessage: typeof setErrorSnackMessage;\n}\n\nconst DeletePod = ({\n deleteOpen,\n selectedPod,\n closeDeleteModalAndRefresh,\n setErrorSnackMessage,\n}: IDeletePod) => {\n const [retypePod, setRetypePod] = useState(\"\");\n\n const onDelSuccess = () => closeDeleteModalAndRefresh(true);\n const onDelError = (err: ErrorResponseHandler) => setErrorSnackMessage(err);\n const onClose = () => closeDeleteModalAndRefresh(false);\n\n const [deleteLoading, invokeDeleteApi] = useApi(onDelSuccess, onDelError);\n\n const onConfirmDelete = () => {\n if (retypePod !== selectedPod.name) {\n setErrorSnackMessage({\n errorMessage: \"Tenant name is incorrect\",\n detailedError: \"\",\n });\n return;\n }\n invokeDeleteApi(\n \"DELETE\",\n `/api/v1/namespaces/${selectedPod.namespace}/tenants/${selectedPod.tenant}/pods/${selectedPod.name}`\n );\n };\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmButtonProps={{\n disabled: retypePod !== selectedPod.name || deleteLoading,\n }}\n confirmationContent={\n \n To continue please type {selectedPod.name} in the box.\n \n ) => {\n setRetypePod(event.target.value);\n }}\n label=\"\"\n value={retypePod}\n />\n \n \n }\n />\n );\n};\n\nconst connector = connect(null, {\n setErrorSnackMessage,\n});\n\nexport default connector(DeletePod);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { connect } 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 tableStyles,\n tenantDetailsStyles,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport { niceDays } from \"../../../../common/utils\";\nimport { IPodListElement } from \"../ListTenants/types\";\nimport { setErrorSnackMessage } from \"../../../../actions\";\nimport api from \"../../../../common/api\";\nimport TableWrapper from \"../../Common/TableWrapper/TableWrapper\";\nimport { AppState } from \"../../../../store\";\nimport { setTenantDetailsLoad } from \"../actions\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport DeletePod from \"./DeletePod\";\nimport { Grid, InputAdornment, TextField } from \"@mui/material\";\nimport SearchIcon from \"../../../../icons/SearchIcon\";\n\ninterface IPodsSummary {\n classes: any;\n match: any;\n history: any;\n loadingTenant: boolean;\n setTenantDetailsLoad: typeof setTenantDetailsLoad;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...tenantDetailsStyles,\n ...tableStyles,\n ...containerForHeader(theme.spacing(4)),\n });\n\nconst PodsSummary = ({\n classes,\n match,\n history,\n loadingTenant,\n}: IPodsSummary) => {\n const [pods, setPods] = useState([]);\n const [loadingPods, setLoadingPods] = useState(true);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [selectedPod, setSelectedPod] = useState(null);\n const [filter, setFilter] = useState(\"\");\n const tenantName = match.params[\"tenantName\"];\n const tenantNamespace = match.params[\"tenantNamespace\"];\n\n const podViewAction = (pod: IPodListElement) => {\n history.push(\n `/namespaces/${tenantNamespace}/tenants/${tenantName}/pods/${pod.name}`\n );\n return;\n };\n\n const closeDeleteModalAndRefresh = (reloadData: boolean) => {\n setDeleteOpen(false);\n setLoadingPods(true);\n };\n\n const confirmDeletePod = (pod: IPodListElement) => {\n pod.tenant = tenantName;\n pod.namespace = tenantNamespace;\n setSelectedPod(pod);\n setDeleteOpen(true);\n };\n\n const filteredRecords: IPodListElement[] = pods.filter((elementItem) =>\n elementItem.name.toLowerCase().includes(filter.toLowerCase())\n );\n\n const podTableActions = [\n { type: \"view\", onClick: podViewAction },\n { type: \"delete\", onClick: confirmDeletePod },\n ];\n\n useEffect(() => {\n if (loadingTenant) {\n setLoadingPods(true);\n }\n }, [loadingTenant]);\n\n useEffect(() => {\n if (loadingPods) {\n api\n .invoke(\n \"GET\",\n `/api/v1/namespaces/${tenantNamespace}/tenants/${tenantName}/pods`\n )\n .then((result: IPodListElement[]) => {\n for (let i = 0; i < result.length; i++) {\n let currentTime = (Date.now() / 1000) | 0;\n result[i].time = niceDays(\n (currentTime - parseInt(result[i].timeCreated)).toString()\n );\n }\n setPods(result);\n setLoadingPods(false);\n })\n .catch((err: ErrorResponseHandler) => {\n setErrorSnackMessage({\n errorMessage: \"Error loading pods\",\n detailedError: err.detailedError,\n });\n });\n }\n }, [loadingPods, tenantName, tenantNamespace]);\n\n return (\n \n {deleteOpen && (\n \n )}\n

Pods

\n \n \n \n \n ),\n }}\n onChange={(e) => {\n setFilter(e.target.value);\n }}\n variant=\"standard\"\n />\n \n \n {\n return input !== null ? input : 0;\n },\n },\n { label: \"Node\", elementKey: \"node\" },\n ]}\n isLoading={loadingPods}\n records={filteredRecords}\n itemActions={podTableActions}\n entityName=\"Pods\"\n idField=\"name\"\n />\n \n
\n );\n};\n\nconst mapState = (state: AppState) => ({\n loadingTenant: state.tenants.tenantDetails.loadingTenant,\n});\n\nconst connector = connect(mapState, {\n setErrorSnackMessage,\n});\n\nexport default withStyles(styles)(connector(PodsSummary));\n"],"names":["inputStyles","makeStyles","theme","createStyles","inputFieldStyles","InputField","props","classes","InputProps","withStyles","fieldBasic","tooltipHelper","textBoxContainer","flexGrow","position","overlayAction","right","top","maxWidth","maxHeight","inputLabel","fontWeight","label","onChange","value","id","name","type","autoComplete","disabled","multiline","tooltip","index","error","required","placeholder","min","max","overlayIcon","overlayObject","extraInputProps","noLabelMinWidth","pattern","autoFocus","className","onKeyPress","inputProps","container","clsx","errorInField","inputBoxContainer","htmlFor","noMinWidthLabel","tooltipContainer","title","placement","fullWidth","helperText","inputRebase","onClick","size","disableFocusRipple","disableRipple","disableTouchRipple","onSuccess","onError","useState","isLoading","setIsLoading","method","url","data","api","then","res","catch","err","deleteDialogStyles","isOpen","onClose","onCancel","onConfirm","confirmationContent","cancelText","confirmText","confirmButtonProps","cancelButtonProps","titleIcon","open","event","reason","root","sx","padding","titleText","closeContainer","closeButton","content","actions","cancelButton","variant","color","confirmButton","loading","loadingPosition","startIcon","connect","setErrorSnackMessage","deleteOpen","selectedPod","closeDeleteModalAndRefresh","retypePod","setRetypePod","useApi","deleteLoading","invokeDeleteApi","ConfirmDialog","namespace","tenant","errorMessage","detailedError","DialogContentText","Grid","item","xs","InputBoxWrapper","target","connector","state","loadingTenant","tenants","tenantDetails","tenantDetailsStyles","tableStyles","containerForHeader","spacing","match","history","pods","setPods","loadingPods","setLoadingPods","setDeleteOpen","setSelectedPod","filter","setFilter","tenantName","params","tenantNamespace","filteredRecords","elementItem","toLowerCase","includes","podTableActions","pod","push","useEffect","result","i","length","currentTime","Date","now","time","niceDays","parseInt","timeCreated","toString","Fragment","reloadData","sectionTitle","actionsTray","TextField","searchField","disableUnderline","startAdornment","InputAdornment","SearchIcon","e","tableBlock","TableWrapper","columns","elementKey","width","renderFunction","input","records","itemActions","entityName","idField"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/189.108e9feb.chunk.js b/portal-ui/build/static/js/189.c6e8473a.chunk.js similarity index 99% rename from portal-ui/build/static/js/189.108e9feb.chunk.js rename to portal-ui/build/static/js/189.c6e8473a.chunk.js index 7043cbb19..19249624d 100644 --- a/portal-ui/build/static/js/189.108e9feb.chunk.js +++ b/portal-ui/build/static/js/189.c6e8473a.chunk.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[189],{10189:function(e,t,n){n.r(t),n.d(t,{default:function(){return nt}});var i,a=n(23430),l=n(18489),r=n(50390),o=n(34424),s=n(38342),c=n.n(s),d=n(25594),u=n(86509),x=n(4285),p=n(13512),f=n(72462);!function(e){e.singleValue="singleValue",e.linearGraph="linearGraph",e.areaGraph="areaGraph",e.barChart="barChart",e.pieChart="pieChart",e.singleRep="singleRep",e.simpleWidget="simpleWidget"}(i||(i={}));var g=n(28948),h=n(20426),m=n(73891),v=n(85615),j=n(62559),y=["#C4D4E9","#DCD1EE","#D1EEE7","#EEDED1","#AAF38F","#F9E6C5","#C83B51","#F4CECE","#D6D6D6"],b=function(e){return(0,g.v1)(e,"ns")},C=function(e){return parseInt(e).toString(10)},Z=[{id:1,title:"Uptime",data:"N/A",type:i.simpleWidget,widgetIcon:(0,j.jsx)(v.oN,{}),labelDisplayFunction:g.v1},{id:50,title:"Capacity",data:[],dataOuter:[{name:"outer",value:100}],widgetConfiguration:{outerChart:{colorList:["#9c9c9c"],innerRadius:0,outerRadius:0,startAngle:0,endAngle:0},innerChart:{colorList:y,innerRadius:20,outerRadius:50,startAngle:90,endAngle:-200}},type:i.pieChart,innerLabel:"N/A",labelDisplayFunction:g.ae},{id:68,title:"Data Usage Growth",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.areaGraph,yAxisFormatter:g.ae,xAxisFormatter:g.Ue},{id:52,title:"Object size distribution",data:[],widgetConfiguration:[{dataKey:"a",color:y[0],background:{fill:"#EEF1F4"},greatestColor:"#081C42"}],customStructure:[{originTag:"LESS_THAN_1024_B",displayTag:"Less than 1024B"},{originTag:"BETWEEN_1024_B_AND_1_MB",displayTag:"Between 1024B and 1MB"},{originTag:"BETWEEN_1_MB_AND_10_MB",displayTag:"Between 1MB and 10MB"},{originTag:"BETWEEN_10_MB_AND_64_MB",displayTag:"Between 10MB and 64MB"},{originTag:"BETWEEN_64_MB_AND_128_MB",displayTag:"Between 64MB and 128MB"},{originTag:"BETWEEN_128_MB_AND_512_MB",displayTag:"Between 128MB and 512MB"},{originTag:"GREATER_THAN_512_MB",displayTag:"Greater than 512MB"}],type:i.barChart},{id:66,title:"Buckets",data:[],innerLabel:"N/A",type:i.singleRep,color:"#0071BC",fillColor:"#ADD5E0"},{id:44,title:"Objects",data:[],innerLabel:"N/A",type:i.singleRep,color:"#0071BC",fillColor:"#ADD5E0"},{id:63,title:"API Data Received Rate",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,xAxisFormatter:g.Ue,yAxisFormatter:g.ae},{id:61,title:"Total Open FDs",data:[],innerLabel:"N/A",type:i.singleRep,color:"#22B573",fillColor:"#A6E8C4"},{id:62,title:"Total Goroutines",data:[],innerLabel:"N/A",type:i.singleRep,color:"#F7655E",fillColor:"#F4CECE"},{id:77,title:"Node CPU Usage",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,yAxisFormatter:C,xAxisFormatter:g.Ue},{id:60,title:"API Request Rate",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,xAxisFormatter:g.Ue},{id:70,title:"API Data Sent Rate",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,xAxisFormatter:g.Ue,yAxisFormatter:g.ae},{id:17,title:"Internode Data Transfer",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,yAxisFormatter:g.ae,xAxisFormatter:g.Ue},{id:73,title:"Node IO",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,yAxisFormatter:g.ae,xAxisFormatter:g.Ue},{id:80,title:"Time Since Last Heal Activity",data:"N/A",type:i.simpleWidget,widgetIcon:(0,j.jsx)(h.Z,{}),labelDisplayFunction:b},{id:81,title:"Time Since Last Scan Activity",data:"N/A",type:i.simpleWidget,widgetIcon:(0,j.jsx)(m.Z,{}),labelDisplayFunction:b},{id:71,title:"API Request Error Rate",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,xAxisFormatter:g.Ue},{id:76,title:"Node Memory Usage",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,xAxisFormatter:g.Ue,yAxisFormatter:g.ae},{id:74,title:"Drive Used Capacity",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,xAxisFormatter:g.Ue,yAxisFormatter:g.ae},{id:82,title:"Drives Free Inodes",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,disableYAxis:!0,xAxisFormatter:g.Ue},{id:11,title:"Node Syscalls",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,yAxisFormatter:C,xAxisFormatter:g.Ue},{id:8,title:"Node File Descriptors",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,yAxisFormatter:C,xAxisFormatter:g.Ue},{id:500,mergedPanels:[{id:53,title:"Online",data:"N/A",type:i.singleValue},{id:69,title:"Offline",data:"N/A",type:i.singleValue}],title:"Servers"},{id:501,mergedPanels:[{id:9,title:"Online",data:"N/A",type:i.singleValue},{id:78,title:"Offline",data:"N/A",type:i.singleValue}],title:"Drives"},{id:502,mergedPanels:[{id:65,title:"Upload",data:"N/A",type:i.singleValue,labelDisplayFunction:g.ae},{id:64,title:"Download",data:"N/A",type:i.singleValue,labelDisplayFunction:g.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]},N=function(e,t){if(!e)return t;var n=e.type;switch(t.type){case i.singleValue:case i.simpleWidget:if("stat"===n||"singlestat"===n){var a=c()(e,"targets[0].result[0].values",[]);null===a&&(a=[]);var r=c()(e,"options.reduceOptions.calcs[0]","lastNotNull"),o=w(a,r),s=t.labelDisplayFunction?t.labelDisplayFunction(o[1]):o[1];return(0,l.Z)((0,l.Z)({},t),{},{data:s})}break;case i.pieChart:if("gauge"===n){var d=c()(e,"targets[0].result",[]);null===d&&(d=[]);var u=c()(e,"options.reduceOptions.calcs[0]","lastNotNull"),x=d.length>0?d[0].values:[],p=w(x,u),f=d.map((function(e){var t=c()(e,"values",[]),n=Object.keys(e.metric),i=t.sort((function(e,t){return e[0]-t[0]})),a=e.metric[n[0]],l=i[i.length-1];return{name:a,value:parseInt(l)}})),h=t.labelDisplayFunction?t.labelDisplayFunction(p[1]):p[1];return(0,l.Z)((0,l.Z)({},t),{},{data:f,innerLabel:h})}break;case i.linearGraph:case i.areaGraph:if("graph"===n){var m=c()(e,"targets",[]);null===m&&(m=[]);var v=[],j=[];m.forEach((function(e,t){var n=c()(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=c()(e,"values",[]);null===l&&(l=[]),l.forEach((function(e){var t=j.findIndex((function(t){return t.name===e[0]}));if(-1===t){var n={name:e[0]};n[a]=e[1],j.push(n)}else j[t][a]=e[1]}))}))}));var b=v.sort((function(e,t){return e.keyLabelt.keyLabel?1:0})).map((function(e,t){return(0,l.Z)((0,l.Z)({},e),{},{lineColor:y[t]||(0,g.C5)(e.keyLabel),fillColor:y[t]||(0,g.C5)(e.keyLabel)})})),C=j.sort((function(e,t){return e.name-t.name}));return(0,l.Z)((0,l.Z)({},t),{},{widgetConfiguration:b,data:C})}break;case i.barChart:if("bargauge"===n){var Z=c()(e,"targets[0].result",[]);null===Z&&(Z=[]);var N=function(e,t){return e[0]-t[0]},A=[];return A=t.customStructure?t.customStructure.map((function(e){var t=Z.find((function(t){var n=Object.keys(t.metric);return t.metric[n[0]]===e.originTag})),n=c()(t,"values",[]).sort(N),i=n[n.length-1]||["","0"];return{name:e.displayTag,a:parseInt(i[1])}})):Z.map((function(e){var t=Object.keys(e.metric),n=e.metric[t[0]],i=c()(e,"values",[]).sort(N),a=i[i.length-1]||["","0"];return{name:n,a:parseInt(a[1])}})),(0,l.Z)((0,l.Z)({},t),{},{data:A})}break;case i.singleRep:if("stat"===n){var E=c()(e,"targets[0].result[0].values",[]);null===E&&(E=[]);var S=c()(e,"options.reduceOptions.calcs[0]","lastNotNull"),F=w(E,S),k=E.sort((function(e,t){return e[0]-t[0]})),T=[];1===k.length&&T.push({value:0}),k.forEach((function(e){T.push({value:parseInt(e[1])})}));var L=t.labelDisplayFunction?t.labelDisplayFunction(F[1]):F[1];return(0,l.Z)((0,l.Z)({},t),{},{data:T,innerLabel:L})}}return t},A=function(e){var t=e.split(" "),n=function(){var t=e;return isNaN(parseFloat(e))||(t=(0,g.nk)(parseFloat(e))),(0,j.jsx)(r.Fragment,{children:t})};return 2!==t.length?n():g.Dl.includes(t[1])?(0,j.jsxs)("span",{className:"commonValue",children:[t[0],(0,j.jsx)("span",{className:"unitText",children:t[1]})]}):n()},E=n(4795),S=n(44149),F=n(30324),k=n(62449),T=n(98247),L=n(49044),B=(0,k.Z)({root:{backgroundColor:"transparent",paddingTop:0,paddingBottom:0,fontSize:22,textTransform:"uppercase",color:"#D0D0D0"},selected:{"& .MuiTab-wrapper":{color:"#07193E",fontWeight:"bold"}},indicator:{background:"transparent linear-gradient(90deg, #072B4E 0%, #081C42 100%) 0% 0% no-repeat padding-box;",height:4},scroller:{maxWidth:1185,position:"relative","&::after":{content:'" "',backgroundColor:"#EEF1F4",height:4,width:"100%",display:"block"}}}),I=function(e){var t=e.selectedTab,n=e.onChange,i=e.tabOptions,a=B();return(0,j.jsx)(r.Fragment,{children:(0,j.jsx)(T.Z,{indicatorColor:"primary",textColor:"primary","aria-label":"cluster-tabs",variant:"scrollable",scrollButtons:"auto",value:t,onChange:function(e,t){n(t)},classes:{indicator:a.indicator,scroller:a.scroller},children:i.map((function(e,t){var n={label:e.label};return e.value&&(n=(0,l.Z)((0,l.Z)({},n),{},{value:e.value})),e.disabled&&(n=(0,l.Z)((0,l.Z)({},n),{},{disabled:e.disabled})),(0,r.createElement)(L.Z,(0,l.Z)((0,l.Z)({},n),{},{classes:{root:a.root,selected:a.selected},id:"simple-tab-".concat(t),"aria-controls":"simple-tabpanel-".concat(t),key:"tab-".concat(t,"-").concat(e.label)}))}))})})},R=n(16356),D=n(86192),W=n(6369),M=(0,k.Z)({root:{backgroundColor:"#fff",padding:0},title:(0,l.Z)({},f.NP.titleContainer),content:{maxWidth:"100%"}}),P=(0,x.Z)((function(e){return(0,u.Z)((0,l.Z)((0,l.Z)({},f.NP),{},{cardRoot:(0,l.Z)((0,l.Z)({},f.NP.singleValueContainer),{},{"&.MuiPaper-root":{borderRadius:10}}),metricText:{fontSize:70,lineHeight:1.1,color:"#07193E",fontWeight:"bold"},unitText:{fontSize:10,color:"#767676",fontWeight:"normal"},subHearderContainer:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center"},subMessage:{fontSize:10,color:"#767676","&.bold":{fontWeight:"bold"}},headerContainer:{display:"flex",justifyContent:"space-between"},viewAll:{fontSize:10,color:"#C83B51",textTransform:"capitalize","& a, & a:hover, & a:visited, & a:active":{color:"#C83B51"}},extraMargin:{margin:"10px 20px 10px 0"}}))}))((function(e){var t=e.title,n=e.metricValue,i=e.metricUnit,a=e.subMessage,l=e.moreLink,o=e.rightComponent,s=e.extraMargin,c=void 0!==s&&s,d=e.classes,u=M(),x=function(){return(0,j.jsx)(r.Fragment,{children:(0,j.jsxs)("div",{className:d.subHearderContainer,children:[(0,j.jsxs)("div",{className:d.leftSide,children:[(0,j.jsx)("div",{children:(0,j.jsxs)("span",{className:d.metricText,children:[n,(0,j.jsx)("span",{className:d.unitText,children:i})]})}),a&&(0,j.jsx)("div",{className:"".concat(d.subMessage," ").concat(a.fontWeight?a.fontWeight:""),children:a.message})]}),(0,j.jsx)("div",{className:d.rightSide,children:o})]})})},p=function(){return(0,j.jsx)(r.Fragment,{children:(0,j.jsxs)("div",{className:d.headerContainer,children:[(0,j.jsx)("span",{className:d.title,children:t}),l&&(0,j.jsx)(r.Fragment,{children:(0,j.jsx)("span",{className:d.viewAll,children:(0,j.jsx)(W.rU,{to:l,children:"View All"})})})]})})};return(0,j.jsx)(r.Fragment,{children:(0,j.jsx)(R.Z,{className:"".concat(d.cardRoot," ").concat(c?d.extraMargin:""),children:""!==n&&(0,j.jsx)(D.Z,{title:(0,j.jsx)(p,{}),subheader:(0,j.jsx)(r.Fragment,{children:(0,j.jsx)(x,{})}),classes:{root:u.root,title:u.title,content:u.content}})})})})),z=function(e){var t=e.title,n=e.leftComponent,i=e.rightComponent;return(0,j.jsx)(r.Fragment,{children:(0,j.jsx)(P,{title:t,metricValue:n,rightComponent:i})})},O=n(88970),G=n(27505),_=n(50990),U=n(62879),K=n(34107),V=n(65607),$=n(29503),H=n(18201),J=n(58089),Y=(0,x.Z)((function(e){return(0,u.Z)((0,l.Z)({},f.Rp))}))((function(e){var t=e.active,n=e.payload,i=e.label,a=e.barChartConfiguration,l=e.classes;return t?(0,j.jsxs)("div",{className:l.customTooltip,children:[(0,j.jsx)("div",{className:l.timeStampTitle,children:i}),n&&n.map((function(e,t){return(0,j.jsxs)("div",{className:l.labelContainer,children:[(0,j.jsx)("div",{className:l.labelColor,style:{backgroundColor:a[t].color}}),(0,j.jsx)("div",{className:l.itemValue,children:(0,j.jsx)("span",{className:l.valueContainer,children:e.value})})]},"pltiem-".concat(t,"-").concat(i))}))]}):null})),q=n(47373),Q=n(32657),X=function(e){var t=e.y,n=e.payload;return(0,j.jsx)("text",{width:50,fontSize:"63%",textAnchor:"start",fill:"#333",transform:"translate(5,".concat(t,")"),fontWeight:700,dy:3,children:n.value})},ee=(0,o.$j)(null,{displayErrorMessage:S.Ih,openZoomPage:q.xG}),te=(0,x.Z)((function(e){return(0,u.Z)((0,l.Z)((0,l.Z)({},f.NP),{},{loadingAlign:{width:"100%",paddingTop:"15px",textAlign:"center",margin:"auto"}}))}))(ee((function(e){var t=e.classes,n=e.title,i=e.panelItem,l=e.timeStart,o=e.timeEnd,s=e.propLoading,c=e.displayErrorMessage,d=e.apiPrefix,u=e.zoomActivated,x=void 0!==u&&u,f=e.openZoomPage,g=(0,r.useState)(!0),h=(0,a.Z)(g,2),m=h[0],v=h[1],y=(0,r.useState)([]),b=(0,a.Z)(y,2),C=b[0],Z=b[1],w=(0,r.useState)(null),A=(0,a.Z)(w,2),E=A[0],S=A[1];(0,r.useEffect)((function(){s&&v(!0)}),[s]),(0,r.useEffect)((function(){if(m){var e=0;if(null!==l&&null!==o){var t=o.unix()-l.unix(),n=Math.floor(t/60);e=n<1?15:n}F.Z.invoke("GET","/api/v1/".concat(d,"/info/widgets/").concat(i.id,"/?step=").concat(e,"&").concat(null!==l?"&start=".concat(l.unix()):"").concat(null!==l&&null!==o?"&":"").concat(null!==o?"end=".concat(o.unix()):"")).then((function(e){var t=N(e,i);Z(t.data),S(t),v(!1)})).catch((function(e){c(e),v(!1)}))}}),[m,i,o,l,c,d]);var k=E?E.widgetConfiguration:[],T=0,L=0;if(1===k.length){var B=k[0];C.forEach((function(e,t){e[B.dataKey]>L&&(L=e[B.dataKey],T=t)}))}var I=(0,Q.Z)(),R=(0,p.Z)(I.breakpoints.up("md"));return(0,j.jsxs)("div",{className:x?"":t.singleValueContainer,children:[!x&&(0,j.jsxs)("div",{className:t.titleContainer,children:[n," ",(0,j.jsx)("button",{onClick:function(){f(i)},className:t.zoomChartIcon,children:(0,j.jsx)(J.Z,{})})]}),m&&(0,j.jsx)("div",{className:t.loadingAlign,children:(0,j.jsx)(H.Z,{})}),!m&&(0,j.jsx)("div",{className:x?t.zoomChartCont:t.contentContainer,children:(0,j.jsx)(O.h,{width:"99%",children:(0,j.jsxs)(G.v,{data:C,layout:"vertical",barCategoryGap:1,children:[(0,j.jsx)(_.K,{type:"number",hide:!0}),(0,j.jsx)(U.B,{dataKey:"name",type:"category",interval:0,tick:(0,j.jsx)(X,{}),tickLine:!1,axisLine:!1,width:150,hide:!R}),k.map((function(e){return(0,j.jsx)(K.$,{dataKey:e.dataKey,fill:e.color,background:e.background,barSize:x?25:12,children:1===k.length?(0,j.jsx)(r.Fragment,{children:C.map((function(t,n){return(0,j.jsx)(V.b,{fill:n===T?e.greatestColor:e.color},"chart-bar-".concat(n.toString()))}))}):null},"bar-".concat(e.dataKey))})),(0,j.jsx)($.u,{cursor:{fill:"rgba(255, 255, 255, 0.3)"},content:(0,j.jsx)(Y,{barChartConfiguration:k})})]})})})]})}))),ne=n(89472),ie=n(86072),ae=n(84930),le=n(84109),re=(0,x.Z)((function(e){return(0,u.Z)((0,l.Z)({},f.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,j.jsxs)("div",{className:r.customTooltip,children:[(0,j.jsx)("div",{className:r.timeStampTitle,children:(0,g.Ue)(i,!0)}),n&&n.map((function(e,t){return(0,j.jsxs)("div",{className:r.labelContainer,children:[(0,j.jsx)("div",{className:r.labelColor,style:{backgroundColor:a[t].lineColor}}),(0,j.jsx)("div",{className:r.itemValue,children:(0,j.jsxs)("span",{className:r.valueContainer,children:[a[t].keyLabel,":"," ",l(e.value)]})})]},"lbPl-".concat(t,"-").concat(a[t].keyLabel))}))]}):null})),oe=(0,o.$j)(null,{displayErrorMessage:S.Ih,openZoomPage:q.xG}),se=(0,x.Z)((function(e){return(0,u.Z)((0,l.Z)((0,l.Z)({},f.NP),{},{containerElements:{display:"flex",flexDirection:"row",height:"100%",flexGrow:1},verticalAlignment:{flexDirection:"column"},chartCont:{position:"relative",height:140,width:"100%"},legendChart:{display:"flex",flexDirection:"column",flex:"0 1 auto",maxHeight:130,margin:0,overflowY:"auto",position:"relative",textAlign:"center",width:"100%",justifyContent:"flex-start",color:"#404143",fontWeight:"bold",fontSize:12},loadingAlign:{margin:"auto"}}))}))(oe((function(e){var t=e.classes,n=e.title,i=e.displayErrorMessage,l=e.timeStart,o=e.timeEnd,s=e.propLoading,c=e.panelItem,d=e.apiPrefix,u=e.hideYAxis,x=void 0!==u&&u,f=e.areaWidget,g=void 0!==f&&f,h=e.yAxisFormatter,m=void 0===h?function(e){return e}:h,v=e.xAxisFormatter,y=void 0===v?function(e){return e}:v,b=e.zoomActivated,C=void 0!==b&&b,Z=e.openZoomPage,w=(0,r.useState)(!0),A=(0,a.Z)(w,2),E=A[0],S=A[1],k=(0,r.useState)([]),T=(0,a.Z)(k,2),L=T[0],B=T[1],I=(0,r.useState)(0),R=(0,a.Z)(I,2),D=R[0],W=R[1],M=(0,r.useState)(null),P=(0,a.Z)(M,2),z=P[0],G=P[1];(0,r.useEffect)((function(){s&&S(!0)}),[s]),(0,r.useEffect)((function(){if(E){var e=0;if(null!==l&&null!==o){var t=o.unix()-l.unix(),n=Math.floor(t/60);e=n<1?15:n}F.Z.invoke("GET","/api/v1/".concat(d,"/info/widgets/").concat(c.id,"/?step=").concat(e,"&").concat(null!==l?"&start=".concat(l.unix()):"").concat(null!==l&&null!==o?"&":"").concat(null!==o?"end=".concat(o.unix()):"")).then((function(e){var t=N(e,c);B(t.data),G(t),S(!1);var n,i=0,a=(0,ne.Z)(t.data);try{for(a.s();!(n=a.n()).done;){var l=n.value;for(var r in l)if("name"!==r){var o=parseInt(l[r]);isNaN(o)&&(o=0),i5&&void 0!==arguments[5]&&arguments[5];switch(e.type){case i.singleValue:return(0,j.jsx)(ve,{title:e.title,panelItem:e,timeStart:t,timeEnd:n,propLoading:a,apiPrefix:l});case i.simpleWidget:return(0,j.jsx)(fe,{title:e.title,panelItem:e,timeStart:t,timeEnd:n,propLoading:a,apiPrefix:l,iconWidget:e.widgetIcon});case i.pieChart:return(0,j.jsx)(xe,{title:e.title,panelItem:e,timeStart:t,timeEnd:n,propLoading:a,apiPrefix:l});case i.linearGraph:case i.areaGraph:return(0,j.jsx)(se,{title:e.title,panelItem:e,timeStart:t,timeEnd:n,propLoading:a,hideYAxis:e.disableYAxis,xAxisFormatter:e.xAxisFormatter,yAxisFormatter:e.yAxisFormatter,apiPrefix:l,areaWidget:e.type===i.areaGraph,zoomActivated:r});case i.barChart:return(0,j.jsx)(te,{title:e.title,panelItem:e,timeStart:t,timeEnd:n,propLoading:a,apiPrefix:l,zoomActivated:r});case i.singleRep:var o=e.fillColor?e.fillColor:e.color;return(0,j.jsx)(he,{title:e.title,panelItem:e,timeStart:t,timeEnd:n,propLoading:a,color:e.color,fillColor:o,apiPrefix:l});default:return null}},ye=n(76352),be=(0,o.$j)(null,{onCloseAction:q.jv})((function(e){var t=e.value,n=e.modalOpen,i=e.timeStart,a=e.timeEnd,l=e.apiPrefix,o=e.onCloseAction;return t?(0,j.jsx)(ye.Z,{title:t.title,onClose:function(){o()},modalOpen:n,wideLimit:!1,noContentPadding:!0,children:(0,j.jsx)(r.Fragment,{children:je(t,i,a,!0,l,!0)})}):null})),Ce=n(17778),Ze=(0,o.$j)((function(e){return{zoomOpen:e.dashboard.zoom.openZoom,zoomWidget:e.dashboard.zoom.widgetRender}}),{displayErrorMessage:S.Ih}),we=(0,x.Z)((function(e){return(0,u.Z)((0,l.Z)((0,l.Z)((0,l.Z)({},f.OR),f.bN),{},{dashboardRow:{display:"flex",flexDirection:"row",justifyContent:"flex-start",flexWrap:"wrap",maxWidth:1180}}))}))(Ze((function(e){var t=e.classes,n=e.displayErrorMessage,i=e.apiPrefix,l=void 0===i?"admin":i,o=e.zoomOpen,s=e.zoomWidget,c=(0,r.useState)(null),u=(0,a.Z)(c,2),x=u[0],f=u[1],g=(0,r.useState)(null),h=(0,a.Z)(g,2),m=h[0],v=h[1],y=(0,r.useState)(!0),b=(0,a.Z)(y,2),C=b[0],w=b[1],A=(0,r.useState)(Z),S=(0,a.Z)(A,2),k=S[0],T=S[1],L=(0,r.useState)(0),B=(0,a.Z)(L,2),R=B[0],D=B[1],W=(0,Q.Z)(),M=(0,p.Z)(W.breakpoints.up("md")),P=(0,r.useCallback)((function(e,n){return null===n||void 0===n?void 0:n.map((function(n,i){var a=n.length,o=Math.floor(12/a);return!M&&a>=4?o=6:!M&&a>=3&&(o=12),o<1?o=1:o>12&&(o=12),(0,j.jsx)(d.ZP,{item:!0,xs:12,className:t.dashboardRow,children:n.map((function(e,n){var i=k.find((function(t){return t.id===e}));return(0,j.jsx)(d.ZP,{className:t.widgetPanelDelimiter,item:!0,xs:12,sm:o,md:o,lg:o,children:(0,j.jsx)(d.ZP,{item:!0,xs:12,children:i?(0,j.jsx)(r.Fragment,{children:i.mergedPanels?(0,j.jsx)(r.Fragment,{children:(0,j.jsx)(z,{title:i.title,leftComponent:je(i.mergedPanels[0],x,m,C,l),rightComponent:je(i.mergedPanels[1],x,m,C,l)})}):je(i,x,m,C,l)}):null})},"widget-".concat(e,"-").concat(n))}))},"line-".concat(e,"-").concat(i))}))}),[x,m,C,l,t.dashboardRow,t.widgetPanelDelimiter,k,M]),O=(0,r.useCallback)((function(){var e=0;if(null!==x&&null!==m){var t=m.unix()-x.unix(),i=Math.floor(t/60);e=i<1?15:i}F.Z.invoke("GET","/api/v1/".concat(l,"/info?step=").concat(e,"&").concat(null!==x?"&start=".concat(x.unix()):"").concat(null!==x&&null!==m?"&":"").concat(null!==m?"end=".concat(m.unix()):"")).then((function(e){if(e.widgets){var t=(i=e.widgets,Z.map((function(e){var t=i.find((function(t){return t.title.toLowerCase().trim()===e.title.toLowerCase().trim()}));return N(t,e)})));T(t)}else n({errorMessage:"Widget information could not be retrieved at this time. Please try again",detailedError:""});var i;w(!1)})).catch((function(e){n(e),w(!1)}))}),[x,m,n,l]);(0,r.useEffect)((function(){C&&O()}),[C,O]);var G=[[66,44,500,501],[80,81,1],[68,52],[63,70]];M?G.splice(1,0,[50,502]):(G.splice(1,0,[50]),G.splice(1,0,[502]));return(0,j.jsxs)(r.Fragment,{children:[o&&(0,j.jsx)(be,{modalOpen:o,timeStart:x,timeEnd:m,widgetRender:0,value:s,apiPrefix:l}),(0,j.jsx)(Ce.Z,{timeStart:x,setTimeStart:f,timeEnd:m,setTimeEnd:v,triggerSync:function(){w(!0)}}),(0,j.jsx)(d.ZP,{item:!0,xs:12,children:(0,j.jsx)(I,{selectedTab:R,onChange:function(e){D(e)},tabOptions:[{label:"Usage"},{label:"Traffic"},{label:"Resources"}]})}),(0,j.jsxs)(d.ZP,{item:!0,xs:12,className:t.widgetsContainer,children:[(0,j.jsx)(E.x,{index:0,value:R,children:P("Summary",G)}),(0,j.jsx)(E.x,{index:1,value:R,children:P("Traffic",[[60],[71,17],[73]])}),(0,j.jsx)(E.x,{index:2,value:R,children:P("Resources",[[76,77],[11,8],[82,74]])})]})]})}))),Ne=n(35721),Ae=n(81378),Ee=n(35531),Se=n(56805),Fe=n(8235),ke=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,o=e.label,s=void 0===o?"":o;return(0,j.jsx)(Se.Z,{sx:{fontFamily:"Lato,sans-serif",color:"#07193E",maxWidth:"300px",minHeight:"200px",display:"flex",marginLeft:"auto",marginRight:"auto",cursor:"default"},children:(0,j.jsxs)(Se.Z,{sx:{flex:1,height:"200px",display:"flex",padding:{sm:"0 8px 0 8px",xs:"0 10px 0 10px"}},children:[(0,j.jsxs)(Se.Z,{sx:{flex:1,display:"flex",flexFlow:"column",marginTop:"32px"},children:[(0,j.jsx)(Se.Z,{sx:{fontSize:"16px",fontWeight:600,marginBottom:"24px"},children:s}),(0,j.jsxs)(Se.Z,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between",fontSize:{lg:"50px",md:"45px",xs:"35px"},fontWeight:600,"& .stat-text":{color:"#696969",fontSize:"12px"},"& .stat-value":{textAlign:"center"},"& .min-icon":{marginRight:"8px",height:"10px",width:"10px"}},children:[(0,j.jsxs)(Se.Z,{children:[(0,j.jsxs)(Se.Z,{sx:{display:"flex",alignItems:"center","& .min-icon":{fill:"#4CCB92"}},children:[(0,j.jsx)(v.J$,{})," ",(0,j.jsx)("div",{className:"stat-text",children:"Online"})]}),(0,j.jsx)(Se.Z,{className:"stat-value",children:n})]}),(0,j.jsxs)(Se.Z,{children:[(0,j.jsxs)(Se.Z,{sx:{display:"flex",alignItems:"center","& .min-icon":{fill:"#C83B51"}},children:[(0,j.jsx)(v.J$,{})," ",(0,j.jsx)("div",{className:"stat-text",children:"Offline"})]}),(0,j.jsx)(Se.Z,{className:"stat-value",children:a})]})]})]}),(0,j.jsx)(Se.Z,{sx:{width:"20px",height:"20px",marginTop:"26px",maxWidth:"26px","& .min-icon":{width:"16px",height:"16px"}},children:r})]})})},Te=n(31538),Le=n.n(Te),Be=n(48873),Ie=n(5211),Re=n(82618),De=n(55600),We=n(3602),Me=n(56943),Pe="#C83B51",ze="#4CCB92",Oe="#E7A219",Ge=function(e,t){return e<=t/2?Pe:2!==t&&e===t/2+1?Oe:e===t?ze:void 0},_e=function(e){switch(e){case"offline":return Pe;case"online":return ze;default:return Oe}},Ue=function(e,t){return e<=t/2?Pe:e===t/2+1?Oe:e===t?ze:void 0},Ke=function(e){var t=e.label,n=void 0===t?"":t,i=e.value,a=void 0===i?"":i,l=e.statusColor,r=void 0===l?"":l,o=e.hasStatus,s=void 0!==o&&o,c=e.icon,d=void 0===c?null:c;return(0,j.jsxs)(Se.Z,{sx:{alignItems:"center",padding:"5px",display:"flex",gap:"10px"},children:[(0,j.jsxs)(Se.Z,{sx:{display:"flex",alignItems:"center",flexFlow:"column",maxWidth:"40px","&:first-of-type(svg)":{fill:"#848484"}},children:[d,s?(0,j.jsx)(Se.Z,{sx:{marginRight:"0px",justifyContent:"center",alignItems:"center",textAlign:"center","& svg.min-icon":{fill:r,width:"10px",height:"10px"}},children:(0,j.jsx)(v.J$,{})}):(0,j.jsx)(Se.Z,{sx:{width:"12px",height:"12px"}})]}),(0,j.jsxs)(Se.Z,{sx:{display:"flex",alignItems:"flex-start",justifyContent:"flex-start",flexFlow:"column","& .stat-text":{color:"#5E5E5E",fontSize:"14px"},"& .stat-value":{color:"#07193E",display:"flex",fontWeight:500}},children:[(0,j.jsx)("div",{className:"stat-text",children:n}),(0,j.jsx)("div",{className:"stat-value",children:a})]})]})},Ve=(0,x.Z)((function(e){return(0,u.Z)((0,l.Z)({},f.SJ))}))((function(e){e.classes;var t=e.server,n=(e.index,Object.keys(c()(t,"network",{}))),i=n.length,a=t.drives?t.drives.length:0,l=n.reduce((function(e,n){return"online"===t.network[n]?e+1:e}),0),r=t.drives?t.drives.filter((function(e){return"ok"===e.state})).length:0;return(0,j.jsxs)(Se.Z,{sx:{display:"flex",alignItems:"flex-start",flexFlow:"column",flex:1},children:[(0,j.jsxs)(Se.Z,{sx:{display:"flex",alignItems:"center",marginBottom:"15px"},children:[(null===t||void 0===t?void 0:t.state)&&(0,j.jsx)(Se.Z,{sx:{marginRight:"8px","& .min-icon":{fill:_e(t.state),height:"14px",width:"14px"}},children:(0,j.jsx)(v.J$,{})}),(0,j.jsx)(Se.Z,{sx:{fontWeight:600,textTransform:"none"},children:t.endpoint||""})]}),(0,j.jsxs)(Se.Z,{sx:{display:"flex",alignItems:"center",padding:"3px",gap:"15px",justifyContent:"space-between",width:"100%",paddingLeft:"20px",flexFlow:{sm:"row",xs:"column"}},children:[(0,j.jsx)(Ke,{statusColor:Ge(r,a),label:"Drives",icon:(0,j.jsx)(v.FU,{}),hasStatus:!0,value:"".concat(r,"/").concat(a)}),(0,j.jsx)(Ke,{statusColor:Ue(l,i),label:"Network",icon:(0,j.jsx)(v.B7,{}),hasStatus:!0,value:"".concat(l,"/").concat(i)}),(0,j.jsx)(Ke,{statusColor:"green",label:"Up time",icon:(0,j.jsx)(v.oN,{}),value:null!==t&&void 0!==t&&t.uptime?(0,g.v1)(t.uptime):"N/A"}),(0,j.jsx)(Ke,{statusColor:"green",label:"Version",icon:(0,j.jsx)(v.Db,{}),value:(0,j.jsx)(Se.Z,{sx:{background:"rgb(235, 236, 237)",color:"#000000",paddingLeft:"10px",paddingRight:"10px",borderRadius:"16px",fontSize:"12px",marginTop:"5px"},children:t.version?t.version:"N/A"})})]})]})})),$e=function(e){switch(e){case"offline":return Pe;case"ok":return ze;default:return Oe}},He=(0,x.Z)((function(e){return(0,u.Z)((0,l.Z)({},f.SJ))}))((function(e){e.classes;var t=e.drive;return(0,j.jsxs)(Se.Z,{sx:{display:"flex",flex:1,alignItems:"center",paddingBottom:"10px",borderBottom:{xs:"1px solid #eaeaea"}},children:[(0,j.jsx)(Se.Z,{sx:{"& .min-icon":{fill:"#848484"}},children:(0,j.jsx)(v.FU,{})}),(0,j.jsxs)(Se.Z,{sx:{display:"flex",flexFlow:"column",marginLeft:"10px",flex:1},children:[(0,j.jsxs)(Se.Z,{sx:{fontSize:"14px",fontWeight:400,display:"flex",alignItems:"center","& .min-icon":{marginRight:"10px",height:"10px",width:"10px",fill:$e(t.state),flexShrink:0},"& .drive-endpoint":{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"normal",wordBreak:"break-all",fontSize:{md:"14px",xs:"10px"}}},children:[t.state&&(0,j.jsx)(v.J$,{}),(0,j.jsx)("div",{className:"drive-endpoint",children:t.endpoint||""})]}),(0,j.jsxs)(Se.Z,{sx:{flex:1,display:"flex",alignItems:"center",justifyContent:"space-between",paddingLeft:"20px",marginTop:"10px",flexFlow:{sm:"row",xs:"column"},"& .info-label":{color:"#8399AB"},"& .info-value":{color:"#073052",fontSize:"14px",fontWeight:500}},children:[(0,j.jsxs)(Se.Z,{sx:{display:"flex",flexFlow:"column"},children:[(0,j.jsx)("label",{className:"info-label",children:"Capacity:"}),(0,j.jsx)("div",{className:"info-value",children:(0,g.ae)(t.totalSpace?t.totalSpace.toString():"0")})]}),(0,j.jsxs)(Se.Z,{sx:{display:"flex",flexFlow:"column"},children:[(0,j.jsx)("label",{className:"info-label",children:"Used:"}),(0,j.jsx)("div",{className:"info-value",children:(0,g.ae)(t.usedSpace?t.usedSpace.toString():"0")})]}),(0,j.jsxs)(Se.Z,{sx:{display:"flex",flexFlow:"column"},children:[(0,j.jsx)("label",{className:"info-label",children:"Available:"}),(0,j.jsx)("div",{className:"info-value",children:(0,g.ae)(t.availableSpace?t.availableSpace.toString():"0")})]})]})]})]})})),Je=function(e){var t=e.data,n=r.useState(""),i=(0,a.Z)(n,2),l=i[0],o=i[1],s=function(e){o(e)};return(0,j.jsx)(Ie.Z,{sx:{width:"100%",flex:1},component:"nav","aria-labelledby":"nested-list-subheader",subheader:(0,j.jsxs)(Be.Z,{component:"div",sx:{borderBottom:"1px solid #F8F8F8"},children:["Servers (",t.length,")"]}),children:t.map((function(e,t){var n="".concat(e.endpoint,"-").concat(t),i=l===n;return(0,j.jsxs)(r.Fragment,{children:[(0,j.jsxs)(Re.Z,{disableRipple:!0,onClick:function(){s(i?"":n)},className:i?"expanded":"",sx:{display:"flex",alignItems:"center",justifyContent:"space-between",borderBottom:"1px solid #eaeaea","&:hover":{background:"#F8F8F8"},"&.expanded":{borderBottom:"none"}},children:[(0,j.jsx)(Ve,{server:e,index:t}),(0,j.jsx)(Se.Z,{sx:{height:"25px",width:"25px",marginLeft:"25px",background:"#FBFAFA",borderRadius:"2px","&:hover":{background:"#fafafa"},display:{md:"block",xs:"none"}},children:i?(0,j.jsx)(We.Z,{}):(0,j.jsx)(Me.Z,{})})]}),i?(0,j.jsxs)(r.Fragment,{children:[(0,j.jsxs)(Be.Z,{component:"div",sx:{borderBottom:"1px solid #F8F8F8"},children:["Drives (",e.drives.length,")"]},"".concat(t,"-drive-details")),(0,j.jsx)(De.Z,{in:i,timeout:"auto",unmountOnExit:!0,sx:{width:"100%",flex:1,display:"flex",padding:{md:"20px 50px",xs:"15px 15px"},"& .MuiCollapse-wrapperInner":{display:"flex",flexFlow:"column",gap:"15px"}},children:e.drives.map((function(e,t){return(0,j.jsx)(He,{drive:e},"".concat(e.endpoint,"-").concat(t))}))})]},"".concat(e.endpoint,"-").concat(t)):null]},n)}))})},Ye=n(94187),qe=function(e){var t=e.counterValue,n=e.label,i=void 0===n?"":n,a=e.icon,l=void 0===a?null:a;return(0,j.jsx)(Se.Z,{sx:{fontFamily:"Lato,sans-serif",color:"#07193E",maxWidth:"300px",minHeight:"200px",display:"flex",marginLeft:"auto",marginRight:"auto",cursor:"default",position:"relative",width:"100%"},children:(0,j.jsxs)(Se.Z,{sx:{flex:1,height:"200px",display:"flex",width:"100%",padding:{sm:"0 8px 0 8px",xs:"0 10px 0 10px"},position:"absolute"},children:[(0,j.jsxs)(Se.Z,{sx:{flex:1,display:"flex",flexFlow:"column",marginTop:"32px",zIndex:10,overflow:"hidden"},children:[(0,j.jsx)(Se.Z,{sx:{fontSize:"16px",fontWeight:600},children:i}),(0,j.jsx)(Ye.Z,{title:t,placement:"bottom",enterDelay:500,children:(0,j.jsx)(Se.Z,{sx:{fontSize:{xl:"55px",lg:"40px",md:"36px",sm:"22px",xs:"14px"},fontWeight:600,overflow:"hidden",textOverflow:"ellipsis",maxWidth:{md:187,xs:200}},children:t})})]}),(0,j.jsx)(Se.Z,{sx:{width:"20px",height:"20px",marginTop:"26px",maxWidth:"26px","& .min-icon":{width:"16px",height:"16px"}},children:l})]})})},Qe=function(e){var t=e.usageValue,n=e.total,i=e.unit;return(0,j.jsxs)(Se.Z,{sx:{maxHeight:"110px",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"19px",padding:"10px","& .unit-value":{fontSize:"50px",color:"#07193E"},"& .unit-type":{fontSize:"18px",color:"#5E5E5E",marginTop:"20px",marginLeft:"5px"},"& .usage-label":{display:"flex",alignItems:"center",fontSize:"16px",fontWeight:600,marginRight:"20px",marginTop:"-10px","& .min-icon":{marginLeft:"10px",height:16,width:16}}},children:[(0,j.jsxs)("div",{className:"usage-label",children:[(0,j.jsx)("span",{children:"Reported Usage"})," ",(0,j.jsx)(v.rH,{})]}),(0,j.jsx)(Ye.Z,{title:"".concat(t," Bytes"),children:(0,j.jsx)("label",{className:"unit-value",style:{fontWeight:600},children:n})}),(0,j.jsx)("label",{className:"unit-type",children:i})]})},Xe=function(e){var t=e.children,n=e.background,i=void 0===n?"#ffffff":n;return(0,j.jsx)(Se.Z,{sx:{border:"1px solid #f1f1f1",background:i,maxWidth:{sm:"100%",xs:"250px"}},children:t})},et=function(e){var t=e.usage,n=t&&t.usage?t.usage.toString():"0",i=function(e){return void 0===e?{total:"0",unit:"Mi"}:(0,g.Am)(e)}(n),a=function(e){return null!==e?e.servers.sort((function(e,t){var n=e.endpoint.toLowerCase(),i=t.endpoint.toLowerCase();return ni?1:0})):[]}(t||null),l=[];a.forEach((function(e){var t=e.drives.map((function(e){return e}));l=[].concat((0,Ee.Z)(l),(0,Ee.Z)(t))}));var o=Le()(a,"state"),s=o.offline,c=void 0===s?[]:s,d=o.online,u=void 0===d?[]:d,x=Le()(l,"state"),p=x.offline,f=void 0===p?[]:p,h=x.ok,m=void 0===h?[]:h;return(0,j.jsx)(Se.Z,{sx:{maxWidth:"1536px",margin:"auto"},children:(0,j.jsxs)(Se.Z,{sx:{display:"grid",gridTemplateRows:"1fr",gridTemplateColumns:"1fr",gap:"27px",marginBottom:"40px",marginTop:"80px",marginLeft:"60px",marginRight:"60px"},children:[(0,j.jsxs)(Se.Z,{children:[(null===t||void 0===t?void 0:t.prometheusNotReady)&&(0,j.jsx)(Fe.Z,{iconComponent:(0,j.jsx)(v.a$,{}),title:"We can't retrieve advanced metrics at this time",help:(0,j.jsxs)(r.Fragment,{children:["MinIO Dashboard will display basic metrics as we couldn't connect to Prometheus successfully.",(0,j.jsx)("br",{})," ",(0,j.jsx)("br",{}),"Please try again in a few minutes. If the problem persists, you can review your configuration and confirm that Prometheus server is up and running."]})}),!(null!==t&&void 0!==t&&t.prometheusNotReady)&&(0,j.jsx)(Fe.Z,{iconComponent:(0,j.jsx)(v.a$,{}),title:"We can\u2019t retrieve advanced metrics at this time.",help:(0,j.jsxs)(Se.Z,{children:[(0,j.jsx)(Se.Z,{sx:{fontSize:"14px"},children:"MinIO Dashboard will display basic metrics as we couldn\u2019t connect to Prometheus successfully. Please try again in a few minutes. If the problem persists, you can review your configuration and confirm that Prometheus server is up and running."}),(0,j.jsx)(Se.Z,{sx:{paddingTop:"20px",fontSize:"14px","& a":{color:function(e){return e.colors.link}}},children:(0,j.jsx)("a",{href:"https://docs.min.io/minio/baremetal/monitoring/metrics-alerts/collect-minio-metrics-using-prometheus.html?ref=con#minio-metrics-collect-using-prometheus",target:"_blank",rel:"noreferrer",children:"Read more about Prometheus on our Docs site."})})]})})]}),(0,j.jsxs)(Se.Z,{sx:{display:"grid",gridTemplateRows:"1fr .2fr auto",gridTemplateColumns:"1fr",gap:"40px"},children:[(0,j.jsxs)(Se.Z,{sx:{display:"grid",gridTemplateRows:"1fr",gridTemplateColumns:{lg:"1fr 1fr 1fr 1fr ",sm:"1fr 1fr",xs:"1fr"},gap:"40px"},children:[(0,j.jsx)(Xe,{background:"linear-gradient(-15deg, #2781b0 0%, #ffffff 30%) 0% 0% no-repeat padding-box",children:(0,j.jsx)(qe,{label:"Buckets",icon:(0,j.jsx)(v.wN,{}),counterValue:t?(0,g.nk)(t.buckets):0})}),(0,j.jsx)(Xe,{background:"linear-gradient(-15deg, #4CCB92 0%, #ffffff 30%) 0% 0% no-repeat padding-box",children:(0,j.jsx)(qe,{label:"Objects",icon:(0,j.jsx)(v.xp,{}),counterValue:t?(0,g.nk)(t.objects):0})}),(0,j.jsx)(Xe,{children:(0,j.jsx)(ke,{onlineCount:u.length,offlineCount:c.length,label:"Servers",icon:(0,j.jsx)(v.SB,{})})}),(0,j.jsx)(Xe,{children:(0,j.jsx)(ke,{offlineCount:f.length,onlineCount:m.length,label:"Drives",icon:(0,j.jsx)(v.FU,{})})})]}),(0,j.jsx)(Xe,{children:(0,j.jsx)(Qe,{usageValue:n,total:i.total,unit:i.unit})}),(0,j.jsx)(Se.Z,{sx:{display:"grid",gridTemplateRows:"auto",gridTemplateColumns:"1fr",gap:"auto"},children:(0,j.jsx)(Xe,{children:(0,j.jsx)(Je,{data:a})})})]})]})})},tt=(0,o.$j)(null,{displayErrorMessage:S.Ih}),nt=(0,x.Z)((function(e){return(0,u.Z)((0,l.Z)({},(0,f.Bz)(e.spacing(4))))}))(tt((function(e){var t=e.classes,n=e.displayErrorMessage,i=(0,r.useState)(!0),l=(0,a.Z)(i,2),o=l[0],s=l[1],u=(0,r.useState)(null),x=(0,a.Z)(u,2),p=x[0],f=x[1],g=(0,r.useCallback)((function(){F.Z.invoke("GET","/api/v1/admin/info").then((function(e){f(e),s(!1)})).catch((function(e){n(e),s(!1)}))}),[f,s,n]);(0,r.useEffect)((function(){o&&g()}),[o,g]);var h=c()(p,"widgets",null);return(0,j.jsxs)(r.Fragment,{children:[(0,j.jsx)(Ne.Z,{label:"Metrics"}),o?(0,j.jsx)(d.ZP,{container:!0,children:(0,j.jsx)(d.ZP,{item:!0,xs:12,className:t.container,children:(0,j.jsx)(Ae.Z,{})})}):(0,j.jsx)(r.Fragment,{children:null!==h?(0,j.jsx)(d.ZP,{container:!0,className:t.container,children:(0,j.jsx)(we,{})}):(0,j.jsx)(et,{usage:p})})]})})))},4795:function(e,t,n){n.d(t,{x:function(){return s}});var i=n(18489),a=n(83738),l=n(50390),r=n(62559),o=["children","value","index"],s=function(e){var t=e.children,n=e.value,s=e.index,c=(0,a.Z)(e,o);return(0,r.jsx)("div",(0,i.Z)((0,i.Z)({role:"tabpanel",hidden:n!==s,id:"simple-tabpanel-".concat(s),"aria-labelledby":"simple-tab-".concat(s),style:{marginTop:"5px"}},c),{},{children:n===s&&(0,r.jsx)(l.Fragment,{children:t})}))}}}]); -//# sourceMappingURL=189.108e9feb.chunk.js.map \ No newline at end of file +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[189],{10189:function(e,t,n){n.r(t),n.d(t,{default:function(){return nt}});var i,a=n(23430),l=n(18489),r=n(50390),o=n(34424),s=n(38342),c=n.n(s),d=n(25594),u=n(86509),x=n(4285),p=n(13512),f=n(72462);!function(e){e.singleValue="singleValue",e.linearGraph="linearGraph",e.areaGraph="areaGraph",e.barChart="barChart",e.pieChart="pieChart",e.singleRep="singleRep",e.simpleWidget="simpleWidget"}(i||(i={}));var g=n(28948),h=n(20426),m=n(73891),v=n(85204),j=n(62559),y=["#C4D4E9","#DCD1EE","#D1EEE7","#EEDED1","#AAF38F","#F9E6C5","#C83B51","#F4CECE","#D6D6D6"],b=function(e){return(0,g.v1)(e,"ns")},C=function(e){return parseInt(e).toString(10)},Z=[{id:1,title:"Uptime",data:"N/A",type:i.simpleWidget,widgetIcon:(0,j.jsx)(v.oN,{}),labelDisplayFunction:g.v1},{id:50,title:"Capacity",data:[],dataOuter:[{name:"outer",value:100}],widgetConfiguration:{outerChart:{colorList:["#9c9c9c"],innerRadius:0,outerRadius:0,startAngle:0,endAngle:0},innerChart:{colorList:y,innerRadius:20,outerRadius:50,startAngle:90,endAngle:-200}},type:i.pieChart,innerLabel:"N/A",labelDisplayFunction:g.ae},{id:68,title:"Data Usage Growth",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.areaGraph,yAxisFormatter:g.ae,xAxisFormatter:g.Ue},{id:52,title:"Object size distribution",data:[],widgetConfiguration:[{dataKey:"a",color:y[0],background:{fill:"#EEF1F4"},greatestColor:"#081C42"}],customStructure:[{originTag:"LESS_THAN_1024_B",displayTag:"Less than 1024B"},{originTag:"BETWEEN_1024_B_AND_1_MB",displayTag:"Between 1024B and 1MB"},{originTag:"BETWEEN_1_MB_AND_10_MB",displayTag:"Between 1MB and 10MB"},{originTag:"BETWEEN_10_MB_AND_64_MB",displayTag:"Between 10MB and 64MB"},{originTag:"BETWEEN_64_MB_AND_128_MB",displayTag:"Between 64MB and 128MB"},{originTag:"BETWEEN_128_MB_AND_512_MB",displayTag:"Between 128MB and 512MB"},{originTag:"GREATER_THAN_512_MB",displayTag:"Greater than 512MB"}],type:i.barChart},{id:66,title:"Buckets",data:[],innerLabel:"N/A",type:i.singleRep,color:"#0071BC",fillColor:"#ADD5E0"},{id:44,title:"Objects",data:[],innerLabel:"N/A",type:i.singleRep,color:"#0071BC",fillColor:"#ADD5E0"},{id:63,title:"API Data Received Rate",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,xAxisFormatter:g.Ue,yAxisFormatter:g.ae},{id:61,title:"Total Open FDs",data:[],innerLabel:"N/A",type:i.singleRep,color:"#22B573",fillColor:"#A6E8C4"},{id:62,title:"Total Goroutines",data:[],innerLabel:"N/A",type:i.singleRep,color:"#F7655E",fillColor:"#F4CECE"},{id:77,title:"Node CPU Usage",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,yAxisFormatter:C,xAxisFormatter:g.Ue},{id:60,title:"API Request Rate",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,xAxisFormatter:g.Ue},{id:70,title:"API Data Sent Rate",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,xAxisFormatter:g.Ue,yAxisFormatter:g.ae},{id:17,title:"Internode Data Transfer",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,yAxisFormatter:g.ae,xAxisFormatter:g.Ue},{id:73,title:"Node IO",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,yAxisFormatter:g.ae,xAxisFormatter:g.Ue},{id:80,title:"Time Since Last Heal Activity",data:"N/A",type:i.simpleWidget,widgetIcon:(0,j.jsx)(h.Z,{}),labelDisplayFunction:b},{id:81,title:"Time Since Last Scan Activity",data:"N/A",type:i.simpleWidget,widgetIcon:(0,j.jsx)(m.Z,{}),labelDisplayFunction:b},{id:71,title:"API Request Error Rate",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,xAxisFormatter:g.Ue},{id:76,title:"Node Memory Usage",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,xAxisFormatter:g.Ue,yAxisFormatter:g.ae},{id:74,title:"Drive Used Capacity",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,xAxisFormatter:g.Ue,yAxisFormatter:g.ae},{id:82,title:"Drives Free Inodes",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,disableYAxis:!0,xAxisFormatter:g.Ue},{id:11,title:"Node Syscalls",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,yAxisFormatter:C,xAxisFormatter:g.Ue},{id:8,title:"Node File Descriptors",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,yAxisFormatter:C,xAxisFormatter:g.Ue},{id:500,mergedPanels:[{id:53,title:"Online",data:"N/A",type:i.singleValue},{id:69,title:"Offline",data:"N/A",type:i.singleValue}],title:"Servers"},{id:501,mergedPanels:[{id:9,title:"Online",data:"N/A",type:i.singleValue},{id:78,title:"Offline",data:"N/A",type:i.singleValue}],title:"Drives"},{id:502,mergedPanels:[{id:65,title:"Upload",data:"N/A",type:i.singleValue,labelDisplayFunction:g.ae},{id:64,title:"Download",data:"N/A",type:i.singleValue,labelDisplayFunction:g.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]},N=function(e,t){if(!e)return t;var n=e.type;switch(t.type){case i.singleValue:case i.simpleWidget:if("stat"===n||"singlestat"===n){var a=c()(e,"targets[0].result[0].values",[]);null===a&&(a=[]);var r=c()(e,"options.reduceOptions.calcs[0]","lastNotNull"),o=w(a,r),s=t.labelDisplayFunction?t.labelDisplayFunction(o[1]):o[1];return(0,l.Z)((0,l.Z)({},t),{},{data:s})}break;case i.pieChart:if("gauge"===n){var d=c()(e,"targets[0].result",[]);null===d&&(d=[]);var u=c()(e,"options.reduceOptions.calcs[0]","lastNotNull"),x=d.length>0?d[0].values:[],p=w(x,u),f=d.map((function(e){var t=c()(e,"values",[]),n=Object.keys(e.metric),i=t.sort((function(e,t){return e[0]-t[0]})),a=e.metric[n[0]],l=i[i.length-1];return{name:a,value:parseInt(l)}})),h=t.labelDisplayFunction?t.labelDisplayFunction(p[1]):p[1];return(0,l.Z)((0,l.Z)({},t),{},{data:f,innerLabel:h})}break;case i.linearGraph:case i.areaGraph:if("graph"===n){var m=c()(e,"targets",[]);null===m&&(m=[]);var v=[],j=[];m.forEach((function(e,t){var n=c()(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=c()(e,"values",[]);null===l&&(l=[]),l.forEach((function(e){var t=j.findIndex((function(t){return t.name===e[0]}));if(-1===t){var n={name:e[0]};n[a]=e[1],j.push(n)}else j[t][a]=e[1]}))}))}));var b=v.sort((function(e,t){return e.keyLabelt.keyLabel?1:0})).map((function(e,t){return(0,l.Z)((0,l.Z)({},e),{},{lineColor:y[t]||(0,g.C5)(e.keyLabel),fillColor:y[t]||(0,g.C5)(e.keyLabel)})})),C=j.sort((function(e,t){return e.name-t.name}));return(0,l.Z)((0,l.Z)({},t),{},{widgetConfiguration:b,data:C})}break;case i.barChart:if("bargauge"===n){var Z=c()(e,"targets[0].result",[]);null===Z&&(Z=[]);var N=function(e,t){return e[0]-t[0]},A=[];return A=t.customStructure?t.customStructure.map((function(e){var t=Z.find((function(t){var n=Object.keys(t.metric);return t.metric[n[0]]===e.originTag})),n=c()(t,"values",[]).sort(N),i=n[n.length-1]||["","0"];return{name:e.displayTag,a:parseInt(i[1])}})):Z.map((function(e){var t=Object.keys(e.metric),n=e.metric[t[0]],i=c()(e,"values",[]).sort(N),a=i[i.length-1]||["","0"];return{name:n,a:parseInt(a[1])}})),(0,l.Z)((0,l.Z)({},t),{},{data:A})}break;case i.singleRep:if("stat"===n){var E=c()(e,"targets[0].result[0].values",[]);null===E&&(E=[]);var S=c()(e,"options.reduceOptions.calcs[0]","lastNotNull"),F=w(E,S),k=E.sort((function(e,t){return e[0]-t[0]})),T=[];1===k.length&&T.push({value:0}),k.forEach((function(e){T.push({value:parseInt(e[1])})}));var L=t.labelDisplayFunction?t.labelDisplayFunction(F[1]):F[1];return(0,l.Z)((0,l.Z)({},t),{},{data:T,innerLabel:L})}}return t},A=function(e){var t=e.split(" "),n=function(){var t=e;return isNaN(parseFloat(e))||(t=(0,g.nk)(parseFloat(e))),(0,j.jsx)(r.Fragment,{children:t})};return 2!==t.length?n():g.Dl.includes(t[1])?(0,j.jsxs)("span",{className:"commonValue",children:[t[0],(0,j.jsx)("span",{className:"unitText",children:t[1]})]}):n()},E=n(4795),S=n(44149),F=n(30324),k=n(62449),T=n(98247),L=n(49044),B=(0,k.Z)({root:{backgroundColor:"transparent",paddingTop:0,paddingBottom:0,fontSize:22,textTransform:"uppercase",color:"#D0D0D0"},selected:{"& .MuiTab-wrapper":{color:"#07193E",fontWeight:"bold"}},indicator:{background:"transparent linear-gradient(90deg, #072B4E 0%, #081C42 100%) 0% 0% no-repeat padding-box;",height:4},scroller:{maxWidth:1185,position:"relative","&::after":{content:'" "',backgroundColor:"#EEF1F4",height:4,width:"100%",display:"block"}}}),I=function(e){var t=e.selectedTab,n=e.onChange,i=e.tabOptions,a=B();return(0,j.jsx)(r.Fragment,{children:(0,j.jsx)(T.Z,{indicatorColor:"primary",textColor:"primary","aria-label":"cluster-tabs",variant:"scrollable",scrollButtons:"auto",value:t,onChange:function(e,t){n(t)},classes:{indicator:a.indicator,scroller:a.scroller},children:i.map((function(e,t){var n={label:e.label};return e.value&&(n=(0,l.Z)((0,l.Z)({},n),{},{value:e.value})),e.disabled&&(n=(0,l.Z)((0,l.Z)({},n),{},{disabled:e.disabled})),(0,r.createElement)(L.Z,(0,l.Z)((0,l.Z)({},n),{},{classes:{root:a.root,selected:a.selected},id:"simple-tab-".concat(t),"aria-controls":"simple-tabpanel-".concat(t),key:"tab-".concat(t,"-").concat(e.label)}))}))})})},R=n(16356),D=n(86192),W=n(6369),M=(0,k.Z)({root:{backgroundColor:"#fff",padding:0},title:(0,l.Z)({},f.NP.titleContainer),content:{maxWidth:"100%"}}),P=(0,x.Z)((function(e){return(0,u.Z)((0,l.Z)((0,l.Z)({},f.NP),{},{cardRoot:(0,l.Z)((0,l.Z)({},f.NP.singleValueContainer),{},{"&.MuiPaper-root":{borderRadius:10}}),metricText:{fontSize:70,lineHeight:1.1,color:"#07193E",fontWeight:"bold"},unitText:{fontSize:10,color:"#767676",fontWeight:"normal"},subHearderContainer:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center"},subMessage:{fontSize:10,color:"#767676","&.bold":{fontWeight:"bold"}},headerContainer:{display:"flex",justifyContent:"space-between"},viewAll:{fontSize:10,color:"#C83B51",textTransform:"capitalize","& a, & a:hover, & a:visited, & a:active":{color:"#C83B51"}},extraMargin:{margin:"10px 20px 10px 0"}}))}))((function(e){var t=e.title,n=e.metricValue,i=e.metricUnit,a=e.subMessage,l=e.moreLink,o=e.rightComponent,s=e.extraMargin,c=void 0!==s&&s,d=e.classes,u=M(),x=function(){return(0,j.jsx)(r.Fragment,{children:(0,j.jsxs)("div",{className:d.subHearderContainer,children:[(0,j.jsxs)("div",{className:d.leftSide,children:[(0,j.jsx)("div",{children:(0,j.jsxs)("span",{className:d.metricText,children:[n,(0,j.jsx)("span",{className:d.unitText,children:i})]})}),a&&(0,j.jsx)("div",{className:"".concat(d.subMessage," ").concat(a.fontWeight?a.fontWeight:""),children:a.message})]}),(0,j.jsx)("div",{className:d.rightSide,children:o})]})})},p=function(){return(0,j.jsx)(r.Fragment,{children:(0,j.jsxs)("div",{className:d.headerContainer,children:[(0,j.jsx)("span",{className:d.title,children:t}),l&&(0,j.jsx)(r.Fragment,{children:(0,j.jsx)("span",{className:d.viewAll,children:(0,j.jsx)(W.rU,{to:l,children:"View All"})})})]})})};return(0,j.jsx)(r.Fragment,{children:(0,j.jsx)(R.Z,{className:"".concat(d.cardRoot," ").concat(c?d.extraMargin:""),children:""!==n&&(0,j.jsx)(D.Z,{title:(0,j.jsx)(p,{}),subheader:(0,j.jsx)(r.Fragment,{children:(0,j.jsx)(x,{})}),classes:{root:u.root,title:u.title,content:u.content}})})})})),z=function(e){var t=e.title,n=e.leftComponent,i=e.rightComponent;return(0,j.jsx)(r.Fragment,{children:(0,j.jsx)(P,{title:t,metricValue:n,rightComponent:i})})},O=n(88970),G=n(27505),_=n(50990),U=n(62879),K=n(34107),V=n(65607),$=n(29503),H=n(18201),J=n(58089),Y=(0,x.Z)((function(e){return(0,u.Z)((0,l.Z)({},f.Rp))}))((function(e){var t=e.active,n=e.payload,i=e.label,a=e.barChartConfiguration,l=e.classes;return t?(0,j.jsxs)("div",{className:l.customTooltip,children:[(0,j.jsx)("div",{className:l.timeStampTitle,children:i}),n&&n.map((function(e,t){return(0,j.jsxs)("div",{className:l.labelContainer,children:[(0,j.jsx)("div",{className:l.labelColor,style:{backgroundColor:a[t].color}}),(0,j.jsx)("div",{className:l.itemValue,children:(0,j.jsx)("span",{className:l.valueContainer,children:e.value})})]},"pltiem-".concat(t,"-").concat(i))}))]}):null})),q=n(47373),Q=n(32657),X=function(e){var t=e.y,n=e.payload;return(0,j.jsx)("text",{width:50,fontSize:"63%",textAnchor:"start",fill:"#333",transform:"translate(5,".concat(t,")"),fontWeight:700,dy:3,children:n.value})},ee=(0,o.$j)(null,{displayErrorMessage:S.Ih,openZoomPage:q.xG}),te=(0,x.Z)((function(e){return(0,u.Z)((0,l.Z)((0,l.Z)({},f.NP),{},{loadingAlign:{width:"100%",paddingTop:"15px",textAlign:"center",margin:"auto"}}))}))(ee((function(e){var t=e.classes,n=e.title,i=e.panelItem,l=e.timeStart,o=e.timeEnd,s=e.propLoading,c=e.displayErrorMessage,d=e.apiPrefix,u=e.zoomActivated,x=void 0!==u&&u,f=e.openZoomPage,g=(0,r.useState)(!0),h=(0,a.Z)(g,2),m=h[0],v=h[1],y=(0,r.useState)([]),b=(0,a.Z)(y,2),C=b[0],Z=b[1],w=(0,r.useState)(null),A=(0,a.Z)(w,2),E=A[0],S=A[1];(0,r.useEffect)((function(){s&&v(!0)}),[s]),(0,r.useEffect)((function(){if(m){var e=0;if(null!==l&&null!==o){var t=o.unix()-l.unix(),n=Math.floor(t/60);e=n<1?15:n}F.Z.invoke("GET","/api/v1/".concat(d,"/info/widgets/").concat(i.id,"/?step=").concat(e,"&").concat(null!==l?"&start=".concat(l.unix()):"").concat(null!==l&&null!==o?"&":"").concat(null!==o?"end=".concat(o.unix()):"")).then((function(e){var t=N(e,i);Z(t.data),S(t),v(!1)})).catch((function(e){c(e),v(!1)}))}}),[m,i,o,l,c,d]);var k=E?E.widgetConfiguration:[],T=0,L=0;if(1===k.length){var B=k[0];C.forEach((function(e,t){e[B.dataKey]>L&&(L=e[B.dataKey],T=t)}))}var I=(0,Q.Z)(),R=(0,p.Z)(I.breakpoints.up("md"));return(0,j.jsxs)("div",{className:x?"":t.singleValueContainer,children:[!x&&(0,j.jsxs)("div",{className:t.titleContainer,children:[n," ",(0,j.jsx)("button",{onClick:function(){f(i)},className:t.zoomChartIcon,children:(0,j.jsx)(J.Z,{})})]}),m&&(0,j.jsx)("div",{className:t.loadingAlign,children:(0,j.jsx)(H.Z,{})}),!m&&(0,j.jsx)("div",{className:x?t.zoomChartCont:t.contentContainer,children:(0,j.jsx)(O.h,{width:"99%",children:(0,j.jsxs)(G.v,{data:C,layout:"vertical",barCategoryGap:1,children:[(0,j.jsx)(_.K,{type:"number",hide:!0}),(0,j.jsx)(U.B,{dataKey:"name",type:"category",interval:0,tick:(0,j.jsx)(X,{}),tickLine:!1,axisLine:!1,width:150,hide:!R}),k.map((function(e){return(0,j.jsx)(K.$,{dataKey:e.dataKey,fill:e.color,background:e.background,barSize:x?25:12,children:1===k.length?(0,j.jsx)(r.Fragment,{children:C.map((function(t,n){return(0,j.jsx)(V.b,{fill:n===T?e.greatestColor:e.color},"chart-bar-".concat(n.toString()))}))}):null},"bar-".concat(e.dataKey))})),(0,j.jsx)($.u,{cursor:{fill:"rgba(255, 255, 255, 0.3)"},content:(0,j.jsx)(Y,{barChartConfiguration:k})})]})})})]})}))),ne=n(89472),ie=n(86072),ae=n(84930),le=n(84109),re=(0,x.Z)((function(e){return(0,u.Z)((0,l.Z)({},f.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,j.jsxs)("div",{className:r.customTooltip,children:[(0,j.jsx)("div",{className:r.timeStampTitle,children:(0,g.Ue)(i,!0)}),n&&n.map((function(e,t){return(0,j.jsxs)("div",{className:r.labelContainer,children:[(0,j.jsx)("div",{className:r.labelColor,style:{backgroundColor:a[t].lineColor}}),(0,j.jsx)("div",{className:r.itemValue,children:(0,j.jsxs)("span",{className:r.valueContainer,children:[a[t].keyLabel,":"," ",l(e.value)]})})]},"lbPl-".concat(t,"-").concat(a[t].keyLabel))}))]}):null})),oe=(0,o.$j)(null,{displayErrorMessage:S.Ih,openZoomPage:q.xG}),se=(0,x.Z)((function(e){return(0,u.Z)((0,l.Z)((0,l.Z)({},f.NP),{},{containerElements:{display:"flex",flexDirection:"row",height:"100%",flexGrow:1},verticalAlignment:{flexDirection:"column"},chartCont:{position:"relative",height:140,width:"100%"},legendChart:{display:"flex",flexDirection:"column",flex:"0 1 auto",maxHeight:130,margin:0,overflowY:"auto",position:"relative",textAlign:"center",width:"100%",justifyContent:"flex-start",color:"#404143",fontWeight:"bold",fontSize:12},loadingAlign:{margin:"auto"}}))}))(oe((function(e){var t=e.classes,n=e.title,i=e.displayErrorMessage,l=e.timeStart,o=e.timeEnd,s=e.propLoading,c=e.panelItem,d=e.apiPrefix,u=e.hideYAxis,x=void 0!==u&&u,f=e.areaWidget,g=void 0!==f&&f,h=e.yAxisFormatter,m=void 0===h?function(e){return e}:h,v=e.xAxisFormatter,y=void 0===v?function(e){return e}:v,b=e.zoomActivated,C=void 0!==b&&b,Z=e.openZoomPage,w=(0,r.useState)(!0),A=(0,a.Z)(w,2),E=A[0],S=A[1],k=(0,r.useState)([]),T=(0,a.Z)(k,2),L=T[0],B=T[1],I=(0,r.useState)(0),R=(0,a.Z)(I,2),D=R[0],W=R[1],M=(0,r.useState)(null),P=(0,a.Z)(M,2),z=P[0],G=P[1];(0,r.useEffect)((function(){s&&S(!0)}),[s]),(0,r.useEffect)((function(){if(E){var e=0;if(null!==l&&null!==o){var t=o.unix()-l.unix(),n=Math.floor(t/60);e=n<1?15:n}F.Z.invoke("GET","/api/v1/".concat(d,"/info/widgets/").concat(c.id,"/?step=").concat(e,"&").concat(null!==l?"&start=".concat(l.unix()):"").concat(null!==l&&null!==o?"&":"").concat(null!==o?"end=".concat(o.unix()):"")).then((function(e){var t=N(e,c);B(t.data),G(t),S(!1);var n,i=0,a=(0,ne.Z)(t.data);try{for(a.s();!(n=a.n()).done;){var l=n.value;for(var r in l)if("name"!==r){var o=parseInt(l[r]);isNaN(o)&&(o=0),i5&&void 0!==arguments[5]&&arguments[5];switch(e.type){case i.singleValue:return(0,j.jsx)(ve,{title:e.title,panelItem:e,timeStart:t,timeEnd:n,propLoading:a,apiPrefix:l});case i.simpleWidget:return(0,j.jsx)(fe,{title:e.title,panelItem:e,timeStart:t,timeEnd:n,propLoading:a,apiPrefix:l,iconWidget:e.widgetIcon});case i.pieChart:return(0,j.jsx)(xe,{title:e.title,panelItem:e,timeStart:t,timeEnd:n,propLoading:a,apiPrefix:l});case i.linearGraph:case i.areaGraph:return(0,j.jsx)(se,{title:e.title,panelItem:e,timeStart:t,timeEnd:n,propLoading:a,hideYAxis:e.disableYAxis,xAxisFormatter:e.xAxisFormatter,yAxisFormatter:e.yAxisFormatter,apiPrefix:l,areaWidget:e.type===i.areaGraph,zoomActivated:r});case i.barChart:return(0,j.jsx)(te,{title:e.title,panelItem:e,timeStart:t,timeEnd:n,propLoading:a,apiPrefix:l,zoomActivated:r});case i.singleRep:var o=e.fillColor?e.fillColor:e.color;return(0,j.jsx)(he,{title:e.title,panelItem:e,timeStart:t,timeEnd:n,propLoading:a,color:e.color,fillColor:o,apiPrefix:l});default:return null}},ye=n(76352),be=(0,o.$j)(null,{onCloseAction:q.jv})((function(e){var t=e.value,n=e.modalOpen,i=e.timeStart,a=e.timeEnd,l=e.apiPrefix,o=e.onCloseAction;return t?(0,j.jsx)(ye.Z,{title:t.title,onClose:function(){o()},modalOpen:n,wideLimit:!1,noContentPadding:!0,children:(0,j.jsx)(r.Fragment,{children:je(t,i,a,!0,l,!0)})}):null})),Ce=n(17778),Ze=(0,o.$j)((function(e){return{zoomOpen:e.dashboard.zoom.openZoom,zoomWidget:e.dashboard.zoom.widgetRender}}),{displayErrorMessage:S.Ih}),we=(0,x.Z)((function(e){return(0,u.Z)((0,l.Z)((0,l.Z)((0,l.Z)({},f.OR),f.bN),{},{dashboardRow:{display:"flex",flexDirection:"row",justifyContent:"flex-start",flexWrap:"wrap",maxWidth:1180}}))}))(Ze((function(e){var t=e.classes,n=e.displayErrorMessage,i=e.apiPrefix,l=void 0===i?"admin":i,o=e.zoomOpen,s=e.zoomWidget,c=(0,r.useState)(null),u=(0,a.Z)(c,2),x=u[0],f=u[1],g=(0,r.useState)(null),h=(0,a.Z)(g,2),m=h[0],v=h[1],y=(0,r.useState)(!0),b=(0,a.Z)(y,2),C=b[0],w=b[1],A=(0,r.useState)(Z),S=(0,a.Z)(A,2),k=S[0],T=S[1],L=(0,r.useState)(0),B=(0,a.Z)(L,2),R=B[0],D=B[1],W=(0,Q.Z)(),M=(0,p.Z)(W.breakpoints.up("md")),P=(0,r.useCallback)((function(e,n){return null===n||void 0===n?void 0:n.map((function(n,i){var a=n.length,o=Math.floor(12/a);return!M&&a>=4?o=6:!M&&a>=3&&(o=12),o<1?o=1:o>12&&(o=12),(0,j.jsx)(d.ZP,{item:!0,xs:12,className:t.dashboardRow,children:n.map((function(e,n){var i=k.find((function(t){return t.id===e}));return(0,j.jsx)(d.ZP,{className:t.widgetPanelDelimiter,item:!0,xs:12,sm:o,md:o,lg:o,children:(0,j.jsx)(d.ZP,{item:!0,xs:12,children:i?(0,j.jsx)(r.Fragment,{children:i.mergedPanels?(0,j.jsx)(r.Fragment,{children:(0,j.jsx)(z,{title:i.title,leftComponent:je(i.mergedPanels[0],x,m,C,l),rightComponent:je(i.mergedPanels[1],x,m,C,l)})}):je(i,x,m,C,l)}):null})},"widget-".concat(e,"-").concat(n))}))},"line-".concat(e,"-").concat(i))}))}),[x,m,C,l,t.dashboardRow,t.widgetPanelDelimiter,k,M]),O=(0,r.useCallback)((function(){var e=0;if(null!==x&&null!==m){var t=m.unix()-x.unix(),i=Math.floor(t/60);e=i<1?15:i}F.Z.invoke("GET","/api/v1/".concat(l,"/info?step=").concat(e,"&").concat(null!==x?"&start=".concat(x.unix()):"").concat(null!==x&&null!==m?"&":"").concat(null!==m?"end=".concat(m.unix()):"")).then((function(e){if(e.widgets){var t=(i=e.widgets,Z.map((function(e){var t=i.find((function(t){return t.title.toLowerCase().trim()===e.title.toLowerCase().trim()}));return N(t,e)})));T(t)}else n({errorMessage:"Widget information could not be retrieved at this time. Please try again",detailedError:""});var i;w(!1)})).catch((function(e){n(e),w(!1)}))}),[x,m,n,l]);(0,r.useEffect)((function(){C&&O()}),[C,O]);var G=[[66,44,500,501],[80,81,1],[68,52],[63,70]];M?G.splice(1,0,[50,502]):(G.splice(1,0,[50]),G.splice(1,0,[502]));return(0,j.jsxs)(r.Fragment,{children:[o&&(0,j.jsx)(be,{modalOpen:o,timeStart:x,timeEnd:m,widgetRender:0,value:s,apiPrefix:l}),(0,j.jsx)(Ce.Z,{timeStart:x,setTimeStart:f,timeEnd:m,setTimeEnd:v,triggerSync:function(){w(!0)}}),(0,j.jsx)(d.ZP,{item:!0,xs:12,children:(0,j.jsx)(I,{selectedTab:R,onChange:function(e){D(e)},tabOptions:[{label:"Usage"},{label:"Traffic"},{label:"Resources"}]})}),(0,j.jsxs)(d.ZP,{item:!0,xs:12,className:t.widgetsContainer,children:[(0,j.jsx)(E.x,{index:0,value:R,children:P("Summary",G)}),(0,j.jsx)(E.x,{index:1,value:R,children:P("Traffic",[[60],[71,17],[73]])}),(0,j.jsx)(E.x,{index:2,value:R,children:P("Resources",[[76,77],[11,8],[82,74]])})]})]})}))),Ne=n(35721),Ae=n(81378),Ee=n(35531),Se=n(56805),Fe=n(8235),ke=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,o=e.label,s=void 0===o?"":o;return(0,j.jsx)(Se.Z,{sx:{fontFamily:"Lato,sans-serif",color:"#07193E",maxWidth:"300px",minHeight:"200px",display:"flex",marginLeft:"auto",marginRight:"auto",cursor:"default"},children:(0,j.jsxs)(Se.Z,{sx:{flex:1,height:"200px",display:"flex",padding:{sm:"0 8px 0 8px",xs:"0 10px 0 10px"}},children:[(0,j.jsxs)(Se.Z,{sx:{flex:1,display:"flex",flexFlow:"column",marginTop:"32px"},children:[(0,j.jsx)(Se.Z,{sx:{fontSize:"16px",fontWeight:600,marginBottom:"24px"},children:s}),(0,j.jsxs)(Se.Z,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between",fontSize:{lg:"50px",md:"45px",xs:"35px"},fontWeight:600,"& .stat-text":{color:"#696969",fontSize:"12px"},"& .stat-value":{textAlign:"center"},"& .min-icon":{marginRight:"8px",height:"10px",width:"10px"}},children:[(0,j.jsxs)(Se.Z,{children:[(0,j.jsxs)(Se.Z,{sx:{display:"flex",alignItems:"center","& .min-icon":{fill:"#4CCB92"}},children:[(0,j.jsx)(v.J$,{})," ",(0,j.jsx)("div",{className:"stat-text",children:"Online"})]}),(0,j.jsx)(Se.Z,{className:"stat-value",children:n})]}),(0,j.jsxs)(Se.Z,{children:[(0,j.jsxs)(Se.Z,{sx:{display:"flex",alignItems:"center","& .min-icon":{fill:"#C83B51"}},children:[(0,j.jsx)(v.J$,{})," ",(0,j.jsx)("div",{className:"stat-text",children:"Offline"})]}),(0,j.jsx)(Se.Z,{className:"stat-value",children:a})]})]})]}),(0,j.jsx)(Se.Z,{sx:{width:"20px",height:"20px",marginTop:"26px",maxWidth:"26px","& .min-icon":{width:"16px",height:"16px"}},children:r})]})})},Te=n(31538),Le=n.n(Te),Be=n(48873),Ie=n(5211),Re=n(82618),De=n(55600),We=n(3602),Me=n(56943),Pe="#C83B51",ze="#4CCB92",Oe="#E7A219",Ge=function(e,t){return e<=t/2?Pe:2!==t&&e===t/2+1?Oe:e===t?ze:void 0},_e=function(e){switch(e){case"offline":return Pe;case"online":return ze;default:return Oe}},Ue=function(e,t){return e<=t/2?Pe:e===t/2+1?Oe:e===t?ze:void 0},Ke=function(e){var t=e.label,n=void 0===t?"":t,i=e.value,a=void 0===i?"":i,l=e.statusColor,r=void 0===l?"":l,o=e.hasStatus,s=void 0!==o&&o,c=e.icon,d=void 0===c?null:c;return(0,j.jsxs)(Se.Z,{sx:{alignItems:"center",padding:"5px",display:"flex",gap:"10px"},children:[(0,j.jsxs)(Se.Z,{sx:{display:"flex",alignItems:"center",flexFlow:"column",maxWidth:"40px","&:first-of-type(svg)":{fill:"#848484"}},children:[d,s?(0,j.jsx)(Se.Z,{sx:{marginRight:"0px",justifyContent:"center",alignItems:"center",textAlign:"center","& svg.min-icon":{fill:r,width:"10px",height:"10px"}},children:(0,j.jsx)(v.J$,{})}):(0,j.jsx)(Se.Z,{sx:{width:"12px",height:"12px"}})]}),(0,j.jsxs)(Se.Z,{sx:{display:"flex",alignItems:"flex-start",justifyContent:"flex-start",flexFlow:"column","& .stat-text":{color:"#5E5E5E",fontSize:"14px"},"& .stat-value":{color:"#07193E",display:"flex",fontWeight:500}},children:[(0,j.jsx)("div",{className:"stat-text",children:n}),(0,j.jsx)("div",{className:"stat-value",children:a})]})]})},Ve=(0,x.Z)((function(e){return(0,u.Z)((0,l.Z)({},f.SJ))}))((function(e){e.classes;var t=e.server,n=(e.index,Object.keys(c()(t,"network",{}))),i=n.length,a=t.drives?t.drives.length:0,l=n.reduce((function(e,n){return"online"===t.network[n]?e+1:e}),0),r=t.drives?t.drives.filter((function(e){return"ok"===e.state})).length:0;return(0,j.jsxs)(Se.Z,{sx:{display:"flex",alignItems:"flex-start",flexFlow:"column",flex:1},children:[(0,j.jsxs)(Se.Z,{sx:{display:"flex",alignItems:"center",marginBottom:"15px"},children:[(null===t||void 0===t?void 0:t.state)&&(0,j.jsx)(Se.Z,{sx:{marginRight:"8px","& .min-icon":{fill:_e(t.state),height:"14px",width:"14px"}},children:(0,j.jsx)(v.J$,{})}),(0,j.jsx)(Se.Z,{sx:{fontWeight:600,textTransform:"none"},children:t.endpoint||""})]}),(0,j.jsxs)(Se.Z,{sx:{display:"flex",alignItems:"center",padding:"3px",gap:"15px",justifyContent:"space-between",width:"100%",paddingLeft:"20px",flexFlow:{sm:"row",xs:"column"}},children:[(0,j.jsx)(Ke,{statusColor:Ge(r,a),label:"Drives",icon:(0,j.jsx)(v.FU,{}),hasStatus:!0,value:"".concat(r,"/").concat(a)}),(0,j.jsx)(Ke,{statusColor:Ue(l,i),label:"Network",icon:(0,j.jsx)(v.B7,{}),hasStatus:!0,value:"".concat(l,"/").concat(i)}),(0,j.jsx)(Ke,{statusColor:"green",label:"Up time",icon:(0,j.jsx)(v.oN,{}),value:null!==t&&void 0!==t&&t.uptime?(0,g.v1)(t.uptime):"N/A"}),(0,j.jsx)(Ke,{statusColor:"green",label:"Version",icon:(0,j.jsx)(v.Db,{}),value:(0,j.jsx)(Se.Z,{sx:{background:"rgb(235, 236, 237)",color:"#000000",paddingLeft:"10px",paddingRight:"10px",borderRadius:"16px",fontSize:"12px",marginTop:"5px"},children:t.version?t.version:"N/A"})})]})]})})),$e=function(e){switch(e){case"offline":return Pe;case"ok":return ze;default:return Oe}},He=(0,x.Z)((function(e){return(0,u.Z)((0,l.Z)({},f.SJ))}))((function(e){e.classes;var t=e.drive;return(0,j.jsxs)(Se.Z,{sx:{display:"flex",flex:1,alignItems:"center",paddingBottom:"10px",borderBottom:{xs:"1px solid #eaeaea"}},children:[(0,j.jsx)(Se.Z,{sx:{"& .min-icon":{fill:"#848484"}},children:(0,j.jsx)(v.FU,{})}),(0,j.jsxs)(Se.Z,{sx:{display:"flex",flexFlow:"column",marginLeft:"10px",flex:1},children:[(0,j.jsxs)(Se.Z,{sx:{fontSize:"14px",fontWeight:400,display:"flex",alignItems:"center","& .min-icon":{marginRight:"10px",height:"10px",width:"10px",fill:$e(t.state),flexShrink:0},"& .drive-endpoint":{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"normal",wordBreak:"break-all",fontSize:{md:"14px",xs:"10px"}}},children:[t.state&&(0,j.jsx)(v.J$,{}),(0,j.jsx)("div",{className:"drive-endpoint",children:t.endpoint||""})]}),(0,j.jsxs)(Se.Z,{sx:{flex:1,display:"flex",alignItems:"center",justifyContent:"space-between",paddingLeft:"20px",marginTop:"10px",flexFlow:{sm:"row",xs:"column"},"& .info-label":{color:"#8399AB"},"& .info-value":{color:"#073052",fontSize:"14px",fontWeight:500}},children:[(0,j.jsxs)(Se.Z,{sx:{display:"flex",flexFlow:"column"},children:[(0,j.jsx)("label",{className:"info-label",children:"Capacity:"}),(0,j.jsx)("div",{className:"info-value",children:(0,g.ae)(t.totalSpace?t.totalSpace.toString():"0")})]}),(0,j.jsxs)(Se.Z,{sx:{display:"flex",flexFlow:"column"},children:[(0,j.jsx)("label",{className:"info-label",children:"Used:"}),(0,j.jsx)("div",{className:"info-value",children:(0,g.ae)(t.usedSpace?t.usedSpace.toString():"0")})]}),(0,j.jsxs)(Se.Z,{sx:{display:"flex",flexFlow:"column"},children:[(0,j.jsx)("label",{className:"info-label",children:"Available:"}),(0,j.jsx)("div",{className:"info-value",children:(0,g.ae)(t.availableSpace?t.availableSpace.toString():"0")})]})]})]})]})})),Je=function(e){var t=e.data,n=r.useState(""),i=(0,a.Z)(n,2),l=i[0],o=i[1],s=function(e){o(e)};return(0,j.jsx)(Ie.Z,{sx:{width:"100%",flex:1},component:"nav","aria-labelledby":"nested-list-subheader",subheader:(0,j.jsxs)(Be.Z,{component:"div",sx:{borderBottom:"1px solid #F8F8F8"},children:["Servers (",t.length,")"]}),children:t.map((function(e,t){var n="".concat(e.endpoint,"-").concat(t),i=l===n;return(0,j.jsxs)(r.Fragment,{children:[(0,j.jsxs)(Re.Z,{disableRipple:!0,onClick:function(){s(i?"":n)},className:i?"expanded":"",sx:{display:"flex",alignItems:"center",justifyContent:"space-between",borderBottom:"1px solid #eaeaea","&:hover":{background:"#F8F8F8"},"&.expanded":{borderBottom:"none"}},children:[(0,j.jsx)(Ve,{server:e,index:t}),(0,j.jsx)(Se.Z,{sx:{height:"25px",width:"25px",marginLeft:"25px",background:"#FBFAFA",borderRadius:"2px","&:hover":{background:"#fafafa"},display:{md:"block",xs:"none"}},children:i?(0,j.jsx)(We.Z,{}):(0,j.jsx)(Me.Z,{})})]}),i?(0,j.jsxs)(r.Fragment,{children:[(0,j.jsxs)(Be.Z,{component:"div",sx:{borderBottom:"1px solid #F8F8F8"},children:["Drives (",e.drives.length,")"]},"".concat(t,"-drive-details")),(0,j.jsx)(De.Z,{in:i,timeout:"auto",unmountOnExit:!0,sx:{width:"100%",flex:1,display:"flex",padding:{md:"20px 50px",xs:"15px 15px"},"& .MuiCollapse-wrapperInner":{display:"flex",flexFlow:"column",gap:"15px"}},children:e.drives.map((function(e,t){return(0,j.jsx)(He,{drive:e},"".concat(e.endpoint,"-").concat(t))}))})]},"".concat(e.endpoint,"-").concat(t)):null]},n)}))})},Ye=n(94187),qe=function(e){var t=e.counterValue,n=e.label,i=void 0===n?"":n,a=e.icon,l=void 0===a?null:a;return(0,j.jsx)(Se.Z,{sx:{fontFamily:"Lato,sans-serif",color:"#07193E",maxWidth:"300px",minHeight:"200px",display:"flex",marginLeft:"auto",marginRight:"auto",cursor:"default",position:"relative",width:"100%"},children:(0,j.jsxs)(Se.Z,{sx:{flex:1,height:"200px",display:"flex",width:"100%",padding:{sm:"0 8px 0 8px",xs:"0 10px 0 10px"},position:"absolute"},children:[(0,j.jsxs)(Se.Z,{sx:{flex:1,display:"flex",flexFlow:"column",marginTop:"32px",zIndex:10,overflow:"hidden"},children:[(0,j.jsx)(Se.Z,{sx:{fontSize:"16px",fontWeight:600},children:i}),(0,j.jsx)(Ye.Z,{title:t,placement:"bottom",enterDelay:500,children:(0,j.jsx)(Se.Z,{sx:{fontSize:{xl:"55px",lg:"40px",md:"36px",sm:"22px",xs:"14px"},fontWeight:600,overflow:"hidden",textOverflow:"ellipsis",maxWidth:{md:187,xs:200}},children:t})})]}),(0,j.jsx)(Se.Z,{sx:{width:"20px",height:"20px",marginTop:"26px",maxWidth:"26px","& .min-icon":{width:"16px",height:"16px"}},children:l})]})})},Qe=function(e){var t=e.usageValue,n=e.total,i=e.unit;return(0,j.jsxs)(Se.Z,{sx:{maxHeight:"110px",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"19px",padding:"10px","& .unit-value":{fontSize:"50px",color:"#07193E"},"& .unit-type":{fontSize:"18px",color:"#5E5E5E",marginTop:"20px",marginLeft:"5px"},"& .usage-label":{display:"flex",alignItems:"center",fontSize:"16px",fontWeight:600,marginRight:"20px",marginTop:"-10px","& .min-icon":{marginLeft:"10px",height:16,width:16}}},children:[(0,j.jsxs)("div",{className:"usage-label",children:[(0,j.jsx)("span",{children:"Reported Usage"})," ",(0,j.jsx)(v.rH,{})]}),(0,j.jsx)(Ye.Z,{title:"".concat(t," Bytes"),children:(0,j.jsx)("label",{className:"unit-value",style:{fontWeight:600},children:n})}),(0,j.jsx)("label",{className:"unit-type",children:i})]})},Xe=function(e){var t=e.children,n=e.background,i=void 0===n?"#ffffff":n;return(0,j.jsx)(Se.Z,{sx:{border:"1px solid #f1f1f1",background:i,maxWidth:{sm:"100%",xs:"250px"}},children:t})},et=function(e){var t=e.usage,n=t&&t.usage?t.usage.toString():"0",i=function(e){return void 0===e?{total:"0",unit:"Mi"}:(0,g.Am)(e)}(n),a=function(e){return null!==e?e.servers.sort((function(e,t){var n=e.endpoint.toLowerCase(),i=t.endpoint.toLowerCase();return ni?1:0})):[]}(t||null),l=[];a.forEach((function(e){var t=e.drives.map((function(e){return e}));l=[].concat((0,Ee.Z)(l),(0,Ee.Z)(t))}));var o=Le()(a,"state"),s=o.offline,c=void 0===s?[]:s,d=o.online,u=void 0===d?[]:d,x=Le()(l,"state"),p=x.offline,f=void 0===p?[]:p,h=x.ok,m=void 0===h?[]:h;return(0,j.jsx)(Se.Z,{sx:{maxWidth:"1536px",margin:"auto"},children:(0,j.jsxs)(Se.Z,{sx:{display:"grid",gridTemplateRows:"1fr",gridTemplateColumns:"1fr",gap:"27px",marginBottom:"40px",marginTop:"80px",marginLeft:"60px",marginRight:"60px"},children:[(0,j.jsxs)(Se.Z,{children:[(null===t||void 0===t?void 0:t.prometheusNotReady)&&(0,j.jsx)(Fe.Z,{iconComponent:(0,j.jsx)(v.a$,{}),title:"We can't retrieve advanced metrics at this time",help:(0,j.jsxs)(r.Fragment,{children:["MinIO Dashboard will display basic metrics as we couldn't connect to Prometheus successfully.",(0,j.jsx)("br",{})," ",(0,j.jsx)("br",{}),"Please try again in a few minutes. If the problem persists, you can review your configuration and confirm that Prometheus server is up and running."]})}),!(null!==t&&void 0!==t&&t.prometheusNotReady)&&(0,j.jsx)(Fe.Z,{iconComponent:(0,j.jsx)(v.a$,{}),title:"We can\u2019t retrieve advanced metrics at this time.",help:(0,j.jsxs)(Se.Z,{children:[(0,j.jsx)(Se.Z,{sx:{fontSize:"14px"},children:"MinIO Dashboard will display basic metrics as we couldn\u2019t connect to Prometheus successfully. Please try again in a few minutes. If the problem persists, you can review your configuration and confirm that Prometheus server is up and running."}),(0,j.jsx)(Se.Z,{sx:{paddingTop:"20px",fontSize:"14px","& a":{color:function(e){return e.colors.link}}},children:(0,j.jsx)("a",{href:"https://docs.min.io/minio/baremetal/monitoring/metrics-alerts/collect-minio-metrics-using-prometheus.html?ref=con#minio-metrics-collect-using-prometheus",target:"_blank",rel:"noreferrer",children:"Read more about Prometheus on our Docs site."})})]})})]}),(0,j.jsxs)(Se.Z,{sx:{display:"grid",gridTemplateRows:"1fr .2fr auto",gridTemplateColumns:"1fr",gap:"40px"},children:[(0,j.jsxs)(Se.Z,{sx:{display:"grid",gridTemplateRows:"1fr",gridTemplateColumns:{lg:"1fr 1fr 1fr 1fr ",sm:"1fr 1fr",xs:"1fr"},gap:"40px"},children:[(0,j.jsx)(Xe,{background:"linear-gradient(-15deg, #2781b0 0%, #ffffff 30%) 0% 0% no-repeat padding-box",children:(0,j.jsx)(qe,{label:"Buckets",icon:(0,j.jsx)(v.wN,{}),counterValue:t?(0,g.nk)(t.buckets):0})}),(0,j.jsx)(Xe,{background:"linear-gradient(-15deg, #4CCB92 0%, #ffffff 30%) 0% 0% no-repeat padding-box",children:(0,j.jsx)(qe,{label:"Objects",icon:(0,j.jsx)(v.xp,{}),counterValue:t?(0,g.nk)(t.objects):0})}),(0,j.jsx)(Xe,{children:(0,j.jsx)(ke,{onlineCount:u.length,offlineCount:c.length,label:"Servers",icon:(0,j.jsx)(v.SB,{})})}),(0,j.jsx)(Xe,{children:(0,j.jsx)(ke,{offlineCount:f.length,onlineCount:m.length,label:"Drives",icon:(0,j.jsx)(v.FU,{})})})]}),(0,j.jsx)(Xe,{children:(0,j.jsx)(Qe,{usageValue:n,total:i.total,unit:i.unit})}),(0,j.jsx)(Se.Z,{sx:{display:"grid",gridTemplateRows:"auto",gridTemplateColumns:"1fr",gap:"auto"},children:(0,j.jsx)(Xe,{children:(0,j.jsx)(Je,{data:a})})})]})]})})},tt=(0,o.$j)(null,{displayErrorMessage:S.Ih}),nt=(0,x.Z)((function(e){return(0,u.Z)((0,l.Z)({},(0,f.Bz)(e.spacing(4))))}))(tt((function(e){var t=e.classes,n=e.displayErrorMessage,i=(0,r.useState)(!0),l=(0,a.Z)(i,2),o=l[0],s=l[1],u=(0,r.useState)(null),x=(0,a.Z)(u,2),p=x[0],f=x[1],g=(0,r.useCallback)((function(){F.Z.invoke("GET","/api/v1/admin/info").then((function(e){f(e),s(!1)})).catch((function(e){n(e),s(!1)}))}),[f,s,n]);(0,r.useEffect)((function(){o&&g()}),[o,g]);var h=c()(p,"widgets",null);return(0,j.jsxs)(r.Fragment,{children:[(0,j.jsx)(Ne.Z,{label:"Metrics"}),o?(0,j.jsx)(d.ZP,{container:!0,children:(0,j.jsx)(d.ZP,{item:!0,xs:12,className:t.container,children:(0,j.jsx)(Ae.Z,{})})}):(0,j.jsx)(r.Fragment,{children:null!==h?(0,j.jsx)(d.ZP,{container:!0,className:t.container,children:(0,j.jsx)(we,{})}):(0,j.jsx)(et,{usage:p})})]})})))},4795:function(e,t,n){n.d(t,{x:function(){return s}});var i=n(18489),a=n(83738),l=n(50390),r=n(62559),o=["children","value","index"],s=function(e){var t=e.children,n=e.value,s=e.index,c=(0,a.Z)(e,o);return(0,r.jsx)("div",(0,i.Z)((0,i.Z)({role:"tabpanel",hidden:n!==s,id:"simple-tabpanel-".concat(s),"aria-labelledby":"simple-tab-".concat(s),style:{marginTop:"5px"}},c),{},{children:n===s&&(0,r.jsx)(l.Fragment,{children:t})}))}}}]); +//# sourceMappingURL=189.c6e8473a.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/189.108e9feb.chunk.js.map b/portal-ui/build/static/js/189.c6e8473a.chunk.js.map similarity index 99% rename from portal-ui/build/static/js/189.108e9feb.chunk.js.map rename to portal-ui/build/static/js/189.c6e8473a.chunk.js.map index 7cc1c62f9..e6608bf26 100644 --- a/portal-ui/build/static/js/189.108e9feb.chunk.js.map +++ b/portal-ui/build/static/js/189.c6e8473a.chunk.js.map @@ -1 +1 @@ -{"version":3,"file":"static/js/189.108e9feb.chunk.js","mappings":"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","sources":["screens/Console/Dashboard/Prometheus/types.ts","screens/Console/Dashboard/Prometheus/utils.tsx","screens/Console/Common/TabSelector/TabSelector.tsx","screens/Console/Dashboard/CommonCard.tsx","screens/Console/Dashboard/Prometheus/MergedWidgets.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/Prometheus/Widgets/SingleRepWidget.tsx","screens/Console/Dashboard/Prometheus/Widgets/SingleValueWidget.tsx","screens/Console/Dashboard/Prometheus/widgetUtils.tsx","screens/Console/Dashboard/Prometheus/ZoomWidget.tsx","screens/Console/Dashboard/Prometheus/PrDashboard.tsx","screens/Console/Dashboard/BasicDashboard/StatusCountCard.tsx","screens/Console/Dashboard/BasicDashboard/Utils.tsx","screens/Console/Dashboard/BasicDashboard/ServerInfoItem.tsx","screens/Console/Dashboard/BasicDashboard/DriveInfoItem.tsx","screens/Console/Dashboard/BasicDashboard/ServersList.tsx","screens/Console/Dashboard/BasicDashboard/CounterCard.tsx","screens/Console/Dashboard/BasicDashboard/ReportedUsage.tsx","screens/Console/Dashboard/BasicDashboard/BasicDashboard.tsx","screens/Console/Dashboard/Dashboard.tsx","screens/shared/tabs.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport {\n IBarChartConfiguration,\n IBarChartRelation,\n IDataSRep,\n ILinearGraphConfiguration,\n IPieChartConfiguration,\n} from \"./Widgets/types\";\n\nexport enum widgetType {\n singleValue = \"singleValue\",\n linearGraph = \"linearGraph\",\n areaGraph = \"areaGraph\",\n barChart = \"barChart\",\n pieChart = \"pieChart\",\n singleRep = \"singleRep\",\n simpleWidget = \"simpleWidget\",\n}\n\nexport interface IDashboardPanel {\n id: number;\n mergedPanels?: IDashboardPanel[];\n title: string;\n data?: string | object[] | IDataSRep[];\n dataOuter?: string | object[];\n type?: widgetType;\n widgetIcon?: any;\n widgetConfiguration?:\n | ILinearGraphConfiguration[]\n | IBarChartConfiguration[]\n | IPieChartConfiguration;\n color?: string;\n fillColor?: string;\n innerLabel?: string;\n labelDisplayFunction?: (value: string) => any;\n disableYAxis?: boolean;\n xAxisFormatter?: (item: string) => string;\n yAxisFormatter?: (item: string) => string;\n customStructure?: IBarChartRelation[];\n}\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport get from \"lodash/get\";\nimport { IDashboardPanel, widgetType } from \"./types\";\nimport {\n getTimeFromTimestamp,\n niceBytes,\n niceDays,\n representationNumber,\n textToRGBColor,\n units,\n} from \"../../../../common/utils\";\nimport HealIcon from \"../../../../icons/HealIcon\";\nimport DiagnosticsIcon from \"../../../../icons/DiagnosticsIcon\";\nimport { UptimeIcon } from \"../../../../icons\";\n\nconst colorsMain = [\n \"#C4D4E9\",\n \"#DCD1EE\",\n \"#D1EEE7\",\n \"#EEDED1\",\n \"#AAF38F\",\n \"#F9E6C5\",\n \"#C83B51\",\n \"#F4CECE\",\n \"#D6D6D6\",\n];\n\nconst niceDaysFromNS = (seconds: string) => {\n return niceDays(seconds, \"ns\");\n};\n\nconst roundNumber = (value: string) => {\n return parseInt(value).toString(10);\n};\n\nexport const panelsConfiguration: IDashboardPanel[] = [\n {\n id: 1,\n title: \"Uptime\",\n data: \"N/A\",\n type: widgetType.simpleWidget,\n widgetIcon: ,\n labelDisplayFunction: niceDays,\n },\n {\n id: 50,\n title: \"Capacity\",\n data: [],\n dataOuter: [{ name: \"outer\", value: 100 }],\n widgetConfiguration: {\n outerChart: {\n colorList: [\"#9c9c9c\"],\n innerRadius: 0,\n outerRadius: 0,\n startAngle: 0,\n endAngle: 0,\n },\n innerChart: {\n colorList: colorsMain,\n innerRadius: 20,\n outerRadius: 50,\n startAngle: 90,\n endAngle: -200,\n },\n },\n type: widgetType.pieChart,\n innerLabel: \"N/A\",\n labelDisplayFunction: niceBytes,\n },\n {\n id: 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: colorsMain[0],\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 },\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\n xAxisFormatter: getTimeFromTimestamp,\n },\n {\n id: 70,\n title: \"API Data Sent Rate\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.linearGraph,\n\n xAxisFormatter: getTimeFromTimestamp,\n yAxisFormatter: niceBytes,\n },\n {\n id: 17,\n title: \"Internode Data Transfer\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.linearGraph,\n\n yAxisFormatter: niceBytes,\n xAxisFormatter: getTimeFromTimestamp,\n },\n {\n id: 73,\n title: \"Node IO\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.linearGraph,\n\n yAxisFormatter: niceBytes,\n xAxisFormatter: getTimeFromTimestamp,\n },\n {\n id: 80,\n title: \"Time Since Last Heal Activity\",\n data: \"N/A\",\n type: widgetType.simpleWidget,\n widgetIcon: ,\n labelDisplayFunction: niceDaysFromNS,\n },\n {\n id: 81,\n title: \"Time Since Last Scan Activity\",\n data: \"N/A\",\n type: widgetType.simpleWidget,\n widgetIcon: ,\n labelDisplayFunction: niceDaysFromNS,\n },\n {\n id: 71,\n title: \"API Request Error Rate\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.linearGraph,\n\n xAxisFormatter: getTimeFromTimestamp,\n },\n {\n id: 76,\n title: \"Node Memory Usage\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.linearGraph,\n\n xAxisFormatter: getTimeFromTimestamp,\n yAxisFormatter: niceBytes,\n },\n {\n id: 74,\n title: \"Drive Used Capacity\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.linearGraph,\n\n xAxisFormatter: getTimeFromTimestamp,\n yAxisFormatter: niceBytes,\n },\n {\n id: 82,\n title: \"Drives Free Inodes\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.linearGraph,\n\n disableYAxis: true,\n xAxisFormatter: getTimeFromTimestamp,\n },\n {\n id: 11,\n title: \"Node Syscalls\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.linearGraph,\n yAxisFormatter: roundNumber,\n xAxisFormatter: getTimeFromTimestamp,\n },\n {\n id: 8,\n title: \"Node File Descriptors\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.linearGraph,\n yAxisFormatter: roundNumber,\n xAxisFormatter: getTimeFromTimestamp,\n },\n {\n id: 500,\n mergedPanels: [\n {\n id: 53,\n title: \"Online\",\n data: \"N/A\",\n type: widgetType.singleValue,\n },\n {\n id: 69,\n title: \"Offline\",\n data: \"N/A\",\n type: widgetType.singleValue,\n },\n ],\n title: \"Servers\",\n },\n {\n id: 501,\n mergedPanels: [\n {\n id: 9,\n title: \"Online\",\n data: \"N/A\",\n type: widgetType.singleValue,\n },\n {\n id: 78,\n title: \"Offline\",\n data: \"N/A\",\n type: widgetType.singleValue,\n },\n ],\n title: \"Drives\",\n },\n {\n id: 502,\n mergedPanels: [\n {\n id: 65,\n title: \"Upload\",\n data: \"N/A\",\n type: widgetType.singleValue,\n\n labelDisplayFunction: niceBytes,\n },\n {\n id: 64,\n title: \"Download\",\n data: \"N/A\",\n type: widgetType.singleValue,\n\n labelDisplayFunction: niceBytes,\n },\n ],\n title: \"Network\",\n },\n];\n\nconst calculateMainValue = (elements: any[], metricCalc: string) => {\n if (elements.length === 0) {\n return [\"\", \"0\"];\n }\n\n switch (metricCalc) {\n case \"mean\":\n const sumValues = elements.reduce((accumulator, currValue) => {\n return accumulator + parseFloat(currValue[1]);\n }, 0);\n\n const mean = Math.floor(sumValues / elements.length);\n\n return [\"\", mean.toString()];\n default:\n const sortResult = elements.sort(\n (value1: any[], value2: any[]) => value1[0] - value2[0]\n );\n\n return sortResult[sortResult.length - 1];\n }\n};\n\nconst constructLabelNames = (metrics: any, legendFormat: string) => {\n const keysToReplace = Object.keys(metrics);\n const expToReplace = new RegExp(`{{(${keysToReplace.join(\"|\")})}}`, \"g\");\n\n let replacedLegend = legendFormat.replace(expToReplace, (matchItem) => {\n const nwMatchItem = matchItem.replace(/({{|}})/g, \"\");\n return metrics[nwMatchItem];\n });\n\n const countVarsOpen = (replacedLegend.match(/{{/g) || []).length;\n const countVarsClose = (replacedLegend.match(/}}/g) || []).length;\n\n let cleanLegend = replacedLegend.replace(/{{(.*?)}}/g, \"\");\n\n if (\n countVarsOpen === countVarsClose &&\n countVarsOpen !== 0 &&\n countVarsClose !== 0\n ) {\n keysToReplace.forEach((element) => {\n replacedLegend = replacedLegend.replace(element, metrics[element]);\n });\n\n cleanLegend = replacedLegend;\n }\n\n // In case not all the legends were replaced, we remove the placeholders.\n return cleanLegend;\n};\n\nexport const getWidgetsWithValue = (payload: any[]): IDashboardPanel[] => {\n return panelsConfiguration.map((panelItem: IDashboardPanel) => {\n const payloadData = payload.find(\n (panelT) =>\n panelT.title.toLowerCase().trim() ===\n panelItem.title.toLowerCase().trim()\n );\n return widgetDetailsToPanel(payloadData, panelItem);\n });\n};\n\nexport const widgetDetailsToPanel = (\n payloadData: any,\n panelItem: IDashboardPanel\n) => {\n if (!payloadData) {\n return panelItem;\n }\n\n const typeOfPayload = payloadData.type;\n\n switch (panelItem.type) {\n case widgetType.singleValue:\n case widgetType.simpleWidget:\n if (typeOfPayload === \"stat\" || typeOfPayload === \"singlestat\") {\n // We sort values & get the last value\n let elements = get(payloadData, \"targets[0].result[0].values\", []);\n\n if (elements === null) {\n elements = [];\n }\n\n const metricCalc = get(\n payloadData,\n \"options.reduceOptions.calcs[0]\",\n \"lastNotNull\"\n );\n\n const valueDisplay = calculateMainValue(elements, metricCalc);\n\n const data = panelItem.labelDisplayFunction\n ? panelItem.labelDisplayFunction(valueDisplay[1])\n : valueDisplay[1];\n\n return {\n ...panelItem,\n data,\n };\n }\n break;\n case widgetType.pieChart:\n if (typeOfPayload === \"gauge\") {\n let chartSeries = get(payloadData, \"targets[0].result\", []);\n\n if (chartSeries === null) {\n chartSeries = [];\n }\n\n const metricCalc = get(\n payloadData,\n \"options.reduceOptions.calcs[0]\",\n \"lastNotNull\"\n );\n\n const valuesArray = chartSeries.length > 0 ? chartSeries[0].values : [];\n\n const totalValues = calculateMainValue(valuesArray, metricCalc);\n\n const values = chartSeries.map((elementValue: any) => {\n const values = get(elementValue, \"values\", []);\n const metricKeyItem = Object.keys(elementValue.metric);\n\n const sortResult = values.sort(\n (value1: any[], value2: any[]) => value1[0] - value2[0]\n );\n\n const metricName = elementValue.metric[metricKeyItem[0]];\n const value = sortResult[sortResult.length - 1];\n return { name: metricName, value: parseInt(value) };\n });\n\n const innerLabel = panelItem.labelDisplayFunction\n ? panelItem.labelDisplayFunction(totalValues[1])\n : totalValues[1];\n\n return {\n ...panelItem,\n data: values,\n innerLabel,\n };\n }\n break;\n case widgetType.linearGraph:\n case widgetType.areaGraph:\n if (typeOfPayload === \"graph\") {\n let targets = get(payloadData, \"targets\", []);\n if (targets === null) {\n targets = [];\n }\n\n const series: any[] = [];\n const plotValues: any[] = [];\n\n targets.forEach(\n (\n targetMaster: { legendFormat: string; result: any[] },\n index: number\n ) => {\n // Add a new serie to plot variables in case it is not from multiple values\n let results = get(targetMaster, \"result\", []);\n const legendFormat = targetMaster.legendFormat;\n if (results === null) {\n results = [];\n }\n\n results.forEach((itemVals: { metric: object; values: any[] }) => {\n // Label Creation\n const labelName = constructLabelNames(\n itemVals.metric,\n legendFormat\n );\n const keyName = `key_${index}${labelName}`;\n\n // series creation with recently created label\n series.push({\n dataKey: keyName,\n keyLabel: labelName,\n lineColor: \"\",\n fillColor: \"\",\n });\n\n // we iterate over values and create elements\n let values = get(itemVals, \"values\", []);\n if (values === null) {\n values = [];\n }\n\n values.forEach((valInfo: any[]) => {\n const itemIndex = plotValues.findIndex(\n (element) => element.name === valInfo[0]\n );\n\n // Element not exists yet\n if (itemIndex === -1) {\n let itemToPush: any = { name: valInfo[0] };\n itemToPush[keyName] = valInfo[1];\n\n plotValues.push(itemToPush);\n } else {\n plotValues[itemIndex][keyName] = valInfo[1];\n }\n });\n });\n }\n );\n\n const sortedSeries = series.sort((series1: any, series2: any) => {\n if (series1.keyLabel < series2.keyLabel) {\n return -1;\n }\n if (series1.keyLabel > series2.keyLabel) {\n return 1;\n }\n return 0;\n });\n\n const seriesWithColors = sortedSeries.map(\n (serialC: any, index: number) => {\n return {\n ...serialC,\n lineColor: colorsMain[index] || textToRGBColor(serialC.keyLabel),\n fillColor: colorsMain[index] || textToRGBColor(serialC.keyLabel),\n };\n }\n );\n\n const sortedVals = plotValues.sort(\n (value1: any, value2: any) => value1.name - value2.name\n );\n\n return {\n ...panelItem,\n widgetConfiguration: seriesWithColors,\n data: sortedVals,\n };\n }\n break;\n case widgetType.barChart:\n if (typeOfPayload === \"bargauge\") {\n let chartBars = get(payloadData, \"targets[0].result\", []);\n\n if (chartBars === null) {\n chartBars = [];\n }\n\n const sortFunction = (value1: any[], value2: any[]) =>\n value1[0] - value2[0];\n\n let values = [];\n if (panelItem.customStructure) {\n values = panelItem.customStructure.map((structureItem) => {\n const metricTake = chartBars.find((element: any) => {\n const metricKeyItem = Object.keys(element.metric);\n\n const metricName = element.metric[metricKeyItem[0]];\n\n return metricName === structureItem.originTag;\n });\n\n const elements = get(metricTake, \"values\", []);\n\n const sortResult = elements.sort(sortFunction);\n const lastValue = sortResult[sortResult.length - 1] || [\"\", \"0\"];\n\n return {\n name: structureItem.displayTag,\n a: parseInt(lastValue[1]),\n };\n });\n } else {\n // If no configuration is set, we construct the series for bar chart and return the element\n values = chartBars.map((elementValue: any) => {\n const metricKeyItem = Object.keys(elementValue.metric);\n\n const metricName = elementValue.metric[metricKeyItem[0]];\n\n const elements = get(elementValue, \"values\", []);\n\n const sortResult = elements.sort(sortFunction);\n const lastValue = sortResult[sortResult.length - 1] || [\"\", \"0\"];\n return { name: metricName, a: parseInt(lastValue[1]) };\n });\n }\n\n return {\n ...panelItem,\n data: values,\n };\n }\n break;\n case widgetType.singleRep:\n if (typeOfPayload === \"stat\") {\n // We sort values & get the last value\n let elements = get(payloadData, \"targets[0].result[0].values\", []);\n if (elements === null) {\n elements = [];\n }\n const metricCalc = get(\n payloadData,\n \"options.reduceOptions.calcs[0]\",\n \"lastNotNull\"\n );\n\n const valueDisplay = calculateMainValue(elements, metricCalc);\n\n const sortResult = elements.sort(\n (value1: any[], value2: any[]) => value1[0] - value2[0]\n );\n\n let valuesForBackground = [];\n\n if (sortResult.length === 1) {\n valuesForBackground.push({ value: 0 });\n }\n\n sortResult.forEach((eachVal: any) => {\n valuesForBackground.push({ value: parseInt(eachVal[1]) });\n });\n\n const innerLabel = panelItem.labelDisplayFunction\n ? panelItem.labelDisplayFunction(valueDisplay[1])\n : valueDisplay[1];\n\n return {\n ...panelItem,\n data: valuesForBackground,\n innerLabel,\n };\n }\n break;\n }\n\n return panelItem;\n};\n\nconst verifyNumeric = (item: string) => {\n return !isNaN(parseFloat(item));\n};\n\nexport const splitSizeMetric = (val: string) => {\n const splittedText = val.split(\" \");\n // Value is not a size metric, we return as common string\n\n const singleValue = () => {\n let vl = val;\n\n if (verifyNumeric(val)) {\n vl = representationNumber(parseFloat(val));\n }\n return {vl};\n };\n\n if (splittedText.length !== 2) {\n return singleValue();\n }\n\n if (!units.includes(splittedText[1])) {\n return singleValue();\n }\n\n return (\n \n {splittedText[0]}\n {splittedText[1]}\n \n );\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport Tabs from \"@mui/material/Tabs\";\nimport Tab from \"@mui/material/Tab\";\nimport { ITabOption } from \"./types\";\n\ninterface ITabSelector {\n selectedTab: number;\n onChange: (newValue: number) => void;\n tabOptions: ITabOption[];\n}\n\nconst tabSubStyles = makeStyles({\n root: {\n backgroundColor: \"transparent\",\n paddingTop: 0,\n paddingBottom: 0,\n fontSize: 22,\n textTransform: \"uppercase\",\n color: \"#D0D0D0\",\n },\n selected: { \"& .MuiTab-wrapper\": { color: \"#07193E\", fontWeight: \"bold\" } },\n indicator: {\n background:\n \"transparent linear-gradient(90deg, #072B4E 0%, #081C42 100%) 0% 0% no-repeat padding-box;\",\n height: 4,\n },\n scroller: {\n maxWidth: 1185,\n position: \"relative\",\n \"&::after\": {\n content: '\" \"',\n backgroundColor: \"#EEF1F4\",\n height: 4,\n width: \"100%\",\n display: \"block\",\n },\n },\n});\n\nconst TabSelector = ({ selectedTab, onChange, tabOptions }: ITabSelector) => {\n const subStyles = tabSubStyles();\n\n return (\n \n , newValue: number) => {\n onChange(newValue);\n }}\n classes={{\n indicator: subStyles.indicator,\n scroller: subStyles.scroller,\n }}\n >\n {tabOptions.map((option, index) => {\n let tabOptions: ITabOption = {\n label: option.label,\n };\n\n if (option.value) {\n tabOptions = { ...tabOptions, value: option.value };\n }\n\n if (option.disabled) {\n tabOptions = { ...tabOptions, disabled: option.disabled };\n }\n\n return (\n \n );\n })}\n \n \n );\n};\n\nexport default TabSelector;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { Card, CardHeader } from \"@mui/material\";\nimport { Link } from \"react-router-dom\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport React, { Fragment } from \"react\";\nimport { widgetCommon } from \"../Common/FormComponents/common/styleLibrary\";\n\nexport interface ISubInterface {\n message: string;\n fontWeight?: \"normal\" | \"bold\";\n}\n\ninterface ICommonCard {\n title: string;\n metricValue: any;\n metricUnit?: string;\n subMessage?: ISubInterface;\n moreLink?: string;\n rightComponent?: any;\n extraMargin?: boolean;\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...widgetCommon,\n cardRoot: {\n ...widgetCommon.singleValueContainer,\n \"&.MuiPaper-root\": {\n borderRadius: 10,\n },\n },\n metricText: {\n fontSize: 70,\n lineHeight: 1.1,\n color: \"#07193E\",\n fontWeight: \"bold\",\n },\n unitText: {\n fontSize: 10,\n color: \"#767676\",\n fontWeight: \"normal\",\n },\n subHearderContainer: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n },\n subMessage: {\n fontSize: 10,\n color: \"#767676\",\n \"&.bold\": {\n fontWeight: \"bold\",\n },\n },\n headerContainer: {\n display: \"flex\",\n justifyContent: \"space-between\",\n },\n viewAll: {\n fontSize: 10,\n color: \"#C83B51\",\n textTransform: \"capitalize\",\n\n \"& a, & a:hover, & a:visited, & a:active\": {\n color: \"#C83B51\",\n },\n },\n extraMargin: {\n margin: \"10px 20px 10px 0\",\n },\n });\n\nconst cardSubStyles = makeStyles({\n root: { backgroundColor: \"#fff\", padding: 0 },\n title: {\n ...widgetCommon.titleContainer,\n },\n content: {\n maxWidth: \"100%\",\n },\n});\n\nconst CommonCard = ({\n title,\n metricValue,\n metricUnit,\n subMessage,\n moreLink,\n rightComponent,\n extraMargin = false,\n classes,\n}: ICommonCard) => {\n const subStyles = cardSubStyles();\n const SubHeader = () => {\n return (\n \n
\n
\n
\n \n {metricValue}\n {metricUnit}\n \n
\n {subMessage && (\n \n {subMessage.message}\n
\n )}\n
\n
{rightComponent}
\n \n
\n );\n };\n\n const Header = () => {\n return (\n \n
\n {title}\n {moreLink && (\n \n \n View All\n \n \n )}\n
\n
\n );\n };\n\n return (\n \n \n {metricValue !== \"\" && (\n }\n subheader={\n \n \n \n }\n classes={{\n root: subStyles.root,\n title: subStyles.title,\n content: subStyles.content,\n }}\n />\n )}\n \n \n );\n};\n\nexport default withStyles(styles)(CommonCard);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport CommonCard from \"../CommonCard\";\n\ninterface IMergedWidgets {\n title: string;\n leftComponent: any;\n rightComponent: any;\n}\n\nconst MergedWidgets = ({\n title,\n leftComponent,\n rightComponent,\n}: IMergedWidgets) => {\n return (\n \n \n \n );\n};\n\nexport default MergedWidgets;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React 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, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport {\n Bar,\n BarChart,\n Cell,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis,\n} from \"recharts\";\nimport { CircularProgress, useMediaQuery } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport ZoomOutMapIcon from \"@mui/icons-material/ZoomOutMap\";\nimport { IBarChartConfiguration } from \"./types\";\nimport { widgetCommon } from \"../../../Common/FormComponents/common/styleLibrary\";\nimport BarChartTooltip from \"./tooltips/BarChartTooltip\";\nimport { setErrorSnackMessage } from \"../../../../../actions\";\nimport { IDashboardPanel } from \"../types\";\nimport { widgetDetailsToPanel } from \"../utils\";\nimport { ErrorResponseHandler } from \"../../../../../common/types\";\nimport api from \"../../../../../common/api\";\nimport { openZoomPage } from \"../../actions\";\nimport { useTheme } from \"@mui/styles\";\n\ninterface IBarChartWidget {\n classes: any;\n title: string;\n panelItem: IDashboardPanel;\n timeStart: any;\n timeEnd: any;\n propLoading: boolean;\n displayErrorMessage: any;\n apiPrefix: string;\n zoomActivated?: boolean;\n openZoomPage: typeof openZoomPage;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...widgetCommon,\n loadingAlign: {\n width: \"100%\",\n paddingTop: \"15px\",\n textAlign: \"center\",\n margin: \"auto\",\n },\n });\n\nconst CustomizedAxisTick = ({ y, payload }: any) => {\n return (\n \n {payload.value}\n \n );\n};\n\nconst BarChartWidget = ({\n classes,\n title,\n panelItem,\n timeStart,\n timeEnd,\n propLoading,\n displayErrorMessage,\n apiPrefix,\n zoomActivated = false,\n openZoomPage,\n}: IBarChartWidget) => {\n const [loading, setLoading] = useState(true);\n const [data, setData] = useState([]);\n const [result, setResult] = useState(null);\n\n useEffect(() => {\n if (propLoading) {\n setLoading(true);\n }\n }, [propLoading]);\n\n useEffect(() => {\n if (loading) {\n let stepCalc = 0;\n if (timeStart !== null && timeEnd !== null) {\n const secondsInPeriod = timeEnd.unix() - timeStart.unix();\n const periods = Math.floor(secondsInPeriod / 60);\n\n stepCalc = periods < 1 ? 15 : periods;\n }\n\n api\n .invoke(\n \"GET\",\n `/api/v1/${apiPrefix}/info/widgets/${\n panelItem.id\n }/?step=${stepCalc}&${\n timeStart !== null ? `&start=${timeStart.unix()}` : \"\"\n }${timeStart !== null && timeEnd !== null ? \"&\" : \"\"}${\n timeEnd !== null ? `end=${timeEnd.unix()}` : \"\"\n }`\n )\n .then((res: any) => {\n const widgetsWithValue = widgetDetailsToPanel(res, panelItem);\n setData(widgetsWithValue.data);\n setResult(widgetsWithValue);\n setLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n displayErrorMessage(err);\n setLoading(false);\n });\n }\n }, [loading, panelItem, timeEnd, timeStart, displayErrorMessage, apiPrefix]);\n\n const barChartConfiguration = result\n ? (result.widgetConfiguration as IBarChartConfiguration[])\n : [];\n\n let greatestIndex = 0;\n let currentValue = 0;\n\n if (barChartConfiguration.length === 1) {\n const dataGraph = barChartConfiguration[0];\n data.forEach((item: any, index: number) => {\n if (item[dataGraph.dataKey] > currentValue) {\n currentValue = item[dataGraph.dataKey];\n greatestIndex = index;\n }\n });\n }\n\n const theme = useTheme();\n const biggerThanMd = useMediaQuery(theme.breakpoints.up(\"md\"));\n\n return (\n
\n {!zoomActivated && (\n
\n {title}{\" \"}\n {\n openZoomPage(panelItem);\n }}\n className={classes.zoomChartIcon}\n >\n \n \n
\n )}\n {loading && (\n
\n \n
\n )}\n {!loading && (\n \n \n \n \n }\n tickLine={false}\n axisLine={false}\n width={150}\n hide={!biggerThanMd}\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\nconst connector = connect(null, {\n displayErrorMessage: setErrorSnackMessage,\n openZoomPage: openZoomPage,\n});\n\nexport default withStyles(styles)(connector(BarChartWidget));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { getTimeFromTimestamp } from \"../../../../../../common/utils\";\nimport { tooltipCommon } from \"../../../../Common/FormComponents/common/styleLibrary\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...tooltipCommon,\n });\n\nconst LineChartTooltip = ({\n active,\n payload,\n label,\n linearConfiguration,\n yAxisFormatter,\n classes,\n}: any) => {\n if (active) {\n return (\n
\n
\n {getTimeFromTimestamp(label, true)}\n
\n {payload &&\n payload.map((pl: any, index: number) => {\n return (\n \n \n
\n \n {linearConfiguration[index].keyLabel}:{\" \"}\n {yAxisFormatter(pl.value)}\n \n
\n
\n );\n })}\n \n );\n }\n\n return null;\n};\n\nexport default withStyles(styles)(LineChartTooltip);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport {\n Area,\n AreaChart,\n CartesianGrid,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis,\n} from \"recharts\";\nimport { CircularProgress, useMediaQuery } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport ZoomOutMapIcon from \"@mui/icons-material/ZoomOutMap\";\nimport { ILinearGraphConfiguration } from \"./types\";\nimport { widgetCommon } from \"../../../Common/FormComponents/common/styleLibrary\";\nimport { IDashboardPanel } from \"../types\";\nimport { setErrorSnackMessage } from \"../../../../../actions\";\nimport { widgetDetailsToPanel } from \"../utils\";\nimport { ErrorResponseHandler } from \"../../../../../common/types\";\nimport api from \"../../../../../common/api\";\nimport LineChartTooltip from \"./tooltips/LineChartTooltip\";\nimport { openZoomPage } from \"../../actions\";\nimport { useTheme } from \"@mui/styles\";\n\ninterface ILinearGraphWidget {\n classes: any;\n title: string;\n panelItem: IDashboardPanel;\n timeStart: any;\n timeEnd: any;\n propLoading: boolean;\n displayErrorMessage: any;\n apiPrefix: string;\n hideYAxis?: boolean;\n yAxisFormatter?: (item: string) => string;\n xAxisFormatter?: (item: string) => string;\n areaWidget?: boolean;\n zoomActivated?: boolean;\n openZoomPage: typeof openZoomPage;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...widgetCommon,\n containerElements: {\n display: \"flex\",\n flexDirection: \"row\",\n height: \"100%\",\n flexGrow: 1,\n },\n verticalAlignment: {\n flexDirection: \"column\",\n },\n chartCont: {\n position: \"relative\",\n height: 140,\n width: \"100%\",\n },\n legendChart: {\n display: \"flex\",\n flexDirection: \"column\",\n flex: \"0 1 auto\",\n maxHeight: 130,\n margin: 0,\n overflowY: \"auto\",\n position: \"relative\",\n textAlign: \"center\",\n width: \"100%\",\n justifyContent: \"flex-start\",\n color: \"#404143\",\n fontWeight: \"bold\",\n fontSize: 12,\n },\n loadingAlign: {\n margin: \"auto\",\n },\n });\n\nconst LinearGraphWidget = ({\n classes,\n title,\n displayErrorMessage,\n timeStart,\n timeEnd,\n propLoading,\n panelItem,\n apiPrefix,\n hideYAxis = false,\n areaWidget = false,\n yAxisFormatter = (item: string) => item,\n xAxisFormatter = (item: string) => item,\n zoomActivated = false,\n openZoomPage,\n}: ILinearGraphWidget) => {\n const [loading, setLoading] = useState(true);\n const [data, setData] = useState([]);\n const [dataMax, setDataMax] = useState(0);\n const [result, setResult] = useState(null);\n\n useEffect(() => {\n if (propLoading) {\n setLoading(true);\n }\n }, [propLoading]);\n\n useEffect(() => {\n if (loading) {\n let stepCalc = 0;\n if (timeStart !== null && timeEnd !== null) {\n const secondsInPeriod = timeEnd.unix() - timeStart.unix();\n const periods = Math.floor(secondsInPeriod / 60);\n\n stepCalc = periods < 1 ? 15 : periods;\n }\n\n api\n .invoke(\n \"GET\",\n `/api/v1/${apiPrefix}/info/widgets/${\n panelItem.id\n }/?step=${stepCalc}&${\n timeStart !== null ? `&start=${timeStart.unix()}` : \"\"\n }${timeStart !== null && timeEnd !== null ? \"&\" : \"\"}${\n timeEnd !== null ? `end=${timeEnd.unix()}` : \"\"\n }`\n )\n .then((res: any) => {\n const widgetsWithValue = widgetDetailsToPanel(res, panelItem);\n 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 displayErrorMessage(err);\n setLoading(false);\n });\n }\n }, [loading, panelItem, timeEnd, timeStart, displayErrorMessage, apiPrefix]);\n\n let intervalCount = Math.floor(data.length / 5);\n\n const linearConfiguration = result\n ? (result?.widgetConfiguration as ILinearGraphConfiguration[])\n : [];\n\n const CustomizedDot = (prop: any) => {\n const { cx, cy, index } = prop;\n\n if (index % 3 !== 0) {\n return null;\n }\n return ;\n };\n\n const theme = useTheme();\n const biggerThanMd = useMediaQuery(theme.breakpoints.up(\"md\"));\n\n return (\n
\n {!zoomActivated && (\n
\n {title}{\" \"}\n {\n openZoomPage(panelItem);\n }}\n className={classes.zoomChartIcon}\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 xAxisFormatter(value)}\n interval={intervalCount}\n tick={{\n fontSize: \"70%\",\n fontWeight: \"bold\",\n color: \"#404143\",\n }}\n tickCount={10}\n stroke={\"#082045\"}\n />\n yAxisFormatter(value)}\n tick={{\n fontSize: \"70%\",\n fontWeight: \"bold\",\n color: \"#404143\",\n }}\n stroke={\"#082045\"}\n />\n {linearConfiguration.map((section, index) => {\n return (\n : false}\n />\n );\n })}\n \n }\n wrapperStyle={{\n zIndex: 5000,\n }}\n />\n \n \n
\n {!areaWidget && (\n \n {zoomActivated && (\n \n Series\n
\n
\n
\n )}\n {biggerThanMd && (\n
\n {linearConfiguration.map((section, index) => {\n return (\n \n \n
\n {section.keyLabel}\n
\n
\n );\n })}\n \n )}\n
\n )}\n \n )}\n \n \n );\n};\n\nconst connector = connect(null, {\n displayErrorMessage: setErrorSnackMessage,\n openZoomPage: openZoomPage,\n});\n\nexport default withStyles(styles)(connector(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 { connect } from \"react-redux\";\nimport { CircularProgress } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Cell, Pie, PieChart, ResponsiveContainer } from \"recharts\";\nimport { IPieChartConfiguration } from \"./types\";\nimport { widgetCommon } from \"../../../Common/FormComponents/common/styleLibrary\";\nimport { setErrorSnackMessage } from \"../../../../../actions\";\nimport { IDashboardPanel } from \"../types\";\nimport { splitSizeMetric, widgetDetailsToPanel } from \"../utils\";\nimport { ErrorResponseHandler } from \"../../../../../common/types\";\nimport get from \"lodash/get\";\nimport api from \"../../../../../common/api\";\n\ninterface IPieChartWidget {\n classes: any;\n title: string;\n panelItem: IDashboardPanel;\n timeStart: any;\n timeEnd: any;\n propLoading: boolean;\n displayErrorMessage: any;\n apiPrefix: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...widgetCommon,\n loadingAlign: {\n width: \"100%\",\n paddingTop: \"15px\",\n textAlign: \"center\",\n margin: \"auto\",\n },\n pieChartLabel: {\n fontSize: 60,\n color: \"#07193E\",\n fontWeight: \"bold\",\n width: \"100%\",\n \"& .unitText\": {\n color: \"#767676\",\n fontSize: 12,\n },\n },\n chartContainer: {\n width: \"100%\",\n height: 140,\n },\n });\n\nconst PieChartWidget = ({\n classes,\n title,\n panelItem,\n timeStart,\n timeEnd,\n propLoading,\n displayErrorMessage,\n apiPrefix,\n}: IPieChartWidget) => {\n const [loading, setLoading] = useState(true);\n const [dataInner, setDataInner] = useState([]);\n const [dataOuter, setDataOuter] = useState([]);\n const [result, setResult] = useState(null);\n\n useEffect(() => {\n if (propLoading) {\n setLoading(true);\n }\n }, [propLoading]);\n\n useEffect(() => {\n if (loading) {\n let stepCalc = 0;\n if (timeStart !== null && timeEnd !== null) {\n const secondsInPeriod = timeEnd.unix() - timeStart.unix();\n const periods = Math.floor(secondsInPeriod / 60);\n\n stepCalc = periods < 1 ? 15 : periods;\n }\n\n api\n .invoke(\n \"GET\",\n `/api/v1/${apiPrefix}/info/widgets/${\n panelItem.id\n }/?step=${stepCalc}&${\n timeStart !== null ? `&start=${timeStart.unix()}` : \"\"\n }${timeStart !== null && timeEnd !== null ? \"&\" : \"\"}${\n timeEnd !== null ? `end=${timeEnd.unix()}` : \"\"\n }`\n )\n .then((res: any) => {\n const widgetsWithValue = widgetDetailsToPanel(res, panelItem);\n setDataInner(widgetsWithValue.data);\n setDataOuter(widgetsWithValue.dataOuter as object[]);\n setResult(widgetsWithValue);\n setLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n displayErrorMessage(err);\n setLoading(false);\n });\n }\n }, [loading, panelItem, timeEnd, timeStart, displayErrorMessage, apiPrefix]);\n\n const pieChartConfiguration = result\n ? (result.widgetConfiguration as IPieChartConfiguration)\n : [];\n const middleLabel = result?.innerLabel;\n\n const innerColors = get(pieChartConfiguration, \"innerChart.colorList\", []);\n const outerColors = get(pieChartConfiguration, \"outerChart.colorList\", []);\n\n return (\n
\n
{title}
\n {loading && (\n
\n \n
\n )}\n {!loading && (\n
\n \n {middleLabel && splitSizeMetric(middleLabel)}\n \n
\n \n \n {dataOuter && (\n \n {dataOuter.map((entry, index) => (\n \n ))}\n \n )}\n {dataInner && (\n \n {dataInner.map((entry, index) => {\n return (\n \n );\n })}\n \n )}\n \n \n
\n
\n )}\n
\n );\n};\n\nconst connector = connect(null, {\n displayErrorMessage: setErrorSnackMessage,\n});\n\nexport default withStyles(styles)(connector(PieChartWidget));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { CircularProgress } from \"@mui/material\";\nimport api from \"../../../../../common/api\";\nimport { widgetDetailsToPanel } from \"../utils\";\nimport { IDashboardPanel } from \"../types\";\nimport { setErrorSnackMessage } from \"../../../../../actions\";\nimport { ErrorResponseHandler } from \"../../../../../common/types\";\n\ninterface ISimpleWidget {\n classes: any;\n iconWidget: any;\n title: string;\n panelItem: IDashboardPanel;\n timeStart: any;\n timeEnd: any;\n propLoading: boolean;\n displayErrorMessage: any;\n apiPrefix: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n mainWidgetContainer: {\n display: \"inline-flex\",\n color: \"#072A4D\",\n alignItems: \"center\",\n },\n icon: {\n color: \"#072A4D\",\n fill: \"#072A4D\",\n marginRight: 5,\n marginLeft: 12,\n },\n widgetLabel: {\n fontWeight: \"bold\",\n textTransform: \"uppercase\",\n marginRight: 10,\n },\n widgetValue: {\n marginRight: 25,\n },\n });\n\nconst SimpleWidget = ({\n classes,\n iconWidget,\n title,\n panelItem,\n timeStart,\n timeEnd,\n propLoading,\n displayErrorMessage,\n apiPrefix,\n}: ISimpleWidget) => {\n const [loading, setLoading] = useState(true);\n const [data, setData] = useState(\"\");\n\n useEffect(() => {\n if (propLoading) {\n setLoading(true);\n }\n }, [propLoading]);\n\n useEffect(() => {\n if (loading) {\n let stepCalc = 0;\n if (timeStart !== null && timeEnd !== null) {\n const secondsInPeriod = timeEnd.unix() - timeStart.unix();\n const periods = Math.floor(secondsInPeriod / 60);\n\n stepCalc = periods < 1 ? 15 : periods;\n }\n\n api\n .invoke(\n \"GET\",\n `/api/v1/${apiPrefix}/info/widgets/${\n panelItem.id\n }/?step=${stepCalc}&${\n timeStart !== null ? `&start=${timeStart.unix()}` : \"\"\n }${timeStart !== null && timeEnd !== null ? \"&\" : \"\"}${\n timeEnd !== null ? `end=${timeEnd.unix()}` : \"\"\n }`\n )\n .then((res: any) => {\n const widgetsWithValue = widgetDetailsToPanel(res, panelItem);\n setData(widgetsWithValue.data);\n setLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n displayErrorMessage(err);\n setLoading(false);\n });\n }\n }, [loading, panelItem, timeEnd, timeStart, displayErrorMessage, apiPrefix]);\n\n return (\n \n {loading && (\n
\n \n
\n )}\n {!loading && (\n \n {iconWidget ? iconWidget : null}\n {title}: \n {data}\n \n )}\n
\n );\n};\n\nconst connector = connect(null, {\n displayErrorMessage: setErrorSnackMessage,\n});\n\nexport default withStyles(styles)(connector(SimpleWidget));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport { Area, AreaChart, ResponsiveContainer, YAxis } from \"recharts\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { widgetCommon } from \"../../../Common/FormComponents/common/styleLibrary\";\nimport { IDataSRep } from \"./types\";\nimport { connect } from \"react-redux\";\nimport { setErrorSnackMessage } from \"../../../../../actions\";\nimport { IDashboardPanel } from \"../types\";\nimport { widgetDetailsToPanel } from \"../utils\";\nimport { CircularProgress } from \"@mui/material\";\nimport { ErrorResponseHandler } from \"../../../../../common/types\";\nimport api from \"../../../../../common/api\";\nimport { representationNumber } from \"../../../../../common/utils\";\n\ninterface ISingleRepWidget {\n classes: any;\n title: string;\n panelItem: IDashboardPanel;\n timeStart: any;\n timeEnd: any;\n propLoading: boolean;\n displayErrorMessage: any;\n color: string;\n fillColor: string;\n apiPrefix: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...widgetCommon,\n loadingAlign: {\n width: \"100%\",\n paddingTop: \"5px\",\n textAlign: \"center\",\n margin: \"auto\",\n },\n });\n\nconst SingleRepWidget = ({\n classes,\n title,\n panelItem,\n timeStart,\n timeEnd,\n propLoading,\n displayErrorMessage,\n color,\n fillColor,\n apiPrefix,\n}: ISingleRepWidget) => {\n const [loading, setLoading] = useState(true);\n const [data, setData] = useState([]);\n const [result, setResult] = useState(null);\n\n useEffect(() => {\n if (propLoading) {\n setLoading(true);\n }\n }, [propLoading]);\n\n useEffect(() => {\n if (loading) {\n let stepCalc = 0;\n if (timeStart !== null && timeEnd !== null) {\n const secondsInPeriod = timeEnd.unix() - timeStart.unix();\n const periods = Math.floor(secondsInPeriod / 60);\n\n stepCalc = periods < 1 ? 15 : periods;\n }\n\n api\n .invoke(\n \"GET\",\n `/api/v1/${apiPrefix}/info/widgets/${\n panelItem.id\n }/?step=${stepCalc}&${\n timeStart !== null ? `&start=${timeStart.unix()}` : \"\"\n }${timeStart !== null && timeEnd !== null ? \"&\" : \"\"}${\n timeEnd !== null ? `end=${timeEnd.unix()}` : \"\"\n }`\n )\n .then((res: any) => {\n const widgetsWithValue = widgetDetailsToPanel(res, panelItem);\n setResult(widgetsWithValue);\n setData(widgetsWithValue.data);\n setLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n displayErrorMessage(err);\n setLoading(false);\n });\n }\n }, [loading, panelItem, timeEnd, timeStart, displayErrorMessage, apiPrefix]);\n const gradientID = `colorGradient-${title.split(\" \").join(\"-\")}`;\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 return (\n
\n
{title}
\n {loading && (\n
\n \n
\n )}\n {!loading && (\n
\n \n \n \n \n \n \n \n \n dataMax * 2]}\n hide={true}\n />\n \n \n {result ? repNumber : \"\"}\n \n \n \n
\n )}\n
\n );\n};\n\nconst connector = connect(null, {\n displayErrorMessage: setErrorSnackMessage,\n});\n\nexport default withStyles(styles)(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 { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { widgetCommon } from \"../../../Common/FormComponents/common/styleLibrary\";\nimport api from \"../../../../../common/api\";\nimport { splitSizeMetric, widgetDetailsToPanel } from \"../utils\";\nimport { IDashboardPanel } from \"../types\";\nimport { connect } from \"react-redux\";\nimport { setErrorSnackMessage } from \"../../../../../actions\";\nimport { CircularProgress } from \"@mui/material\";\nimport { ErrorResponseHandler } from \"../../../../../common/types\";\n\ninterface ISingleValueWidget {\n title: string;\n panelItem: IDashboardPanel;\n timeStart: any;\n timeEnd: any;\n propLoading: boolean;\n displayErrorMessage: any;\n classes: any;\n apiPrefix: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...widgetCommon,\n loadingAlign: {\n width: \"100%\",\n textAlign: \"center\",\n margin: \"auto\",\n },\n metric: {\n fontSize: 60,\n lineHeight: 1,\n color: \"#07193E\",\n fontWeight: 700,\n },\n titleElement: {\n fontSize: 10,\n color: \"#767676\",\n fontWeight: 700,\n },\n containerAlignment: {\n display: \"flex\",\n height: 140,\n flexDirection: \"column\",\n justifyContent: \"center\",\n \"& .unitText\": {\n color: \"#767676\",\n fontSize: 12,\n },\n },\n });\n\nconst SingleValueWidget = ({\n title,\n panelItem,\n timeStart,\n timeEnd,\n propLoading,\n displayErrorMessage,\n classes,\n apiPrefix,\n}: ISingleValueWidget) => {\n const [loading, setLoading] = useState(true);\n const [data, setData] = useState(\"\");\n\n useEffect(() => {\n if (propLoading) {\n setLoading(true);\n }\n }, [propLoading]);\n\n useEffect(() => {\n if (loading) {\n let stepCalc = 0;\n if (timeStart !== null && timeEnd !== null) {\n const secondsInPeriod = timeEnd.unix() - timeStart.unix();\n const periods = Math.floor(secondsInPeriod / 60);\n\n stepCalc = periods < 1 ? 15 : periods;\n }\n\n api\n .invoke(\n \"GET\",\n `/api/v1/${apiPrefix}/info/widgets/${\n panelItem.id\n }/?step=${stepCalc}&${\n timeStart !== null ? `&start=${timeStart.unix()}` : \"\"\n }${timeStart !== null && timeEnd !== null ? \"&\" : \"\"}${\n timeEnd !== null ? `end=${timeEnd.unix()}` : \"\"\n }`\n )\n .then((res: any) => {\n const widgetsWithValue = widgetDetailsToPanel(res, panelItem);\n setData(widgetsWithValue.data);\n setLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n displayErrorMessage(err);\n setLoading(false);\n });\n }\n }, [loading, panelItem, timeEnd, timeStart, displayErrorMessage, apiPrefix]);\n return (\n
\n {loading && (\n
\n \n
\n )}\n {!loading && (\n \n
{splitSizeMetric(data)}
\n
{title}
\n
\n )}\n
\n );\n};\n\nconst connector = connect(null, {\n displayErrorMessage: setErrorSnackMessage,\n});\n\nexport default withStyles(styles)(connector(SingleValueWidget));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React 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\";\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 return (\n \n );\n case widgetType.pieChart:\n return (\n \n );\n case widgetType.linearGraph:\n case widgetType.areaGraph:\n return (\n \n );\n case widgetType.barChart:\n return (\n \n );\n case widgetType.singleRep:\n const fillColor = value.fillColor ? value.fillColor : value.color;\n return (\n \n );\n default:\n return null;\n }\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { connect } from \"react-redux\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport { IDashboardPanel } from \"./types\";\nimport { componentToUse } from \"./widgetUtils\";\nimport { closeZoomPage } from \"../actions\";\n\ninterface IZoomWidget {\n widgetRender: number;\n value: IDashboardPanel | null;\n modalOpen: boolean;\n timeStart: any;\n timeEnd: any;\n apiPrefix: string;\n onCloseAction: typeof closeZoomPage;\n}\nconst ZoomWidget = ({\n value,\n modalOpen,\n timeStart,\n timeEnd,\n apiPrefix,\n onCloseAction,\n}: IZoomWidget) => {\n if (!value) {\n return null;\n }\n\n return (\n {\n onCloseAction();\n }}\n modalOpen={modalOpen}\n wideLimit={false}\n noContentPadding\n >\n \n {componentToUse(value, timeStart, timeEnd, true, apiPrefix, true)}\n \n \n );\n};\n\nconst connector = connect(null, {\n onCloseAction: closeZoomPage,\n});\n\nexport default connector(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, useCallback, useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport Grid from \"@mui/material/Grid\";\n\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { GridSize, useMediaQuery } from \"@mui/material\";\nimport {\n actionsTray,\n widgetContainerCommon,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport { IDashboardPanel } from \"./types\";\nimport { getWidgetsWithValue, panelsConfiguration } from \"./utils\";\nimport { TabPanel } from \"../../../shared/tabs\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport { setErrorSnackMessage } from \"../../../../actions\";\nimport api from \"../../../../common/api\";\n\nimport TabSelector from \"../../Common/TabSelector/TabSelector\";\nimport MergedWidgets from \"./MergedWidgets\";\nimport { componentToUse } from \"./widgetUtils\";\nimport ZoomWidget from \"./ZoomWidget\";\nimport { AppState } from \"../../../../store\";\nimport DateRangeSelector from \"../../Common/FormComponents/DateRangeSelector/DateRangeSelector\";\nimport { useTheme } from \"@mui/styles\";\n\ninterface IPrDashboard {\n classes: any;\n displayErrorMessage: typeof setErrorSnackMessage;\n apiPrefix?: string;\n zoomOpen: boolean;\n zoomWidget: null | IDashboardPanel;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...actionsTray,\n ...widgetContainerCommon,\n dashboardRow: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"flex-start\",\n flexWrap: \"wrap\",\n maxWidth: 1180,\n },\n });\n\nconst PrDashboard = ({\n classes,\n displayErrorMessage,\n apiPrefix = \"admin\",\n zoomOpen,\n zoomWidget,\n}: IPrDashboard) => {\n const [timeStart, setTimeStart] = useState(null);\n const [timeEnd, setTimeEnd] = useState(null);\n const [loading, setLoading] = useState(true);\n const [panelInformation, setPanelInformation] =\n useState(panelsConfiguration);\n const [curTab, setCurTab] = useState(0);\n\n const theme = useTheme();\n const biggerThanMd = useMediaQuery(theme.breakpoints.up(\"md\"));\n\n const panels = useCallback(\n (tabName: string, filterPanels?: number[][] | null) => {\n return filterPanels?.map((panelLine, indexLine) => {\n const totalPanelsContained = panelLine.length;\n\n let perc = Math.floor(12 / totalPanelsContained);\n\n if (!biggerThanMd && totalPanelsContained >= 4) {\n perc = 6;\n } else if (!biggerThanMd && totalPanelsContained >= 3) {\n perc = 12;\n }\n\n if (perc < 1) {\n perc = 1;\n } else if (perc > 12) {\n perc = 12;\n }\n\n return (\n \n {panelLine.map((panelInline, indexPanel) => {\n const panelInfo = panelInformation.find(\n (panel) => panel.id === panelInline\n );\n\n return (\n \n \n {panelInfo ? (\n \n {panelInfo.mergedPanels ? (\n \n \n \n ) : (\n componentToUse(\n panelInfo,\n timeStart,\n timeEnd,\n loading,\n apiPrefix\n )\n )}\n \n ) : null}\n \n \n );\n })}\n \n );\n });\n },\n [\n timeStart,\n timeEnd,\n loading,\n apiPrefix,\n classes.dashboardRow,\n classes.widgetPanelDelimiter,\n panelInformation,\n biggerThanMd,\n ]\n );\n\n const fetchUsage = useCallback(() => {\n let stepCalc = 0;\n\n if (timeStart !== null && timeEnd !== null) {\n const secondsInPeriod = timeEnd.unix() - timeStart.unix();\n const periods = Math.floor(secondsInPeriod / 60);\n\n stepCalc = periods < 1 ? 15 : periods;\n }\n\n api\n .invoke(\n \"GET\",\n `/api/v1/${apiPrefix}/info?step=${stepCalc}&${\n timeStart !== null ? `&start=${timeStart.unix()}` : \"\"\n }${timeStart !== null && timeEnd !== null ? \"&\" : \"\"}${\n timeEnd !== null ? `end=${timeEnd.unix()}` : \"\"\n }`\n )\n .then((res: any) => {\n if (res.widgets) {\n const widgetsWithValue = getWidgetsWithValue(res.widgets);\n setPanelInformation(widgetsWithValue);\n } else {\n displayErrorMessage({\n errorMessage:\n \"Widget information could not be retrieved at this time. Please try again\",\n detailedError: \"\",\n });\n }\n\n setLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n displayErrorMessage(err);\n setLoading(false);\n });\n }, [timeStart, timeEnd, displayErrorMessage, apiPrefix]);\n\n const triggerLoad = () => {\n setLoading(true);\n };\n\n useEffect(() => {\n if (loading) {\n fetchUsage();\n }\n }, [loading, fetchUsage]);\n\n const summaryPanels = [\n [66, 44, 500, 501],\n [80, 81, 1],\n [68, 52],\n [63, 70],\n ];\n\n if (biggerThanMd) {\n summaryPanels.splice(1, 0, [50, 502]);\n } else {\n summaryPanels.splice(1, 0, [50]);\n summaryPanels.splice(1, 0, [502]);\n }\n\n const resourcesPanels = [\n [76, 77],\n [11, 8],\n [82, 74],\n ];\n const requestsPanels = [[60], [71, 17], [73]];\n\n return (\n \n {zoomOpen && (\n \n )}\n \n \n {\n setCurTab(newValue);\n }}\n tabOptions={[\n { label: \"Usage\" },\n { label: \"Traffic\" },\n { label: \"Resources\" },\n ]}\n />\n \n \n \n {panels(\"Summary\", summaryPanels)}\n \n \n {panels(\"Traffic\", requestsPanels)}\n \n \n {panels(\"Resources\", resourcesPanels)}\n \n \n \n );\n};\n\nconst mapState = (state: AppState) => ({\n zoomOpen: state.dashboard.zoom.openZoom,\n zoomWidget: state.dashboard.zoom.widgetRender,\n});\n\nconst connector = connect(mapState, {\n displayErrorMessage: setErrorSnackMessage,\n});\n\nexport default withStyles(styles)(connector(PrDashboard));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box } from \"@mui/material\";\nimport { CircleIcon } from \"../../../../icons\";\n\nexport const StatusCountCard = ({\n onlineCount = 0,\n offlineCount = 0,\n icon = null,\n label = \"\",\n}: {\n icon: any;\n onlineCount: number;\n offlineCount: number;\n label: string;\n}) => {\n return (\n \n \n \n \n {label}\n \n\n \n \n \n
Online
\n
\n {onlineCount}\n \n\n \n \n
Offline
\n
\n {offlineCount}\n \n \n \n \n {icon}\n \n \n \n );\n};\n\nexport default StatusCountCard;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nexport const STATUS_COLORS = {\n RED: \"#C83B51\",\n GREEN: \"#4CCB92\",\n YELLOW: \"#E7A219\",\n};\n\nexport const getDriveStatusColor = (\n activeDisks: number,\n totalDrives: number\n) => {\n if (activeDisks <= totalDrives / 2) {\n return STATUS_COLORS.RED;\n }\n if (totalDrives !== 2 && activeDisks === totalDrives / 2 + 1) {\n return STATUS_COLORS.YELLOW;\n }\n if (activeDisks === totalDrives) {\n return STATUS_COLORS.GREEN;\n }\n};\n\nexport const serverStatusColor = (health_status: string) => {\n switch (health_status) {\n case \"offline\":\n return STATUS_COLORS.RED;\n case \"online\":\n return STATUS_COLORS.GREEN;\n default:\n return STATUS_COLORS.YELLOW;\n }\n};\nexport const getNetworkStatusColor = (\n activeNetwork: number,\n networkTotal: number\n) => {\n if (activeNetwork <= networkTotal / 2) {\n return STATUS_COLORS.RED;\n }\n if (activeNetwork === networkTotal / 2 + 1) {\n return STATUS_COLORS.YELLOW;\n }\n if (activeNetwork === networkTotal) {\n return STATUS_COLORS.GREEN;\n }\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { ServerInfo } from \"../types\";\nimport { niceDays } from \"../../../../common/utils\";\nimport { Box } from \"@mui/material\";\nimport {\n CircleIcon,\n DrivesIcon,\n UptimeIcon,\n VersionIcon,\n WarpIcon,\n} from \"../../../../icons\";\nimport get from \"lodash/get\";\nimport { commonDashboardInfocard } from \"../../Common/FormComponents/common/styleLibrary\";\nimport {\n getDriveStatusColor,\n getNetworkStatusColor,\n serverStatusColor,\n} from \"./Utils\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...commonDashboardInfocard,\n });\n\ninterface ICardProps {\n classes?: any;\n server: ServerInfo;\n index: number;\n}\n\nconst ServerStatItem = ({\n label = \"\",\n value = \"\",\n statusColor = \"\",\n hasStatus = false,\n icon = null,\n}: {\n label?: string;\n value?: any;\n hasStatus?: boolean;\n statusColor: string | undefined;\n icon?: any;\n}) => {\n return (\n \n \n {icon}\n {hasStatus ? (\n \n \n \n ) : (\n \n )}\n \n \n
{label}
\n
{value}
\n \n \n );\n};\n\nconst ServerInfoItem = ({ classes = {}, server, index }: ICardProps) => {\n const networkKeys = Object.keys(get(server, \"network\", {}));\n const networkTotal = networkKeys.length;\n const totalDrives = server.drives ? server.drives.length : 0;\n const activeNetwork = networkKeys.reduce((acc: number, currValue: string) => {\n const item = server.network[currValue];\n if (item === \"online\") {\n return acc + 1;\n }\n return acc;\n }, 0);\n const activeDisks = server.drives\n ? server.drives.filter((element) => element.state === \"ok\").length\n : 0;\n return (\n \n \n {server?.state && (\n \n \n \n )}\n \n {server.endpoint || \"\"}\n \n \n \n }\n hasStatus={true}\n value={`${activeDisks}/${totalDrives}`}\n />\n }\n hasStatus={true}\n value={`${activeNetwork}/${networkTotal}`}\n />\n\n }\n value={server?.uptime ? niceDays(server.uptime) : \"N/A\"}\n />\n\n }\n value={\n \n {server.version ? server.version : \"N/A\"}\n \n }\n />\n \n \n );\n};\nexport default withStyles(styles)(ServerInfoItem);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { IDriveInfo } from \"../types\";\nimport { niceBytes } from \"../../../../common/utils\";\nimport { Box } from \"@mui/material\";\nimport { CircleIcon, DrivesIcon } from \"../../../../icons\";\nimport { commonDashboardInfocard } from \"../../Common/FormComponents/common/styleLibrary\";\nimport { STATUS_COLORS } from \"./Utils\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...commonDashboardInfocard,\n });\n\ninterface ICardProps {\n classes?: any;\n drive: IDriveInfo;\n}\n\nconst driveStatusColor = (health_status: string) => {\n switch (health_status) {\n case \"offline\":\n return STATUS_COLORS.RED;\n case \"ok\":\n return STATUS_COLORS.GREEN;\n default:\n return STATUS_COLORS.YELLOW;\n }\n};\n\nconst DriveInfoItem = ({ classes, drive }: ICardProps) => {\n return (\n \n \n \n \n\n \n \n {drive.state && }\n
{drive.endpoint || \"\"}
\n \n\n \n \n \n
\n {niceBytes(drive.totalSpace ? drive.totalSpace.toString() : \"0\")}\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\nexport default withStyles(styles)(DriveInfoItem);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport ListSubheader from \"@mui/material/ListSubheader\";\nimport List from \"@mui/material/List\";\nimport ListItemButton from \"@mui/material/ListItemButton\";\nimport Collapse from \"@mui/material/Collapse\";\nimport ExpandLess from \"@mui/icons-material/ExpandLess\";\nimport ExpandMore from \"@mui/icons-material/ExpandMore\";\nimport { ServerInfo } from \"../types\";\nimport ServerInfoItem from \"./ServerInfoItem\";\nimport { Box } from \"@mui/material\";\nimport DriveInfoItem from \"./DriveInfoItem\";\n\nconst ServersList = ({ data }: { data: ServerInfo[] }) => {\n const [expanded, setExpanded] = React.useState(\"\");\n\n const handleClick = (key: string) => {\n setExpanded(key);\n };\n\n return (\n \n Servers ({data.length})\n \n }\n >\n {data.map((serverInfo, index) => {\n const key = `${serverInfo.endpoint}-${index}`;\n const isExpanded = expanded === key;\n return (\n \n {\n if (!isExpanded) {\n handleClick(key);\n } else {\n handleClick(\"\");\n }\n }}\n className={isExpanded ? \"expanded\" : \"\"}\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n borderBottom: \"1px solid #eaeaea\",\n \"&:hover\": {\n background: \"#F8F8F8\",\n },\n \"&.expanded\": {\n borderBottom: \"none\",\n },\n }}\n >\n \n \n {isExpanded ? : }\n \n \n {isExpanded ? (\n \n \n Drives ({serverInfo.drives.length})\n \n\n \n {serverInfo.drives.map((driveInfo, index) => {\n return (\n \n );\n })}\n \n \n ) : null}\n \n );\n })}\n \n );\n};\n\nexport default ServersList;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { Box, Tooltip } from \"@mui/material\";\nimport React from \"react\";\n\nconst CounterCard = ({\n counterValue,\n label = \"\",\n icon = null,\n}: {\n counterValue: string | number;\n label?: any;\n icon?: any;\n}) => {\n return (\n \n \n \n \n {label}\n \n\n \n \n {counterValue}\n \n \n \n \n {icon}\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 { ReportedUsageIcon } from \"../../../../icons\";\nimport { Box, Tooltip } from \"@mui/material\";\nimport React from \"react\";\n\nconst ReportedUsage = ({\n usageValue,\n total,\n unit,\n}: {\n usageValue: string;\n total: number | string;\n unit: string;\n}) => {\n return (\n \n
\n Reported Usage \n
\n\n \n \n {total}\n \n \n \n \n );\n};\n\nexport default ReportedUsage;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { Box } from \"@mui/material\";\nimport {\n BucketsIcon,\n DrivesIcon,\n PrometheusErrorIcon,\n ServersIcon,\n TotalObjectsIcon,\n} from \"../../../../icons\";\nimport HelpBox from \"../../../../common/HelpBox\";\nimport { calculateBytes, representationNumber } from \"../../../../common/utils\";\nimport { IDriveInfo, Usage } from \"../types\";\nimport StatusCountCard from \"./StatusCountCard\";\nimport groupBy from \"lodash/groupBy\";\nimport ServersList from \"./ServersList\";\nimport CounterCard from \"./CounterCard\";\nimport ReportedUsage from \"./ReportedUsage\";\n\nconst BoxItem = ({\n children,\n background = \"#ffffff\",\n}: {\n children: any;\n background?: string;\n}) => {\n return (\n \n {children}\n \n );\n};\n\ninterface IDashboardProps {\n usage: Usage | null;\n}\n\nconst getServersList = (usage: Usage | null) => {\n if (usage !== null) {\n return usage.servers.sort(function (a, b) {\n const nameA = a.endpoint.toLowerCase();\n const nameB = b.endpoint.toLowerCase();\n if (nameA < nameB) {\n return -1;\n }\n if (nameA > nameB) {\n return 1;\n }\n return 0;\n });\n }\n\n return [];\n};\n\nconst prettyUsage = (usage: string | undefined) => {\n if (usage === undefined) {\n return { total: \"0\", unit: \"Mi\" };\n }\n\n return calculateBytes(usage);\n};\n\nconst BasicDashboard = ({ usage }: IDashboardProps) => {\n const usageValue = usage && usage.usage ? usage.usage.toString() : \"0\";\n const usageToRepresent = prettyUsage(usageValue);\n\n const serverList = getServersList(usage || null);\n\n let allDrivesArray: IDriveInfo[] = [];\n\n serverList.forEach((server) => {\n const drivesInput = server.drives.map((drive) => {\n return drive;\n });\n\n allDrivesArray = [...allDrivesArray, ...drivesInput];\n });\n\n const serversGroup = groupBy(serverList, \"state\");\n const { offline: offlineServers = [], online: onlineServers = [] } =\n serversGroup;\n const drivesGroup = groupBy(allDrivesArray, \"state\");\n const { offline: offlineDrives = [], ok: onlineDrives = [] } = drivesGroup;\n\n return (\n \n \n \n {usage?.prometheusNotReady && (\n }\n title={\"We can't retrieve advanced metrics at this time\"}\n help={\n \n MinIO Dashboard will display basic metrics as we couldn't\n connect to Prometheus successfully.\n

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