@kuadrant/kuadrant-backstage-plugin-frontend 0.2.0 → 0.3.0-aaa46b4

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 (198) hide show
  1. package/dist/api.esm.js +40 -2
  2. package/dist/api.esm.js.map +1 -1
  3. package/dist/components/ApiAccessCard/ApiAccessCard.esm.js +20 -85
  4. package/dist/components/ApiAccessCard/ApiAccessCard.esm.js.map +1 -1
  5. package/dist/components/ApiKeyApprovalPage/ApiKeyApprovalPageWithPermissions.esm.js +18 -0
  6. package/dist/components/ApiKeyApprovalPage/ApiKeyApprovalPageWithPermissions.esm.js.map +1 -0
  7. package/dist/components/ApiKeyApprovalPage/index.esm.js +1 -0
  8. package/dist/components/ApiKeyApprovalPage/index.esm.js.map +1 -1
  9. package/dist/components/ApiKeyDetailPage/ApiKeyDetailPage.esm.js +19 -60
  10. package/dist/components/ApiKeyDetailPage/ApiKeyDetailPage.esm.js.map +1 -1
  11. package/dist/components/ApiKeyManagementTab/ApiKeyManagementTab.esm.js +66 -113
  12. package/dist/components/ApiKeyManagementTab/ApiKeyManagementTab.esm.js.map +1 -1
  13. package/dist/components/ApiProductInfoCard/ApiProductInfoCard.esm.js +3 -2
  14. package/dist/components/ApiProductInfoCard/ApiProductInfoCard.esm.js.map +1 -1
  15. package/dist/components/ApprovalQueueTable/ApprovalQueueTable.esm.js +16 -15
  16. package/dist/components/ApprovalQueueTable/ApprovalQueueTable.esm.js.map +1 -1
  17. package/dist/components/CreateAPIProductDialog/CreateAPIProductDialog.esm.js +1 -7
  18. package/dist/components/CreateAPIProductDialog/CreateAPIProductDialog.esm.js.map +1 -1
  19. package/dist/components/EditAPIProductDialog/EditAPIProductDialog.esm.js +2 -3
  20. package/dist/components/EditAPIProductDialog/EditAPIProductDialog.esm.js.map +1 -1
  21. package/dist/components/KuadrantIcon/KuadrantIcon.esm.js +22 -0
  22. package/dist/components/KuadrantIcon/KuadrantIcon.esm.js.map +1 -0
  23. package/dist/components/KuadrantPage/ApiProductsPage.esm.js +5 -18
  24. package/dist/components/KuadrantPage/ApiProductsPage.esm.js.map +1 -1
  25. package/dist/components/MyApiKeysTable/MyApiKeysTable.esm.js +28 -138
  26. package/dist/components/MyApiKeysTable/MyApiKeysTable.esm.js.map +1 -1
  27. package/dist/components/PermissionGate/PermissionGate.esm.js +2 -2
  28. package/dist/components/PermissionGate/PermissionGate.esm.js.map +1 -1
  29. package/dist/components/RequestAccessDialog/RequestAccessDialog.esm.js +32 -18
  30. package/dist/components/RequestAccessDialog/RequestAccessDialog.esm.js.map +1 -1
  31. package/dist/components/SimpleRequestAccessDialog/SimpleRequestAccessDialog.esm.js +13 -2
  32. package/dist/components/SimpleRequestAccessDialog/SimpleRequestAccessDialog.esm.js.map +1 -1
  33. package/dist/components/icons.esm.js +11 -0
  34. package/dist/components/icons.esm.js.map +1 -0
  35. package/dist/index.d.ts +54 -6
  36. package/dist/index.esm.js +3 -1
  37. package/dist/index.esm.js.map +1 -1
  38. package/dist/plugin.esm.js +2 -10
  39. package/dist/plugin.esm.js.map +1 -1
  40. package/dist/utils/apikeys.esm.js +21 -0
  41. package/dist/utils/apikeys.esm.js.map +1 -0
  42. package/dist/utils/styles.esm.js +5 -2
  43. package/dist/utils/styles.esm.js.map +1 -1
  44. package/dist-scalprum/internal.plugin-kuadrant.7f1de85661b1b848af15.js +2 -0
  45. package/dist-scalprum/internal.plugin-kuadrant.7f1de85661b1b848af15.js.map +1 -0
  46. package/dist-scalprum/plugin-manifest.json +3 -3
  47. package/dist-scalprum/static/{1037.58dd29ad.chunk.js → 1037.25758556.chunk.js} +1 -1
  48. package/dist-scalprum/static/{1037.58dd29ad.chunk.js.map → 1037.25758556.chunk.js.map} +1 -1
  49. package/dist-scalprum/static/1340.7c4f4722.chunk.js +3 -0
  50. package/dist-scalprum/static/1340.7c4f4722.chunk.js.map +1 -0
  51. package/dist-scalprum/static/1719.52ca7daf.chunk.js +2 -0
  52. package/dist-scalprum/static/1719.52ca7daf.chunk.js.map +1 -0
  53. package/dist-scalprum/static/{1881.8221c002.chunk.js → 1931.f6a5edbb.chunk.js} +2 -2
  54. package/dist-scalprum/static/1931.f6a5edbb.chunk.js.map +1 -0
  55. package/dist-scalprum/static/20.b3a37d1d.chunk.js +3 -0
  56. package/dist-scalprum/static/20.b3a37d1d.chunk.js.map +1 -0
  57. package/dist-scalprum/static/2251.08f3db99.chunk.js +2 -0
  58. package/dist-scalprum/static/2251.08f3db99.chunk.js.map +1 -0
  59. package/dist-scalprum/static/2769.e09b0ab0.chunk.js +2 -0
  60. package/dist-scalprum/static/2769.e09b0ab0.chunk.js.map +1 -0
  61. package/dist-scalprum/static/2821.1ac360ec.chunk.js +2 -0
  62. package/dist-scalprum/static/2821.1ac360ec.chunk.js.map +1 -0
  63. package/dist-scalprum/static/2952.b54bd390.chunk.js +2 -0
  64. package/dist-scalprum/static/2952.b54bd390.chunk.js.map +1 -0
  65. package/dist-scalprum/static/2967.004a950e.chunk.js +2 -0
  66. package/dist-scalprum/static/2967.004a950e.chunk.js.map +1 -0
  67. package/dist-scalprum/static/3015.1fe097c2.chunk.js +3 -0
  68. package/dist-scalprum/static/3015.1fe097c2.chunk.js.LICENSE.txt +9 -0
  69. package/dist-scalprum/static/3015.1fe097c2.chunk.js.map +1 -0
  70. package/dist-scalprum/static/327.74ecd572.chunk.js +2 -0
  71. package/dist-scalprum/static/327.74ecd572.chunk.js.map +1 -0
  72. package/dist-scalprum/static/3657.882640ca.chunk.js +3 -0
  73. package/dist-scalprum/static/3657.882640ca.chunk.js.LICENSE.txt +8 -0
  74. package/dist-scalprum/static/3657.882640ca.chunk.js.map +1 -0
  75. package/dist-scalprum/static/3658.104704cc.chunk.js +2 -0
  76. package/dist-scalprum/static/3658.104704cc.chunk.js.map +1 -0
  77. package/dist-scalprum/static/{3897.ef4554b5.chunk.js → 3897.6e9c07c0.chunk.js} +1 -1
  78. package/dist-scalprum/static/{3897.ef4554b5.chunk.js.map → 3897.6e9c07c0.chunk.js.map} +1 -1
  79. package/dist-scalprum/static/3917.888fba36.chunk.js +2 -0
  80. package/dist-scalprum/static/3917.888fba36.chunk.js.map +1 -0
  81. package/dist-scalprum/static/3947.f5320e89.chunk.js +2 -0
  82. package/dist-scalprum/static/3947.f5320e89.chunk.js.map +1 -0
  83. package/dist-scalprum/static/{4083.488ff7a9.chunk.js → 4083.811c4e7a.chunk.js} +2 -2
  84. package/dist-scalprum/static/{4083.488ff7a9.chunk.js.map → 4083.811c4e7a.chunk.js.map} +1 -1
  85. package/dist-scalprum/static/438.4335b833.chunk.js +2 -0
  86. package/dist-scalprum/static/438.4335b833.chunk.js.map +1 -0
  87. package/dist-scalprum/static/4908.4f21d453.chunk.js +2 -0
  88. package/dist-scalprum/static/4908.4f21d453.chunk.js.map +1 -0
  89. package/dist-scalprum/static/{5010.6241b64f.chunk.js → 5010.4f67737b.chunk.js} +2 -2
  90. package/dist-scalprum/static/{5010.6241b64f.chunk.js.map → 5010.4f67737b.chunk.js.map} +1 -1
  91. package/dist-scalprum/static/5197.53535ff4.chunk.js +2 -0
  92. package/dist-scalprum/static/5197.53535ff4.chunk.js.map +1 -0
  93. package/dist-scalprum/static/5289.6c803140.chunk.js +2 -0
  94. package/dist-scalprum/static/5289.6c803140.chunk.js.map +1 -0
  95. package/dist-scalprum/static/5943.4e1dedc5.chunk.js +2 -0
  96. package/dist-scalprum/static/5943.4e1dedc5.chunk.js.map +1 -0
  97. package/dist-scalprum/static/6038.63d1f832.chunk.js +3 -0
  98. package/dist-scalprum/static/6038.63d1f832.chunk.js.LICENSE.txt +8 -0
  99. package/dist-scalprum/static/6038.63d1f832.chunk.js.map +1 -0
  100. package/dist-scalprum/static/{6272.b5645dc2.chunk.js → 6272.3ed14ea4.chunk.js} +1 -1
  101. package/dist-scalprum/static/{6272.b5645dc2.chunk.js.map → 6272.3ed14ea4.chunk.js.map} +1 -1
  102. package/dist-scalprum/static/6311.da1849d1.chunk.js +2 -0
  103. package/dist-scalprum/static/6311.da1849d1.chunk.js.map +1 -0
  104. package/dist-scalprum/static/635.f63679a5.chunk.js +3 -0
  105. package/dist-scalprum/static/635.f63679a5.chunk.js.map +1 -0
  106. package/dist-scalprum/static/6371.02375475.chunk.js +3 -0
  107. package/dist-scalprum/static/6371.02375475.chunk.js.LICENSE.txt +9 -0
  108. package/dist-scalprum/static/6371.02375475.chunk.js.map +1 -0
  109. package/dist-scalprum/static/{6386.2d20c412.chunk.js → 6386.5922f271.chunk.js} +3 -3
  110. package/dist-scalprum/static/{6386.2d20c412.chunk.js.map → 6386.5922f271.chunk.js.map} +1 -1
  111. package/dist-scalprum/static/6837.6252b97a.chunk.js +2 -0
  112. package/dist-scalprum/static/6837.6252b97a.chunk.js.map +1 -0
  113. package/dist-scalprum/static/{6972.e47ec97e.chunk.js → 6972.f22b9446.chunk.js} +1 -1
  114. package/dist-scalprum/static/{6972.e47ec97e.chunk.js.map → 6972.f22b9446.chunk.js.map} +1 -1
  115. package/dist-scalprum/static/7164.5dc4bc72.chunk.js +2 -0
  116. package/dist-scalprum/static/7164.5dc4bc72.chunk.js.map +1 -0
  117. package/dist-scalprum/static/{7266.e760b8c3.chunk.js → 7266.3c4174cc.chunk.js} +1 -1
  118. package/dist-scalprum/static/{7266.e760b8c3.chunk.js.map → 7266.3c4174cc.chunk.js.map} +1 -1
  119. package/dist-scalprum/static/7270.8ee9d452.chunk.js +2 -0
  120. package/dist-scalprum/static/7270.8ee9d452.chunk.js.map +1 -0
  121. package/dist-scalprum/static/{7791.8f84478d.chunk.js → 7791.ad31cf6d.chunk.js} +2 -2
  122. package/dist-scalprum/static/{7791.8f84478d.chunk.js.map → 7791.ad31cf6d.chunk.js.map} +1 -1
  123. package/dist-scalprum/static/{8563.46f1a3e1.chunk.js → 8563.6501eafb.chunk.js} +2 -2
  124. package/dist-scalprum/static/{8563.46f1a3e1.chunk.js.map → 8563.6501eafb.chunk.js.map} +1 -1
  125. package/dist-scalprum/static/980.744a4d36.chunk.js +2 -0
  126. package/dist-scalprum/static/980.744a4d36.chunk.js.map +1 -0
  127. package/dist-scalprum/static/exposed-KuadrantIcon.08abbb96.chunk.js +3 -0
  128. package/dist-scalprum/static/exposed-KuadrantIcon.08abbb96.chunk.js.LICENSE.txt +9 -0
  129. package/dist-scalprum/static/exposed-KuadrantIcon.08abbb96.chunk.js.map +1 -0
  130. package/dist-scalprum/static/exposed-KuadrantPage.f123b200.chunk.js +2 -0
  131. package/dist-scalprum/static/exposed-KuadrantPage.f123b200.chunk.js.map +1 -0
  132. package/dist-scalprum/static/exposed-PluginRoot.3a5f9157.chunk.js +2 -0
  133. package/dist-scalprum/static/exposed-PluginRoot.3a5f9157.chunk.js.map +1 -0
  134. package/package.json +6 -3
  135. package/dist/components/EntityApiApprovalTab/EntityApiApprovalTab.esm.js +0 -265
  136. package/dist/components/EntityApiApprovalTab/EntityApiApprovalTab.esm.js.map +0 -1
  137. package/dist/components/EntityApiApprovalTab/index.esm.js +0 -2
  138. package/dist/components/EntityApiApprovalTab/index.esm.js.map +0 -1
  139. package/dist-scalprum/internal.plugin-kuadrant.b3d35dc8b21ce867aa09.js +0 -2
  140. package/dist-scalprum/internal.plugin-kuadrant.b3d35dc8b21ce867aa09.js.map +0 -1
  141. package/dist-scalprum/static/1319.ac195ac2.chunk.js +0 -2
  142. package/dist-scalprum/static/1319.ac195ac2.chunk.js.map +0 -1
  143. package/dist-scalprum/static/1584.ae3779f0.chunk.js +0 -3
  144. package/dist-scalprum/static/1584.ae3779f0.chunk.js.map +0 -1
  145. package/dist-scalprum/static/1881.8221c002.chunk.js.map +0 -1
  146. package/dist-scalprum/static/2967.7c6a34cd.chunk.js +0 -2
  147. package/dist-scalprum/static/2967.7c6a34cd.chunk.js.map +0 -1
  148. package/dist-scalprum/static/3118.daee3324.chunk.js +0 -3
  149. package/dist-scalprum/static/3118.daee3324.chunk.js.map +0 -1
  150. package/dist-scalprum/static/3581.b5b97f08.chunk.js +0 -2
  151. package/dist-scalprum/static/3581.b5b97f08.chunk.js.map +0 -1
  152. package/dist-scalprum/static/369.2374941c.chunk.js +0 -2
  153. package/dist-scalprum/static/369.2374941c.chunk.js.map +0 -1
  154. package/dist-scalprum/static/3947.ad129ba4.chunk.js +0 -2
  155. package/dist-scalprum/static/3947.ad129ba4.chunk.js.map +0 -1
  156. package/dist-scalprum/static/3976.e0873210.chunk.js +0 -2
  157. package/dist-scalprum/static/3976.e0873210.chunk.js.map +0 -1
  158. package/dist-scalprum/static/4434.f92f6ba4.chunk.js +0 -2
  159. package/dist-scalprum/static/4434.f92f6ba4.chunk.js.map +0 -1
  160. package/dist-scalprum/static/483.d55d6ab2.chunk.js +0 -2
  161. package/dist-scalprum/static/483.d55d6ab2.chunk.js.map +0 -1
  162. package/dist-scalprum/static/512.f1c51799.chunk.js +0 -2
  163. package/dist-scalprum/static/512.f1c51799.chunk.js.map +0 -1
  164. package/dist-scalprum/static/5203.3df62d7e.chunk.js +0 -2
  165. package/dist-scalprum/static/5203.3df62d7e.chunk.js.map +0 -1
  166. package/dist-scalprum/static/5289.2e686027.chunk.js +0 -2
  167. package/dist-scalprum/static/5289.2e686027.chunk.js.map +0 -1
  168. package/dist-scalprum/static/5453.3c20d0a6.chunk.js +0 -2
  169. package/dist-scalprum/static/5453.3c20d0a6.chunk.js.map +0 -1
  170. package/dist-scalprum/static/6371.f183dddb.chunk.js +0 -3
  171. package/dist-scalprum/static/6371.f183dddb.chunk.js.map +0 -1
  172. package/dist-scalprum/static/6426.bf20c588.chunk.js +0 -2
  173. package/dist-scalprum/static/6426.bf20c588.chunk.js.map +0 -1
  174. package/dist-scalprum/static/6800.ddabed69.chunk.js +0 -2
  175. package/dist-scalprum/static/6800.ddabed69.chunk.js.map +0 -1
  176. package/dist-scalprum/static/7005.d548f8f1.chunk.js +0 -2
  177. package/dist-scalprum/static/7005.d548f8f1.chunk.js.map +0 -1
  178. package/dist-scalprum/static/7057.fcd688c7.chunk.js +0 -2
  179. package/dist-scalprum/static/7057.fcd688c7.chunk.js.map +0 -1
  180. package/dist-scalprum/static/7270.301a3c46.chunk.js +0 -2
  181. package/dist-scalprum/static/7270.301a3c46.chunk.js.map +0 -1
  182. package/dist-scalprum/static/9051.f095a8a1.chunk.js +0 -2
  183. package/dist-scalprum/static/9051.f095a8a1.chunk.js.map +0 -1
  184. package/dist-scalprum/static/9079.b6d5c19c.chunk.js +0 -2
  185. package/dist-scalprum/static/9079.b6d5c19c.chunk.js.map +0 -1
  186. package/dist-scalprum/static/9625.b0c6610a.chunk.js +0 -2
  187. package/dist-scalprum/static/9625.b0c6610a.chunk.js.map +0 -1
  188. package/dist-scalprum/static/9838.589f2156.chunk.js +0 -2
  189. package/dist-scalprum/static/9838.589f2156.chunk.js.map +0 -1
  190. package/dist-scalprum/static/exposed-PluginRoot.a8448fcc.chunk.js +0 -2
  191. package/dist-scalprum/static/exposed-PluginRoot.a8448fcc.chunk.js.map +0 -1
  192. /package/dist-scalprum/static/{1584.ae3779f0.chunk.js.LICENSE.txt → 1340.7c4f4722.chunk.js.LICENSE.txt} +0 -0
  193. /package/dist-scalprum/static/{3118.daee3324.chunk.js.LICENSE.txt → 20.b3a37d1d.chunk.js.LICENSE.txt} +0 -0
  194. /package/dist-scalprum/static/{4083.488ff7a9.chunk.js.LICENSE.txt → 4083.811c4e7a.chunk.js.LICENSE.txt} +0 -0
  195. /package/dist-scalprum/static/{5010.6241b64f.chunk.js.LICENSE.txt → 5010.4f67737b.chunk.js.LICENSE.txt} +0 -0
  196. /package/dist-scalprum/static/{6371.f183dddb.chunk.js.LICENSE.txt → 635.f63679a5.chunk.js.LICENSE.txt} +0 -0
  197. /package/dist-scalprum/static/{6386.2d20c412.chunk.js.LICENSE.txt → 6386.5922f271.chunk.js.LICENSE.txt} +0 -0
  198. /package/dist-scalprum/static/{8563.46f1a3e1.chunk.js.LICENSE.txt → 8563.6501eafb.chunk.js.LICENSE.txt} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"static/3897.ef4554b5.chunk.js","mappings":"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","sources":["webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/analytics/AnalyticsContext.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/apis/definitions/AnalyticsApi.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/analytics/Tracker.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/analytics/useAnalytics.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/apis/definitions/AppTreeApi.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/apis/definitions/SwappableComponentsApi.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/apis/definitions/IconsApi.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/apis/definitions/DialogApi.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/apis/definitions/RouteResolutionApi.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/wiring/createExtensionDataRef.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/frontend-internal/src/wiring/createExtensionDataContainer.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/wiring/resolveInputOverrides.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/schema/createSchemaFromZod.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/opaque-internal/src/OpaqueType.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/frontend-internal/src/wiring/InternalExtensionDefinition.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/wiring/createExtension.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/wiring/createExtensionBlueprint.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/blueprints/AnalyticsImplementationBlueprint.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/blueprints/ApiBlueprint.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/wiring/coreExtensionData.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/blueprints/AppRootElementBlueprint.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/blueprints/AppRootWrapperBlueprint.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/blueprints/IconBundleBlueprint.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/blueprints/NavContentBlueprint.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/blueprints/NavItemBlueprint.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/frontend-internal/src/wiring/InternalSwappableComponentRef.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/components/createSwappableComponent.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/components/DefaultSwappableComponents.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/components/ErrorBoundary.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/core-plugin-api/src/analytics/Tracker.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/components/AppNodeProvider.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/components/ExtensionBoundary.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/blueprints/PageBlueprint.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/blueprints/RouterBlueprint.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/blueprints/SignInPageBlueprint.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/blueprints/ThemeBlueprint.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/blueprints/TranslationBlueprint.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/blueprints/SwappableComponentBlueprint.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/routing/describeParentCallSite.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/routing/RouteRef.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/routing/SubRouteRef.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/routing/ExternalRouteRef.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/routing/useRouteRef.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/routing/useRouteRefParams.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/wiring/createExtensionInput.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/wiring/resolveExtensionDefinition.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/frontend-internal/src/wiring/InternalFrontendPlugin.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/wiring/createFrontendPlugin.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/wiring/createFrontendModule.esm.js","webpack://internal.plugin-kuadrant/./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","createVersionedContext","useAnalyticsContext","theContext","useContext","pluginId","extensionId","theValue","atVersion","Error","AnalyticsContext","options","attributes","children","combinedValue","versionedCombinedValue","createVersionedValueMap","jsx","Provider","value","analyticsApiRef","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","toInternal","TypeError","has","version","expected","createInstance","props","String","OpaqueExtensionDefinition","ctxParamsSymbol","createExtension","schemaDeclaration","schema","configSchema","innerZ","object","fromEntries","entries","k","v","parse","input","result","safeParse","success","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","coreExtensionData","reactElement","routePath","routeRef","AppRootElementBlueprint","element","componentDataRef","AppRootWrapperBlueprint","component","iconsDataRef","IconBundleBlueprint","icons","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","SignInPageBlueprint","themeDataRef","ThemeBlueprint","theme","translationDataRef","TranslationBlueprint","translation","resource","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","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":""}
1
+ {"version":3,"file":"static/3897.6e9c07c0.chunk.js","mappings":"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","sources":["webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/analytics/AnalyticsContext.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/apis/definitions/AnalyticsApi.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/analytics/Tracker.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/analytics/useAnalytics.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/apis/definitions/AppTreeApi.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/apis/definitions/SwappableComponentsApi.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/apis/definitions/IconsApi.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/apis/definitions/DialogApi.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/apis/definitions/RouteResolutionApi.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/wiring/createExtensionDataRef.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/frontend-internal/src/wiring/createExtensionDataContainer.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/wiring/resolveInputOverrides.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/schema/createSchemaFromZod.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/opaque-internal/src/OpaqueType.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/frontend-internal/src/wiring/InternalExtensionDefinition.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/wiring/createExtension.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/wiring/createExtensionBlueprint.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/blueprints/AnalyticsImplementationBlueprint.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/blueprints/ApiBlueprint.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/wiring/coreExtensionData.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/blueprints/AppRootElementBlueprint.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/blueprints/AppRootWrapperBlueprint.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/blueprints/IconBundleBlueprint.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/blueprints/NavContentBlueprint.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/blueprints/NavItemBlueprint.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/frontend-internal/src/wiring/InternalSwappableComponentRef.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/components/createSwappableComponent.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/components/DefaultSwappableComponents.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/components/ErrorBoundary.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/core-plugin-api/src/analytics/Tracker.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/components/AppNodeProvider.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/components/ExtensionBoundary.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/blueprints/PageBlueprint.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/blueprints/RouterBlueprint.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/blueprints/SignInPageBlueprint.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/blueprints/ThemeBlueprint.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/blueprints/TranslationBlueprint.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/blueprints/SwappableComponentBlueprint.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/routing/describeParentCallSite.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/routing/RouteRef.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/routing/SubRouteRef.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/routing/ExternalRouteRef.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/routing/useRouteRef.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/routing/useRouteRefParams.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/wiring/createExtensionInput.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/wiring/resolveExtensionDefinition.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/frontend-internal/src/wiring/InternalFrontendPlugin.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/wiring/createFrontendPlugin.esm.js","webpack://internal.plugin-kuadrant/./node_modules/@backstage/plugin-search-react/node_modules/@backstage/frontend-plugin-api/dist/wiring/createFrontendModule.esm.js","webpack://internal.plugin-kuadrant/./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","createVersionedContext","useAnalyticsContext","theContext","useContext","pluginId","extensionId","theValue","atVersion","Error","AnalyticsContext","options","attributes","children","combinedValue","versionedCombinedValue","createVersionedValueMap","jsx","Provider","value","analyticsApiRef","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","toInternal","TypeError","has","version","expected","createInstance","props","String","OpaqueExtensionDefinition","ctxParamsSymbol","createExtension","schemaDeclaration","schema","configSchema","innerZ","object","fromEntries","entries","k","v","parse","input","result","safeParse","success","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","coreExtensionData","reactElement","routePath","routeRef","AppRootElementBlueprint","element","componentDataRef","AppRootWrapperBlueprint","component","iconsDataRef","IconBundleBlueprint","icons","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","SignInPageBlueprint","themeDataRef","ThemeBlueprint","theme","translationDataRef","TranslationBlueprint","translation","resource","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","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.webpackChunkinternal_plugin_kuadrant=self.webpackChunkinternal_plugin_kuadrant||[]).push([[3917],{12229:(e,t,r)=>{r.d(t,{Z:()=>A});var n=r(31085),s=r(95478),a=r.n(s),o=r(10394),i=r(72501),l=r(64947),c=r(37197),d=r(69621),p=r(12981),u=r(86901),m=r(69076),g=r(58837),h=r(6924),v=r(23164);const x=(0,g.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 g=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)(o.A,{className:g.root,children:[(0,n.jsxs)(o.A,{display:"flex",justifyContent:"space-between",alignItems:"center",mb:2,children:[(0,n.jsx)(i.A,{variant:"subtitle2",children:"Filters"}),j&&(0,n.jsx)(l.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)(c.A,{}),e.map(e=>{const s=A.has(e.id),a=(t[e.id]||[]).length;return(0,n.jsxs)(o.A,{className:g.filterSection,mt:2,children:[(0,n.jsxs)(o.A,{className:g.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)(o.A,{display:"flex",alignItems:"center",children:[(0,n.jsx)("span",{children:e.title}),a>0&&(0,n.jsxs)("span",{className:g.count,children:["(",a,")"]})]}),s?(0,n.jsx)(h.A,{fontSize:"small"}):(0,n.jsx)(v.A,{fontSize:"small"})]}),(0,n.jsx)(d.A,{in:!s,children:(0,n.jsx)(p.A,{children:e.options.map(s=>(0,n.jsx)(u.A,{control:(0,n.jsx)(m.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:g.checkbox,color:"primary"}),label:(0,n.jsxs)(o.A,{display:"flex",alignItems:"center",children:[(0,n.jsx)("span",{className:g.checkboxLabel,children:s.label}),void 0!==s.count&&(0,n.jsxs)("span",{className:g.count,children:["(",s.count,")"]})]})},s.value))})})]},e.id)})]})}},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})},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},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},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}},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]})})]})}},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}},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{}}}},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},73917:(e,t,r)=>{r.r(t),r.d(t,{ApiKeyApprovalPage:()=>_,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"})]})},E=(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)}})),M=({open:e,results:t,isApprove:r,onClose:a})=>{const o=E(),[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"})})]})},D=()=>{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}),[E,D]=(0,s.useState)({status:[],apiProduct:[],tier:[]}),{allowed:_,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(E.status.length>0){var t;const r=(0,T.v)(null===(t=e.status)||void 0===t?void 0:t.conditions);if(!E.status.includes(r))return!1}if(E.apiProduct.length>0){var r;const t=(null===(r=e.spec.apiProductRef)||void 0===r?void 0:r.name)||"unknown";if(!E.apiProduct.includes(t))return!1}if(E.tier.length>0){const t=e.spec.planTier||"unknown";if(!E.tier.includes(t))return!1}return!0}):[],[null==G?void 0:G.allRequests,E]),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 _||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=_||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:E,onChange:D}),(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)(M,{open:w.open,results:w.results,isApprove:w.isApprove,onClose:()=>P({open:!1,results:[],isApprove:!0})})]})},_=()=>(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)(D,{})})]});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)(_,{})})}}]);
2
+ //# sourceMappingURL=3917.888fba36.chunk.js.map