@kuadrant/kuadrant-backstage-plugin-frontend 0.2.1 → 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 (152) 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 +45 -110
  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/EditAPIProductDialog/EditAPIProductDialog.esm.js +2 -3
  18. package/dist/components/EditAPIProductDialog/EditAPIProductDialog.esm.js.map +1 -1
  19. package/dist/components/KuadrantPage/ApiProductsPage.esm.js +5 -18
  20. package/dist/components/KuadrantPage/ApiProductsPage.esm.js.map +1 -1
  21. package/dist/components/MyApiKeysTable/MyApiKeysTable.esm.js +28 -138
  22. package/dist/components/MyApiKeysTable/MyApiKeysTable.esm.js.map +1 -1
  23. package/dist/components/PermissionGate/PermissionGate.esm.js +2 -2
  24. package/dist/components/PermissionGate/PermissionGate.esm.js.map +1 -1
  25. package/dist/components/RequestAccessDialog/RequestAccessDialog.esm.js +32 -18
  26. package/dist/components/RequestAccessDialog/RequestAccessDialog.esm.js.map +1 -1
  27. package/dist/components/SimpleRequestAccessDialog/SimpleRequestAccessDialog.esm.js +13 -2
  28. package/dist/components/SimpleRequestAccessDialog/SimpleRequestAccessDialog.esm.js.map +1 -1
  29. package/dist/index.d.ts +47 -6
  30. package/dist/index.esm.js +1 -1
  31. package/dist/plugin.esm.js +2 -10
  32. package/dist/plugin.esm.js.map +1 -1
  33. package/dist/utils/apikeys.esm.js +21 -0
  34. package/dist/utils/apikeys.esm.js.map +1 -0
  35. package/dist/utils/styles.esm.js +5 -2
  36. package/dist/utils/styles.esm.js.map +1 -1
  37. package/dist-scalprum/internal.plugin-kuadrant.7f1de85661b1b848af15.js +2 -0
  38. package/dist-scalprum/internal.plugin-kuadrant.7f1de85661b1b848af15.js.map +1 -0
  39. package/dist-scalprum/plugin-manifest.json +3 -3
  40. package/dist-scalprum/static/1340.7c4f4722.chunk.js +3 -0
  41. package/dist-scalprum/static/1340.7c4f4722.chunk.js.map +1 -0
  42. package/dist-scalprum/static/1719.52ca7daf.chunk.js +2 -0
  43. package/dist-scalprum/static/1719.52ca7daf.chunk.js.map +1 -0
  44. package/dist-scalprum/static/{1881.56cde36b.chunk.js → 1931.f6a5edbb.chunk.js} +2 -2
  45. package/dist-scalprum/static/1931.f6a5edbb.chunk.js.map +1 -0
  46. package/dist-scalprum/static/20.b3a37d1d.chunk.js +3 -0
  47. package/dist-scalprum/static/20.b3a37d1d.chunk.js.map +1 -0
  48. package/dist-scalprum/static/2251.08f3db99.chunk.js +2 -0
  49. package/dist-scalprum/static/2251.08f3db99.chunk.js.map +1 -0
  50. package/dist-scalprum/static/2769.e09b0ab0.chunk.js +2 -0
  51. package/dist-scalprum/static/2769.e09b0ab0.chunk.js.map +1 -0
  52. package/dist-scalprum/static/2821.1ac360ec.chunk.js +2 -0
  53. package/dist-scalprum/static/2821.1ac360ec.chunk.js.map +1 -0
  54. package/dist-scalprum/static/2967.004a950e.chunk.js +2 -0
  55. package/dist-scalprum/static/2967.004a950e.chunk.js.map +1 -0
  56. package/dist-scalprum/static/327.74ecd572.chunk.js +2 -0
  57. package/dist-scalprum/static/327.74ecd572.chunk.js.map +1 -0
  58. package/dist-scalprum/static/3658.104704cc.chunk.js +2 -0
  59. package/dist-scalprum/static/3658.104704cc.chunk.js.map +1 -0
  60. package/dist-scalprum/static/3917.888fba36.chunk.js +2 -0
  61. package/dist-scalprum/static/3917.888fba36.chunk.js.map +1 -0
  62. package/dist-scalprum/static/3947.f5320e89.chunk.js +2 -0
  63. package/dist-scalprum/static/3947.f5320e89.chunk.js.map +1 -0
  64. package/dist-scalprum/static/438.4335b833.chunk.js +2 -0
  65. package/dist-scalprum/static/438.4335b833.chunk.js.map +1 -0
  66. package/dist-scalprum/static/4908.4f21d453.chunk.js +2 -0
  67. package/dist-scalprum/static/4908.4f21d453.chunk.js.map +1 -0
  68. package/dist-scalprum/static/5197.53535ff4.chunk.js +2 -0
  69. package/dist-scalprum/static/5197.53535ff4.chunk.js.map +1 -0
  70. package/dist-scalprum/static/5289.6c803140.chunk.js +2 -0
  71. package/dist-scalprum/static/5289.6c803140.chunk.js.map +1 -0
  72. package/dist-scalprum/static/5943.4e1dedc5.chunk.js +2 -0
  73. package/dist-scalprum/static/5943.4e1dedc5.chunk.js.map +1 -0
  74. package/dist-scalprum/static/6311.da1849d1.chunk.js +2 -0
  75. package/dist-scalprum/static/6311.da1849d1.chunk.js.map +1 -0
  76. package/dist-scalprum/static/6371.02375475.chunk.js +3 -0
  77. package/dist-scalprum/static/6371.02375475.chunk.js.map +1 -0
  78. package/dist-scalprum/static/6837.6252b97a.chunk.js +2 -0
  79. package/dist-scalprum/static/6837.6252b97a.chunk.js.map +1 -0
  80. package/dist-scalprum/static/7270.8ee9d452.chunk.js +2 -0
  81. package/dist-scalprum/static/7270.8ee9d452.chunk.js.map +1 -0
  82. package/dist-scalprum/static/980.744a4d36.chunk.js +2 -0
  83. package/dist-scalprum/static/980.744a4d36.chunk.js.map +1 -0
  84. package/dist-scalprum/static/exposed-KuadrantPage.f123b200.chunk.js +2 -0
  85. package/dist-scalprum/static/exposed-KuadrantPage.f123b200.chunk.js.map +1 -0
  86. package/dist-scalprum/static/exposed-PluginRoot.3a5f9157.chunk.js +2 -0
  87. package/dist-scalprum/static/exposed-PluginRoot.3a5f9157.chunk.js.map +1 -0
  88. package/package.json +1 -1
  89. package/dist/components/EntityApiApprovalTab/EntityApiApprovalTab.esm.js +0 -265
  90. package/dist/components/EntityApiApprovalTab/EntityApiApprovalTab.esm.js.map +0 -1
  91. package/dist/components/EntityApiApprovalTab/index.esm.js +0 -2
  92. package/dist/components/EntityApiApprovalTab/index.esm.js.map +0 -1
  93. package/dist-scalprum/internal.plugin-kuadrant.c4fb9c2347d3ad03a5d0.js +0 -2
  94. package/dist-scalprum/internal.plugin-kuadrant.c4fb9c2347d3ad03a5d0.js.map +0 -1
  95. package/dist-scalprum/static/1584.1e45e570.chunk.js +0 -3
  96. package/dist-scalprum/static/1584.1e45e570.chunk.js.map +0 -1
  97. package/dist-scalprum/static/1719.246c020d.chunk.js +0 -2
  98. package/dist-scalprum/static/1719.246c020d.chunk.js.map +0 -1
  99. package/dist-scalprum/static/1881.56cde36b.chunk.js.map +0 -1
  100. package/dist-scalprum/static/286.ee43f560.chunk.js +0 -2
  101. package/dist-scalprum/static/286.ee43f560.chunk.js.map +0 -1
  102. package/dist-scalprum/static/2967.0c2ef90e.chunk.js +0 -2
  103. package/dist-scalprum/static/2967.0c2ef90e.chunk.js.map +0 -1
  104. package/dist-scalprum/static/3581.ebe5968a.chunk.js +0 -2
  105. package/dist-scalprum/static/3581.ebe5968a.chunk.js.map +0 -1
  106. package/dist-scalprum/static/369.2374941c.chunk.js +0 -2
  107. package/dist-scalprum/static/369.2374941c.chunk.js.map +0 -1
  108. package/dist-scalprum/static/3947.4f4aa8c2.chunk.js +0 -2
  109. package/dist-scalprum/static/3947.4f4aa8c2.chunk.js.map +0 -1
  110. package/dist-scalprum/static/3976.e8a8fda2.chunk.js +0 -2
  111. package/dist-scalprum/static/3976.e8a8fda2.chunk.js.map +0 -1
  112. package/dist-scalprum/static/4434.f92f6ba4.chunk.js +0 -2
  113. package/dist-scalprum/static/4434.f92f6ba4.chunk.js.map +0 -1
  114. package/dist-scalprum/static/4908.196a4425.chunk.js +0 -2
  115. package/dist-scalprum/static/4908.196a4425.chunk.js.map +0 -1
  116. package/dist-scalprum/static/512.d592d164.chunk.js +0 -2
  117. package/dist-scalprum/static/512.d592d164.chunk.js.map +0 -1
  118. package/dist-scalprum/static/5289.55069930.chunk.js +0 -2
  119. package/dist-scalprum/static/5289.55069930.chunk.js.map +0 -1
  120. package/dist-scalprum/static/5605.430f697e.chunk.js +0 -2
  121. package/dist-scalprum/static/5605.430f697e.chunk.js.map +0 -1
  122. package/dist-scalprum/static/5978.bf347a09.chunk.js +0 -2
  123. package/dist-scalprum/static/5978.bf347a09.chunk.js.map +0 -1
  124. package/dist-scalprum/static/6371.7b57ac27.chunk.js +0 -3
  125. package/dist-scalprum/static/6371.7b57ac27.chunk.js.map +0 -1
  126. package/dist-scalprum/static/6426.4c18bab5.chunk.js +0 -2
  127. package/dist-scalprum/static/6426.4c18bab5.chunk.js.map +0 -1
  128. package/dist-scalprum/static/6777.a2b77ec5.chunk.js +0 -2
  129. package/dist-scalprum/static/6777.a2b77ec5.chunk.js.map +0 -1
  130. package/dist-scalprum/static/6800.a45da2f4.chunk.js +0 -2
  131. package/dist-scalprum/static/6800.a45da2f4.chunk.js.map +0 -1
  132. package/dist-scalprum/static/7005.8190ad95.chunk.js +0 -2
  133. package/dist-scalprum/static/7005.8190ad95.chunk.js.map +0 -1
  134. package/dist-scalprum/static/7057.fcd688c7.chunk.js +0 -2
  135. package/dist-scalprum/static/7057.fcd688c7.chunk.js.map +0 -1
  136. package/dist-scalprum/static/7270.d52407cd.chunk.js +0 -2
  137. package/dist-scalprum/static/7270.d52407cd.chunk.js.map +0 -1
  138. package/dist-scalprum/static/7717.6f5b9dd7.chunk.js +0 -3
  139. package/dist-scalprum/static/7717.6f5b9dd7.chunk.js.map +0 -1
  140. package/dist-scalprum/static/9079.2ddaea57.chunk.js +0 -2
  141. package/dist-scalprum/static/9079.2ddaea57.chunk.js.map +0 -1
  142. package/dist-scalprum/static/9239.1acfe112.chunk.js +0 -2
  143. package/dist-scalprum/static/9239.1acfe112.chunk.js.map +0 -1
  144. package/dist-scalprum/static/9625.b0c6610a.chunk.js +0 -2
  145. package/dist-scalprum/static/9625.b0c6610a.chunk.js.map +0 -1
  146. package/dist-scalprum/static/exposed-KuadrantPage.5ae00605.chunk.js +0 -2
  147. package/dist-scalprum/static/exposed-KuadrantPage.5ae00605.chunk.js.map +0 -1
  148. package/dist-scalprum/static/exposed-PluginRoot.949381c2.chunk.js +0 -2
  149. package/dist-scalprum/static/exposed-PluginRoot.949381c2.chunk.js.map +0 -1
  150. /package/dist-scalprum/static/{1584.1e45e570.chunk.js.LICENSE.txt → 1340.7c4f4722.chunk.js.LICENSE.txt} +0 -0
  151. /package/dist-scalprum/static/{7717.6f5b9dd7.chunk.js.LICENSE.txt → 20.b3a37d1d.chunk.js.LICENSE.txt} +0 -0
  152. /package/dist-scalprum/static/{6371.7b57ac27.chunk.js.LICENSE.txt → 6371.02375475.chunk.js.LICENSE.txt} +0 -0
@@ -1,265 +0,0 @@
1
- import React, { useState } from 'react';
2
- import { useEntity } from '@backstage/plugin-catalog-react';
3
- import { useApi, identityApiRef, alertApiRef } from '@backstage/core-plugin-api';
4
- import { kuadrantApiRef } from '../../api.esm.js';
5
- import { useAsync } from 'react-use';
6
- import { ResponseErrorPanel, Table } from '@backstage/core-components';
7
- import { kuadrantApiKeyApprovePermission } from '../../permissions.esm.js';
8
- import { useKuadrantPermission } from '../../utils/permissions.esm.js';
9
- import { makeStyles, Box, Typography, Dialog, DialogTitle, DialogContent, TextField, DialogActions, Button, CircularProgress, Chip, Tooltip, IconButton } from '@material-ui/core';
10
- import { Skeleton } from '@material-ui/lab';
11
- import CheckCircleIcon from '@material-ui/icons/CheckCircle';
12
- import CancelIcon from '@material-ui/icons/Cancel';
13
- import { getApprovalQueueStatusChipStyle } from '../../utils/styles.esm.js';
14
-
15
- const useStyles = makeStyles((theme) => ({
16
- useCasePanel: {
17
- padding: theme.spacing(2),
18
- backgroundColor: theme.palette.background.default
19
- },
20
- useCaseLabel: {
21
- fontWeight: 600,
22
- marginBottom: theme.spacing(1),
23
- color: theme.palette.text.secondary,
24
- textTransform: "uppercase",
25
- fontSize: "0.75rem"
26
- }
27
- }));
28
- const ExpandedRowContent = ({ request }) => {
29
- const classes = useStyles();
30
- return /* @__PURE__ */ React.createElement(Box, { className: classes.useCasePanel, onClick: (e) => e.stopPropagation() }, /* @__PURE__ */ React.createElement(Typography, { className: classes.useCaseLabel }, "Use Case"), /* @__PURE__ */ React.createElement(Typography, { variant: "body2" }, request.spec.useCase || "No use case provided"));
31
- };
32
- const ApprovalDialog = ({
33
- open,
34
- request,
35
- action,
36
- processing,
37
- onClose,
38
- onConfirm
39
- }) => {
40
- const [confirmText, setConfirmText] = useState("");
41
- const handleClose = () => {
42
- setConfirmText("");
43
- onClose();
44
- };
45
- const handleConfirm = () => {
46
- onConfirm(confirmText);
47
- setConfirmText("");
48
- };
49
- const isReject = action === "reject";
50
- const expectedText = request?.metadata.name || "";
51
- const isConfirmValid = confirmText === expectedText;
52
- return /* @__PURE__ */ React.createElement(
53
- Dialog,
54
- {
55
- open,
56
- onClose: processing ? undefined : handleClose,
57
- maxWidth: "sm",
58
- fullWidth: true
59
- },
60
- /* @__PURE__ */ React.createElement(DialogTitle, null, isReject ? "Reject API key" : "Approve API key"),
61
- /* @__PURE__ */ React.createElement(DialogContent, null, request && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Typography, { variant: "body2", paragraph: true }, /* @__PURE__ */ React.createElement("strong", null, "Requester:"), " ", request.spec.requestedBy.userId), /* @__PURE__ */ React.createElement(Typography, { variant: "body2", paragraph: true }, /* @__PURE__ */ React.createElement("strong", null, "Tier:"), " ", request.spec.planTier), request.spec.useCase && /* @__PURE__ */ React.createElement(Typography, { variant: "body2", paragraph: true }, /* @__PURE__ */ React.createElement("strong", null, "Use Case:"), " ", request.spec.useCase), isReject && /* @__PURE__ */ React.createElement(Box, { mt: 2, p: 2, bgcolor: "error.light", borderRadius: 1 }, /* @__PURE__ */ React.createElement(Typography, { variant: "body2" }, "This action will permanently deny access. The user will need to submit a new request.")), /* @__PURE__ */ React.createElement(Box, { mt: 2 }, /* @__PURE__ */ React.createElement(
62
- TextField,
63
- {
64
- fullWidth: true,
65
- label: `Type "${expectedText}" to confirm`,
66
- value: confirmText,
67
- onChange: (e) => setConfirmText(e.target.value),
68
- disabled: processing,
69
- autoFocus: true
70
- }
71
- )))),
72
- /* @__PURE__ */ React.createElement(DialogActions, null, /* @__PURE__ */ React.createElement(Button, { onClick: handleClose, disabled: processing }, "Cancel"), /* @__PURE__ */ React.createElement(
73
- Button,
74
- {
75
- onClick: handleConfirm,
76
- color: isReject ? "secondary" : "primary",
77
- variant: "contained",
78
- disabled: !isConfirmValid || processing,
79
- startIcon: processing ? /* @__PURE__ */ React.createElement(CircularProgress, { size: 16, color: "inherit" }) : undefined
80
- },
81
- processing ? isReject ? "Rejecting..." : "Approving..." : isReject ? "Reject" : "Approve"
82
- ))
83
- );
84
- };
85
- const EntityApiApprovalTab = () => {
86
- const { entity } = useEntity();
87
- const kuadrantApi = useApi(kuadrantApiRef);
88
- const identityApi = useApi(identityApiRef);
89
- const alertApi = useApi(alertApiRef);
90
- const apiProductName = entity.metadata.annotations?.["kuadrant.io/apiproduct"] || entity.metadata.name;
91
- const namespace = entity.metadata.annotations?.["kuadrant.io/namespace"] || "default";
92
- const [refresh, setRefresh] = useState(0);
93
- const [dialogState, setDialogState] = useState({
94
- open: false,
95
- request: null,
96
- action: "approve",
97
- processing: false
98
- });
99
- const {
100
- allowed: canApprove,
101
- loading: permissionLoading,
102
- error: permissionError
103
- } = useKuadrantPermission(kuadrantApiKeyApprovePermission);
104
- const { value, loading, error } = useAsync(async () => {
105
- const identity = await identityApi.getBackstageIdentity();
106
- const reviewedBy = identity.userEntityRef;
107
- const data = await kuadrantApi.getRequests();
108
- const allRequests = data.items || [];
109
- const filtered = allRequests.filter(
110
- (r) => r.spec.apiProductRef?.name === apiProductName && r.metadata.namespace === namespace
111
- );
112
- return { requests: filtered, reviewedBy };
113
- }, [kuadrantApi, identityApi, apiProductName, namespace, refresh]);
114
- const handleApprove = (request) => {
115
- setDialogState({
116
- open: true,
117
- request,
118
- action: "approve",
119
- processing: false
120
- });
121
- };
122
- const handleReject = (request) => {
123
- setDialogState({
124
- open: true,
125
- request,
126
- action: "reject",
127
- processing: false
128
- });
129
- };
130
- const handleConfirm = async () => {
131
- if (!dialogState.request || !value) return;
132
- setDialogState((prev) => ({ ...prev, processing: true }));
133
- const isApprove = dialogState.action === "approve";
134
- const requestFn = isApprove ? (ns, n, r) => kuadrantApi.approveRequest(ns, n, r) : (ns, n, r) => kuadrantApi.rejectRequest(ns, n, r);
135
- try {
136
- await requestFn(dialogState.request.metadata.namespace, dialogState.request.metadata.name, value.reviewedBy);
137
- setDialogState({
138
- open: false,
139
- request: null,
140
- action: "approve",
141
- processing: false
142
- });
143
- setRefresh((r) => r + 1);
144
- alertApi.post({
145
- message: `API key ${isApprove ? "approved" : "rejected"}`,
146
- severity: "success",
147
- display: "transient"
148
- });
149
- } catch (err) {
150
- console.error(`Error ${dialogState.action}ing request:`, err);
151
- setDialogState((prev) => ({ ...prev, processing: false }));
152
- const errorMessage = err instanceof Error ? err.message : "unknown error occurred";
153
- alertApi.post({
154
- message: `Failed to ${dialogState.action} APIKey. ${errorMessage}`,
155
- severity: "error",
156
- display: "transient"
157
- });
158
- }
159
- };
160
- if (loading || permissionLoading) {
161
- return /* @__PURE__ */ React.createElement(Box, { p: 2 }, [...Array(5)].map((_, i) => /* @__PURE__ */ React.createElement(Box, { key: i, p: 2 }, /* @__PURE__ */ React.createElement(Skeleton, { variant: "text", width: "100%" }))));
162
- }
163
- if (error) {
164
- return /* @__PURE__ */ React.createElement(ResponseErrorPanel, { error });
165
- }
166
- if (permissionError) {
167
- return /* @__PURE__ */ React.createElement(Box, { p: 2 }, /* @__PURE__ */ React.createElement(Typography, { color: "error" }, "Unable to check permissions: ", permissionError.message));
168
- }
169
- if (!canApprove) {
170
- return /* @__PURE__ */ React.createElement(Box, { p: 3, textAlign: "center" }, /* @__PURE__ */ React.createElement(Typography, { variant: "body1", color: "textSecondary" }, "You don't have permission to view the approval queue for this API."));
171
- }
172
- const requests = value?.requests || [];
173
- const pendingRequests = requests.filter(
174
- (r) => !r.status?.phase || r.status.phase === "Pending"
175
- );
176
- const approvedRequests = requests.filter(
177
- (r) => r.status?.phase === "Approved"
178
- );
179
- const rejectedRequests = requests.filter(
180
- (r) => r.status?.phase === "Rejected"
181
- );
182
- const columns = [
183
- {
184
- title: "Requester",
185
- field: "spec.requestedBy.userId",
186
- render: (row) => /* @__PURE__ */ React.createElement(Typography, { variant: "body2" }, row.spec.requestedBy.userId)
187
- },
188
- {
189
- title: "Status",
190
- field: "status.phase",
191
- render: (row) => {
192
- const phase = row.status?.phase || "Pending";
193
- const label = phase === "Approved" ? "Active" : phase;
194
- return /* @__PURE__ */ React.createElement(Chip, { label, size: "small", style: getApprovalQueueStatusChipStyle(phase) });
195
- }
196
- },
197
- {
198
- title: "Tier",
199
- field: "spec.planTier",
200
- render: (row) => /* @__PURE__ */ React.createElement(Chip, { label: row.spec.planTier, size: "small", variant: "outlined" })
201
- },
202
- {
203
- title: "Requested",
204
- field: "metadata.creationTimestamp",
205
- render: (row) => {
206
- if (!row.metadata.creationTimestamp)
207
- return /* @__PURE__ */ React.createElement(Typography, { variant: "body2" }, "-");
208
- return /* @__PURE__ */ React.createElement(Typography, { variant: "body2" }, new Date(row.metadata.creationTimestamp).toLocaleDateString());
209
- }
210
- },
211
- {
212
- title: "Actions",
213
- filtering: false,
214
- render: (row) => {
215
- const phase = row.status?.phase || "Pending";
216
- if (phase !== "Pending") return null;
217
- return /* @__PURE__ */ React.createElement(Box, { display: "flex", style: { gap: 4 } }, /* @__PURE__ */ React.createElement(Tooltip, { title: "Approve" }, /* @__PURE__ */ React.createElement(IconButton, { size: "small", onClick: () => handleApprove(row) }, /* @__PURE__ */ React.createElement(CheckCircleIcon, { color: "primary" }))), /* @__PURE__ */ React.createElement(Tooltip, { title: "Reject" }, /* @__PURE__ */ React.createElement(IconButton, { size: "small", onClick: () => handleReject(row) }, /* @__PURE__ */ React.createElement(CancelIcon, { color: "error" }))));
218
- }
219
- }
220
- ];
221
- const detailPanelConfig = [
222
- {
223
- render: (data) => {
224
- const request = data.rowData;
225
- if (!request?.metadata?.name) return /* @__PURE__ */ React.createElement(Box, null);
226
- return /* @__PURE__ */ React.createElement(ExpandedRowContent, { request });
227
- }
228
- }
229
- ];
230
- return /* @__PURE__ */ React.createElement(Box, { p: 2 }, /* @__PURE__ */ React.createElement(Box, { mb: 2 }, /* @__PURE__ */ React.createElement(Typography, { variant: "body2", color: "textSecondary" }, pendingRequests.length, " pending, ", approvedRequests.length, " approved,", " ", rejectedRequests.length, " rejected")), requests.length === 0 ? /* @__PURE__ */ React.createElement(Box, { p: 3, textAlign: "center" }, /* @__PURE__ */ React.createElement(Typography, { variant: "body1", color: "textSecondary" }, "No API keys for this API.")) : /* @__PURE__ */ React.createElement(
231
- Table,
232
- {
233
- options: {
234
- paging: requests.length > 10,
235
- pageSize: 20,
236
- search: true,
237
- filtering: false,
238
- debounceInterval: 300,
239
- toolbar: true,
240
- emptyRowsWhenPaging: false
241
- },
242
- columns,
243
- data: requests.map((item) => ({ ...item, id: item.metadata.name })),
244
- detailPanel: detailPanelConfig
245
- }
246
- ), /* @__PURE__ */ React.createElement(
247
- ApprovalDialog,
248
- {
249
- open: dialogState.open,
250
- request: dialogState.request,
251
- action: dialogState.action,
252
- processing: dialogState.processing,
253
- onClose: () => setDialogState({
254
- open: false,
255
- request: null,
256
- action: "approve",
257
- processing: false
258
- }),
259
- onConfirm: handleConfirm
260
- }
261
- ));
262
- };
263
-
264
- export { EntityApiApprovalTab };
265
- //# sourceMappingURL=EntityApiApprovalTab.esm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EntityApiApprovalTab.esm.js","sources":["../../../src/components/EntityApiApprovalTab/EntityApiApprovalTab.tsx"],"sourcesContent":["import React, { useState } from \"react\";\nimport { useEntity } from \"@backstage/plugin-catalog-react\";\nimport {\n useApi,\n identityApiRef,\n alertApiRef,\n} from \"@backstage/core-plugin-api\";\nimport { kuadrantApiRef } from '../../api';\nimport { useAsync } from \"react-use\";\nimport {\n Table,\n TableColumn,\n ResponseErrorPanel,\n} from \"@backstage/core-components\";\nimport { kuadrantApiKeyApprovePermission } from \"../../permissions\";\nimport { useKuadrantPermission } from \"../../utils/permissions\";\nimport {\n Box,\n Typography,\n Chip,\n IconButton,\n Tooltip,\n Button,\n Dialog,\n DialogTitle,\n DialogContent,\n DialogActions,\n TextField,\n CircularProgress,\n makeStyles,\n} from \"@material-ui/core\";\nimport { Skeleton } from \"@material-ui/lab\";\nimport CheckCircleIcon from \"@material-ui/icons/CheckCircle\";\nimport CancelIcon from \"@material-ui/icons/Cancel\";\nimport { APIKey } from \"../../types/api-management\";\nimport { getApprovalQueueStatusChipStyle } from \"../../utils/styles\";\n\nconst useStyles = makeStyles((theme) => ({\n useCasePanel: {\n padding: theme.spacing(2),\n backgroundColor: theme.palette.background.default,\n },\n useCaseLabel: {\n fontWeight: 600,\n marginBottom: theme.spacing(1),\n color: theme.palette.text.secondary,\n textTransform: \"uppercase\",\n fontSize: \"0.75rem\",\n },\n}));\n\ninterface ExpandedRowProps {\n request: APIKey;\n}\n\nconst ExpandedRowContent = ({ request }: ExpandedRowProps) => {\n const classes = useStyles();\n\n return (\n <Box className={classes.useCasePanel} onClick={(e) => e.stopPropagation()}>\n <Typography className={classes.useCaseLabel}>Use Case</Typography>\n <Typography variant=\"body2\">\n {request.spec.useCase || \"No use case provided\"}\n </Typography>\n </Box>\n );\n};\n\ninterface ApprovalDialogProps {\n open: boolean;\n request: APIKey | null;\n action: \"approve\" | \"reject\";\n processing: boolean;\n onClose: () => void;\n onConfirm: (confirmText: string) => void;\n}\n\nconst ApprovalDialog = ({\n open,\n request,\n action,\n processing,\n onClose,\n onConfirm,\n}: ApprovalDialogProps) => {\n const [confirmText, setConfirmText] = useState(\"\");\n\n const handleClose = () => {\n setConfirmText(\"\");\n onClose();\n };\n\n const handleConfirm = () => {\n onConfirm(confirmText);\n setConfirmText(\"\");\n };\n\n const isReject = action === \"reject\";\n const expectedText = request?.metadata.name || \"\";\n const isConfirmValid = confirmText === expectedText;\n\n return (\n <Dialog\n open={open}\n onClose={processing ? undefined : handleClose}\n maxWidth=\"sm\"\n fullWidth\n >\n <DialogTitle>\n {isReject ? \"Reject API key\" : \"Approve API key\"}\n </DialogTitle>\n <DialogContent>\n {request && (\n <>\n <Typography variant=\"body2\" paragraph>\n <strong>Requester:</strong> {request.spec.requestedBy.userId}\n </Typography>\n <Typography variant=\"body2\" paragraph>\n <strong>Tier:</strong> {request.spec.planTier}\n </Typography>\n {request.spec.useCase && (\n <Typography variant=\"body2\" paragraph>\n <strong>Use Case:</strong> {request.spec.useCase}\n </Typography>\n )}\n {isReject && (\n <Box mt={2} p={2} bgcolor=\"error.light\" borderRadius={1}>\n <Typography variant=\"body2\">\n This action will permanently deny access. The user will need\n to submit a new request.\n </Typography>\n </Box>\n )}\n <Box mt={2}>\n <TextField\n fullWidth\n label={`Type \"${expectedText}\" to confirm`}\n value={confirmText}\n onChange={(e) => setConfirmText(e.target.value)}\n disabled={processing}\n autoFocus\n />\n </Box>\n </>\n )}\n </DialogContent>\n <DialogActions>\n <Button onClick={handleClose} disabled={processing}>\n Cancel\n </Button>\n <Button\n onClick={handleConfirm}\n color={isReject ? \"secondary\" : \"primary\"}\n variant=\"contained\"\n disabled={!isConfirmValid || processing}\n startIcon={\n processing ? (\n <CircularProgress size={16} color=\"inherit\" />\n ) : undefined\n }\n >\n {processing\n ? isReject\n ? \"Rejecting...\"\n : \"Approving...\"\n : isReject\n ? \"Reject\"\n : \"Approve\"}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n\nexport const EntityApiApprovalTab = () => {\n const { entity } = useEntity();\n const kuadrantApi = useApi(kuadrantApiRef);\n const identityApi = useApi(identityApiRef);\n const alertApi = useApi(alertApiRef);\n\n const apiProductName =\n entity.metadata.annotations?.[\"kuadrant.io/apiproduct\"] ||\n entity.metadata.name;\n const namespace =\n entity.metadata.annotations?.[\"kuadrant.io/namespace\"] || \"default\";\n\n const [refresh, setRefresh] = useState(0);\n const [dialogState, setDialogState] = useState<{\n open: boolean;\n request: APIKey | null;\n action: \"approve\" | \"reject\";\n processing: boolean;\n }>({\n open: false,\n request: null,\n action: \"approve\",\n processing: false,\n });\n\n const {\n allowed: canApprove,\n loading: permissionLoading,\n error: permissionError,\n } = useKuadrantPermission(kuadrantApiKeyApprovePermission);\n\n const { value, loading, error } = useAsync(async () => {\n const identity = await identityApi.getBackstageIdentity();\n const reviewedBy = identity.userEntityRef;\n\n const data = await kuadrantApi.getRequests();\n const allRequests: APIKey[] = data.items || [];\n\n // filter to this API product only\n const filtered = allRequests.filter(\n (r) =>\n r.spec.apiProductRef?.name === apiProductName &&\n r.metadata.namespace === namespace,\n );\n\n return { requests: filtered, reviewedBy };\n }, [kuadrantApi, identityApi, apiProductName, namespace, refresh]);\n\n const handleApprove = (request: APIKey) => {\n setDialogState({\n open: true,\n request,\n action: \"approve\",\n processing: false,\n });\n };\n\n const handleReject = (request: APIKey) => {\n setDialogState({\n open: true,\n request,\n action: \"reject\",\n processing: false,\n });\n };\n\n const handleConfirm = async () => {\n if (!dialogState.request || !value) return;\n\n setDialogState((prev) => ({ ...prev, processing: true }));\n\n const isApprove = dialogState.action === \"approve\"\n const requestFn = isApprove\n ? (ns: string, n: string, r: string) => kuadrantApi.approveRequest(ns, n, r)\n : (ns: string, n: string, r: string) => kuadrantApi.rejectRequest(ns, n, r)\n\n try {\n await requestFn(dialogState.request.metadata.namespace, dialogState.request.metadata.name, value.reviewedBy);\n\n setDialogState({\n open: false,\n request: null,\n action: \"approve\",\n processing: false,\n });\n setRefresh((r) => r + 1);\n alertApi.post({\n message: `API key ${isApprove ? \"approved\" : \"rejected\"}`,\n severity: \"success\",\n display: \"transient\",\n });\n } catch (err) {\n console.error(`Error ${dialogState.action}ing request:`, err);\n setDialogState((prev) => ({ ...prev, processing: false }));\n const errorMessage = err instanceof Error ? err.message : \"unknown error occurred\";\n alertApi.post({\n message: `Failed to ${dialogState.action} APIKey. ${errorMessage}`,\n severity: 'error',\n display: 'transient',\n });\n }\n };\n\n if (loading || permissionLoading) {\n return (\n <Box p={2}>\n {[...Array(5)].map((_, i) => (\n <Box key={i} p={2}>\n <Skeleton variant=\"text\" width=\"100%\" />\n </Box>\n ))}\n </Box>\n );\n }\n\n if (error) {\n return <ResponseErrorPanel error={error} />;\n }\n\n if (permissionError) {\n return (\n <Box p={2}>\n <Typography color=\"error\">\n Unable to check permissions: {permissionError.message}\n </Typography>\n </Box>\n );\n }\n\n if (!canApprove) {\n return (\n <Box p={3} textAlign=\"center\">\n <Typography variant=\"body1\" color=\"textSecondary\">\n You don't have permission to view the approval queue for this API.\n </Typography>\n </Box>\n );\n }\n\n const requests = value?.requests || [];\n const pendingRequests = requests.filter(\n (r) => !r.status?.phase || r.status.phase === \"Pending\",\n );\n const approvedRequests = requests.filter(\n (r) => r.status?.phase === \"Approved\",\n );\n const rejectedRequests = requests.filter(\n (r) => r.status?.phase === \"Rejected\",\n );\n\n const columns: TableColumn<APIKey>[] = [\n {\n title: \"Requester\",\n field: \"spec.requestedBy.userId\",\n render: (row) => (\n <Typography variant=\"body2\">{row.spec.requestedBy.userId}</Typography>\n ),\n },\n {\n title: \"Status\",\n field: \"status.phase\",\n render: (row) => {\n const phase = row.status?.phase || \"Pending\";\n const label = phase === \"Approved\" ? \"Active\" : phase;\n return (\n <Chip label={label} size=\"small\" style={getApprovalQueueStatusChipStyle(phase)} />\n );\n },\n },\n {\n title: \"Tier\",\n field: \"spec.planTier\",\n render: (row) => (\n <Chip label={row.spec.planTier} size=\"small\" variant=\"outlined\" />\n ),\n },\n {\n title: \"Requested\",\n field: \"metadata.creationTimestamp\",\n render: (row) => {\n if (!row.metadata.creationTimestamp)\n return <Typography variant=\"body2\">-</Typography>;\n return (\n <Typography variant=\"body2\">\n {new Date(row.metadata.creationTimestamp).toLocaleDateString()}\n </Typography>\n );\n },\n },\n {\n title: \"Actions\",\n filtering: false,\n render: (row) => {\n const phase = row.status?.phase || \"Pending\";\n if (phase !== \"Pending\") return null;\n return (\n <Box display=\"flex\" style={{ gap: 4 }}>\n <Tooltip title=\"Approve\">\n <IconButton size=\"small\" onClick={() => handleApprove(row)}>\n <CheckCircleIcon color=\"primary\" />\n </IconButton>\n </Tooltip>\n <Tooltip title=\"Reject\">\n <IconButton size=\"small\" onClick={() => handleReject(row)}>\n <CancelIcon color=\"error\" />\n </IconButton>\n </Tooltip>\n </Box>\n );\n },\n },\n ];\n\n const detailPanelConfig = [\n {\n render: (data: any) => {\n const request = data.rowData as APIKey;\n if (!request?.metadata?.name) return <Box />;\n return <ExpandedRowContent request={request} />;\n },\n },\n ];\n\n return (\n <Box p={2}>\n <Box mb={2}>\n <Typography variant=\"body2\" color=\"textSecondary\">\n {pendingRequests.length} pending, {approvedRequests.length} approved,{\" \"}\n {rejectedRequests.length} rejected\n </Typography>\n </Box>\n\n {requests.length === 0 ? (\n <Box p={3} textAlign=\"center\">\n <Typography variant=\"body1\" color=\"textSecondary\">\n No API keys for this API.\n </Typography>\n </Box>\n ) : (\n <Table\n options={{\n paging: requests.length > 10,\n pageSize: 20,\n search: true,\n filtering: false,\n debounceInterval: 300,\n toolbar: true,\n emptyRowsWhenPaging: false,\n }}\n columns={columns}\n data={requests.map((item) => ({ ...item, id: item.metadata.name }))}\n detailPanel={detailPanelConfig}\n />\n )}\n\n <ApprovalDialog\n open={dialogState.open}\n request={dialogState.request}\n action={dialogState.action}\n processing={dialogState.processing}\n onClose={() =>\n setDialogState({\n open: false,\n request: null,\n action: \"approve\",\n processing: false,\n })\n }\n onConfirm={handleConfirm}\n />\n </Box>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAqCA,MAAM,SAAA,GAAY,UAAW,CAAA,CAAC,KAAW,MAAA;AAAA,EACvC,YAAc,EAAA;AAAA,IACZ,OAAA,EAAS,KAAM,CAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,IACxB,eAAA,EAAiB,KAAM,CAAA,OAAA,CAAQ,UAAW,CAAA;AAAA,GAC5C;AAAA,EACA,YAAc,EAAA;AAAA,IACZ,UAAY,EAAA,GAAA;AAAA,IACZ,YAAA,EAAc,KAAM,CAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,IAC7B,KAAA,EAAO,KAAM,CAAA,OAAA,CAAQ,IAAK,CAAA,SAAA;AAAA,IAC1B,aAAe,EAAA,WAAA;AAAA,IACf,QAAU,EAAA;AAAA;AAEd,CAAE,CAAA,CAAA;AAMF,MAAM,kBAAqB,GAAA,CAAC,EAAE,OAAA,EAAgC,KAAA;AAC5D,EAAA,MAAM,UAAU,SAAU,EAAA;AAE1B,EACE,uBAAA,KAAA,CAAA,aAAA,CAAC,GAAI,EAAA,EAAA,SAAA,EAAW,OAAQ,CAAA,YAAA,EAAc,OAAS,EAAA,CAAC,CAAM,KAAA,CAAA,CAAE,eAAgB,EAAA,EAAA,kBACrE,KAAA,CAAA,aAAA,CAAA,UAAA,EAAA,EAAW,WAAW,OAAQ,CAAA,YAAA,EAAA,EAAc,UAAQ,CAAA,kBACpD,KAAA,CAAA,aAAA,CAAA,UAAA,EAAA,EAAW,OAAQ,EAAA,OAAA,EAAA,EACjB,OAAQ,CAAA,IAAA,CAAK,OAAW,IAAA,sBAC3B,CACF,CAAA;AAEJ,CAAA;AAWA,MAAM,iBAAiB,CAAC;AAAA,EACtB,IAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,UAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAA2B,KAAA;AACzB,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,SAAS,EAAE,CAAA;AAEjD,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,cAAA,CAAe,EAAE,CAAA;AACjB,IAAQ,OAAA,EAAA;AAAA,GACV;AAEA,EAAA,MAAM,gBAAgB,MAAM;AAC1B,IAAA,SAAA,CAAU,WAAW,CAAA;AACrB,IAAA,cAAA,CAAe,EAAE,CAAA;AAAA,GACnB;AAEA,EAAA,MAAM,WAAW,MAAW,KAAA,QAAA;AAC5B,EAAM,MAAA,YAAA,GAAe,OAAS,EAAA,QAAA,CAAS,IAAQ,IAAA,EAAA;AAC/C,EAAA,MAAM,iBAAiB,WAAgB,KAAA,YAAA;AAEvC,EACE,uBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,IAAA;AAAA,MACA,OAAA,EAAS,aAAa,SAAY,GAAA,WAAA;AAAA,MAClC,QAAS,EAAA,IAAA;AAAA,MACT,SAAS,EAAA;AAAA,KAAA;AAAA,oBAER,KAAA,CAAA,aAAA,CAAA,WAAA,EAAA,IAAA,EACE,QAAW,GAAA,gBAAA,GAAmB,iBACjC,CAAA;AAAA,oBACC,KAAA,CAAA,aAAA,CAAA,aAAA,EAAA,IAAA,EACE,OACC,oBAAA,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,sCACG,UAAW,EAAA,EAAA,OAAA,EAAQ,OAAQ,EAAA,SAAA,EAAS,wBAClC,KAAA,CAAA,aAAA,CAAA,QAAA,EAAA,IAAA,EAAO,YAAU,CAAA,EAAS,KAAE,OAAQ,CAAA,IAAA,CAAK,WAAY,CAAA,MACxD,mBACC,KAAA,CAAA,aAAA,CAAA,UAAA,EAAA,EAAW,OAAQ,EAAA,OAAA,EAAQ,WAAS,IACnC,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,QAAO,EAAA,IAAA,EAAA,OAAK,GAAS,GAAE,EAAA,OAAA,CAAQ,IAAK,CAAA,QACvC,GACC,OAAQ,CAAA,IAAA,CAAK,OACZ,oBAAA,KAAA,CAAA,aAAA,CAAC,UAAW,EAAA,EAAA,OAAA,EAAQ,OAAQ,EAAA,SAAA,EAAS,wBAClC,KAAA,CAAA,aAAA,CAAA,QAAA,EAAA,IAAA,EAAO,WAAS,CAAA,EAAS,KAAE,OAAQ,CAAA,IAAA,CAAK,OAC3C,CAAA,EAED,4BACE,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAI,EAAI,EAAA,CAAA,EAAG,GAAG,CAAG,EAAA,OAAA,EAAQ,aAAc,EAAA,YAAA,EAAc,qBACnD,KAAA,CAAA,aAAA,CAAA,UAAA,EAAA,EAAW,OAAQ,EAAA,OAAA,EAAA,EAAQ,uFAG5B,CACF,CAAA,kBAED,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAI,IAAI,CACP,EAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,MAAC,SAAA;AAAA,MAAA;AAAA,QACC,SAAS,EAAA,IAAA;AAAA,QACT,KAAA,EAAO,SAAS,YAAY,CAAA,YAAA,CAAA;AAAA,QAC5B,KAAO,EAAA,WAAA;AAAA,QACP,UAAU,CAAC,CAAA,KAAM,cAAe,CAAA,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,QAC9C,QAAU,EAAA,UAAA;AAAA,QACV,SAAS,EAAA;AAAA;AAAA,KAEb,CACF,CAEJ,CAAA;AAAA,oBACA,KAAA,CAAA,aAAA,CAAC,qCACE,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAO,SAAS,WAAa,EAAA,QAAA,EAAU,UAAY,EAAA,EAAA,QAEpD,CACA,kBAAA,KAAA,CAAA,aAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,OAAS,EAAA,aAAA;AAAA,QACT,KAAA,EAAO,WAAW,WAAc,GAAA,SAAA;AAAA,QAChC,OAAQ,EAAA,WAAA;AAAA,QACR,QAAA,EAAU,CAAC,cAAkB,IAAA,UAAA;AAAA,QAC7B,SAAA,EACE,6BACG,KAAA,CAAA,aAAA,CAAA,gBAAA,EAAA,EAAiB,MAAM,EAAI,EAAA,KAAA,EAAM,WAAU,CAC1C,GAAA;AAAA,OAAA;AAAA,MAGL,UACG,GAAA,QAAA,GACE,cACA,GAAA,cAAA,GACF,WACE,QACA,GAAA;AAAA,KAEV;AAAA,GACF;AAEJ,CAAA;AAEO,MAAM,uBAAuB,MAAM;AACxC,EAAM,MAAA,EAAE,MAAO,EAAA,GAAI,SAAU,EAAA;AAC7B,EAAM,MAAA,WAAA,GAAc,OAAO,cAAc,CAAA;AACzC,EAAM,MAAA,WAAA,GAAc,OAAO,cAAc,CAAA;AACzC,EAAM,MAAA,QAAA,GAAW,OAAO,WAAW,CAAA;AAEnC,EAAA,MAAM,iBACJ,MAAO,CAAA,QAAA,CAAS,cAAc,wBAAwB,CAAA,IACtD,OAAO,QAAS,CAAA,IAAA;AAClB,EAAA,MAAM,SACJ,GAAA,MAAA,CAAO,QAAS,CAAA,WAAA,GAAc,uBAAuB,CAAK,IAAA,SAAA;AAE5D,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,CAAC,CAAA;AACxC,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,QAKnC,CAAA;AAAA,IACD,IAAM,EAAA,KAAA;AAAA,IACN,OAAS,EAAA,IAAA;AAAA,IACT,MAAQ,EAAA,SAAA;AAAA,IACR,UAAY,EAAA;AAAA,GACb,CAAA;AAED,EAAM,MAAA;AAAA,IACJ,OAAS,EAAA,UAAA;AAAA,IACT,OAAS,EAAA,iBAAA;AAAA,IACT,KAAO,EAAA;AAAA,GACT,GAAI,sBAAsB,+BAA+B,CAAA;AAEzD,EAAA,MAAM,EAAE,KAAO,EAAA,OAAA,EAAS,KAAM,EAAA,GAAI,SAAS,YAAY;AACrD,IAAM,MAAA,QAAA,GAAW,MAAM,WAAA,CAAY,oBAAqB,EAAA;AACxD,IAAA,MAAM,aAAa,QAAS,CAAA,aAAA;AAE5B,IAAM,MAAA,IAAA,GAAO,MAAM,WAAA,CAAY,WAAY,EAAA;AAC3C,IAAM,MAAA,WAAA,GAAwB,IAAK,CAAA,KAAA,IAAS,EAAC;AAG7C,IAAA,MAAM,WAAW,WAAY,CAAA,MAAA;AAAA,MAC3B,CAAC,MACC,CAAE,CAAA,IAAA,CAAK,eAAe,IAAS,KAAA,cAAA,IAC/B,CAAE,CAAA,QAAA,CAAS,SAAc,KAAA;AAAA,KAC7B;AAEA,IAAO,OAAA,EAAE,QAAU,EAAA,QAAA,EAAU,UAAW,EAAA;AAAA,KACvC,CAAC,WAAA,EAAa,aAAa,cAAgB,EAAA,SAAA,EAAW,OAAO,CAAC,CAAA;AAEjE,EAAM,MAAA,aAAA,GAAgB,CAAC,OAAoB,KAAA;AACzC,IAAe,cAAA,CAAA;AAAA,MACb,IAAM,EAAA,IAAA;AAAA,MACN,OAAA;AAAA,MACA,MAAQ,EAAA,SAAA;AAAA,MACR,UAAY,EAAA;AAAA,KACb,CAAA;AAAA,GACH;AAEA,EAAM,MAAA,YAAA,GAAe,CAAC,OAAoB,KAAA;AACxC,IAAe,cAAA,CAAA;AAAA,MACb,IAAM,EAAA,IAAA;AAAA,MACN,OAAA;AAAA,MACA,MAAQ,EAAA,QAAA;AAAA,MACR,UAAY,EAAA;AAAA,KACb,CAAA;AAAA,GACH;AAEA,EAAA,MAAM,gBAAgB,YAAY;AAChC,IAAA,IAAI,CAAC,WAAA,CAAY,OAAW,IAAA,CAAC,KAAO,EAAA;AAEpC,IAAA,cAAA,CAAe,CAAC,IAAU,MAAA,EAAE,GAAG,IAAM,EAAA,UAAA,EAAY,MAAO,CAAA,CAAA;AAExD,IAAM,MAAA,SAAA,GAAY,YAAY,MAAW,KAAA,SAAA;AACzC,IAAM,MAAA,SAAA,GAAY,YACd,CAAC,EAAA,EAAY,GAAW,CAAc,KAAA,WAAA,CAAY,eAAe,EAAI,EAAA,CAAA,EAAG,CAAC,CACzE,GAAA,CAAC,IAAY,CAAW,EAAA,CAAA,KAAc,YAAY,aAAc,CAAA,EAAA,EAAI,GAAG,CAAC,CAAA;AAE5E,IAAI,IAAA;AACF,MAAM,MAAA,SAAA,CAAU,WAAY,CAAA,OAAA,CAAQ,QAAS,CAAA,SAAA,EAAW,YAAY,OAAQ,CAAA,QAAA,CAAS,IAAM,EAAA,KAAA,CAAM,UAAU,CAAA;AAE3G,MAAe,cAAA,CAAA;AAAA,QACb,IAAM,EAAA,KAAA;AAAA,QACN,OAAS,EAAA,IAAA;AAAA,QACT,MAAQ,EAAA,SAAA;AAAA,QACR,UAAY,EAAA;AAAA,OACb,CAAA;AACD,MAAW,UAAA,CAAA,CAAC,CAAM,KAAA,CAAA,GAAI,CAAC,CAAA;AACvB,MAAA,QAAA,CAAS,IAAK,CAAA;AAAA,QACZ,OAAS,EAAA,CAAA,QAAA,EAAW,SAAY,GAAA,UAAA,GAAa,UAAU,CAAA,CAAA;AAAA,QACvD,QAAU,EAAA,SAAA;AAAA,QACV,OAAS,EAAA;AAAA,OACV,CAAA;AAAA,aACM,GAAK,EAAA;AACZ,MAAA,OAAA,CAAQ,KAAM,CAAA,CAAA,MAAA,EAAS,WAAY,CAAA,MAAM,gBAAgB,GAAG,CAAA;AAC5D,MAAA,cAAA,CAAe,CAAC,IAAU,MAAA,EAAE,GAAG,IAAM,EAAA,UAAA,EAAY,OAAQ,CAAA,CAAA;AACzD,MAAA,MAAM,YAAe,GAAA,GAAA,YAAe,KAAQ,GAAA,GAAA,CAAI,OAAU,GAAA,wBAAA;AAC1D,MAAA,QAAA,CAAS,IAAK,CAAA;AAAA,QACZ,OAAS,EAAA,CAAA,UAAA,EAAa,WAAY,CAAA,MAAM,YAAY,YAAY,CAAA,CAAA;AAAA,QAChE,QAAU,EAAA,OAAA;AAAA,QACV,OAAS,EAAA;AAAA,OACV,CAAA;AAAA;AACH,GACF;AAEA,EAAA,IAAI,WAAW,iBAAmB,EAAA;AAChC,IAAA,uBACG,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAI,CAAG,EAAA,CAAA,EAAA,EACL,CAAC,GAAG,KAAM,CAAA,CAAC,CAAC,CAAA,CAAE,GAAI,CAAA,CAAC,CAAG,EAAA,CAAA,qBACpB,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAI,GAAK,EAAA,CAAA,EAAG,CAAG,EAAA,CAAA,EAAA,kBACb,KAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EAAS,OAAQ,EAAA,MAAA,EAAO,KAAM,EAAA,MAAA,EAAO,CACxC,CACD,CACH,CAAA;AAAA;AAIJ,EAAA,IAAI,KAAO,EAAA;AACT,IAAO,uBAAA,KAAA,CAAA,aAAA,CAAC,sBAAmB,KAAc,EAAA,CAAA;AAAA;AAG3C,EAAA,IAAI,eAAiB,EAAA;AACnB,IACE,uBAAA,KAAA,CAAA,aAAA,CAAC,GAAI,EAAA,EAAA,CAAA,EAAG,CACN,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,UAAW,EAAA,EAAA,KAAA,EAAM,OAAQ,EAAA,EAAA,+BAAA,EACM,eAAgB,CAAA,OAChD,CACF,CAAA;AAAA;AAIJ,EAAA,IAAI,CAAC,UAAY,EAAA;AACf,IAAA,uBACG,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAI,CAAG,EAAA,CAAA,EAAG,SAAU,EAAA,QAAA,EAAA,kBAClB,KAAA,CAAA,aAAA,CAAA,UAAA,EAAA,EAAW,OAAQ,EAAA,OAAA,EAAQ,KAAM,EAAA,eAAA,EAAA,EAAgB,oEAElD,CACF,CAAA;AAAA;AAIJ,EAAM,MAAA,QAAA,GAAW,KAAO,EAAA,QAAA,IAAY,EAAC;AACrC,EAAA,MAAM,kBAAkB,QAAS,CAAA,MAAA;AAAA,IAC/B,CAAC,MAAM,CAAC,CAAA,CAAE,QAAQ,KAAS,IAAA,CAAA,CAAE,OAAO,KAAU,KAAA;AAAA,GAChD;AACA,EAAA,MAAM,mBAAmB,QAAS,CAAA,MAAA;AAAA,IAChC,CAAC,CAAA,KAAM,CAAE,CAAA,MAAA,EAAQ,KAAU,KAAA;AAAA,GAC7B;AACA,EAAA,MAAM,mBAAmB,QAAS,CAAA,MAAA;AAAA,IAChC,CAAC,CAAA,KAAM,CAAE,CAAA,MAAA,EAAQ,KAAU,KAAA;AAAA,GAC7B;AAEA,EAAA,MAAM,OAAiC,GAAA;AAAA,IACrC;AAAA,MACE,KAAO,EAAA,WAAA;AAAA,MACP,KAAO,EAAA,yBAAA;AAAA,MACP,MAAA,EAAQ,CAAC,GAAA,qBACN,KAAA,CAAA,aAAA,CAAA,UAAA,EAAA,EAAW,SAAQ,OAAS,EAAA,EAAA,GAAA,CAAI,IAAK,CAAA,WAAA,CAAY,MAAO;AAAA,KAE7D;AAAA,IACA;AAAA,MACE,KAAO,EAAA,QAAA;AAAA,MACP,KAAO,EAAA,cAAA;AAAA,MACP,MAAA,EAAQ,CAAC,GAAQ,KAAA;AACf,QAAM,MAAA,KAAA,GAAQ,GAAI,CAAA,MAAA,EAAQ,KAAS,IAAA,SAAA;AACnC,QAAM,MAAA,KAAA,GAAQ,KAAU,KAAA,UAAA,GAAa,QAAW,GAAA,KAAA;AAChD,QACE,uBAAA,KAAA,CAAA,aAAA,CAAC,QAAK,KAAc,EAAA,IAAA,EAAK,SAAQ,KAAO,EAAA,+BAAA,CAAgC,KAAK,CAAG,EAAA,CAAA;AAAA;AAEpF,KACF;AAAA,IACA;AAAA,MACE,KAAO,EAAA,MAAA;AAAA,MACP,KAAO,EAAA,eAAA;AAAA,MACP,MAAQ,EAAA,CAAC,GACP,qBAAA,KAAA,CAAA,aAAA,CAAC,IAAK,EAAA,EAAA,KAAA,EAAO,GAAI,CAAA,IAAA,CAAK,QAAU,EAAA,IAAA,EAAK,OAAQ,EAAA,OAAA,EAAQ,UAAW,EAAA;AAAA,KAEpE;AAAA,IACA;AAAA,MACE,KAAO,EAAA,WAAA;AAAA,MACP,KAAO,EAAA,4BAAA;AAAA,MACP,MAAA,EAAQ,CAAC,GAAQ,KAAA;AACf,QAAI,IAAA,CAAC,IAAI,QAAS,CAAA,iBAAA;AAChB,UAAA,uBAAQ,KAAA,CAAA,aAAA,CAAA,UAAA,EAAA,EAAW,OAAQ,EAAA,OAAA,EAAA,EAAQ,GAAC,CAAA;AACtC,QACE,uBAAA,KAAA,CAAA,aAAA,CAAC,UAAW,EAAA,EAAA,OAAA,EAAQ,OACjB,EAAA,EAAA,IAAI,IAAK,CAAA,GAAA,CAAI,QAAS,CAAA,iBAAiB,CAAE,CAAA,kBAAA,EAC5C,CAAA;AAAA;AAEJ,KACF;AAAA,IACA;AAAA,MACE,KAAO,EAAA,SAAA;AAAA,MACP,SAAW,EAAA,KAAA;AAAA,MACX,MAAA,EAAQ,CAAC,GAAQ,KAAA;AACf,QAAM,MAAA,KAAA,GAAQ,GAAI,CAAA,MAAA,EAAQ,KAAS,IAAA,SAAA;AACnC,QAAI,IAAA,KAAA,KAAU,WAAkB,OAAA,IAAA;AAChC,QACE,uBAAA,KAAA,CAAA,aAAA,CAAC,OAAI,OAAQ,EAAA,MAAA,EAAO,OAAO,EAAE,GAAA,EAAK,CAAE,EAAA,EAAA,kBACjC,KAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EAAQ,OAAM,SACb,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,cAAW,IAAK,EAAA,OAAA,EAAQ,SAAS,MAAM,aAAA,CAAc,GAAG,CAAA,EAAA,kBACtD,KAAA,CAAA,aAAA,CAAA,eAAA,EAAA,EAAgB,OAAM,SAAU,EAAA,CACnC,CACF,CACA,kBAAA,KAAA,CAAA,aAAA,CAAC,WAAQ,KAAM,EAAA,QAAA,EAAA,kBACZ,KAAA,CAAA,aAAA,CAAA,UAAA,EAAA,EAAW,IAAK,EAAA,OAAA,EAAQ,SAAS,MAAM,YAAA,CAAa,GAAG,CACtD,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,cAAW,KAAM,EAAA,OAAA,EAAQ,CAC5B,CACF,CACF,CAAA;AAAA;AAEJ;AACF,GACF;AAEA,EAAA,MAAM,iBAAoB,GAAA;AAAA,IACxB;AAAA,MACE,MAAA,EAAQ,CAAC,IAAc,KAAA;AACrB,QAAA,MAAM,UAAU,IAAK,CAAA,OAAA;AACrB,QAAA,IAAI,CAAC,OAAS,EAAA,QAAA,EAAU,IAAM,EAAA,2CAAQ,GAAI,EAAA,IAAA,CAAA;AAC1C,QAAO,uBAAA,KAAA,CAAA,aAAA,CAAC,sBAAmB,OAAkB,EAAA,CAAA;AAAA;AAC/C;AACF,GACF;AAEA,EAAA,2CACG,GAAI,EAAA,EAAA,CAAA,EAAG,qBACL,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAI,IAAI,CACP,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,cAAW,OAAQ,EAAA,OAAA,EAAQ,OAAM,eAC/B,EAAA,EAAA,eAAA,CAAgB,QAAO,YAAW,EAAA,gBAAA,CAAiB,QAAO,YAAW,EAAA,GAAA,EACrE,iBAAiB,MAAO,EAAA,WAC3B,CACF,CAEC,EAAA,QAAA,CAAS,WAAW,CACnB,mBAAA,KAAA,CAAA,aAAA,CAAC,OAAI,CAAG,EAAA,CAAA,EAAG,WAAU,QACnB,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,cAAW,OAAQ,EAAA,OAAA,EAAQ,OAAM,eAAgB,EAAA,EAAA,2BAElD,CACF,CAEA,mBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,OAAS,EAAA;AAAA,QACP,MAAA,EAAQ,SAAS,MAAS,GAAA,EAAA;AAAA,QAC1B,QAAU,EAAA,EAAA;AAAA,QACV,MAAQ,EAAA,IAAA;AAAA,QACR,SAAW,EAAA,KAAA;AAAA,QACX,gBAAkB,EAAA,GAAA;AAAA,QAClB,OAAS,EAAA,IAAA;AAAA,QACT,mBAAqB,EAAA;AAAA,OACvB;AAAA,MACA,OAAA;AAAA,MACA,IAAM,EAAA,QAAA,CAAS,GAAI,CAAA,CAAC,IAAU,MAAA,EAAE,GAAG,IAAA,EAAM,EAAI,EAAA,IAAA,CAAK,QAAS,CAAA,IAAA,EAAO,CAAA,CAAA;AAAA,MAClE,WAAa,EAAA;AAAA;AAAA,GAIjB,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,cAAA;AAAA,IAAA;AAAA,MACC,MAAM,WAAY,CAAA,IAAA;AAAA,MAClB,SAAS,WAAY,CAAA,OAAA;AAAA,MACrB,QAAQ,WAAY,CAAA,MAAA;AAAA,MACpB,YAAY,WAAY,CAAA,UAAA;AAAA,MACxB,OAAA,EAAS,MACP,cAAe,CAAA;AAAA,QACb,IAAM,EAAA,KAAA;AAAA,QACN,OAAS,EAAA,IAAA;AAAA,QACT,MAAQ,EAAA,SAAA;AAAA,QACR,UAAY,EAAA;AAAA,OACb,CAAA;AAAA,MAEH,SAAW,EAAA;AAAA;AAAA,GAEf,CAAA;AAEJ;;;;"}
@@ -1,2 +0,0 @@
1
- export { EntityApiApprovalTab } from './EntityApiApprovalTab.esm.js';
2
- //# sourceMappingURL=index.esm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- __load_plugin_entry__("internal.plugin-kuadrant",(()=>{"use strict";var e,h,a,g,t,i,l,r,n,s,_,c,u,o,f,d,y,x,b,p,m,v={64344:(e,h,a)=>{var g={PluginRoot:()=>Promise.all([a.e(4083),a.e(9400),a.e(7717),a.e(1584),a.e(4434),a.e(369),a.e(7293),a.e(7076),a.e(9625),a.e(7057),a.e(5010),a.e(3015),a.e(512),a.e(5605),a.e(5478),a.e(5427),a.e(9634),a.e(484),a.e(1942),a.e(7976),a.e(2097),a.e(5978),a.e(3947),a.e(6777),a.e(9096),a.e(879)]).then(()=>()=>a(58373)),KuadrantPage:()=>Promise.all([a.e(2097),a.e(6921)]).then(()=>()=>a(72627)),EntityKuadrantApiAccessCard:()=>Promise.all([a.e(2097),a.e(6921)]).then(()=>()=>a(72627)),EntityKuadrantApiKeyManagementTab:()=>Promise.all([a.e(2097),a.e(6921)]).then(()=>()=>a(72627)),EntityKuadrantApiKeysContent:()=>Promise.all([a.e(2097),a.e(6921)]).then(()=>()=>a(72627)),EntityKuadrantApiProductInfoContent:()=>Promise.all([a.e(2097),a.e(6921)]).then(()=>()=>a(72627)),KuadrantIcon:()=>Promise.all([a.e(3015),a.e(5478),a.e(9096),a.e(8747)]).then(()=>()=>a(59750))},t=(e,h)=>(a.R=h,h=a.o(g,e)?g[e]():Promise.resolve().then(()=>{throw new Error('Module "'+e+'" does not exist in container.')}),a.R=void 0,h),i=(e,h)=>{if(a.S){var g="default",t=a.S[g];if(t&&t!==e)throw new Error("Container initialization failed as it has already been initialized with a different share scope");return a.S[g]=e,a.I(g,h)}};a.d(h,{get:()=>t,init:()=>i})}},k={};function P(e){var h=k[e];if(void 0!==h)return h.exports;var a=k[e]={id:e,loaded:!1,exports:{}};return v[e].call(a.exports,a,a.exports,P),a.loaded=!0,a.exports}return P.m=v,P.c=k,P.n=e=>{var h=e&&e.__esModule?()=>e.default:()=>e;return P.d(h,{a:h}),h},h=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,P.t=function(a,g){if(1&g&&(a=this(a)),8&g)return a;if("object"==typeof a&&a){if(4&g&&a.__esModule)return a;if(16&g&&"function"==typeof a.then)return a}var t=Object.create(null);P.r(t);var i={};e=e||[null,h({}),h([]),h(h)];for(var l=2&g&&a;("object"==typeof l||"function"==typeof l)&&!~e.indexOf(l);l=h(l))Object.getOwnPropertyNames(l).forEach(e=>i[e]=()=>a[e]);return i.default=()=>a,P.d(t,i),t},P.d=(e,h)=>{for(var a in h)P.o(h,a)&&!P.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:h[a]})},P.f={},P.e=e=>Promise.all(Object.keys(P.f).reduce((h,a)=>(P.f[a](e,h),h),[])),P.u=e=>"static/"+({51:"react-syntax-highlighter_languages_highlight_prolog",200:"react-syntax-highlighter_languages_highlight_mel",206:"react-syntax-highlighter_languages_highlight_gml",371:"react-syntax-highlighter_languages_highlight_excel",456:"react-syntax-highlighter_languages_highlight_roboconf",460:"react-syntax-highlighter_languages_highlight_avrasm",464:"react-syntax-highlighter_languages_highlight_shell",557:"react-syntax-highlighter_languages_highlight_oneC",579:"react-syntax-highlighter_languages_highlight_vbnet",634:"react-syntax-highlighter_languages_highlight_scilab",879:"exposed-PluginRoot",927:"react-syntax-highlighter_languages_highlight_javascript",946:"react-syntax-highlighter_languages_highlight_clojure",985:"react-syntax-highlighter_languages_highlight_monkey",1062:"react-syntax-highlighter_languages_highlight_nim",1084:"react-syntax-highlighter_languages_highlight_aspectj",1099:"react-syntax-highlighter_languages_highlight_ebnf",1173:"react-syntax-highlighter_languages_highlight_autohotkey",1177:"react-syntax-highlighter_languages_highlight_profile",1214:"react-syntax-highlighter_languages_highlight_properties",1276:"react-syntax-highlighter_languages_highlight_phpTemplate",1325:"react-syntax-highlighter_languages_highlight_actionscript",1352:"react-syntax-highlighter_languages_highlight_fortran",1362:"react-syntax-highlighter_languages_highlight_mathematica",1418:"react-syntax-highlighter_languages_highlight_pony",1441:"react-syntax-highlighter_languages_highlight_coq",1461:"react-syntax-highlighter_languages_highlight_livescript",1489:"react-syntax-highlighter_languages_highlight_reasonml",1496:"react-syntax-highlighter_languages_highlight_lua",1522:"react-syntax-highlighter_languages_highlight_dust",1679:"react-syntax-highlighter_languages_highlight_scheme",1694:"react-syntax-highlighter_languages_highlight_accesslog",1727:"react-syntax-highlighter_languages_highlight_oxygene",1750:"react-syntax-highlighter_languages_highlight_makefile",1828:"react-syntax-highlighter_languages_highlight_dockerfile",1895:"react-syntax-highlighter_languages_highlight_pythonRepl",1956:"react-syntax-highlighter_languages_highlight_puppet",1961:"react-syntax-highlighter_languages_highlight_stan",1972:"react-syntax-highlighter_languages_highlight_fsharp",2007:"react-syntax-highlighter_languages_highlight_css",2064:"react-syntax-highlighter_languages_highlight_vhdl",2108:"react-syntax-highlighter_languages_highlight_cLike",2180:"react-syntax-highlighter_languages_highlight_sqf",2234:"react-syntax-highlighter_languages_highlight_lisp",2267:"react-syntax-highlighter_languages_highlight_maxima",2346:"react-syntax-highlighter_languages_highlight_d",2362:"react-syntax-highlighter_languages_highlight_xquery",2378:"react-syntax-highlighter_languages_highlight_parser3",2383:"react-syntax-highlighter_languages_highlight_crmsh",2438:"react-syntax-highlighter_languages_highlight_haxe",2488:"react-syntax-highlighter_languages_highlight_verilog",2496:"react-syntax-highlighter_languages_highlight_erlangRepl",2512:"react-syntax-highlighter_languages_highlight_stylus",2516:"react-syntax-highlighter_languages_highlight_apache",2665:"react-syntax-highlighter_languages_highlight_powershell",2693:"react-syntax-highlighter_languages_highlight_tap",2727:"react-syntax-highlighter_languages_highlight_q",2743:"react-syntax-highlighter_languages_highlight_asciidoc",2762:"react-syntax-highlighter_languages_highlight_haskell",2795:"react-syntax-highlighter_languages_highlight_dns",2871:"react-syntax-highlighter_languages_highlight_typescript",2882:"react-syntax-highlighter_languages_highlight_sml",2979:"react-syntax-highlighter_languages_highlight_plaintext",2981:"react-syntax-highlighter_languages_highlight_ruleslanguage",2983:"react-syntax-highlighter_languages_highlight_golo",3146:"react-syntax-highlighter_languages_highlight_purebasic",3193:"react-syntax-highlighter_languages_highlight_xml",3299:"react-syntax-highlighter_languages_highlight_fix",3357:"react-syntax-highlighter_languages_highlight_x86asm",3384:"react-syntax-highlighter_languages_highlight_ini",3418:"react-syntax-highlighter_languages_highlight_ruby",3419:"react-syntax-highlighter_languages_highlight_nix",3487:"react-syntax-highlighter_languages_highlight_mipsasm",3500:"react-syntax-highlighter_languages_highlight_autoit",3540:"react-syntax-highlighter_languages_highlight_moonscript",3562:"react-syntax-highlighter_languages_highlight_gams",3580:"react-syntax-highlighter_languages_highlight_csp",3607:"react-syntax-highlighter_languages_highlight_abnf",3623:"react-syntax-highlighter_languages_highlight_yaml",3722:"react-syntax-highlighter_languages_highlight_latex",3736:"react-syntax-highlighter_languages_highlight_json",3811:"react-syntax-highlighter_languages_highlight_erb",3885:"react-syntax-highlighter_languages_highlight_stata",3923:"react-syntax-highlighter_languages_highlight_applescript",3988:"react-syntax-highlighter_languages_highlight_vala",4014:"react-syntax-highlighter_languages_highlight_scss",4075:"react-syntax-highlighter_languages_highlight_hsp",4110:"react-syntax-highlighter_languages_highlight_tp",4135:"react-syntax-highlighter_languages_highlight_mizar",4282:"react-syntax-highlighter_languages_highlight_livecodeserver",4300:"react-syntax-highlighter_languages_highlight_r",4342:"react-syntax-highlighter_languages_highlight_php",4383:"react-syntax-highlighter_languages_highlight_dsconfig",4436:"react-syntax-highlighter_languages_highlight_zephir",4446:"react-syntax-highlighter_languages_highlight_leaf",4493:"react-syntax-highlighter_languages_highlight_gauss",4575:"react-syntax-highlighter_languages_highlight_processing",4635:"react-syntax-highlighter_languages_highlight_jbossCli",4733:"react-syntax-highlighter_languages_highlight_llvm",4835:"react-syntax-highlighter_languages_highlight_cos",4931:"react-syntax-highlighter_languages_highlight_step21",4956:"react-syntax-highlighter_languages_highlight_angelscript",4971:"react-syntax-highlighter_languages_highlight_lsl",5034:"react-syntax-highlighter_languages_highlight_ada",5051:"react-syntax-highlighter_languages_highlight_coffeescript",5099:"react-syntax-highlighter_languages_highlight_nsis",5123:"react-syntax-highlighter_languages_highlight_erlang",5189:"react-syntax-highlighter_languages_highlight_dts",5251:"react-syntax-highlighter_languages_highlight_pgsql",5253:"react-syntax-highlighter_languages_highlight_clojureRepl",5286:"react-syntax-highlighter_languages_highlight_nginx",5446:"react-syntax-highlighter_languages_highlight_ocaml",5565:"react-syntax-highlighter_languages_highlight_kotlin",5613:"react-syntax-highlighter_languages_highlight_rib",5664:"react-syntax-highlighter_languages_highlight_dos",5773:"react-syntax-highlighter_languages_highlight_mojolicious",5813:"react-syntax-highlighter_languages_highlight_less",5819:"react-syntax-highlighter_languages_highlight_gradle",5868:"react-syntax-highlighter_languages_highlight_inform7",5900:"react-syntax-highlighter_languages_highlight_lasso",6057:"react-syntax-highlighter_languages_highlight_sqlMore",6152:"react-syntax-highlighter_languages_highlight_vbscriptHtml",6161:"react-syntax-highlighter_languages_highlight_clean",6177:"react-syntax-highlighter_languages_highlight_taggerscript",6195:"react-syntax-highlighter_languages_highlight_ldif",6228:"react-syntax-highlighter_languages_highlight_rust",6267:"react-syntax-highlighter_languages_highlight_swift",6354:"react-syntax-highlighter_languages_highlight_java",6501:"react-syntax-highlighter_languages_highlight_armasm",6512:"react-syntax-highlighter_languages_highlight_scala",6542:"react-syntax-highlighter_languages_highlight_vim",6555:"react-syntax-highlighter_languages_highlight_openscad",6573:"react-syntax-highlighter_languages_highlight_cpp",6780:"react-syntax-highlighter_languages_highlight_qml",6835:"react-syntax-highlighter_languages_highlight_brainfuck",6848:"react-syntax-highlighter_languages_highlight_crystal",6921:"exposed-KuadrantPage",6924:"react-syntax-highlighter_languages_highlight_isbl",6977:"react-syntax-highlighter_languages_highlight_rsl",6986:"react-syntax-highlighter_languages_highlight_capnproto",7048:"react-syntax-highlighter_languages_highlight_gherkin",7079:"react-syntax-highlighter_languages_highlight_diff",7131:"react-syntax-highlighter_languages_highlight_protobuf",7209:"react-syntax-highlighter_languages_highlight_perl",7247:"react-syntax-highlighter_languages_highlight_cmake",7254:"react-syntax-highlighter_languages_highlight_subunit",7351:"react-syntax-highlighter_languages_highlight_elixir",7401:"react-syntax-highlighter_languages_highlight_sas",7406:"react-syntax-highlighter_languages_highlight_sql",7439:"react-syntax-highlighter_languages_highlight_flix",7533:"react-syntax-highlighter_languages_highlight_awk",7572:"react-syntax-highlighter_languages_highlight_basic",7764:"react-syntax-highlighter_languages_highlight_go",7776:"react-syntax-highlighter_languages_highlight_haml",7794:"react-syntax-highlighter_languages_highlight_http",7818:"react-syntax-highlighter_languages_highlight_arduino",7879:"react-syntax-highlighter_languages_highlight_csharp",7934:"react-syntax-highlighter_languages_highlight_glsl",7959:"react-syntax-highlighter_languages_highlight_htmlbars",8001:"react-syntax-highlighter_languages_highlight_matlab",8030:"react-syntax-highlighter_languages_highlight_handlebars",8058:"react-syntax-highlighter_languages_highlight_n1ql",8078:"react-syntax-highlighter_languages_highlight_delphi",8138:"react-syntax-highlighter_languages_highlight_elm",8140:"react-syntax-highlighter_languages_highlight_pf",8216:"react-syntax-highlighter_languages_highlight_bnf",8217:"react-syntax-highlighter_languages_highlight_twig",8331:"react-syntax-highlighter_languages_highlight_thrift",8338:"react-syntax-highlighter_languages_highlight_objectivec",8549:"react-syntax-highlighter_languages_highlight_c",8595:"react-syntax-highlighter_languages_highlight_hy",8705:"react-syntax-highlighter_languages_highlight_nodeRepl",8725:"react-syntax-highlighter_languages_highlight_smalltalk",8727:"react-syntax-highlighter/lowlight-import",8747:"exposed-KuadrantIcon",8753:"react-syntax-highlighter_languages_highlight_mercury",8755:"react-syntax-highlighter_languages_highlight_tcl",8763:"react-syntax-highlighter_languages_highlight_routeros",8833:"react-syntax-highlighter_languages_highlight_markdown",8874:"react-syntax-highlighter_languages_highlight_smali",8903:"react-syntax-highlighter_languages_highlight_axapta",8904:"react-syntax-highlighter_languages_highlight_python",8948:"react-syntax-highlighter_languages_highlight_groovy",9078:"react-syntax-highlighter_languages_highlight_irpf90",9118:"react-syntax-highlighter_languages_highlight_juliaRepl",9139:"react-syntax-highlighter_languages_highlight_django",9162:"react-syntax-highlighter_languages_highlight_ceylon",9175:"react-syntax-highlighter_languages_highlight_vbscript",9229:"react-syntax-highlighter_languages_highlight_julia",9265:"react-syntax-highlighter_languages_highlight_dart",9406:"react-syntax-highlighter_languages_highlight_cal",9612:"react-syntax-highlighter_languages_highlight_bash",9702:"react-syntax-highlighter_languages_highlight_gcode",9726:"react-syntax-highlighter_languages_highlight_xl",9882:"react-syntax-highlighter_languages_highlight_arcade"}[e]||e)+"."+{51:"be0fdf0c",200:"5251fe1a",206:"2347c999",286:"ee43f560",369:"2374941c",371:"2f5c76b9",441:"f708f1e0",456:"47518214",460:"6381890e",464:"9bbc16eb",501:"87de76da",512:"d592d164",557:"362a3b0a",579:"21c190ed",634:"bb9cc730",635:"f63679a5",879:"949381c2",927:"b0ad82d3",946:"e3fcc98c",985:"5f60f06d",1037:"25758556",1062:"17afaed1",1084:"35f221e8",1099:"a34b6944",1173:"614c5248",1177:"615fa721",1214:"60f97895",1276:"2bd36dc7",1325:"78db0238",1352:"38ec3d00",1362:"d8631b37",1418:"1961f69f",1441:"6b156852",1461:"3ece3068",1489:"a5a73a29",1496:"52f73c98",1522:"b30d0c38",1584:"1e45e570",1679:"508b5846",1694:"bd112f1a",1719:"246c020d",1727:"ea742315",1750:"cad796c9",1828:"2c5fdf55",1881:"56cde36b",1895:"feb72aed",1956:"ee3f80da",1961:"17155e77",1972:"2ba37c00",2007:"2cc312ae",2064:"dea9db6c",2108:"f884fdc0",2180:"43421810",2234:"1cb2f675",2267:"f1f17544",2346:"bf4f2b44",2362:"353780d4",2378:"706a4bd6",2383:"58c4cb07",2438:"e2543cc2",2488:"e32adbeb",2496:"0d7f4890",2512:"cde06cf5",2516:"aa86d495",2665:"7bd31b3a",2693:"402e473f",2727:"989943de",2743:"4b40a3f9",2762:"bbd3c104",2795:"6d79126a",2822:"27a4ac5b",2871:"cf576f17",2882:"0e45c1cf",2952:"b54bd390",2967:"0c2ef90e",2979:"25f8d292",2981:"038504d0",2983:"eaa5e2bf",3007:"bffc9924",3015:"1fe097c2",3144:"6f99ccee",3146:"08443005",3193:"ee14d6a4",3299:"5ee62733",3357:"217c56f0",3384:"d9d4ed7e",3418:"d84064e5",3419:"245f31b6",3487:"f5bc5b04",3500:"a06c1c62",3540:"443301b3",3562:"a45eb030",3580:"7fc6f9a3",3581:"ebe5968a",3607:"bb6a8626",3623:"2aae489e",3657:"882640ca",3722:"b4bb9102",3736:"d934b52b",3811:"4ac917b8",3885:"fe81a7fc",3897:"6e9c07c0",3923:"ddf703d6",3947:"4f4aa8c2",3976:"e8a8fda2",3988:"843d9bc4",4014:"bec19089",4041:"29923ad9",4075:"5d714528",4083:"811c4e7a",4110:"0f4ff415",4135:"9b39cf3b",4282:"f624f22d",4300:"8540ccea",4342:"ade4c6c4",4383:"c3457b50",4434:"f92f6ba4",4436:"fc94a148",4446:"92519810",4491:"83052809",4493:"cceeafb0",4570:"8b9f98d7",4575:"8d1f48c5",4635:"1ff533ef",4641:"276ba0f8",4733:"f32d41e6",4835:"78d69dee",4908:"196a4425",4931:"a431b2db",4956:"f9816c44",4971:"b6519e02",5010:"4f67737b",5034:"b0d90871",5051:"3bc87b5b",5099:"4934a8e8",5123:"501777c7",5189:"8fd3703c",5251:"5b0d21b9",5253:"e6dbc3b4",5286:"630147e0",5289:"55069930",5446:"0e42541e",5565:"c5eaa6f5",5605:"430f697e",5613:"dc8afdf1",5664:"1ede6e37",5773:"0cf721ff",5813:"cc574d49",5819:"72fdf84d",5868:"78be038f",5900:"8d4054e7",5978:"bf347a09",6038:"63d1f832",6057:"d69b1825",6152:"42eb54af",6161:"97b48014",6177:"695a2547",6195:"74045e43",6228:"7e26e901",6267:"7d33a4a9",6272:"3ed14ea4",6354:"e04d1c07",6371:"7b57ac27",6386:"5922f271",6426:"4c18bab5",6501:"4bfb8996",6512:"a4629d0a",6542:"e82f126f",6555:"4a460eaf",6573:"ff6a8f78",6777:"a2b77ec5",6780:"8f3a0af6",6800:"a45da2f4",6835:"31bde7c5",6848:"3a36e63f",6872:"7ef4ed23",6921:"5ae00605",6924:"abe269c1",6972:"f22b9446",6977:"909f2a27",6986:"79dfc31f",7005:"8190ad95",7048:"e740620a",7057:"fcd688c7",7076:"8745d395",7079:"a8373241",7131:"0cd375bc",7164:"5dc4bc72",7209:"ae8475a2",7247:"cb9028b5",7254:"c5ac3a0a",7266:"3c4174cc",7270:"d52407cd",7293:"acf1d743",7351:"1e79c9b9",7367:"62c9669e",7401:"94075d6a",7406:"651dcc8d",7439:"972cc801",7533:"dfc9b0b0",7572:"ec232b8a",7717:"6f5b9dd7",7764:"abc0a144",7776:"d698757b",7791:"ad31cf6d",7794:"5859273c",7818:"9b9ce313",7879:"ea98c6fb",7934:"bb5b0086",7959:"e57e3c89",8001:"114e44eb",8030:"75c0a89b",8058:"c54b2c4a",8078:"588e191d",8138:"8a488b19",8140:"5052a768",8216:"84e0a497",8217:"5cb0fdfc",8331:"ecb04f2a",8338:"2d204375",8549:"b43ce116",8563:"6501eafb",8595:"c60db034",8705:"5b05cdf2",8725:"53da57ca",8727:"2bd53873",8747:"08abbb96",8753:"fa8fdac0",8755:"79af288c",8763:"c0bcd6ce",8833:"1489792c",8874:"4fa5afdd",8903:"80d14346",8904:"9e4100ae",8948:"ecd68b19",9078:"25afcc29",9079:"2ddaea57",9118:"e3bfcde8",9139:"8fb85401",9162:"ab3b1c28",9175:"4703f4c5",9229:"f43a39d0",9239:"1acfe112",9265:"0a0b12af",9400:"df4a7fb5",9406:"781cc6c6",9612:"53f7c730",9625:"b0c6610a",9702:"378d3296",9726:"7cff3cbb",9882:"70910623"}[e]+".chunk.js",P.miniCssF=e=>"static/"+e+"."+e+".ce38cef3.css",P.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),P.o=(e,h)=>Object.prototype.hasOwnProperty.call(e,h),a={},g="internal.plugin-kuadrant:",P.l=(e,h,t,i)=>{if(a[e])a[e].push(h);else{var l,r;if(void 0!==t)for(var n=document.getElementsByTagName("script"),s=0;s<n.length;s++){var _=n[s];if(_.getAttribute("src")==e||_.getAttribute("data-webpack")==g+t){l=_;break}}l||(r=!0,(l=document.createElement("script")).charset="utf-8",l.timeout=120,P.nc&&l.setAttribute("nonce",P.nc),l.setAttribute("data-webpack",g+t),l.src=e),a[e]=[h];var c=(h,g)=>{l.onerror=l.onload=null,clearTimeout(u);var t=a[e];if(delete a[e],l.parentNode&&l.parentNode.removeChild(l),t&&t.forEach(e=>e(g)),h)return h(g)},u=setTimeout(c.bind(null,void 0,{type:"timeout",target:l}),12e4);l.onerror=c.bind(null,l.onerror),l.onload=c.bind(null,l.onload),r&&document.head.appendChild(l)}},P.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},P.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),(()=>{P.S={};var e={},h={};P.I=(a,g)=>{g||(g=[]);var t=h[a];if(t||(t=h[a]={}),!(g.indexOf(t)>=0)){if(g.push(t),e[a])return e[a];P.o(P.S,a)||(P.S[a]={});var i=P.S[a],l="internal.plugin-kuadrant",r=(e,h,a,g)=>{var t=i[e]=i[e]||{},r=t[h];(!r||!r.loaded&&(!g!=!r.eager?g:l>r.from))&&(t[h]={get:a,from:l,eager:!!g})},n=[];return"default"===a&&(r("@backstage/core-plugin-api","1.11.0",()=>Promise.all([P.e(4083),P.e(6272),P.e(5478),P.e(5427),P.e(9634)]).then(()=>()=>P(26272))),r("@backstage/frontend-plugin-api","0.11.0",()=>Promise.all([P.e(4083),P.e(4641),P.e(6972),P.e(5478),P.e(5427),P.e(9634),P.e(2097)]).then(()=>()=>P(46972))),r("@backstage/frontend-plugin-api","0.11.0",()=>Promise.all([P.e(4083),P.e(4641),P.e(7266),P.e(5478),P.e(5427),P.e(9634),P.e(2097)]).then(()=>()=>P(57266))),r("@backstage/frontend-plugin-api","0.11.0",()=>Promise.all([P.e(4083),P.e(4641),P.e(3897),P.e(5478),P.e(5427),P.e(9634),P.e(2097)]).then(()=>()=>P(63897))),r("@backstage/frontend-plugin-api","0.12.0",()=>Promise.all([P.e(4083),P.e(4641),P.e(1037),P.e(5478),P.e(5427),P.e(9634),P.e(2097)]).then(()=>()=>P(61037))),r("@backstage/version-bridge","1.0.11",()=>Promise.all([P.e(5478),P.e(2822)]).then(()=>()=>P(12822))),r("@emotion/cache","11.14.0",()=>P.e(7164).then(()=>()=>P(67164))),r("@emotion/react","11.14.0",()=>Promise.all([P.e(5478),P.e(6322),P.e(3657)]).then(()=>()=>P(53657))),r("@material-ui/core/styles","4.12.4",()=>Promise.all([P.e(9400),P.e(5478),P.e(1942),P.e(4491)]).then(()=>()=>P(64491))),r("@material-ui/styles","4.11.5",()=>Promise.all([P.e(4570),P.e(5478),P.e(3007)]).then(()=>()=>P(94570))),r("@mui/styled-engine","5.18.0",()=>Promise.all([P.e(2952),P.e(5478),P.e(6322),P.e(5277),P.e(635)]).then(()=>()=>P(92952))),r("react-dom","18.3.1",()=>Promise.all([P.e(3144),P.e(5478)]).then(()=>()=>P(43144))),r("react-router-dom","6.30.3",()=>Promise.all([P.e(501),P.e(5478),P.e(484),P.e(9829)]).then(()=>()=>P(62882))),r("react-router","6.30.3",()=>Promise.all([P.e(7367),P.e(5478)]).then(()=>()=>P(97367))),r("react","18.3.1",()=>P.e(4041).then(()=>()=>P(14041)))),e[a]=n.length?Promise.all(n).then(()=>e[a]=1):1}}})(),(()=>{var e;P.g.importScripts&&(e=P.g.location+"");var h=P.g.document;if(!e&&h&&(h.currentScript&&"SCRIPT"===h.currentScript.tagName.toUpperCase()&&(e=h.currentScript.src),!e)){var a=h.getElementsByTagName("script");if(a.length)for(var g=a.length-1;g>-1&&(!e||!/^http(s?):/.test(e));)e=a[g--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),P.p=e})(),t=e=>{var h=e=>e.split(".").map(e=>+e==e?+e:e),a=/^([^-+]+)?(?:-([^+]+))?(?:\+(.+))?$/.exec(e),g=a[1]?h(a[1]):[];return a[2]&&(g.length++,g.push.apply(g,h(a[2]))),a[3]&&(g.push([]),g.push.apply(g,h(a[3]))),g},i=(e,h)=>{e=t(e),h=t(h);for(var a=0;;){if(a>=e.length)return a<h.length&&"u"!=(typeof h[a])[0];var g=e[a],i=(typeof g)[0];if(a>=h.length)return"u"==i;var l=h[a],r=(typeof l)[0];if(i!=r)return"o"==i&&"n"==r||"s"==r||"u"==i;if("o"!=i&&"u"!=i&&g!=l)return g<l;a++}},l=e=>{var h=e[0],a="";if(1===e.length)return"*";if(h+.5){a+=0==h?">=":-1==h?"<":1==h?"^":2==h?"~":h>0?"=":"!=";for(var g=1,t=1;t<e.length;t++)g--,a+="u"==(typeof(r=e[t]))[0]?"-":(g>0?".":"")+(g=2,r);return a}var i=[];for(t=1;t<e.length;t++){var r=e[t];i.push(0===r?"not("+n()+")":1===r?"("+n()+" || "+n()+")":2===r?i.pop()+" "+i.pop():l(r))}return n();function n(){return i.pop().replace(/^\((.+)\)$/,"$1")}},r=(e,h)=>{if(0 in e){h=t(h);var a=e[0],g=a<0;g&&(a=-a-1);for(var i=0,l=1,n=!0;;l++,i++){var s,_,c=l<e.length?(typeof e[l])[0]:"";if(i>=h.length||"o"==(_=(typeof(s=h[i]))[0]))return!n||("u"==c?l>a&&!g:""==c!=g);if("u"==_){if(!n||"u"!=c)return!1}else if(n)if(c==_)if(l<=a){if(s!=e[l])return!1}else{if(g?s>e[l]:s<e[l])return!1;s!=e[l]&&(n=!1)}else if("s"!=c&&"n"!=c){if(g||l<=a)return!1;n=!1,l--}else{if(l<=a||_<c!=g)return!1;n=!1}else"s"!=c&&"n"!=c&&(n=!1,l--)}}var u=[],o=u.pop.bind(u);for(i=1;i<e.length;i++){var f=e[i];u.push(1==f?o()|o():2==f?o()&o():f?r(f,h):!o())}return!!o()},n=(e,h)=>e&&P.o(e,h),s=e=>(e.loaded=1,e.get()),_=e=>Object.keys(e).reduce((h,a)=>(e[a].eager&&(h[a]=e[a]),h),{}),c=(e,h,a)=>{var g=a?_(e[h]):e[h];return Object.keys(g).reduce((e,h)=>!e||!g[e].loaded&&i(e,h)?h:e,0)},u=(e,h,a,g)=>"Unsatisfied version "+a+" from "+(a&&e[h][a].from)+" of shared singleton module "+h+" (required "+l(g)+")",o=e=>{throw new Error(e)},f=e=>{"undefined"!=typeof console&&console.warn&&console.warn(e)},d=(e,h,a)=>a?a():((e,h)=>o("Shared module "+h+" doesn't exist in shared scope "+e))(e,h),y=(e=>function(h,a,g,t,i){var l=P.I(h);return l&&l.then&&!g?l.then(e.bind(e,h,P.S[h],a,!1,t,i)):e(h,P.S[h],a,g,t,i)})((e,h,a,g,t,i)=>{if(!n(h,a))return d(e,a,i);var l=c(h,a,g);return r(t,l)||f(u(h,a,l,t)),s(h[a][l])}),x={},b={95478:()=>y("default","react",!1,[0],()=>P.e(4041).then(()=>()=>P(14041))),15427:()=>y("default","@backstage/version-bridge",!1,[0],()=>P.e(441).then(()=>()=>P(12822))),49634:()=>y("default","react-router-dom",!1,[0],()=>Promise.all([P.e(501),P.e(484),P.e(9829)]).then(()=>()=>P(62882))),40484:()=>y("default","react-dom",!1,[0],()=>P.e(3144).then(()=>()=>P(43144))),11942:()=>y("default","@material-ui/styles",!1,[0],()=>P.e(4570).then(()=>()=>P(94570))),37976:()=>y("default","@material-ui/core/styles",!1,[0],()=>P.e(6872).then(()=>()=>P(64491))),22097:()=>y("default","@backstage/core-plugin-api",!1,[0],()=>Promise.all([P.e(4083),P.e(6272),P.e(5478),P.e(5427),P.e(9634)]).then(()=>()=>P(26272))),79096:()=>y("default","@mui/styled-engine",!1,[0],()=>Promise.all([P.e(2952),P.e(6322),P.e(5277)]).then(()=>()=>P(92952))),76322:()=>y("default","@emotion/cache",!1,[0],()=>P.e(7164).then(()=>()=>P(67164))),5277:()=>y("default","@emotion/react",!1,[0],()=>P.e(6038).then(()=>()=>P(53657))),9829:()=>y("default","react-router",!1,[0],()=>P.e(7367).then(()=>()=>P(97367)))},p={484:[40484],1942:[11942],2097:[22097],5277:[5277],5427:[15427],5478:[95478],6322:[76322],7976:[37976],9096:[79096],9634:[49634],9829:[9829]},m={},P.f.consumes=(e,h)=>{P.o(p,e)&&p[e].forEach(e=>{if(P.o(x,e))return h.push(x[e]);if(!m[e]){var a=h=>{x[e]=0,P.m[e]=a=>{delete P.c[e],a.exports=h()}};m[e]=!0;var g=h=>{delete x[e],P.m[e]=a=>{throw delete P.c[e],h}};try{var t=b[e]();t.then?h.push(x[e]=t.then(a).catch(g)):a(t)}catch(e){g(e)}}})},(()=>{if("undefined"!=typeof document){var e={2310:0};P.f.miniCss=(h,a)=>{e[h]?a.push(e[h]):0!==e[h]&&{6386:1}[h]&&a.push(e[h]=(e=>new Promise((h,a)=>{var g=P.miniCssF(e),t=P.p+g;if(((e,h)=>{for(var a=document.getElementsByTagName("link"),g=0;g<a.length;g++){var t=(l=a[g]).getAttribute("data-href")||l.getAttribute("href");if("stylesheet"===l.rel&&(t===e||t===h))return l}var i=document.getElementsByTagName("style");for(g=0;g<i.length;g++){var l;if((t=(l=i[g]).getAttribute("data-href"))===e||t===h)return l}})(g,t))return h();((e,h,a,g,t)=>{var i=document.createElement("link");i.rel="stylesheet",i.type="text/css",i.onerror=i.onload=a=>{if(i.onerror=i.onload=null,"load"===a.type)g();else{var l=a&&a.type,r=a&&a.target&&a.target.href||h,n=new Error("Loading CSS chunk "+e+" failed.\n("+l+": "+r+")");n.name="ChunkLoadError",n.code="CSS_CHUNK_LOAD_FAILED",n.type=l,n.request=r,i.parentNode&&i.parentNode.removeChild(i),t(n)}},i.href=h,function(e){const h=document.head,a=h.querySelector("style[data-jss]");a?h.insertBefore(e,a):h.appendChild(e)}(i)})(e,t,0,h,a)}))(h).then(()=>{e[h]=0},a=>{throw delete e[h],a}))}}})(),(()=>{var e={2310:0};P.f.j=(h,a)=>{var g=P.o(e,h)?e[h]:void 0;if(0!==g)if(g)a.push(g[2]);else if(/^(5(277|427|478)|9(096|634|829)|1942|2097|484|6322|7976)$/.test(h))e[h]=0;else{var t=new Promise((a,t)=>g=e[h]=[a,t]);a.push(g[2]=t);var i=P.p+P.u(h),l=new Error;P.l(i,a=>{if(P.o(e,h)&&(0!==(g=e[h])&&(e[h]=void 0),g)){var t=a&&("load"===a.type?"missing":a.type),i=a&&a.target&&a.target.src;l.message="Loading chunk "+h+" failed.\n("+t+": "+i+")",l.name="ChunkLoadError",l.type=t,l.request=i,g[1](l)}},"chunk-"+h,h)}};var h=(h,a)=>{var g,t,[i,l,r]=a,n=0;if(i.some(h=>0!==e[h])){for(g in l)P.o(l,g)&&(P.m[g]=l[g]);r&&r(P)}for(h&&h(a);n<i.length;n++)t=i[n],P.o(e,t)&&e[t]&&e[t][0](),e[t]=0},a=self.webpackChunkinternal_plugin_kuadrant=self.webpackChunkinternal_plugin_kuadrant||[];a.forEach(h.bind(null,0)),a.push=h.bind(null,a.push.bind(a))})(),P(64344)})());
2
- //# sourceMappingURL=internal.plugin-kuadrant.c4fb9c2347d3ad03a5d0.js.map