@kuadrant/kuadrant-backstage-plugin-frontend 0.0.2-dev-d4f65ae → 0.0.2-dev-71a2ca1

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.
@@ -128,8 +128,13 @@ const ApprovalQueueCard = () => {
128
128
  return { pending: [], approved: [], rejected: [], reviewedBy, ownedApiProducts: /* @__PURE__ */ new Set() };
129
129
  }
130
130
  const contentType = requestsResponse.headers.get("content-type");
131
- if (!contentType || !contentType.includes("application/json")) {
132
- console.log("ApprovalQueueCard: received non-json response");
131
+ if (!contentType?.includes("application/json")) {
132
+ console.error("ApprovalQueueCard: received non-json response");
133
+ alertApi.post({
134
+ message: "Unexpected content-type from the server response. Please contact support.",
135
+ display: "transient",
136
+ severity: "warning"
137
+ });
133
138
  return { pending: [], approved: [], rejected: [], reviewedBy, ownedApiProducts: /* @__PURE__ */ new Set() };
134
139
  }
135
140
  const data = await requestsResponse.json();
@@ -1 +1 @@
1
- {"version":3,"file":"ApprovalQueueCard.esm.js","sources":["../../../src/components/ApprovalQueueCard/ApprovalQueueCard.tsx"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport { useApi, fetchApiRef, identityApiRef, configApiRef, alertApiRef } from '@backstage/core-plugin-api';\nimport { useAsync } from 'react-use';\nimport {\n Table,\n TableColumn,\n Progress,\n ResponseErrorPanel,\n InfoCard,\n} from '@backstage/core-components';\nimport { kuadrantApiKeyRequestUpdateAllPermission, kuadrantApiKeyRequestUpdateOwnPermission } from '../../permissions';\nimport { useKuadrantPermission } from '../../utils/permissions';\nimport {\n Button,\n Dialog,\n DialogTitle,\n DialogContent,\n DialogActions,\n TextField,\n Chip,\n Typography,\n Box,\n Tabs,\n Tab,\n Tooltip,\n Accordion,\n AccordionSummary,\n AccordionDetails,\n CircularProgress,\n} from '@material-ui/core';\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\nimport CancelIcon from '@material-ui/icons/Cancel';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport { APIKeyRequest } from '../../types/api-management';\n\ninterface ApprovalDialogProps {\n open: boolean;\n request: APIKeyRequest | null;\n action: 'approve' | 'reject';\n processing: boolean;\n onClose: () => void;\n onConfirm: (comment: string) => void;\n}\n\nconst ApprovalDialog = ({ open, request, action, processing, onClose, onConfirm }: ApprovalDialogProps) => {\n const [comment, setComment] = useState('');\n\n // reset comment when dialog closes\n useEffect(() => {\n if (!open) {\n setComment('');\n }\n }, [open]);\n\n const handleConfirm = () => {\n onConfirm(comment);\n };\n\n const actionLabel = action === 'approve' ? 'Approve' : 'Reject';\n const processingLabel = action === 'approve' ? 'Approving...' : 'Rejecting...';\n\n return (\n <Dialog open={open} onClose={processing ? undefined : onClose} maxWidth=\"sm\" fullWidth>\n <DialogTitle>\n {actionLabel} API Key Request\n </DialogTitle>\n <DialogContent>\n {request && (\n <>\n <p><strong>User:</strong> {request.spec.requestedBy.userId}</p>\n <p><strong>API:</strong> {request.spec.apiName}</p>\n <p><strong>Tier:</strong> {request.spec.planTier}</p>\n <Box mb={2}>\n <Typography variant=\"body2\" component=\"span\" style={{ fontWeight: 'bold' }}>\n Use Case:\n </Typography>\n {' '}\n <Typography variant=\"body2\" component=\"span\" style={{ whiteSpace: 'pre-wrap' }}>\n {request.spec.useCase || '-'}\n </Typography>\n </Box>\n <TextField\n label=\"Comment (optional)\"\n multiline\n rows={3}\n fullWidth\n margin=\"normal\"\n value={comment}\n onChange={(e) => setComment(e.target.value)}\n disabled={processing}\n />\n </>\n )}\n </DialogContent>\n <DialogActions>\n <Button onClick={onClose} disabled={processing}>Cancel</Button>\n <Button\n onClick={handleConfirm}\n color={action === 'approve' ? 'primary' : 'secondary'}\n variant=\"contained\"\n disabled={processing}\n startIcon={processing ? <CircularProgress size={16} color=\"inherit\" /> : undefined}\n >\n {processing ? processingLabel : actionLabel}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n\ninterface BulkActionDialogProps {\n open: boolean;\n requests: APIKeyRequest[];\n action: 'approve' | 'reject';\n processing: boolean;\n onClose: () => void;\n onConfirm: (comment: string) => void;\n}\n\nconst BulkActionDialog = ({ open, requests, action, processing, onClose, onConfirm }: BulkActionDialogProps) => {\n const [comment, setComment] = useState('');\n\n // reset comment when dialog closes\n useEffect(() => {\n if (!open) {\n setComment('');\n }\n }, [open]);\n\n const handleConfirm = () => {\n onConfirm(comment);\n };\n\n const isApprove = action === 'approve';\n const actionLabel = isApprove ? 'Approve All' : 'Reject All';\n const processingLabel = isApprove ? 'Approving...' : 'Rejecting...';\n\n return (\n <Dialog open={open} onClose={processing ? undefined : onClose} maxWidth=\"md\" fullWidth>\n <DialogTitle>\n {isApprove ? 'Approve' : 'Reject'} {requests.length} API Key Requests\n </DialogTitle>\n <DialogContent>\n <Typography variant=\"body2\" paragraph>\n You are about to {isApprove ? 'approve' : 'reject'} the following requests:\n </Typography>\n <Box mb={2} maxHeight={200} overflow=\"auto\">\n {requests.map(request => (\n <Box key={`${request.metadata.namespace}/${request.metadata.name}`} mb={1} p={1} bgcolor=\"background.default\">\n <Typography variant=\"body2\">\n <strong>{request.spec.requestedBy.userId}</strong> - {request.spec.apiName} ({request.spec.planTier})\n </Typography>\n </Box>\n ))}\n </Box>\n <TextField\n label=\"Comment (optional)\"\n multiline\n fullWidth\n margin=\"normal\"\n value={comment}\n onChange={(e) => setComment(e.target.value)}\n helperText={`This comment will be applied to all ${isApprove ? 'approved' : 'rejected'} requests`}\n disabled={processing}\n />\n </DialogContent>\n <DialogActions>\n <Button onClick={onClose} disabled={processing}>Cancel</Button>\n <Button\n onClick={handleConfirm}\n color={isApprove ? 'primary' : 'secondary'}\n variant=\"contained\"\n disabled={processing}\n startIcon={processing ? <CircularProgress size={16} color=\"inherit\" /> : undefined}\n >\n {processing ? processingLabel : actionLabel}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n\nexport const ApprovalQueueCard = () => {\n const config = useApi(configApiRef);\n const fetchApi = useApi(fetchApiRef);\n const identityApi = useApi(identityApiRef);\n const alertApi = useApi(alertApiRef);\n const backendUrl = config.getString('backend.baseUrl');\n const [refresh, setRefresh] = useState(0);\n const [selectedTab, setSelectedTab] = useState(0);\n const [selectedRequests, setSelectedRequests] = useState<APIKeyRequest[]>([]);\n const [dialogState, setDialogState] = useState<{\n open: boolean;\n request: APIKeyRequest | null;\n action: 'approve' | 'reject';\n processing: boolean;\n }>({\n open: false,\n request: null,\n action: 'approve',\n processing: false,\n });\n const [bulkDialogState, setBulkDialogState] = useState<{\n open: boolean;\n requests: APIKeyRequest[];\n action: 'approve' | 'reject';\n processing: boolean;\n }>({\n open: false,\n requests: [],\n action: 'approve',\n processing: false,\n });\n\n const {\n allowed: canUpdateAllRequests,\n loading: updateAllPermissionLoading,\n error: updateAllPermissionError,\n } = useKuadrantPermission(kuadrantApiKeyRequestUpdateAllPermission);\n\n const {\n allowed: canUpdateOwnRequests,\n loading: updateOwnPermissionLoading,\n error: updateOwnPermissionError,\n } = useKuadrantPermission(kuadrantApiKeyRequestUpdateOwnPermission);\n\n const updatePermissionLoading = updateAllPermissionLoading || updateOwnPermissionLoading;\n const updatePermissionError = updateAllPermissionError || updateOwnPermissionError;\n\n const { value, loading, error } = useAsync(async () => {\n const identity = await identityApi.getBackstageIdentity();\n const reviewedBy = identity.userEntityRef;\n\n console.log('ApprovalQueueCard: fetching all requests from', `${backendUrl}/api/kuadrant/requests`);\n\n // fetch requests and api products in parallel\n const [requestsResponse, apiProductsResponse] = await Promise.all([\n fetchApi.fetch(`${backendUrl}/api/kuadrant/requests`),\n fetchApi.fetch(`${backendUrl}/api/kuadrant/apiproducts`),\n ]);\n\n if (!requestsResponse.ok) {\n console.log('ApprovalQueueCard: failed to fetch requests, status:', requestsResponse.status);\n return { pending: [] as APIKeyRequest[], approved: [] as APIKeyRequest[], rejected: [] as APIKeyRequest[], reviewedBy, ownedApiProducts: new Set<string>() };\n }\n\n // check content-type before parsing json\n const contentType = requestsResponse.headers.get('content-type');\n if (!contentType || !contentType.includes('application/json')) {\n console.log('ApprovalQueueCard: received non-json response');\n return { pending: [] as APIKeyRequest[], approved: [] as APIKeyRequest[], rejected: [] as APIKeyRequest[], reviewedBy, ownedApiProducts: new Set<string>() };\n }\n\n const data = await requestsResponse.json();\n const allRequests = data.items || [];\n\n // build set of api products owned by current user\n const ownedApiProducts = new Set<string>();\n if (apiProductsResponse.ok) {\n const apiProductsData = await apiProductsResponse.json();\n for (const product of apiProductsData.items || []) {\n const owner = product.metadata?.annotations?.['backstage.io/owner'];\n if (owner === reviewedBy) {\n // key is namespace/name to match against request's apiNamespace/apiName\n ownedApiProducts.add(`${product.metadata.namespace}/${product.metadata.name}`);\n }\n }\n }\n\n console.log('ApprovalQueueCard: received', allRequests.length, 'total requests');\n console.log('ApprovalQueueCard: user owns', ownedApiProducts.size, 'api products');\n\n // group by status (field is 'phase' not 'status')\n const pending = allRequests.filter((r: APIKeyRequest) => {\n const phase = (r.status as any)?.phase || 'Pending';\n return phase === 'Pending';\n });\n const approved = allRequests.filter((r: APIKeyRequest) => {\n const phase = (r.status as any)?.phase;\n return phase === 'Approved';\n });\n const rejected = allRequests.filter((r: APIKeyRequest) => {\n const phase = (r.status as any)?.phase;\n return phase === 'Rejected';\n });\n\n console.log('ApprovalQueueCard: grouped -', {\n pending: pending.length,\n approved: approved.length,\n rejected: rejected.length,\n });\n\n return { pending, approved, rejected, reviewedBy, ownedApiProducts };\n }, [backendUrl, fetchApi, identityApi, refresh]);\n\n const handleApprove = (request: APIKeyRequest) => {\n setDialogState({ open: true, request, action: 'approve', processing: false });\n };\n\n const handleReject = (request: APIKeyRequest) => {\n setDialogState({ open: true, request, action: 'reject', processing: false });\n };\n\n const handleConfirm = async (comment: string) => {\n if (!dialogState.request || !value) return;\n\n setDialogState(prev => ({ ...prev, processing: true }));\n\n const endpoint = dialogState.action === 'approve'\n ? `${backendUrl}/api/kuadrant/requests/${dialogState.request.metadata.namespace}/${dialogState.request.metadata.name}/approve`\n : `${backendUrl}/api/kuadrant/requests/${dialogState.request.metadata.namespace}/${dialogState.request.metadata.name}/reject`;\n\n try {\n const response = await fetchApi.fetch(endpoint, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n comment,\n reviewedBy: value.reviewedBy,\n }),\n });\n\n if (!response.ok) {\n throw new Error(`failed to ${dialogState.action} request`);\n }\n\n setDialogState({ open: false, request: null, action: 'approve', processing: false });\n setRefresh(r => r + 1);\n const action = dialogState.action === 'approve' ? 'approved' : 'rejected';\n alertApi.post({ message: `Request ${action}`, severity: 'success', display: 'transient' });\n } catch (err) {\n console.error(`error ${dialogState.action}ing request:`, err);\n setDialogState(prev => ({ ...prev, processing: false }));\n alertApi.post({ message: `Failed to ${dialogState.action} request`, severity: 'error', display: 'transient' });\n }\n };\n\n const handleBulkApprove = () => {\n if (selectedRequests.length === 0) return;\n setBulkDialogState({ open: true, requests: selectedRequests, action: 'approve', processing: false });\n };\n\n const handleBulkReject = () => {\n if (selectedRequests.length === 0) return;\n setBulkDialogState({ open: true, requests: selectedRequests, action: 'reject', processing: false });\n };\n\n const handleBulkConfirm = async (comment: string) => {\n if (!value || bulkDialogState.requests.length === 0) return;\n\n setBulkDialogState(prev => ({ ...prev, processing: true }));\n\n const isApprove = bulkDialogState.action === 'approve';\n const endpoint = isApprove\n ? `${backendUrl}/api/kuadrant/requests/bulk-approve`\n : `${backendUrl}/api/kuadrant/requests/bulk-reject`;\n\n try {\n const response = await fetchApi.fetch(endpoint, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n requests: bulkDialogState.requests.map(r => ({\n namespace: r.metadata.namespace,\n name: r.metadata.name,\n })),\n comment,\n reviewedBy: value.reviewedBy,\n }),\n });\n\n if (!response.ok) {\n throw new Error(`failed to bulk ${bulkDialogState.action} requests`);\n }\n\n const count = bulkDialogState.requests.length;\n const action = isApprove ? 'approved' : 'rejected';\n setBulkDialogState({ open: false, requests: [], action: 'approve', processing: false });\n setSelectedRequests([]);\n setRefresh(r => r + 1);\n alertApi.post({ message: `${count} requests ${action}`, severity: 'success', display: 'transient' });\n } catch (err) {\n console.error(`error bulk ${bulkDialogState.action}ing requests:`, err);\n setBulkDialogState(prev => ({ ...prev, processing: false }));\n alertApi.post({ message: `Failed to bulk ${bulkDialogState.action} requests`, severity: 'error', display: 'transient' });\n }\n };\n\n if (loading || updatePermissionLoading) {\n return <Progress />;\n }\n\n if (error) {\n return <ResponseErrorPanel error={error} />;\n }\n\n if (updatePermissionError) {\n return (\n <Box p={2}>\n <Typography color=\"error\">\n Unable to check permissions: {updatePermissionError.message}\n </Typography>\n <Typography variant=\"body2\" color=\"textSecondary\">\n Permission: kuadrant.apikeyrequest.update.all\n </Typography>\n <Typography variant=\"body2\" color=\"textSecondary\">\n Please try again or contact your administrator\n </Typography>\n </Box>\n );\n }\n\n const pending = value?.pending || [];\n const approved = value?.approved || [];\n const rejected = value?.rejected || [];\n\n const formatDate = (dateString: string) => {\n const date = new Date(dateString);\n return date.toLocaleDateString('en-GB', {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n hour: '2-digit',\n minute: '2-digit',\n });\n };\n\n const pendingColumns: TableColumn<APIKeyRequest>[] = [\n {\n title: 'Request Name',\n field: 'metadata.name',\n render: (row) => <Typography variant=\"body2\">{row.metadata.name}</Typography>,\n },\n {\n title: 'User',\n field: 'spec.requestedBy.userId',\n render: (row) => <Typography variant=\"body2\">{row.spec.requestedBy.userId}</Typography>,\n },\n {\n title: 'API',\n field: 'spec.apiName',\n render: (row) => <Typography variant=\"body2\"><strong>{row.spec.apiName}</strong></Typography>,\n },\n {\n title: 'Namespace',\n field: 'spec.apiNamespace',\n render: (row) => <Typography variant=\"body2\">{row.spec.apiNamespace}</Typography>,\n },\n {\n title: 'Tier',\n field: 'spec.planTier',\n render: (row) => (\n <Chip\n label={row.spec.planTier}\n size=\"small\"\n />\n ),\n },\n {\n title: 'Use Case',\n field: 'spec.useCase',\n render: (row) => {\n if (!row.spec.useCase) {\n return <Typography variant=\"body2\">-</Typography>;\n }\n return (\n <Tooltip title={row.spec.useCase} placement=\"top\">\n <Typography\n variant=\"body2\"\n style={{\n maxWidth: '200px',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }}\n >\n {row.spec.useCase}\n </Typography>\n </Tooltip>\n );\n },\n },\n {\n title: 'Requested',\n field: 'spec.requestedAt',\n render: (row) => (\n <Typography variant=\"body2\">\n {row.spec.requestedAt ? formatDate(row.spec.requestedAt) : '-'}\n </Typography>\n ),\n },\n {\n title: 'Actions',\n filtering: false,\n render: (row) => {\n const apiProductKey = `${row.spec.apiNamespace}/${row.spec.apiName}`;\n const ownsApiProduct = value?.ownedApiProducts?.has(apiProductKey) ?? false;\n const canUpdate = canUpdateAllRequests || (canUpdateOwnRequests && ownsApiProduct);\n if (!canUpdate) return null;\n return (\n <Box display=\"flex\" style={{ gap: 8 }}>\n <Button\n size=\"small\"\n startIcon={<CheckCircleIcon />}\n onClick={() => handleApprove(row)}\n color=\"primary\"\n variant=\"outlined\"\n >\n Approve\n </Button>\n <Button\n size=\"small\"\n startIcon={<CancelIcon />}\n onClick={() => handleReject(row)}\n color=\"secondary\"\n variant=\"outlined\"\n >\n Reject\n </Button>\n </Box>\n );\n },\n },\n ];\n\n const approvedColumns: TableColumn<APIKeyRequest>[] = [\n {\n title: 'Request Name',\n field: 'metadata.name',\n render: (row) => <Typography variant=\"body2\">{row.metadata.name}</Typography>,\n },\n {\n title: 'User',\n field: 'spec.requestedBy.userId',\n render: (row) => <Typography variant=\"body2\">{row.spec.requestedBy.userId}</Typography>,\n },\n {\n title: 'API',\n field: 'spec.apiName',\n render: (row) => <Typography variant=\"body2\"><strong>{row.spec.apiName}</strong></Typography>,\n },\n {\n title: 'Namespace',\n field: 'spec.apiNamespace',\n render: (row) => <Typography variant=\"body2\">{row.spec.apiNamespace}</Typography>,\n },\n {\n title: 'Tier',\n field: 'spec.planTier',\n render: (row) => (\n <Chip\n label={row.spec.planTier}\n size=\"small\"\n />\n ),\n },\n {\n title: 'Requested',\n field: 'spec.requestedAt',\n render: (row) => (\n <Typography variant=\"body2\">\n {row.spec.requestedAt ? formatDate(row.spec.requestedAt) : '-'}\n </Typography>\n ),\n },\n {\n title: 'Approved',\n field: 'status.reviewedAt',\n render: (row) => (\n <Typography variant=\"body2\">\n {row.status?.reviewedAt ? formatDate(row.status.reviewedAt) : '-'}\n </Typography>\n ),\n },\n {\n title: 'Reviewed By',\n field: 'status.reviewedBy',\n render: (row) => (\n <Typography variant=\"body2\">\n {row.status?.reviewedBy || '-'}\n </Typography>\n ),\n },\n {\n title: 'Approval Type',\n field: 'status.reviewedBy',\n render: (row) => {\n const isAutomatic = row.status?.reviewedBy === 'system';\n return (\n <Chip\n label={isAutomatic ? 'Automatic' : 'Manual'}\n size=\"small\"\n color={isAutomatic ? 'default' : 'primary'}\n />\n );\n },\n },\n ];\n\n const rejectedColumns: TableColumn<APIKeyRequest>[] = [\n {\n title: 'Request Name',\n field: 'metadata.name',\n render: (row) => <Typography variant=\"body2\">{row.metadata.name}</Typography>,\n },\n {\n title: 'User',\n field: 'spec.requestedBy.userId',\n render: (row) => <Typography variant=\"body2\">{row.spec.requestedBy.userId}</Typography>,\n },\n {\n title: 'API',\n field: 'spec.apiName',\n render: (row) => <Typography variant=\"body2\"><strong>{row.spec.apiName}</strong></Typography>,\n },\n {\n title: 'Namespace',\n field: 'spec.apiNamespace',\n render: (row) => <Typography variant=\"body2\">{row.spec.apiNamespace}</Typography>,\n },\n {\n title: 'Tier',\n field: 'spec.planTier',\n render: (row) => (\n <Chip\n label={row.spec.planTier}\n size=\"small\"\n />\n ),\n },\n {\n title: 'Requested',\n field: 'spec.requestedAt',\n render: (row) => (\n <Typography variant=\"body2\">\n {row.spec.requestedAt ? formatDate(row.spec.requestedAt) : '-'}\n </Typography>\n ),\n },\n {\n title: 'Rejected',\n field: 'status.reviewedAt',\n render: (row) => (\n <Typography variant=\"body2\">\n {row.status?.reviewedAt ? formatDate(row.status.reviewedAt) : '-'}\n </Typography>\n ),\n },\n {\n title: 'Reviewed By',\n field: 'status.reviewedBy',\n render: (row) => (\n <Typography variant=\"body2\">\n {row.status?.reviewedBy || '-'}\n </Typography>\n ),\n },\n {\n title: 'Reason',\n field: 'status.reason',\n render: (row) => {\n if (!row.status?.reason) {\n return <Typography variant=\"body2\">-</Typography>;\n }\n return (\n <Tooltip title={row.status.reason} placement=\"top\">\n <Typography\n variant=\"body2\"\n style={{\n maxWidth: '200px',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }}\n >\n {row.status.reason}\n </Typography>\n </Tooltip>\n );\n },\n },\n ];\n\n const getTabData = () => {\n const addIds = (data: APIKeyRequest[]) =>\n data.map(item => ({ ...item, id: item.metadata.name }));\n\n switch (selectedTab) {\n case 0:\n return { data: addIds(approved), columns: approvedColumns, showSelection: false };\n case 1:\n // Add tableData.checked to control checkbox state\n const pendingWithSelection = pending.map((row: APIKeyRequest) => {\n const isSelected = selectedRequests.some(\n selected => selected.metadata.name === row.metadata.name &&\n selected.metadata.namespace === row.metadata.namespace\n );\n return {\n ...row,\n tableData: { checked: isSelected },\n };\n });\n return { data: pendingWithSelection, columns: pendingColumns, showSelection: true };\n case 2:\n return { data: addIds(rejected), columns: rejectedColumns, showSelection: false };\n default:\n return { data: addIds(approved), columns: approvedColumns, showSelection: false };\n }\n };\n\n const tabData = getTabData();\n\n // group requests by api product (namespace/name)\n const groupByApiProduct = (requests: APIKeyRequest[]) => {\n const grouped = new Map<string, APIKeyRequest[]>();\n requests.forEach(request => {\n const key = `${request.spec.apiNamespace}/${request.spec.apiName}`;\n if (!grouped.has(key)) {\n grouped.set(key, []);\n }\n grouped.get(key)!.push(request);\n });\n return grouped;\n };\n\n const groupedData = groupByApiProduct(tabData.data);\n const apiProductKeys = Array.from(groupedData.keys()).sort();\n\n return (\n <>\n <InfoCard\n title=\"API Access Requests\"\n subheader={`${pending.length} pending, ${approved.length} approved, ${rejected.length} rejected`}\n >\n <Box mb={2}>\n <Tabs\n value={selectedTab}\n onChange={(_, newValue) => {\n setSelectedTab(newValue);\n setSelectedRequests([]);\n }}\n indicatorColor=\"primary\"\n textColor=\"primary\"\n >\n <Tab label={`Approved (${approved.length})`} />\n <Tab label={`Pending (${pending.length})`} />\n <Tab label={`Rejected (${rejected.length})`} />\n </Tabs>\n </Box>\n\n {selectedTab === 1 && selectedRequests.length > 0 && (\n <Box mb={2} display=\"flex\" alignItems=\"center\" justifyContent=\"space-between\" p={2} bgcolor=\"background.default\">\n <Typography variant=\"body2\">\n {selectedRequests.length} request{selectedRequests.length !== 1 ? 's' : ''} selected\n </Typography>\n <Box display=\"flex\" style={{ gap: 8 }}>\n <Button\n size=\"small\"\n variant=\"contained\"\n color=\"primary\"\n startIcon={<CheckCircleIcon />}\n onClick={handleBulkApprove}\n >\n Approve Selected\n </Button>\n <Button\n size=\"small\"\n variant=\"contained\"\n color=\"secondary\"\n startIcon={<CancelIcon />}\n onClick={handleBulkReject}\n >\n Reject Selected\n </Button>\n </Box>\n </Box>\n )}\n\n {tabData.data.length === 0 ? (\n <Box p={3} textAlign=\"center\">\n <Typography variant=\"body1\" color=\"textSecondary\">\n {selectedTab === 0 && 'No approved requests.'}\n {selectedTab === 1 && 'No pending requests.'}\n {selectedTab === 2 && 'No rejected requests.'}\n </Typography>\n </Box>\n ) : (\n <Box>\n {apiProductKeys.map(apiProductKey => {\n const requests = groupedData.get(apiProductKey) || [];\n const displayName = requests[0]?.spec.apiName || apiProductKey;\n const ownsThisApiProduct = value?.ownedApiProducts?.has(apiProductKey) ?? false;\n const canSelectRows = canUpdateAllRequests || (canUpdateOwnRequests && ownsThisApiProduct);\n return (\n <Accordion key={apiProductKey} defaultExpanded={apiProductKeys.length === 1}>\n <AccordionSummary expandIcon={<ExpandMoreIcon />}>\n <Box display=\"flex\" alignItems=\"center\" justifyContent=\"space-between\" width=\"100%\">\n <Typography variant=\"h6\">{displayName}</Typography>\n <Chip\n label={`${requests.length} request${requests.length !== 1 ? 's' : ''}`}\n size=\"small\"\n color=\"primary\"\n style={{ marginRight: 16 }}\n />\n </Box>\n </AccordionSummary>\n <AccordionDetails>\n <Box width=\"100%\">\n <Table\n options={{\n selection: canSelectRows && tabData.showSelection,\n paging: requests.length > 5,\n pageSize: 20,\n search: true,\n filtering: true,\n debounceInterval: 300,\n showTextRowsSelected: false,\n toolbar: true,\n emptyRowsWhenPaging: false,\n }}\n data={requests}\n columns={tabData.columns}\n onSelectionChange={(rows) => {\n // merge selections from this api product with selections from other products\n const otherSelections = selectedRequests.filter(\n r => `${r.spec.apiNamespace}/${r.spec.apiName}` !== apiProductKey\n );\n setSelectedRequests([...otherSelections, ...(rows as APIKeyRequest[])]);\n }}\n />\n </Box>\n </AccordionDetails>\n </Accordion>\n );\n })}\n </Box>\n )}\n </InfoCard>\n <ApprovalDialog\n open={dialogState.open}\n request={dialogState.request}\n action={dialogState.action}\n processing={dialogState.processing}\n onClose={() => setDialogState({ open: false, request: null, action: 'approve', processing: false })}\n onConfirm={handleConfirm}\n />\n <BulkActionDialog\n open={bulkDialogState.open}\n requests={bulkDialogState.requests}\n action={bulkDialogState.action}\n processing={bulkDialogState.processing}\n onClose={() => setBulkDialogState({ open: false, requests: [], action: 'approve', processing: false })}\n onConfirm={handleBulkConfirm}\n />\n </>\n );\n};\n"],"names":["pending","approved","rejected"],"mappings":"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"}
1
+ {"version":3,"file":"ApprovalQueueCard.esm.js","sources":["../../../src/components/ApprovalQueueCard/ApprovalQueueCard.tsx"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport { useApi, fetchApiRef, identityApiRef, configApiRef, alertApiRef } from '@backstage/core-plugin-api';\nimport { useAsync } from 'react-use';\nimport {\n Table,\n TableColumn,\n Progress,\n ResponseErrorPanel,\n InfoCard,\n} from '@backstage/core-components';\nimport { kuadrantApiKeyRequestUpdateAllPermission, kuadrantApiKeyRequestUpdateOwnPermission } from '../../permissions';\nimport { useKuadrantPermission } from '../../utils/permissions';\nimport {\n Button,\n Dialog,\n DialogTitle,\n DialogContent,\n DialogActions,\n TextField,\n Chip,\n Typography,\n Box,\n Tabs,\n Tab,\n Tooltip,\n Accordion,\n AccordionSummary,\n AccordionDetails,\n CircularProgress,\n} from '@material-ui/core';\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\nimport CancelIcon from '@material-ui/icons/Cancel';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport { APIKeyRequest } from '../../types/api-management';\n\ninterface ApprovalDialogProps {\n open: boolean;\n request: APIKeyRequest | null;\n action: 'approve' | 'reject';\n processing: boolean;\n onClose: () => void;\n onConfirm: (comment: string) => void;\n}\n\nconst ApprovalDialog = ({ open, request, action, processing, onClose, onConfirm }: ApprovalDialogProps) => {\n const [comment, setComment] = useState('');\n\n // reset comment when dialog closes\n useEffect(() => {\n if (!open) {\n setComment('');\n }\n }, [open]);\n\n const handleConfirm = () => {\n onConfirm(comment);\n };\n\n const actionLabel = action === 'approve' ? 'Approve' : 'Reject';\n const processingLabel = action === 'approve' ? 'Approving...' : 'Rejecting...';\n\n return (\n <Dialog open={open} onClose={processing ? undefined : onClose} maxWidth=\"sm\" fullWidth>\n <DialogTitle>\n {actionLabel} API Key Request\n </DialogTitle>\n <DialogContent>\n {request && (\n <>\n <p><strong>User:</strong> {request.spec.requestedBy.userId}</p>\n <p><strong>API:</strong> {request.spec.apiName}</p>\n <p><strong>Tier:</strong> {request.spec.planTier}</p>\n <Box mb={2}>\n <Typography variant=\"body2\" component=\"span\" style={{ fontWeight: 'bold' }}>\n Use Case:\n </Typography>\n {' '}\n <Typography variant=\"body2\" component=\"span\" style={{ whiteSpace: 'pre-wrap' }}>\n {request.spec.useCase || '-'}\n </Typography>\n </Box>\n <TextField\n label=\"Comment (optional)\"\n multiline\n rows={3}\n fullWidth\n margin=\"normal\"\n value={comment}\n onChange={(e) => setComment(e.target.value)}\n disabled={processing}\n />\n </>\n )}\n </DialogContent>\n <DialogActions>\n <Button onClick={onClose} disabled={processing}>Cancel</Button>\n <Button\n onClick={handleConfirm}\n color={action === 'approve' ? 'primary' : 'secondary'}\n variant=\"contained\"\n disabled={processing}\n startIcon={processing ? <CircularProgress size={16} color=\"inherit\" /> : undefined}\n >\n {processing ? processingLabel : actionLabel}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n\ninterface BulkActionDialogProps {\n open: boolean;\n requests: APIKeyRequest[];\n action: 'approve' | 'reject';\n processing: boolean;\n onClose: () => void;\n onConfirm: (comment: string) => void;\n}\n\nconst BulkActionDialog = ({ open, requests, action, processing, onClose, onConfirm }: BulkActionDialogProps) => {\n const [comment, setComment] = useState('');\n\n // reset comment when dialog closes\n useEffect(() => {\n if (!open) {\n setComment('');\n }\n }, [open]);\n\n const handleConfirm = () => {\n onConfirm(comment);\n };\n\n const isApprove = action === 'approve';\n const actionLabel = isApprove ? 'Approve All' : 'Reject All';\n const processingLabel = isApprove ? 'Approving...' : 'Rejecting...';\n\n return (\n <Dialog open={open} onClose={processing ? undefined : onClose} maxWidth=\"md\" fullWidth>\n <DialogTitle>\n {isApprove ? 'Approve' : 'Reject'} {requests.length} API Key Requests\n </DialogTitle>\n <DialogContent>\n <Typography variant=\"body2\" paragraph>\n You are about to {isApprove ? 'approve' : 'reject'} the following requests:\n </Typography>\n <Box mb={2} maxHeight={200} overflow=\"auto\">\n {requests.map(request => (\n <Box key={`${request.metadata.namespace}/${request.metadata.name}`} mb={1} p={1} bgcolor=\"background.default\">\n <Typography variant=\"body2\">\n <strong>{request.spec.requestedBy.userId}</strong> - {request.spec.apiName} ({request.spec.planTier})\n </Typography>\n </Box>\n ))}\n </Box>\n <TextField\n label=\"Comment (optional)\"\n multiline\n fullWidth\n margin=\"normal\"\n value={comment}\n onChange={(e) => setComment(e.target.value)}\n helperText={`This comment will be applied to all ${isApprove ? 'approved' : 'rejected'} requests`}\n disabled={processing}\n />\n </DialogContent>\n <DialogActions>\n <Button onClick={onClose} disabled={processing}>Cancel</Button>\n <Button\n onClick={handleConfirm}\n color={isApprove ? 'primary' : 'secondary'}\n variant=\"contained\"\n disabled={processing}\n startIcon={processing ? <CircularProgress size={16} color=\"inherit\" /> : undefined}\n >\n {processing ? processingLabel : actionLabel}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n\nexport const ApprovalQueueCard = () => {\n const config = useApi(configApiRef);\n const fetchApi = useApi(fetchApiRef);\n const identityApi = useApi(identityApiRef);\n const alertApi = useApi(alertApiRef);\n const backendUrl = config.getString('backend.baseUrl');\n const [refresh, setRefresh] = useState(0);\n const [selectedTab, setSelectedTab] = useState(0);\n const [selectedRequests, setSelectedRequests] = useState<APIKeyRequest[]>([]);\n const [dialogState, setDialogState] = useState<{\n open: boolean;\n request: APIKeyRequest | null;\n action: 'approve' | 'reject';\n processing: boolean;\n }>({\n open: false,\n request: null,\n action: 'approve',\n processing: false,\n });\n const [bulkDialogState, setBulkDialogState] = useState<{\n open: boolean;\n requests: APIKeyRequest[];\n action: 'approve' | 'reject';\n processing: boolean;\n }>({\n open: false,\n requests: [],\n action: 'approve',\n processing: false,\n });\n\n const {\n allowed: canUpdateAllRequests,\n loading: updateAllPermissionLoading,\n error: updateAllPermissionError,\n } = useKuadrantPermission(kuadrantApiKeyRequestUpdateAllPermission);\n\n const {\n allowed: canUpdateOwnRequests,\n loading: updateOwnPermissionLoading,\n error: updateOwnPermissionError,\n } = useKuadrantPermission(kuadrantApiKeyRequestUpdateOwnPermission);\n\n const updatePermissionLoading = updateAllPermissionLoading || updateOwnPermissionLoading;\n const updatePermissionError = updateAllPermissionError || updateOwnPermissionError;\n\n const { value, loading, error } = useAsync(async () => {\n const identity = await identityApi.getBackstageIdentity();\n const reviewedBy = identity.userEntityRef;\n\n console.log('ApprovalQueueCard: fetching all requests from', `${backendUrl}/api/kuadrant/requests`);\n\n // fetch requests and api products in parallel\n const [requestsResponse, apiProductsResponse] = await Promise.all([\n fetchApi.fetch(`${backendUrl}/api/kuadrant/requests`),\n fetchApi.fetch(`${backendUrl}/api/kuadrant/apiproducts`),\n ]);\n\n if (!requestsResponse.ok) {\n console.log('ApprovalQueueCard: failed to fetch requests, status:', requestsResponse.status);\n return { pending: [] as APIKeyRequest[], approved: [] as APIKeyRequest[], rejected: [] as APIKeyRequest[], reviewedBy, ownedApiProducts: new Set<string>() };\n }\n\n // check content-type before parsing json\n const contentType = requestsResponse.headers.get('content-type');\n if (!contentType?.includes('application/json')) {\n console.error('ApprovalQueueCard: received non-json response');\n alertApi.post({\n message: 'Unexpected content-type from the server response. Please contact support.',\n display: 'transient',\n severity: 'warning'\n });\n return { pending: [] as APIKeyRequest[], approved: [] as APIKeyRequest[], rejected: [] as APIKeyRequest[], reviewedBy, ownedApiProducts: new Set<string>() };\n }\n\n const data = await requestsResponse.json();\n const allRequests = data.items || [];\n\n // build set of api products owned by current user\n const ownedApiProducts = new Set<string>();\n if (apiProductsResponse.ok) {\n const apiProductsData = await apiProductsResponse.json();\n for (const product of apiProductsData.items || []) {\n const owner = product.metadata?.annotations?.['backstage.io/owner'];\n if (owner === reviewedBy) {\n // key is namespace/name to match against request's apiNamespace/apiName\n ownedApiProducts.add(`${product.metadata.namespace}/${product.metadata.name}`);\n }\n }\n }\n\n console.log('ApprovalQueueCard: received', allRequests.length, 'total requests');\n console.log('ApprovalQueueCard: user owns', ownedApiProducts.size, 'api products');\n\n // group by status (field is 'phase' not 'status')\n const pending = allRequests.filter((r: APIKeyRequest) => {\n const phase = (r.status as any)?.phase || 'Pending';\n return phase === 'Pending';\n });\n const approved = allRequests.filter((r: APIKeyRequest) => {\n const phase = (r.status as any)?.phase;\n return phase === 'Approved';\n });\n const rejected = allRequests.filter((r: APIKeyRequest) => {\n const phase = (r.status as any)?.phase;\n return phase === 'Rejected';\n });\n\n console.log('ApprovalQueueCard: grouped -', {\n pending: pending.length,\n approved: approved.length,\n rejected: rejected.length,\n });\n\n return { pending, approved, rejected, reviewedBy, ownedApiProducts };\n }, [backendUrl, fetchApi, identityApi, refresh]);\n\n const handleApprove = (request: APIKeyRequest) => {\n setDialogState({ open: true, request, action: 'approve', processing: false });\n };\n\n const handleReject = (request: APIKeyRequest) => {\n setDialogState({ open: true, request, action: 'reject', processing: false });\n };\n\n const handleConfirm = async (comment: string) => {\n if (!dialogState.request || !value) return;\n\n setDialogState(prev => ({ ...prev, processing: true }));\n\n const endpoint = dialogState.action === 'approve'\n ? `${backendUrl}/api/kuadrant/requests/${dialogState.request.metadata.namespace}/${dialogState.request.metadata.name}/approve`\n : `${backendUrl}/api/kuadrant/requests/${dialogState.request.metadata.namespace}/${dialogState.request.metadata.name}/reject`;\n\n try {\n const response = await fetchApi.fetch(endpoint, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n comment,\n reviewedBy: value.reviewedBy,\n }),\n });\n\n if (!response.ok) {\n throw new Error(`failed to ${dialogState.action} request`);\n }\n\n setDialogState({ open: false, request: null, action: 'approve', processing: false });\n setRefresh(r => r + 1);\n const action = dialogState.action === 'approve' ? 'approved' : 'rejected';\n alertApi.post({ message: `Request ${action}`, severity: 'success', display: 'transient' });\n } catch (err) {\n console.error(`error ${dialogState.action}ing request:`, err);\n setDialogState(prev => ({ ...prev, processing: false }));\n alertApi.post({ message: `Failed to ${dialogState.action} request`, severity: 'error', display: 'transient' });\n }\n };\n\n const handleBulkApprove = () => {\n if (selectedRequests.length === 0) return;\n setBulkDialogState({ open: true, requests: selectedRequests, action: 'approve', processing: false });\n };\n\n const handleBulkReject = () => {\n if (selectedRequests.length === 0) return;\n setBulkDialogState({ open: true, requests: selectedRequests, action: 'reject', processing: false });\n };\n\n const handleBulkConfirm = async (comment: string) => {\n if (!value || bulkDialogState.requests.length === 0) return;\n\n setBulkDialogState(prev => ({ ...prev, processing: true }));\n\n const isApprove = bulkDialogState.action === 'approve';\n const endpoint = isApprove\n ? `${backendUrl}/api/kuadrant/requests/bulk-approve`\n : `${backendUrl}/api/kuadrant/requests/bulk-reject`;\n\n try {\n const response = await fetchApi.fetch(endpoint, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n requests: bulkDialogState.requests.map(r => ({\n namespace: r.metadata.namespace,\n name: r.metadata.name,\n })),\n comment,\n reviewedBy: value.reviewedBy,\n }),\n });\n\n if (!response.ok) {\n throw new Error(`failed to bulk ${bulkDialogState.action} requests`);\n }\n\n const count = bulkDialogState.requests.length;\n const action = isApprove ? 'approved' : 'rejected';\n setBulkDialogState({ open: false, requests: [], action: 'approve', processing: false });\n setSelectedRequests([]);\n setRefresh(r => r + 1);\n alertApi.post({ message: `${count} requests ${action}`, severity: 'success', display: 'transient' });\n } catch (err) {\n console.error(`error bulk ${bulkDialogState.action}ing requests:`, err);\n setBulkDialogState(prev => ({ ...prev, processing: false }));\n alertApi.post({ message: `Failed to bulk ${bulkDialogState.action} requests`, severity: 'error', display: 'transient' });\n }\n };\n\n if (loading || updatePermissionLoading) {\n return <Progress />;\n }\n\n if (error) {\n return <ResponseErrorPanel error={error} />;\n }\n\n if (updatePermissionError) {\n return (\n <Box p={2}>\n <Typography color=\"error\">\n Unable to check permissions: {updatePermissionError.message}\n </Typography>\n <Typography variant=\"body2\" color=\"textSecondary\">\n Permission: kuadrant.apikeyrequest.update.all\n </Typography>\n <Typography variant=\"body2\" color=\"textSecondary\">\n Please try again or contact your administrator\n </Typography>\n </Box>\n );\n }\n\n const pending = value?.pending || [];\n const approved = value?.approved || [];\n const rejected = value?.rejected || [];\n\n const formatDate = (dateString: string) => {\n const date = new Date(dateString);\n return date.toLocaleDateString('en-GB', {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n hour: '2-digit',\n minute: '2-digit',\n });\n };\n\n const pendingColumns: TableColumn<APIKeyRequest>[] = [\n {\n title: 'Request Name',\n field: 'metadata.name',\n render: (row) => <Typography variant=\"body2\">{row.metadata.name}</Typography>,\n },\n {\n title: 'User',\n field: 'spec.requestedBy.userId',\n render: (row) => <Typography variant=\"body2\">{row.spec.requestedBy.userId}</Typography>,\n },\n {\n title: 'API',\n field: 'spec.apiName',\n render: (row) => <Typography variant=\"body2\"><strong>{row.spec.apiName}</strong></Typography>,\n },\n {\n title: 'Namespace',\n field: 'spec.apiNamespace',\n render: (row) => <Typography variant=\"body2\">{row.spec.apiNamespace}</Typography>,\n },\n {\n title: 'Tier',\n field: 'spec.planTier',\n render: (row) => (\n <Chip\n label={row.spec.planTier}\n size=\"small\"\n />\n ),\n },\n {\n title: 'Use Case',\n field: 'spec.useCase',\n render: (row) => {\n if (!row.spec.useCase) {\n return <Typography variant=\"body2\">-</Typography>;\n }\n return (\n <Tooltip title={row.spec.useCase} placement=\"top\">\n <Typography\n variant=\"body2\"\n style={{\n maxWidth: '200px',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }}\n >\n {row.spec.useCase}\n </Typography>\n </Tooltip>\n );\n },\n },\n {\n title: 'Requested',\n field: 'spec.requestedAt',\n render: (row) => (\n <Typography variant=\"body2\">\n {row.spec.requestedAt ? formatDate(row.spec.requestedAt) : '-'}\n </Typography>\n ),\n },\n {\n title: 'Actions',\n filtering: false,\n render: (row) => {\n const apiProductKey = `${row.spec.apiNamespace}/${row.spec.apiName}`;\n const ownsApiProduct = value?.ownedApiProducts?.has(apiProductKey) ?? false;\n const canUpdate = canUpdateAllRequests || (canUpdateOwnRequests && ownsApiProduct);\n if (!canUpdate) return null;\n return (\n <Box display=\"flex\" style={{ gap: 8 }}>\n <Button\n size=\"small\"\n startIcon={<CheckCircleIcon />}\n onClick={() => handleApprove(row)}\n color=\"primary\"\n variant=\"outlined\"\n >\n Approve\n </Button>\n <Button\n size=\"small\"\n startIcon={<CancelIcon />}\n onClick={() => handleReject(row)}\n color=\"secondary\"\n variant=\"outlined\"\n >\n Reject\n </Button>\n </Box>\n );\n },\n },\n ];\n\n const approvedColumns: TableColumn<APIKeyRequest>[] = [\n {\n title: 'Request Name',\n field: 'metadata.name',\n render: (row) => <Typography variant=\"body2\">{row.metadata.name}</Typography>,\n },\n {\n title: 'User',\n field: 'spec.requestedBy.userId',\n render: (row) => <Typography variant=\"body2\">{row.spec.requestedBy.userId}</Typography>,\n },\n {\n title: 'API',\n field: 'spec.apiName',\n render: (row) => <Typography variant=\"body2\"><strong>{row.spec.apiName}</strong></Typography>,\n },\n {\n title: 'Namespace',\n field: 'spec.apiNamespace',\n render: (row) => <Typography variant=\"body2\">{row.spec.apiNamespace}</Typography>,\n },\n {\n title: 'Tier',\n field: 'spec.planTier',\n render: (row) => (\n <Chip\n label={row.spec.planTier}\n size=\"small\"\n />\n ),\n },\n {\n title: 'Requested',\n field: 'spec.requestedAt',\n render: (row) => (\n <Typography variant=\"body2\">\n {row.spec.requestedAt ? formatDate(row.spec.requestedAt) : '-'}\n </Typography>\n ),\n },\n {\n title: 'Approved',\n field: 'status.reviewedAt',\n render: (row) => (\n <Typography variant=\"body2\">\n {row.status?.reviewedAt ? formatDate(row.status.reviewedAt) : '-'}\n </Typography>\n ),\n },\n {\n title: 'Reviewed By',\n field: 'status.reviewedBy',\n render: (row) => (\n <Typography variant=\"body2\">\n {row.status?.reviewedBy || '-'}\n </Typography>\n ),\n },\n {\n title: 'Approval Type',\n field: 'status.reviewedBy',\n render: (row) => {\n const isAutomatic = row.status?.reviewedBy === 'system';\n return (\n <Chip\n label={isAutomatic ? 'Automatic' : 'Manual'}\n size=\"small\"\n color={isAutomatic ? 'default' : 'primary'}\n />\n );\n },\n },\n ];\n\n const rejectedColumns: TableColumn<APIKeyRequest>[] = [\n {\n title: 'Request Name',\n field: 'metadata.name',\n render: (row) => <Typography variant=\"body2\">{row.metadata.name}</Typography>,\n },\n {\n title: 'User',\n field: 'spec.requestedBy.userId',\n render: (row) => <Typography variant=\"body2\">{row.spec.requestedBy.userId}</Typography>,\n },\n {\n title: 'API',\n field: 'spec.apiName',\n render: (row) => <Typography variant=\"body2\"><strong>{row.spec.apiName}</strong></Typography>,\n },\n {\n title: 'Namespace',\n field: 'spec.apiNamespace',\n render: (row) => <Typography variant=\"body2\">{row.spec.apiNamespace}</Typography>,\n },\n {\n title: 'Tier',\n field: 'spec.planTier',\n render: (row) => (\n <Chip\n label={row.spec.planTier}\n size=\"small\"\n />\n ),\n },\n {\n title: 'Requested',\n field: 'spec.requestedAt',\n render: (row) => (\n <Typography variant=\"body2\">\n {row.spec.requestedAt ? formatDate(row.spec.requestedAt) : '-'}\n </Typography>\n ),\n },\n {\n title: 'Rejected',\n field: 'status.reviewedAt',\n render: (row) => (\n <Typography variant=\"body2\">\n {row.status?.reviewedAt ? formatDate(row.status.reviewedAt) : '-'}\n </Typography>\n ),\n },\n {\n title: 'Reviewed By',\n field: 'status.reviewedBy',\n render: (row) => (\n <Typography variant=\"body2\">\n {row.status?.reviewedBy || '-'}\n </Typography>\n ),\n },\n {\n title: 'Reason',\n field: 'status.reason',\n render: (row) => {\n if (!row.status?.reason) {\n return <Typography variant=\"body2\">-</Typography>;\n }\n return (\n <Tooltip title={row.status.reason} placement=\"top\">\n <Typography\n variant=\"body2\"\n style={{\n maxWidth: '200px',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }}\n >\n {row.status.reason}\n </Typography>\n </Tooltip>\n );\n },\n },\n ];\n\n const getTabData = () => {\n const addIds = (data: APIKeyRequest[]) =>\n data.map(item => ({ ...item, id: item.metadata.name }));\n\n switch (selectedTab) {\n case 0:\n return { data: addIds(approved), columns: approvedColumns, showSelection: false };\n case 1:\n // Add tableData.checked to control checkbox state\n const pendingWithSelection = pending.map((row: APIKeyRequest) => {\n const isSelected = selectedRequests.some(\n selected => selected.metadata.name === row.metadata.name &&\n selected.metadata.namespace === row.metadata.namespace\n );\n return {\n ...row,\n tableData: { checked: isSelected },\n };\n });\n return { data: pendingWithSelection, columns: pendingColumns, showSelection: true };\n case 2:\n return { data: addIds(rejected), columns: rejectedColumns, showSelection: false };\n default:\n return { data: addIds(approved), columns: approvedColumns, showSelection: false };\n }\n };\n\n const tabData = getTabData();\n\n // group requests by api product (namespace/name)\n const groupByApiProduct = (requests: APIKeyRequest[]) => {\n const grouped = new Map<string, APIKeyRequest[]>();\n requests.forEach(request => {\n const key = `${request.spec.apiNamespace}/${request.spec.apiName}`;\n if (!grouped.has(key)) {\n grouped.set(key, []);\n }\n grouped.get(key)!.push(request);\n });\n return grouped;\n };\n\n const groupedData = groupByApiProduct(tabData.data);\n const apiProductKeys = Array.from(groupedData.keys()).sort();\n\n return (\n <>\n <InfoCard\n title=\"API Access Requests\"\n subheader={`${pending.length} pending, ${approved.length} approved, ${rejected.length} rejected`}\n >\n <Box mb={2}>\n <Tabs\n value={selectedTab}\n onChange={(_, newValue) => {\n setSelectedTab(newValue);\n setSelectedRequests([]);\n }}\n indicatorColor=\"primary\"\n textColor=\"primary\"\n >\n <Tab label={`Approved (${approved.length})`} />\n <Tab label={`Pending (${pending.length})`} />\n <Tab label={`Rejected (${rejected.length})`} />\n </Tabs>\n </Box>\n\n {selectedTab === 1 && selectedRequests.length > 0 && (\n <Box mb={2} display=\"flex\" alignItems=\"center\" justifyContent=\"space-between\" p={2} bgcolor=\"background.default\">\n <Typography variant=\"body2\">\n {selectedRequests.length} request{selectedRequests.length !== 1 ? 's' : ''} selected\n </Typography>\n <Box display=\"flex\" style={{ gap: 8 }}>\n <Button\n size=\"small\"\n variant=\"contained\"\n color=\"primary\"\n startIcon={<CheckCircleIcon />}\n onClick={handleBulkApprove}\n >\n Approve Selected\n </Button>\n <Button\n size=\"small\"\n variant=\"contained\"\n color=\"secondary\"\n startIcon={<CancelIcon />}\n onClick={handleBulkReject}\n >\n Reject Selected\n </Button>\n </Box>\n </Box>\n )}\n\n {tabData.data.length === 0 ? (\n <Box p={3} textAlign=\"center\">\n <Typography variant=\"body1\" color=\"textSecondary\">\n {selectedTab === 0 && 'No approved requests.'}\n {selectedTab === 1 && 'No pending requests.'}\n {selectedTab === 2 && 'No rejected requests.'}\n </Typography>\n </Box>\n ) : (\n <Box>\n {apiProductKeys.map(apiProductKey => {\n const requests = groupedData.get(apiProductKey) || [];\n const displayName = requests[0]?.spec.apiName || apiProductKey;\n const ownsThisApiProduct = value?.ownedApiProducts?.has(apiProductKey) ?? false;\n const canSelectRows = canUpdateAllRequests || (canUpdateOwnRequests && ownsThisApiProduct);\n return (\n <Accordion key={apiProductKey} defaultExpanded={apiProductKeys.length === 1}>\n <AccordionSummary expandIcon={<ExpandMoreIcon />}>\n <Box display=\"flex\" alignItems=\"center\" justifyContent=\"space-between\" width=\"100%\">\n <Typography variant=\"h6\">{displayName}</Typography>\n <Chip\n label={`${requests.length} request${requests.length !== 1 ? 's' : ''}`}\n size=\"small\"\n color=\"primary\"\n style={{ marginRight: 16 }}\n />\n </Box>\n </AccordionSummary>\n <AccordionDetails>\n <Box width=\"100%\">\n <Table\n options={{\n selection: canSelectRows && tabData.showSelection,\n paging: requests.length > 5,\n pageSize: 20,\n search: true,\n filtering: true,\n debounceInterval: 300,\n showTextRowsSelected: false,\n toolbar: true,\n emptyRowsWhenPaging: false,\n }}\n data={requests}\n columns={tabData.columns}\n onSelectionChange={(rows) => {\n // merge selections from this api product with selections from other products\n const otherSelections = selectedRequests.filter(\n r => `${r.spec.apiNamespace}/${r.spec.apiName}` !== apiProductKey\n );\n setSelectedRequests([...otherSelections, ...(rows as APIKeyRequest[])]);\n }}\n />\n </Box>\n </AccordionDetails>\n </Accordion>\n );\n })}\n </Box>\n )}\n </InfoCard>\n <ApprovalDialog\n open={dialogState.open}\n request={dialogState.request}\n action={dialogState.action}\n processing={dialogState.processing}\n onClose={() => setDialogState({ open: false, request: null, action: 'approve', processing: false })}\n onConfirm={handleConfirm}\n />\n <BulkActionDialog\n open={bulkDialogState.open}\n requests={bulkDialogState.requests}\n action={bulkDialogState.action}\n processing={bulkDialogState.processing}\n onClose={() => setBulkDialogState({ open: false, requests: [], action: 'approve', processing: false })}\n onConfirm={handleBulkConfirm}\n />\n </>\n );\n};\n"],"names":["pending","approved","rejected"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- __load_plugin_entry__("internal.plugin-kuadrant",(()=>{"use strict";var h,e,g,a,t,i,l,r,n,s,_,c,u,o,f,y,d,x,b,p,m,v={76741:(h,e,g)=>{var a={PluginRoot:()=>g.e(879).then(()=>()=>g(72627)),KuadrantPage:()=>g.e(879).then(()=>()=>g(72627)),EntityKuadrantApiAccessCard:()=>g.e(879).then(()=>()=>g(72627)),EntityKuadrantApiKeyManagementTab:()=>g.e(879).then(()=>()=>g(72627)),EntityKuadrantApiKeysContent:()=>g.e(879).then(()=>()=>g(72627)),EntityKuadrantApiProductInfoContent:()=>g.e(879).then(()=>()=>g(72627)),KuadrantApprovalQueueCard:()=>g.e(879).then(()=>()=>g(72627))},t=(h,e)=>(g.R=e,e=g.o(a,h)?a[h]():Promise.resolve().then(()=>{throw new Error('Module "'+h+'" does not exist in container.')}),g.R=void 0,e),i=(h,e)=>{if(g.S){var a="default",t=g.S[a];if(t&&t!==h)throw new Error("Container initialization failed as it has already been initialized with a different share scope");return g.S[a]=h,g.I(a,e)}};g.d(e,{get:()=>t,init:()=>i})}},k={};function w(h){var e=k[h];if(void 0!==e)return e.exports;var g=k[h]={id:h,loaded:!1,exports:{}};return v[h].call(g.exports,g,g.exports,w),g.loaded=!0,g.exports}return w.m=v,w.c=k,w.n=h=>{var e=h&&h.__esModule?()=>h.default:()=>h;return w.d(e,{a:e}),e},e=Object.getPrototypeOf?h=>Object.getPrototypeOf(h):h=>h.__proto__,w.t=function(g,a){if(1&a&&(g=this(g)),8&a)return g;if("object"==typeof g&&g){if(4&a&&g.__esModule)return g;if(16&a&&"function"==typeof g.then)return g}var t=Object.create(null);w.r(t);var i={};h=h||[null,e({}),e([]),e(e)];for(var l=2&a&&g;("object"==typeof l||"function"==typeof l)&&!~h.indexOf(l);l=e(l))Object.getOwnPropertyNames(l).forEach(h=>i[h]=()=>g[h]);return i.default=()=>g,w.d(t,i),t},w.d=(h,e)=>{for(var g in e)w.o(e,g)&&!w.o(h,g)&&Object.defineProperty(h,g,{enumerable:!0,get:e[g]})},w.f={},w.e=h=>Promise.all(Object.keys(w.f).reduce((e,g)=>(w.f[g](h,e),e),[])),w.u=h=>"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",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",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"}[h]||h)+"."+{51:"be0fdf0c",200:"5251fe1a",206:"2347c999",371:"2f5c76b9",428:"0a290bc6",441:"8bd811bc",456:"47518214",460:"6381890e",464:"9bbc16eb",557:"362a3b0a",579:"21c190ed",634:"bb9cc730",879:"0ac7fe4b",927:"b0ad82d3",946:"e3fcc98c",985:"5f60f06d",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",1613:"71f0fccd",1679:"508b5846",1694:"bd112f1a",1727:"ea742315",1750:"cad796c9",1828:"2c5fdf55",1836:"b74b4c40",1895:"feb72aed",1956:"ee3f80da",1961:"17155e77",1972:"2ba37c00",2007:"2cc312ae",2064:"dea9db6c",2108:"f884fdc0",2120:"44884438",2180:"43421810",2198:"5905970e",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",2871:"cf576f17",2882:"0e45c1cf",2979:"25f8d292",2981:"038504d0",2983:"eaa5e2bf",3007:"bffc9924",3144:"6f99ccee",3146:"08443005",3193:"ee14d6a4",3299:"5ee62733",3357:"217c56f0",3384:"d9d4ed7e",3418:"d84064e5",3419:"245f31b6",3483:"2f14a8ca",3487:"f5bc5b04",3500:"a06c1c62",3540:"443301b3",3562:"a45eb030",3580:"7fc6f9a3",3607:"bb6a8626",3623:"2aae489e",3647:"b96f9b3e",3657:"59d45756",3722:"b4bb9102",3736:"d934b52b",3811:"4ac917b8",3885:"fe81a7fc",3923:"ddf703d6",3988:"843d9bc4",4014:"bec19089",4041:"29923ad9",4075:"5d714528",4110:"0f4ff415",4135:"9b39cf3b",4282:"f624f22d",4300:"8540ccea",4306:"4587e025",4342:"ade4c6c4",4383:"c3457b50",4436:"fc94a148",4446:"92519810",4491:"a2e0258f",4493:"cceeafb0",4556:"c6bedfc4",4570:"8b9f98d7",4575:"8d1f48c5",4635:"1ff533ef",4733:"f32d41e6",4835:"78d69dee",4931:"a431b2db",4956:"f9816c44",4971:"b6519e02",5034:"b0d90871",5051:"3bc87b5b",5099:"4934a8e8",5123:"501777c7",5189:"8fd3703c",5222:"796292ca",5251:"5b0d21b9",5253:"e6dbc3b4",5286:"630147e0",5446:"0e42541e",5453:"ee6fb9af",5565:"c5eaa6f5",5568:"5dbce633",5603:"05d9ca7f",5613:"dc8afdf1",5664:"1ede6e37",5773:"0cf721ff",5813:"cc574d49",5819:"72fdf84d",5868:"78be038f",5900:"8d4054e7",6057:"d69b1825",6152:"42eb54af",6161:"97b48014",6177:"695a2547",6195:"74045e43",6228:"7e26e901",6267:"7d33a4a9",6272:"e49551fa",6281:"b000c79f",6352:"d48bba8c",6354:"e04d1c07",6501:"4bfb8996",6512:"a4629d0a",6542:"e82f126f",6555:"4a460eaf",6573:"ff6a8f78",6780:"8f3a0af6",6835:"31bde7c5",6848:"3a36e63f",6872:"feed76d2",6924:"abe269c1",6977:"909f2a27",6986:"79dfc31f",7048:"e740620a",7079:"a8373241",7131:"0cd375bc",7209:"ae8475a2",7247:"cb9028b5",7254:"c5ac3a0a",7351:"1e79c9b9",7401:"94075d6a",7406:"651dcc8d",7439:"972cc801",7533:"dfc9b0b0",7572:"ec232b8a",7601:"08d8ff3f",7632:"daef27e4",7764:"abc0a144",7776:"d698757b",7794:"5859273c",7818:"9b9ce313",7879:"ea98c6fb",7934:"bb5b0086",7959:"e57e3c89",7984:"c8511b89",8001:"114e44eb",8030:"75c0a89b",8058:"c54b2c4a",8078:"588e191d",8138:"8a488b19",8140:"5052a768",8216:"84e0a497",8217:"5cb0fdfc",8331:"ecb04f2a",8338:"2d204375",8365:"75ea3581",8441:"62394cfd",8549:"b43ce116",8595:"c60db034",8705:"5b05cdf2",8725:"53da57ca",8727:"2bd53873",8753:"fa8fdac0",8755:"79af288c",8763:"c0bcd6ce",8833:"1489792c",8874:"4fa5afdd",8903:"80d14346",8904:"9e4100ae",8948:"ecd68b19",9078:"25afcc29",9118:"e3bfcde8",9139:"8fb85401",9162:"ab3b1c28",9175:"4703f4c5",9229:"f43a39d0",9265:"0a0b12af",9288:"61b45746",9406:"781cc6c6",9612:"53f7c730",9702:"378d3296",9726:"7cff3cbb",9882:"70910623"}[h]+".chunk.js",w.miniCssF=h=>{},w.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(h){if("object"==typeof window)return window}}(),w.o=(h,e)=>Object.prototype.hasOwnProperty.call(h,e),g={},a="internal.plugin-kuadrant:",w.l=(h,e,t,i)=>{if(g[h])g[h].push(e);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")==h||_.getAttribute("data-webpack")==a+t){l=_;break}}l||(r=!0,(l=document.createElement("script")).charset="utf-8",l.timeout=120,w.nc&&l.setAttribute("nonce",w.nc),l.setAttribute("data-webpack",a+t),l.src=h),g[h]=[e];var c=(e,a)=>{l.onerror=l.onload=null,clearTimeout(u);var t=g[h];if(delete g[h],l.parentNode&&l.parentNode.removeChild(l),t&&t.forEach(h=>h(a)),e)return e(a)},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)}},w.r=h=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(h,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(h,"__esModule",{value:!0})},w.nmd=h=>(h.paths=[],h.children||(h.children=[]),h),(()=>{w.S={};var h={},e={};w.I=(g,a)=>{a||(a=[]);var t=e[g];if(t||(t=e[g]={}),!(a.indexOf(t)>=0)){if(a.push(t),h[g])return h[g];w.o(w.S,g)||(w.S[g]={});var i=w.S[g],l="internal.plugin-kuadrant",r=(h,e,g,a)=>{var t=i[h]=i[h]||{},r=t[e];(!r||!r.loaded&&(!a!=!r.eager?a:l>r.from))&&(t[e]={get:g,from:l,eager:!!a})},n=[];return"default"===g&&(r("@backstage/core-plugin-api","1.11.0",()=>Promise.all([w.e(5568),w.e(7601),w.e(5478),w.e(2469),w.e(4218)]).then(()=>()=>w(47601))),r("@backstage/core-plugin-api","1.11.0",()=>Promise.all([w.e(5568),w.e(428),w.e(5478),w.e(2469),w.e(4218)]).then(()=>()=>w(20428))),r("@backstage/core-plugin-api","1.11.0",()=>Promise.all([w.e(5568),w.e(6272),w.e(5478),w.e(2469),w.e(4218)]).then(()=>()=>w(26272))),r("@backstage/core-plugin-api","1.11.1",()=>Promise.all([w.e(5568),w.e(3647),w.e(5478),w.e(2469),w.e(4218)]).then(()=>()=>w(83647))),r("@backstage/version-bridge","1.0.11",()=>Promise.all([w.e(5478),w.e(5603)]).then(()=>()=>w(65603))),r("@material-ui/core/styles","4.12.4",()=>Promise.all([w.e(6352),w.e(5478),w.e(1942),w.e(4491)]).then(()=>()=>w(64491))),r("@material-ui/styles","4.11.5",()=>Promise.all([w.e(4570),w.e(5478),w.e(3007)]).then(()=>()=>w(94570))),r("react-dom","18.3.1",()=>Promise.all([w.e(3144),w.e(5478)]).then(()=>()=>w(43144))),r("react-router-dom","6.30.1",()=>Promise.all([w.e(1613),w.e(3657),w.e(5478),w.e(484),w.e(2731)]).then(()=>()=>w(73657))),r("react-router","6.30.1",()=>Promise.all([w.e(1613),w.e(1836),w.e(5478)]).then(()=>()=>w(51836))),r("react","18.3.1",()=>w.e(4041).then(()=>()=>w(14041)))),h[g]=n.length?Promise.all(n).then(()=>h[g]=1):1}}})(),(()=>{var h;w.g.importScripts&&(h=w.g.location+"");var e=w.g.document;if(!h&&e&&(e.currentScript&&"SCRIPT"===e.currentScript.tagName.toUpperCase()&&(h=e.currentScript.src),!h)){var g=e.getElementsByTagName("script");if(g.length)for(var a=g.length-1;a>-1&&(!h||!/^http(s?):/.test(h));)h=g[a--].src}if(!h)throw new Error("Automatic publicPath is not supported in this browser");h=h.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),w.p=h})(),t=h=>{var e=h=>h.split(".").map(h=>+h==h?+h:h),g=/^([^-+]+)?(?:-([^+]+))?(?:\+(.+))?$/.exec(h),a=g[1]?e(g[1]):[];return g[2]&&(a.length++,a.push.apply(a,e(g[2]))),g[3]&&(a.push([]),a.push.apply(a,e(g[3]))),a},i=(h,e)=>{h=t(h),e=t(e);for(var g=0;;){if(g>=h.length)return g<e.length&&"u"!=(typeof e[g])[0];var a=h[g],i=(typeof a)[0];if(g>=e.length)return"u"==i;var l=e[g],r=(typeof l)[0];if(i!=r)return"o"==i&&"n"==r||"s"==r||"u"==i;if("o"!=i&&"u"!=i&&a!=l)return a<l;g++}},l=h=>{var e=h[0],g="";if(1===h.length)return"*";if(e+.5){g+=0==e?">=":-1==e?"<":1==e?"^":2==e?"~":e>0?"=":"!=";for(var a=1,t=1;t<h.length;t++)a--,g+="u"==(typeof(r=h[t]))[0]?"-":(a>0?".":"")+(a=2,r);return g}var i=[];for(t=1;t<h.length;t++){var r=h[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=(h,e)=>{if(0 in h){e=t(e);var g=h[0],a=g<0;a&&(g=-g-1);for(var i=0,l=1,n=!0;;l++,i++){var s,_,c=l<h.length?(typeof h[l])[0]:"";if(i>=e.length||"o"==(_=(typeof(s=e[i]))[0]))return!n||("u"==c?l>g&&!a:""==c!=a);if("u"==_){if(!n||"u"!=c)return!1}else if(n)if(c==_)if(l<=g){if(s!=h[l])return!1}else{if(a?s>h[l]:s<h[l])return!1;s!=h[l]&&(n=!1)}else if("s"!=c&&"n"!=c){if(a||l<=g)return!1;n=!1,l--}else{if(l<=g||_<c!=a)return!1;n=!1}else"s"!=c&&"n"!=c&&(n=!1,l--)}}var u=[],o=u.pop.bind(u);for(i=1;i<h.length;i++){var f=h[i];u.push(1==f?o()|o():2==f?o()&o():f?r(f,e):!o())}return!!o()},n=(h,e)=>h&&w.o(h,e),s=h=>(h.loaded=1,h.get()),_=h=>Object.keys(h).reduce((e,g)=>(h[g].eager&&(e[g]=h[g]),e),{}),c=(h,e,g)=>{var a=g?_(h[e]):h[e];return Object.keys(a).reduce((h,e)=>!h||!a[h].loaded&&i(h,e)?e:h,0)},u=(h,e,g,a)=>"Unsatisfied version "+g+" from "+(g&&h[e][g].from)+" of shared singleton module "+e+" (required "+l(a)+")",o=h=>{throw new Error(h)},f=h=>{"undefined"!=typeof console&&console.warn&&console.warn(h)},y=(h,e,g)=>g?g():((h,e)=>o("Shared module "+e+" doesn't exist in shared scope "+h))(h,e),d=(h=>function(e,g,a,t,i){var l=w.I(e);return l&&l.then&&!a?l.then(h.bind(h,e,w.S[e],g,!1,t,i)):h(e,w.S[e],g,a,t,i)})((h,e,g,a,t,i)=>{if(!n(e,g))return y(h,g,i);var l=c(e,g,a);return r(t,l)||f(u(e,g,l,t)),s(e[g][l])}),x={},b={22097:()=>d("default","@backstage/core-plugin-api",!1,[0],()=>Promise.all([w.e(5568),w.e(6272),w.e(5478),w.e(2469),w.e(4218)]).then(()=>()=>w(26272))),95478:()=>d("default","react",!1,[0],()=>w.e(4041).then(()=>()=>w(14041))),42469:()=>d("default","react-router-dom",!1,[0],()=>Promise.all([w.e(1613),w.e(3657),w.e(484),w.e(2731)]).then(()=>()=>w(73657))),64218:()=>d("default","@backstage/version-bridge",!1,[0],()=>w.e(7984).then(()=>()=>w(65603))),11942:()=>d("default","@material-ui/styles",!1,[0],()=>w.e(4570).then(()=>()=>w(94570))),40484:()=>d("default","react-dom",!1,[0],()=>w.e(3144).then(()=>()=>w(43144))),92731:()=>d("default","react-router",!1,[0],()=>w.e(1836).then(()=>()=>w(51836))),37976:()=>d("default","@material-ui/core/styles",!1,[0],()=>w.e(6872).then(()=>()=>w(64491))),97094:()=>d("default","@backstage/core-plugin-api",!1,[0],()=>Promise.all([w.e(3647),w.e(2469)]).then(()=>()=>w(83647))),26659:()=>d("default","@backstage/core-plugin-api",!1,[0],()=>Promise.all([w.e(428),w.e(2469)]).then(()=>()=>w(20428)))},p={484:[40484],879:[22097],1942:[11942],2469:[42469],2731:[92731],4218:[64218],5478:[95478],6659:[26659],7094:[97094],7976:[37976]},m={},w.f.consumes=(h,e)=>{w.o(p,h)&&p[h].forEach(h=>{if(w.o(x,h))return e.push(x[h]);if(!m[h]){var g=e=>{x[h]=0,w.m[h]=g=>{delete w.c[h],g.exports=e()}};m[h]=!0;var a=e=>{delete x[h],w.m[h]=g=>{throw delete w.c[h],e}};try{var t=b[h]();t.then?e.push(x[h]=t.then(g).catch(a)):g(t)}catch(h){a(h)}}})},(()=>{var h={2310:0};w.f.j=(e,g)=>{var a=w.o(h,e)?h[e]:void 0;if(0!==a)if(a)g.push(a[2]);else if(/^(1942|2469|2731|4218|484|5478|6659|7094|7976)$/.test(e))h[e]=0;else{var t=new Promise((g,t)=>a=h[e]=[g,t]);g.push(a[2]=t);var i=w.p+w.u(e),l=new Error;w.l(i,g=>{if(w.o(h,e)&&(0!==(a=h[e])&&(h[e]=void 0),a)){var t=g&&("load"===g.type?"missing":g.type),i=g&&g.target&&g.target.src;l.message="Loading chunk "+e+" failed.\n("+t+": "+i+")",l.name="ChunkLoadError",l.type=t,l.request=i,a[1](l)}},"chunk-"+e,e)}};var e=(e,g)=>{var a,t,[i,l,r]=g,n=0;if(i.some(e=>0!==h[e])){for(a in l)w.o(l,a)&&(w.m[a]=l[a]);r&&r(w)}for(e&&e(g);n<i.length;n++)t=i[n],w.o(h,t)&&h[t]&&h[t][0](),h[t]=0},g=self.webpackChunkinternal_plugin_kuadrant=self.webpackChunkinternal_plugin_kuadrant||[];g.forEach(e.bind(null,0)),g.push=e.bind(null,g.push.bind(g))})(),w(76741)})());
2
- //# sourceMappingURL=internal.plugin-kuadrant.810174392d0016a5a388.js.map
1
+ __load_plugin_entry__("internal.plugin-kuadrant",(()=>{"use strict";var h,e,g,a,t,i,l,r,n,s,_,c,u,o,f,y,d,x,b,p,m,v={76741:(h,e,g)=>{var a={PluginRoot:()=>g.e(879).then(()=>()=>g(72627)),KuadrantPage:()=>g.e(879).then(()=>()=>g(72627)),EntityKuadrantApiAccessCard:()=>g.e(879).then(()=>()=>g(72627)),EntityKuadrantApiKeyManagementTab:()=>g.e(879).then(()=>()=>g(72627)),EntityKuadrantApiKeysContent:()=>g.e(879).then(()=>()=>g(72627)),EntityKuadrantApiProductInfoContent:()=>g.e(879).then(()=>()=>g(72627)),KuadrantApprovalQueueCard:()=>g.e(879).then(()=>()=>g(72627))},t=(h,e)=>(g.R=e,e=g.o(a,h)?a[h]():Promise.resolve().then(()=>{throw new Error('Module "'+h+'" does not exist in container.')}),g.R=void 0,e),i=(h,e)=>{if(g.S){var a="default",t=g.S[a];if(t&&t!==h)throw new Error("Container initialization failed as it has already been initialized with a different share scope");return g.S[a]=h,g.I(a,e)}};g.d(e,{get:()=>t,init:()=>i})}},k={};function w(h){var e=k[h];if(void 0!==e)return e.exports;var g=k[h]={id:h,loaded:!1,exports:{}};return v[h].call(g.exports,g,g.exports,w),g.loaded=!0,g.exports}return w.m=v,w.c=k,w.n=h=>{var e=h&&h.__esModule?()=>h.default:()=>h;return w.d(e,{a:e}),e},e=Object.getPrototypeOf?h=>Object.getPrototypeOf(h):h=>h.__proto__,w.t=function(g,a){if(1&a&&(g=this(g)),8&a)return g;if("object"==typeof g&&g){if(4&a&&g.__esModule)return g;if(16&a&&"function"==typeof g.then)return g}var t=Object.create(null);w.r(t);var i={};h=h||[null,e({}),e([]),e(e)];for(var l=2&a&&g;("object"==typeof l||"function"==typeof l)&&!~h.indexOf(l);l=e(l))Object.getOwnPropertyNames(l).forEach(h=>i[h]=()=>g[h]);return i.default=()=>g,w.d(t,i),t},w.d=(h,e)=>{for(var g in e)w.o(e,g)&&!w.o(h,g)&&Object.defineProperty(h,g,{enumerable:!0,get:e[g]})},w.f={},w.e=h=>Promise.all(Object.keys(w.f).reduce((e,g)=>(w.f[g](h,e),e),[])),w.u=h=>"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",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",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"}[h]||h)+"."+{51:"be0fdf0c",200:"5251fe1a",206:"2347c999",371:"2f5c76b9",428:"0a290bc6",441:"8bd811bc",456:"47518214",460:"6381890e",464:"9bbc16eb",557:"362a3b0a",579:"21c190ed",634:"bb9cc730",879:"0ac7fe4b",927:"b0ad82d3",946:"e3fcc98c",985:"5f60f06d",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",1613:"71f0fccd",1679:"508b5846",1694:"bd112f1a",1727:"ea742315",1750:"cad796c9",1828:"2c5fdf55",1836:"b74b4c40",1895:"feb72aed",1956:"ee3f80da",1961:"17155e77",1972:"2ba37c00",2007:"2cc312ae",2064:"dea9db6c",2108:"f884fdc0",2120:"44884438",2180:"43421810",2198:"5905970e",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",2871:"cf576f17",2882:"0e45c1cf",2979:"25f8d292",2981:"038504d0",2983:"eaa5e2bf",3007:"bffc9924",3144:"6f99ccee",3146:"08443005",3193:"ee14d6a4",3299:"5ee62733",3357:"217c56f0",3384:"d9d4ed7e",3418:"d84064e5",3419:"245f31b6",3483:"2f14a8ca",3487:"f5bc5b04",3500:"a06c1c62",3540:"443301b3",3562:"a45eb030",3580:"7fc6f9a3",3607:"bb6a8626",3623:"2aae489e",3647:"b96f9b3e",3657:"59d45756",3722:"b4bb9102",3736:"d934b52b",3811:"4ac917b8",3885:"fe81a7fc",3923:"ddf703d6",3988:"843d9bc4",4014:"bec19089",4041:"29923ad9",4075:"5d714528",4110:"0f4ff415",4135:"9b39cf3b",4282:"f624f22d",4300:"8540ccea",4306:"4587e025",4342:"ade4c6c4",4383:"c3457b50",4436:"fc94a148",4446:"92519810",4491:"a2e0258f",4493:"cceeafb0",4556:"c6bedfc4",4570:"8b9f98d7",4575:"8d1f48c5",4635:"1ff533ef",4733:"f32d41e6",4835:"78d69dee",4931:"a431b2db",4956:"f9816c44",4971:"b6519e02",5034:"b0d90871",5051:"3bc87b5b",5099:"4934a8e8",5123:"501777c7",5189:"8fd3703c",5222:"796292ca",5251:"5b0d21b9",5253:"e6dbc3b4",5286:"630147e0",5446:"0e42541e",5453:"ee6fb9af",5565:"c5eaa6f5",5568:"5dbce633",5603:"05d9ca7f",5613:"dc8afdf1",5664:"1ede6e37",5773:"0cf721ff",5813:"cc574d49",5819:"72fdf84d",5868:"78be038f",5900:"8d4054e7",6057:"d69b1825",6152:"42eb54af",6161:"97b48014",6177:"695a2547",6195:"74045e43",6228:"7e26e901",6267:"7d33a4a9",6272:"e49551fa",6281:"4047cd24",6352:"d48bba8c",6354:"e04d1c07",6501:"4bfb8996",6512:"a4629d0a",6542:"e82f126f",6555:"4a460eaf",6573:"ff6a8f78",6780:"8f3a0af6",6835:"31bde7c5",6848:"3a36e63f",6872:"feed76d2",6924:"abe269c1",6977:"909f2a27",6986:"79dfc31f",7048:"e740620a",7079:"a8373241",7131:"0cd375bc",7209:"ae8475a2",7247:"cb9028b5",7254:"c5ac3a0a",7351:"1e79c9b9",7401:"94075d6a",7406:"651dcc8d",7439:"972cc801",7533:"dfc9b0b0",7572:"ec232b8a",7601:"08d8ff3f",7632:"daef27e4",7764:"abc0a144",7776:"d698757b",7794:"5859273c",7818:"9b9ce313",7879:"ea98c6fb",7934:"bb5b0086",7959:"e57e3c89",7984:"c8511b89",8001:"114e44eb",8030:"75c0a89b",8058:"c54b2c4a",8078:"588e191d",8138:"8a488b19",8140:"5052a768",8216:"84e0a497",8217:"5cb0fdfc",8331:"ecb04f2a",8338:"2d204375",8365:"75ea3581",8441:"62394cfd",8549:"b43ce116",8595:"c60db034",8705:"5b05cdf2",8725:"53da57ca",8727:"2bd53873",8753:"fa8fdac0",8755:"79af288c",8763:"c0bcd6ce",8833:"1489792c",8874:"4fa5afdd",8903:"80d14346",8904:"9e4100ae",8948:"ecd68b19",9078:"25afcc29",9118:"e3bfcde8",9139:"8fb85401",9162:"ab3b1c28",9175:"4703f4c5",9229:"f43a39d0",9265:"0a0b12af",9288:"61b45746",9406:"781cc6c6",9612:"53f7c730",9702:"378d3296",9726:"7cff3cbb",9882:"70910623"}[h]+".chunk.js",w.miniCssF=h=>{},w.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(h){if("object"==typeof window)return window}}(),w.o=(h,e)=>Object.prototype.hasOwnProperty.call(h,e),g={},a="internal.plugin-kuadrant:",w.l=(h,e,t,i)=>{if(g[h])g[h].push(e);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")==h||_.getAttribute("data-webpack")==a+t){l=_;break}}l||(r=!0,(l=document.createElement("script")).charset="utf-8",l.timeout=120,w.nc&&l.setAttribute("nonce",w.nc),l.setAttribute("data-webpack",a+t),l.src=h),g[h]=[e];var c=(e,a)=>{l.onerror=l.onload=null,clearTimeout(u);var t=g[h];if(delete g[h],l.parentNode&&l.parentNode.removeChild(l),t&&t.forEach(h=>h(a)),e)return e(a)},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)}},w.r=h=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(h,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(h,"__esModule",{value:!0})},w.nmd=h=>(h.paths=[],h.children||(h.children=[]),h),(()=>{w.S={};var h={},e={};w.I=(g,a)=>{a||(a=[]);var t=e[g];if(t||(t=e[g]={}),!(a.indexOf(t)>=0)){if(a.push(t),h[g])return h[g];w.o(w.S,g)||(w.S[g]={});var i=w.S[g],l="internal.plugin-kuadrant",r=(h,e,g,a)=>{var t=i[h]=i[h]||{},r=t[e];(!r||!r.loaded&&(!a!=!r.eager?a:l>r.from))&&(t[e]={get:g,from:l,eager:!!a})},n=[];return"default"===g&&(r("@backstage/core-plugin-api","1.11.0",()=>Promise.all([w.e(5568),w.e(7601),w.e(5478),w.e(2469),w.e(4218)]).then(()=>()=>w(47601))),r("@backstage/core-plugin-api","1.11.0",()=>Promise.all([w.e(5568),w.e(428),w.e(5478),w.e(2469),w.e(4218)]).then(()=>()=>w(20428))),r("@backstage/core-plugin-api","1.11.0",()=>Promise.all([w.e(5568),w.e(6272),w.e(5478),w.e(2469),w.e(4218)]).then(()=>()=>w(26272))),r("@backstage/core-plugin-api","1.11.1",()=>Promise.all([w.e(5568),w.e(3647),w.e(5478),w.e(2469),w.e(4218)]).then(()=>()=>w(83647))),r("@backstage/version-bridge","1.0.11",()=>Promise.all([w.e(5478),w.e(5603)]).then(()=>()=>w(65603))),r("@material-ui/core/styles","4.12.4",()=>Promise.all([w.e(6352),w.e(5478),w.e(1942),w.e(4491)]).then(()=>()=>w(64491))),r("@material-ui/styles","4.11.5",()=>Promise.all([w.e(4570),w.e(5478),w.e(3007)]).then(()=>()=>w(94570))),r("react-dom","18.3.1",()=>Promise.all([w.e(3144),w.e(5478)]).then(()=>()=>w(43144))),r("react-router-dom","6.30.1",()=>Promise.all([w.e(1613),w.e(3657),w.e(5478),w.e(484),w.e(2731)]).then(()=>()=>w(73657))),r("react-router","6.30.1",()=>Promise.all([w.e(1613),w.e(1836),w.e(5478)]).then(()=>()=>w(51836))),r("react","18.3.1",()=>w.e(4041).then(()=>()=>w(14041)))),h[g]=n.length?Promise.all(n).then(()=>h[g]=1):1}}})(),(()=>{var h;w.g.importScripts&&(h=w.g.location+"");var e=w.g.document;if(!h&&e&&(e.currentScript&&"SCRIPT"===e.currentScript.tagName.toUpperCase()&&(h=e.currentScript.src),!h)){var g=e.getElementsByTagName("script");if(g.length)for(var a=g.length-1;a>-1&&(!h||!/^http(s?):/.test(h));)h=g[a--].src}if(!h)throw new Error("Automatic publicPath is not supported in this browser");h=h.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),w.p=h})(),t=h=>{var e=h=>h.split(".").map(h=>+h==h?+h:h),g=/^([^-+]+)?(?:-([^+]+))?(?:\+(.+))?$/.exec(h),a=g[1]?e(g[1]):[];return g[2]&&(a.length++,a.push.apply(a,e(g[2]))),g[3]&&(a.push([]),a.push.apply(a,e(g[3]))),a},i=(h,e)=>{h=t(h),e=t(e);for(var g=0;;){if(g>=h.length)return g<e.length&&"u"!=(typeof e[g])[0];var a=h[g],i=(typeof a)[0];if(g>=e.length)return"u"==i;var l=e[g],r=(typeof l)[0];if(i!=r)return"o"==i&&"n"==r||"s"==r||"u"==i;if("o"!=i&&"u"!=i&&a!=l)return a<l;g++}},l=h=>{var e=h[0],g="";if(1===h.length)return"*";if(e+.5){g+=0==e?">=":-1==e?"<":1==e?"^":2==e?"~":e>0?"=":"!=";for(var a=1,t=1;t<h.length;t++)a--,g+="u"==(typeof(r=h[t]))[0]?"-":(a>0?".":"")+(a=2,r);return g}var i=[];for(t=1;t<h.length;t++){var r=h[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=(h,e)=>{if(0 in h){e=t(e);var g=h[0],a=g<0;a&&(g=-g-1);for(var i=0,l=1,n=!0;;l++,i++){var s,_,c=l<h.length?(typeof h[l])[0]:"";if(i>=e.length||"o"==(_=(typeof(s=e[i]))[0]))return!n||("u"==c?l>g&&!a:""==c!=a);if("u"==_){if(!n||"u"!=c)return!1}else if(n)if(c==_)if(l<=g){if(s!=h[l])return!1}else{if(a?s>h[l]:s<h[l])return!1;s!=h[l]&&(n=!1)}else if("s"!=c&&"n"!=c){if(a||l<=g)return!1;n=!1,l--}else{if(l<=g||_<c!=a)return!1;n=!1}else"s"!=c&&"n"!=c&&(n=!1,l--)}}var u=[],o=u.pop.bind(u);for(i=1;i<h.length;i++){var f=h[i];u.push(1==f?o()|o():2==f?o()&o():f?r(f,e):!o())}return!!o()},n=(h,e)=>h&&w.o(h,e),s=h=>(h.loaded=1,h.get()),_=h=>Object.keys(h).reduce((e,g)=>(h[g].eager&&(e[g]=h[g]),e),{}),c=(h,e,g)=>{var a=g?_(h[e]):h[e];return Object.keys(a).reduce((h,e)=>!h||!a[h].loaded&&i(h,e)?e:h,0)},u=(h,e,g,a)=>"Unsatisfied version "+g+" from "+(g&&h[e][g].from)+" of shared singleton module "+e+" (required "+l(a)+")",o=h=>{throw new Error(h)},f=h=>{"undefined"!=typeof console&&console.warn&&console.warn(h)},y=(h,e,g)=>g?g():((h,e)=>o("Shared module "+e+" doesn't exist in shared scope "+h))(h,e),d=(h=>function(e,g,a,t,i){var l=w.I(e);return l&&l.then&&!a?l.then(h.bind(h,e,w.S[e],g,!1,t,i)):h(e,w.S[e],g,a,t,i)})((h,e,g,a,t,i)=>{if(!n(e,g))return y(h,g,i);var l=c(e,g,a);return r(t,l)||f(u(e,g,l,t)),s(e[g][l])}),x={},b={22097:()=>d("default","@backstage/core-plugin-api",!1,[0],()=>Promise.all([w.e(5568),w.e(6272),w.e(5478),w.e(2469),w.e(4218)]).then(()=>()=>w(26272))),95478:()=>d("default","react",!1,[0],()=>w.e(4041).then(()=>()=>w(14041))),42469:()=>d("default","react-router-dom",!1,[0],()=>Promise.all([w.e(1613),w.e(3657),w.e(484),w.e(2731)]).then(()=>()=>w(73657))),64218:()=>d("default","@backstage/version-bridge",!1,[0],()=>w.e(7984).then(()=>()=>w(65603))),11942:()=>d("default","@material-ui/styles",!1,[0],()=>w.e(4570).then(()=>()=>w(94570))),40484:()=>d("default","react-dom",!1,[0],()=>w.e(3144).then(()=>()=>w(43144))),92731:()=>d("default","react-router",!1,[0],()=>w.e(1836).then(()=>()=>w(51836))),37976:()=>d("default","@material-ui/core/styles",!1,[0],()=>w.e(6872).then(()=>()=>w(64491))),97094:()=>d("default","@backstage/core-plugin-api",!1,[0],()=>Promise.all([w.e(3647),w.e(2469)]).then(()=>()=>w(83647))),26659:()=>d("default","@backstage/core-plugin-api",!1,[0],()=>Promise.all([w.e(428),w.e(2469)]).then(()=>()=>w(20428)))},p={484:[40484],879:[22097],1942:[11942],2469:[42469],2731:[92731],4218:[64218],5478:[95478],6659:[26659],7094:[97094],7976:[37976]},m={},w.f.consumes=(h,e)=>{w.o(p,h)&&p[h].forEach(h=>{if(w.o(x,h))return e.push(x[h]);if(!m[h]){var g=e=>{x[h]=0,w.m[h]=g=>{delete w.c[h],g.exports=e()}};m[h]=!0;var a=e=>{delete x[h],w.m[h]=g=>{throw delete w.c[h],e}};try{var t=b[h]();t.then?e.push(x[h]=t.then(g).catch(a)):g(t)}catch(h){a(h)}}})},(()=>{var h={2310:0};w.f.j=(e,g)=>{var a=w.o(h,e)?h[e]:void 0;if(0!==a)if(a)g.push(a[2]);else if(/^(1942|2469|2731|4218|484|5478|6659|7094|7976)$/.test(e))h[e]=0;else{var t=new Promise((g,t)=>a=h[e]=[g,t]);g.push(a[2]=t);var i=w.p+w.u(e),l=new Error;w.l(i,g=>{if(w.o(h,e)&&(0!==(a=h[e])&&(h[e]=void 0),a)){var t=g&&("load"===g.type?"missing":g.type),i=g&&g.target&&g.target.src;l.message="Loading chunk "+e+" failed.\n("+t+": "+i+")",l.name="ChunkLoadError",l.type=t,l.request=i,a[1](l)}},"chunk-"+e,e)}};var e=(e,g)=>{var a,t,[i,l,r]=g,n=0;if(i.some(e=>0!==h[e])){for(a in l)w.o(l,a)&&(w.m[a]=l[a]);r&&r(w)}for(e&&e(g);n<i.length;n++)t=i[n],w.o(h,t)&&h[t]&&h[t][0](),h[t]=0},g=self.webpackChunkinternal_plugin_kuadrant=self.webpackChunkinternal_plugin_kuadrant||[];g.forEach(e.bind(null,0)),g.push=e.bind(null,g.push.bind(g))})(),w(76741)})());
2
+ //# sourceMappingURL=internal.plugin-kuadrant.e5640eb51995d02e6e91.js.map