@kuadrant/kuadrant-backstage-plugin-frontend 0.4.0-dev2-3c8348b → 0.4.0-dev3-0da0695

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (531) hide show
  1. package/dist/.config-schema.json +46 -46
  2. package/dist/@mf-types.zip +0 -0
  3. package/dist/mf-manifest.json +1 -1
  4. package/dist/mf-stats.json +1 -1
  5. package/dist/remoteEntry.js +2 -2
  6. package/dist/static/{runtime.4487ce49.js → runtime.70b7537d.js} +3 -3
  7. package/dist/static/{runtime.4487ce49.js.map → runtime.70b7537d.js.map} +1 -1
  8. package/dist/static/{vendor.4487ce49.js → vendor.70b7537d.js} +1 -1
  9. package/dist/static/{vendor.4487ce49.js.map → vendor.70b7537d.js.map} +1 -1
  10. package/dist-scalprum/configSchema.json +27 -0
  11. package/dist-scalprum/kuadrant.kuadrant-backstage-plugin-frontend.44bacdfb1c0370d4879d.js +2 -0
  12. package/dist-scalprum/kuadrant.kuadrant-backstage-plugin-frontend.44bacdfb1c0370d4879d.js.map +1 -0
  13. package/dist-scalprum/plugin-manifest.json +11 -0
  14. package/dist-scalprum/static/1037.30050946.chunk.js +2 -0
  15. package/dist-scalprum/static/1037.30050946.chunk.js.map +1 -0
  16. package/dist-scalprum/static/1340.8cd13740.chunk.js +3 -0
  17. package/dist-scalprum/static/1340.8cd13740.chunk.js.LICENSE.txt +18 -0
  18. package/dist-scalprum/static/1340.8cd13740.chunk.js.map +1 -0
  19. package/dist-scalprum/static/1719.e8f111d8.chunk.js +2 -0
  20. package/dist-scalprum/static/1719.e8f111d8.chunk.js.map +1 -0
  21. package/dist-scalprum/static/1931.4bfc9098.chunk.js +2 -0
  22. package/dist-scalprum/static/1931.4bfc9098.chunk.js.map +1 -0
  23. package/dist-scalprum/static/20.1b5831f0.chunk.js +3 -0
  24. package/dist-scalprum/static/20.1b5831f0.chunk.js.LICENSE.txt +14 -0
  25. package/dist-scalprum/static/20.1b5831f0.chunk.js.map +1 -0
  26. package/dist-scalprum/static/2251.ff998bd6.chunk.js +2 -0
  27. package/dist-scalprum/static/2251.ff998bd6.chunk.js.map +1 -0
  28. package/dist-scalprum/static/2769.3ab6acb7.chunk.js +2 -0
  29. package/dist-scalprum/static/2769.3ab6acb7.chunk.js.map +1 -0
  30. package/dist-scalprum/static/2821.1e3d6dc4.chunk.js +2 -0
  31. package/dist-scalprum/static/2821.1e3d6dc4.chunk.js.map +1 -0
  32. package/dist-scalprum/static/2822.ce006976.chunk.js +2 -0
  33. package/dist-scalprum/static/2822.ce006976.chunk.js.map +1 -0
  34. package/dist-scalprum/static/2952.60bab809.chunk.js +2 -0
  35. package/dist-scalprum/static/2952.60bab809.chunk.js.map +1 -0
  36. package/dist-scalprum/static/2967.06a5593b.chunk.js +2 -0
  37. package/dist-scalprum/static/2967.06a5593b.chunk.js.map +1 -0
  38. package/dist-scalprum/static/3007.7481e781.chunk.js +2 -0
  39. package/dist-scalprum/static/3007.7481e781.chunk.js.map +1 -0
  40. package/dist-scalprum/static/3015.2dad3eec.chunk.js +3 -0
  41. package/dist-scalprum/static/3015.2dad3eec.chunk.js.LICENSE.txt +9 -0
  42. package/dist-scalprum/static/3015.2dad3eec.chunk.js.map +1 -0
  43. package/dist-scalprum/static/3144.cbed804d.chunk.js +3 -0
  44. package/dist-scalprum/static/3144.cbed804d.chunk.js.LICENSE.txt +19 -0
  45. package/dist-scalprum/static/3144.cbed804d.chunk.js.map +1 -0
  46. package/dist-scalprum/static/327.a377854c.chunk.js +2 -0
  47. package/dist-scalprum/static/327.a377854c.chunk.js.map +1 -0
  48. package/dist-scalprum/static/3657.68703526.chunk.js +3 -0
  49. package/dist-scalprum/static/3657.68703526.chunk.js.LICENSE.txt +8 -0
  50. package/dist-scalprum/static/3657.68703526.chunk.js.map +1 -0
  51. package/dist-scalprum/static/3658.8a3da139.chunk.js +2 -0
  52. package/dist-scalprum/static/3658.8a3da139.chunk.js.map +1 -0
  53. package/dist-scalprum/static/3897.53c31fae.chunk.js +2 -0
  54. package/dist-scalprum/static/3897.53c31fae.chunk.js.map +1 -0
  55. package/dist-scalprum/static/3917.f6c5d76f.chunk.js +2 -0
  56. package/dist-scalprum/static/3917.f6c5d76f.chunk.js.map +1 -0
  57. package/dist-scalprum/static/3947.cd00bcd5.chunk.js +2 -0
  58. package/dist-scalprum/static/3947.cd00bcd5.chunk.js.map +1 -0
  59. package/dist-scalprum/static/4041.12a0055c.chunk.js +3 -0
  60. package/dist-scalprum/static/4041.12a0055c.chunk.js.LICENSE.txt +9 -0
  61. package/dist-scalprum/static/4041.12a0055c.chunk.js.map +1 -0
  62. package/dist-scalprum/static/4083.e067ea26.chunk.js +3 -0
  63. package/dist-scalprum/static/4083.e067ea26.chunk.js.LICENSE.txt +18 -0
  64. package/dist-scalprum/static/4083.e067ea26.chunk.js.map +1 -0
  65. package/dist-scalprum/static/438.32c3e072.chunk.js +2 -0
  66. package/dist-scalprum/static/438.32c3e072.chunk.js.map +1 -0
  67. package/dist-scalprum/static/4491.b4aa3375.chunk.js +2 -0
  68. package/dist-scalprum/static/4491.b4aa3375.chunk.js.map +1 -0
  69. package/dist-scalprum/static/4570.f63a94b5.chunk.js +3 -0
  70. package/dist-scalprum/static/4570.f63a94b5.chunk.js.LICENSE.txt +16 -0
  71. package/dist-scalprum/static/4570.f63a94b5.chunk.js.map +1 -0
  72. package/dist-scalprum/static/4641.afa4b7f4.chunk.js +2 -0
  73. package/dist-scalprum/static/4641.afa4b7f4.chunk.js.map +1 -0
  74. package/dist-scalprum/static/4712.32c000f9.chunk.js +2 -0
  75. package/dist-scalprum/static/4712.32c000f9.chunk.js.map +1 -0
  76. package/dist-scalprum/static/501.c053f97a.chunk.js +3 -0
  77. package/dist-scalprum/static/501.c053f97a.chunk.js.LICENSE.txt +21 -0
  78. package/dist-scalprum/static/501.c053f97a.chunk.js.map +1 -0
  79. package/dist-scalprum/static/5010.95aedf8d.chunk.js +3 -0
  80. package/dist-scalprum/static/5010.95aedf8d.chunk.js.LICENSE.txt +17 -0
  81. package/dist-scalprum/static/5010.95aedf8d.chunk.js.map +1 -0
  82. package/dist-scalprum/static/5197.c4151d55.chunk.js +2 -0
  83. package/dist-scalprum/static/5197.c4151d55.chunk.js.map +1 -0
  84. package/dist-scalprum/static/5943.d01f37ae.chunk.js +2 -0
  85. package/dist-scalprum/static/5943.d01f37ae.chunk.js.map +1 -0
  86. package/dist-scalprum/static/6038.9e308c20.chunk.js +3 -0
  87. package/dist-scalprum/static/6038.9e308c20.chunk.js.LICENSE.txt +8 -0
  88. package/dist-scalprum/static/6038.9e308c20.chunk.js.map +1 -0
  89. package/dist-scalprum/static/6272.98ac64ee.chunk.js +2 -0
  90. package/dist-scalprum/static/6272.98ac64ee.chunk.js.map +1 -0
  91. package/dist-scalprum/static/635.20cc75bd.chunk.js +3 -0
  92. package/dist-scalprum/static/635.20cc75bd.chunk.js.LICENSE.txt +9 -0
  93. package/dist-scalprum/static/635.20cc75bd.chunk.js.map +1 -0
  94. package/dist-scalprum/static/6371.bd298779.chunk.js +3 -0
  95. package/dist-scalprum/static/6371.bd298779.chunk.js.LICENSE.txt +9 -0
  96. package/dist-scalprum/static/6371.bd298779.chunk.js.map +1 -0
  97. package/dist-scalprum/static/6766.6766.d233128d.css +5 -0
  98. package/dist-scalprum/static/6766.6766.d233128d.css.map +1 -0
  99. package/dist-scalprum/static/6766.b1477b1f.chunk.js +3 -0
  100. package/dist-scalprum/static/6766.b1477b1f.chunk.js.LICENSE.txt +26 -0
  101. package/dist-scalprum/static/6766.b1477b1f.chunk.js.map +1 -0
  102. package/dist-scalprum/static/6837.daf44d4a.chunk.js +2 -0
  103. package/dist-scalprum/static/6837.daf44d4a.chunk.js.map +1 -0
  104. package/dist-scalprum/static/6853.95bdb23a.chunk.js +2 -0
  105. package/dist-scalprum/static/6853.95bdb23a.chunk.js.map +1 -0
  106. package/dist-scalprum/static/6972.67a3d5fa.chunk.js +2 -0
  107. package/dist-scalprum/static/6972.67a3d5fa.chunk.js.map +1 -0
  108. package/dist-scalprum/static/7076.a421f17a.chunk.js +2 -0
  109. package/dist-scalprum/static/7076.a421f17a.chunk.js.map +1 -0
  110. package/dist-scalprum/static/7164.3f49dba5.chunk.js +2 -0
  111. package/dist-scalprum/static/7164.3f49dba5.chunk.js.map +1 -0
  112. package/dist-scalprum/static/7266.8f906280.chunk.js +2 -0
  113. package/dist-scalprum/static/7266.8f906280.chunk.js.map +1 -0
  114. package/dist-scalprum/static/7270.fe2b531a.chunk.js +2 -0
  115. package/dist-scalprum/static/7270.fe2b531a.chunk.js.map +1 -0
  116. package/dist-scalprum/static/7293.61ba27ef.chunk.js +3 -0
  117. package/dist-scalprum/static/7293.61ba27ef.chunk.js.LICENSE.txt +9 -0
  118. package/dist-scalprum/static/7293.61ba27ef.chunk.js.map +1 -0
  119. package/dist-scalprum/static/7367.7f02a435.chunk.js +3 -0
  120. package/dist-scalprum/static/7367.7f02a435.chunk.js.LICENSE.txt +21 -0
  121. package/dist-scalprum/static/7367.7f02a435.chunk.js.map +1 -0
  122. package/dist-scalprum/static/7651.e4257476.chunk.js +2 -0
  123. package/dist-scalprum/static/7651.e4257476.chunk.js.map +1 -0
  124. package/dist-scalprum/static/7791.8fd95e78.chunk.js +2 -0
  125. package/dist-scalprum/static/7791.8fd95e78.chunk.js.map +1 -0
  126. package/dist-scalprum/static/8170.ee2d7c50.chunk.js +2 -0
  127. package/dist-scalprum/static/8170.ee2d7c50.chunk.js.map +1 -0
  128. package/dist-scalprum/static/8563.c70c61a5.chunk.js +3 -0
  129. package/dist-scalprum/static/8563.c70c61a5.chunk.js.LICENSE.txt +5 -0
  130. package/dist-scalprum/static/8563.c70c61a5.chunk.js.map +1 -0
  131. package/dist-scalprum/static/9400.6b78af9f.chunk.js +2 -0
  132. package/dist-scalprum/static/9400.6b78af9f.chunk.js.map +1 -0
  133. package/dist-scalprum/static/empty-state-illustration.7e3ad5a9..png +0 -0
  134. package/dist-scalprum/static/exposed-ApiIcon.da16b2cc.chunk.js +3 -0
  135. package/dist-scalprum/static/exposed-ApiIcon.da16b2cc.chunk.js.LICENSE.txt +9 -0
  136. package/dist-scalprum/static/exposed-ApiIcon.da16b2cc.chunk.js.map +1 -0
  137. package/dist-scalprum/static/exposed-KuadrantIcon.e9227839.chunk.js +3 -0
  138. package/dist-scalprum/static/exposed-KuadrantIcon.e9227839.chunk.js.LICENSE.txt +9 -0
  139. package/dist-scalprum/static/exposed-KuadrantIcon.e9227839.chunk.js.map +1 -0
  140. package/dist-scalprum/static/exposed-KuadrantPage.832aec5b.chunk.js +2 -0
  141. package/dist-scalprum/static/exposed-KuadrantPage.832aec5b.chunk.js.map +1 -0
  142. package/dist-scalprum/static/exposed-PluginRoot.daa5f940.chunk.js +2 -0
  143. package/dist-scalprum/static/exposed-PluginRoot.daa5f940.chunk.js.map +1 -0
  144. package/dist-scalprum/static/exposed-kuadrantApiFactory.3211b81a.chunk.js +2 -0
  145. package/dist-scalprum/static/exposed-kuadrantApiFactory.3211b81a.chunk.js.map +1 -0
  146. package/dist-scalprum/static/react-syntax-highlighter/lowlight-import.6ce6e76b.chunk.js +2 -0
  147. package/dist-scalprum/static/react-syntax-highlighter/lowlight-import.6ce6e76b.chunk.js.map +1 -0
  148. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_abnf.d7b748b1.chunk.js +2 -0
  149. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_abnf.d7b748b1.chunk.js.map +1 -0
  150. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_accesslog.5cd4e70c.chunk.js +2 -0
  151. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_accesslog.5cd4e70c.chunk.js.map +1 -0
  152. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_actionscript.d7fb5ca9.chunk.js +2 -0
  153. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_actionscript.d7fb5ca9.chunk.js.map +1 -0
  154. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_ada.751ec93b.chunk.js +2 -0
  155. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_ada.751ec93b.chunk.js.map +1 -0
  156. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_angelscript.cdb860cc.chunk.js +2 -0
  157. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_angelscript.cdb860cc.chunk.js.map +1 -0
  158. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_apache.7773ba3b.chunk.js +2 -0
  159. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_apache.7773ba3b.chunk.js.map +1 -0
  160. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_applescript.8cb340cc.chunk.js +2 -0
  161. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_applescript.8cb340cc.chunk.js.map +1 -0
  162. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_arcade.60bbff04.chunk.js +2 -0
  163. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_arcade.60bbff04.chunk.js.map +1 -0
  164. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_arduino.c0c83f48.chunk.js +2 -0
  165. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_arduino.c0c83f48.chunk.js.map +1 -0
  166. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_armasm.430c8942.chunk.js +2 -0
  167. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_armasm.430c8942.chunk.js.map +1 -0
  168. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_asciidoc.3e211a5e.chunk.js +2 -0
  169. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_asciidoc.3e211a5e.chunk.js.map +1 -0
  170. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_aspectj.3d32ac5c.chunk.js +2 -0
  171. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_aspectj.3d32ac5c.chunk.js.map +1 -0
  172. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_autohotkey.0f43909c.chunk.js +2 -0
  173. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_autohotkey.0f43909c.chunk.js.map +1 -0
  174. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_autoit.7136d2bd.chunk.js +2 -0
  175. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_autoit.7136d2bd.chunk.js.map +1 -0
  176. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_avrasm.8aa64d3e.chunk.js +2 -0
  177. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_avrasm.8aa64d3e.chunk.js.map +1 -0
  178. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_awk.ad458763.chunk.js +2 -0
  179. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_awk.ad458763.chunk.js.map +1 -0
  180. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_axapta.973d343c.chunk.js +2 -0
  181. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_axapta.973d343c.chunk.js.map +1 -0
  182. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_bash.e6565209.chunk.js +2 -0
  183. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_bash.e6565209.chunk.js.map +1 -0
  184. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_basic.0691a169.chunk.js +2 -0
  185. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_basic.0691a169.chunk.js.map +1 -0
  186. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_bnf.e8daf1f7.chunk.js +2 -0
  187. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_bnf.e8daf1f7.chunk.js.map +1 -0
  188. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_brainfuck.e196d223.chunk.js +2 -0
  189. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_brainfuck.e196d223.chunk.js.map +1 -0
  190. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_c.efabbf9d.chunk.js +2 -0
  191. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_c.efabbf9d.chunk.js.map +1 -0
  192. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_cLike.3b61cf62.chunk.js +2 -0
  193. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_cLike.3b61cf62.chunk.js.map +1 -0
  194. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_cal.b801b70d.chunk.js +2 -0
  195. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_cal.b801b70d.chunk.js.map +1 -0
  196. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_capnproto.ded99d02.chunk.js +2 -0
  197. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_capnproto.ded99d02.chunk.js.map +1 -0
  198. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_ceylon.3eac73f9.chunk.js +2 -0
  199. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_ceylon.3eac73f9.chunk.js.map +1 -0
  200. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_clean.b07854cb.chunk.js +2 -0
  201. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_clean.b07854cb.chunk.js.map +1 -0
  202. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_clojure.77521689.chunk.js +2 -0
  203. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_clojure.77521689.chunk.js.map +1 -0
  204. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_clojureRepl.9448b879.chunk.js +2 -0
  205. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_clojureRepl.9448b879.chunk.js.map +1 -0
  206. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_cmake.6b048c9a.chunk.js +2 -0
  207. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_cmake.6b048c9a.chunk.js.map +1 -0
  208. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_coffeescript.4aef666e.chunk.js +2 -0
  209. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_coffeescript.4aef666e.chunk.js.map +1 -0
  210. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_coq.bb2ee554.chunk.js +2 -0
  211. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_coq.bb2ee554.chunk.js.map +1 -0
  212. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_cos.6fc48d6d.chunk.js +2 -0
  213. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_cos.6fc48d6d.chunk.js.map +1 -0
  214. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_cpp.daf37e10.chunk.js +2 -0
  215. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_cpp.daf37e10.chunk.js.map +1 -0
  216. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_crmsh.d547f78d.chunk.js +2 -0
  217. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_crmsh.d547f78d.chunk.js.map +1 -0
  218. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_crystal.5049cd2e.chunk.js +2 -0
  219. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_crystal.5049cd2e.chunk.js.map +1 -0
  220. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_csharp.315865a3.chunk.js +2 -0
  221. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_csharp.315865a3.chunk.js.map +1 -0
  222. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_csp.7ea55553.chunk.js +2 -0
  223. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_csp.7ea55553.chunk.js.map +1 -0
  224. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_css.3117b0e3.chunk.js +2 -0
  225. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_css.3117b0e3.chunk.js.map +1 -0
  226. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_d.7456f80c.chunk.js +2 -0
  227. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_d.7456f80c.chunk.js.map +1 -0
  228. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_dart.020b9d3d.chunk.js +2 -0
  229. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_dart.020b9d3d.chunk.js.map +1 -0
  230. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_delphi.86aca306.chunk.js +2 -0
  231. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_delphi.86aca306.chunk.js.map +1 -0
  232. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_diff.0a835926.chunk.js +2 -0
  233. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_diff.0a835926.chunk.js.map +1 -0
  234. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_django.a135aa8b.chunk.js +2 -0
  235. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_django.a135aa8b.chunk.js.map +1 -0
  236. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_dns.27aec10d.chunk.js +2 -0
  237. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_dns.27aec10d.chunk.js.map +1 -0
  238. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_dockerfile.958aacec.chunk.js +2 -0
  239. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_dockerfile.958aacec.chunk.js.map +1 -0
  240. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_dos.59aaced7.chunk.js +2 -0
  241. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_dos.59aaced7.chunk.js.map +1 -0
  242. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_dsconfig.8b5a847e.chunk.js +2 -0
  243. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_dsconfig.8b5a847e.chunk.js.map +1 -0
  244. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_dts.6e3f9db6.chunk.js +2 -0
  245. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_dts.6e3f9db6.chunk.js.map +1 -0
  246. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_dust.7c5d23e5.chunk.js +2 -0
  247. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_dust.7c5d23e5.chunk.js.map +1 -0
  248. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_ebnf.db0ae456.chunk.js +2 -0
  249. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_ebnf.db0ae456.chunk.js.map +1 -0
  250. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_elixir.cc785691.chunk.js +2 -0
  251. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_elixir.cc785691.chunk.js.map +1 -0
  252. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_elm.66841734.chunk.js +2 -0
  253. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_elm.66841734.chunk.js.map +1 -0
  254. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_erb.b1b96b4e.chunk.js +2 -0
  255. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_erb.b1b96b4e.chunk.js.map +1 -0
  256. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_erlang.34d2f773.chunk.js +2 -0
  257. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_erlang.34d2f773.chunk.js.map +1 -0
  258. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_erlangRepl.0ff0bfbb.chunk.js +2 -0
  259. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_erlangRepl.0ff0bfbb.chunk.js.map +1 -0
  260. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_excel.04bd2aa2.chunk.js +2 -0
  261. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_excel.04bd2aa2.chunk.js.map +1 -0
  262. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_fix.0ef6442e.chunk.js +2 -0
  263. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_fix.0ef6442e.chunk.js.map +1 -0
  264. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_flix.a1b295ac.chunk.js +2 -0
  265. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_flix.a1b295ac.chunk.js.map +1 -0
  266. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_fortran.66f10825.chunk.js +2 -0
  267. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_fortran.66f10825.chunk.js.map +1 -0
  268. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_fsharp.f36c83d1.chunk.js +2 -0
  269. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_fsharp.f36c83d1.chunk.js.map +1 -0
  270. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_gams.e170e44f.chunk.js +2 -0
  271. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_gams.e170e44f.chunk.js.map +1 -0
  272. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_gauss.877c22cd.chunk.js +2 -0
  273. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_gauss.877c22cd.chunk.js.map +1 -0
  274. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_gcode.c1e0a697.chunk.js +2 -0
  275. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_gcode.c1e0a697.chunk.js.map +1 -0
  276. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_gherkin.934843e3.chunk.js +2 -0
  277. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_gherkin.934843e3.chunk.js.map +1 -0
  278. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_glsl.967148b0.chunk.js +2 -0
  279. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_glsl.967148b0.chunk.js.map +1 -0
  280. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_gml.1e9b8477.chunk.js +2 -0
  281. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_gml.1e9b8477.chunk.js.map +1 -0
  282. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_go.5796d462.chunk.js +2 -0
  283. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_go.5796d462.chunk.js.map +1 -0
  284. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_golo.453ebb0f.chunk.js +2 -0
  285. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_golo.453ebb0f.chunk.js.map +1 -0
  286. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_gradle.848e9531.chunk.js +2 -0
  287. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_gradle.848e9531.chunk.js.map +1 -0
  288. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_groovy.fa7fe849.chunk.js +2 -0
  289. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_groovy.fa7fe849.chunk.js.map +1 -0
  290. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_haml.8caef7cd.chunk.js +2 -0
  291. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_haml.8caef7cd.chunk.js.map +1 -0
  292. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_handlebars.5a49c928.chunk.js +2 -0
  293. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_handlebars.5a49c928.chunk.js.map +1 -0
  294. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_haskell.b13e9820.chunk.js +2 -0
  295. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_haskell.b13e9820.chunk.js.map +1 -0
  296. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_haxe.2978dc06.chunk.js +2 -0
  297. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_haxe.2978dc06.chunk.js.map +1 -0
  298. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_hsp.7a3e965f.chunk.js +2 -0
  299. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_hsp.7a3e965f.chunk.js.map +1 -0
  300. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_htmlbars.f0f2b2be.chunk.js +2 -0
  301. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_htmlbars.f0f2b2be.chunk.js.map +1 -0
  302. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_http.a29b3997.chunk.js +2 -0
  303. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_http.a29b3997.chunk.js.map +1 -0
  304. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_hy.9cf3d54c.chunk.js +2 -0
  305. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_hy.9cf3d54c.chunk.js.map +1 -0
  306. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_inform7.568e42d6.chunk.js +2 -0
  307. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_inform7.568e42d6.chunk.js.map +1 -0
  308. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_ini.003b4149.chunk.js +2 -0
  309. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_ini.003b4149.chunk.js.map +1 -0
  310. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_irpf90.6a198fc7.chunk.js +2 -0
  311. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_irpf90.6a198fc7.chunk.js.map +1 -0
  312. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_isbl.e9cf6e08.chunk.js +2 -0
  313. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_isbl.e9cf6e08.chunk.js.map +1 -0
  314. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_java.c96464e0.chunk.js +2 -0
  315. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_java.c96464e0.chunk.js.map +1 -0
  316. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_javascript.e88c5129.chunk.js +2 -0
  317. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_javascript.e88c5129.chunk.js.map +1 -0
  318. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_jbossCli.83466530.chunk.js +2 -0
  319. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_jbossCli.83466530.chunk.js.map +1 -0
  320. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_json.b7395612.chunk.js +2 -0
  321. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_json.b7395612.chunk.js.map +1 -0
  322. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_julia.fe310a0e.chunk.js +2 -0
  323. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_julia.fe310a0e.chunk.js.map +1 -0
  324. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_juliaRepl.f0bdb034.chunk.js +2 -0
  325. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_juliaRepl.f0bdb034.chunk.js.map +1 -0
  326. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_kotlin.b08b90f3.chunk.js +2 -0
  327. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_kotlin.b08b90f3.chunk.js.map +1 -0
  328. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_lasso.e5dd3415.chunk.js +2 -0
  329. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_lasso.e5dd3415.chunk.js.map +1 -0
  330. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_latex.70a85a56.chunk.js +2 -0
  331. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_latex.70a85a56.chunk.js.map +1 -0
  332. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_ldif.17ed8595.chunk.js +2 -0
  333. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_ldif.17ed8595.chunk.js.map +1 -0
  334. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_leaf.9e81ae3b.chunk.js +2 -0
  335. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_leaf.9e81ae3b.chunk.js.map +1 -0
  336. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_less.2d706a4a.chunk.js +2 -0
  337. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_less.2d706a4a.chunk.js.map +1 -0
  338. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_lisp.e09ffb38.chunk.js +2 -0
  339. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_lisp.e09ffb38.chunk.js.map +1 -0
  340. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_livecodeserver.fb7fa1bd.chunk.js +2 -0
  341. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_livecodeserver.fb7fa1bd.chunk.js.map +1 -0
  342. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_livescript.0367b344.chunk.js +2 -0
  343. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_livescript.0367b344.chunk.js.map +1 -0
  344. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_llvm.b7b471df.chunk.js +2 -0
  345. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_llvm.b7b471df.chunk.js.map +1 -0
  346. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_lsl.3703d3d6.chunk.js +2 -0
  347. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_lsl.3703d3d6.chunk.js.map +1 -0
  348. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_lua.d066f704.chunk.js +2 -0
  349. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_lua.d066f704.chunk.js.map +1 -0
  350. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_makefile.db532360.chunk.js +2 -0
  351. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_makefile.db532360.chunk.js.map +1 -0
  352. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_markdown.15a4f8b6.chunk.js +2 -0
  353. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_markdown.15a4f8b6.chunk.js.map +1 -0
  354. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_mathematica.12cc49c0.chunk.js +2 -0
  355. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_mathematica.12cc49c0.chunk.js.map +1 -0
  356. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_matlab.c4d4eb67.chunk.js +2 -0
  357. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_matlab.c4d4eb67.chunk.js.map +1 -0
  358. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_maxima.60c478c0.chunk.js +2 -0
  359. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_maxima.60c478c0.chunk.js.map +1 -0
  360. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_mel.b80a6243.chunk.js +2 -0
  361. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_mel.b80a6243.chunk.js.map +1 -0
  362. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_mercury.d1e79a83.chunk.js +2 -0
  363. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_mercury.d1e79a83.chunk.js.map +1 -0
  364. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_mipsasm.e89f0d76.chunk.js +2 -0
  365. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_mipsasm.e89f0d76.chunk.js.map +1 -0
  366. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_mizar.2fad9b33.chunk.js +2 -0
  367. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_mizar.2fad9b33.chunk.js.map +1 -0
  368. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_mojolicious.fdf944aa.chunk.js +2 -0
  369. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_mojolicious.fdf944aa.chunk.js.map +1 -0
  370. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_monkey.e5ec6191.chunk.js +2 -0
  371. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_monkey.e5ec6191.chunk.js.map +1 -0
  372. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_moonscript.f2b66b70.chunk.js +2 -0
  373. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_moonscript.f2b66b70.chunk.js.map +1 -0
  374. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_n1ql.6cf400a2.chunk.js +2 -0
  375. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_n1ql.6cf400a2.chunk.js.map +1 -0
  376. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_nginx.69236b3b.chunk.js +2 -0
  377. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_nginx.69236b3b.chunk.js.map +1 -0
  378. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_nim.00b5534b.chunk.js +2 -0
  379. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_nim.00b5534b.chunk.js.map +1 -0
  380. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_nix.f66b6002.chunk.js +2 -0
  381. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_nix.f66b6002.chunk.js.map +1 -0
  382. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_nodeRepl.81666346.chunk.js +2 -0
  383. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_nodeRepl.81666346.chunk.js.map +1 -0
  384. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_nsis.0625e6b8.chunk.js +2 -0
  385. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_nsis.0625e6b8.chunk.js.map +1 -0
  386. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_objectivec.a72cf24d.chunk.js +2 -0
  387. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_objectivec.a72cf24d.chunk.js.map +1 -0
  388. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_ocaml.e259908f.chunk.js +2 -0
  389. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_ocaml.e259908f.chunk.js.map +1 -0
  390. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_oneC.66abc520.chunk.js +2 -0
  391. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_oneC.66abc520.chunk.js.map +1 -0
  392. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_openscad.3f645414.chunk.js +2 -0
  393. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_openscad.3f645414.chunk.js.map +1 -0
  394. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_oxygene.157adfc8.chunk.js +2 -0
  395. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_oxygene.157adfc8.chunk.js.map +1 -0
  396. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_parser3.6e413f5e.chunk.js +2 -0
  397. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_parser3.6e413f5e.chunk.js.map +1 -0
  398. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_perl.47014ef1.chunk.js +2 -0
  399. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_perl.47014ef1.chunk.js.map +1 -0
  400. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_pf.1af1f4b3.chunk.js +2 -0
  401. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_pf.1af1f4b3.chunk.js.map +1 -0
  402. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_pgsql.38660a92.chunk.js +2 -0
  403. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_pgsql.38660a92.chunk.js.map +1 -0
  404. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_php.e92f0640.chunk.js +2 -0
  405. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_php.e92f0640.chunk.js.map +1 -0
  406. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_phpTemplate.0372e2e4.chunk.js +2 -0
  407. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_phpTemplate.0372e2e4.chunk.js.map +1 -0
  408. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_plaintext.1b08385e.chunk.js +2 -0
  409. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_plaintext.1b08385e.chunk.js.map +1 -0
  410. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_pony.7d0f6ed2.chunk.js +2 -0
  411. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_pony.7d0f6ed2.chunk.js.map +1 -0
  412. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_powershell.d1b10369.chunk.js +2 -0
  413. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_powershell.d1b10369.chunk.js.map +1 -0
  414. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_processing.f638243c.chunk.js +2 -0
  415. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_processing.f638243c.chunk.js.map +1 -0
  416. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_profile.4c36bffa.chunk.js +2 -0
  417. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_profile.4c36bffa.chunk.js.map +1 -0
  418. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_prolog.f3254a38.chunk.js +2 -0
  419. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_prolog.f3254a38.chunk.js.map +1 -0
  420. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_properties.7a043394.chunk.js +2 -0
  421. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_properties.7a043394.chunk.js.map +1 -0
  422. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_protobuf.fdc8230f.chunk.js +2 -0
  423. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_protobuf.fdc8230f.chunk.js.map +1 -0
  424. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_puppet.6e63451e.chunk.js +2 -0
  425. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_puppet.6e63451e.chunk.js.map +1 -0
  426. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_purebasic.517c935e.chunk.js +2 -0
  427. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_purebasic.517c935e.chunk.js.map +1 -0
  428. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_python.ac43344f.chunk.js +2 -0
  429. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_python.ac43344f.chunk.js.map +1 -0
  430. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_pythonRepl.dda4b87c.chunk.js +2 -0
  431. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_pythonRepl.dda4b87c.chunk.js.map +1 -0
  432. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_q.05aa4cef.chunk.js +2 -0
  433. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_q.05aa4cef.chunk.js.map +1 -0
  434. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_qml.19d8a2a9.chunk.js +2 -0
  435. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_qml.19d8a2a9.chunk.js.map +1 -0
  436. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_r.6092a281.chunk.js +2 -0
  437. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_r.6092a281.chunk.js.map +1 -0
  438. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_reasonml.920f9a7c.chunk.js +2 -0
  439. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_reasonml.920f9a7c.chunk.js.map +1 -0
  440. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_rib.18a94d89.chunk.js +2 -0
  441. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_rib.18a94d89.chunk.js.map +1 -0
  442. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_roboconf.7c9e7cd0.chunk.js +2 -0
  443. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_roboconf.7c9e7cd0.chunk.js.map +1 -0
  444. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_routeros.80a5fd04.chunk.js +2 -0
  445. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_routeros.80a5fd04.chunk.js.map +1 -0
  446. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_rsl.f4a97f7d.chunk.js +2 -0
  447. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_rsl.f4a97f7d.chunk.js.map +1 -0
  448. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_ruby.47ccba90.chunk.js +2 -0
  449. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_ruby.47ccba90.chunk.js.map +1 -0
  450. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_ruleslanguage.d7509115.chunk.js +2 -0
  451. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_ruleslanguage.d7509115.chunk.js.map +1 -0
  452. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_rust.a254cc81.chunk.js +2 -0
  453. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_rust.a254cc81.chunk.js.map +1 -0
  454. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_sas.08cd6913.chunk.js +2 -0
  455. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_sas.08cd6913.chunk.js.map +1 -0
  456. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_scala.53d46ef7.chunk.js +2 -0
  457. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_scala.53d46ef7.chunk.js.map +1 -0
  458. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_scheme.cbfeb2ca.chunk.js +2 -0
  459. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_scheme.cbfeb2ca.chunk.js.map +1 -0
  460. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_scilab.69717390.chunk.js +2 -0
  461. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_scilab.69717390.chunk.js.map +1 -0
  462. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_scss.45023bc4.chunk.js +2 -0
  463. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_scss.45023bc4.chunk.js.map +1 -0
  464. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_shell.643b0f4f.chunk.js +2 -0
  465. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_shell.643b0f4f.chunk.js.map +1 -0
  466. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_smali.24d94a2c.chunk.js +2 -0
  467. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_smali.24d94a2c.chunk.js.map +1 -0
  468. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_smalltalk.a1699a88.chunk.js +2 -0
  469. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_smalltalk.a1699a88.chunk.js.map +1 -0
  470. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_sml.b430a4ca.chunk.js +2 -0
  471. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_sml.b430a4ca.chunk.js.map +1 -0
  472. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_sqf.dd4d51f6.chunk.js +2 -0
  473. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_sqf.dd4d51f6.chunk.js.map +1 -0
  474. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_sql.f818ddde.chunk.js +2 -0
  475. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_sql.f818ddde.chunk.js.map +1 -0
  476. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_sqlMore.7bf1e358.chunk.js +2 -0
  477. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_sqlMore.7bf1e358.chunk.js.map +1 -0
  478. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_stan.625ebea2.chunk.js +2 -0
  479. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_stan.625ebea2.chunk.js.map +1 -0
  480. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_stata.68a930f3.chunk.js +2 -0
  481. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_stata.68a930f3.chunk.js.map +1 -0
  482. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_step21.d4291027.chunk.js +2 -0
  483. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_step21.d4291027.chunk.js.map +1 -0
  484. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_stylus.3b7031b9.chunk.js +2 -0
  485. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_stylus.3b7031b9.chunk.js.map +1 -0
  486. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_subunit.e4ea5413.chunk.js +2 -0
  487. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_subunit.e4ea5413.chunk.js.map +1 -0
  488. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_swift.cf4ec513.chunk.js +2 -0
  489. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_swift.cf4ec513.chunk.js.map +1 -0
  490. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_taggerscript.0cb0578c.chunk.js +2 -0
  491. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_taggerscript.0cb0578c.chunk.js.map +1 -0
  492. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_tap.e2194878.chunk.js +2 -0
  493. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_tap.e2194878.chunk.js.map +1 -0
  494. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_tcl.9a6c577b.chunk.js +2 -0
  495. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_tcl.9a6c577b.chunk.js.map +1 -0
  496. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_thrift.1548e34d.chunk.js +2 -0
  497. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_thrift.1548e34d.chunk.js.map +1 -0
  498. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_tp.c608d992.chunk.js +2 -0
  499. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_tp.c608d992.chunk.js.map +1 -0
  500. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_twig.6b4054dd.chunk.js +2 -0
  501. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_twig.6b4054dd.chunk.js.map +1 -0
  502. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_typescript.b764ee8b.chunk.js +2 -0
  503. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_typescript.b764ee8b.chunk.js.map +1 -0
  504. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_vala.917594d4.chunk.js +2 -0
  505. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_vala.917594d4.chunk.js.map +1 -0
  506. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_vbnet.e83a46fb.chunk.js +2 -0
  507. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_vbnet.e83a46fb.chunk.js.map +1 -0
  508. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_vbscript.caea633d.chunk.js +2 -0
  509. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_vbscript.caea633d.chunk.js.map +1 -0
  510. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_vbscriptHtml.73fc4c05.chunk.js +2 -0
  511. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_vbscriptHtml.73fc4c05.chunk.js.map +1 -0
  512. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_verilog.93d0d327.chunk.js +2 -0
  513. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_verilog.93d0d327.chunk.js.map +1 -0
  514. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_vhdl.a98781bd.chunk.js +2 -0
  515. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_vhdl.a98781bd.chunk.js.map +1 -0
  516. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_vim.2cb77785.chunk.js +2 -0
  517. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_vim.2cb77785.chunk.js.map +1 -0
  518. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_x86asm.fbcd5fed.chunk.js +2 -0
  519. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_x86asm.fbcd5fed.chunk.js.map +1 -0
  520. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_xl.3b233004.chunk.js +2 -0
  521. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_xl.3b233004.chunk.js.map +1 -0
  522. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_xml.6b5feb4c.chunk.js +2 -0
  523. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_xml.6b5feb4c.chunk.js.map +1 -0
  524. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_xquery.4c158dae.chunk.js +2 -0
  525. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_xquery.4c158dae.chunk.js.map +1 -0
  526. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_yaml.1bd2dc88.chunk.js +2 -0
  527. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_yaml.1bd2dc88.chunk.js.map +1 -0
  528. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_zephir.e84f063b.chunk.js +2 -0
  529. package/dist-scalprum/static/react-syntax-highlighter_languages_highlight_zephir.e84f063b.chunk.js.map +1 -0
  530. package/package.json +2 -2
  531. /package/dist/static/{main.4487ce49.js → main.70b7537d.js} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"static/3897.53c31fae.chunk.js","mappings":"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","sources":["webpack://kuadrant.kuadrant-backstage-plugin-frontend/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/analytics/AnalyticsContext.esm.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/apis/definitions/AnalyticsApi.esm.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/analytics/Tracker.esm.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/analytics/useAnalytics.esm.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/apis/definitions/AppTreeApi.esm.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/apis/definitions/SwappableComponentsApi.esm.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/apis/definitions/IconsApi.esm.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/apis/definitions/DialogApi.esm.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/apis/definitions/RouteResolutionApi.esm.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/wiring/createExtensionDataRef.esm.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/frontend-internal/src/wiring/createExtensionDataContainer.esm.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/wiring/resolveInputOverrides.esm.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/schema/createSchemaFromZod.esm.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/opaque-internal/src/OpaqueType.esm.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/frontend-internal/src/wiring/InternalExtensionDefinition.esm.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/wiring/createExtension.esm.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/wiring/createExtensionBlueprint.esm.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/blueprints/AnalyticsImplementationBlueprint.esm.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/blueprints/ApiBlueprint.esm.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/wiring/coreExtensionData.esm.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/blueprints/AppRootElementBlueprint.esm.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/blueprints/AppRootWrapperBlueprint.esm.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/blueprints/IconBundleBlueprint.esm.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/blueprints/NavContentBlueprint.esm.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/blueprints/NavItemBlueprint.esm.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/frontend-internal/src/wiring/InternalSwappableComponentRef.esm.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/components/createSwappableComponent.esm.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/components/DefaultSwappableComponents.esm.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/components/ErrorBoundary.esm.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/core-plugin-api/src/analytics/Tracker.esm.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/components/AppNodeProvider.esm.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/components/ExtensionBoundary.esm.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/blueprints/PageBlueprint.esm.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/blueprints/RouterBlueprint.esm.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/blueprints/SignInPageBlueprint.esm.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/blueprints/ThemeBlueprint.esm.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/blueprints/TranslationBlueprint.esm.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/blueprints/SwappableComponentBlueprint.esm.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/routing/describeParentCallSite.esm.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/routing/RouteRef.esm.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/routing/SubRouteRef.esm.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/routing/ExternalRouteRef.esm.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/routing/useRouteRef.esm.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/routing/useRouteRefParams.esm.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/wiring/createExtensionInput.esm.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/wiring/resolveExtensionDefinition.esm.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/frontend-internal/src/wiring/InternalFrontendPlugin.esm.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/wiring/createFrontendPlugin.esm.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/wiring/createFrontendModule.esm.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/wiring/createFrontendFeatureLoader.esm.js"],"sourcesContent":["import { jsx } from 'react/jsx-runtime';\nimport { createVersionedContext, createVersionedValueMap } from '@backstage/version-bridge';\nimport { useContext } from 'react';\n\nconst AnalyticsReactContext = createVersionedContext(\"analytics-context\");\nconst useAnalyticsContext = () => {\n const theContext = useContext(AnalyticsReactContext);\n if (theContext === void 0) {\n return {\n pluginId: \"app\",\n extensionId: \"app\"\n };\n }\n const theValue = theContext.atVersion(1);\n if (theValue === void 0) {\n throw new Error(\"No context found for version 1.\");\n }\n return theValue;\n};\nconst AnalyticsContext = (options) => {\n const { attributes, children } = options;\n const parentValues = useAnalyticsContext();\n const combinedValue = {\n ...parentValues,\n ...attributes\n };\n const versionedCombinedValue = createVersionedValueMap({ 1: combinedValue });\n return /* @__PURE__ */ jsx(AnalyticsReactContext.Provider, { value: versionedCombinedValue, children });\n};\n\nexport { AnalyticsContext, useAnalyticsContext };\n//# sourceMappingURL=AnalyticsContext.esm.js.map\n","import { createApiRef } from '@backstage/core-plugin-api';\n\nconst analyticsApiRef = createApiRef({\n id: \"core.analytics\"\n});\n\nexport { analyticsApiRef };\n//# sourceMappingURL=AnalyticsApi.esm.js.map\n","import { getOrCreateGlobalSingleton } from '@backstage/version-bridge';\n\nconst globalEvents = getOrCreateGlobalSingleton(\n \"core-plugin-api:analytics-tracker-events\",\n () => ({\n mostRecentGatheredNavigation: void 0,\n mostRecentRoutableExtensionRender: void 0,\n beforeUnloadRegistered: false\n })\n);\nconst routableExtensionRenderedEvent = \"_ROUTABLE-EXTENSION-RENDERED\";\nclass Tracker {\n constructor(analyticsApi, context = {\n pluginId: \"root\",\n extensionId: \"App\"\n }) {\n this.analyticsApi = analyticsApi;\n this.context = context;\n if (!globalEvents.beforeUnloadRegistered) {\n addEventListener(\n \"beforeunload\",\n () => {\n if (globalEvents.mostRecentGatheredNavigation) {\n this.analyticsApi.captureEvent({\n ...globalEvents.mostRecentGatheredNavigation,\n ...globalEvents.mostRecentRoutableExtensionRender\n });\n globalEvents.mostRecentGatheredNavigation = void 0;\n globalEvents.mostRecentRoutableExtensionRender = void 0;\n }\n },\n { once: true, passive: true }\n );\n globalEvents.beforeUnloadRegistered = true;\n }\n }\n setContext(context) {\n this.context = context;\n }\n captureEvent(action, subject, {\n value,\n attributes\n } = {}) {\n const context = this.context;\n if (action === routableExtensionRenderedEvent) {\n if (globalEvents.mostRecentGatheredNavigation) {\n globalEvents.mostRecentRoutableExtensionRender = {\n context: {\n ...context,\n extensionId: \"App\"\n }\n };\n }\n return;\n }\n if (globalEvents.mostRecentGatheredNavigation) {\n try {\n this.analyticsApi.captureEvent({\n ...globalEvents.mostRecentGatheredNavigation,\n ...globalEvents.mostRecentRoutableExtensionRender\n });\n } catch (e) {\n console.warn(\"Error during analytics event capture. %o\", e);\n }\n globalEvents.mostRecentGatheredNavigation = void 0;\n globalEvents.mostRecentRoutableExtensionRender = void 0;\n }\n if (action === \"navigate\" && context.pluginId === \"root\") {\n globalEvents.mostRecentGatheredNavigation = {\n action,\n subject,\n value,\n attributes,\n context\n };\n return;\n }\n try {\n this.analyticsApi.captureEvent({\n action,\n subject,\n value,\n attributes,\n context\n });\n } catch (e) {\n console.warn(\"Error during analytics event capture. %o\", e);\n }\n }\n}\n\nexport { Tracker, routableExtensionRenderedEvent };\n//# sourceMappingURL=Tracker.esm.js.map\n","import { useApi } from '@backstage/core-plugin-api';\nimport { useAnalyticsContext } from './AnalyticsContext.esm.js';\nimport '../apis/definitions/AppTreeApi.esm.js';\nimport '../apis/definitions/SwappableComponentsApi.esm.js';\nimport '../apis/definitions/IconsApi.esm.js';\nimport '../apis/definitions/DialogApi.esm.js';\nimport '../apis/definitions/RouteResolutionApi.esm.js';\nimport { analyticsApiRef } from '../apis/definitions/AnalyticsApi.esm.js';\nimport { useRef } from 'react';\nimport { Tracker } from './Tracker.esm.js';\n\nfunction useAnalyticsApi() {\n try {\n return useApi(analyticsApiRef);\n } catch (error) {\n if (error.name === \"NotImplementedError\") {\n return { captureEvent: () => {\n } };\n }\n throw error;\n }\n}\nfunction useAnalytics() {\n const trackerRef = useRef(null);\n const context = useAnalyticsContext();\n const analyticsApi = useAnalyticsApi();\n function getTracker() {\n if (trackerRef.current === null) {\n trackerRef.current = new Tracker(analyticsApi);\n }\n return trackerRef.current;\n }\n const tracker = getTracker();\n tracker.setContext(context);\n return tracker;\n}\n\nexport { useAnalytics };\n//# sourceMappingURL=useAnalytics.esm.js.map\n","import { createApiRef } from '@backstage/core-plugin-api';\n\nconst appTreeApiRef = createApiRef({ id: \"core.app-tree\" });\n\nexport { appTreeApiRef };\n//# sourceMappingURL=AppTreeApi.esm.js.map\n","import { createApiRef } from '@backstage/core-plugin-api';\n\nconst swappableComponentsApiRef = createApiRef({\n id: \"core.swappable-components\"\n});\n\nexport { swappableComponentsApiRef };\n//# sourceMappingURL=SwappableComponentsApi.esm.js.map\n","import { createApiRef } from '@backstage/core-plugin-api';\n\nconst iconsApiRef = createApiRef({\n id: \"core.icons\"\n});\n\nexport { iconsApiRef };\n//# sourceMappingURL=IconsApi.esm.js.map\n","import { createApiRef } from '@backstage/core-plugin-api';\n\nconst dialogApiRef = createApiRef({\n id: \"core.dialog\"\n});\n\nexport { dialogApiRef };\n//# sourceMappingURL=DialogApi.esm.js.map\n","import { createApiRef } from '@backstage/core-plugin-api';\n\nconst routeResolutionApiRef = createApiRef({\n id: \"core.route-resolution\"\n});\n\nexport { routeResolutionApiRef };\n//# sourceMappingURL=RouteResolutionApi.esm.js.map\n","function createExtensionDataRef() {\n const createRef = (refId) => Object.assign(\n (value) => ({\n $$type: \"@backstage/ExtensionDataValue\",\n id: refId,\n value\n }),\n {\n id: refId,\n $$type: \"@backstage/ExtensionDataRef\",\n config: {},\n optional() {\n return {\n ...this,\n config: { ...this.config, optional: true }\n };\n },\n toString() {\n const optional = Boolean(this.config.optional);\n return `ExtensionDataRef{id=${refId},optional=${optional}}`;\n }\n }\n );\n return {\n with(options) {\n return createRef(options.id);\n }\n };\n}\n\nexport { createExtensionDataRef };\n//# sourceMappingURL=createExtensionDataRef.esm.js.map\n","function createExtensionDataContainer(values, contextName, declaredRefs) {\n if (typeof values !== \"object\" || !values?.[Symbol.iterator]) {\n throw new Error(`${contextName} did not provide an iterable object`);\n }\n const container = /* @__PURE__ */ new Map();\n const verifyRefs = declaredRefs && new Map(declaredRefs.map((ref) => [ref.id, ref]));\n for (const output of values) {\n if (verifyRefs) {\n if (!verifyRefs.delete(output.id)) {\n throw new Error(\n `extension data '${output.id}' was provided but not declared`\n );\n }\n }\n container.set(output.id, output);\n }\n const remainingRefs = verifyRefs && Array.from(verifyRefs.values()).filter((ref) => !ref.config.optional);\n if (remainingRefs && remainingRefs.length > 0) {\n throw new Error(\n `missing required extension data value(s) '${remainingRefs.map((ref) => ref.id).join(\", \")}'`\n );\n }\n return {\n get(ref) {\n return container.get(ref.id)?.value;\n },\n [Symbol.iterator]() {\n return container.values();\n }\n };\n}\n\nexport { createExtensionDataContainer };\n//# sourceMappingURL=createExtensionDataContainer.esm.js.map\n","import { createExtensionDataContainer } from '../frontend-internal/src/wiring/createExtensionDataContainer.esm.js';\nimport '../frontend-internal/src/wiring/InternalSwappableComponentRef.esm.js';\nimport '../frontend-internal/src/wiring/InternalExtensionDefinition.esm.js';\nimport '../frontend-internal/src/wiring/InternalFrontendPlugin.esm.js';\n\nfunction expectArray(value) {\n return value;\n}\nfunction expectItem(value) {\n return value;\n}\nfunction resolveInputOverrides(declaredInputs, inputs, inputOverrides) {\n if (!declaredInputs || !inputs || !inputOverrides) {\n return inputs;\n }\n const newInputs = {};\n for (const name in declaredInputs) {\n if (!Object.hasOwn(declaredInputs, name)) {\n continue;\n }\n const declaredInput = declaredInputs[name];\n const providedData = inputOverrides[name];\n if (declaredInput.config.singleton) {\n const originalInput = expectItem(inputs[name]);\n if (providedData) {\n const providedContainer = createExtensionDataContainer(\n providedData,\n \"extension input override\",\n declaredInput.extensionData\n );\n if (!originalInput) {\n throw new Error(\n `attempted to override data of input '${name}' but it is not present in the original inputs`\n );\n }\n newInputs[name] = Object.assign(providedContainer, {\n node: originalInput.node\n });\n }\n } else {\n const originalInput = expectArray(inputs[name]);\n if (!Array.isArray(providedData)) {\n throw new Error(\n `override data provided for input '${name}' must be an array`\n );\n }\n if (providedData.length === 0) {\n newInputs[name] = [];\n } else {\n const withNodesCount = providedData.filter((d) => \"node\" in d).length;\n if (withNodesCount === 0) {\n if (originalInput.length !== providedData.length) {\n throw new Error(\n `override data provided for input '${name}' must match the length of the original inputs`\n );\n }\n newInputs[name] = providedData.map((data, i) => {\n const providedContainer = createExtensionDataContainer(\n data,\n \"extension input override\",\n declaredInput.extensionData\n );\n return Object.assign(providedContainer, {\n node: originalInput[i].node\n });\n });\n } else if (withNodesCount === providedData.length) {\n newInputs[name] = providedData;\n } else {\n throw new Error(\n `override data for input '${name}' may not mix forwarded inputs with data overrides`\n );\n }\n }\n }\n }\n return newInputs;\n}\n\nexport { resolveInputOverrides };\n//# sourceMappingURL=resolveInputOverrides.esm.js.map\n","import { z } from 'zod';\nimport zodToJsonSchema from 'zod-to-json-schema';\n\nfunction createSchemaFromZod(schemaCreator) {\n const schema = schemaCreator(z);\n return {\n // TODO: Types allow z.array etc here but it will break stuff\n parse: (input) => {\n const result = schema.safeParse(input);\n if (result.success) {\n return result.data;\n }\n throw new Error(result.error.issues.map(formatIssue).join(\"; \"));\n },\n // TODO: Verify why we are not compatible with the latest zodToJsonSchema.\n schema: zodToJsonSchema(schema)\n };\n}\nfunction formatIssue(issue) {\n if (issue.code === \"invalid_union\") {\n return formatIssue(issue.unionErrors[0].issues[0]);\n }\n let message = issue.message;\n if (message === \"Required\") {\n message = `Missing required value`;\n }\n if (issue.path.length) {\n message += ` at '${issue.path.join(\".\")}'`;\n }\n return message;\n}\n\nexport { createSchemaFromZod };\n//# sourceMappingURL=createSchemaFromZod.esm.js.map\n","class OpaqueType {\n /**\n * Creates a new opaque type.\n *\n * @param options.type The type identifier of the opaque type\n * @param options.versions The available versions of the opaque type\n * @returns A new opaque type helper\n */\n static create(options) {\n return new OpaqueType(options.type, new Set(options.versions));\n }\n #type;\n #versions;\n constructor(type, versions) {\n this.#type = type;\n this.#versions = versions;\n }\n /**\n * The internal version of the opaque type, used like this: `typeof MyOpaqueType.TPublic`\n *\n * @remarks\n *\n * This property is only useful for type checking, its runtime value is `undefined`.\n */\n TPublic = void 0;\n /**\n * The internal version of the opaque type, used like this: `typeof MyOpaqueType.TInternal`\n *\n * @remarks\n *\n * This property is only useful for type checking, its runtime value is `undefined`.\n */\n TInternal = void 0;\n /**\n * @param value Input value expected to be an instance of this opaque type\n * @returns True if the value matches this opaque type\n */\n isType = (value) => {\n return this.#isThisInternalType(value);\n };\n /**\n * @param value Input value expected to be an instance of this opaque type\n * @throws If the value is not an instance of this opaque type or is of an unsupported version\n * @returns The internal version of the opaque type\n */\n toInternal = (value) => {\n if (!this.#isThisInternalType(value)) {\n throw new TypeError(\n `Invalid opaque type, expected '${this.#type}', but got '${this.#stringifyUnknown(value)}'`\n );\n }\n if (!this.#versions.has(value.version)) {\n const versions = Array.from(this.#versions).map(this.#stringifyVersion);\n if (versions.length > 1) {\n versions[versions.length - 1] = `or ${versions[versions.length - 1]}`;\n }\n const expected = versions.length > 2 ? versions.join(\", \") : versions.join(\" \");\n throw new TypeError(\n `Invalid opaque type instance, got version ${this.#stringifyVersion(\n value.version\n )}, expected ${expected}`\n );\n }\n return value;\n };\n /**\n * Creates an instance of the opaque type, returning the public type.\n *\n * @param version The version of the instance to create\n * @param value The remaining public and internal properties of the instance\n * @returns An instance of the opaque type\n */\n createInstance(version, props) {\n return Object.assign(props, {\n $$type: this.#type,\n ...version && { version }\n });\n }\n #isThisInternalType(value) {\n if (value === null || typeof value !== \"object\") {\n return false;\n }\n return value.$$type === this.#type;\n }\n #stringifyUnknown(value) {\n if (typeof value !== \"object\") {\n return `<${typeof value}>`;\n }\n if (value === null) {\n return \"<null>\";\n }\n if (\"$$type\" in value) {\n return String(value.$$type);\n }\n return String(value);\n }\n #stringifyVersion = (version) => {\n return version ? `'${version}'` : \"undefined\";\n };\n}\n\nexport { OpaqueType };\n//# sourceMappingURL=OpaqueType.esm.js.map\n","import { OpaqueType } from '../../../opaque-internal/src/OpaqueType.esm.js';\n\nconst OpaqueExtensionDefinition = OpaqueType.create({\n type: \"@backstage/ExtensionDefinition\",\n versions: [\"v1\", \"v2\"]\n});\n\nexport { OpaqueExtensionDefinition };\n//# sourceMappingURL=InternalExtensionDefinition.esm.js.map\n","import { resolveInputOverrides } from './resolveInputOverrides.esm.js';\nimport { createSchemaFromZod } from '../schema/createSchemaFromZod.esm.js';\nimport { OpaqueExtensionDefinition } from '../frontend-internal/src/wiring/InternalExtensionDefinition.esm.js';\nimport { createExtensionDataContainer } from '../frontend-internal/src/wiring/createExtensionDataContainer.esm.js';\nimport '../frontend-internal/src/wiring/InternalSwappableComponentRef.esm.js';\nimport '../frontend-internal/src/wiring/InternalFrontendPlugin.esm.js';\n\nconst ctxParamsSymbol = Symbol(\"params\");\nfunction createExtension(options) {\n const schemaDeclaration = options.config?.schema;\n const configSchema = schemaDeclaration && createSchemaFromZod(\n (innerZ) => innerZ.object(\n Object.fromEntries(\n Object.entries(schemaDeclaration).map(([k, v]) => [k, v(innerZ)])\n )\n )\n );\n return OpaqueExtensionDefinition.createInstance(\"v2\", {\n T: void 0,\n kind: options.kind,\n name: options.name,\n attachTo: options.attachTo,\n disabled: options.disabled ?? false,\n inputs: options.inputs ?? {},\n output: options.output,\n configSchema,\n factory: options.factory,\n toString() {\n const parts = [];\n if (options.kind) {\n parts.push(`kind=${options.kind}`);\n }\n if (options.name) {\n parts.push(`name=${options.name}`);\n }\n parts.push(\n `attachTo=${[options.attachTo].flat().map((a) => `${a.id}@${a.input}`).join(\"+\")}`\n );\n return `ExtensionDefinition{${parts.join(\",\")}}`;\n },\n override(overrideOptions) {\n if (!Array.isArray(options.output)) {\n throw new Error(\n \"Cannot override an extension that is not declared using the new format with outputs as an array\"\n );\n }\n if (overrideOptions.output && !overrideOptions.factory) {\n throw new Error(\n \"Refused to override output without also overriding factory\"\n );\n }\n if (overrideOptions.params && overrideOptions.factory) {\n throw new Error(\n \"Refused to override params and factory at the same time\"\n );\n }\n return createExtension({\n kind: options.kind,\n name: options.name,\n attachTo: overrideOptions.attachTo ?? options.attachTo,\n disabled: overrideOptions.disabled ?? options.disabled,\n inputs: { ...overrideOptions.inputs, ...options.inputs },\n output: overrideOptions.output ?? options.output,\n config: options.config || overrideOptions.config ? {\n schema: {\n ...options.config?.schema,\n ...overrideOptions.config?.schema\n }\n } : void 0,\n factory: ({ node, apis, config, inputs }) => {\n if (!overrideOptions.factory) {\n return options.factory({\n node,\n apis,\n config,\n inputs,\n [ctxParamsSymbol]: overrideOptions.params\n });\n }\n const parentResult = overrideOptions.factory(\n (innerContext) => {\n return createExtensionDataContainer(\n options.factory({\n node,\n apis,\n config: innerContext?.config ?? config,\n inputs: resolveInputOverrides(\n options.inputs,\n inputs,\n innerContext?.inputs\n ),\n [ctxParamsSymbol]: innerContext?.params\n }),\n \"original extension factory\",\n options.output\n );\n },\n {\n node,\n apis,\n config,\n inputs\n }\n );\n if (typeof parentResult !== \"object\" || !parentResult?.[Symbol.iterator]) {\n throw new Error(\n \"extension factory override did not provide an iterable object\"\n );\n }\n const deduplicatedResult = /* @__PURE__ */ new Map();\n for (const item of parentResult) {\n deduplicatedResult.set(item.id, item);\n }\n return deduplicatedResult.values();\n }\n });\n }\n });\n}\n\nexport { createExtension, ctxParamsSymbol };\n//# sourceMappingURL=createExtension.esm.js.map\n","import { createExtension, ctxParamsSymbol } from './createExtension.esm.js';\nimport { resolveInputOverrides } from './resolveInputOverrides.esm.js';\nimport { OpaqueType } from '../opaque-internal/src/OpaqueType.esm.js';\nimport { createExtensionDataContainer } from '../frontend-internal/src/wiring/createExtensionDataContainer.esm.js';\n\nconst OpaqueBlueprintParams = OpaqueType.create({\n type: \"@backstage/BlueprintParams\",\n versions: [\"v1\"]\n});\nfunction createExtensionBlueprintParams(params) {\n return OpaqueBlueprintParams.createInstance(\"v1\", { T: null, params });\n}\nfunction unwrapParamsFactory(params, defineParams, kind) {\n const paramDefinition = params(defineParams);\n try {\n return OpaqueBlueprintParams.toInternal(paramDefinition).params;\n } catch (e) {\n throw new TypeError(\n `Invalid invocation of blueprint with kind '${kind}', the parameter definition callback function did not return a valid parameter definition object; Caused by: ${e.message}`\n );\n }\n}\nfunction unwrapParams(params, ctx, defineParams, kind) {\n const overrideParams = ctx[ctxParamsSymbol];\n if (defineParams) {\n if (overrideParams) {\n if (typeof overrideParams !== \"function\") {\n throw new TypeError(\n `Invalid extension override of blueprint with kind '${kind}', the override params were passed as a plain object, but this blueprint requires them to be passed in callback form`\n );\n }\n return unwrapParamsFactory(overrideParams, defineParams, kind);\n }\n if (typeof params !== \"function\") {\n throw new TypeError(\n `Invalid invocation of blueprint with kind '${kind}', the parameters where passed as a plain object, but this blueprint requires them to be passed in callback form`\n );\n }\n return unwrapParamsFactory(params, defineParams, kind);\n }\n const base = typeof params === \"function\" ? unwrapParamsFactory(\n params,\n createExtensionBlueprintParams,\n kind\n ) : params;\n const overrides = typeof overrideParams === \"function\" ? unwrapParamsFactory(\n overrideParams,\n createExtensionBlueprintParams,\n kind\n ) : overrideParams;\n return {\n ...base,\n ...overrides\n };\n}\nfunction createExtensionBlueprint(options) {\n const defineParams = options.defineParams;\n return {\n dataRefs: options.dataRefs,\n make(args) {\n return createExtension({\n kind: options.kind,\n name: args.name,\n attachTo: args.attachTo ?? options.attachTo,\n disabled: args.disabled ?? options.disabled,\n inputs: options.inputs,\n output: options.output,\n config: options.config,\n factory: (ctx) => options.factory(\n unwrapParams(args.params, ctx, defineParams, options.kind),\n ctx\n )\n });\n },\n makeWithOverrides(args) {\n return createExtension({\n kind: options.kind,\n name: args.name,\n attachTo: args.attachTo ?? options.attachTo,\n disabled: args.disabled ?? options.disabled,\n inputs: { ...args.inputs, ...options.inputs },\n output: args.output ?? options.output,\n config: options.config || args.config ? {\n schema: {\n ...options.config?.schema,\n ...args.config?.schema\n }\n } : void 0,\n factory: (ctx) => {\n const { node, config, inputs, apis } = ctx;\n return args.factory(\n (innerParams, innerContext) => {\n return createExtensionDataContainer(\n options.factory(\n unwrapParams(innerParams, ctx, defineParams, options.kind),\n {\n apis,\n node,\n config: innerContext?.config ?? config,\n inputs: resolveInputOverrides(\n options.inputs,\n inputs,\n innerContext?.inputs\n )\n }\n ),\n \"original blueprint factory\",\n options.output\n );\n },\n {\n apis,\n node,\n config,\n inputs\n }\n );\n }\n });\n }\n };\n}\n\nexport { createExtensionBlueprint, createExtensionBlueprintParams };\n//# sourceMappingURL=createExtensionBlueprint.esm.js.map\n","import '../wiring/coreExtensionData.esm.js';\nimport 'zod';\nimport 'zod-to-json-schema';\nimport { createExtensionDataRef } from '../wiring/createExtensionDataRef.esm.js';\nimport { createExtensionBlueprint, createExtensionBlueprintParams } from '../wiring/createExtensionBlueprint.esm.js';\n\nconst factoryDataRef = createExtensionDataRef().with({\n id: \"core.analytics.factory\"\n});\nconst AnalyticsImplementationBlueprint = createExtensionBlueprint({\n kind: \"analytics\",\n attachTo: [{ id: \"api:app/analytics\", input: \"implementations\" }],\n output: [factoryDataRef],\n dataRefs: {\n factory: factoryDataRef\n },\n defineParams: (params) => createExtensionBlueprintParams(params),\n *factory(params) {\n yield factoryDataRef(params);\n }\n});\n\nexport { AnalyticsImplementationBlueprint };\n//# sourceMappingURL=AnalyticsImplementationBlueprint.esm.js.map\n","import '../wiring/coreExtensionData.esm.js';\nimport 'zod';\nimport 'zod-to-json-schema';\nimport { createExtensionDataRef } from '../wiring/createExtensionDataRef.esm.js';\nimport { createExtensionBlueprint, createExtensionBlueprintParams } from '../wiring/createExtensionBlueprint.esm.js';\n\nconst factoryDataRef = createExtensionDataRef().with({\n id: \"core.api.factory\"\n});\nconst ApiBlueprint = createExtensionBlueprint({\n kind: \"api\",\n attachTo: { id: \"root\", input: \"apis\" },\n output: [factoryDataRef],\n dataRefs: {\n factory: factoryDataRef\n },\n defineParams: (params) => createExtensionBlueprintParams(params),\n *factory(params) {\n yield factoryDataRef(params);\n }\n});\n\nexport { ApiBlueprint };\n//# sourceMappingURL=ApiBlueprint.esm.js.map\n","import { createExtensionDataRef } from './createExtensionDataRef.esm.js';\n\nconst coreExtensionData = {\n reactElement: createExtensionDataRef().with({\n id: \"core.reactElement\"\n }),\n routePath: createExtensionDataRef().with({ id: \"core.routing.path\" }),\n routeRef: createExtensionDataRef().with({ id: \"core.routing.ref\" })\n};\n\nexport { coreExtensionData };\n//# sourceMappingURL=coreExtensionData.esm.js.map\n","import { coreExtensionData } from '../wiring/coreExtensionData.esm.js';\nimport 'zod';\nimport 'zod-to-json-schema';\nimport { createExtensionBlueprint } from '../wiring/createExtensionBlueprint.esm.js';\n\nconst AppRootElementBlueprint = createExtensionBlueprint({\n kind: \"app-root-element\",\n attachTo: { id: \"app/root\", input: \"elements\" },\n output: [coreExtensionData.reactElement],\n *factory(params) {\n yield coreExtensionData.reactElement(params.element);\n }\n});\n\nexport { AppRootElementBlueprint };\n//# sourceMappingURL=AppRootElementBlueprint.esm.js.map\n","import '../wiring/coreExtensionData.esm.js';\nimport 'zod';\nimport 'zod-to-json-schema';\nimport { createExtensionDataRef } from '../wiring/createExtensionDataRef.esm.js';\nimport { createExtensionBlueprint } from '../wiring/createExtensionBlueprint.esm.js';\n\nconst componentDataRef = createExtensionDataRef().with({ id: \"app.root.wrapper\" });\nconst AppRootWrapperBlueprint = createExtensionBlueprint({\n kind: \"app-root-wrapper\",\n attachTo: { id: \"app/root\", input: \"wrappers\" },\n output: [componentDataRef],\n dataRefs: {\n component: componentDataRef\n },\n *factory(params) {\n yield componentDataRef(params.component);\n }\n});\n\nexport { AppRootWrapperBlueprint };\n//# sourceMappingURL=AppRootWrapperBlueprint.esm.js.map\n","import '../wiring/coreExtensionData.esm.js';\nimport 'zod';\nimport 'zod-to-json-schema';\nimport { createExtensionDataRef } from '../wiring/createExtensionDataRef.esm.js';\nimport { createExtensionBlueprint } from '../wiring/createExtensionBlueprint.esm.js';\n\nconst iconsDataRef = createExtensionDataRef().with({ id: \"core.icons\" });\nconst IconBundleBlueprint = createExtensionBlueprint({\n kind: \"icon-bundle\",\n attachTo: { id: \"api:app/icons\", input: \"icons\" },\n output: [iconsDataRef],\n factory: (params) => [\n iconsDataRef(params.icons)\n ],\n dataRefs: {\n icons: iconsDataRef\n }\n});\n\nexport { IconBundleBlueprint };\n//# sourceMappingURL=IconBundleBlueprint.esm.js.map\n","import '../wiring/coreExtensionData.esm.js';\nimport 'zod';\nimport 'zod-to-json-schema';\nimport { createExtensionDataRef } from '../wiring/createExtensionDataRef.esm.js';\nimport { createExtensionBlueprint } from '../wiring/createExtensionBlueprint.esm.js';\n\nconst componentDataRef = createExtensionDataRef().with({\n id: \"core.nav-content.component\"\n});\nconst NavContentBlueprint = createExtensionBlueprint({\n kind: \"nav-content\",\n attachTo: { id: \"app/nav\", input: \"content\" },\n output: [componentDataRef],\n dataRefs: {\n component: componentDataRef\n },\n *factory(params) {\n yield componentDataRef(params.component);\n }\n});\n\nexport { NavContentBlueprint };\n//# sourceMappingURL=NavContentBlueprint.esm.js.map\n","import '../wiring/coreExtensionData.esm.js';\nimport 'zod';\nimport 'zod-to-json-schema';\nimport { createExtensionDataRef } from '../wiring/createExtensionDataRef.esm.js';\nimport { createExtensionBlueprint } from '../wiring/createExtensionBlueprint.esm.js';\n\nconst targetDataRef = createExtensionDataRef().with({ id: \"core.nav-item.target\" });\nconst NavItemBlueprint = createExtensionBlueprint({\n kind: \"nav-item\",\n attachTo: { id: \"app/nav\", input: \"items\" },\n output: [targetDataRef],\n dataRefs: {\n target: targetDataRef\n },\n factory: ({\n icon,\n routeRef,\n title\n }, { config }) => [\n targetDataRef({\n title: config.title ?? title,\n icon,\n routeRef\n })\n ],\n config: {\n schema: {\n title: (z) => z.string().optional()\n }\n }\n});\n\nexport { NavItemBlueprint };\n//# sourceMappingURL=NavItemBlueprint.esm.js.map\n","import { OpaqueType } from '../../../opaque-internal/src/OpaqueType.esm.js';\n\nconst OpaqueSwappableComponentRef = OpaqueType.create({\n versions: [\"v1\"],\n type: \"@backstage/SwappableComponentRef\"\n});\n\nexport { OpaqueSwappableComponentRef };\n//# sourceMappingURL=InternalSwappableComponentRef.esm.js.map\n","import { jsx } from 'react/jsx-runtime';\nimport '../apis/definitions/AppTreeApi.esm.js';\nimport { useApi } from '@backstage/core-plugin-api';\nimport { swappableComponentsApiRef } from '../apis/definitions/SwappableComponentsApi.esm.js';\nimport '../apis/definitions/IconsApi.esm.js';\nimport '../apis/definitions/DialogApi.esm.js';\nimport '../apis/definitions/RouteResolutionApi.esm.js';\nimport '../apis/definitions/AnalyticsApi.esm.js';\nimport { lazy } from 'react';\nimport { OpaqueSwappableComponentRef } from '../frontend-internal/src/wiring/InternalSwappableComponentRef.esm.js';\nimport '../frontend-internal/src/wiring/InternalExtensionDefinition.esm.js';\nimport '../frontend-internal/src/wiring/InternalFrontendPlugin.esm.js';\n\nconst useComponentRefApi = () => {\n try {\n return useApi(swappableComponentsApiRef);\n } catch (e) {\n return void 0;\n }\n};\nfunction createSwappableComponent(options) {\n const FallbackComponent = (p) => /* @__PURE__ */ jsx(\"div\", { \"data-testid\": options.id, ...p });\n const ref = OpaqueSwappableComponentRef.createInstance(\"v1\", {\n id: options.id,\n TProps: null,\n TExternalProps: null,\n toString() {\n return `SwappableComponentRef{id=${options.id}}`;\n },\n defaultComponent: lazy(async () => {\n const Component = await options.loader?.() ?? FallbackComponent;\n return { default: Component };\n }),\n transformProps: options.transformProps\n });\n const ComponentRefImpl = (props) => {\n const api = useComponentRefApi();\n if (!api) {\n const internalRef = OpaqueSwappableComponentRef.toInternal(ref);\n const Component2 = internalRef.defaultComponent;\n const innerProps = internalRef.transformProps?.(props) ?? props;\n return /* @__PURE__ */ jsx(Component2, { ...innerProps });\n }\n const Component = api.getComponent(ref);\n return /* @__PURE__ */ jsx(Component, { ...props });\n };\n Object.assign(ComponentRefImpl, { ref });\n return ComponentRefImpl;\n}\n\nexport { createSwappableComponent };\n//# sourceMappingURL=createSwappableComponent.esm.js.map\n","import { jsx } from 'react/jsx-runtime';\nimport { createSwappableComponent } from './createSwappableComponent.esm.js';\n\nconst Progress = createSwappableComponent({\n id: \"core-progress\"\n});\nconst NotFoundErrorPage = createSwappableComponent({\n id: \"core-not-found-error-page\"\n});\nconst ErrorDisplay = createSwappableComponent({\n id: \"core-error-display\",\n loader: () => (props) => /* @__PURE__ */ jsx(\"div\", { \"data-testid\": \"core-error-display\", children: props.error.message })\n});\n\nexport { ErrorDisplay, NotFoundErrorPage, Progress };\n//# sourceMappingURL=DefaultSwappableComponents.esm.js.map\n","import { jsx } from 'react/jsx-runtime';\nimport { Component } from 'react';\nimport { ErrorDisplay } from './DefaultSwappableComponents.esm.js';\n\nclass ErrorBoundary extends Component {\n static getDerivedStateFromError(error) {\n return { error };\n }\n state = { error: void 0 };\n handleErrorReset = () => {\n this.setState({ error: void 0 });\n };\n render() {\n const { error } = this.state;\n const { plugin, children } = this.props;\n if (error) {\n return /* @__PURE__ */ jsx(\n ErrorDisplay,\n {\n plugin,\n error,\n resetError: this.handleErrorReset\n }\n );\n }\n return children;\n }\n}\n\nexport { ErrorBoundary };\n//# sourceMappingURL=ErrorBoundary.esm.js.map\n","import { getOrCreateGlobalSingleton } from '@backstage/version-bridge';\n\ngetOrCreateGlobalSingleton(\n \"core-plugin-api:analytics-tracker-events\",\n () => ({\n mostRecentGatheredNavigation: void 0,\n mostRecentRoutableExtensionRender: void 0,\n beforeUnloadRegistered: false\n })\n);\nconst routableExtensionRenderedEvent = \"_ROUTABLE-EXTENSION-RENDERED\";\n\nexport { routableExtensionRenderedEvent };\n//# sourceMappingURL=Tracker.esm.js.map\n","import { jsx } from 'react/jsx-runtime';\nimport { createVersionedContext, createVersionedValueMap, useVersionedContext } from '@backstage/version-bridge';\n\nconst CONTEXT_KEY = \"app-node-context\";\nconst AppNodeContext = createVersionedContext(CONTEXT_KEY);\nfunction AppNodeProvider({\n node,\n children\n}) {\n const versionedValue = createVersionedValueMap({ 1: { node } });\n return /* @__PURE__ */ jsx(AppNodeContext.Provider, { value: versionedValue, children });\n}\nfunction useAppNode() {\n const versionedContext = useVersionedContext(CONTEXT_KEY);\n if (!versionedContext) {\n return void 0;\n }\n const context = versionedContext.atVersion(1);\n if (!context) {\n throw new Error(\"AppNodeContext v1 not available\");\n }\n return context.node;\n}\n\nexport { AppNodeProvider, useAppNode };\n//# sourceMappingURL=AppNodeProvider.esm.js.map\n","import { jsx, Fragment } from 'react/jsx-runtime';\nimport { lazy, Suspense, useEffect } from 'react';\nimport { AnalyticsContext, useAnalytics } from '@backstage/core-plugin-api';\nimport { ErrorBoundary } from './ErrorBoundary.esm.js';\nimport { routableExtensionRenderedEvent } from '../core-plugin-api/src/analytics/Tracker.esm.js';\nimport { coreExtensionData } from '../wiring/coreExtensionData.esm.js';\nimport 'zod';\nimport 'zod-to-json-schema';\nimport '../wiring/createExtensionBlueprint.esm.js';\nimport { AppNodeProvider } from './AppNodeProvider.esm.js';\nimport { Progress } from './DefaultSwappableComponents.esm.js';\n\nconst RouteTracker = (props) => {\n const { enabled, children } = props;\n const analytics = useAnalytics();\n useEffect(() => {\n if (enabled) {\n analytics.captureEvent(routableExtensionRenderedEvent, \"\");\n }\n }, [analytics, enabled]);\n return /* @__PURE__ */ jsx(Fragment, { children });\n};\nfunction ExtensionBoundary(props) {\n const { node, children } = props;\n const hasRoutePathOutput = Boolean(\n node.instance?.getData(coreExtensionData.routePath)\n );\n const plugin = node.spec.plugin;\n const attributes = {\n extensionId: node.spec.id,\n pluginId: node.spec.plugin?.id ?? \"app\"\n };\n return /* @__PURE__ */ jsx(AppNodeProvider, { node, children: /* @__PURE__ */ jsx(Suspense, { fallback: /* @__PURE__ */ jsx(Progress, {}), children: /* @__PURE__ */ jsx(ErrorBoundary, { plugin, children: /* @__PURE__ */ jsx(AnalyticsContext, { attributes, children: /* @__PURE__ */ jsx(RouteTracker, { enabled: hasRoutePathOutput, children }) }) }) }) });\n}\n((ExtensionBoundary2) => {\n function lazy$1(appNode, loader) {\n const ExtensionComponent = lazy(\n () => loader().then((element) => ({ default: () => element }))\n );\n return /* @__PURE__ */ jsx(ExtensionBoundary2, { node: appNode, children: /* @__PURE__ */ jsx(ExtensionComponent, {}) });\n }\n ExtensionBoundary2.lazy = lazy$1;\n function lazyComponent(appNode, loader) {\n const ExtensionComponent = lazy(\n () => loader().then((Component) => ({ default: Component }))\n );\n return (props) => /* @__PURE__ */ jsx(ExtensionBoundary2, { node: appNode, children: /* @__PURE__ */ jsx(ExtensionComponent, { ...props }) });\n }\n ExtensionBoundary2.lazyComponent = lazyComponent;\n})(ExtensionBoundary || (ExtensionBoundary = {}));\n\nexport { ExtensionBoundary };\n//# sourceMappingURL=ExtensionBoundary.esm.js.map\n","import { coreExtensionData } from '../wiring/coreExtensionData.esm.js';\nimport 'zod';\nimport 'zod-to-json-schema';\nimport { createExtensionBlueprint } from '../wiring/createExtensionBlueprint.esm.js';\nimport { ExtensionBoundary } from '../components/ExtensionBoundary.esm.js';\nimport 'react/jsx-runtime';\nimport '../apis/definitions/AppTreeApi.esm.js';\nimport '@backstage/core-plugin-api';\nimport '../apis/definitions/SwappableComponentsApi.esm.js';\nimport '../apis/definitions/IconsApi.esm.js';\nimport '../apis/definitions/DialogApi.esm.js';\nimport '../apis/definitions/RouteResolutionApi.esm.js';\nimport '../apis/definitions/AnalyticsApi.esm.js';\nimport 'react';\nimport '../components/AppNodeProvider.esm.js';\nimport '../components/DefaultSwappableComponents.esm.js';\n\nconst PageBlueprint = createExtensionBlueprint({\n kind: \"page\",\n attachTo: { id: \"app/routes\", input: \"routes\" },\n output: [\n coreExtensionData.routePath,\n coreExtensionData.reactElement,\n coreExtensionData.routeRef.optional()\n ],\n config: {\n schema: {\n path: (z) => z.string().optional()\n }\n },\n *factory(params, { config, node }) {\n yield coreExtensionData.routePath(config.path ?? params.path);\n yield coreExtensionData.reactElement(\n ExtensionBoundary.lazy(node, params.loader)\n );\n if (params.routeRef) {\n yield coreExtensionData.routeRef(params.routeRef);\n }\n }\n});\n\nexport { PageBlueprint };\n//# sourceMappingURL=PageBlueprint.esm.js.map\n","import '../wiring/coreExtensionData.esm.js';\nimport 'zod';\nimport 'zod-to-json-schema';\nimport { createExtensionDataRef } from '../wiring/createExtensionDataRef.esm.js';\nimport { createExtensionBlueprint } from '../wiring/createExtensionBlueprint.esm.js';\n\nconst componentDataRef = createExtensionDataRef().with({ id: \"app.router.wrapper\" });\nconst RouterBlueprint = createExtensionBlueprint({\n kind: \"app-router-component\",\n attachTo: { id: \"app/root\", input: \"router\" },\n output: [componentDataRef],\n dataRefs: {\n component: componentDataRef\n },\n *factory(params) {\n yield componentDataRef(params.component);\n }\n});\n\nexport { RouterBlueprint };\n//# sourceMappingURL=RouterBlueprint.esm.js.map\n","import { jsx } from 'react/jsx-runtime';\nimport { lazy } from 'react';\nimport '../wiring/coreExtensionData.esm.js';\nimport 'zod';\nimport 'zod-to-json-schema';\nimport { createExtensionDataRef } from '../wiring/createExtensionDataRef.esm.js';\nimport { createExtensionBlueprint } from '../wiring/createExtensionBlueprint.esm.js';\nimport { ExtensionBoundary } from '../components/ExtensionBoundary.esm.js';\nimport '../apis/definitions/AppTreeApi.esm.js';\nimport '@backstage/core-plugin-api';\nimport '../apis/definitions/SwappableComponentsApi.esm.js';\nimport '../apis/definitions/IconsApi.esm.js';\nimport '../apis/definitions/DialogApi.esm.js';\nimport '../apis/definitions/RouteResolutionApi.esm.js';\nimport '../apis/definitions/AnalyticsApi.esm.js';\nimport '../components/AppNodeProvider.esm.js';\nimport '../components/DefaultSwappableComponents.esm.js';\n\nconst componentDataRef = createExtensionDataRef().with({ id: \"core.sign-in-page.component\" });\nconst SignInPageBlueprint = createExtensionBlueprint({\n kind: \"sign-in-page\",\n attachTo: { id: \"app/root\", input: \"signInPage\" },\n output: [componentDataRef],\n dataRefs: {\n component: componentDataRef\n },\n *factory({\n loader\n }, { node }) {\n const ExtensionComponent = lazy(\n () => loader().then((component) => ({ default: component }))\n );\n yield componentDataRef((props) => /* @__PURE__ */ jsx(ExtensionBoundary, { node, children: /* @__PURE__ */ jsx(ExtensionComponent, { ...props }) }));\n }\n});\n\nexport { SignInPageBlueprint };\n//# sourceMappingURL=SignInPageBlueprint.esm.js.map\n","import '../wiring/coreExtensionData.esm.js';\nimport 'zod';\nimport 'zod-to-json-schema';\nimport { createExtensionDataRef } from '../wiring/createExtensionDataRef.esm.js';\nimport { createExtensionBlueprint } from '../wiring/createExtensionBlueprint.esm.js';\n\nconst themeDataRef = createExtensionDataRef().with({\n id: \"core.theme.theme\"\n});\nconst ThemeBlueprint = createExtensionBlueprint({\n kind: \"theme\",\n attachTo: { id: \"api:app/app-theme\", input: \"themes\" },\n output: [themeDataRef],\n dataRefs: {\n theme: themeDataRef\n },\n factory: ({ theme }) => [themeDataRef(theme)]\n});\n\nexport { ThemeBlueprint };\n//# sourceMappingURL=ThemeBlueprint.esm.js.map\n","import '../wiring/coreExtensionData.esm.js';\nimport 'zod';\nimport 'zod-to-json-schema';\nimport { createExtensionDataRef } from '../wiring/createExtensionDataRef.esm.js';\nimport { createExtensionBlueprint } from '../wiring/createExtensionBlueprint.esm.js';\n\nconst translationDataRef = createExtensionDataRef().with({ id: \"core.translation.translation\" });\nconst TranslationBlueprint = createExtensionBlueprint({\n kind: \"translation\",\n attachTo: { id: \"api:app/translations\", input: \"translations\" },\n output: [translationDataRef],\n dataRefs: {\n translation: translationDataRef\n },\n factory: ({\n resource\n }) => [translationDataRef(resource)]\n});\n\nexport { TranslationBlueprint };\n//# sourceMappingURL=TranslationBlueprint.esm.js.map\n","import '../wiring/coreExtensionData.esm.js';\nimport 'zod';\nimport 'zod-to-json-schema';\nimport { createExtensionDataRef } from '../wiring/createExtensionDataRef.esm.js';\nimport { createExtensionBlueprint, createExtensionBlueprintParams } from '../wiring/createExtensionBlueprint.esm.js';\n\nconst componentDataRef = createExtensionDataRef().with({ id: \"core.swappableComponent\" });\nconst SwappableComponentBlueprint = createExtensionBlueprint({\n kind: \"component\",\n attachTo: { id: \"api:app/swappable-components\", input: \"components\" },\n output: [componentDataRef],\n dataRefs: {\n component: componentDataRef\n },\n defineParams(params) {\n return createExtensionBlueprintParams(params);\n },\n factory: (params) => [\n componentDataRef({\n ref: params.component.ref,\n loader: params.loader\n })\n ]\n});\n\nexport { SwappableComponentBlueprint, componentDataRef };\n//# sourceMappingURL=SwappableComponentBlueprint.esm.js.map\n","const MESSAGE_MARKER = \"eHgtF5hmbrXyiEvo\";\nfunction describeParentCallSite(ErrorConstructor = Error) {\n const { stack } = new ErrorConstructor(MESSAGE_MARKER);\n if (!stack) {\n return \"<unknown>\";\n }\n const startIndex = stack.includes(MESSAGE_MARKER) ? stack.indexOf(\"\\n\") + 1 : 0;\n const secondEntryStart = stack.indexOf(\"\\n\", stack.indexOf(\"\\n\", startIndex) + 1) + 1;\n const secondEntryEnd = stack.indexOf(\"\\n\", secondEntryStart);\n const line = stack.substring(secondEntryStart, secondEntryEnd).trim();\n if (!line) {\n return \"unknown\";\n }\n if (line.includes(\"(\")) {\n return line.substring(line.indexOf(\"(\") + 1, line.indexOf(\")\"));\n }\n if (line.includes(\"@\")) {\n return line.substring(line.indexOf(\"@\") + 1);\n }\n return line;\n}\n\nexport { describeParentCallSite };\n//# sourceMappingURL=describeParentCallSite.esm.js.map\n","import { describeParentCallSite } from './describeParentCallSite.esm.js';\n\nfunction toInternalRouteRef(resource) {\n const r = resource;\n if (r.$$type !== \"@backstage/RouteRef\") {\n throw new Error(`Invalid RouteRef, bad type '${r.$$type}'`);\n }\n return r;\n}\nclass RouteRefImpl {\n constructor(params = [], creationSite, alias) {\n this.params = params;\n this.#params = params;\n this.#creationSite = creationSite;\n this.#alias = alias;\n }\n $$type = \"@backstage/RouteRef\";\n version = \"v1\";\n #id;\n #params;\n #creationSite;\n #alias;\n getParams() {\n return this.#params;\n }\n get alias() {\n return this.#alias;\n }\n getDescription() {\n if (this.#id) {\n return this.#id;\n }\n return `created at '${this.#creationSite}'`;\n }\n get #name() {\n return this.$$type.slice(\"@backstage/\".length);\n }\n setId(id) {\n if (!id) {\n throw new Error(`${this.#name} id must be a non-empty string`);\n }\n if (this.#id && this.#id !== id) {\n throw new Error(\n `${this.#name} was referenced twice as both '${this.#id}' and '${id}'`\n );\n }\n this.#id = id;\n }\n toString() {\n return `${this.#name}{${this.getDescription()}}`;\n }\n}\nfunction createRouteRef(config) {\n return new RouteRefImpl(\n config?.params,\n describeParentCallSite(),\n config?.aliasFor\n );\n}\n\nexport { RouteRefImpl, createRouteRef, toInternalRouteRef };\n//# sourceMappingURL=RouteRef.esm.js.map\n","import { toInternalRouteRef } from './RouteRef.esm.js';\n\nconst PARAM_PATTERN = /^\\w+$/;\nclass SubRouteRefImpl {\n constructor(path, params, parent) {\n this.path = path;\n this.#params = params;\n this.#parent = parent;\n }\n $$type = \"@backstage/SubRouteRef\";\n version = \"v1\";\n #params;\n #parent;\n getParams() {\n return this.#params;\n }\n getParent() {\n return this.#parent;\n }\n getDescription() {\n const parent = toInternalRouteRef(this.#parent);\n return `at ${this.path} with parent ${parent.getDescription()}`;\n }\n toString() {\n return `SubRouteRef{${this.getDescription()}}`;\n }\n}\nfunction createSubRouteRef(config) {\n const { path, parent } = config;\n const internalParent = toInternalRouteRef(parent);\n const parentParams = internalParent.getParams();\n const pathParams = path.split(\"/\").filter((p) => p.startsWith(\":\")).map((p) => p.substring(1));\n const params = [...parentParams, ...pathParams];\n if (parentParams.some((p) => pathParams.includes(p))) {\n throw new Error(\n \"SubRouteRef may not have params that overlap with its parent\"\n );\n }\n if (!path.startsWith(\"/\")) {\n throw new Error(`SubRouteRef path must start with '/', got '${path}'`);\n }\n if (path.endsWith(\"/\")) {\n throw new Error(`SubRouteRef path must not end with '/', got '${path}'`);\n }\n for (const param of pathParams) {\n if (!PARAM_PATTERN.test(param)) {\n throw new Error(`SubRouteRef path has invalid param, got '${param}'`);\n }\n }\n const subRouteRef = new SubRouteRefImpl(\n path,\n params,\n parent\n );\n return subRouteRef;\n}\n\nexport { SubRouteRefImpl, createSubRouteRef };\n//# sourceMappingURL=SubRouteRef.esm.js.map\n","import { RouteRefImpl } from './RouteRef.esm.js';\nimport { describeParentCallSite } from './describeParentCallSite.esm.js';\n\nclass ExternalRouteRefImpl extends RouteRefImpl {\n constructor(params = [], defaultTarget, creationSite) {\n super(params, creationSite);\n this.params = params;\n this.defaultTarget = defaultTarget;\n }\n $$type = \"@backstage/ExternalRouteRef\";\n getDefaultTarget() {\n return this.defaultTarget;\n }\n}\nfunction createExternalRouteRef(options) {\n return new ExternalRouteRefImpl(\n options?.params,\n options?.defaultTarget,\n describeParentCallSite()\n );\n}\n\nexport { createExternalRouteRef };\n//# sourceMappingURL=ExternalRouteRef.esm.js.map\n","import { useMemo } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport '../apis/definitions/AppTreeApi.esm.js';\nimport { useApi } from '@backstage/core-plugin-api';\nimport '../apis/definitions/SwappableComponentsApi.esm.js';\nimport '../apis/definitions/IconsApi.esm.js';\nimport '../apis/definitions/DialogApi.esm.js';\nimport { routeResolutionApiRef } from '../apis/definitions/RouteResolutionApi.esm.js';\nimport '../apis/definitions/AnalyticsApi.esm.js';\n\nfunction useRouteRef(routeRef) {\n const { pathname } = useLocation();\n const routeResolutionApi = useApi(routeResolutionApiRef);\n const routeFunc = useMemo(\n () => routeResolutionApi.resolve(routeRef, { sourcePath: pathname }),\n [routeResolutionApi, routeRef, pathname]\n );\n return routeFunc;\n}\n\nexport { useRouteRef };\n//# sourceMappingURL=useRouteRef.esm.js.map\n","import { useParams } from 'react-router-dom';\n\nfunction useRouteRefParams(_routeRef) {\n return useParams();\n}\n\nexport { useRouteRefParams };\n//# sourceMappingURL=useRouteRefParams.esm.js.map\n","function createExtensionInput(extensionData, config) {\n if (process.env.NODE_ENV !== \"production\") {\n if (Array.isArray(extensionData)) {\n const seen = /* @__PURE__ */ new Set();\n const duplicates = [];\n for (const dataRef of extensionData) {\n if (seen.has(dataRef.id)) {\n duplicates.push(dataRef.id);\n } else {\n seen.add(dataRef.id);\n }\n }\n if (duplicates.length > 0) {\n throw new Error(\n `ExtensionInput may not have duplicate data refs: '${duplicates.join(\n \"', '\"\n )}'`\n );\n }\n }\n }\n return {\n $$type: \"@backstage/ExtensionInput\",\n extensionData,\n config: {\n singleton: Boolean(config?.singleton),\n optional: Boolean(config?.optional)\n },\n replaces: config?.replaces\n };\n}\n\nexport { createExtensionInput };\n//# sourceMappingURL=createExtensionInput.esm.js.map\n","import { OpaqueExtensionDefinition } from '../frontend-internal/src/wiring/InternalExtensionDefinition.esm.js';\n\nfunction resolveExtensionDefinition(definition, context) {\n const internalDefinition = OpaqueExtensionDefinition.toInternal(definition);\n const {\n name,\n kind,\n namespace: _skip1,\n override: _skip2,\n ...rest\n } = internalDefinition;\n const namespace = internalDefinition.namespace ?? context?.namespace;\n const namePart = name && namespace ? `${namespace}/${name}` : namespace || name;\n if (!namePart) {\n throw new Error(\n `Extension must declare an explicit namespace or name as it could not be resolved from context, kind=${kind} namespace=${namespace} name=${name}`\n );\n }\n const id = kind ? `${kind}:${namePart}` : namePart;\n return {\n ...rest,\n $$type: \"@backstage/Extension\",\n version: internalDefinition.version,\n id,\n toString() {\n return `Extension{id=${id}}`;\n }\n };\n}\n\nexport { resolveExtensionDefinition };\n//# sourceMappingURL=resolveExtensionDefinition.esm.js.map\n","import { OpaqueType } from '../../../opaque-internal/src/OpaqueType.esm.js';\n\nconst OpaqueFrontendPlugin = OpaqueType.create({\n type: \"@backstage/FrontendPlugin\",\n versions: [\"v1\"]\n});\n\nexport { OpaqueFrontendPlugin };\n//# sourceMappingURL=InternalFrontendPlugin.esm.js.map\n","import { resolveExtensionDefinition } from './resolveExtensionDefinition.esm.js';\nimport { OpaqueFrontendPlugin } from '../frontend-internal/src/wiring/InternalFrontendPlugin.esm.js';\nimport '../frontend-internal/src/wiring/InternalSwappableComponentRef.esm.js';\nimport { OpaqueExtensionDefinition } from '../frontend-internal/src/wiring/InternalExtensionDefinition.esm.js';\n\nfunction createFrontendPlugin(options) {\n const pluginId = options.pluginId;\n const extensions = new Array();\n const extensionDefinitionsById = /* @__PURE__ */ new Map();\n for (const def of options.extensions ?? []) {\n const internal = OpaqueExtensionDefinition.toInternal(def);\n const ext = resolveExtensionDefinition(def, { namespace: pluginId });\n extensions.push(ext);\n extensionDefinitionsById.set(ext.id, {\n ...internal,\n namespace: pluginId\n });\n }\n if (extensions.length !== extensionDefinitionsById.size) {\n const extensionIds = extensions.map((e) => e.id);\n const duplicates = Array.from(\n new Set(\n extensionIds.filter((id, index) => extensionIds.indexOf(id) !== index)\n )\n );\n throw new Error(\n `Plugin '${pluginId}' provided duplicate extensions: ${duplicates.join(\n \", \"\n )}`\n );\n }\n return OpaqueFrontendPlugin.createInstance(\"v1\", {\n id: pluginId,\n routes: options.routes ?? {},\n externalRoutes: options.externalRoutes ?? {},\n featureFlags: options.featureFlags ?? [],\n extensions,\n infoOptions: options.info,\n // This method is overridden when the plugin instance is installed in an app\n async info() {\n throw new Error(\n `Attempted to load plugin info for plugin '${pluginId}', but the plugin instance is not installed in an app`\n );\n },\n getExtension(id) {\n const ext = extensionDefinitionsById.get(id);\n if (!ext) {\n throw new Error(\n `Attempted to get non-existent extension '${id}' from plugin '${pluginId}'`\n );\n }\n return ext;\n },\n toString() {\n return `Plugin{id=${pluginId}}`;\n },\n withOverrides(overrides) {\n const overriddenExtensionIds = new Set(\n overrides.extensions.map(\n (e) => resolveExtensionDefinition(e, { namespace: pluginId }).id\n )\n );\n const nonOverriddenExtensions = (options.extensions ?? []).filter(\n (e) => !overriddenExtensionIds.has(\n resolveExtensionDefinition(e, { namespace: pluginId }).id\n )\n );\n return createFrontendPlugin({\n ...options,\n pluginId,\n extensions: [...nonOverriddenExtensions, ...overrides.extensions],\n info: {\n ...options.info,\n ...overrides.info\n }\n });\n }\n });\n}\n\nexport { createFrontendPlugin };\n//# sourceMappingURL=createFrontendPlugin.esm.js.map\n","import { resolveExtensionDefinition } from './resolveExtensionDefinition.esm.js';\nimport { OpaqueExtensionDefinition } from '../frontend-internal/src/wiring/InternalExtensionDefinition.esm.js';\n\nfunction createFrontendModule(options) {\n const { pluginId } = options;\n const extensions = new Array();\n const extensionDefinitionsById = /* @__PURE__ */ new Map();\n for (const def of options.extensions ?? []) {\n const internal = OpaqueExtensionDefinition.toInternal(def);\n const ext = resolveExtensionDefinition(def, { namespace: pluginId });\n extensions.push(ext);\n extensionDefinitionsById.set(ext.id, {\n ...internal,\n namespace: pluginId\n });\n }\n if (extensions.length !== extensionDefinitionsById.size) {\n const extensionIds = extensions.map((e) => e.id);\n const duplicates = Array.from(\n new Set(\n extensionIds.filter((id, index) => extensionIds.indexOf(id) !== index)\n )\n );\n throw new Error(\n `Plugin '${pluginId}' provided duplicate extensions: ${duplicates.join(\n \", \"\n )}`\n );\n }\n return {\n $$type: \"@backstage/FrontendModule\",\n version: \"v1\",\n pluginId,\n featureFlags: options.featureFlags ?? [],\n extensions,\n toString() {\n return `Module{pluginId=${pluginId}}`;\n }\n };\n}\n\nexport { createFrontendModule };\n//# sourceMappingURL=createFrontendModule.esm.js.map\n","import { describeParentCallSite } from '../routing/describeParentCallSite.esm.js';\n\nfunction createFrontendFeatureLoader(options) {\n const description = `created at '${describeParentCallSite()}'`;\n return {\n $$type: \"@backstage/FrontendFeatureLoader\",\n version: \"v1\",\n description,\n toString() {\n return `FeatureLoader{description=${description}}`;\n },\n async loader(deps) {\n const it = await options.loader(deps);\n const result = new Array();\n for await (const item of it) {\n if (isFeatureOrLoader(item)) {\n result.push(item);\n } else if (\"default\" in item) {\n result.push(item.default);\n } else {\n throw new Error(`Invalid item \"${item}\"`);\n }\n }\n return result;\n }\n };\n}\nfunction isFeatureOrLoader(obj) {\n if (obj !== null && typeof obj === \"object\" && \"$$type\" in obj) {\n return obj.$$type === \"@backstage/FrontendPlugin\" || obj.$$type === \"@backstage/FrontendModule\" || obj.$$type === \"@backstage/FrontendFeatureLoader\";\n }\n return false;\n}\n\nexport { createFrontendFeatureLoader };\n//# sourceMappingURL=createFrontendFeatureLoader.esm.js.map\n"],"names":["AnalyticsReactContext","index_esm_js_","createVersionedContext","useAnalyticsContext","theContext","index_js_","useContext","pluginId","extensionId","theValue","atVersion","Error","AnalyticsContext","options","attributes","children","combinedValue","versionedCombinedValue","createVersionedValueMap","jsx_runtime","jsx","Provider","value","analyticsApiRef","dist_index_esm_js_","createApiRef","id","globalEvents","getOrCreateGlobalSingleton","mostRecentGatheredNavigation","mostRecentRoutableExtensionRender","beforeUnloadRegistered","Tracker","constructor","analyticsApi","context","this","addEventListener","captureEvent","once","passive","setContext","action","subject","e","console","warn","useAnalytics","trackerRef","useRef","useApi","error","name","useAnalyticsApi","tracker","current","appTreeApiRef","swappableComponentsApiRef","iconsApiRef","dialogApiRef","routeResolutionApiRef","createExtensionDataRef","createRef","refId","Object","assign","$$type","config","optional","toString","Boolean","with","createExtensionDataContainer","values","contextName","declaredRefs","Symbol","iterator","container","Map","verifyRefs","map","ref","output","delete","set","remainingRefs","Array","from","filter","length","join","get","expectArray","expectItem","resolveInputOverrides","declaredInputs","inputs","inputOverrides","newInputs","hasOwn","declaredInput","providedData","singleton","originalInput","providedContainer","extensionData","node","isArray","withNodesCount","d","data","i","formatIssue","issue","code","unionErrors","issues","message","path","OpaqueType","create","type","Set","versions","TPublic","TInternal","isType","isThisInternalType","toInternal","TypeError","stringifyUnknown","has","version","stringifyVersion","expected","createInstance","props","String","OpaqueExtensionDefinition","ctxParamsSymbol","createExtension","schemaDeclaration","schema","configSchema","innerZ","external","object","fromEntries","entries","k","v","parse","input","result","safeParse","success","esm","Ay","createSchemaFromZod","T","kind","attachTo","disabled","factory","parts","push","flat","a","override","overrideOptions","params","apis","parentResult","innerContext","deduplicatedResult","item","OpaqueBlueprintParams","createExtensionBlueprintParams","unwrapParamsFactory","defineParams","paramDefinition","unwrapParams","ctx","overrideParams","createExtensionBlueprint","dataRefs","make","args","makeWithOverrides","innerParams","factoryDataRef","AnalyticsImplementationBlueprint","ApiBlueprint_esm_factoryDataRef","ApiBlueprint","coreExtensionData","reactElement","routePath","routeRef","AppRootElementBlueprint","element","componentDataRef","AppRootWrapperBlueprint","component","iconsDataRef","IconBundleBlueprint","icons","NavContentBlueprint_esm_componentDataRef","NavContentBlueprint","targetDataRef","NavItemBlueprint","target","icon","title","z","string","OpaqueSwappableComponentRef","useComponentRefApi","createSwappableComponent","FallbackComponent","p","TProps","TExternalProps","defaultComponent","lazy","async","default","loader","transformProps","ComponentRefImpl","api","internalRef","Component2","innerProps","Component","getComponent","Progress","NotFoundErrorPage","ErrorDisplay","ErrorBoundary","getDerivedStateFromError","state","handleErrorReset","setState","render","plugin","resetError","CONTEXT_KEY","AppNodeContext","AppNodeProvider","versionedValue","useAppNode","versionedContext","useVersionedContext","RouteTracker","enabled","analytics","useEffect","Fragment","ExtensionBoundary","hasRoutePathOutput","instance","getData","spec","Suspense","fallback","ExtensionBoundary2","appNode","ExtensionComponent","then","lazyComponent","PageBlueprint","RouterBlueprint_esm_componentDataRef","RouterBlueprint","SignInPageBlueprint_esm_componentDataRef","SignInPageBlueprint","themeDataRef","ThemeBlueprint","theme","translationDataRef","TranslationBlueprint","translation","resource","SwappableComponentBlueprint_esm_componentDataRef","SwappableComponentBlueprint","MESSAGE_MARKER","describeParentCallSite","ErrorConstructor","stack","startIndex","includes","indexOf","secondEntryStart","secondEntryEnd","line","substring","trim","toInternalRouteRef","r","RouteRefImpl","creationSite","alias","getParams","getDescription","slice","setId","createRouteRef","aliasFor","PARAM_PATTERN","SubRouteRefImpl","parent","getParent","createSubRouteRef","parentParams","pathParams","split","startsWith","some","endsWith","param","test","ExternalRouteRefImpl","defaultTarget","super","getDefaultTarget","createExternalRouteRef","useRouteRef","pathname","dist_index_js_","useLocation","routeResolutionApi","useMemo","resolve","sourcePath","useRouteRefParams","_routeRef","useParams","createExtensionInput","replaces","resolveExtensionDefinition","definition","internalDefinition","namespace","_skip1","_skip2","rest","namePart","OpaqueFrontendPlugin","createFrontendPlugin","extensions","extensionDefinitionsById","def","internal","ext","size","extensionIds","duplicates","index","routes","externalRoutes","featureFlags","infoOptions","info","getExtension","withOverrides","overrides","overriddenExtensionIds","nonOverriddenExtensions","createFrontendModule","createFrontendFeatureLoader","description","deps","it","isFeatureOrLoader","obj"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunkkuadrant_kuadrant_backstage_plugin_frontend=self.webpackChunkkuadrant_kuadrant_backstage_plugin_frontend||[]).push([[3917],{27799:(e,t,r)=>{var n=r(4293),s=r(78920);t.A=void 0;var a=s(r(95478)),o=(0,n(r(74044)).default)(a.createElement("path",{d:"M21 5v6.59l-3-3.01-4 4.01-4-4-4 4-3-3.01V5c0-1.1.9-2 2-2h14c1.1 0 2 .9 2 2zm-3 6.42l3 3.01V19c0 1.1-.9 2-2 2H5c-1.1 0-2-.9-2-2v-6.58l3 2.99 4-4 4 4 4-3.99z"}),"BrokenImage");t.A=o},55429:(e,t,r)=>{var n=r(4293),s=r(78920);t.A=void 0;var a=s(r(95478)),o=(0,n(r(74044)).default)(a.createElement("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"}),"CheckCircle");t.A=o},23164:(e,t,r)=>{var n=r(4293),s=r(78920);t.A=void 0;var a=s(r(95478)),o=(0,n(r(74044)).default)(a.createElement("path",{d:"M12 8l-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z"}),"ExpandLess");t.A=o},35015:(e,t,r)=>{r.d(t,{A:()=>o});var n=r(95478),s=r(85608),a=r(71581);function o(e,t){void 0===t&&(t=[]);var r=function(e,t,r){void 0===t&&(t=[]),void 0===r&&(r={loading:!1});var o=(0,n.useRef)(0),i=(0,a.A)(),l=(0,n.useState)(r),c=l[0],d=l[1],p=(0,n.useCallback)(function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];var n=++o.current;return c.loading||d(function(e){return(0,s.__assign)((0,s.__assign)({},e),{loading:!0})}),e.apply(void 0,t).then(function(e){return i()&&n===o.current&&d({value:e,loading:!1}),e},function(e){return i()&&n===o.current&&d({error:e,loading:!1}),e})},t);return[c,p]}(e,t,{loading:!0}),o=r[0],i=r[1];return(0,n.useEffect)(function(){i()},[i]),o}},73917:(e,t,r)=>{r.r(t),r.d(t,{ApiKeyApprovalPage:()=>D,ApiKeyApprovalPageWithPermissions:()=>U});var n=r(31085),s=r(95478),a=r.n(s),o=r(289),i=r(15831),l=r(45210),c=r(46681),d=r(22097),p=r(70980),u=r(35015),m=r(37725),g=r(42367),h=r(25010),v=r(34955),x=r(46205),A=r(58837),f=r(76891),j=r(61477),y=r(10394),b=r(46805),k=r(72501),C=r(16249),w=r(93453),S=r(64947),P=r(78467),R=r(67720),q=r(4387),I=r(55429),B=r(92399),z=r(12229),N=r(46299),T=r(16325);const $=(0,A.A)(e=>({container:{display:"flex",height:"100%",minHeight:400},tableContainer:{flex:1,overflow:"auto",padding:10},useCasePanel:{padding:e.spacing(2),backgroundColor:e.palette.background.default},useCaseLabel:{fontWeight:600,marginBottom:e.spacing(1),color:e.palette.text.secondary,textTransform:"uppercase",fontSize:"0.75rem"},bulkActions:{padding:e.spacing(2),backgroundColor:e.palette.background.default,borderBottom:`1px solid ${e.palette.divider}`,display:"flex",alignItems:"center",justifyContent:"space-between"}})),F=({open:e,request:t,action:r,processing:s,onClose:o,onConfirm:i})=>{var l,c;const[d,p]=a().useState(""),u="approve"===r?"Approve":"Reject",m="approve"===r?"Approving...":"Rejecting...",g="reject"===r,h=(null==t||null===(l=t.spec.requestedBy)||void 0===l?void 0:l.userId)||"",v=!g||d===h;return a().useEffect(()=>{e||p("")},[e]),(0,n.jsxs)(f.A,{open:e,onClose:s?void 0:o,maxWidth:"sm",fullWidth:!0,children:[(0,n.jsx)(j.A,{children:g?(0,n.jsxs)(y.A,{display:"flex",alignItems:"center",style:{gap:8},children:[(0,n.jsx)(B.A,{color:"error"}),(0,n.jsxs)("span",{children:[u," API Key"]})]}):(0,n.jsxs)("span",{children:[u," API Key"]})}),(0,n.jsx)(b.A,{children:t&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("p",{children:[(0,n.jsx)("strong",{children:"User:"})," ",t.spec.requestedBy.userId]}),(0,n.jsxs)("p",{children:[(0,n.jsx)("strong",{children:"API:"})," ",(null===(c=t.spec.apiProductRef)||void 0===c?void 0:c.name)||"unknown"]}),(0,n.jsxs)("p",{children:[(0,n.jsx)("strong",{children:"Tier:"})," ",t.spec.planTier]}),(0,n.jsxs)(y.A,{mb:2,children:[(0,n.jsx)(k.A,{variant:"body2",component:"span",style:{fontWeight:"bold"},children:"Use Case:"})," ",(0,n.jsx)(k.A,{variant:"body2",component:"span",style:{whiteSpace:"pre-wrap"},children:t.spec.useCase||"-"})]}),g&&(0,n.jsxs)(y.A,{mt:2,children:[(0,n.jsxs)(k.A,{variant:"body2",color:"textSecondary",gutterBottom:!0,children:["Type ",(0,n.jsx)("strong",{children:h})," to confirm rejection:"]}),(0,n.jsx)(C.A,{fullWidth:!0,variant:"outlined",size:"small",value:d,onChange:e=>p(e.target.value),disabled:s,autoFocus:!0,placeholder:h})]})]})}),(0,n.jsxs)(w.A,{children:[(0,n.jsx)(S.A,{onClick:o,disabled:s,children:"Cancel"}),(0,n.jsx)(S.A,{onClick:i,color:"approve"===r?"primary":"secondary",variant:"contained",disabled:s||!v,startIcon:s?(0,n.jsx)(P.A,{size:16,color:"inherit"}):void 0,children:s?m:u})]})]})},W=({open:e,requests:t,action:r,processing:s,onClose:a,onConfirm:o})=>{const i="approve"===r,l=i?"Approve All":"Reject All",c=i?"Approving...":"Rejecting...";return(0,n.jsxs)(f.A,{open:e,onClose:s?void 0:a,maxWidth:"md",fullWidth:!0,children:[(0,n.jsxs)(j.A,{children:[i?"Approve":"Reject"," ",t.length," API Keys"]}),(0,n.jsxs)(b.A,{children:[(0,n.jsxs)(k.A,{variant:"body2",paragraph:!0,children:["You are about to ",i?"approve":"reject"," the following API keys:"]}),(0,n.jsx)(y.A,{mb:2,maxHeight:200,overflow:"auto",children:t.map(e=>{var t;return(0,n.jsx)(y.A,{mb:1,p:1,bgcolor:"background.default",children:(0,n.jsxs)(k.A,{variant:"body2",children:[(0,n.jsx)("strong",{children:e.spec.requestedBy.userId})," -"," ",(null===(t=e.spec.apiProductRef)||void 0===t?void 0:t.name)||"unknown"," (",e.spec.planTier,")"]})},`${e.metadata.namespace}/${e.metadata.name}`)})})]}),(0,n.jsxs)(w.A,{children:[(0,n.jsx)(S.A,{onClick:a,disabled:s,children:"Cancel"}),(0,n.jsx)(S.A,{onClick:o,color:i?"primary":"secondary",variant:"contained",disabled:s,startIcon:s?(0,n.jsx)(P.A,{size:16,color:"inherit"}):void 0,children:s?c:l})]})]})},L=({request:e})=>{const t=$();return(0,n.jsxs)(y.A,{className:t.useCasePanel,onClick:e=>e.stopPropagation(),children:[(0,n.jsx)(k.A,{className:t.useCaseLabel,children:"Use Case"}),(0,n.jsx)(k.A,{variant:"body2",children:e.spec.useCase||"No use case provided"})]})},_=(0,A.A)(e=>({successSection:{padding:e.spacing(2),backgroundColor:e.palette.success.main+"14",borderRadius:e.shape.borderRadius,marginBottom:e.spacing(2),border:`1px solid ${e.palette.success.main}40`},failureSection:{padding:e.spacing(2),backgroundColor:e.palette.error.main+"14",borderRadius:e.shape.borderRadius,marginBottom:e.spacing(2),border:`1px solid ${e.palette.error.main}40`},warningSection:{padding:e.spacing(2),backgroundColor:e.palette.warning.main+"14",borderRadius:e.shape.borderRadius,marginBottom:e.spacing(2),border:`1px solid ${e.palette.warning.main}40`},statRow:{display:"flex",alignItems:"center",gap:e.spacing(1)},errorList:{marginTop:e.spacing(2),padding:0,listStyle:"none"},errorItem:{padding:e.spacing(1.5),marginBottom:e.spacing(1),backgroundColor:e.palette.background.paper,borderRadius:e.shape.borderRadius,border:`1px solid ${e.palette.divider}`},errorName:{fontWeight:600,fontSize:"0.875rem",marginBottom:e.spacing(.5)},errorMessage:{fontSize:"0.813rem",color:e.palette.error.main,fontFamily:"monospace",wordBreak:"break-word"},expandButton:{marginTop:e.spacing(1),padding:e.spacing(.5)}})),E=({open:e,results:t,isApprove:r,onClose:a})=>{const o=_(),[i,l]=(0,s.useState)(!0),c=t.filter(e=>e.success),d=t.filter(e=>!e.success),p=c.length>0;return(0,n.jsxs)(f.A,{open:e,onClose:a,maxWidth:"md",fullWidth:!0,children:[(0,n.jsx)(j.A,{children:(0,n.jsx)(y.A,{display:"flex",alignItems:"center",style:{gap:8},children:p?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(B.A,{style:{color:"#ff9800"}}),(0,n.jsxs)("span",{children:["Bulk ",r?"Approve":"Reject"," Completed with Issues"]})]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(B.A,{color:"error"}),(0,n.jsxs)("span",{children:["Bulk ",r?"Approve":"Reject"," Failed"]})]})})}),(0,n.jsxs)(b.A,{children:[p&&(0,n.jsx)(y.A,{className:o.successSection,children:(0,n.jsxs)(y.A,{className:o.statRow,children:[(0,n.jsx)(I.A,{style:{color:"#4caf50"}}),(0,n.jsxs)(k.A,{variant:"body1",children:[(0,n.jsx)("strong",{children:c.length})," API key",1!==c.length?"s":""," ",r?"approved":"denied"," successfully"]})]})}),(0,n.jsxs)(y.A,{className:p?o.warningSection:o.failureSection,children:[(0,n.jsxs)(y.A,{className:o.statRow,children:[(0,n.jsx)(B.A,{color:"error"}),(0,n.jsxs)(k.A,{variant:"body1",children:[(0,n.jsx)("strong",{children:d.length})," request",1!==d.length?"s":""," failed"]})]}),(0,n.jsxs)(S.A,{size:"small",className:o.expandButton,onClick:()=>l(!i),children:[i?"Hide":"Show"," Error Details"]}),i&&(0,n.jsx)("ul",{className:o.errorList,children:d.map((e,t)=>(0,n.jsxs)("li",{className:o.errorItem,children:[(0,n.jsxs)("div",{className:o.errorName,children:[e.namespace,"/",e.name]}),(0,n.jsx)("div",{className:o.errorMessage,children:e.error||"Unknown error"})]},e.name||t))})]})]}),(0,n.jsx)(w.A,{children:(0,n.jsx)(S.A,{onClick:a,color:"primary",variant:"contained",children:"Close"})})]})},M=()=>{var e;const t=$(),r=(0,d.useApi)(d.identityApiRef),a=(0,d.useApi)(d.alertApiRef),o=(0,d.useApi)(p.s),[i,l]=(0,s.useState)(0),[c,A]=(0,s.useState)([]),[f,j]=(0,s.useState)({open:!1,request:null,action:"approve",processing:!1}),[b,C]=(0,s.useState)({open:!1,requests:[],action:"approve",processing:!1}),[w,P]=(0,s.useState)({open:!1,results:[],isApprove:!0}),[_,M]=(0,s.useState)({status:[],apiProduct:[],tier:[]}),{allowed:D,loading:O,error:U}=(0,x.l)(v.z4),{allowed:Y,loading:K,error:H}=(0,x.l)(v.q0),V=O||K,Z=U||H,{value:G,loading:X,error:J}=(0,u.A)(async()=>{const e=(await r.getBackstageIdentity()).userEntityRef;try{const[r,s]=await Promise.all([o.getAllRequests(),o.getApiProducts()]),a=r.items||[],i=new Set;for(const r of s.items||[]){var t,n;(null===(n=r.metadata)||void 0===n||null===(t=n.annotations)||void 0===t?void 0:t["backstage.io/owner"])===e&&i.add(`${r.metadata.namespace}/${r.metadata.name}`)}return{allRequests:a,reviewedBy:e,ownedApiProducts:i}}catch(t){const r=t instanceof Error?t.message:"unknown error occurred";return a.post({message:`Failed to get resources. ${r}`,display:"transient",severity:"error"}),{allRequests:[],reviewedBy:e,ownedApiProducts:new Set}}},[o,r,i]),Q=(0,s.useMemo)(()=>{if(!(null==G?void 0:G.allRequests))return[];const e={Approved:0,Pending:0,Denied:0},t=new Map,r=new Map;return G.allRequests.forEach(n=>{var s,a;const o=(0,T.v)(null===(s=n.status)||void 0===s?void 0:s.conditions);e[o]++;const i=(null===(a=n.spec.apiProductRef)||void 0===a?void 0:a.name)||"unknown";t.set(i,(t.get(i)||0)+1);const l=n.spec.planTier||"unknown";r.set(l,(r.get(l)||0)+1)}),[{id:"status",title:"Status",options:[{value:"Pending",label:"Pending",count:e.Pending},{value:"Approved",label:"Approved",count:e.Approved},{value:"Denied",label:"Denied",count:e.Denied}]},{id:"apiProduct",title:"API Product",options:Array.from(t.entries()).map(([e,t])=>({value:e,label:e,count:t})),collapsed:t.size>5},{id:"tier",title:"Tier",options:Array.from(r.entries()).map(([e,t])=>({value:e,label:e.charAt(0).toUpperCase()+e.slice(1),count:t}))}]},[null==G?void 0:G.allRequests]),ee=(0,s.useMemo)(()=>(null==G?void 0:G.allRequests)?G.allRequests.filter(e=>{if(_.status.length>0){var t;const r=(0,T.v)(null===(t=e.status)||void 0===t?void 0:t.conditions);if(!_.status.includes(r))return!1}if(_.apiProduct.length>0){var r;const t=(null===(r=e.spec.apiProductRef)||void 0===r?void 0:r.name)||"unknown";if(!_.apiProduct.includes(t))return!1}if(_.tier.length>0){const t=e.spec.planTier||"unknown";if(!_.tier.includes(t))return!1}return!0}):[],[null==G?void 0:G.allRequests,_]),te=e=>new Date(e).toLocaleDateString("en-GB",{year:"numeric",month:"short",day:"numeric"}),re=[{title:"Requester",field:"spec.requestedBy.userId",render:e=>(0,n.jsx)(k.A,{variant:"body2",children:e.spec.requestedBy.userId})},{title:"API Product",field:"spec.apiProductRef.name",render:e=>{var t;const r=(null===(t=e.spec.apiProductRef)||void 0===t?void 0:t.name)||"unknown";return(0,n.jsx)(m.N_,{to:`/catalog/default/api/${r}`,children:(0,n.jsx)("strong",{children:r})})}},{title:"Status",field:"status.conditions",render:e=>{var t;const r=(0,T.v)(null===(t=e.status)||void 0===t?void 0:t.conditions);return(0,n.jsx)(R.A,{label:r,size:"small",style:(0,N.uU)(r)})}},{title:"Tier",field:"spec.planTier",render:e=>(0,n.jsx)(R.A,{label:e.spec.planTier,size:"small",variant:"outlined"})},{title:"Requested",field:"metadata.creationTimestamp",render:e=>(0,n.jsx)(k.A,{variant:"body2",children:e.metadata.creationTimestamp?te(e.metadata.creationTimestamp):"-"})},{title:"Reviewed By",field:"status.reviewedBy",render:e=>{var t;if(!(null===(t=e.status)||void 0===t?void 0:t.reviewedBy))return(0,n.jsx)(k.A,{variant:"body2",color:"textSecondary",children:"-"});const r=e.status.reviewedBy.replace(/^user:default\//,""),s="system"===r;return(0,n.jsxs)(y.A,{children:[(0,n.jsx)(k.A,{variant:"body2",children:s?"Automatic":r}),e.status.reviewedAt&&(0,n.jsx)(k.A,{variant:"caption",color:"textSecondary",children:te(e.status.reviewedAt)})]})}},{title:"Actions",filtering:!1,render:e=>{var t,r,s;if("Pending"!==(0,T.v)(null===(t=e.status)||void 0===t?void 0:t.conditions))return null;const a=`${e.metadata.namespace}/${(null===(r=e.spec.apiProductRef)||void 0===r?void 0:r.name)||"unknown"}`;var o;const i=null!==(o=null==G||null===(s=G.ownedApiProducts)||void 0===s?void 0:s.has(a))&&void 0!==o&&o;return D||Y&&i?(0,n.jsxs)(y.A,{display:"flex",style:{gap:8},children:[(0,n.jsx)(S.A,{size:"small",startIcon:(0,n.jsx)(I.A,{}),onClick:()=>{j({open:!0,request:e,action:"approve",processing:!1})},color:"primary",variant:"outlined",children:"Approve"}),(0,n.jsx)(S.A,{size:"small",startIcon:(0,n.jsx)(B.A,{}),onClick:()=>{j({open:!0,request:e,action:"reject",processing:!1})},color:"secondary",variant:"outlined",children:"Reject"})]}):null}}],ne=(0,s.useMemo)(()=>[{render:e=>{var t;const r=e.rowData;return(null==r||null===(t=r.metadata)||void 0===t?void 0:t.name)?(0,n.jsx)(L,{request:r}):(0,n.jsx)(y.A,{})}}],[]);if(X||V)return(0,n.jsx)(y.A,{p:2,children:[...Array(5)].map((e,t)=>(0,n.jsx)(y.A,{p:2,children:(0,n.jsx)(q.A,{variant:"text",width:"100%"})},t))});if(J)return(0,n.jsx)(g._,{error:J});if(Z)return(0,n.jsx)(y.A,{p:2,children:(0,n.jsxs)(k.A,{color:"error",children:["Unable to check permissions: ",Z.message]})});const se=D||Y;return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(y.A,{className:t.container,children:[(0,n.jsx)(z.Z,{sections:Q,filters:_,onChange:M}),(0,n.jsxs)(y.A,{className:t.tableContainer,children:[c.length>0&&(0,n.jsxs)(y.A,{className:t.bulkActions,children:[(0,n.jsxs)(k.A,{variant:"body2",children:[c.length," request",1!==c.length?"s":""," selected"]}),(0,n.jsxs)(y.A,{display:"flex",style:{gap:8},children:[(0,n.jsx)(S.A,{size:"small",variant:"contained",color:"primary",startIcon:(0,n.jsx)(I.A,{}),onClick:()=>{0!==c.length&&C({open:!0,requests:c,action:"approve",processing:!1})},children:"Approve Selected"}),(0,n.jsx)(S.A,{size:"small",variant:"contained",color:"secondary",startIcon:(0,n.jsx)(B.A,{}),onClick:()=>{0!==c.length&&C({open:!0,requests:c,action:"reject",processing:!1})},children:"Reject Selected"})]})]}),0===ee.length?(0,n.jsx)(y.A,{p:4,textAlign:"center",children:(0,n.jsx)(k.A,{variant:"body1",color:"textSecondary",children:0===(null==G||null===(e=G.allRequests)||void 0===e?void 0:e.length)?"No API keys found.":"No API keys match the selected filters."})}):(0,n.jsx)(h.X,{options:{selection:se,showSelectAllCheckbox:ee.some(e=>{var t;return"Pending"===(0,T.v)(null===(t=e.status)||void 0===t?void 0:t.conditions)}),selectionProps:e=>{var t;return{disabled:"Pending"!==(0,T.v)(null===(t=e.status)||void 0===t?void 0:t.conditions)}},paging:ee.length>10,pageSize:20,search:!0,filtering:!1,debounceInterval:300,showTextRowsSelected:!1,toolbar:!0,emptyRowsWhenPaging:!1},columns:re,data:ee.map(e=>{const t=c.some(t=>t.metadata.name===e.metadata.name&&t.metadata.namespace===e.metadata.namespace);return{...e,id:e.metadata.name,tableData:{checked:t}}}),onSelectionChange:e=>{const t=e.filter(e=>{var t;return"Pending"===(0,T.v)(null===(t=e.status)||void 0===t?void 0:t.conditions)});A(t)},detailPanel:ne})]})]}),(0,n.jsx)(F,{open:f.open,request:f.request,action:f.action,processing:f.processing,onClose:()=>j({open:!1,request:null,action:"approve",processing:!1}),onConfirm:async()=>{if(!f.request||!G)return;j(e=>({...e,processing:!0}));const e="approve"===f.action?(e,t,r)=>o.approveRequest(e,t,r):(e,t,r)=>o.rejectRequest(e,t,r);try{await e(f.request.metadata.namespace,f.request.metadata.name,G.reviewedBy),j({open:!1,request:null,action:"approve",processing:!1}),A(e=>e.filter(e=>{var t,r;return e.metadata.name!==(null===(t=f.request)||void 0===t?void 0:t.metadata.name)||e.metadata.namespace!==(null===(r=f.request)||void 0===r?void 0:r.metadata.namespace)})),l(e=>e+1);const t="approve"===f.action?"approved":"denied";a.post({message:`API key ${t}`,severity:"success",display:"transient"})}catch(e){console.error(`error ${f.action}ing request:`,e),j(e=>({...e,processing:!1}));const t=e instanceof Error?e.message:"unknown error occurred";a.post({message:`Failed to ${f.action} API key. ${t}`,severity:"error",display:"transient"})}}}),(0,n.jsx)(W,{open:b.open,requests:b.requests,action:b.action,processing:b.processing,onClose:()=>C({open:!1,requests:[],action:"approve",processing:!1}),onConfirm:async()=>{if(!G||0===b.requests.length)return;C(e=>({...e,processing:!0})),P({open:!1,results:[],isApprove:!0});const e="approve"===b.action,t=e?(e,t)=>o.bulkApproveRequests(e,t):(e,t)=>o.bulkRejectRequests(e,t);try{const r=b.requests.map(e=>({namespace:e.metadata.namespace,name:e.metadata.name})),n=await t(r,G.reviewedBy)||[],s=n.filter(e=>e.success),o=0===n.filter(e=>!e.success).length,i=e?"approved":"denied";C({open:!1,requests:[],action:"approve",processing:!1}),P({open:!o,results:n,isApprove:e}),A([]),l(e=>e+1),o&&a.post({message:`${s.length} API keys ${i}`,severity:"success",display:"transient"})}catch(e){console.error(`error bulk ${b.action}ing requests:`,e),C(e=>({...e,processing:!1}));const t=e instanceof Error?e.message:"unknown error occurred";a.post({message:`Failed to bulk ${b.action} API keys. ${t}`,severity:"error",display:"transient"})}}}),(0,n.jsx)(E,{open:w.open,results:w.results,isApprove:w.isApprove,onClose:()=>P({open:!1,results:[],isApprove:!0})})]})},D=()=>(0,n.jsxs)(o.Y,{themeId:"tool",children:[(0,n.jsx)(i.Y,{title:"API Key Approval",subtitle:"Review and approve API key requests",children:(0,n.jsx)(l.Y,{children:"Approve or reject API key access requests"})}),(0,n.jsx)(c.U,{children:(0,n.jsx)(M,{})})]});var O=r(38599);const U=()=>(0,n.jsx)(O.B,{permission:v.KV,errorMessage:"You don't have permission to approve API keys",children:(0,n.jsx)(D,{})})},12229:(e,t,r)=>{r.d(t,{Z:()=>A});var n=r(31085),s=r(95478),a=r.n(s),o=r(58837),i=r(10394),l=r(72501),c=r(64947),d=r(37197),p=r(69621),u=r(12981),m=r(86901),g=r(69076),h=r(6924),v=r(23164);const x=(0,o.A)(e=>({root:{width:240,minWidth:240,padding:e.spacing(2),borderRight:`1px solid ${e.palette.divider}`,backgroundColor:e.palette.background.paper,height:"100%",overflowY:"auto"},sectionTitle:{fontWeight:600,fontSize:"0.75rem",textTransform:"uppercase",letterSpacing:"0.05em",color:e.palette.text.secondary,marginBottom:e.spacing(1),display:"flex",alignItems:"center",justifyContent:"space-between",cursor:"pointer",userSelect:"none"},filterSection:{marginBottom:e.spacing(2)},checkbox:{padding:e.spacing(.5)},checkboxLabel:{fontSize:"0.875rem"},clearButton:{marginTop:e.spacing(2)},count:{fontSize:"0.75rem",color:e.palette.text.secondary,marginLeft:e.spacing(1)}})),A=({sections:e,filters:t,onChange:r,onClear:s})=>{const o=x(),[A,f]=a().useState(new Set(e.filter(e=>e.collapsed).map(e=>e.id))),j=Object.values(t).some(e=>e.length>0);return(0,n.jsxs)(i.A,{className:o.root,children:[(0,n.jsxs)(i.A,{display:"flex",justifyContent:"space-between",alignItems:"center",mb:2,children:[(0,n.jsx)(l.A,{variant:"subtitle2",children:"Filters"}),j&&(0,n.jsx)(c.A,{size:"small",color:"primary",onClick:()=>{const t={};e.forEach(e=>{t[e.id]=[]}),r(t),null==s||s()},children:"Clear all"})]}),(0,n.jsx)(d.A,{}),e.map(e=>{const s=A.has(e.id),a=(t[e.id]||[]).length;return(0,n.jsxs)(i.A,{className:o.filterSection,mt:2,children:[(0,n.jsxs)(i.A,{className:o.sectionTitle,onClick:()=>{return t=e.id,void f(e=>{const r=new Set(e);return r.has(t)?r.delete(t):r.add(t),r});var t},children:[(0,n.jsxs)(i.A,{display:"flex",alignItems:"center",children:[(0,n.jsx)("span",{children:e.title}),a>0&&(0,n.jsxs)("span",{className:o.count,children:["(",a,")"]})]}),s?(0,n.jsx)(h.A,{fontSize:"small"}):(0,n.jsx)(v.A,{fontSize:"small"})]}),(0,n.jsx)(p.A,{in:!s,children:(0,n.jsx)(u.A,{children:e.options.map(s=>(0,n.jsx)(m.A,{control:(0,n.jsx)(g.A,{checked:(t[e.id]||[]).includes(s.value),onChange:()=>((e,n)=>{const s=t[e]||[],a=s.includes(n)?s.filter(e=>e!==n):[...s,n];r({...t,[e]:a})})(e.id,s.value),size:"small",className:o.checkbox,color:"primary"}),label:(0,n.jsxs)(i.A,{display:"flex",alignItems:"center",children:[(0,n.jsx)("span",{className:o.checkboxLabel,children:s.label}),void 0!==s.count&&(0,n.jsxs)("span",{className:o.count,children:["(",s.count,")"]})]})},s.value))})})]},e.id)})]})}},38599:(e,t,r)=>{r.d(t,{B:()=>l});var n=r(31085),s=(r(95478),r(10394)),a=r(72501),o=r(4387),i=r(46205);const l=({children:e,permission:t,fallback:r,errorMessage:l})=>{const{allowed:c,loading:d,error:p}=(0,i.l)(t);return d?(0,n.jsx)(s.A,{p:2,children:[...Array(5)].map((e,t)=>(0,n.jsx)(s.A,{p:2,children:(0,n.jsx)(o.A,{variant:"text",width:"100%"})},t))}):p?(0,n.jsxs)(s.A,{p:4,children:[(0,n.jsxs)(a.A,{color:"error",children:["Unable to check permissions: ",p.message]}),(0,n.jsx)(a.A,{variant:"body2",color:"textSecondary",children:"Please try again or contact your administrator"})]}):c?(0,n.jsx)(n.Fragment,{children:e}):r?(0,n.jsx)(n.Fragment,{children:r}):(0,n.jsxs)(s.A,{p:4,children:[(0,n.jsx)(a.A,{color:"textSecondary",children:l||"You don't have permission to view this page"}),(0,n.jsx)(s.A,{mt:1,children:(0,n.jsxs)(a.A,{variant:"caption",color:"textSecondary",children:["Required permission: ",t.name]})})]})}},16325:(e,t,r)=>{function n(e){return e&&0!==e.length?e.find(e=>"Approved"===e.type&&"True"===e.status)?"Approved":e.find(e=>"Denied"===e.type&&"True"===e.status)?"Denied":e.find(e=>"Failed"===e.type&&"True"===e.status)?"Failed":"Pending":"Pending"}r.d(t,{v:()=>n})},46299:(e,t,r)=>{r.d(t,{ee:()=>a,g9:()=>n,uU:()=>s});const n=e=>{const t={border:"none"};switch(e){case"Approved":return{...t,backgroundColor:"#1976d2",color:"#fff"};case"Denied":return{...t,backgroundColor:"#d32f2f",color:"#fff"};case"Failed":return{...t,backgroundColor:"#ed6c02",color:"#fff"};default:return{...t,backgroundColor:"#9c27b0",color:"#fff"}}},s=e=>{const t={border:"none"};switch(e){case"Approved":return{...t,backgroundColor:"#2e7d32",color:"#fff"};case"Denied":return{...t,backgroundColor:"#d32f2f",color:"#fff"};default:return{...t,backgroundColor:"#ed6c02",color:"#fff"}}},a=e=>{switch(e){case"production":return{backgroundColor:"#1976d2",color:"#fff"};case"experimental":return{backgroundColor:"#9c27b0",color:"#fff"};case"deprecated":return{backgroundColor:"#ff9800",color:"#fff"};case"retired":return{backgroundColor:"#d32f2f",color:"#fff"};default:return{}}}},45210:(e,t,r)=>{r.d(t,{Y:()=>q});var n=r(31085),s=r(22097),a=r(10394),o=r(64947),i=r(93453),l=r(29365),c=r(46423),d=r(5951),p=r(26343),u=r(28233),m=r(55197),g=r(37976),h=r(72501),v=r(5893),x=r(95478),A=(r(45250),r(49634),r(21006)),f=r(67550);const j=()=>{const{t:e}=(0,f.i)(A.O);return{url:"https://github.com/backstage/backstage/issues",items:[{title:e("supportConfig.default.title"),icon:"warning",links:[{title:e("supportConfig.default.linkTitle"),url:"https://github.com/backstage/backstage/blob/master/app-config.yaml"}]}]}};var y=r(27799);function b(e){const{id:t,Fallback:r=y.A,...a}=e,o=(0,s.useApp)().getSystemIcon(t)??r;return(0,n.jsx)(o,{...a})}function k(e){return(0,n.jsx)(b,{id:"help",...e})}var C=r(37725);const w=(0,g.makeStyles)({popoverList:{minWidth:260,maxWidth:400},menuItem:{whiteSpace:"normal"}},{name:"BackstageSupportButton"}),S=({icon:e})=>{const t=(0,s.useApp)(),r=e?t.getSystemIcon(e)??k:k;return(0,n.jsx)(r,{})},P=({link:e})=>(0,n.jsx)(C.N_,{to:e.url,children:e.title??e.url}),R=({item:e})=>(0,n.jsxs)(p.A,{button:!1,children:[(0,n.jsx)(c.A,{children:(0,n.jsx)(S,{icon:e.icon})}),(0,n.jsx)(d.A,{primary:e.title,secondary:e.links?.reduce((e,t,r)=>[...e,r>0&&(0,n.jsx)("br",{},r),(0,n.jsx)(P,{link:t},t.url)],[])})]});function q(e){const{t}=(0,f.i)(A.O),{title:r,items:c,children:d}=e,{items:g}=function(){const e=(0,s.useApiHolder)().get(s.configApiRef),t=e?.getOptionalConfig("app.support"),r=j();return t?{url:t.getString("url"),items:t.getConfigArray("items").flatMap(e=>({title:e.getString("title"),icon:e.getOptionalString("icon"),links:(e.getOptionalConfigArray("links")??[]).flatMap(e=>({url:e.getString("url"),title:e.getOptionalString("title")??""}))}))}:r}(),[y,b]=(0,x.useState)(!1),[C,S]=(0,x.useState)(null),P=w(),q=(0,s.useApi)(s.configApiRef).getOptionalConfig("app.support"),I=(0,v.A)(e=>e.breakpoints.down("sm")),B=e=>{S(e.currentTarget),b(!0)},z=()=>{b(!1)};return q?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(a.A,{display:"flex",ml:1,children:I?(0,n.jsx)(l.A,{color:"primary",size:"small",onClick:B,"data-testid":"support-button","aria-label":"Support",children:(0,n.jsx)(k,{})}):(0,n.jsx)(o.A,{"data-testid":"support-button","aria-label":"Support",color:"primary",onClick:B,startIcon:(0,n.jsx)(k,{}),children:t("supportButton.title")})}),(0,n.jsxs)(m.Ay,{"data-testid":"support-button-popover",open:y,anchorEl:C,anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},onClose:z,children:[(0,n.jsxs)(u.A,{className:P.popoverList,autoFocusItem:Boolean(C),children:[r&&(0,n.jsx)(p.A,{button:!1,alignItems:"flex-start",className:P.menuItem,children:(0,n.jsx)(h.A,{variant:"subtitle1",children:r})}),x.Children.map(d,(e,t)=>(0,n.jsx)(p.A,{button:!1,alignItems:"flex-start",className:P.menuItem,children:e},`child-${t}`)),(c??g).map((e,t)=>(0,n.jsx)(R,{item:e},`item-${t}`))]}),(0,n.jsx)(i.A,{children:(0,n.jsx)(o.A,{color:"primary",onClick:z,"aria-label":"Close",children:t("supportButton.close")})})]})]}):null}}}]);
2
+ //# sourceMappingURL=3917.f6c5d76f.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"static/3917.f6c5d76f.chunk.js","mappings":"+KAEAA,EAA6BC,EAAQ,MAErCC,EAA8BD,EAAQ,OAKtCE,EAAAC,OAAe,EAEf,IAAAC,EAAAH,EAAoCD,EAAQ,QAI5CK,GAAA,EAFAN,EAA4CC,EAAQ,QAEpDM,SAAAF,EAAAG,cAAA,QACAC,EAAA,gKACC,eAEDN,EAAAC,EAAeE,uBCjBfN,EAA6BC,EAAQ,MAErCC,EAA8BD,EAAQ,OAKtCE,EAAAC,OAAe,EAEf,IAAAC,EAAAH,EAAoCD,EAAQ,QAI5CK,GAAA,EAFAN,EAA4CC,EAAQ,QAEpDM,SAAAF,EAAAG,cAAA,QACAC,EAAA,0HACC,eAEDN,EAAAC,EAAeE,uBCjBfN,EAA6BC,EAAQ,MAErCC,EAA8BD,EAAQ,OAKtCE,EAAAC,OAAe,EAEf,IAAAC,EAAAH,EAAoCD,EAAQ,QAI5CK,GAAA,EAFAN,EAA4CC,EAAQ,QAEpDM,SAAAF,EAAAG,cAAA,QACAC,EAAA,mDACC,cAEDN,EAAAC,EAAeE,yECjBA,SAAAI,EAAAC,EAAAC,QACf,IAAAA,IAA2BA,EAAA,IAC3B,IAAAC,ECDe,SAAAF,EAAAC,EAAAE,QACf,IAAAF,IAA2BA,EAAA,SAC3B,IAAAE,IAAmCA,EAAA,CAAiBC,SAAA,IACpD,IAAAC,GAAqB,EAAAC,EAAAC,QAAM,GAC3BC,GAAoB,EAAAC,EAAAhB,KACpBS,GAAa,EAAAI,EAAAI,UAAQP,GAAAQ,EAAAT,EAAA,GAAAU,EAAAV,EAAA,GACrBW,GAAmB,EAAAP,EAAAQ,aAAW,WAE9B,IADA,IAAAC,EAAA,GACAC,EAAA,EAAyBA,EAAAC,UAAAC,OAAuBF,IAChDD,EAAAC,GAAAC,UAAAD,GAEA,IAAAG,IAAAd,EAAAe,QAIA,OAHAT,EAAAP,SACAQ,EAAA,SAAAS,GAAuC,OAAQ,EAAAC,EAAAC,WAAS,EAAAD,EAAAC,UAAQ,GAAGF,GAAA,CAAgBjB,SAAA,GAAe,GAElGJ,EAAAwB,WAAA,EAAAT,GAAAU,KAAA,SAAAC,GAEA,OADAlB,KAAAW,IAAAd,EAAAe,SAAAR,EAAA,CAAkEc,MAAAA,EAAAtB,SAAA,IAClEsB,CACA,EAAS,SAAAC,GAET,OADAnB,KAAAW,IAAAd,EAAAe,SAAAR,EAAA,CAAkEe,MAAAA,EAAAvB,SAAA,IAClEuB,CACA,EACA,EAAK1B,GACL,OAAAU,EAAAE,EACA,CDvBae,CAAU5B,EAAAC,EAAA,CACvBG,SAAA,IACKO,EAAAT,EAAA,GAAAW,EAAAX,EAAA,GAIL,OAHI,EAAAI,EAAAuB,WAAS,WACbhB,GACA,EAAK,CAAAA,IACLF,CACA,mcE6BA,MAAMmB,GAAYC,EAAAA,EAAAA,GAAYC,IAAW,CACvCC,UAAW,CACTC,QAAS,OACTC,OAAQ,OACRC,UAAW,KAEbC,eAAgB,CACdC,KAAM,EACNC,SAAU,OACVC,QAAS,IAEXC,aAAc,CACZD,QAASR,EAAMU,QAAQ,GACvBC,gBAAiBX,EAAMY,QAAQC,WAAWjD,SAE5CkD,aAAc,CACZC,WAAY,IACZC,aAAchB,EAAMU,QAAQ,GAC5BO,MAAOjB,EAAMY,QAAQM,KAAKC,UAC1BC,cAAe,YACfC,SAAU,WAEZC,YAAa,CACXd,QAASR,EAAMU,QAAQ,GACvBC,gBAAiBX,EAAMY,QAAQC,WAAWjD,QAC1C2D,aAAc,aAAavB,EAAMY,QAAQY,UACzCtB,QAAS,OACTuB,WAAY,SACZC,eAAgB,oBAadC,EAAiB,EACrBC,OACAC,UACAC,SACAC,aACAC,UACAC,oBAQoBJ,EAmCPA,EAzCb,MAAOK,EAAcC,GAAmBzE,IAAAA,SAAe,IACjD0E,EAAyB,YAAXN,EAAuB,UAAY,SACjDO,EACO,YAAXP,EAAuB,eAAiB,eAEpCQ,EAAsB,WAAXR,EACXS,GAAcV,SAAyB,QAAzBA,EAAAA,EAASW,KAAKC,mBAAdZ,IAAAA,OAAAA,EAAAA,EAA2Ba,SAAU,GACnDC,GAAaL,GAAWJ,IAAiBK,EAS/C,OANA7E,IAAAA,UAAgB,KACTkE,GACHO,EAAgB,KAEjB,CAACP,KAGF,EAAAgB,EAAAC,MAACC,EAAAA,EAAMA,CACLlB,KAAMA,EACNI,QAASD,OAAagB,EAAYf,EAClCgB,SAAS,KACTC,WAAS,aAET,EAAAL,EAAAM,KAACC,EAAAA,EAAWA,UACTb,GACC,EAAAM,EAAAC,MAACO,EAAAA,EAAGA,CAAClD,QAAQ,OAAOuB,WAAW,SAAS4B,MAAO,CAAEC,IAAK,cACpD,EAAAV,EAAAM,KAACK,EAAAA,EAAUA,CAACtC,MAAM,WAClB,EAAA2B,EAAAC,MAACW,OAAAA,WAAMpB,EAAY,kBAGrB,EAAAQ,EAAAC,MAACW,OAAAA,WAAMpB,EAAY,iBAGvB,EAAAQ,EAAAM,KAACO,EAAAA,EAAaA,UACX5B,IACC,EAAAe,EAAAC,MAAAD,EAAAc,SAAA,YACE,EAAAd,EAAAC,MAACc,IAAAA,YACC,EAAAf,EAAAM,KAACU,SAAAA,UAAO,UAAc,IAAE/B,EAAQW,KAAKC,YAAYC,WAEnD,EAAAE,EAAAC,MAACc,IAAAA,YACC,EAAAf,EAAAM,KAACU,SAAAA,UAAO,SAAc,KACK,QAA1B/B,EAAAA,EAAQW,KAAKqB,qBAAbhC,IAAAA,OAAAA,EAAAA,EAA4BiC,OAAQ,cAEvC,EAAAlB,EAAAC,MAACc,IAAAA,YACC,EAAAf,EAAAM,KAACU,SAAAA,UAAO,UAAc,IAAE/B,EAAQW,KAAKuB,aAEvC,EAAAnB,EAAAC,MAACO,EAAAA,EAAGA,CAACY,GAAI,aACP,EAAApB,EAAAM,KAACe,EAAAA,EAAUA,CACTC,QAAQ,QACRC,UAAU,OACVd,MAAO,CAAEtC,WAAY,iBACtB,cAEa,KACd,EAAA6B,EAAAM,KAACe,EAAAA,EAAUA,CACTC,QAAQ,QACRC,UAAU,OACVd,MAAO,CAAEe,WAAY,qBAEpBvC,EAAQW,KAAK6B,SAAW,SAG5B/B,IACC,EAAAM,EAAAC,MAACO,EAAAA,EAAGA,CAACkB,GAAI,aACP,EAAA1B,EAAAC,MAACoB,EAAAA,EAAUA,CAACC,QAAQ,QAAQjD,MAAM,gBAAgBsD,cAAY,YAAC,SACxD,EAAA3B,EAAAM,KAACU,SAAAA,UAAQrB,IAAqB,6BAErC,EAAAK,EAAAM,KAACsB,EAAAA,EAASA,CACRvB,WAAS,EACTiB,QAAQ,WACRO,KAAK,QACL/E,MAAOwC,EACPwC,SAAWC,GAAMxC,EAAgBwC,EAAEC,OAAOlF,OAC1CmF,SAAU9C,EACV+C,WAAS,EACTC,YAAaxC,aAOzB,EAAAK,EAAAC,MAACmC,EAAAA,EAAaA,YACZ,EAAApC,EAAAM,KAAC+B,EAAAA,EAAMA,CAACC,QAASlD,EAAS6C,SAAU9C,WAAY,YAGhD,EAAAa,EAAAM,KAAC+B,EAAAA,EAAMA,CACLC,QAASjD,EACThB,MAAkB,YAAXa,EAAuB,UAAY,YAC1CoC,QAAQ,YACRW,SAAU9C,IAAeY,EACzBwC,UACEpD,GACE,EAAAa,EAAAM,KAACkC,EAAAA,EAAgBA,CAACX,KAAM,GAAIxD,MAAM,iBAChC8B,WAGLhB,EAAaM,EAAkBD,WAgBpCiD,EAAmB,EACvBzD,OACA0D,WACAxD,SACAC,aACAC,UACAC,gBAEA,MAAMsD,EAAuB,YAAXzD,EACZM,EAAcmD,EAAY,cAAgB,aAC1ClD,EAAkBkD,EAAY,eAAiB,eAErD,OACE,EAAA3C,EAAAC,MAACC,EAAAA,EAAMA,CACLlB,KAAMA,EACNI,QAASD,OAAagB,EAAYf,EAClCgB,SAAS,KACTC,WAAS,aAET,EAAAL,EAAAC,MAACM,EAAAA,EAAWA,WACToC,EAAY,UAAY,SAAS,IAAED,EAASpG,OAAO,gBAEtD,EAAA0D,EAAAC,MAACY,EAAAA,EAAaA,YACZ,EAAAb,EAAAC,MAACoB,EAAAA,EAAUA,CAACC,QAAQ,QAAQsB,WAAS,YAAC,oBAClBD,EAAY,UAAY,SAAS,+BAGrD,EAAA3C,EAAAM,KAACE,EAAAA,EAAGA,CAACY,GAAI,EAAGyB,UAAW,IAAKlF,SAAS,gBAClC+E,EAASI,IAAK7D,QASRA,SARL,EAAAe,EAAAM,KAACE,EAAAA,EAAGA,CAEFY,GAAI,EACJL,EAAG,EACHgC,QAAQ,+BAER,EAAA/C,EAAAC,MAACoB,EAAAA,EAAUA,CAACC,QAAQ,mBAClB,EAAAtB,EAAAM,KAACU,SAAAA,UAAQ/B,EAAQW,KAAKC,YAAYC,SAAgB,KAAG,KAC1B,QAA1Bb,EAAAA,EAAQW,KAAKqB,qBAAbhC,IAAAA,OAAAA,EAAAA,EAA4BiC,OAAQ,UAAU,KAC9CjC,EAAQW,KAAKuB,SAAS,QARpB,GAAGlC,EAAQ+D,SAASC,aAAahE,EAAQ+D,SAAS9B,gBAc/D,EAAAlB,EAAAC,MAACmC,EAAAA,EAAaA,YACZ,EAAApC,EAAAM,KAAC+B,EAAAA,EAAMA,CAACC,QAASlD,EAAS6C,SAAU9C,WAAY,YAGhD,EAAAa,EAAAM,KAAC+B,EAAAA,EAAMA,CACLC,QAASjD,EACThB,MAAOsE,EAAY,UAAY,YAC/BrB,QAAQ,YACRW,SAAU9C,EACVoD,UACEpD,GACE,EAAAa,EAAAM,KAACkC,EAAAA,EAAgBA,CAACX,KAAM,GAAIxD,MAAM,iBAChC8B,WAGLhB,EAAaM,EAAkBD,WAWpC0D,EAAqB,EAAGjE,cAC5B,MAAMkE,EAAUjG,IAEhB,OACE,EAAA8C,EAAAC,MAACO,EAAAA,EAAGA,CAAC4C,UAAWD,EAAQtF,aAAcyE,QAAUP,GAAMA,EAAEsB,6BACtD,EAAArD,EAAAM,KAACe,EAAAA,EAAUA,CAAC+B,UAAWD,EAAQjF,sBAAc,cAC7C,EAAA8B,EAAAM,KAACe,EAAAA,EAAUA,CAACC,QAAQ,iBACjBrC,EAAQW,KAAK6B,SAAW,6BAa3B6B,GAAqBnG,EAAAA,EAAAA,GAAYC,IAAW,CAChDmG,eAAgB,CACd3F,QAASR,EAAMU,QAAQ,GACvBC,gBAAiBX,EAAMY,QAAQwF,QAAQC,KAAO,KAC9CC,aAActG,EAAMuG,MAAMD,aAC1BtF,aAAchB,EAAMU,QAAQ,GAC5B8F,OAAQ,aAAaxG,EAAMY,QAAQwF,QAAQC,UAE7CI,eAAgB,CACdjG,QAASR,EAAMU,QAAQ,GACvBC,gBAAiBX,EAAMY,QAAQjB,MAAM0G,KAAO,KAC5CC,aAActG,EAAMuG,MAAMD,aAC1BtF,aAAchB,EAAMU,QAAQ,GAC5B8F,OAAQ,aAAaxG,EAAMY,QAAQjB,MAAM0G,UAE3CK,eAAgB,CACdlG,QAASR,EAAMU,QAAQ,GACvBC,gBAAiBX,EAAMY,QAAQ+F,QAAQN,KAAO,KAC9CC,aAActG,EAAMuG,MAAMD,aAC1BtF,aAAchB,EAAMU,QAAQ,GAC5B8F,OAAQ,aAAaxG,EAAMY,QAAQ+F,QAAQN,UAE7CO,QAAS,CACP1G,QAAS,OACTuB,WAAY,SACZ6B,IAAKtD,EAAMU,QAAQ,IAErBmG,UAAW,CACTC,UAAW9G,EAAMU,QAAQ,GACzBF,QAAS,EACTuG,UAAW,QAEbC,UAAW,CACTxG,QAASR,EAAMU,QAAQ,KACvBM,aAAchB,EAAMU,QAAQ,GAC5BC,gBAAiBX,EAAMY,QAAQC,WAAWoG,MAC1CX,aAActG,EAAMuG,MAAMD,aAC1BE,OAAQ,aAAaxG,EAAMY,QAAQY,WAErC0F,UAAW,CACTnG,WAAY,IACZM,SAAU,WACVL,aAAchB,EAAMU,QAAQ,KAE9ByG,aAAc,CACZ9F,SAAU,WACVJ,MAAOjB,EAAMY,QAAQjB,MAAM0G,KAC3Be,WAAY,YACZC,UAAW,cAEbC,aAAc,CACZR,UAAW9G,EAAMU,QAAQ,GACzBF,QAASR,EAAMU,QAAQ,QAIrB6G,EAAkB,EACtB3F,OACA4F,UACAjC,YACAvD,cAEA,MAAM+D,EAAUG,KACTuB,EAAYC,IAAiBhJ,EAAAA,EAAAA,WAAS,GACvCiJ,EAAiBH,EAAQI,OAAQC,GAAaA,EAAIzB,SAClD0B,EAAgBN,EAAQI,OAAQC,IAAcA,EAAIzB,SAClD2B,EAAoBJ,EAAezI,OAAS,EAElD,OACE,EAAA0D,EAAAC,MAACC,EAAAA,EAAMA,CACLlB,KAAMA,EACNI,QAASA,EACTgB,SAAS,KACTC,WAAS,aAET,EAAAL,EAAAM,KAACC,EAAAA,EAAWA,WACV,EAAAP,EAAAM,KAACE,EAAAA,EAAGA,CAAClD,QAAQ,OAAOuB,WAAW,SAAS4B,MAAO,CAAEC,IAAK,YACnDyE,GACC,EAAAnF,EAAAC,MAAAD,EAAAc,SAAA,YACE,EAAAd,EAAAM,KAACK,EAAAA,EAAUA,CAACF,MAAO,CAAEpC,MAAO,cAC5B,EAAA2B,EAAAC,MAACW,OAAAA,WAAK,QAAM+B,EAAY,UAAY,SAAS,gCAG/C,EAAA3C,EAAAC,MAAAD,EAAAc,SAAA,YACE,EAAAd,EAAAM,KAACK,EAAAA,EAAUA,CAACtC,MAAM,WAClB,EAAA2B,EAAAC,MAACW,OAAAA,WAAK,QAAM+B,EAAY,UAAY,SAAS,qBAKrD,EAAA3C,EAAAC,MAACY,EAAAA,EAAaA,WACXsE,IACC,EAAAnF,EAAAM,KAACE,EAAAA,EAAGA,CAAC4C,UAAWD,EAAQI,yBACtB,EAAAvD,EAAAC,MAACO,EAAAA,EAAGA,CAAC4C,UAAWD,EAAQa,mBACtB,EAAAhE,EAAAM,KAAC8E,EAAAA,EAAeA,CAAC3E,MAAO,CAAEpC,MAAO,cACjC,EAAA2B,EAAAC,MAACoB,EAAAA,EAAUA,CAACC,QAAQ,mBAClB,EAAAtB,EAAAM,KAACU,SAAAA,UAAQ+D,EAAezI,SAAgB,WAAmC,IAA1ByI,EAAezI,OAAe,IAAM,GAAG,IAAEqG,EAAY,WAAa,SAAS,yBAMpI,EAAA3C,EAAAC,MAACO,EAAAA,EAAGA,CAAC4C,UAAW+B,EAAoBhC,EAAQW,eAAiBX,EAAQU,0BACnE,EAAA7D,EAAAC,MAACO,EAAAA,EAAGA,CAAC4C,UAAWD,EAAQa,mBACtB,EAAAhE,EAAAM,KAACK,EAAAA,EAAUA,CAACtC,MAAM,WAClB,EAAA2B,EAAAC,MAACoB,EAAAA,EAAUA,CAACC,QAAQ,mBAClB,EAAAtB,EAAAM,KAACU,SAAAA,UAAQkE,EAAc5I,SAAgB,WAAkC,IAAzB4I,EAAc5I,OAAe,IAAM,GAAG,iBAI1F,EAAA0D,EAAAC,MAACoC,EAAAA,EAAMA,CACLR,KAAK,QACLuB,UAAWD,EAAQuB,aACnBpC,QAAS,IAAMwC,GAAeD,aAE7BA,EAAa,OAAS,OAAO,oBAG/BA,IACC,EAAA7E,EAAAM,KAAC+E,KAAAA,CAAGjC,UAAWD,EAAQc,mBACpBiB,EAAcpC,IAAI,CAACwC,EAAQC,KAC1B,EAAAvF,EAAAC,MAACuF,KAAAA,CAA8BpC,UAAWD,EAAQiB,qBAChD,EAAApE,EAAAC,MAACwF,MAAAA,CAAIrC,UAAWD,EAAQmB,oBACrBgB,EAAOrC,UAAU,IAAEqC,EAAOpE,SAE7B,EAAAlB,EAAAM,KAACmF,MAAAA,CAAIrC,UAAWD,EAAQoB,sBACrBe,EAAOvI,OAAS,oBALZuI,EAAOpE,MAAQqE,aAalC,EAAAvF,EAAAM,KAAC8B,EAAAA,EAAaA,WACZ,EAAApC,EAAAM,KAAC+B,EAAAA,EAAMA,CAACC,QAASlD,EAASf,MAAM,UAAUiD,QAAQ,qBAAY,gBAQzDoE,EAAqB,SAihBjB5I,EAhhBf,MAAMqG,EAAUjG,IACVyI,GAAcC,EAAAA,EAAAA,QAAOC,EAAAA,gBACrBC,GAAWF,EAAAA,EAAAA,QAAOG,EAAAA,aAClBC,GAAcJ,EAAAA,EAAAA,QAAOK,EAAAA,IACpBC,EAASC,IAAcrK,EAAAA,EAAAA,UAAS,IAChCsK,EAAkBC,IAAuBvK,EAAAA,EAAAA,UAAmB,KAC5DwK,EAAaC,IAAkBzK,EAAAA,EAAAA,UAKnC,CACDkD,MAAM,EACNC,QAAS,KACTC,OAAQ,UACRC,YAAY,KAEPqH,EAAiBC,IAAsB3K,EAAAA,EAAAA,UAK3C,CACDkD,MAAM,EACN0D,SAAU,GACVxD,OAAQ,UACRC,YAAY,KAEPuH,EAAsBC,IAA2B7K,EAAAA,EAAAA,UAIrD,CACDkD,MAAM,EACN4F,QAAS,GACTjC,WAAW,KAENiE,EAASC,IAAc/K,EAAAA,EAAAA,UAAsB,CAClDgL,OAAQ,GACRC,WAAY,GACZC,KAAM,MAINC,QAASC,EACT1L,QAAS2L,EACTpK,MAAOqK,IACLC,EAAAA,EAAAA,GAAsBC,EAAAA,KAGxBL,QAASM,EACT/L,QAASgM,EACTzK,MAAO0K,IACLJ,EAAAA,EAAAA,GAAsBK,EAAAA,IAEpBC,EACJR,GAA8BK,EAC1BI,EACJR,GAA4BK,GAExB3K,MAAEA,EAAKtB,QAAEA,EAAOuB,MAAEA,IAAU5B,EAAAA,EAAAA,GAAS0M,UACzC,MACMC,SADiBnC,EAAYoC,wBACPC,cAE5B,IACE,MAAOC,EAAgBC,SAAqBC,QAAQC,IAAI,CACtDpC,EAAYqC,iBACZrC,EAAYsC,mBAGRC,EAAcN,EAAeO,OAAS,GACtCC,EAAmB,IAAIC,IAE7B,IAAK,MAAMC,KAAWT,EAAYM,OAAS,GAAI,KAC/BG,EAAAA,GAAgB,QAAhBA,EAAAA,EAAQ3F,gBAAR2F,IAAAA,GAA6B,QAA7BA,EAAAA,EAAkBC,mBAAlBD,IAAAA,OAAAA,EAAAA,EAAgC,yBAChCb,GACZW,EAAiBI,IACf,GAAGF,EAAQ3F,SAASC,aAAa0F,EAAQ3F,SAAS9B,OAGxD,CAEA,MAAO,CAAEqH,cAAaT,aAAYW,mBAEpC,CAAE,MAAMK,GACN,MAAMvE,EAAeuE,aAAeC,MAAQD,EAAIE,QAAU,yBAM1D,OALAlD,EAASmD,KAAK,CACZD,QAAS,4BAA4BzE,IACrCjH,QAAS,YACT4L,SAAU,UAEL,CACLX,YAAa,GACbT,aACAW,iBAAkB,IAAIC,IAE1B,GACC,CAAC1C,EAAaL,EAAaO,IAExBiD,GAAkCC,EAAAA,EAAAA,SAAQ,KAC9C,KAAKtM,aAAAA,EAAAA,EAAOyL,aAAa,MAAO,GAEhC,MAAMc,EAAe,CAAEC,SAAU,EAAGC,QAAS,EAAGC,OAAQ,GAClDC,EAAmB,IAAIC,IACvBC,EAAa,IAAID,IAgBvB,OAdA5M,EAAMyL,YAAYqB,QAASC,QACKA,EAGXA,EAHnB,MAAM/C,GAASgD,EAAAA,EAAAA,GAAuB,QAARD,EAAAA,EAAE/C,cAAF+C,IAAAA,OAAAA,EAAAA,EAAUE,YACxCV,EAAavC,KAEb,MAAMC,GAAiC,QAApB8C,EAAAA,EAAEjK,KAAKqB,qBAAP4I,IAAAA,OAAAA,EAAAA,EAAsB3I,OAAQ,UACjDuI,EAAiBzN,IACf+K,GACC0C,EAAiBO,IAAIjD,IAAe,GAAK,GAG5C,MAAMC,EAAO6C,EAAEjK,KAAKuB,UAAY,UAChCwI,EAAW3N,IAAIgL,GAAO2C,EAAWK,IAAIhD,IAAS,GAAK,KAG9C,CACL,CACEiD,GAAI,SACJC,MAAO,SACPC,QAAS,CACP,CAAErN,MAAO,UAAWsN,MAAO,UAAWC,MAAOhB,EAAaE,SAC1D,CACEzM,MAAO,WACPsN,MAAO,WACPC,MAAOhB,EAAaC,UAEtB,CACExM,MAAO,SACPsN,MAAO,SACPC,MAAOhB,EAAaG,UAI1B,CACES,GAAI,aACJC,MAAO,cACPC,QAASG,MAAMC,KAAKd,EAAiBe,WAAW1H,IAC9C,EAAE5B,EAAMmJ,MAAY,CAClBvN,MAAOoE,EACPkJ,MAAOlJ,EACPmJ,WAGJI,UAAWhB,EAAiB5H,KAAO,GAErC,CACEoI,GAAI,OACJC,MAAO,OACPC,QAASG,MAAMC,KAAKZ,EAAWa,WAAW1H,IAAI,EAAEkE,EAAMqD,MAAY,CAChEvN,MAAOkK,EACPoD,MAAOpD,EAAK0D,OAAO,GAAGC,cAAgB3D,EAAK4D,MAAM,GACjDP,cAIL,CAACvN,aAAAA,EAAAA,EAAOyL,cAELsC,IAAmBzB,EAAAA,EAAAA,SAAQ,KAC1BtM,aAAAA,EAAAA,EAAOyL,aAELzL,EAAMyL,YAAYvD,OAAQ6E,IAC/B,GAAIjD,EAAQE,OAAOxK,OAAS,EAAG,KACCuN,EAA9B,MAAM/C,GAASgD,EAAAA,EAAAA,GAAuB,QAARD,EAAAA,EAAE/C,cAAF+C,IAAAA,OAAAA,EAAAA,EAAUE,YACxC,IAAKnD,EAAQE,OAAOgE,SAAShE,GAAS,OAAO,CAC/C,CACA,GAAIF,EAAQG,WAAWzK,OAAS,EAAG,KACduN,EAAnB,MAAM9C,GAAiC,QAApB8C,EAAAA,EAAEjK,KAAKqB,qBAAP4I,IAAAA,OAAAA,EAAAA,EAAsB3I,OAAQ,UACjD,IAAK0F,EAAQG,WAAW+D,SAAS/D,GAAa,OAAO,CACvD,CACA,GAAIH,EAAQI,KAAK1K,OAAS,EAAG,CAC3B,MAAM0K,EAAO6C,EAAEjK,KAAKuB,UAAY,UAChC,IAAKyF,EAAQI,KAAK8D,SAAS9D,GAAO,OAAO,CAC3C,CACA,OAAO,IAfuB,GAiB/B,CAAClK,aAAAA,EAAAA,EAAOyL,YAAa3B,IA6IlBmE,GAAcC,GACL,IAAIC,KAAKD,GACVE,mBAAmB,QAAS,CACtCC,KAAM,UACNC,MAAO,QACPC,IAAK,YAIHC,GAAiC,CACrC,CACEpB,MAAO,YACPqB,MAAO,0BACPC,OAASC,IACP,EAAAzL,EAAAM,KAACe,EAAAA,EAAUA,CAACC,QAAQ,iBAASmK,EAAI7L,KAAKC,YAAYC,UAGtD,CACEoK,MAAO,cACPqB,MAAO,0BACPC,OAASC,QACMA,EAAb,MAAMvK,GAA6B,QAAtBuK,EAAAA,EAAI7L,KAAKqB,qBAATwK,IAAAA,OAAAA,EAAAA,EAAwBvK,OAAQ,UAC7C,OACE,EAAAlB,EAAAM,KAACoL,EAAAA,GAAIA,CAACC,GAAI,wBAAwBzK,cAChC,EAAAlB,EAAAM,KAACU,SAAAA,UAAQE,QAKjB,CACEgJ,MAAO,SACPqB,MAAO,oBACPC,OAASC,QACsBA,EAA7B,MAAMG,GAAQ9B,EAAAA,EAAAA,GAAyB,QAAV2B,EAAAA,EAAI3E,cAAJ2E,IAAAA,OAAAA,EAAAA,EAAY1B,YACzC,OACE,EAAA/J,EAAAM,KAACuL,EAAAA,EAAIA,CAACzB,MAAOwB,EAAO/J,KAAK,QAAQpB,OAAOqL,EAAAA,EAAAA,IAAgCF,OAI9E,CACE1B,MAAO,OACPqB,MAAO,gBACPC,OAASC,IACP,EAAAzL,EAAAM,KAACuL,EAAAA,EAAIA,CAACzB,MAAOqB,EAAI7L,KAAKuB,SAAUU,KAAK,QAAQP,QAAQ,cAGzD,CACE4I,MAAO,YACPqB,MAAO,6BACPC,OAASC,IACP,EAAAzL,EAAAM,KAACe,EAAAA,EAAUA,CAACC,QAAQ,iBACjBmK,EAAIzI,SAAS+I,kBACVhB,GAAWU,EAAIzI,SAAS+I,mBACxB,OAIV,CACE7B,MAAO,cACPqB,MAAO,oBACPC,OAASC,QACFA,EAAL,KAAe,QAAVA,EAAAA,EAAI3E,cAAJ2E,IAAAA,OAAAA,EAAAA,EAAY3D,YACf,OACE,EAAA9H,EAAAM,KAACe,EAAAA,EAAUA,CAACC,QAAQ,QAAQjD,MAAM,yBAAgB,MAItD,MAAM2N,EAAWP,EAAI3E,OAAOgB,WAAWmE,QAAQ,kBAAmB,IAC5DC,EAA2B,WAAbF,EACpB,OACE,EAAAhM,EAAAC,MAACO,EAAAA,EAAGA,YACF,EAAAR,EAAAM,KAACe,EAAAA,EAAUA,CAACC,QAAQ,iBACjB4K,EAAc,YAAcF,IAE9BP,EAAI3E,OAAOqF,aACV,EAAAnM,EAAAM,KAACe,EAAAA,EAAUA,CAACC,QAAQ,UAAUjD,MAAM,yBACjC0M,GAAWU,EAAI3E,OAAOqF,mBAOnC,CACEjC,MAAO,UACPkC,WAAW,EACXZ,OAASC,QACsBA,EAGsBA,EAEjD3O,EAJF,GAAc,aADAgN,EAAAA,EAAAA,GAAyB,QAAV2B,EAAAA,EAAI3E,cAAJ2E,IAAAA,OAAAA,EAAAA,EAAY1B,YAChB,OAAO,KAEhC,MAAMsC,EAAgB,GAAGZ,EAAIzI,SAASC,cAAmC,QAAtBwI,EAAAA,EAAI7L,KAAKqB,qBAATwK,IAAAA,OAAAA,EAAAA,EAAwBvK,OAAQ,gBAEjFpE,EADF,MAAMwP,EACyBD,QAA7BvP,EAAAA,SAAuB,QAAvBA,EAAAA,EAAO2L,wBAAP3L,IAAAA,OAAAA,EAAAA,EAAyByP,IAAIF,UAA7BvP,IAAAA,GAAAA,EAGF,OADEoK,GAAyBK,GAAwB+E,GAIjD,EAAAtM,EAAAC,MAACO,EAAAA,EAAGA,CAAClD,QAAQ,OAAOmD,MAAO,CAAEC,IAAK,cAChC,EAAAV,EAAAM,KAAC+B,EAAAA,EAAMA,CACLR,KAAK,QACLU,WAAW,EAAAvC,EAAAM,KAAC8E,EAAAA,EAAeA,CAAAA,GAC3B9C,QAAS,KAhPnBiE,EAAe,CACbvH,MAAM,EACNC,QA8OqCwM,EA7OrCvM,OAAQ,UACRC,YAAY,KA6OJd,MAAM,UACNiD,QAAQ,oBACT,aAGD,EAAAtB,EAAAM,KAAC+B,EAAAA,EAAMA,CACLR,KAAK,QACLU,WAAW,EAAAvC,EAAAM,KAACK,EAAAA,EAAUA,CAAAA,GACtB2B,QAAS,KAhPnBiE,EAAe,CACbvH,MAAM,EACNC,QA8OoCwM,EA7OpCvM,OAAQ,SACRC,YAAY,KA6OJd,MAAM,YACNiD,QAAQ,oBACT,cAnBkB,QA4BvBkL,IAAoBpD,EAAAA,EAAAA,SACxB,IAAM,CACJ,CACEoC,OAASiB,QAEFxN,EADL,MAAMA,EAAUwN,EAAKC,QACrB,OAAKzN,SAAiB,QAAjBA,EAAAA,EAAS+D,gBAAT/D,IAAAA,OAAAA,EAAAA,EAAmBiC,OAGjB,EAAAlB,EAAAM,KAAC4C,EAAAA,CAAmBjE,QAASA,KAF3B,EAAAe,EAAAM,KAACE,EAAAA,EAAGA,CAAAA,MAMnB,IAGF,GAAIhF,GAAWmM,EACb,OACE,EAAA3H,EAAAM,KAACE,EAAAA,EAAGA,CAACO,EAAG,WACL,IAAIuJ,MAAM,IAAIxH,IAAI,CAAC6J,EAAGC,KACrB,EAAA5M,EAAAM,KAACE,EAAAA,EAAGA,CAASO,EAAG,YACd,EAAAf,EAAAM,KAACuM,EAAAA,EAAQA,CAACvL,QAAQ,OAAOwL,MAAM,UADvBF,MAQlB,GAAI7P,EACF,OAAO,EAAAiD,EAAAM,KAACyM,EAAAA,EAAkBA,CAAChQ,MAAOA,IAGpC,GAAI6K,EACF,OACE,EAAA5H,EAAAM,KAACE,EAAAA,EAAGA,CAACO,EAAG,YACN,EAAAf,EAAAC,MAACoB,EAAAA,EAAUA,CAAChD,MAAM,kBAAQ,gCACMuJ,EAAsBoB,aAM5D,MAAMgE,GAAgB9F,GAAwBK,EAE9C,OACE,EAAAvH,EAAAC,MAAAD,EAAAc,SAAA,YACE,EAAAd,EAAAC,MAACO,EAAAA,EAAGA,CAAC4C,UAAWD,EAAQ9F,qBACtB,EAAA2C,EAAAM,KAAC2M,EAAAA,EAAWA,CACVC,SAAU/D,EACVvC,QAASA,EACT9E,SAAU+E,KAEZ,EAAA7G,EAAAC,MAACO,EAAAA,EAAGA,CAAC4C,UAAWD,EAAQ1F,yBACrB2I,EAAiB9J,OAAS,IACzB,EAAA0D,EAAAC,MAACO,EAAAA,EAAGA,CAAC4C,UAAWD,EAAQzE,uBACtB,EAAAsB,EAAAC,MAACoB,EAAAA,EAAUA,CAACC,QAAQ,kBACjB8E,EAAiB9J,OAAO,WACI,IAA5B8J,EAAiB9J,OAAe,IAAM,GAAG,gBAE5C,EAAA0D,EAAAC,MAACO,EAAAA,EAAGA,CAAClD,QAAQ,OAAOmD,MAAO,CAAEC,IAAK,cAChC,EAAAV,EAAAM,KAAC+B,EAAAA,EAAMA,CACLR,KAAK,QACLP,QAAQ,YACRjD,MAAM,UACNkE,WAAW,EAAAvC,EAAAM,KAAC8E,EAAAA,EAAeA,CAAAA,GAC3B9C,QAxQU,KACQ,IAA5B8D,EAAiB9J,QACrBmK,EAAmB,CACjBzH,MAAM,EACN0D,SAAU0D,EACVlH,OAAQ,UACRC,YAAY,cAmQD,sBAGD,EAAAa,EAAAM,KAAC+B,EAAAA,EAAMA,CACLR,KAAK,QACLP,QAAQ,YACRjD,MAAM,YACNkE,WAAW,EAAAvC,EAAAM,KAACK,EAAAA,EAAUA,CAAAA,GACtB2B,QAvQS,KACS,IAA5B8D,EAAiB9J,QACrBmK,EAAmB,CACjBzH,MAAM,EACN0D,SAAU0D,EACVlH,OAAQ,SACRC,YAAY,cAkQD,0BAOsB,IAA5B0L,GAAiBvO,QAChB,EAAA0D,EAAAM,KAACE,EAAAA,EAAGA,CAACO,EAAG,EAAGoM,UAAU,mBACnB,EAAAnN,EAAAM,KAACe,EAAAA,EAAUA,CAACC,QAAQ,QAAQjD,MAAM,yBACA,KAA/BvB,SAAkB,QAAlBA,EAAAA,EAAOyL,mBAAPzL,IAAAA,OAAAA,EAAAA,EAAoBR,QACjB,qBACA,+CAIR,EAAA0D,EAAAM,KAAC8M,EAAAA,EAAKA,CACJjD,QAAS,CACPkD,UAAWL,GACXM,sBAAuBzC,GAAiB0C,KACrC1D,QACgBA,QAA0B,aAAzCC,EAAAA,EAAAA,GAAuB,QAARD,EAAAA,EAAE/C,cAAF+C,IAAAA,OAAAA,EAAAA,EAAUE,cAE7ByD,eAAiB/B,QAEEA,QAFe,CAChCxJ,SAC6C,aAA3C6H,EAAAA,EAAAA,GAAyB,QAAV2B,EAAAA,EAAI3E,cAAJ2E,IAAAA,OAAAA,EAAAA,EAAY1B,cAE/B0D,OAAQ5C,GAAiBvO,OAAS,GAClCoR,SAAU,GACVC,QAAQ,EACRvB,WAAW,EACXwB,iBAAkB,IAClBC,sBAAsB,EACtBC,SAAS,EACTC,qBAAqB,GAEvBzC,QAASA,GACTmB,KAAM5B,GAAiB/H,IAAKkL,IAC1B,MAAMC,EAAa7H,EAAiBmH,KACjCW,GACCA,EAASlL,SAAS9B,OAAS8M,EAAKhL,SAAS9B,MACzCgN,EAASlL,SAASC,YAAc+K,EAAKhL,SAASC,WAElD,MAAO,IACF+K,EACH/D,GAAI+D,EAAKhL,SAAS9B,KAClBiN,UAAW,CAAEC,QAASH,MAG1BI,kBAAoBC,IAElB,MAAMC,EAAcD,EAAmBtJ,OACpC6E,QAAqBA,QAA0B,aAAzCC,EAAAA,EAAAA,GAAuB,QAARD,EAAAA,EAAE/C,cAAF+C,IAAAA,OAAAA,EAAAA,EAAUE,cAElC1D,EAAoBkI,IAEtBC,YAAahC,YAMrB,EAAAxM,EAAAM,KAACvB,EAAAA,CACCC,KAAMsH,EAAYtH,KAClBC,QAASqH,EAAYrH,QACrBC,OAAQoH,EAAYpH,OACpBC,WAAYmH,EAAYnH,WACxBC,QAAS,IACPmH,EAAe,CACbvH,MAAM,EACNC,QAAS,KACTC,OAAQ,UACRC,YAAY,IAGhBE,UAzYgBwI,UACpB,IAAKvB,EAAYrH,UAAYnC,EAAO,OAEpCyJ,EAAgBkI,IAAU,IAAKA,EAAMtP,YAAY,KAEjD,MAAMuP,EAAyC,YAAvBpI,EAAYpH,OAChC,CAACyP,EAAYC,EAAW/E,IAAc7D,EAAY6I,eAAeF,EAAIC,EAAG/E,GACxE,CAAC8E,EAAYC,EAAW/E,IAAc7D,EAAY8I,cAAcH,EAAIC,EAAG/E,GAC3E,UACQ6E,EAAgBpI,EAAYrH,QAAQ+D,SAASC,UAAWqD,EAAYrH,QAAQ+D,SAAS9B,KAAMpE,EAAMgL,YAEvGvB,EAAe,CACbvH,MAAM,EACNC,QAAS,KACTC,OAAQ,UACRC,YAAY,IAGdkH,EAAqBoI,GACnBA,EAAKzJ,OACF6E,QACqBvD,EACKA,SADzBuD,EAAE7G,SAAS9B,QAA4B,QAAnBoF,EAAAA,EAAYrH,eAAZqH,IAAAA,OAAAA,EAAAA,EAAqBtD,SAAS9B,OAClD2I,EAAE7G,SAASC,aAAiC,QAAnBqD,EAAAA,EAAYrH,eAAZqH,IAAAA,OAAAA,EAAAA,EAAqBtD,SAASC,cAG7DkD,EAAY0D,GAAMA,EAAI,GACtB,MAAM3K,EAAgC,YAAvBoH,EAAYpH,OAAuB,WAAa,SAC/D4G,EAASmD,KAAK,CACZD,QAAS,WAAW9J,IACpBgK,SAAU,UACV5L,QAAS,aAEb,CAAE,MAAOwL,GACPiG,QAAQhS,MAAM,SAASuJ,EAAYpH,qBAAsB4J,GACzDvC,EAAgBkI,IAAU,IAAKA,EAAMtP,YAAY,KACjD,MAAMoF,EAAeuE,aAAeC,MAAQD,EAAIE,QAAU,yBAC1DlD,EAASmD,KAAK,CACZD,QAAS,aAAa1C,EAAYpH,mBAAmBqF,IACrD2E,SAAU,QACV5L,QAAS,aAEb,MAkWE,EAAA0C,EAAAM,KAACmC,EAAAA,CACCzD,KAAMwH,EAAgBxH,KACtB0D,SAAU8D,EAAgB9D,SAC1BxD,OAAQsH,EAAgBtH,OACxBC,WAAYqH,EAAgBrH,WAC5BC,QAAS,IACPqH,EAAmB,CACjBzH,MAAM,EACN0D,SAAU,GACVxD,OAAQ,UACRC,YAAY,IAGhBE,UAxVoBwI,UACxB,IAAK/K,GAA6C,IAApC0J,EAAgB9D,SAASpG,OAAc,OAErDmK,EAAoBgI,IAAU,IAAKA,EAAMtP,YAAY,KACrDwH,EAAwB,CAAE3H,MAAM,EAAO4F,QAAS,GAAIjC,WAAW,IAE/D,MAAMA,EAAuC,YAA3B6D,EAAgBtH,OAC5B8P,EAAmBrM,EACrB,CAACsM,EAA4CC,IAAelJ,EAAYmJ,oBAAoBF,EAAKC,GACjG,CAACD,EAA4CC,IAAelJ,EAAYoJ,mBAAmBH,EAAKC,GAEpG,IACE,MAAMxM,EAAW8D,EAAgB9D,SAASI,IAAK+G,IAAO,CACpD5G,UAAW4G,EAAE7G,SAASC,UACtB/B,KAAM2I,EAAE7G,SAAS9B,QAEbmO,QAAqBL,EAAiBtM,EAAU5F,EAAMgL,aAAe,GAErEwH,EAAkBD,EAAarK,OAAQC,GAAaA,EAAIzB,SAExD+L,EAAsC,IADxBF,EAAarK,OAAQC,IAAcA,EAAIzB,SAC1BlH,OAE3B4C,EAASyD,EAAY,WAAa,SAExC8D,EAAmB,CACjBzH,MAAM,EACN0D,SAAU,GACVxD,OAAQ,UACRC,YAAY,IAEdwH,EAAwB,CACtB3H,MAAOuQ,EACP3K,QAASyK,EACT1M,cAEF0D,EAAoB,IACpBF,EAAY0D,GAAMA,EAAI,GAElB0F,GACFzJ,EAASmD,KAAK,CACZD,QAAS,GAAGsG,EAAgBhT,mBAAmB4C,IAC/CgK,SAAU,UACV5L,QAAS,aAGf,CAAE,MAAOwL,GACPiG,QAAQhS,MAAM,cAAcyJ,EAAgBtH,sBAAuB4J,GACnErC,EAAoBgI,IAAU,IAAKA,EAAMtP,YAAY,KACrD,MAAMoF,EAAeuE,aAAeC,MAAQD,EAAIE,QAAU,yBAC1DlD,EAASmD,KAAK,CACZD,QAAS,kBAAkBxC,EAAgBtH,oBAAoBqF,IAC/D2E,SAAU,QACV5L,QAAS,aAEb,MAoSE,EAAA0C,EAAAM,KAACqE,EAAAA,CACC3F,KAAM0H,EAAqB1H,KAC3B4F,QAAS8B,EAAqB9B,QAC9BjC,UAAW+D,EAAqB/D,UAChCvD,QAAS,IACPuH,EAAwB,CACtB3H,MAAM,EACN4F,QAAS,GACTjC,WAAW,UCrhCV6M,EAAqB,KAE9B,EAAAxP,EAAAC,MAACwP,EAAAA,EAAIA,CAACC,QAAQ,kBACZ,EAAA1P,EAAAM,KAACqP,EAAAA,EAAMA,CAACzF,MAAM,mBAAmB0F,SAAS,gDACxC,EAAA5P,EAAAM,KAACuP,EAAAA,EAAaA,UAAC,iDAEjB,EAAA7P,EAAAM,KAACwP,EAAAA,EAAOA,WACN,EAAA9P,EAAAM,KAACoF,EAAkBA,CAAAA,uBCXpB,MAAMqK,EAAoC,KAE7C,EAAA/P,EAAAM,KAAC0P,EAAAA,EAAcA,CACbC,WAAYC,EAAAA,GACZ3L,aAAa,0DAEb,EAAAvE,EAAAM,KAACkP,EAAkBA,CAAAA,kMCIzB,MAAMtS,GAAYC,EAAAA,EAAAA,GAAWC,IAAU,CACrC+S,KAAM,CACJrD,MAAO,IACPsD,SAAU,IACVxS,QAASR,EAAMU,QAAQ,GACvBuS,YAAa,aAAajT,EAAMY,QAAQY,UACxCb,gBAAiBX,EAAMY,QAAQC,WAAWoG,MAC1C9G,OAAQ,OACR+S,UAAW,QAEbC,aAAc,CACZpS,WAAY,IACZM,SAAU,UACVD,cAAe,YACfgS,cAAe,SACfnS,MAAOjB,EAAMY,QAAQM,KAAKC,UAC1BH,aAAchB,EAAMU,QAAQ,GAC5BR,QAAS,OACTuB,WAAY,SACZC,eAAgB,gBAChB2R,OAAQ,UACRC,WAAY,QAEdC,cAAe,CACbvS,aAAchB,EAAMU,QAAQ,IAE9B8S,SAAU,CACRhT,QAASR,EAAMU,QAAQ,KAEzB+S,cAAe,CACbpS,SAAU,YAEZqS,YAAa,CACX5M,UAAW9G,EAAMU,QAAQ,IAE3BuM,MAAO,CACL5L,SAAU,UACVJ,MAAOjB,EAAMY,QAAQM,KAAKC,UAC1BwS,WAAY3T,EAAMU,QAAQ,OA4BjBmP,EAAc,EACzBC,WACAtG,UACA9E,WACAkP,cAEA,MAAM7N,EAAUjG,KACT+T,EAAmBC,GAAwBpW,IAAAA,SAChD,IAAI4N,IAAIwE,EAASlI,OAAOmM,GAAKA,EAAE1G,WAAW3H,IAAIqO,GAAKA,EAAElH,MA2BjDmH,EAAmBC,OAAOC,OAAO1K,GAAS2G,KAC9C+D,GAAUA,EAAOhV,OAAS,GAY5B,OACE,EAAAiV,EAAAtR,MAACO,EAAAA,EAAGA,CAAC4C,UAAWD,EAAQgN,gBACtB,EAAAoB,EAAAtR,MAACO,EAAAA,EAAGA,CAAClD,QAAQ,OAAOwB,eAAe,gBAAgBD,WAAW,SAASuC,GAAI,aACzE,EAAAmQ,EAAAjR,KAACe,EAAAA,EAAUA,CAACC,QAAQ,qBAAY,YAC/B8P,IACC,EAAAG,EAAAjR,KAAC+B,EAAAA,EAAMA,CACLR,KAAK,QACLxD,MAAM,UACNiE,QAjBU,KAClB,MAAMkP,EAA8B,CAAC,EACrCtE,EAAStD,QAAQ6H,IACfD,EAAeC,EAAQxH,IAAM,KAE/BnI,EAAS0P,GACTR,SAAAA,cAYO,kBAML,EAAAO,EAAAjR,KAACoR,EAAAA,EAAOA,CAAAA,GAEPxE,EAASpK,IAAI2O,IACZ,MAAME,EAAcV,EAAkB1E,IAAIkF,EAAQxH,IAC5C2H,GAAiBhL,EAAQ6K,EAAQxH,KAAO,IAAI3N,OAElD,OACE,EAAAiV,EAAAtR,MAACO,EAAAA,EAAGA,CAAkB4C,UAAWD,EAAQwN,cAAejP,GAAI,aAC1D,EAAA6P,EAAAtR,MAACO,EAAAA,EAAGA,CACF4C,UAAWD,EAAQoN,aACnBjO,QAAS,KAAMuP,OA9DJC,EA8DkBL,EAAQxH,QA7D/CiH,EAAqBzC,IACnB,MAAMsD,EAAO,IAAIrJ,IAAI+F,GAMrB,OALIsD,EAAKxF,IAAIuF,GACXC,EAAKC,OAAOF,GAEZC,EAAKlJ,IAAIiJ,GAEJC,IARW,IAACD,cAgEX,EAAAP,EAAAtR,MAACO,EAAAA,EAAGA,CAAClD,QAAQ,OAAOuB,WAAW,oBAC7B,EAAA0S,EAAAjR,KAACM,OAAAA,UAAM6Q,EAAQvH,QACd0H,EAAgB,IACf,EAAAL,EAAAtR,MAACW,OAAAA,CAAKwC,UAAWD,EAAQkH,gBAAO,IAAEuH,EAAc,UAGnDD,GACC,EAAAJ,EAAAjR,KAAC2R,EAAAA,EAAcA,CAACxT,SAAS,WAEzB,EAAA8S,EAAAjR,KAAC4R,EAAAA,EAAcA,CAACzT,SAAS,cAI7B,EAAA8S,EAAAjR,KAAC6R,EAAAA,EAAQA,CAACC,IAAKT,YACb,EAAAJ,EAAAjR,KAAC+R,EAAAA,EAASA,UACPZ,EAAQtH,QAAQrH,IAAIwP,IACnB,EAAAf,EAAAjR,KAACiS,EAAAA,EAAgBA,CAEfC,SACE,EAAAjB,EAAAjR,KAACmS,EAAAA,EAAQA,CACPrE,SAAUxH,EAAQ6K,EAAQxH,KAAO,IAAIa,SAASwH,EAAOxV,OACrDgF,SAAU,IAzEH,EAACgQ,EAAmBhV,KAC/C,MAAM4V,EAAgB9L,EAAQkL,IAAc,GACtCa,EAAYD,EAAc5H,SAAShO,GACrC4V,EAAc1N,OAAO4N,GAAKA,IAAM9V,GAChC,IAAI4V,EAAe5V,GAEvBgF,EAAS,IACJ8E,EACHkL,CAACA,GAAYa,KAkEOE,CAAqBpB,EAAQxH,GAAIqI,EAAOxV,OAE1C+E,KAAK,QACLuB,UAAWD,EAAQyN,SACnBvS,MAAM,YAGV+L,OACE,EAAAmH,EAAAtR,MAACO,EAAAA,EAAGA,CAAClD,QAAQ,OAAOuB,WAAW,oBAC7B,EAAA0S,EAAAjR,KAACM,OAAAA,CAAKwC,UAAWD,EAAQ0N,uBACtByB,EAAOlI,aAEQjK,IAAjBmS,EAAOjI,QACN,EAAAkH,EAAAtR,MAACW,OAAAA,CAAKwC,UAAWD,EAAQkH,gBAAO,IAAEiI,EAAOjI,MAAM,WAlBhDiI,EAAOxV,cAtBZ2U,EAAQxH,iHC1IrB,MAAM+F,EAAiB,EAAG8C,WAAU7C,aAAY8C,WAAUxO,mBAC/D,MAAM0C,QAAEA,EAAOzL,QAAEA,EAAOuB,MAAEA,IAAUsK,EAAAA,EAAAA,GAAsB4I,GAE1D,OAAIzU,GAEA,EAAA+V,EAAAjR,KAACE,EAAAA,EAAGA,CAACO,EAAG,WACL,IAAIuJ,MAAM,IAAIxH,IAAI,CAAC6J,EAAGC,KACrB,EAAA2E,EAAAjR,KAACE,EAAAA,EAAGA,CAASO,EAAG,YACd,EAAAwQ,EAAAjR,KAACuM,EAAAA,EAAQA,CAACvL,QAAQ,OAAOwL,MAAM,UADvBF,MAQd7P,GAEA,EAAAwU,EAAAtR,MAACO,EAAAA,EAAGA,CAACO,EAAG,aACN,EAAAwQ,EAAAtR,MAACoB,EAAAA,EAAUA,CAAChD,MAAM,kBAAQ,gCACMtB,EAAMiM,YAEtC,EAAAuI,EAAAjR,KAACe,EAAAA,EAAUA,CAACC,QAAQ,QAAQjD,MAAM,yBAAgB,sDAOnD4I,GAkBE,EAAAsK,EAAAjR,KAAAiR,EAAAzQ,SAAA,UAAGgS,IAjBJC,GACK,EAAAxB,EAAAjR,KAAAiR,EAAAzQ,SAAA,UAAGiS,KAGV,EAAAxB,EAAAtR,MAACO,EAAAA,EAAGA,CAACO,EAAG,aACN,EAAAwQ,EAAAjR,KAACe,EAAAA,EAAUA,CAAChD,MAAM,yBACfkG,GAAgB,iDAEnB,EAAAgN,EAAAjR,KAACE,EAAAA,EAAGA,CAACkB,GAAI,YACP,EAAA6P,EAAAtR,MAACoB,EAAAA,EAAUA,CAACC,QAAQ,UAAUjD,MAAM,0BAAgB,wBAC5B4R,EAAW/O,+BCtCtC,SAAS4I,EACdC,GAEA,OAAKA,GAAoC,IAAtBA,EAAWzN,OAIbyN,EAAWiJ,KAC1BC,GAAgB,aAAXA,EAAEC,MAAoC,SAAbD,EAAEnM,QAEb,WAENiD,EAAWiJ,KACxBC,GAAgB,WAAXA,EAAEC,MAAkC,SAAbD,EAAEnM,QAEb,SAEJiD,EAAWiJ,KACxBC,GAAgB,WAAXA,EAAEC,MAAkC,SAAbD,EAAEnM,QAEb,SAEZ,UAlBE,SAmBX,uEChCO,MAAMqM,EAA+BvH,IAC1C,MAAMwH,EAAO,CAAExP,OAAQ,QACvB,OAAQgI,GACN,IAAK,WACH,MAAO,IAAKwH,EAAMrV,gBAAiB,UAAWM,MAAO,QACvD,IAAK,SACH,MAAO,IAAK+U,EAAMrV,gBAAiB,UAAWM,MAAO,QACvD,IAAK,SACH,MAAO,IAAK+U,EAAMrV,gBAAiB,UAAWM,MAAO,QAGvD,QACE,MAAO,IAAK+U,EAAMrV,gBAAiB,UAAWM,MAAO,UAQ9CyN,EAAmCF,IAC9C,MAAMwH,EAAO,CAAExP,OAAQ,QACvB,OAAQgI,GACN,IAAK,WACH,MAAO,IAAKwH,EAAMrV,gBAAiB,UAAWM,MAAO,QACvD,IAAK,SACH,MAAO,IAAK+U,EAAMrV,gBAAiB,UAAWM,MAAO,QAGvD,QACE,MAAO,IAAK+U,EAAMrV,gBAAiB,UAAWM,MAAO,UAQ9CgV,EAAyBC,IACpC,OAAQA,GACN,IAAK,aACH,MAAO,CAAEvV,gBAAiB,UAAWM,MAAO,QAC9C,IAAK,eACH,MAAO,CAAEN,gBAAiB,UAAWM,MAAO,QAC9C,IAAK,aACH,MAAO,CAAEN,gBAAiB,UAAWM,MAAO,QAC9C,IAAK,UACH,MAAO,CAAEN,gBAAiB,UAAWM,MAAO,QAC9C,QACE,MAAO,CAAC,uPClDd,MAAAkV,EAAA,KACA,MAAAC,EAAUA,IAAM,EAAAC,EAAA7G,GAAkB8G,EAAAC,GAClC,OACAC,IAAA,gDACApL,MAAA,CACA,CACA0B,MAAAsJ,EAAA,+BACAK,KAAA,UACAC,MAAA,CACA,CAEA5J,MAAAsJ,EAAA,mCACAI,IAAA,0FCZA,SAAAG,EAAAC,GACA,MAAU/J,GAAAgK,EAAAC,SAAAA,EAAoBC,EAAAtZ,KAAkBuZ,GAAYJ,EAE5DK,GADc,EAAAC,EAAAC,UACdC,cAAAP,IAAAC,EACA,OAAyB,EAAAlU,EAAAM,KAAG+T,EAAA,IAASD,GACrC,CAyBA,SAAAK,EAAAT,GACA,OAAyB,EAAAhU,EAAAM,KAAGyT,EAAA,CAAY9J,GAAA,UAAA+J,GACxC,gBCXA,MAAA9W,GAAkB,EAAAxB,EAAAyB,YAClB,CACAuX,YAAA,CACAtE,SAAA,IACAhQ,SAAA,KAEAuU,SAAA,CACAnT,WAAA,WAGA,CAAIN,KAAA,2BAEJ0T,EAAA,EAAuBf,WACvB,MAAAgB,GAAc,EAAAP,EAAAC,UACdF,EAAAR,EAAAgB,EAAAL,cAAAX,IAAiDY,EAAWA,EAC5D,OAAyB,EAAAzU,EAAAM,KAAG+T,EAAA,KAE5BS,EAAA,EAAuBC,WAA2B,EAAA/U,EAAAM,KAAI0U,EAAAC,GAAI,CAAItJ,GAAAoJ,EAAAnB,IAAAd,SAAAiC,EAAA7K,OAAA6K,EAAAnB,MAC9DsB,EAAA,EAA2BlH,WACF,EAAAhO,EAAAC,MAAKkV,EAAAta,EAAQ,CAAIua,QAAA,EAAAtC,SAAA,EACtB,EAAA9S,EAAAM,KAAI+U,EAAAxa,EAAY,CAAIiY,UAA0B,EAAA9S,EAAAM,KAAGsU,EAAA,CAAgBf,KAAA7F,EAAA6F,UACjE,EAAA7T,EAAAM,KACdgV,EAAAza,EACN,CACA0a,QAAAvH,EAAA9D,MACA3L,UAAAyP,EAAA8F,OAAA0B,OACA,CAAA/G,EAAAsG,EAAAU,IAAA,IACAhH,EACAgH,EAAA,IAAuC,EAAAzV,EAAAM,KAAG,QAASmV,IACvB,EAAAzV,EAAAM,KAAGwU,EAAA,CAAgBC,QAAMA,EAAAnB,MAErD,SAMA,SAAA/D,EAAAmE,GACA,MAAAR,IAAgB,EAAAC,EAAA7G,GAAkB8G,EAAAC,IAClCzJ,MAAUA,EAAA1B,MAAAA,EAAAsK,SAAAA,GAAyBkB,GACzBxL,MAAAkN,GF1CV,WACA,MACAC,GADoB,EAAArB,EAAAsB,gBACpB5L,IAA+BsK,EAAAuB,cAC/BC,EAAAH,GAAAI,kBAAA,eACAC,EAAAzC,IACA,OAAAuC,EAGA,CACAlC,IAAAkC,EAAAG,UAAA,OACAzN,MAAAsN,EAAAI,eAAA,SAAAC,QAAAC,IAAA,CACAlM,MAAAkM,EAAAH,UAAA,SACApC,KAAAuC,EAAAC,kBAAA,QACAvC,OAAAsC,EAAAE,uBAAA,cAAAH,QACAI,IAAA,CACA3C,IAAA2C,EAAAN,UAAA,OACA/L,MAAAqM,EAAAF,kBAAA,oBAVAL,CAeA,CEqBiCQ,IACjCC,EAAAC,IAAwC,EAAAC,EAAA7a,WAAQ,IAChD8a,EAAAC,IAAkC,EAAAF,EAAA7a,UAAQ,MAC1CqH,EAAAjG,IACA4Y,GAAwB,EAAAxB,EAAA1O,QAAO0O,EAAAuB,cAAYE,kBAAA,eAC3Ce,GAAwB,EAAAC,EAAAlc,GACxBuC,GAAAA,EAAA4Z,YAAAC,KAAA,OAEAC,EAAAC,IACAN,EAAAM,EAAAC,eACAV,GAAA,IAEAW,EAAA,KACAX,GAAA,IAEA,OAAAZ,GAGyB,EAAA9V,EAAAC,MAAKD,EAAAc,SAAQ,CAAIgS,SAAA,EACtB,EAAA9S,EAAAM,KAAIE,EAAA3F,EAAG,CAAIyC,QAAA,OAAAga,GAAA,EAAAxE,SAAAgE,GAAkE,EAAA9W,EAAAM,KAC3FiX,EAAA1c,EACN,CACAwD,MAAA,UACAwD,KAAA,QACAS,QAAA4U,EACA,+BACA,uBACApE,UAAkC,EAAA9S,EAAAM,KAAImU,EAAQ,OAEtB,EAAAzU,EAAAM,KAClB+B,EAAAxH,EACN,CACA,+BACA,uBACAwD,MAAA,UACAiE,QAAA4U,EACA3U,WAAmC,EAAAvC,EAAAM,KAAImU,EAAQ,IAC/C3B,SAAAU,EAAA,4BAGoB,EAAAxT,EAAAC,MACduX,EAAAC,GACN,CACA,uCACAzY,KAAAyX,EACAG,WACAc,aAAA,CACAC,SAAA,SACAC,WAAA,SAEAC,gBAAA,CACAF,SAAA,MACAC,WAAA,SAEAxY,QAAAiY,EACAvE,SAAA,EAC0B,EAAA9S,EAAAC,MACd6X,EAAAjd,EACZ,CACAuI,UAAAD,EAAAuR,YACAqD,cAAAC,QAAApB,GACA9D,SAAA,CACA5I,IAAyC,EAAAlK,EAAAM,KACvB6U,EAAAta,EAClB,CACAua,QAAA,EACAvW,WAAA,aACAuE,UAAAD,EAAAwR,SACA7B,UAA8C,EAAA9S,EAAAM,KAAIe,EAAAxG,EAAU,CAAIyG,QAAA,YAAAwR,SAAA5I,MAGhDyM,EAAAsB,SAAQnV,IAAAgQ,EAAA,CAAAoF,EAAAtL,KAA6C,EAAA5M,EAAAM,KACnD6U,EAAAta,EAClB,CACAua,QAAA,EACAvW,WAAA,aACAuE,UAAAD,EAAAwR,SACA7B,SAAAoF,GAEA,SAA2BtL,OAE3BpE,GAAAkN,GAAA5S,IAAA,CAAAkL,EAAApB,KAAwE,EAAA5M,EAAAM,KAAG4U,EAAA,CAAoBlH,QAAM,QAAUpB,UAIrF,EAAA5M,EAAAM,KAAI8B,EAAAvH,EAAa,CAAIiY,UAA0B,EAAA9S,EAAAM,KAC7D+B,EAAAxH,EACZ,CACAwD,MAAA,UACAiE,QAAA+U,EACA,qBACAvE,SAAAU,EAAA,iCA3EA,IAkFA","sources":["webpack://kuadrant.kuadrant-backstage-plugin-frontend/../node_modules/@material-ui/icons/BrokenImage.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/../node_modules/@material-ui/icons/CheckCircle.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/../node_modules/@material-ui/icons/ExpandLess.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/../node_modules/react-use/esm/useAsync.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/../node_modules/react-use/esm/useAsyncFn.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./src/components/ApprovalQueueTable/ApprovalQueueTable.tsx","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./src/components/ApiKeyApprovalPage/ApiKeyApprovalPage.tsx","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./src/components/ApiKeyApprovalPage/ApiKeyApprovalPageWithPermissions.tsx","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./src/components/FilterPanel/FilterPanel.tsx","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./src/components/PermissionGate/PermissionGate.tsx","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./src/utils/apikeys.ts","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./src/utils/styles.ts","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./node_modules/@backstage/core-components/dist/hooks/useSupportConfig.esm.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./node_modules/@backstage/core-components/dist/icons/icons.esm.js","webpack://kuadrant.kuadrant-backstage-plugin-frontend/./node_modules/@backstage/core-components/dist/components/SupportButton/SupportButton.esm.js"],"sourcesContent":["\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21 5v6.59l-3-3.01-4 4.01-4-4-4 4-3-3.01V5c0-1.1.9-2 2-2h14c1.1 0 2 .9 2 2zm-3 6.42l3 3.01V19c0 1.1-.9 2-2 2H5c-1.1 0-2-.9-2-2v-6.58l3 2.99 4-4 4 4 4-3.99z\"\n}), 'BrokenImage');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z\"\n}), 'CheckCircle');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 8l-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z\"\n}), 'ExpandLess');\n\nexports.default = _default;","import { useEffect } from 'react';\nimport useAsyncFn from './useAsyncFn';\nexport default function useAsync(fn, deps) {\n if (deps === void 0) { deps = []; }\n var _a = useAsyncFn(fn, deps, {\n loading: true,\n }), state = _a[0], callback = _a[1];\n useEffect(function () {\n callback();\n }, [callback]);\n return state;\n}\n","import { __assign } from \"tslib\";\nimport { useCallback, useRef, useState } from 'react';\nimport useMountedState from './useMountedState';\nexport default function useAsyncFn(fn, deps, initialState) {\n if (deps === void 0) { deps = []; }\n if (initialState === void 0) { initialState = { loading: false }; }\n var lastCallId = useRef(0);\n var isMounted = useMountedState();\n var _a = useState(initialState), state = _a[0], set = _a[1];\n var callback = useCallback(function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var callId = ++lastCallId.current;\n if (!state.loading) {\n set(function (prevState) { return (__assign(__assign({}, prevState), { loading: true })); });\n }\n return fn.apply(void 0, args).then(function (value) {\n isMounted() && callId === lastCallId.current && set({ value: value, loading: false });\n return value;\n }, function (error) {\n isMounted() && callId === lastCallId.current && set({ error: error, loading: false });\n return error;\n });\n }, deps);\n return [state, callback];\n}\n","import React, { useState, useMemo } from \"react\";\nimport {\n useApi,\n identityApiRef,\n alertApiRef,\n} from \"@backstage/core-plugin-api\";\nimport { kuadrantApiRef } from '../../api';\nimport { useAsync } from \"react-use\";\nimport {\n Table,\n TableColumn,\n ResponseErrorPanel,\n Link,\n} from \"@backstage/core-components\";\nimport {\n kuadrantApiKeyUpdateAllPermission,\n kuadrantApiKeyUpdateOwnPermission,\n} from \"../../permissions\";\nimport { useKuadrantPermission } from \"../../utils/permissions\";\nimport {\n Button,\n Dialog,\n DialogTitle,\n DialogContent,\n DialogActions,\n Chip,\n Typography,\n Box,\n CircularProgress,\n TextField,\n makeStyles,\n} from \"@material-ui/core\";\nimport { Skeleton } from \"@material-ui/lab\";\nimport CheckCircleIcon from \"@material-ui/icons/CheckCircle\";\nimport CancelIcon from \"@material-ui/icons/Cancel\";\nimport { FilterPanel, FilterSection, FilterState } from \"../FilterPanel\";\nimport {APIKey, BulkOperationResult} from \"../../types/api-management\";\nimport { getApprovalQueueStatusChipStyle } from \"../../utils/styles\";\nimport { getAPIKeyPhase } from \"../../utils/apikeys\";\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n display: \"flex\",\n height: \"100%\",\n minHeight: 400,\n },\n tableContainer: {\n flex: 1,\n overflow: \"auto\",\n padding: 10,\n },\n useCasePanel: {\n padding: theme.spacing(2),\n backgroundColor: theme.palette.background.default,\n },\n useCaseLabel: {\n fontWeight: 600,\n marginBottom: theme.spacing(1),\n color: theme.palette.text.secondary,\n textTransform: \"uppercase\",\n fontSize: \"0.75rem\",\n },\n bulkActions: {\n padding: theme.spacing(2),\n backgroundColor: theme.palette.background.default,\n borderBottom: `1px solid ${theme.palette.divider}`,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n },\n}));\n\ninterface ApprovalDialogProps {\n open: boolean;\n request: APIKey | null;\n action: \"approve\" | \"reject\";\n processing: boolean;\n onClose: () => void;\n onConfirm: () => void;\n}\n\nconst ApprovalDialog = ({\n open,\n request,\n action,\n processing,\n onClose,\n onConfirm,\n}: ApprovalDialogProps) => {\n const [confirmInput, setConfirmInput] = React.useState(\"\");\n const actionLabel = action === \"approve\" ? \"Approve\" : \"Reject\";\n const processingLabel =\n action === \"approve\" ? \"Approving...\" : \"Rejecting...\";\n\n const isReject = action === \"reject\";\n const confirmText = request?.spec.requestedBy?.userId || \"\";\n const canConfirm = isReject ? confirmInput === confirmText : true;\n\n // reset input when dialog closes\n React.useEffect(() => {\n if (!open) {\n setConfirmInput(\"\");\n }\n }, [open]);\n\n return (\n <Dialog\n open={open}\n onClose={processing ? undefined : onClose}\n maxWidth=\"sm\"\n fullWidth\n >\n <DialogTitle>\n {isReject ? (\n <Box display=\"flex\" alignItems=\"center\" style={{ gap: 8 }}>\n <CancelIcon color=\"error\" />\n <span>{actionLabel} API Key</span>\n </Box>\n ) : (\n <span>{actionLabel} API Key</span>\n )}\n </DialogTitle>\n <DialogContent>\n {request && (\n <>\n <p>\n <strong>User:</strong> {request.spec.requestedBy.userId}\n </p>\n <p>\n <strong>API:</strong>{\" \"}\n {request.spec.apiProductRef?.name || \"unknown\"}\n </p>\n <p>\n <strong>Tier:</strong> {request.spec.planTier}\n </p>\n <Box mb={2}>\n <Typography\n variant=\"body2\"\n component=\"span\"\n style={{ fontWeight: \"bold\" }}\n >\n Use Case:\n </Typography>{\" \"}\n <Typography\n variant=\"body2\"\n component=\"span\"\n style={{ whiteSpace: \"pre-wrap\" }}\n >\n {request.spec.useCase || \"-\"}\n </Typography>\n </Box>\n {isReject && (\n <Box mt={2}>\n <Typography variant=\"body2\" color=\"textSecondary\" gutterBottom>\n Type <strong>{confirmText}</strong> to confirm rejection:\n </Typography>\n <TextField\n fullWidth\n variant=\"outlined\"\n size=\"small\"\n value={confirmInput}\n onChange={(e) => setConfirmInput(e.target.value)}\n disabled={processing}\n autoFocus\n placeholder={confirmText}\n />\n </Box>\n )}\n </>\n )}\n </DialogContent>\n <DialogActions>\n <Button onClick={onClose} disabled={processing}>\n Cancel\n </Button>\n <Button\n onClick={onConfirm}\n color={action === \"approve\" ? \"primary\" : \"secondary\"}\n variant=\"contained\"\n disabled={processing || !canConfirm}\n startIcon={\n processing ? (\n <CircularProgress size={16} color=\"inherit\" />\n ) : undefined\n }\n >\n {processing ? processingLabel : actionLabel}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n\ninterface BulkActionDialogProps {\n open: boolean;\n requests: APIKey[];\n action: \"approve\" | \"reject\";\n processing: boolean;\n onClose: () => void;\n onConfirm: () => void;\n}\n\nconst BulkActionDialog = ({\n open,\n requests,\n action,\n processing,\n onClose,\n onConfirm,\n}: BulkActionDialogProps) => {\n const isApprove = action === \"approve\";\n const actionLabel = isApprove ? \"Approve All\" : \"Reject All\";\n const processingLabel = isApprove ? \"Approving...\" : \"Rejecting...\";\n\n return (\n <Dialog\n open={open}\n onClose={processing ? undefined : onClose}\n maxWidth=\"md\"\n fullWidth\n >\n <DialogTitle>\n {isApprove ? \"Approve\" : \"Reject\"} {requests.length} API Keys\n </DialogTitle>\n <DialogContent>\n <Typography variant=\"body2\" paragraph>\n You are about to {isApprove ? \"approve\" : \"reject\"} the following API\n keys:\n </Typography>\n <Box mb={2} maxHeight={200} overflow=\"auto\">\n {requests.map((request) => (\n <Box\n key={`${request.metadata.namespace}/${request.metadata.name}`}\n mb={1}\n p={1}\n bgcolor=\"background.default\"\n >\n <Typography variant=\"body2\">\n <strong>{request.spec.requestedBy.userId}</strong> -{\" \"}\n {request.spec.apiProductRef?.name || \"unknown\"} (\n {request.spec.planTier})\n </Typography>\n </Box>\n ))}\n </Box>\n </DialogContent>\n <DialogActions>\n <Button onClick={onClose} disabled={processing}>\n Cancel\n </Button>\n <Button\n onClick={onConfirm}\n color={isApprove ? \"primary\" : \"secondary\"}\n variant=\"contained\"\n disabled={processing}\n startIcon={\n processing ? (\n <CircularProgress size={16} color=\"inherit\" />\n ) : undefined\n }\n >\n {processing ? processingLabel : actionLabel}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n\ninterface ExpandedRowProps {\n request: APIKey;\n}\n\nconst ExpandedRowContent = ({ request }: ExpandedRowProps) => {\n const classes = useStyles();\n\n return (\n <Box className={classes.useCasePanel} onClick={(e) => e.stopPropagation()}>\n <Typography className={classes.useCaseLabel}>Use Case</Typography>\n <Typography variant=\"body2\">\n {request.spec.useCase || \"No use case provided\"}\n </Typography>\n </Box>\n );\n};\n\ninterface AlertDialogProps {\n open: boolean;\n results: BulkOperationResult[];\n isApprove: boolean;\n onClose: () => void;\n}\n\nconst useBulkAlertStyles = makeStyles((theme) => ({\n successSection: {\n padding: theme.spacing(2),\n backgroundColor: theme.palette.success.main + '14',\n borderRadius: theme.shape.borderRadius,\n marginBottom: theme.spacing(2),\n border: `1px solid ${theme.palette.success.main}40`,\n },\n failureSection: {\n padding: theme.spacing(2),\n backgroundColor: theme.palette.error.main + '14',\n borderRadius: theme.shape.borderRadius,\n marginBottom: theme.spacing(2),\n border: `1px solid ${theme.palette.error.main}40`,\n },\n warningSection: {\n padding: theme.spacing(2),\n backgroundColor: theme.palette.warning.main + '14',\n borderRadius: theme.shape.borderRadius,\n marginBottom: theme.spacing(2),\n border: `1px solid ${theme.palette.warning.main}40`,\n },\n statRow: {\n display: 'flex',\n alignItems: 'center',\n gap: theme.spacing(1),\n },\n errorList: {\n marginTop: theme.spacing(2),\n padding: 0,\n listStyle: 'none',\n },\n errorItem: {\n padding: theme.spacing(1.5),\n marginBottom: theme.spacing(1),\n backgroundColor: theme.palette.background.paper,\n borderRadius: theme.shape.borderRadius,\n border: `1px solid ${theme.palette.divider}`,\n },\n errorName: {\n fontWeight: 600,\n fontSize: '0.875rem',\n marginBottom: theme.spacing(0.5),\n },\n errorMessage: {\n fontSize: '0.813rem',\n color: theme.palette.error.main,\n fontFamily: 'monospace',\n wordBreak: 'break-word',\n },\n expandButton: {\n marginTop: theme.spacing(1),\n padding: theme.spacing(0.5),\n },\n}));\n\nconst BulkAlertDialog = ({\n open,\n results,\n isApprove,\n onClose,\n}: AlertDialogProps) => {\n const classes = useBulkAlertStyles();\n const [showErrors, setShowErrors] = useState(true);\n const successResults = results.filter((res: any) => res.success);\n const failedResults = results.filter((res: any) => !res.success);\n const hasPartialSuccess = successResults.length > 0;\n\n return (\n <Dialog\n open={open}\n onClose={onClose}\n maxWidth=\"md\"\n fullWidth\n >\n <DialogTitle>\n <Box display=\"flex\" alignItems=\"center\" style={{ gap: 8 }}>\n {hasPartialSuccess ? (\n <>\n <CancelIcon style={{ color: '#ff9800' }} />\n <span>Bulk {isApprove ? \"Approve\" : \"Reject\"} Completed with Issues</span>\n </>\n ) : (\n <>\n <CancelIcon color=\"error\" />\n <span>Bulk {isApprove ? \"Approve\" : \"Reject\"} Failed</span>\n </>\n )}\n </Box>\n </DialogTitle>\n <DialogContent>\n {hasPartialSuccess && (\n <Box className={classes.successSection}>\n <Box className={classes.statRow}>\n <CheckCircleIcon style={{ color: '#4caf50' }} />\n <Typography variant=\"body1\">\n <strong>{successResults.length}</strong> API key{successResults.length !== 1 ? 's' : ''} {isApprove ? 'approved' : 'denied'} successfully\n </Typography>\n </Box>\n </Box>\n )}\n\n <Box className={hasPartialSuccess ? classes.warningSection : classes.failureSection}>\n <Box className={classes.statRow}>\n <CancelIcon color=\"error\" />\n <Typography variant=\"body1\">\n <strong>{failedResults.length}</strong> request{failedResults.length !== 1 ? 's' : ''} failed\n </Typography>\n </Box>\n\n <Button\n size=\"small\"\n className={classes.expandButton}\n onClick={() => setShowErrors(!showErrors)}\n >\n {showErrors ? 'Hide' : 'Show'} Error Details\n </Button>\n\n {showErrors && (\n <ul className={classes.errorList}>\n {failedResults.map((result, index) => (\n <li key={result.name || index} className={classes.errorItem}>\n <div className={classes.errorName}>\n {result.namespace}/{result.name}\n </div>\n <div className={classes.errorMessage}>\n {result.error || 'Unknown error'}\n </div>\n </li>\n ))}\n </ul>\n )}\n </Box>\n </DialogContent>\n <DialogActions>\n <Button onClick={onClose} color=\"primary\" variant=\"contained\">\n Close\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n\nexport const ApprovalQueueTable = () => {\n const classes = useStyles();\n const identityApi = useApi(identityApiRef);\n const alertApi = useApi(alertApiRef);\n const kuadrantApi = useApi(kuadrantApiRef);\n const [refresh, setRefresh] = useState(0);\n const [selectedRequests, setSelectedRequests] = useState<APIKey[]>([]);\n const [dialogState, setDialogState] = useState<{\n open: boolean;\n request: APIKey | null;\n action: \"approve\" | \"reject\";\n processing: boolean;\n }>({\n open: false,\n request: null,\n action: \"approve\",\n processing: false,\n });\n const [bulkDialogState, setBulkDialogState] = useState<{\n open: boolean;\n requests: APIKey[];\n action: \"approve\" | \"reject\";\n processing: boolean;\n }>({\n open: false,\n requests: [],\n action: \"approve\",\n processing: false,\n });\n const [bulkAlertDialogState, setBulkAlertDialogState] = useState<{\n open: boolean;\n results: BulkOperationResult[];\n isApprove: boolean;\n }>({\n open: false,\n results: [],\n isApprove: true,\n });\n const [filters, setFilters] = useState<FilterState>({\n status: [],\n apiProduct: [],\n tier: [],\n });\n\n const {\n allowed: canUpdateAllRequests,\n loading: updateAllPermissionLoading,\n error: updateAllPermissionError,\n } = useKuadrantPermission(kuadrantApiKeyUpdateAllPermission);\n\n const {\n allowed: canUpdateOwnRequests,\n loading: updateOwnPermissionLoading,\n error: updateOwnPermissionError,\n } = useKuadrantPermission(kuadrantApiKeyUpdateOwnPermission);\n\n const updatePermissionLoading =\n updateAllPermissionLoading || updateOwnPermissionLoading;\n const updatePermissionError =\n updateAllPermissionError || updateOwnPermissionError;\n\n const { value, loading, error } = useAsync(async () => {\n const identity = await identityApi.getBackstageIdentity();\n const reviewedBy = identity.userEntityRef;\n\n try {\n const [apiKeyRequests, apiProducts] = await Promise.all([\n kuadrantApi.getAllRequests(),\n kuadrantApi.getApiProducts(),\n ]);\n\n const allRequests = apiKeyRequests.items || [];\n const ownedApiProducts = new Set<string>();\n\n for (const product of apiProducts.items || []) {\n const owner = product.metadata?.annotations?.[\"backstage.io/owner\"];\n if (owner === reviewedBy) {\n ownedApiProducts.add(\n `${product.metadata.namespace}/${product.metadata.name}`,\n );\n }\n }\n\n return { allRequests, reviewedBy, ownedApiProducts };\n\n } catch(err) {\n const errorMessage = err instanceof Error ? err.message : \"unknown error occurred\";\n alertApi.post({\n message: `Failed to get resources. ${errorMessage}`,\n display: \"transient\",\n severity: \"error\",\n });\n return {\n allRequests: [] as APIKey[],\n reviewedBy,\n ownedApiProducts: new Set<string>(),\n };\n }\n }, [kuadrantApi, identityApi, refresh]);\n\n const filterSections: FilterSection[] = useMemo(() => {\n if (!value?.allRequests) return [];\n\n const statusCounts = { Approved: 0, Pending: 0, Denied: 0 };\n const apiProductCounts = new Map<string, number>();\n const tierCounts = new Map<string, number>();\n\n value.allRequests.forEach((r: APIKey) => {\n const status = getAPIKeyPhase(r.status?.conditions);\n statusCounts[status as keyof typeof statusCounts]++;\n\n const apiProduct = r.spec.apiProductRef?.name || \"unknown\";\n apiProductCounts.set(\n apiProduct,\n (apiProductCounts.get(apiProduct) || 0) + 1,\n );\n\n const tier = r.spec.planTier || \"unknown\";\n tierCounts.set(tier, (tierCounts.get(tier) || 0) + 1);\n });\n\n return [\n {\n id: \"status\",\n title: \"Status\",\n options: [\n { value: \"Pending\", label: \"Pending\", count: statusCounts.Pending },\n {\n value: \"Approved\",\n label: \"Approved\",\n count: statusCounts.Approved,\n },\n {\n value: \"Denied\",\n label: \"Denied\",\n count: statusCounts.Denied,\n },\n ],\n },\n {\n id: \"apiProduct\",\n title: \"API Product\",\n options: Array.from(apiProductCounts.entries()).map(\n ([name, count]) => ({\n value: name,\n label: name,\n count,\n }),\n ),\n collapsed: apiProductCounts.size > 5,\n },\n {\n id: \"tier\",\n title: \"Tier\",\n options: Array.from(tierCounts.entries()).map(([tier, count]) => ({\n value: tier,\n label: tier.charAt(0).toUpperCase() + tier.slice(1),\n count,\n })),\n },\n ];\n }, [value?.allRequests]);\n\n const filteredRequests = useMemo(() => {\n if (!value?.allRequests) return [];\n\n return value.allRequests.filter((r: APIKey) => {\n if (filters.status.length > 0) {\n const status = getAPIKeyPhase(r.status?.conditions);\n if (!filters.status.includes(status)) return false;\n }\n if (filters.apiProduct.length > 0) {\n const apiProduct = r.spec.apiProductRef?.name || \"unknown\";\n if (!filters.apiProduct.includes(apiProduct)) return false;\n }\n if (filters.tier.length > 0) {\n const tier = r.spec.planTier || \"unknown\";\n if (!filters.tier.includes(tier)) return false;\n }\n return true;\n });\n }, [value?.allRequests, filters]);\n\n const handleApprove = (request: APIKey) => {\n setDialogState({\n open: true,\n request,\n action: \"approve\",\n processing: false,\n });\n };\n\n const handleReject = (request: APIKey) => {\n setDialogState({\n open: true,\n request,\n action: \"reject\",\n processing: false,\n });\n };\n\n const handleConfirm = async () => {\n if (!dialogState.request || !value) return;\n\n setDialogState((prev) => ({ ...prev, processing: true }));\n\n const apikeyRequestFn = dialogState.action === \"approve\"\n ? (ns: string, n: string, r: string) => kuadrantApi.approveRequest(ns, n, r)\n : (ns: string, n: string, r: string) => kuadrantApi.rejectRequest(ns, n, r)\n try {\n await apikeyRequestFn(dialogState.request.metadata.namespace, dialogState.request.metadata.name, value.reviewedBy);\n\n setDialogState({\n open: false,\n request: null,\n action: \"approve\",\n processing: false,\n });\n // remove the processed request from selection\n setSelectedRequests((prev) =>\n prev.filter(\n (r) =>\n r.metadata.name !== dialogState.request?.metadata.name ||\n r.metadata.namespace !== dialogState.request?.metadata.namespace,\n ),\n );\n setRefresh((r) => r + 1);\n const action = dialogState.action === \"approve\" ? \"approved\" : \"denied\";\n alertApi.post({\n message: `API key ${action}`,\n severity: \"success\",\n display: \"transient\",\n });\n } catch (err) {\n console.error(`error ${dialogState.action}ing request:`, err);\n setDialogState((prev) => ({ ...prev, processing: false }));\n const errorMessage = err instanceof Error ? err.message : \"unknown error occurred\";\n alertApi.post({\n message: `Failed to ${dialogState.action} API key. ${errorMessage}`,\n severity: \"error\",\n display: \"transient\",\n });\n }\n };\n\n const handleBulkApprove = () => {\n if (selectedRequests.length === 0) return;\n setBulkDialogState({\n open: true,\n requests: selectedRequests,\n action: \"approve\",\n processing: false,\n });\n };\n\n const handleBulkReject = () => {\n if (selectedRequests.length === 0) return;\n setBulkDialogState({\n open: true,\n requests: selectedRequests,\n action: \"reject\",\n processing: false,\n });\n };\n\n const handleBulkConfirm = async () => {\n if (!value || bulkDialogState.requests.length === 0) return;\n\n setBulkDialogState((prev) => ({ ...prev, processing: true }));\n setBulkAlertDialogState({ open: false, results: [], isApprove: true, });\n\n const isApprove = bulkDialogState.action === \"approve\";\n const apiKeyRequestsFn = isApprove\n ? (req: { namespace: string, name: string }[], rb: string) => kuadrantApi.bulkApproveRequests(req, rb)\n : (req: { namespace: string, name: string }[], rb: string) => kuadrantApi.bulkRejectRequests(req, rb)\n\n try {\n const requests = bulkDialogState.requests.map((r) => ({\n namespace: r.metadata.namespace,\n name: r.metadata.name,\n }))\n const bulkResponse = await apiKeyRequestsFn(requests, value.reviewedBy) || [];\n\n const successfulItems = bulkResponse.filter((res: any) => res.success);\n const failedItems = bulkResponse.filter((res: any) => !res.success);\n const totalSuccess = failedItems.length === 0;\n\n const action = isApprove ? \"approved\" : \"denied\";\n\n setBulkDialogState({\n open: false,\n requests: [],\n action: \"approve\",\n processing: false,\n });\n setBulkAlertDialogState({\n open: !totalSuccess,\n results: bulkResponse,\n isApprove,\n });\n setSelectedRequests([]);\n setRefresh((r) => r + 1);\n\n if (totalSuccess) {\n alertApi.post({\n message: `${successfulItems.length} API keys ${action}`,\n severity: \"success\",\n display: \"transient\",\n });\n }\n } catch (err) {\n console.error(`error bulk ${bulkDialogState.action}ing requests:`, err);\n setBulkDialogState((prev) => ({ ...prev, processing: false }));\n const errorMessage = err instanceof Error ? err.message : \"unknown error occurred\";\n alertApi.post({\n message: `Failed to bulk ${bulkDialogState.action} API keys. ${errorMessage}`,\n severity: \"error\",\n display: \"transient\",\n });\n }\n };\n\n const formatDate = (dateString: string) => {\n const date = new Date(dateString);\n return date.toLocaleDateString(\"en-GB\", {\n year: \"numeric\",\n month: \"short\",\n day: \"numeric\",\n });\n };\n\n const columns: TableColumn<APIKey>[] = [\n {\n title: \"Requester\",\n field: \"spec.requestedBy.userId\",\n render: (row) => (\n <Typography variant=\"body2\">{row.spec.requestedBy.userId}</Typography>\n ),\n },\n {\n title: \"API Product\",\n field: \"spec.apiProductRef.name\",\n render: (row) => {\n const name = row.spec.apiProductRef?.name || \"unknown\";\n return (\n <Link to={`/catalog/default/api/${name}`}>\n <strong>{name}</strong>\n </Link>\n );\n },\n },\n {\n title: \"Status\",\n field: \"status.conditions\",\n render: (row) => {\n const phase = getAPIKeyPhase(row.status?.conditions);\n return (\n <Chip label={phase} size=\"small\" style={getApprovalQueueStatusChipStyle(phase)} />\n );\n },\n },\n {\n title: \"Tier\",\n field: \"spec.planTier\",\n render: (row) => (\n <Chip label={row.spec.planTier} size=\"small\" variant=\"outlined\" />\n ),\n },\n {\n title: \"Requested\",\n field: \"metadata.creationTimestamp\",\n render: (row) => (\n <Typography variant=\"body2\">\n {row.metadata.creationTimestamp\n ? formatDate(row.metadata.creationTimestamp)\n : \"-\"}\n </Typography>\n ),\n },\n {\n title: \"Reviewed By\",\n field: \"status.reviewedBy\",\n render: (row) => {\n if (!row.status?.reviewedBy)\n return (\n <Typography variant=\"body2\" color=\"textSecondary\">\n -\n </Typography>\n );\n const reviewer = row.status.reviewedBy.replace(/^user:default\\//, \"\");\n const isAutomatic = reviewer === \"system\";\n return (\n <Box>\n <Typography variant=\"body2\">\n {isAutomatic ? \"Automatic\" : reviewer}\n </Typography>\n {row.status.reviewedAt && (\n <Typography variant=\"caption\" color=\"textSecondary\">\n {formatDate(row.status.reviewedAt)}\n </Typography>\n )}\n </Box>\n );\n },\n },\n {\n title: \"Actions\",\n filtering: false,\n render: (row) => {\n const phase = getAPIKeyPhase(row.status?.conditions);\n if (phase !== \"Pending\") return null;\n\n const apiProductKey = `${row.metadata.namespace}/${row.spec.apiProductRef?.name || \"unknown\"}`;\n const ownsApiProduct =\n value?.ownedApiProducts?.has(apiProductKey) ?? false;\n const canUpdate =\n canUpdateAllRequests || (canUpdateOwnRequests && ownsApiProduct);\n if (!canUpdate) return null;\n\n return (\n <Box display=\"flex\" style={{ gap: 8 }}>\n <Button\n size=\"small\"\n startIcon={<CheckCircleIcon />}\n onClick={() => handleApprove(row)}\n color=\"primary\"\n variant=\"outlined\"\n >\n Approve\n </Button>\n <Button\n size=\"small\"\n startIcon={<CancelIcon />}\n onClick={() => handleReject(row)}\n color=\"secondary\"\n variant=\"outlined\"\n >\n Reject\n </Button>\n </Box>\n );\n },\n },\n ];\n\n const detailPanelConfig = useMemo(\n () => [\n {\n render: (data: any) => {\n const request = data.rowData as APIKey;\n if (!request?.metadata?.name) {\n return <Box />;\n }\n return <ExpandedRowContent request={request} />;\n },\n },\n ],\n [],\n );\n\n if (loading || updatePermissionLoading) {\n return (\n <Box p={2}>\n {[...Array(5)].map((_, i) => (\n <Box key={i} p={2}>\n <Skeleton variant=\"text\" width=\"100%\" />\n </Box>\n ))}\n </Box>\n );\n }\n\n if (error) {\n return <ResponseErrorPanel error={error} />;\n }\n\n if (updatePermissionError) {\n return (\n <Box p={2}>\n <Typography color=\"error\">\n Unable to check permissions: {updatePermissionError.message}\n </Typography>\n </Box>\n );\n }\n\n const canSelectRows = canUpdateAllRequests || canUpdateOwnRequests;\n\n return (\n <>\n <Box className={classes.container}>\n <FilterPanel\n sections={filterSections}\n filters={filters}\n onChange={setFilters}\n />\n <Box className={classes.tableContainer}>\n {selectedRequests.length > 0 && (\n <Box className={classes.bulkActions}>\n <Typography variant=\"body2\">\n {selectedRequests.length} request\n {selectedRequests.length !== 1 ? \"s\" : \"\"} selected\n </Typography>\n <Box display=\"flex\" style={{ gap: 8 }}>\n <Button\n size=\"small\"\n variant=\"contained\"\n color=\"primary\"\n startIcon={<CheckCircleIcon />}\n onClick={handleBulkApprove}\n >\n Approve Selected\n </Button>\n <Button\n size=\"small\"\n variant=\"contained\"\n color=\"secondary\"\n startIcon={<CancelIcon />}\n onClick={handleBulkReject}\n >\n Reject Selected\n </Button>\n </Box>\n </Box>\n )}\n\n {filteredRequests.length === 0 ? (\n <Box p={4} textAlign=\"center\">\n <Typography variant=\"body1\" color=\"textSecondary\">\n {value?.allRequests?.length === 0\n ? \"No API keys found.\"\n : \"No API keys match the selected filters.\"}\n </Typography>\n </Box>\n ) : (\n <Table\n options={{\n selection: canSelectRows,\n showSelectAllCheckbox: filteredRequests.some(\n (r: APIKey) =>\n getAPIKeyPhase(r.status?.conditions) === \"Pending\",\n ),\n selectionProps: (row: APIKey) => ({\n disabled:\n getAPIKeyPhase(row.status?.conditions) !== \"Pending\",\n }),\n paging: filteredRequests.length > 10,\n pageSize: 20,\n search: true,\n filtering: false,\n debounceInterval: 300,\n showTextRowsSelected: false,\n toolbar: true,\n emptyRowsWhenPaging: false,\n }}\n columns={columns}\n data={filteredRequests.map((item: APIKey) => {\n const isSelected = selectedRequests.some(\n (selected) =>\n selected.metadata.name === item.metadata.name &&\n selected.metadata.namespace === item.metadata.namespace,\n );\n return {\n ...item,\n id: item.metadata.name,\n tableData: { checked: isSelected },\n };\n })}\n onSelectionChange={(rows) => {\n // only allow selecting pending requests\n const pendingOnly = (rows as APIKey[]).filter(\n (r) => getAPIKeyPhase(r.status?.conditions) === \"Pending\",\n );\n setSelectedRequests(pendingOnly);\n }}\n detailPanel={detailPanelConfig}\n />\n )}\n </Box>\n </Box>\n\n <ApprovalDialog\n open={dialogState.open}\n request={dialogState.request}\n action={dialogState.action}\n processing={dialogState.processing}\n onClose={() =>\n setDialogState({\n open: false,\n request: null,\n action: \"approve\",\n processing: false,\n })\n }\n onConfirm={handleConfirm}\n />\n <BulkActionDialog\n open={bulkDialogState.open}\n requests={bulkDialogState.requests}\n action={bulkDialogState.action}\n processing={bulkDialogState.processing}\n onClose={() =>\n setBulkDialogState({\n open: false,\n requests: [],\n action: \"approve\",\n processing: false,\n })\n }\n onConfirm={handleBulkConfirm}\n />\n <BulkAlertDialog\n open={bulkAlertDialogState.open}\n results={bulkAlertDialogState.results}\n isApprove={bulkAlertDialogState.isApprove}\n onClose={() =>\n setBulkAlertDialogState({\n open: false,\n results: [],\n isApprove: true,\n })\n }\n />\n </>\n );\n};\n","import React from 'react';\nimport {\n Header,\n Page,\n Content,\n SupportButton,\n} from '@backstage/core-components';\nimport { ApprovalQueueTable } from '../ApprovalQueueTable';\n\nexport const ApiKeyApprovalPage = () => {\n return (\n <Page themeId=\"tool\">\n <Header title=\"API Key Approval\" subtitle=\"Review and approve API key requests\">\n <SupportButton>Approve or reject API key access requests</SupportButton>\n </Header>\n <Content>\n <ApprovalQueueTable />\n </Content>\n </Page>\n );\n};\n","import React from 'react';\nimport { ApiKeyApprovalPage } from './ApiKeyApprovalPage';\nimport { PermissionGate } from '../PermissionGate';\nimport { kuadrantApiKeyApprovePermission } from '../../permissions';\n\nexport const ApiKeyApprovalPageWithPermissions = () => {\n return (\n <PermissionGate\n permission={kuadrantApiKeyApprovePermission}\n errorMessage=\"You don't have permission to approve API keys\"\n >\n <ApiKeyApprovalPage />\n </PermissionGate>\n );\n};\n","import React from 'react';\nimport {\n Box,\n Typography,\n Checkbox,\n FormControlLabel,\n FormGroup,\n Divider,\n Button,\n Collapse,\n makeStyles,\n} from '@material-ui/core';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport ExpandLessIcon from '@material-ui/icons/ExpandLess';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n width: 240,\n minWidth: 240,\n padding: theme.spacing(2),\n borderRight: `1px solid ${theme.palette.divider}`,\n backgroundColor: theme.palette.background.paper,\n height: '100%',\n overflowY: 'auto',\n },\n sectionTitle: {\n fontWeight: 600,\n fontSize: '0.75rem',\n textTransform: 'uppercase',\n letterSpacing: '0.05em',\n color: theme.palette.text.secondary,\n marginBottom: theme.spacing(1),\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n cursor: 'pointer',\n userSelect: 'none',\n },\n filterSection: {\n marginBottom: theme.spacing(2),\n },\n checkbox: {\n padding: theme.spacing(0.5),\n },\n checkboxLabel: {\n fontSize: '0.875rem',\n },\n clearButton: {\n marginTop: theme.spacing(2),\n },\n count: {\n fontSize: '0.75rem',\n color: theme.palette.text.secondary,\n marginLeft: theme.spacing(1),\n },\n}));\n\nexport interface FilterOption {\n value: string;\n label: string;\n count?: number;\n}\n\nexport interface FilterSection {\n id: string;\n title: string;\n options: FilterOption[];\n collapsed?: boolean;\n}\n\nexport interface FilterState {\n [sectionId: string]: string[];\n}\n\ninterface FilterPanelProps {\n sections: FilterSection[];\n filters: FilterState;\n onChange: (filters: FilterState) => void;\n onClear?: () => void;\n}\n\nexport const FilterPanel = ({\n sections,\n filters,\n onChange,\n onClear,\n}: FilterPanelProps) => {\n const classes = useStyles();\n const [collapsedSections, setCollapsedSections] = React.useState<Set<string>>(\n new Set(sections.filter(s => s.collapsed).map(s => s.id)),\n );\n\n const toggleSection = (sectionId: string) => {\n setCollapsedSections(prev => {\n const next = new Set(prev);\n if (next.has(sectionId)) {\n next.delete(sectionId);\n } else {\n next.add(sectionId);\n }\n return next;\n });\n };\n\n const handleCheckboxChange = (sectionId: string, value: string) => {\n const currentValues = filters[sectionId] || [];\n const newValues = currentValues.includes(value)\n ? currentValues.filter(v => v !== value)\n : [...currentValues, value];\n\n onChange({\n ...filters,\n [sectionId]: newValues,\n });\n };\n\n const hasActiveFilters = Object.values(filters).some(\n values => values.length > 0,\n );\n\n const handleClear = () => {\n const clearedFilters: FilterState = {};\n sections.forEach(section => {\n clearedFilters[section.id] = [];\n });\n onChange(clearedFilters);\n onClear?.();\n };\n\n return (\n <Box className={classes.root}>\n <Box display=\"flex\" justifyContent=\"space-between\" alignItems=\"center\" mb={2}>\n <Typography variant=\"subtitle2\">Filters</Typography>\n {hasActiveFilters && (\n <Button\n size=\"small\"\n color=\"primary\"\n onClick={handleClear}\n >\n Clear all\n </Button>\n )}\n </Box>\n\n <Divider />\n\n {sections.map(section => {\n const isCollapsed = collapsedSections.has(section.id);\n const selectedCount = (filters[section.id] || []).length;\n\n return (\n <Box key={section.id} className={classes.filterSection} mt={2}>\n <Box\n className={classes.sectionTitle}\n onClick={() => toggleSection(section.id)}\n >\n <Box display=\"flex\" alignItems=\"center\">\n <span>{section.title}</span>\n {selectedCount > 0 && (\n <span className={classes.count}>({selectedCount})</span>\n )}\n </Box>\n {isCollapsed ? (\n <ExpandMoreIcon fontSize=\"small\" />\n ) : (\n <ExpandLessIcon fontSize=\"small\" />\n )}\n </Box>\n\n <Collapse in={!isCollapsed}>\n <FormGroup>\n {section.options.map(option => (\n <FormControlLabel\n key={option.value}\n control={\n <Checkbox\n checked={(filters[section.id] || []).includes(option.value)}\n onChange={() =>\n handleCheckboxChange(section.id, option.value)\n }\n size=\"small\"\n className={classes.checkbox}\n color=\"primary\"\n />\n }\n label={\n <Box display=\"flex\" alignItems=\"center\">\n <span className={classes.checkboxLabel}>\n {option.label}\n </span>\n {option.count !== undefined && (\n <span className={classes.count}>({option.count})</span>\n )}\n </Box>\n }\n />\n ))}\n </FormGroup>\n </Collapse>\n </Box>\n );\n })}\n </Box>\n );\n};\n","import React from 'react';\nimport { Typography, Box } from '@material-ui/core';\nimport { Skeleton } from '@material-ui/lab';\nimport { Permission } from '@backstage/plugin-permission-common';\nimport { useKuadrantPermission } from '../../utils/permissions';\n\ninterface PermissionGateProps {\n children: React.ReactNode;\n permission: Permission;\n fallback?: React.ReactNode;\n errorMessage?: string;\n}\n\nexport const PermissionGate = ({ children, permission, fallback, errorMessage }: PermissionGateProps) => {\n const { allowed, loading, error } = useKuadrantPermission(permission);\n\n if (loading) {\n return (\n <Box p={2}>\n {[...Array(5)].map((_, i) => (\n <Box key={i} p={2}>\n <Skeleton variant=\"text\" width=\"100%\" />\n </Box>\n ))}\n </Box>\n );\n }\n\n if (error) {\n return (\n <Box p={4}>\n <Typography color=\"error\">\n Unable to check permissions: {error.message}\n </Typography>\n <Typography variant=\"body2\" color=\"textSecondary\">\n Please try again or contact your administrator\n </Typography>\n </Box>\n );\n }\n\n if (!allowed) {\n if (fallback) {\n return <>{fallback}</>;\n }\n return (\n <Box p={4}>\n <Typography color=\"textSecondary\">\n {errorMessage || 'You don\\'t have permission to view this page'}\n </Typography>\n <Box mt={1}>\n <Typography variant=\"caption\" color=\"textSecondary\">\n Required permission: {permission.name}\n </Typography>\n </Box>\n </Box>\n );\n }\n\n return <>{children}</>;\n};\n","import { StatusCondition } from '../types/api-management';\n\n/**\n * Derives the APIKey approval phase from Kubernetes conditions.\n *\n * Maps conditions to phases:\n * - Empty conditions array → Pending\n * - Approved condition (status: True) → Approved\n * - Denied condition (status: True) → Denied\n * - Failed condition (status: True) → Failed\n *\n * @param conditions - Array of Kubernetes status conditions\n * @returns Current approval phase\n */\nexport function getAPIKeyPhase(\n conditions?: StatusCondition[]\n): 'Pending' | 'Approved' | 'Denied' | 'Failed' {\n if (!conditions || conditions.length === 0) {\n return 'Pending';\n }\n\n const approved = conditions.find(\n c => c.type === 'Approved' && c.status === 'True'\n );\n if (approved) return 'Approved';\n\n const denied = conditions.find(\n c => c.type === 'Denied' && c.status === 'True'\n );\n if (denied) return 'Denied';\n\n const failed = conditions.find(\n c => c.type === 'Failed' && c.status === 'True'\n );\n if (failed) return 'Failed';\n\n return 'Pending';\n}\n","import { CSSProperties } from \"react\";\n\n/**\n * Returns inline styles for API key status chips on the My API Keys page.\n */\nexport const getMyApiKeysStatusChipStyle = (phase: string): CSSProperties => {\n const base = { border: \"none\" };\n switch (phase) {\n case \"Approved\":\n return { ...base, backgroundColor: \"#1976d2\", color: \"#fff\" }; // Blue\n case \"Denied\":\n return { ...base, backgroundColor: \"#d32f2f\", color: \"#fff\" }; // Red\n case \"Failed\":\n return { ...base, backgroundColor: \"#ed6c02\", color: \"#fff\" }; // Orange\n case \"Pending\":\n return { ...base, backgroundColor: \"#9c27b0\", color: \"#fff\" }; // Purple\n default:\n return { ...base, backgroundColor: \"#9c27b0\", color: \"#fff\" }; // Purple (fallback for Pending)\n }\n};\n\n/**\n * Returns inline styles for API key status chips on the Approval Queue page.\n * Uses inline styles to ensure proper specificity with Material-UI Chip.\n */\nexport const getApprovalQueueStatusChipStyle = (phase: string): CSSProperties => {\n const base = { border: \"none\" };\n switch (phase) {\n case \"Approved\":\n return { ...base, backgroundColor: \"#2e7d32\", color: \"#fff\" }; // Green\n case \"Denied\":\n return { ...base, backgroundColor: \"#d32f2f\", color: \"#fff\" }; // Red\n case \"Pending\":\n return { ...base, backgroundColor: \"#ed6c02\", color: \"#fff\" }; // Orange\n default:\n return { ...base, backgroundColor: \"#ed6c02\", color: \"#fff\" }; // Orange (fallback for Pending)\n }\n};\n\n/**\n * Returns inline styles for lifecycle chips.\n * Uses inline styles to ensure proper specificity with Material-UI Chip.\n */\nexport const getLifecycleChipStyle = (lifecycle: string): CSSProperties => {\n switch (lifecycle) {\n case \"production\":\n return { backgroundColor: \"#1976d2\", color: \"#fff\" }; // Blue\n case \"experimental\":\n return { backgroundColor: \"#9c27b0\", color: \"#fff\" }; // Purple\n case \"deprecated\":\n return { backgroundColor: \"#ff9800\", color: \"#fff\" }; // Orange\n case \"retired\":\n return { backgroundColor: \"#d32f2f\", color: \"#fff\" }; // Red\n default:\n return {};\n }\n};\n","import { useApiHolder, configApiRef } from '@backstage/core-plugin-api';\nimport { coreComponentsTranslationRef } from '../translation.esm.js';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\n\nconst useDefaultSupportConfig = () => {\n const { t } = useTranslationRef(coreComponentsTranslationRef);\n return {\n url: \"https://github.com/backstage/backstage/issues\",\n items: [\n {\n title: t(\"supportConfig.default.title\"),\n icon: \"warning\",\n links: [\n {\n // TODO: Update to dedicated support page on backstage.io/docs\n title: t(\"supportConfig.default.linkTitle\"),\n url: \"https://github.com/backstage/backstage/blob/master/app-config.yaml\"\n }\n ]\n }\n ]\n };\n};\nfunction useSupportConfig() {\n const apiHolder = useApiHolder();\n const config = apiHolder.get(configApiRef);\n const supportConfig = config?.getOptionalConfig(\"app.support\");\n const defaultSupportConfig = useDefaultSupportConfig();\n if (!supportConfig) {\n return defaultSupportConfig;\n }\n return {\n url: supportConfig.getString(\"url\"),\n items: supportConfig.getConfigArray(\"items\").flatMap((itemConf) => ({\n title: itemConf.getString(\"title\"),\n icon: itemConf.getOptionalString(\"icon\"),\n links: (itemConf.getOptionalConfigArray(\"links\") ?? []).flatMap(\n (linkConf) => ({\n url: linkConf.getString(\"url\"),\n title: linkConf.getOptionalString(\"title\") ?? \"\"\n })\n )\n }))\n };\n}\n\nexport { useSupportConfig };\n//# sourceMappingURL=useSupportConfig.esm.js.map\n","import { jsx } from 'react/jsx-runtime';\nimport { useApp } from '@backstage/core-plugin-api';\nimport MuiBrokenImageIcon from '@material-ui/icons/BrokenImage';\n\nfunction AppIcon(props) {\n const { id: key, Fallback = MuiBrokenImageIcon, ...rest } = props;\n const app = useApp();\n const Icon = app.getSystemIcon(key) ?? Fallback;\n return /* @__PURE__ */ jsx(Icon, { ...rest });\n}\nfunction BrokenImageIcon(props) {\n return /* @__PURE__ */ jsx(AppIcon, { id: \"brokenImage\", ...props });\n}\nfunction CatalogIcon(props) {\n return /* @__PURE__ */ jsx(AppIcon, { id: \"catalog\", ...props });\n}\nfunction ChatIcon(props) {\n return /* @__PURE__ */ jsx(AppIcon, { id: \"chat\", ...props });\n}\nfunction DashboardIcon(props) {\n return /* @__PURE__ */ jsx(AppIcon, { id: \"dashboard\", ...props });\n}\nfunction DocsIcon(props) {\n return /* @__PURE__ */ jsx(AppIcon, { id: \"docs\", ...props });\n}\nfunction EmailIcon(props) {\n return /* @__PURE__ */ jsx(AppIcon, { id: \"email\", ...props });\n}\nfunction GitHubIcon(props) {\n return /* @__PURE__ */ jsx(AppIcon, { id: \"github\", ...props });\n}\nfunction GroupIcon(props) {\n return /* @__PURE__ */ jsx(AppIcon, { id: \"group\", ...props });\n}\nfunction HelpIcon(props) {\n return /* @__PURE__ */ jsx(AppIcon, { id: \"help\", ...props });\n}\nfunction UserIcon(props) {\n return /* @__PURE__ */ jsx(AppIcon, { id: \"user\", ...props });\n}\nfunction WarningIcon(props) {\n return /* @__PURE__ */ jsx(AppIcon, { id: \"warning\", ...props });\n}\nfunction StarIcon(props) {\n return /* @__PURE__ */ jsx(AppIcon, { id: \"star\", ...props });\n}\nfunction UnstarredIcon(props) {\n return /* @__PURE__ */ jsx(AppIcon, { id: \"unstarred\", ...props });\n}\n\nexport { AppIcon, BrokenImageIcon, CatalogIcon, ChatIcon, DashboardIcon, DocsIcon, EmailIcon, GitHubIcon, GroupIcon, HelpIcon, StarIcon, UnstarredIcon, UserIcon, WarningIcon };\n//# sourceMappingURL=icons.esm.js.map\n","import { jsxs, Fragment, jsx } from 'react/jsx-runtime';\nimport { useApi, configApiRef, useApp } from '@backstage/core-plugin-api';\nimport Box from '@material-ui/core/Box';\nimport Button from '@material-ui/core/Button';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport IconButton from '@material-ui/core/IconButton';\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport MenuList from '@material-ui/core/MenuList';\nimport Popover from '@material-ui/core/Popover';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport { useState, Children } from 'react';\nimport 'lodash';\nimport 'qs';\nimport 'react-router-dom';\nimport '@react-hookz/web';\nimport { useSupportConfig } from '../../hooks/useSupportConfig.esm.js';\nimport { HelpIcon } from '../../icons/icons.esm.js';\nimport { Link } from '../Link/Link.esm.js';\nimport { coreComponentsTranslationRef } from '../../translation.esm.js';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\n\nconst useStyles = makeStyles(\n {\n popoverList: {\n minWidth: 260,\n maxWidth: 400\n },\n menuItem: {\n whiteSpace: \"normal\"\n }\n },\n { name: \"BackstageSupportButton\" }\n);\nconst SupportIcon = ({ icon }) => {\n const app = useApp();\n const Icon = icon ? app.getSystemIcon(icon) ?? HelpIcon : HelpIcon;\n return /* @__PURE__ */ jsx(Icon, {});\n};\nconst SupportLink = ({ link }) => /* @__PURE__ */ jsx(Link, { to: link.url, children: link.title ?? link.url });\nconst SupportListItem = ({ item }) => {\n return /* @__PURE__ */ jsxs(MenuItem, { button: false, children: [\n /* @__PURE__ */ jsx(ListItemIcon, { children: /* @__PURE__ */ jsx(SupportIcon, { icon: item.icon }) }),\n /* @__PURE__ */ jsx(\n ListItemText,\n {\n primary: item.title,\n secondary: item.links?.reduce(\n (prev, link, idx) => [\n ...prev,\n idx > 0 && /* @__PURE__ */ jsx(\"br\", {}, idx),\n /* @__PURE__ */ jsx(SupportLink, { link }, link.url)\n ],\n []\n )\n }\n )\n ] });\n};\nfunction SupportButton(props) {\n const { t } = useTranslationRef(coreComponentsTranslationRef);\n const { title, items, children } = props;\n const { items: configItems } = useSupportConfig();\n const [popoverOpen, setPopoverOpen] = useState(false);\n const [anchorEl, setAnchorEl] = useState(null);\n const classes = useStyles();\n const supportConfig = useApi(configApiRef).getOptionalConfig(\"app.support\");\n const isSmallScreen = useMediaQuery(\n (theme) => theme.breakpoints.down(\"sm\")\n );\n const onClickHandler = (event) => {\n setAnchorEl(event.currentTarget);\n setPopoverOpen(true);\n };\n const popoverCloseHandler = () => {\n setPopoverOpen(false);\n };\n if (!supportConfig) {\n return null;\n }\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(Box, { display: \"flex\", ml: 1, children: isSmallScreen ? /* @__PURE__ */ jsx(\n IconButton,\n {\n color: \"primary\",\n size: \"small\",\n onClick: onClickHandler,\n \"data-testid\": \"support-button\",\n \"aria-label\": \"Support\",\n children: /* @__PURE__ */ jsx(HelpIcon, {})\n }\n ) : /* @__PURE__ */ jsx(\n Button,\n {\n \"data-testid\": \"support-button\",\n \"aria-label\": \"Support\",\n color: \"primary\",\n onClick: onClickHandler,\n startIcon: /* @__PURE__ */ jsx(HelpIcon, {}),\n children: t(\"supportButton.title\")\n }\n ) }),\n /* @__PURE__ */ jsxs(\n Popover,\n {\n \"data-testid\": \"support-button-popover\",\n open: popoverOpen,\n anchorEl,\n anchorOrigin: {\n vertical: \"bottom\",\n horizontal: \"right\"\n },\n transformOrigin: {\n vertical: \"top\",\n horizontal: \"right\"\n },\n onClose: popoverCloseHandler,\n children: [\n /* @__PURE__ */ jsxs(\n MenuList,\n {\n className: classes.popoverList,\n autoFocusItem: Boolean(anchorEl),\n children: [\n title && /* @__PURE__ */ jsx(\n MenuItem,\n {\n button: false,\n alignItems: \"flex-start\",\n className: classes.menuItem,\n children: /* @__PURE__ */ jsx(Typography, { variant: \"subtitle1\", children: title })\n }\n ),\n Children.map(children, (child, i) => /* @__PURE__ */ jsx(\n MenuItem,\n {\n button: false,\n alignItems: \"flex-start\",\n className: classes.menuItem,\n children: child\n },\n `child-${i}`\n )),\n (items ?? configItems).map((item, i) => /* @__PURE__ */ jsx(SupportListItem, { item }, `item-${i}`))\n ]\n }\n ),\n /* @__PURE__ */ jsx(DialogActions, { children: /* @__PURE__ */ jsx(\n Button,\n {\n color: \"primary\",\n onClick: popoverCloseHandler,\n \"aria-label\": \"Close\",\n children: t(\"supportButton.close\")\n }\n ) })\n ]\n }\n )\n ] });\n}\n\nexport { SupportButton };\n//# sourceMappingURL=SupportButton.esm.js.map\n"],"names":["_interopRequireDefault","__webpack_require__","_interopRequireWildcard","exports","A","React","_default","default","createElement","d","useAsync","fn","deps","_a","initialState","loading","lastCallId","index_js_","useRef","isMounted","useMountedState","useState","state","set","callback","useCallback","args","_i","arguments","length","callId","current","prevState","tslib_es6","__assign","apply","then","value","error","useAsyncFn","useEffect","useStyles","makeStyles","theme","container","display","height","minHeight","tableContainer","flex","overflow","padding","useCasePanel","spacing","backgroundColor","palette","background","useCaseLabel","fontWeight","marginBottom","color","text","secondary","textTransform","fontSize","bulkActions","borderBottom","divider","alignItems","justifyContent","ApprovalDialog","open","request","action","processing","onClose","onConfirm","confirmInput","setConfirmInput","actionLabel","processingLabel","isReject","confirmText","spec","requestedBy","userId","canConfirm","jsx_runtime","jsxs","Dialog","undefined","maxWidth","fullWidth","jsx","DialogTitle","Box","style","gap","CancelIcon","span","DialogContent","Fragment","p","strong","apiProductRef","name","planTier","mb","Typography","variant","component","whiteSpace","useCase","mt","gutterBottom","TextField","size","onChange","e","target","disabled","autoFocus","placeholder","DialogActions","Button","onClick","startIcon","CircularProgress","BulkActionDialog","requests","isApprove","paragraph","maxHeight","map","bgcolor","metadata","namespace","ExpandedRowContent","classes","className","stopPropagation","useBulkAlertStyles","successSection","success","main","borderRadius","shape","border","failureSection","warningSection","warning","statRow","errorList","marginTop","listStyle","errorItem","paper","errorName","errorMessage","fontFamily","wordBreak","expandButton","BulkAlertDialog","results","showErrors","setShowErrors","successResults","filter","res","failedResults","hasPartialSuccess","CheckCircleIcon","ul","result","index","li","div","ApprovalQueueTable","identityApi","useApi","identityApiRef","alertApi","alertApiRef","kuadrantApi","kuadrantApiRef","refresh","setRefresh","selectedRequests","setSelectedRequests","dialogState","setDialogState","bulkDialogState","setBulkDialogState","bulkAlertDialogState","setBulkAlertDialogState","filters","setFilters","status","apiProduct","tier","allowed","canUpdateAllRequests","updateAllPermissionLoading","updateAllPermissionError","useKuadrantPermission","kuadrantApiKeyUpdateAllPermission","canUpdateOwnRequests","updateOwnPermissionLoading","updateOwnPermissionError","kuadrantApiKeyUpdateOwnPermission","updatePermissionLoading","updatePermissionError","async","reviewedBy","getBackstageIdentity","userEntityRef","apiKeyRequests","apiProducts","Promise","all","getAllRequests","getApiProducts","allRequests","items","ownedApiProducts","Set","product","annotations","add","err","Error","message","post","severity","filterSections","useMemo","statusCounts","Approved","Pending","Denied","apiProductCounts","Map","tierCounts","forEach","r","getAPIKeyPhase","conditions","get","id","title","options","label","count","Array","from","entries","collapsed","charAt","toUpperCase","slice","filteredRequests","includes","formatDate","dateString","Date","toLocaleDateString","year","month","day","columns","field","render","row","Link","to","phase","Chip","getApprovalQueueStatusChipStyle","creationTimestamp","reviewer","replace","isAutomatic","reviewedAt","filtering","apiProductKey","ownsApiProduct","has","detailPanelConfig","data","rowData","_","i","Skeleton","width","ResponseErrorPanel","canSelectRows","FilterPanel","sections","textAlign","Table","selection","showSelectAllCheckbox","some","selectionProps","paging","pageSize","search","debounceInterval","showTextRowsSelected","toolbar","emptyRowsWhenPaging","item","isSelected","selected","tableData","checked","onSelectionChange","rows","pendingOnly","detailPanel","prev","apikeyRequestFn","ns","n","approveRequest","rejectRequest","console","apiKeyRequestsFn","req","rb","bulkApproveRequests","bulkRejectRequests","bulkResponse","successfulItems","totalSuccess","ApiKeyApprovalPage","Page","themeId","Header","subtitle","SupportButton","Content","ApiKeyApprovalPageWithPermissions","PermissionGate","permission","kuadrantApiKeyApprovePermission","root","minWidth","borderRight","overflowY","sectionTitle","letterSpacing","cursor","userSelect","filterSection","checkbox","checkboxLabel","clearButton","marginLeft","onClear","collapsedSections","setCollapsedSections","s","hasActiveFilters","Object","values","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","clearedFilters","section","Divider","isCollapsed","selectedCount","toggleSection","sectionId","next","delete","ExpandMoreIcon","ExpandLessIcon","Collapse","in","FormGroup","option","FormControlLabel","control","Checkbox","currentValues","newValues","v","handleCheckboxChange","children","fallback","find","c","type","getMyApiKeysStatusChipStyle","base","getLifecycleChipStyle","lifecycle","useDefaultSupportConfig","t","useTranslationRef_esm","translation_esm","O","url","icon","links","AppIcon","props","key","Fallback","BrokenImage","rest","Icon","index_esm_js_","useApp","getSystemIcon","HelpIcon","popoverList","menuItem","SupportIcon","app","SupportLink","link","Link_esm","N_","SupportListItem","MenuItem","button","ListItemIcon","ListItemText","primary","reduce","idx","configItems","config","useApiHolder","configApiRef","supportConfig","getOptionalConfig","defaultSupportConfig","getString","getConfigArray","flatMap","itemConf","getOptionalString","getOptionalConfigArray","linkConf","useSupportConfig","popoverOpen","setPopoverOpen","react_index_js_","anchorEl","setAnchorEl","isSmallScreen","useMediaQuery","breakpoints","down","onClickHandler","event","currentTarget","popoverCloseHandler","ml","IconButton","Popover","Ay","anchorOrigin","vertical","horizontal","transformOrigin","MenuList","autoFocusItem","Boolean","Children","child"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunkkuadrant_kuadrant_backstage_plugin_frontend=self.webpackChunkkuadrant_kuadrant_backstage_plugin_frontend||[]).push([[3947],{89509:(e,a,i)=>{i.d(a,{O:()=>u});var s=i(31085),n=(i(95478),i(58837)),t=i(10394),l=i(72501),c=i(67720),r=i(61009),o=i(47625),d=i(9719),m=i(54801),h=i(13677),p=i(42899),x=i(37725),j=i(46299);const A=(0,n.A)(e=>({label:{fontWeight:600,color:e.palette.text.secondary,marginBottom:e.spacing(.5),fontSize:"0.75rem",textTransform:"uppercase"},tierChip:{marginRight:e.spacing(.5),marginBottom:e.spacing(.5)},statusChipPublished:{backgroundColor:e.palette.primary.main,color:e.palette.primary.contrastText},statusChipDraft:{backgroundColor:e.palette.grey[600],color:e.palette.common.white},infoGrid:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(180px, 1fr))",gap:e.spacing(3),marginBottom:e.spacing(3)},infoItem:{minWidth:0},apiLink:{color:e.palette.primary.main,textDecoration:"none","&:hover":{textDecoration:"underline"}}})),u=({product:e,showStatus:a=!0,showCatalogLink:i=!0,httpRouteHostnames:n})=>{var u,v,b,g,N,y,f,_,I,k,C,P,R,D,L,S,T,w,O;const U=A(),E=(null===(u=e.spec)||void 0===u?void 0:u.publishStatus)||"Draft",z="Published"===E,B=(null===(v=e.status)||void 0===v?void 0:v.discoveredPlans)||[],G=(null===(g=e.status)||void 0===g||null===(b=g.discoveredAuthScheme)||void 0===b?void 0:b.authentication)||{},H=Object.values(G).some(e=>e.hasOwnProperty("apiKey"));return(0,s.jsxs)(s.Fragment,{children:[(null===(N=e.spec)||void 0===N?void 0:N.description)&&(0,s.jsxs)(t.A,{mb:3,children:[(0,s.jsx)(l.A,{variant:"caption",className:U.label,children:"Description"}),(0,s.jsx)(l.A,{variant:"body1",children:e.spec.description})]}),(0,s.jsxs)(t.A,{className:U.infoGrid,children:[a&&(0,s.jsxs)(t.A,{className:U.infoItem,children:[(0,s.jsx)(l.A,{variant:"caption",className:U.label,children:"Publish Status"}),(0,s.jsx)(t.A,{children:(0,s.jsx)(c.A,{label:E,size:"small",className:z?U.statusChipPublished:U.statusChipDraft,"data-testid":"publish-status-chip"})})]}),(null===(y=e.metadata.labels)||void 0===y?void 0:y.lifecycle)&&(0,s.jsxs)(t.A,{className:U.infoItem,children:[(0,s.jsx)(l.A,{variant:"caption",className:U.label,children:"Lifecycle"}),(0,s.jsx)(t.A,{children:(0,s.jsx)(c.A,{label:e.metadata.labels.lifecycle,size:"small",style:(0,j.ee)(e.metadata.labels.lifecycle),"data-testid":"lifecycle-chip"})})]}),(0,s.jsxs)(t.A,{className:U.infoItem,children:[(0,s.jsx)(l.A,{variant:"caption",className:U.label,children:"Version"}),(0,s.jsx)(l.A,{variant:"body2",children:(null===(f=e.spec)||void 0===f?void 0:f.version)||"v1"})]}),(0,s.jsxs)(t.A,{className:U.infoItem,children:[(0,s.jsx)(l.A,{variant:"caption",className:U.label,children:"Namespace"}),(0,s.jsx)(l.A,{variant:"body2",children:e.metadata.namespace})]}),H&&(0,s.jsxs)(t.A,{className:U.infoItem,children:[(0,s.jsx)(l.A,{variant:"caption",className:U.label,children:"API Key Approval"}),(0,s.jsx)(l.A,{variant:"body2",children:"automatic"===(null===(_=e.spec)||void 0===_?void 0:_.approvalMode)?"Automatic":"Need manual approval"})]}),(null===(I=e.spec)||void 0===I?void 0:I.tags)&&e.spec.tags.length>0&&(0,s.jsxs)(t.A,{className:U.infoItem,children:[(0,s.jsx)(l.A,{variant:"caption",className:U.label,children:"Tags"}),(0,s.jsx)(t.A,{children:e.spec.tags.map(e=>(0,s.jsx)(c.A,{label:e,size:"small",variant:"outlined",className:U.tierChip},e))})]})]}),(0,s.jsxs)(t.A,{className:U.infoGrid,children:[(0,s.jsxs)(t.A,{className:U.infoItem,children:[(0,s.jsx)(l.A,{variant:"caption",className:U.label,children:"API"}),(0,s.jsx)("br",{}),i?(0,s.jsx)(x.N_,{to:`/catalog/default/api/${e.metadata.name}`,className:U.apiLink,children:e.metadata.name}):(0,s.jsx)(l.A,{variant:"body2",children:e.metadata.name})]}),(0,s.jsxs)(t.A,{className:U.infoItem,children:[(0,s.jsx)(l.A,{variant:"caption",className:U.label,children:"Route"}),(0,s.jsx)(l.A,{variant:"body2",children:(null===(C=e.spec)||void 0===C||null===(k=C.targetRef)||void 0===k?void 0:k.name)||"-"})]}),n&&n.length>0&&(0,s.jsxs)(t.A,{className:U.infoItem,children:[(0,s.jsx)(l.A,{variant:"caption",className:U.label,children:n.length>1?"Hostnames":"Hostname"}),n.map((e,a)=>(0,s.jsx)(l.A,{variant:"body2",children:e},a))]})]}),B.length>0&&(0,s.jsxs)(t.A,{mb:3,children:[(0,s.jsx)(l.A,{variant:"caption",className:U.label,children:"Available Tiers"}),(0,s.jsxs)(r.A,{size:"small",children:[(0,s.jsx)(o.A,{children:(0,s.jsxs)(d.A,{children:[(0,s.jsx)(m.A,{children:"Tier"}),(0,s.jsx)(m.A,{children:"Rate Limits"})]})}),(0,s.jsx)(h.A,{children:B.map(e=>(0,s.jsxs)(d.A,{children:[(0,s.jsx)(m.A,{children:(0,s.jsx)(c.A,{label:e.tier,size:"small"})}),(0,s.jsx)(m.A,{children:e.limits&&Object.entries(e.limits).map(([e,a])=>(0,s.jsxs)(l.A,{variant:"body2",children:[String(a)," per ",e]},e))})]},e.tier))})]})]}),(0,s.jsxs)(p.A,{container:!0,spacing:3,children:[((null===(R=e.spec)||void 0===R||null===(P=R.contact)||void 0===P?void 0:P.email)||(null===(L=e.spec)||void 0===L||null===(D=L.contact)||void 0===D?void 0:D.team))&&(0,s.jsxs)(p.A,{item:!0,xs:12,md:6,children:[(0,s.jsx)(l.A,{variant:"caption",className:U.label,children:"Contact Information"}),(0,s.jsxs)(t.A,{mt:1,children:[e.spec.contact.team&&(0,s.jsxs)(l.A,{variant:"body2",children:[(0,s.jsx)("strong",{children:"Team:"})," ",e.spec.contact.team]}),e.spec.contact.email&&(0,s.jsxs)(l.A,{variant:"body2",children:[(0,s.jsx)("strong",{children:"Email:"})," ",(0,s.jsx)(x.N_,{to:`mailto:${e.spec.contact.email}`,children:e.spec.contact.email})]})]})]}),((null===(T=e.spec)||void 0===T||null===(S=T.documentation)||void 0===S?void 0:S.docsURL)||(null===(O=e.spec)||void 0===O||null===(w=O.documentation)||void 0===w?void 0:w.openAPISpecURL))&&(0,s.jsxs)(p.A,{item:!0,xs:12,md:6,children:[(0,s.jsx)(l.A,{variant:"caption",className:U.label,children:"Documentation"}),(0,s.jsxs)(t.A,{mt:1,children:[e.spec.documentation.docsURL&&(0,s.jsxs)(l.A,{variant:"body2",children:[(0,s.jsx)("strong",{children:"Docs:"})," ",(0,s.jsx)(x.N_,{to:e.spec.documentation.docsURL,target:"_blank",children:"View Documentation"})]}),e.spec.documentation.openAPISpecURL&&(0,s.jsxs)(l.A,{variant:"body2",children:[(0,s.jsx)("strong",{children:"OpenAPI Spec:"})," ",(0,s.jsx)(x.N_,{to:e.spec.documentation.openAPISpecURL,target:"_blank",children:"View Spec"})]})]})]})]})]})}},71255:(e,a,i)=>{i.d(a,{n:()=>d});var s=i(31085),n=(i(95478),i(96040)),t=i(37725),l=i(82300),c=i(10394),r=i(42899),o=i(72501);const d=({issuerUrl:e,tokenEndpoint:a})=>{const i=a||e;return(0,s.jsx)(n.n,{title:"OIDC Provider Discovery",children:(0,s.jsx)(c.A,{p:2,children:(0,s.jsxs)(r.A,{container:!0,spacing:2,children:[(0,s.jsx)(r.A,{item:!0,xs:12,children:(0,s.jsx)(o.A,{variant:"body2",children:"This API uses OIDC authentication. Obtain a token from the identity provider below."})}),(0,s.jsx)(r.A,{item:!0,xs:12,children:(0,s.jsxs)(o.A,{variant:"body2",children:[(0,s.jsx)("strong",{children:"Identity Provider: "}),(0,s.jsx)(t.N_,{to:e,target:"_blank",children:e})]})}),a&&(0,s.jsx)(r.A,{item:!0,xs:12,children:(0,s.jsxs)(o.A,{variant:"body2",children:[(0,s.jsx)("strong",{children:"Token Endpoint: "}),(0,s.jsx)(t.N_,{to:a,target:"_blank",children:a})]})}),(0,s.jsx)(r.A,{item:!0,xs:12,children:(0,s.jsx)(l.z,{text:`# Example (Client Credentials Flow):\ncurl -X POST \\\n -d "grant_type=client_credentials" \\\n -d "client_id=YOUR_CLIENT_ID" \\\n -d "client_secret=YOUR_CLIENT_SECRET" \\\n ${i}`,language:"bash",showCopyCodeButton:!0})})]})})})}}}]);
2
+ //# sourceMappingURL=3947.cd00bcd5.chunk.js.map