@kuadrant/kuadrant-backstage-plugin-frontend 0.2.0 → 0.2.1
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.
- package/dist/components/ApiKeyManagementTab/ApiKeyManagementTab.esm.js +21 -3
- package/dist/components/ApiKeyManagementTab/ApiKeyManagementTab.esm.js.map +1 -1
- package/dist/components/CreateAPIProductDialog/CreateAPIProductDialog.esm.js +1 -7
- package/dist/components/CreateAPIProductDialog/CreateAPIProductDialog.esm.js.map +1 -1
- package/dist/components/KuadrantIcon/KuadrantIcon.esm.js +22 -0
- package/dist/components/KuadrantIcon/KuadrantIcon.esm.js.map +1 -0
- package/dist/components/icons.esm.js +11 -0
- package/dist/components/icons.esm.js.map +1 -0
- package/dist/index.d.ts +8 -1
- package/dist/index.esm.js +2 -0
- package/dist/index.esm.js.map +1 -1
- package/dist-scalprum/internal.plugin-kuadrant.c4fb9c2347d3ad03a5d0.js +2 -0
- package/dist-scalprum/internal.plugin-kuadrant.c4fb9c2347d3ad03a5d0.js.map +1 -0
- package/dist-scalprum/plugin-manifest.json +3 -3
- package/dist-scalprum/static/{1037.58dd29ad.chunk.js → 1037.25758556.chunk.js} +1 -1
- package/dist-scalprum/static/{1037.58dd29ad.chunk.js.map → 1037.25758556.chunk.js.map} +1 -1
- package/dist-scalprum/static/{1584.ae3779f0.chunk.js → 1584.1e45e570.chunk.js} +2 -2
- package/dist-scalprum/static/{1584.ae3779f0.chunk.js.map → 1584.1e45e570.chunk.js.map} +1 -1
- package/dist-scalprum/static/1719.246c020d.chunk.js +2 -0
- package/dist-scalprum/static/1719.246c020d.chunk.js.map +1 -0
- package/dist-scalprum/static/{1881.8221c002.chunk.js → 1881.56cde36b.chunk.js} +1 -1
- package/dist-scalprum/static/{1881.8221c002.chunk.js.map → 1881.56cde36b.chunk.js.map} +1 -1
- package/dist-scalprum/static/286.ee43f560.chunk.js +2 -0
- package/dist-scalprum/static/286.ee43f560.chunk.js.map +1 -0
- package/dist-scalprum/static/2952.b54bd390.chunk.js +2 -0
- package/dist-scalprum/static/2952.b54bd390.chunk.js.map +1 -0
- package/dist-scalprum/static/2967.0c2ef90e.chunk.js +2 -0
- package/dist-scalprum/static/2967.0c2ef90e.chunk.js.map +1 -0
- package/dist-scalprum/static/3015.1fe097c2.chunk.js +3 -0
- package/dist-scalprum/static/3015.1fe097c2.chunk.js.LICENSE.txt +9 -0
- package/dist-scalprum/static/3015.1fe097c2.chunk.js.map +1 -0
- package/dist-scalprum/static/{3581.b5b97f08.chunk.js → 3581.ebe5968a.chunk.js} +1 -1
- package/dist-scalprum/static/{3581.b5b97f08.chunk.js.map → 3581.ebe5968a.chunk.js.map} +1 -1
- package/dist-scalprum/static/3657.882640ca.chunk.js +3 -0
- package/dist-scalprum/static/3657.882640ca.chunk.js.LICENSE.txt +8 -0
- package/dist-scalprum/static/3657.882640ca.chunk.js.map +1 -0
- package/dist-scalprum/static/{3897.ef4554b5.chunk.js → 3897.6e9c07c0.chunk.js} +1 -1
- package/dist-scalprum/static/{3897.ef4554b5.chunk.js.map → 3897.6e9c07c0.chunk.js.map} +1 -1
- package/dist-scalprum/static/{3947.ad129ba4.chunk.js → 3947.4f4aa8c2.chunk.js} +1 -1
- package/dist-scalprum/static/{3947.ad129ba4.chunk.js.map → 3947.4f4aa8c2.chunk.js.map} +1 -1
- package/dist-scalprum/static/{3976.e0873210.chunk.js → 3976.e8a8fda2.chunk.js} +2 -2
- package/dist-scalprum/static/{3976.e0873210.chunk.js.map → 3976.e8a8fda2.chunk.js.map} +1 -1
- package/dist-scalprum/static/{4083.488ff7a9.chunk.js → 4083.811c4e7a.chunk.js} +2 -2
- package/dist-scalprum/static/{4083.488ff7a9.chunk.js.map → 4083.811c4e7a.chunk.js.map} +1 -1
- package/dist-scalprum/static/4908.196a4425.chunk.js +2 -0
- package/dist-scalprum/static/{5453.3c20d0a6.chunk.js.map → 4908.196a4425.chunk.js.map} +1 -1
- package/dist-scalprum/static/{5010.6241b64f.chunk.js → 5010.4f67737b.chunk.js} +2 -2
- package/dist-scalprum/static/{5010.6241b64f.chunk.js.map → 5010.4f67737b.chunk.js.map} +1 -1
- package/dist-scalprum/static/{512.f1c51799.chunk.js → 512.d592d164.chunk.js} +1 -1
- package/dist-scalprum/static/{512.f1c51799.chunk.js.map → 512.d592d164.chunk.js.map} +1 -1
- package/dist-scalprum/static/{5289.2e686027.chunk.js → 5289.55069930.chunk.js} +2 -2
- package/dist-scalprum/static/{5289.2e686027.chunk.js.map → 5289.55069930.chunk.js.map} +1 -1
- package/dist-scalprum/static/5605.430f697e.chunk.js +2 -0
- package/dist-scalprum/static/5605.430f697e.chunk.js.map +1 -0
- package/dist-scalprum/static/5978.bf347a09.chunk.js +2 -0
- package/dist-scalprum/static/5978.bf347a09.chunk.js.map +1 -0
- package/dist-scalprum/static/6038.63d1f832.chunk.js +3 -0
- package/dist-scalprum/static/6038.63d1f832.chunk.js.LICENSE.txt +8 -0
- package/dist-scalprum/static/6038.63d1f832.chunk.js.map +1 -0
- package/dist-scalprum/static/{6272.b5645dc2.chunk.js → 6272.3ed14ea4.chunk.js} +1 -1
- package/dist-scalprum/static/{6272.b5645dc2.chunk.js.map → 6272.3ed14ea4.chunk.js.map} +1 -1
- package/dist-scalprum/static/635.f63679a5.chunk.js +3 -0
- package/dist-scalprum/static/635.f63679a5.chunk.js.map +1 -0
- package/dist-scalprum/static/6371.7b57ac27.chunk.js +3 -0
- package/dist-scalprum/static/6371.7b57ac27.chunk.js.LICENSE.txt +9 -0
- package/dist-scalprum/static/6371.7b57ac27.chunk.js.map +1 -0
- package/dist-scalprum/static/{6386.2d20c412.chunk.js → 6386.5922f271.chunk.js} +3 -3
- package/dist-scalprum/static/{6386.2d20c412.chunk.js.map → 6386.5922f271.chunk.js.map} +1 -1
- package/dist-scalprum/static/{6426.bf20c588.chunk.js → 6426.4c18bab5.chunk.js} +1 -1
- package/dist-scalprum/static/{6426.bf20c588.chunk.js.map → 6426.4c18bab5.chunk.js.map} +1 -1
- package/dist-scalprum/static/6777.a2b77ec5.chunk.js +2 -0
- package/dist-scalprum/static/6777.a2b77ec5.chunk.js.map +1 -0
- package/dist-scalprum/static/{6800.ddabed69.chunk.js → 6800.a45da2f4.chunk.js} +2 -2
- package/dist-scalprum/static/{6800.ddabed69.chunk.js.map → 6800.a45da2f4.chunk.js.map} +1 -1
- package/dist-scalprum/static/{6972.e47ec97e.chunk.js → 6972.f22b9446.chunk.js} +1 -1
- package/dist-scalprum/static/{6972.e47ec97e.chunk.js.map → 6972.f22b9446.chunk.js.map} +1 -1
- package/dist-scalprum/static/7005.8190ad95.chunk.js +2 -0
- package/dist-scalprum/static/7005.8190ad95.chunk.js.map +1 -0
- package/dist-scalprum/static/7164.5dc4bc72.chunk.js +2 -0
- package/dist-scalprum/static/7164.5dc4bc72.chunk.js.map +1 -0
- package/dist-scalprum/static/{7266.e760b8c3.chunk.js → 7266.3c4174cc.chunk.js} +1 -1
- package/dist-scalprum/static/{7266.e760b8c3.chunk.js.map → 7266.3c4174cc.chunk.js.map} +1 -1
- package/dist-scalprum/static/7270.d52407cd.chunk.js +2 -0
- package/dist-scalprum/static/7270.d52407cd.chunk.js.map +1 -0
- package/dist-scalprum/static/7717.6f5b9dd7.chunk.js +3 -0
- package/dist-scalprum/static/7717.6f5b9dd7.chunk.js.map +1 -0
- package/dist-scalprum/static/{7791.8f84478d.chunk.js → 7791.ad31cf6d.chunk.js} +2 -2
- package/dist-scalprum/static/{7791.8f84478d.chunk.js.map → 7791.ad31cf6d.chunk.js.map} +1 -1
- package/dist-scalprum/static/{8563.46f1a3e1.chunk.js → 8563.6501eafb.chunk.js} +2 -2
- package/dist-scalprum/static/{8563.46f1a3e1.chunk.js.map → 8563.6501eafb.chunk.js.map} +1 -1
- package/dist-scalprum/static/{9079.b6d5c19c.chunk.js → 9079.2ddaea57.chunk.js} +1 -1
- package/dist-scalprum/static/{9079.b6d5c19c.chunk.js.map → 9079.2ddaea57.chunk.js.map} +1 -1
- package/dist-scalprum/static/9239.1acfe112.chunk.js +2 -0
- package/dist-scalprum/static/9239.1acfe112.chunk.js.map +1 -0
- package/dist-scalprum/static/exposed-KuadrantIcon.08abbb96.chunk.js +3 -0
- package/dist-scalprum/static/exposed-KuadrantIcon.08abbb96.chunk.js.LICENSE.txt +9 -0
- package/dist-scalprum/static/exposed-KuadrantIcon.08abbb96.chunk.js.map +1 -0
- package/dist-scalprum/static/exposed-KuadrantPage.5ae00605.chunk.js +2 -0
- package/dist-scalprum/static/exposed-KuadrantPage.5ae00605.chunk.js.map +1 -0
- package/dist-scalprum/static/exposed-PluginRoot.949381c2.chunk.js +2 -0
- package/dist-scalprum/static/exposed-PluginRoot.949381c2.chunk.js.map +1 -0
- package/package.json +6 -3
- package/dist-scalprum/internal.plugin-kuadrant.b3d35dc8b21ce867aa09.js +0 -2
- package/dist-scalprum/internal.plugin-kuadrant.b3d35dc8b21ce867aa09.js.map +0 -1
- package/dist-scalprum/static/1319.ac195ac2.chunk.js +0 -2
- package/dist-scalprum/static/1319.ac195ac2.chunk.js.map +0 -1
- package/dist-scalprum/static/2967.7c6a34cd.chunk.js +0 -2
- package/dist-scalprum/static/2967.7c6a34cd.chunk.js.map +0 -1
- package/dist-scalprum/static/3118.daee3324.chunk.js +0 -3
- package/dist-scalprum/static/3118.daee3324.chunk.js.map +0 -1
- package/dist-scalprum/static/483.d55d6ab2.chunk.js +0 -2
- package/dist-scalprum/static/483.d55d6ab2.chunk.js.map +0 -1
- package/dist-scalprum/static/5203.3df62d7e.chunk.js +0 -2
- package/dist-scalprum/static/5203.3df62d7e.chunk.js.map +0 -1
- package/dist-scalprum/static/5453.3c20d0a6.chunk.js +0 -2
- package/dist-scalprum/static/6371.f183dddb.chunk.js +0 -3
- package/dist-scalprum/static/6371.f183dddb.chunk.js.map +0 -1
- package/dist-scalprum/static/7005.d548f8f1.chunk.js +0 -2
- package/dist-scalprum/static/7005.d548f8f1.chunk.js.map +0 -1
- package/dist-scalprum/static/7270.301a3c46.chunk.js +0 -2
- package/dist-scalprum/static/7270.301a3c46.chunk.js.map +0 -1
- package/dist-scalprum/static/9051.f095a8a1.chunk.js +0 -2
- package/dist-scalprum/static/9051.f095a8a1.chunk.js.map +0 -1
- package/dist-scalprum/static/9838.589f2156.chunk.js +0 -2
- package/dist-scalprum/static/9838.589f2156.chunk.js.map +0 -1
- package/dist-scalprum/static/exposed-PluginRoot.a8448fcc.chunk.js +0 -2
- package/dist-scalprum/static/exposed-PluginRoot.a8448fcc.chunk.js.map +0 -1
- /package/dist-scalprum/static/{1584.ae3779f0.chunk.js.LICENSE.txt → 1584.1e45e570.chunk.js.LICENSE.txt} +0 -0
- /package/dist-scalprum/static/{4083.488ff7a9.chunk.js.LICENSE.txt → 4083.811c4e7a.chunk.js.LICENSE.txt} +0 -0
- /package/dist-scalprum/static/{5010.6241b64f.chunk.js.LICENSE.txt → 5010.4f67737b.chunk.js.LICENSE.txt} +0 -0
- /package/dist-scalprum/static/{6371.f183dddb.chunk.js.LICENSE.txt → 635.f63679a5.chunk.js.LICENSE.txt} +0 -0
- /package/dist-scalprum/static/{6386.2d20c412.chunk.js.LICENSE.txt → 6386.5922f271.chunk.js.LICENSE.txt} +0 -0
- /package/dist-scalprum/static/{3118.daee3324.chunk.js.LICENSE.txt → 7717.6f5b9dd7.chunk.js.LICENSE.txt} +0 -0
- /package/dist-scalprum/static/{8563.46f1a3e1.chunk.js.LICENSE.txt → 8563.6501eafb.chunk.js.LICENSE.txt} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"static/7005.8190ad95.chunk.js","mappings":"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","sources":["webpack://internal.plugin-kuadrant/./src/components/FilterPanel/FilterPanel.tsx","webpack://internal.plugin-kuadrant/./src/components/PermissionGate/PermissionGate.tsx","webpack://internal.plugin-kuadrant/./src/components/CreateAPIProductDialog/CreateAPIProductDialog.tsx","webpack://internal.plugin-kuadrant/./src/components/KuadrantPage/ApiProductsPage.tsx"],"sourcesContent":["import React from 'react';\nimport {\n Box,\n Typography,\n Checkbox,\n FormControlLabel,\n FormGroup,\n Divider,\n Button,\n Collapse,\n makeStyles,\n} from '@material-ui/core';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport ExpandLessIcon from '@material-ui/icons/ExpandLess';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n width: 240,\n minWidth: 240,\n padding: theme.spacing(2),\n borderRight: `1px solid ${theme.palette.divider}`,\n backgroundColor: theme.palette.background.paper,\n height: '100%',\n overflowY: 'auto',\n },\n sectionTitle: {\n fontWeight: 600,\n fontSize: '0.75rem',\n textTransform: 'uppercase',\n letterSpacing: '0.05em',\n color: theme.palette.text.secondary,\n marginBottom: theme.spacing(1),\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n cursor: 'pointer',\n userSelect: 'none',\n },\n filterSection: {\n marginBottom: theme.spacing(2),\n },\n checkbox: {\n padding: theme.spacing(0.5),\n },\n checkboxLabel: {\n fontSize: '0.875rem',\n },\n clearButton: {\n marginTop: theme.spacing(2),\n },\n count: {\n fontSize: '0.75rem',\n color: theme.palette.text.secondary,\n marginLeft: theme.spacing(1),\n },\n}));\n\nexport interface FilterOption {\n value: string;\n label: string;\n count?: number;\n}\n\nexport interface FilterSection {\n id: string;\n title: string;\n options: FilterOption[];\n collapsed?: boolean;\n}\n\nexport interface FilterState {\n [sectionId: string]: string[];\n}\n\ninterface FilterPanelProps {\n sections: FilterSection[];\n filters: FilterState;\n onChange: (filters: FilterState) => void;\n onClear?: () => void;\n}\n\nexport const FilterPanel = ({\n sections,\n filters,\n onChange,\n onClear,\n}: FilterPanelProps) => {\n const classes = useStyles();\n const [collapsedSections, setCollapsedSections] = React.useState<Set<string>>(\n new Set(sections.filter(s => s.collapsed).map(s => s.id)),\n );\n\n const toggleSection = (sectionId: string) => {\n setCollapsedSections(prev => {\n const next = new Set(prev);\n if (next.has(sectionId)) {\n next.delete(sectionId);\n } else {\n next.add(sectionId);\n }\n return next;\n });\n };\n\n const handleCheckboxChange = (sectionId: string, value: string) => {\n const currentValues = filters[sectionId] || [];\n const newValues = currentValues.includes(value)\n ? currentValues.filter(v => v !== value)\n : [...currentValues, value];\n\n onChange({\n ...filters,\n [sectionId]: newValues,\n });\n };\n\n const hasActiveFilters = Object.values(filters).some(\n values => values.length > 0,\n );\n\n const handleClear = () => {\n const clearedFilters: FilterState = {};\n sections.forEach(section => {\n clearedFilters[section.id] = [];\n });\n onChange(clearedFilters);\n onClear?.();\n };\n\n return (\n <Box className={classes.root}>\n <Box display=\"flex\" justifyContent=\"space-between\" alignItems=\"center\" mb={2}>\n <Typography variant=\"subtitle2\">Filters</Typography>\n {hasActiveFilters && (\n <Button\n size=\"small\"\n color=\"primary\"\n onClick={handleClear}\n >\n Clear all\n </Button>\n )}\n </Box>\n\n <Divider />\n\n {sections.map(section => {\n const isCollapsed = collapsedSections.has(section.id);\n const selectedCount = (filters[section.id] || []).length;\n\n return (\n <Box key={section.id} className={classes.filterSection} mt={2}>\n <Box\n className={classes.sectionTitle}\n onClick={() => toggleSection(section.id)}\n >\n <Box display=\"flex\" alignItems=\"center\">\n <span>{section.title}</span>\n {selectedCount > 0 && (\n <span className={classes.count}>({selectedCount})</span>\n )}\n </Box>\n {isCollapsed ? (\n <ExpandMoreIcon fontSize=\"small\" />\n ) : (\n <ExpandLessIcon fontSize=\"small\" />\n )}\n </Box>\n\n <Collapse in={!isCollapsed}>\n <FormGroup>\n {section.options.map(option => (\n <FormControlLabel\n key={option.value}\n control={\n <Checkbox\n checked={(filters[section.id] || []).includes(option.value)}\n onChange={() =>\n handleCheckboxChange(section.id, option.value)\n }\n size=\"small\"\n className={classes.checkbox}\n color=\"primary\"\n />\n }\n label={\n <Box display=\"flex\" alignItems=\"center\">\n <span className={classes.checkboxLabel}>\n {option.label}\n </span>\n {option.count !== undefined && (\n <span className={classes.count}>({option.count})</span>\n )}\n </Box>\n }\n />\n ))}\n </FormGroup>\n </Collapse>\n </Box>\n );\n })}\n </Box>\n );\n};\n","import React from 'react';\nimport { Typography, Box } from '@material-ui/core';\nimport { Progress } from '@backstage/core-components';\nimport { Permission } from '@backstage/plugin-permission-common';\nimport { useKuadrantPermission } from '../../utils/permissions';\n\ninterface PermissionGateProps {\n children: React.ReactNode;\n permission: Permission;\n fallback?: React.ReactNode;\n errorMessage?: string;\n}\n\nexport const PermissionGate = ({ children, permission, fallback, errorMessage }: PermissionGateProps) => {\n const { allowed, loading, error } = useKuadrantPermission(permission);\n\n if (loading) {\n return <Progress />;\n }\n\n if (error) {\n return (\n <Box p={4}>\n <Typography color=\"error\">\n Unable to check permissions: {error.message}\n </Typography>\n <Typography variant=\"body2\" color=\"textSecondary\">\n Please try again or contact your administrator\n </Typography>\n </Box>\n );\n }\n\n if (!allowed) {\n if (fallback) {\n return <>{fallback}</>;\n }\n return (\n <Box p={4}>\n <Typography color=\"textSecondary\">\n {errorMessage || 'You don\\'t have permission to view this page'}\n </Typography>\n <Box mt={1}>\n <Typography variant=\"caption\" color=\"textSecondary\">\n Required permission: {permission.name}\n </Typography>\n </Box>\n </Box>\n );\n }\n\n return <>{children}</>;\n};\n","import React, { useEffect, useState } from 'react';\nimport {\n Dialog,\n DialogTitle,\n DialogContent,\n DialogActions,\n Button,\n TextField,\n Box,\n Typography,\n Chip,\n Grid,\n MenuItem,\n CircularProgress,\n makeStyles,\n FormControl,\n RadioGroup,\n FormControlLabel,\n Radio,\n Tooltip,\n IconButton,\n InputAdornment,\n} from '@material-ui/core';\nimport InfoOutlinedIcon from '@material-ui/icons/InfoOutlined';\nimport AddIcon from '@material-ui/icons/Add';\nimport { useApi } from '@backstage/core-plugin-api';\nimport { kuadrantApiRef } from '../../api';\nimport { Alert } from '@material-ui/lab';\nimport useAsync from 'react-use/lib/useAsync';\nimport { ApiProductPolicies } from '../ApiProductPolicies';\nimport { validateKubernetesName, validateURL } from '../../utils/validation';\nimport { APIProduct } from \"../../types/api-management.ts\";\nimport { Lifecycle } from '../../types/api-management';\nimport { getPolicyForRoute } from '../../utils/policies';\n\nconst useStyles = makeStyles((theme) => ({\n asterisk: {\n color: '#f44336',\n },\n sectionHeader: {\n display: 'flex',\n alignItems: 'center',\n gap: theme.spacing(0.5),\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(1),\n },\n infoIcon: {\n fontSize: 18,\n color: theme.palette.text.secondary,\n },\n tagChip: {\n marginRight: theme.spacing(0.5),\n marginBottom: theme.spacing(0.5),\n },\n}));\n\ninterface CreateAPIProductDialogProps {\n open: boolean;\n onClose: () => void;\n onSuccess: (productInfo: { namespace: string; name: string; displayName: string }) => void;\n}\n\nexport const CreateAPIProductDialog = ({ open, onClose, onSuccess }: CreateAPIProductDialogProps) => {\n const classes = useStyles();\n const kuadrantApi = useApi(kuadrantApiRef);\n\n const [name, setName] = useState('');\n const [displayName, setDisplayName] = useState('');\n const [description, setDescription] = useState('');\n const [version, setVersion] = useState('v1');\n const [approvalMode, setApprovalMode] = useState<'automatic' | 'manual'>('manual');\n const [publishStatus, setPublishStatus] = useState<'Draft' | 'Published'>('Published');\n const [lifecycle, setLifecycle] = useState<Lifecycle>('production');\n const [tags, setTags] = useState<string[]>([]);\n const [tagInput, setTagInput] = useState('');\n const [selectedHTTPRoute, setSelectedHTTPRoute] = useState('');\n const [contactEmail, setContactEmail] = useState('');\n const [contactTeam, setContactTeam] = useState('');\n const [docsURL, setDocsURL] = useState('');\n const [openAPISpec, setOpenAPISpec] = useState('');\n const [error, setError] = useState('');\n const [creating, setCreating] = useState(false);\n const [httpRoutesRetry, setHttpRoutesRetry] = useState(0);\n const [nameError, setNameError] = useState<string | null>(null);\n const [openAPISpecError, setOpenAPISpecError] = useState<string | null>(null);\n const [routeSearchTerm, setRouteSearchTerm] = useState('');\n const [routeSearchField, setRouteSearchField] = useState<'name' | 'namespace' | 'planpolicy'>('name');\n const {\n value: httpRoutes,\n loading: httpRoutesLoading,\n error: httpRoutesError\n } = useAsync(async () => {\n const data = await kuadrantApi.getHttpRoutes();\n return data.items || [];\n }, [kuadrantApi, open, httpRoutesRetry]);\n\n // load planpolicies with full details to show associated plans\n const {\n value: planPolicies,\n error: planPoliciesError\n } = useAsync(async () => {\n return await kuadrantApi.getPlanPolicies();\n }, [kuadrantApi, open]);\n\n // load authpolicies\n const {\n value: authPolicies,\n error: authPoliciesError\n } = useAsync(async () => {\n return await kuadrantApi.getAuthPolicies();\n }, [kuadrantApi, open]);\n\n // load ratelimitpolicies\n const {\n value: rateLimitPolicies,\n error: rateLimitPoliciesError\n } = useAsync(async () => {\n return await kuadrantApi.getRateLimitPolicies();\n }, [kuadrantApi, open]);\n\n // find planpolicy associated with selected httproute\n const getPlanPolicyForRoute = (routeNamespace: string, routeName: string) => {\n return getPolicyForRoute(planPolicies?.items, routeNamespace, routeName);\n };\n\n // find authpolicy associated with selected httproute\n const getAuthPolicyForRoute = (routeNamespace: string, routeName: string) => {\n return getPolicyForRoute(authPolicies?.items, routeNamespace, routeName);\n };\n\n // find ratelimitpolicy associated with selected httproute\n const getRateLimitPolicyForRoute = (routeNamespace: string, routeName: string) => {\n return getPolicyForRoute(rateLimitPolicies?.items, routeNamespace, routeName);\n };\n\n const selectedRouteInfo = selectedHTTPRoute ? selectedHTTPRoute.split('/') : null;\n const selectedPlanPolicy = selectedRouteInfo\n ? getPlanPolicyForRoute(selectedRouteInfo[0], selectedRouteInfo[1])\n : null;\n const planPolicyAcceptedCondition = selectedPlanPolicy?.status?.conditions?.find(\n (c: any) => c.type === \"Accepted\"\n );\n const selectedAuthPolicy = selectedRouteInfo\n ? getAuthPolicyForRoute(selectedRouteInfo[0], selectedRouteInfo[1])\n : null;\n const authPolicyAcceptedCondition = selectedAuthPolicy?.status?.conditions?.find(\n (c: any) => c.type === \"Accepted\"\n );\n const selectedRateLimitPolicy = selectedRouteInfo\n ? getRateLimitPolicyForRoute(selectedRouteInfo[0], selectedRouteInfo[1])\n : null;\n const rateLimitPolicyAcceptedCondition = selectedRateLimitPolicy?.status?.conditions?.find(\n (c: any) => c.type === \"Accepted\"\n );\n const planPolicyProps = {\n statusCondition: planPolicyAcceptedCondition,\n discoveredPlans: selectedPlanPolicy?.spec.plans,\n }\n const authPolicyProps = {\n namespacedName: {\n namespace: selectedAuthPolicy?.metadata.namespace,\n name: selectedAuthPolicy?.metadata.name,\n },\n statusCondition: authPolicyAcceptedCondition,\n }\n const rateLimitPolicyProps = {\n namespacedName: {\n namespace: selectedRateLimitPolicy?.metadata.namespace,\n name: selectedRateLimitPolicy?.metadata.name,\n },\n statusCondition: rateLimitPolicyAcceptedCondition,\n }\n\n // format tier info for dropdown display\n const formatTierInfo = (policy: any): string => {\n if (!policy?.spec?.plans) return '';\n const tiers = Object.entries(policy.spec.plans)\n .map(([name, plan]: [string, any]) => {\n const limit = plan?.limits?.requests;\n if (!limit) return name;\n return `${name}: ${limit.count}/${limit.period}`;\n })\n .join('; ');\n return tiers ? ` (${tiers})` : '';\n };\n\n // get policy info for a route (for dropdown display)\n const getPolicyInfoForRoute = (routeNamespace: string, routeName: string): string => {\n const policy = getPlanPolicyForRoute(routeNamespace, routeName);\n if (!policy) return 'N/A';\n return `${policy.metadata.name}${formatTierInfo(policy)}`;\n };\n\n useEffect(() => {\n if (open) {\n setNameError(null);\n setOpenAPISpecError(null);\n }\n }, [open]);\n\n // validate handlers\n const handleNameChange = (value: string) => {\n setName(value);\n setNameError(validateKubernetesName(value));\n };\n\n const handleDisplayNameChange = (value: string) => {\n setDisplayName(value);\n // Auto-generate Kubernetes resource name from display name with random hex suffix\n if (!name || name.match(/-[a-f0-9]{6}$/)) {\n const baseName = value.toLowerCase().replace(/[^a-z0-9-]/g, '-').replace(/-+/g, '-').replace(/^-|-$/g, '');\n const randomHex = Math.floor(Math.random() * 16777215).toString(16).padStart(6, '0');\n const autoName = `${baseName}-${randomHex}`;\n setName(autoName);\n setNameError(validateKubernetesName(autoName));\n }\n };\n\n const handleOpenAPISpecChange = (value: string) => {\n setOpenAPISpec(value);\n setOpenAPISpecError(validateURL(value));\n };\n\n const handleAddTag = () => {\n if (tagInput.trim() && !tags.includes(tagInput.trim())) {\n setTags([...tags, tagInput.trim()]);\n setTagInput('');\n }\n };\n\n const handleDeleteTag = (tagToDelete: string) => {\n setTags(tags.filter(tag => tag !== tagToDelete));\n };\n\n const handleClose = () => {\n setName('');\n setDisplayName('');\n setDescription('');\n setVersion('v1');\n setApprovalMode('manual');\n setPublishStatus('Published');\n setLifecycle('production');\n setTags([]);\n setTagInput('');\n setSelectedHTTPRoute('');\n setContactEmail('');\n setContactTeam('');\n setDocsURL('');\n setOpenAPISpec('');\n setError('');\n setNameError(null);\n setOpenAPISpecError(null);\n onClose();\n };\n\n const handleCreate = async () => {\n setError('');\n setCreating(true);\n\n try {\n if (!selectedHTTPRoute) {\n throw new Error('Please select an HTTPRoute');\n }\n\n const [selectedRouteNamespace, selectedRouteName] = selectedHTTPRoute.split('/');\n\n // derive namespace from selected httproute\n const namespace = selectedRouteNamespace;\n\n const apiProduct: APIProduct = {\n apiVersion: 'devportal.kuadrant.io/v1alpha1',\n kind: 'APIProduct',\n metadata: {\n name,\n namespace,\n labels: {\n lifecycle,\n },\n },\n spec: {\n displayName,\n description,\n version,\n approvalMode,\n publishStatus,\n tags,\n targetRef: {\n group: 'gateway.networking.k8s.io',\n kind: 'HTTPRoute',\n name: selectedRouteName,\n namespace: selectedRouteNamespace,\n },\n ...(contactEmail || contactTeam ? {\n contact: {\n ...(contactEmail && { email: contactEmail }),\n ...(contactTeam && { team: contactTeam }),\n },\n } : {}),\n ...(docsURL || openAPISpec ? {\n documentation: {\n ...(docsURL && { docsURL }),\n ...(openAPISpec && { openAPISpecURL: openAPISpec }),\n },\n } : {}),\n },\n };\n\n await kuadrantApi.createApiProduct(apiProduct);\n onSuccess({ namespace, name, displayName });\n handleClose();\n } catch (err) {\n setError(err instanceof Error ? err.message : String(err));\n } finally {\n setCreating(false);\n }\n };\n\n const hasValidationErrors = !!nameError || !!openAPISpecError;\n\n return (\n <Dialog open={open} onClose={handleClose} maxWidth=\"md\" fullWidth>\n <DialogTitle>Create API Product</DialogTitle>\n <DialogContent>\n {error && (\n <Alert severity=\"error\" style={{ marginBottom: 16 }}>\n {error}\n </Alert>\n )}\n {httpRoutesError && (\n <Alert severity=\"error\" style={{ marginBottom: 16 }}>\n <strong>Failed to load HTTPRoutes:</strong> {httpRoutesError.message}\n <Box mt={1}>\n <Button\n size=\"small\"\n variant=\"outlined\"\n onClick={() => setHttpRoutesRetry(prev => prev + 1)}\n >\n Retry\n </Button>\n </Box>\n </Alert>\n )}\n\n {planPoliciesError && (\n <Alert severity=\"warning\" style={{ marginBottom: 16 }}>\n <strong>Failed to load PlanPolicies:</strong> {planPoliciesError.message}\n <Typography variant=\"body2\" style={{ marginTop: 8 }}>\n You can still create the API Product, but plan information may be incomplete.\n </Typography>\n </Alert>\n )}\n {authPoliciesError && (\n <Alert severity=\"warning\" style={{ marginBottom: 16 }}>\n <strong>Failed to load AuthPolicies:</strong> {authPoliciesError.message}\n </Alert>\n )}\n {rateLimitPoliciesError && (\n <Alert severity=\"warning\" style={{ marginBottom: 16 }}>\n <strong>Failed to load RateLimitPolicies:</strong> {rateLimitPoliciesError.message}\n </Alert>\n )}\n {/* API product info section */}\n <Box className={classes.sectionHeader}>\n <Typography variant=\"subtitle1\"><strong>API product info</strong></Typography>\n </Box>\n <Grid container spacing={2}>\n <Grid item xs={6}>\n <TextField\n fullWidth\n label=\"API product name\"\n value={displayName}\n onChange={e => handleDisplayNameChange(e.target.value)}\n placeholder=\"My API\"\n helperText=\"Display name for your API product (shown to users)\"\n margin=\"normal\"\n required\n disabled={creating}\n InputLabelProps={{\n classes: {\n asterisk: classes.asterisk,\n },\n }}\n />\n </Grid>\n <Grid item xs={6}>\n <TextField\n fullWidth\n label=\"Kubernetes resource name\"\n value={name}\n onChange={e => handleNameChange(e.target.value)}\n placeholder=\"my-api\"\n helperText={nameError || \"Auto-generated from product name. Only lowercase, numbers, and hyphens allowed.\"}\n error={!!nameError}\n margin=\"normal\"\n required\n disabled={creating}\n InputLabelProps={{\n classes: {\n asterisk: classes.asterisk,\n },\n }}\n />\n </Grid>\n <Grid item xs={6}>\n <TextField\n fullWidth\n label=\"Version\"\n value={version}\n onChange={e => setVersion(e.target.value)}\n placeholder=\"v1\"\n helperText=\"Give a version to your API product\"\n margin=\"normal\"\n required\n disabled={creating}\n InputLabelProps={{\n classes: {\n asterisk: classes.asterisk,\n },\n }}\n />\n </Grid>\n <Grid item xs={6}>\n <TextField\n fullWidth\n label=\"Tag\"\n value={tagInput}\n onChange={e => setTagInput(e.target.value)}\n onKeyPress={e => {\n if (e.key === 'Enter') {\n e.preventDefault();\n handleAddTag();\n }\n }}\n placeholder=\"Add tag\"\n helperText=\"Add a tag to your API product\"\n margin=\"normal\"\n disabled={creating}\n InputProps={{\n endAdornment: tagInput ? (\n <InputAdornment position=\"end\">\n <IconButton size=\"small\" onClick={handleAddTag} disabled={creating}>\n <AddIcon fontSize=\"small\" />\n </IconButton>\n </InputAdornment>\n ) : undefined,\n }}\n />\n </Grid>\n {tags.length > 0 && (\n <Grid item xs={12}>\n <Box display=\"flex\" flexWrap=\"wrap\">\n {tags.map(tag => (\n <Chip\n key={tag}\n label={tag}\n onDelete={creating ? undefined : () => handleDeleteTag(tag)}\n size=\"small\"\n className={classes.tagChip}\n disabled={creating}\n />\n ))}\n </Box>\n </Grid>\n )}\n <Grid item xs={12}>\n <TextField\n fullWidth\n label=\"Description\"\n value={description}\n onChange={e => setDescription(e.target.value)}\n placeholder=\"API description\"\n margin=\"normal\"\n multiline\n rows={2}\n required\n disabled={creating}\n InputLabelProps={{\n classes: {\n asterisk: classes.asterisk,\n },\n }}\n />\n </Grid>\n </Grid>\n\n {/* Add API and Associate route section */}\n <Box className={classes.sectionHeader}>\n <Typography variant=\"subtitle1\"><strong>Add API and Associate route</strong></Typography>\n <Tooltip title=\"Register an existing API and associate HTTPRoute for your API product\">\n <InfoOutlinedIcon className={classes.infoIcon} />\n </Tooltip>\n </Box>\n <Grid container spacing={2}>\n <Grid item xs={12}>\n <TextField\n fullWidth\n label=\"OpenAPI Spec URL\"\n value={openAPISpec}\n onChange={e => handleOpenAPISpecChange(e.target.value)}\n placeholder=\"https://api.example.com/openapi.json\"\n helperText={openAPISpecError || \"Enter the full path to your API spec file\"}\n error={!!openAPISpecError}\n margin=\"normal\"\n disabled={creating}\n />\n </Grid>\n <Grid item xs={12}>\n <TextField\n fullWidth\n label=\"Documentation URL\"\n value={docsURL}\n onChange={e => setDocsURL(e.target.value)}\n placeholder=\"https://docs.example.com/api\"\n helperText=\"Link to external documentation for this API\"\n margin=\"normal\"\n disabled={creating}\n />\n </Grid>\n <Grid item xs={12}>\n <TextField\n fullWidth\n select\n label=\"HTTPRoute\"\n value={selectedHTTPRoute}\n onChange={e => setSelectedHTTPRoute(e.target.value)}\n margin=\"normal\"\n required\n helperText={\n httpRoutesError\n ? \"Unable to load HTTPRoutes. Please retry.\"\n : \"Select an HTTPRoute. APIProduct will be created in the same namespace.\"\n }\n error={!!httpRoutesError}\n disabled={httpRoutesLoading || creating || !!httpRoutesError}\n InputLabelProps={{\n classes: {\n asterisk: classes.asterisk,\n },\n }}\n SelectProps={{\n 'data-testid': 'httproute-select',\n MenuProps: {\n PaperProps: {\n style: { maxHeight: 400 },\n },\n anchorOrigin: {\n vertical: 'bottom',\n horizontal: 'left',\n },\n transformOrigin: {\n vertical: 'top',\n horizontal: 'left',\n },\n getContentAnchorEl: null,\n },\n } as any}\n >\n {/* Search bar inside dropdown */}\n <Box px={2} pt={1} pb={1} style={{ position: 'sticky', top: 0, zIndex: 1 }}>\n <TextField\n fullWidth\n size=\"small\"\n placeholder=\"Search...\"\n value={routeSearchTerm}\n onChange={e => setRouteSearchTerm(e.target.value)}\n onKeyDown={e => e.stopPropagation()}\n onClick={e => e.stopPropagation()}\n InputProps={{\n endAdornment: (\n <InputAdornment position=\"end\">\n <TextField\n select\n size=\"small\"\n value={routeSearchField}\n onChange={e => setRouteSearchField(e.target.value as 'name' | 'namespace' | 'planpolicy')}\n onKeyDown={e => e.stopPropagation()}\n onClick={e => e.stopPropagation()}\n style={{ minWidth: 120 }}\n variant=\"standard\"\n >\n <MenuItem value=\"name\">Name</MenuItem>\n <MenuItem value=\"namespace\">Namespace</MenuItem>\n <MenuItem value=\"planpolicy\">PlanPolicy</MenuItem>\n </TextField>\n </InputAdornment>\n ),\n }}\n />\n </Box>\n {httpRoutesLoading && (\n <MenuItem value=\"\">Loading...</MenuItem>\n )}\n {httpRoutesError && (\n <MenuItem value=\"\">Error loading routes</MenuItem>\n )}\n {!httpRoutesLoading && !httpRoutesError && httpRoutes && httpRoutes.length === 0 && (\n <MenuItem value=\"\">No HTTPRoutes available</MenuItem>\n )}\n {!httpRoutesLoading && !httpRoutesError && httpRoutes && httpRoutes\n .filter((route: any) => {\n if (!routeSearchTerm) return true;\n const routeNs = route.metadata.namespace;\n const routeName = route.metadata.name;\n const policyInfo = getPolicyInfoForRoute(routeNs, routeName);\n const searchLower = routeSearchTerm.toLowerCase();\n\n switch (routeSearchField) {\n case 'name':\n return routeName.toLowerCase().includes(searchLower);\n case 'namespace':\n return routeNs.toLowerCase().includes(searchLower);\n case 'planpolicy':\n return policyInfo.toLowerCase().includes(searchLower);\n default:\n return true;\n }\n })\n .map((route: any) => {\n const routeNs = route.metadata.namespace;\n const routeName = route.metadata.name;\n const policyInfo = getPolicyInfoForRoute(routeNs, routeName);\n return (\n <MenuItem\n key={`${routeNs}/${routeName}`}\n value={`${routeNs}/${routeName}`}\n >\n <Box>\n <Typography variant=\"body1\">{routeName}</Typography>\n <Typography variant=\"caption\" color=\"textSecondary\">\n Associated PlanPolicy: {policyInfo}\n </Typography>\n </Box>\n </MenuItem>\n );\n })}\n </TextField>\n </Grid>\n </Grid>\n\n {/* HTTPRoute policies section */}\n {selectedHTTPRoute && (\n <>\n <Box className={classes.sectionHeader}>\n <Typography variant=\"subtitle1\"><strong>HTTPRoute policies</strong></Typography>\n <Tooltip title=\"Shows the associated policies and rate limit tiers for the selected HTTPRoute\">\n <InfoOutlinedIcon className={classes.infoIcon} />\n </Tooltip>\n </Box>\n <ApiProductPolicies\n planPolicy={planPolicyProps}\n authPolicy={authPolicyProps}\n rateLimitPolicy={rateLimitPolicyProps}\n includeTopMargin={false}\n />\n </>\n )}\n\n <Box className={classes.sectionHeader}>\n <Typography variant=\"subtitle1\"><strong>Lifecycle and Visibility</strong></Typography>\n <Tooltip title=\"Control the lifecycle state and catalog visibility of this API product\">\n <InfoOutlinedIcon className={classes.infoIcon} />\n </Tooltip>\n </Box>\n <Grid container spacing={2}>\n <Grid item xs={6}>\n <TextField\n fullWidth\n select\n label=\"Lifecycle\"\n value={lifecycle}\n onChange={e => setLifecycle(e.target.value as Lifecycle)}\n margin=\"normal\"\n helperText=\"API lifecycle state\"\n disabled={creating}\n >\n <MenuItem value=\"experimental\">Experimental</MenuItem>\n <MenuItem value=\"production\">Production</MenuItem>\n <MenuItem value=\"deprecated\">Deprecated</MenuItem>\n <MenuItem value=\"retired\">Retired</MenuItem>\n </TextField>\n </Grid>\n <Grid item xs={6}>\n <TextField\n fullWidth\n select\n label=\"Publish Status\"\n value={publishStatus}\n onChange={e => setPublishStatus(e.target.value as 'Draft' | 'Published')}\n margin=\"normal\"\n helperText=\"Controls catalog visibility (Draft = hidden from consumers)\"\n disabled={creating}\n >\n <MenuItem value=\"Draft\">Draft</MenuItem>\n <MenuItem value=\"Published\">Published</MenuItem>\n </TextField>\n </Grid>\n </Grid>\n\n {/* API Key approval section */}\n <Box className={classes.sectionHeader}>\n <Typography variant=\"subtitle1\"><strong>API Key approval</strong></Typography>\n <Tooltip title=\"Choose how API key requests are handled for this product\">\n <InfoOutlinedIcon className={classes.infoIcon} />\n </Tooltip>\n </Box>\n <FormControl component=\"fieldset\" disabled={creating}>\n <RadioGroup\n row\n value={approvalMode}\n onChange={e => setApprovalMode(e.target.value as 'automatic' | 'manual')}\n >\n <FormControlLabel\n value=\"manual\"\n control={<Radio color=\"primary\" />}\n label={\n <Box>\n <Typography variant=\"body2\">Need manual approval</Typography>\n <Typography variant=\"caption\" color=\"textSecondary\">\n Requires approval for requesting this API\n </Typography>\n </Box>\n }\n />\n <FormControlLabel\n value=\"automatic\"\n control={<Radio color=\"primary\" />}\n label={\n <Box>\n <Typography variant=\"body2\">Automatic</Typography>\n <Typography variant=\"caption\" color=\"textSecondary\">\n Keys are created without need to be approved\n </Typography>\n </Box>\n }\n />\n </RadioGroup>\n </FormControl>\n </DialogContent>\n <DialogActions>\n <Button onClick={handleClose} disabled={creating}>Cancel</Button>\n <Button\n onClick={handleCreate}\n color=\"primary\"\n variant=\"contained\"\n disabled={creating || !name || !displayName || !description || !selectedHTTPRoute || hasValidationErrors}\n startIcon={creating ? <CircularProgress size={16} color=\"inherit\" /> : undefined}\n >\n {creating ? 'Creating...' : 'Create'}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n","import React, { useState, useMemo, useCallback } from \"react\";\nimport {\n Typography,\n Box,\n Chip,\n Button,\n IconButton,\n CircularProgress,\n makeStyles,\n} from \"@material-ui/core\";\nimport AddIcon from \"@material-ui/icons/Add\";\nimport DeleteIcon from \"@material-ui/icons/Delete\";\nimport EditIcon from \"@material-ui/icons/Edit\";\nimport VpnKeyIcon from \"@material-ui/icons/VpnKey\";\nimport LockIcon from \"@material-ui/icons/Lock\";\nimport { FilterPanel, FilterSection, FilterState } from \"../FilterPanel\";\nimport {\n Header,\n Page,\n Content,\n SupportButton,\n ResponseErrorPanel,\n Link,\n Table,\n TableColumn,\n} from \"@backstage/core-components\";\nimport useAsync from \"react-use/lib/useAsync\";\nimport {\n useApi,\n alertApiRef,\n identityApiRef,\n} from \"@backstage/core-plugin-api\";\nimport { catalogApiRef } from \"@backstage/plugin-catalog-react\";\nimport {kuadrantApiRef, KuadrantList} from \"../../api\";\nimport { PermissionGate } from \"../PermissionGate\";\nimport { CreateAPIProductDialog } from \"../CreateAPIProductDialog\";\nimport {\n kuadrantApiProductCreatePermission,\n kuadrantApiProductDeleteOwnPermission,\n kuadrantApiProductDeleteAllPermission,\n kuadrantApiProductUpdateOwnPermission,\n kuadrantApiProductUpdateAllPermission,\n kuadrantApiProductListPermission,\n kuadrantPlanPolicyListPermission,\n} from \"../../permissions\";\nimport { useKuadrantPermission } from \"../../utils/permissions\";\nimport { EditAPIProductDialog } from \"../EditAPIProductDialog\";\nimport { ConfirmDeleteDialog } from \"../ConfirmDeleteDialog\";\nimport { getLifecycleChipStyle } from \"../../utils/styles\";\nimport emptyStateIllustration from \"../../assets/empty-state-illustration.png\";\nimport {APIProduct, PlanPolicy} from \"../../types/api-management.ts\";\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n display: \"flex\",\n height: \"100%\",\n minHeight: 400,\n },\n tableContainer: {\n flex: 1,\n overflow: \"auto\",\n padding: 10,\n },\n emptyState: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n padding: theme.spacing(6),\n minHeight: 400,\n },\n emptyStateContent: {\n display: \"flex\",\n alignItems: \"center\",\n gap: theme.spacing(6),\n maxWidth: 900,\n },\n emptyStateText: {\n flex: 1,\n },\n emptyStateTitle: {\n marginBottom: theme.spacing(2),\n },\n emptyStateDescription: {\n marginBottom: theme.spacing(3),\n color: theme.palette.text.secondary,\n },\n emptyStateImage: {\n maxWidth: 400,\n height: \"auto\",\n },\n}));\n\nconst ResourceList = () => {\n const classes = useStyles();\n const kuadrantApi = useApi(kuadrantApiRef);\n const alertApi = useApi(alertApiRef);\n const identityApi = useApi(identityApiRef);\n const catalogApi = useApi(catalogApiRef);\n const [userEntityRef, setUserEntityRef] = useState<string>(\"\");\n const [createDialogOpen, setCreateDialogOpen] = useState(false);\n const [editDialogOpen, setEditDialogOpen] = useState(false);\n const [refreshTrigger, setRefreshTrigger] = useState(0);\n const [deleteDialogOpen, setDeleteDialogOpen] = useState(false);\n const [apiProductToDelete, setApiProductToDelete] = useState<{\n namespace: string;\n name: string;\n } | null>(null);\n const [apiProductToEdit, setApiProductToEdit] = useState<{\n namespace: string;\n name: string;\n } | null>(null);\n const [deleting, setDeleting] = useState(false);\n const [deleteStats, setDeleteStats] = useState<{\n requests: number;\n secrets: number;\n } | null>(null);\n const [filters, setFilters] = useState<FilterState>({\n status: [],\n lifecycle: [],\n policy: [],\n route: [],\n namespace: [],\n tags: [],\n authentication: [],\n });\n\n const {\n allowed: canCreateApiProduct,\n loading: createPermissionLoading,\n error: createPermissionError,\n } = useKuadrantPermission(kuadrantApiProductCreatePermission);\n\n const {\n allowed: canDeleteOwnApiProduct,\n loading: deleteOwnPermissionLoading,\n } = useKuadrantPermission(kuadrantApiProductDeleteOwnPermission);\n\n const {\n allowed: canDeleteAllApiProducts,\n loading: deleteAllPermissionLoading,\n error: deletePermissionError,\n } = useKuadrantPermission(kuadrantApiProductDeleteAllPermission);\n\n const { allowed: canUpdateOwnApiProduct } = useKuadrantPermission(\n kuadrantApiProductUpdateOwnPermission,\n );\n\n const { allowed: canUpdateAllApiProducts } = useKuadrantPermission(\n kuadrantApiProductUpdateAllPermission,\n );\n\n const deletePermissionLoading =\n deleteOwnPermissionLoading || deleteAllPermissionLoading;\n\n const {\n allowed: canListPlanPolicies,\n loading: planPolicyPermissionLoading,\n error: planPolicyPermissionError,\n } = useKuadrantPermission(kuadrantPlanPolicyListPermission);\n\n useAsync(async () => {\n const identity = await identityApi.getBackstageIdentity();\n setUserEntityRef(identity.userEntityRef);\n }, [identityApi]);\n\n const {\n value: apiProducts,\n loading: apiProductsLoading,\n error: apiProductsError,\n } = useAsync(async (): Promise<KuadrantList<APIProduct>> => {\n return kuadrantApi.getApiProducts();\n }, [kuadrantApi, refreshTrigger]);\n\n const {\n value: planPolicies,\n loading: planPoliciesLoading,\n error: planPoliciesError,\n } = useAsync(async (): Promise<KuadrantList<PlanPolicy>> => {\n // skip fetch if user doesn't have permission\n if (!canListPlanPolicies) {\n return { items: [] };\n }\n return kuadrantApi.getPlanPolicies();\n }, [kuadrantApi, refreshTrigger, canListPlanPolicies]);\n\n // fetch catalog entities synced from apiproducts to get lifecycle\n const { value: catalogEntities } = useAsync(async () => {\n const response = await catalogApi.getEntities({\n filter: {\n kind: 'API',\n 'metadata.labels.kuadrant.io/synced': 'true',\n },\n fields: ['metadata.name', 'spec.lifecycle'],\n });\n return response.items;\n }, [catalogApi, refreshTrigger]);\n\n // build name -> lifecycle lookup from catalog entities\n const lifecycleByName = useMemo(() => {\n const map = new Map<string, string>();\n if (catalogEntities) {\n for (const entity of catalogEntities) {\n const lifecycle = (entity.spec as any)?.lifecycle;\n if (lifecycle) {\n map.set(entity.metadata.name, lifecycle);\n }\n }\n }\n return map;\n }, [catalogEntities]);\n\n const getLifecycle = useCallback((product: APIProduct): string | undefined => {\n return lifecycleByName.get(product.metadata.name);\n }, [lifecycleByName]);\n\n // helper to find policy for a given route\n const getPolicyForProduct = useCallback((product: APIProduct): string | null => {\n if (!planPolicies?.items) return null;\n const targetRef = product.spec?.targetRef;\n if (!targetRef) return null;\n\n const policy = planPolicies.items.find((pp: PlanPolicy) => {\n const ref = (pp as any).spec.targetRef;\n return (\n ref?.kind === \"HTTPRoute\" &&\n ref?.name === targetRef.name &&\n (!ref?.namespace || ref?.namespace === (targetRef.namespace || product.metadata.namespace))\n );\n });\n return policy?.metadata.name || null;\n }, [planPolicies]);\n\n // helper to get auth schemes for a product\n const getAuthSchemes = useCallback((product: APIProduct): string[] => {\n const authSchemes = product.status?.discoveredAuthScheme?.authentication || {};\n const schemeObjects = Object.values(authSchemes);\n const schemes: string[] = [];\n\n if (schemeObjects.some((scheme: any) => scheme.hasOwnProperty(\"apiKey\"))) {\n schemes.push(\"API Key\");\n }\n if (schemeObjects.some((scheme: any) => scheme.hasOwnProperty(\"jwt\"))) {\n schemes.push(\"OIDC\");\n }\n if (schemes.length === 0) {\n schemes.push(\"Unknown\");\n }\n return schemes;\n }, []);\n\n const loading =\n apiProductsLoading ||\n planPoliciesLoading ||\n createPermissionLoading ||\n deletePermissionLoading ||\n planPolicyPermissionLoading;\n const error = apiProductsError || planPoliciesError;\n const permissionError =\n createPermissionError || deletePermissionError || planPolicyPermissionError;\n\n const allProducts = useMemo(() => {\n const products = apiProducts?.items || [];\n\n // API consumers (users without create/update permissions) should only see Published products\n // API owners can see all products (Draft and Published)\n if (!canCreateApiProduct && !canUpdateOwnApiProduct && !canUpdateAllApiProducts) {\n return products.filter((p: APIProduct) => {\n const publishStatus = p.spec?.publishStatus || 'Draft';\n return publishStatus === 'Published';\n });\n }\n\n return products;\n }, [apiProducts, canCreateApiProduct, canUpdateOwnApiProduct, canUpdateAllApiProducts]);\n\n const filterSections: FilterSection[] = useMemo(() => {\n const statusCounts = { Draft: 0, Published: 0 };\n const lifecycleCounts = new Map<string, number>();\n const policyCounts = new Map<string, number>();\n const routeCounts = new Map<string, number>();\n const namespaceCounts = new Map<string, number>();\n const tagCounts = new Map<string, number>();\n const authCounts = new Map<string, number>();\n\n allProducts.forEach((p: APIProduct) => {\n const status = p.spec?.publishStatus || \"Draft\";\n statusCounts[status as keyof typeof statusCounts]++;\n\n const lifecycle = getLifecycle(p);\n if (lifecycle) {\n lifecycleCounts.set(lifecycle, (lifecycleCounts.get(lifecycle) || 0) + 1);\n }\n\n const policy = getPolicyForProduct(p) || \"N/A\";\n policyCounts.set(policy, (policyCounts.get(policy) || 0) + 1);\n\n const route = p.spec?.targetRef?.name || \"unknown\";\n routeCounts.set(route, (routeCounts.get(route) || 0) + 1);\n\n const ns = p.metadata.namespace;\n namespaceCounts.set(ns, (namespaceCounts.get(ns) || 0) + 1);\n\n const tags = p.spec?.tags || [];\n tags.forEach((tag: string) => {\n tagCounts.set(tag, (tagCounts.get(tag) || 0) + 1);\n });\n\n const authSchemes = getAuthSchemes(p);\n authSchemes.forEach((scheme: string) => {\n authCounts.set(scheme, (authCounts.get(scheme) || 0) + 1);\n });\n });\n\n const sections: FilterSection[] = [\n {\n id: \"status\",\n title: \"Publish Status\",\n options: [\n { value: \"Draft\", label: \"Draft\", count: statusCounts.Draft },\n { value: \"Published\", label: \"Published\", count: statusCounts.Published },\n ],\n },\n {\n id: \"lifecycle\",\n title: \"Lifecycle\",\n options: Array.from(lifecycleCounts.entries()).map(([state, count]) => ({\n value: state,\n label: state.charAt(0).toUpperCase() + state.slice(1),\n count,\n })),\n },\n {\n id: \"authentication\",\n title: \"Authentication\",\n options: Array.from(authCounts.entries()).map(([scheme, count]) => ({\n value: scheme,\n label: scheme,\n count,\n })),\n },\n {\n id: \"route\",\n title: \"Route\",\n options: Array.from(routeCounts.entries()).map(([name, count]) => ({\n value: name,\n label: name,\n count,\n })),\n collapsed: routeCounts.size > 5,\n },\n {\n id: \"namespace\",\n title: \"Namespace\",\n options: Array.from(namespaceCounts.entries()).map(([ns, count]) => ({\n value: ns,\n label: ns,\n count,\n })),\n collapsed: namespaceCounts.size > 5,\n },\n {\n id: \"tags\",\n title: \"Tags\",\n options: Array.from(tagCounts.entries()).map(([tag, count]) => ({\n value: tag,\n label: tag,\n count,\n })),\n collapsed: tagCounts.size > 5,\n },\n ];\n\n // only show policy filter if user can list planpolicies\n if (canListPlanPolicies) {\n sections.splice(2, 0, {\n id: \"policy\",\n title: \"Policy\",\n options: Array.from(policyCounts.entries()).map(([name, count]) => ({\n value: name,\n label: name,\n count,\n })),\n collapsed: policyCounts.size > 5,\n });\n }\n\n return sections;\n }, [allProducts, getPolicyForProduct, getAuthSchemes, getLifecycle, canListPlanPolicies]);\n\n const filteredProducts = useMemo(() => {\n return allProducts.filter((p: APIProduct) => {\n if (filters.status.length > 0) {\n const status = p.spec?.publishStatus || \"Draft\";\n if (!filters.status.includes(status)) return false;\n }\n\n if (filters.lifecycle && filters.lifecycle.length > 0) {\n const lifecycle = getLifecycle(p);\n if (!lifecycle || !filters.lifecycle.includes(lifecycle)) return false;\n }\n\n if (filters.authentication.length > 0) {\n const authSchemes = getAuthSchemes(p);\n if (!filters.authentication.some((a: string) => authSchemes.includes(a))) return false;\n }\n\n if (filters.policy.length > 0) {\n const policy = getPolicyForProduct(p) || \"N/A\";\n if (!filters.policy.includes(policy)) return false;\n }\n\n if (filters.route.length > 0) {\n const route = p.spec?.targetRef?.name || \"unknown\";\n if (!filters.route.includes(route)) return false;\n }\n\n if (filters.namespace.length > 0) {\n if (!filters.namespace.includes(p.metadata.namespace)) return false;\n }\n\n if (filters.tags.length > 0) {\n const tags = p.spec?.tags || [];\n if (!filters.tags.some((t: string) => tags.includes(t))) return false;\n }\n\n return true;\n });\n }, [allProducts, filters, getPolicyForProduct, getAuthSchemes, getLifecycle]);\n\n const handleCreateSuccess = (productInfo: { namespace: string; name: string; displayName: string }) => {\n setRefreshTrigger((prev) => prev + 1);\n alertApi.post({\n message: `\"${productInfo.displayName}\" created successfully`,\n severity: \"success\",\n display: \"transient\",\n });\n };\n\n const handleEditClick = (namespace: string, name: string) => {\n setApiProductToEdit({ namespace, name });\n setEditDialogOpen(true);\n };\n\n const handleEditSuccess = () => {\n setRefreshTrigger((prev) => prev + 1);\n const productName = apiProductToEdit?.name || \"API Product\";\n alertApi.post({\n message: `\"${productName}\" updated successfully`,\n severity: \"success\",\n display: \"transient\",\n });\n };\n\n const handleDeleteClick = async (namespace: string, name: string) => {\n setApiProductToDelete({ namespace, name });\n setDeleteStats(null);\n\n try {\n const data = await kuadrantApi.getRequestsByNamespace(namespace);\n const related = (data.items || []).filter(\n (r: any) =>\n r.spec.apiName === name && r.spec.apiNamespace === namespace,\n );\n const approved = related.filter(\n (r: any) => r.status?.phase === \"Approved\",\n ).length;\n setDeleteStats({ requests: related.length, secrets: approved });\n } catch (err) {\n const errorMessage =\n err instanceof Error ? err.message : \"unknown error occurred\";\n alertApi.post({\n message: `Failed to delete access request: ${errorMessage}`,\n severity: \"error\",\n display: \"transient\",\n });\n } finally {\n setDeleteDialogOpen(true);\n }\n\n };\n\n const handleDeleteConfirm = async () => {\n if (!apiProductToDelete) return;\n\n setDeleting(true);\n try {\n await kuadrantApi.deleteApiProduct(\n apiProductToDelete.namespace,\n apiProductToDelete.name,\n );\n\n const deletedName = apiProductToDelete?.name || \"API Product\";\n setRefreshTrigger((prev) => prev + 1);\n alertApi.post({\n message: `\"${deletedName}\" deleted successfully`,\n severity: \"success\",\n display: \"transient\",\n });\n } catch (err) {\n const errorMessage =\n err instanceof Error ? err.message : \"unknown error occurred\";\n alertApi.post({\n message: `Failed to delete API Product: ${errorMessage}`,\n severity: \"error\",\n display: \"transient\",\n });\n } finally {\n setDeleting(false);\n setDeleteDialogOpen(false);\n setApiProductToDelete(null);\n }\n };\n\n const handleDeleteCancel = () => {\n setDeleteDialogOpen(false);\n setApiProductToDelete(null);\n };\n\n const handlePublishToggle = async (row: any) => {\n const namespace = row.metadata.namespace;\n const name = row.metadata.name;\n const displayName = row.spec?.displayName || name;\n const currentStatus = row.spec?.publishStatus || \"Draft\";\n const newStatus = currentStatus === \"Published\" ? \"Draft\" : \"Published\";\n // prevent publishing retired APIs\n if (newStatus === \"Published\" && getLifecycle(row) === \"retired\") {\n alertApi.post({\n message: `Cannot publish a retired API product. Please change the lifecycle status first.`,\n severity: \"error\",\n display: \"transient\",\n });\n return;\n }\n\n const productPatch: Partial<APIProduct> = {\n // @ts-ignore partial obj\n spec: {\n publishStatus: newStatus\n },\n }\n\n try {\n await kuadrantApi.updateApiProduct(namespace, name, productPatch);\n\n setRefreshTrigger((prev) => prev + 1);\n alertApi.post({\n message: `\"${displayName}\" ${newStatus === \"Published\" ? \"published\" : \"unpublished\"} successfully`,\n severity: \"success\",\n display: \"transient\",\n });\n } catch (err) {\n const errorMessage =\n err instanceof Error ? err.message : \"unknown error occurred\";\n alertApi.post({\n message: `Failed to update publish status: ${errorMessage}`,\n severity: \"error\",\n display: \"transient\",\n });\n }\n };\n\n const columns: TableColumn[] = [\n {\n title: \"Name\",\n field: \"spec.displayName\",\n render: (row: any) => {\n const displayName = row.spec?.displayName ?? row.metadata.name;\n return (\n <Link to={`/kuadrant/api-products/${row.metadata.namespace}/${row.metadata.name}`}>\n <strong>{displayName}</strong>\n </Link>\n );\n },\n customFilterAndSearch: (term, row: any) => {\n const displayName = row.spec?.displayName || row.metadata.name || \"\";\n return displayName.toLowerCase().includes(term.toLowerCase());\n },\n },\n {\n title: \"Version\",\n field: \"spec.version\",\n render: (row: any) => row.spec?.version || \"-\",\n },\n {\n title: \"Route\",\n field: \"spec.targetRef.name\",\n render: (row: any) => row.spec?.targetRef?.name || \"-\",\n },\n // only show policy column if user can list planpolicies\n ...(canListPlanPolicies\n ? [\n {\n title: \"Policy\",\n field: \"policy\",\n render: (row: any) => getPolicyForProduct(row) || \"N/A\",\n },\n ]\n : []),\n {\n title: \"Tags\",\n field: \"spec.tags\",\n render: (row: any) => {\n const tags = row.spec?.tags || [];\n if (tags.length === 0) return \"-\";\n return (\n <Box display=\"flex\" style={{ gap: 4, flexWrap: \"wrap\" }}>\n {tags.map((tag: string) => (\n <Chip key={tag} label={tag} size=\"small\" variant=\"outlined\" />\n ))}\n </Box>\n );\n },\n },\n {\n title: \"Status\",\n field: \"spec.publishStatus\",\n render: (row: any) => {\n const status = row.spec?.publishStatus || \"Draft\";\n return (\n <Chip\n label={status}\n size=\"small\"\n color={status === \"Published\" ? \"primary\" : \"default\"}\n />\n );\n },\n },\n {\n title: \"Lifecycle\",\n render: (row: any) => {\n const lifecycle = getLifecycle(row);\n if (!lifecycle) return \"-\";\n return (\n <Chip\n label={lifecycle.charAt(0).toUpperCase() + lifecycle.slice(1)}\n size=\"small\"\n style={getLifecycleChipStyle(lifecycle)}\n />\n );\n },\n },\n {\n title: \"Authentication\",\n field: \"status.discoveredAuthScheme\",\n render: (row: any) => {\n const authSchemes =\n row.status?.discoveredAuthScheme?.authentication || {};\n const schemeObjects = Object.values(authSchemes);\n\n const hasApiKey = schemeObjects.some((scheme: any) =>\n scheme.hasOwnProperty(\"apiKey\"),\n );\n const hasJwt = schemeObjects.some((scheme: any) =>\n scheme.hasOwnProperty(\"jwt\"),\n );\n\n if (!hasApiKey && !hasJwt) {\n return (\n <Typography variant=\"body2\" style={{ fontStyle: \"italic\" }}>\n unknown\n </Typography>\n );\n }\n\n return (\n <Box display=\"flex\" style={{ gap: 4 }}>\n {hasApiKey && (\n <Chip\n icon={<VpnKeyIcon />}\n label=\"API Key\"\n size=\"small\"\n color=\"primary\"\n />\n )}\n {hasJwt && (\n <Chip\n icon={<LockIcon />}\n label=\"OIDC\"\n size=\"small\"\n color=\"secondary\"\n />\n )}\n </Box>\n );\n },\n },\n {\n title: \"Namespace\",\n field: \"metadata.namespace\",\n },\n {\n title: \"Actions\",\n field: \"actions\",\n filtering: false,\n render: (row: any) => {\n const owner = row.metadata?.annotations?.[\"backstage.io/owner\"];\n const isOwner = owner === userEntityRef;\n const canEdit =\n canUpdateAllApiProducts || (canUpdateOwnApiProduct && isOwner);\n const canDelete =\n canDeleteAllApiProducts || (canDeleteOwnApiProduct && isOwner);\n const isPublished = row.spec?.publishStatus === \"Published\";\n\n return (\n <Box display=\"flex\" alignItems=\"center\" style={{ gap: 4 }}>\n {canEdit && (\n <Button\n size=\"small\"\n color=\"primary\"\n onClick={() => handlePublishToggle(row)}\n style={{ marginRight: 4, textTransform: \"none\" }}\n >\n {isPublished ? \"Unpublish\" : \"Publish\"}\n </Button>\n )}\n {canEdit && (\n <IconButton\n size=\"small\"\n onClick={() =>\n handleEditClick(row.metadata.namespace, row.metadata.name)\n }\n title=\"Edit API Product\"\n >\n <EditIcon fontSize=\"small\" />\n </IconButton>\n )}\n {canDelete && (\n <IconButton\n size=\"small\"\n onClick={() =>\n handleDeleteClick(row.metadata.namespace, row.metadata.name)\n }\n title=\"Delete API Product\"\n >\n <DeleteIcon fontSize=\"small\" />\n </IconButton>\n )}\n </Box>\n );\n },\n },\n ];\n\n return (\n <Page themeId=\"tool\">\n <Header\n title=\"API Products\"\n subtitle=\"Manage API products for Kubernetes\"\n >\n <SupportButton>Manage API products and plan policies</SupportButton>\n </Header>\n <Content>\n {loading && (\n <Box\n display=\"flex\"\n flexDirection=\"column\"\n alignItems=\"center\"\n justifyContent=\"center\"\n minHeight={300}\n >\n <CircularProgress />\n <Typography variant=\"h6\" style={{ marginTop: 16 }}>\n Loading data...\n </Typography>\n <Typography variant=\"body2\" color=\"textSecondary\">\n Preparing your data... This should only take a moment.\n </Typography>\n </Box>\n )}\n {error && <ResponseErrorPanel error={error} />}\n {permissionError && (\n <Box p={2}>\n <Typography color=\"error\">\n unable to check permissions: {permissionError.message}\n </Typography>\n <Typography variant=\"body2\" color=\"textSecondary\">\n permission:{\" \"}\n {createPermissionError\n ? \"kuadrant.apiproduct.create\"\n : deletePermissionError\n ? \"kuadrant.apiproduct.delete\"\n : planPolicyPermissionError\n ? \"kuadrant.planpolicy.list\"\n : \"unknown\"}\n </Typography>\n <Typography variant=\"body2\" color=\"textSecondary\">\n please try again or contact your administrator\n </Typography>\n </Box>\n )}\n {!loading && !error && !permissionError && allProducts.length === 0 && (\n <Box className={classes.emptyState}>\n <Box className={classes.emptyStateContent}>\n <Box className={classes.emptyStateText}>\n <Typography variant=\"h4\" className={classes.emptyStateTitle}>\n API Product\n </Typography>\n <Typography\n variant=\"body1\"\n className={classes.emptyStateDescription}\n >\n Create API product by registering existing API, associate\n route and policy\n </Typography>\n {canCreateApiProduct && (\n <Button\n variant=\"contained\"\n color=\"primary\"\n startIcon={<AddIcon />}\n onClick={() => setCreateDialogOpen(true)}\n >\n Create API Product\n </Button>\n )}\n </Box>\n <img\n src={emptyStateIllustration}\n alt=\"API Product illustration\"\n className={classes.emptyStateImage}\n />\n </Box>\n </Box>\n )}\n {!loading && !error && !permissionError && allProducts.length > 0 && (\n <Box className={classes.container}>\n <FilterPanel\n sections={filterSections}\n filters={filters}\n onChange={setFilters}\n />\n <Box className={classes.tableContainer}>\n <Box display=\"flex\" justifyContent=\"flex-end\" mb={2}>\n {canCreateApiProduct && (\n <Button\n variant=\"contained\"\n color=\"primary\"\n size=\"small\"\n startIcon={<AddIcon />}\n onClick={() => setCreateDialogOpen(true)}\n >\n Create API Product\n </Button>\n )}\n </Box>\n {filteredProducts.length === 0 ? (\n <Box p={4} textAlign=\"center\">\n <Typography variant=\"body1\" color=\"textSecondary\">\n No API products match the selected filters.\n </Typography>\n </Box>\n ) : (\n <Table\n options={{\n paging: filteredProducts.length > 10,\n pageSize: 20,\n search: true,\n filtering: false,\n debounceInterval: 300,\n toolbar: true,\n emptyRowsWhenPaging: false,\n }}\n columns={columns}\n data={filteredProducts}\n />\n )}\n </Box>\n </Box>\n )}\n <CreateAPIProductDialog\n open={createDialogOpen}\n onClose={() => setCreateDialogOpen(false)}\n onSuccess={handleCreateSuccess}\n />\n <EditAPIProductDialog\n open={editDialogOpen}\n onClose={() => setEditDialogOpen(false)}\n onSuccess={handleEditSuccess}\n namespace={apiProductToEdit?.namespace || \"\"}\n name={apiProductToEdit?.name || \"\"}\n />\n <ConfirmDeleteDialog\n open={deleteDialogOpen}\n title=\"Delete API Product\"\n description={\n deleteStats\n ? `Deleting \"${apiProductToDelete?.name}\" will also remove:\n\n• ${deleteStats.requests} API Key(s)\n• ${deleteStats.secrets} API Key Secret(s)\n\nThis action cannot be undone.`\n : `Deleting \"${apiProductToDelete?.name}\" will also remove all associated API Keys and Secrets.\nThis action cannot be undone.`\n }\n confirmText={apiProductToDelete?.name}\n severity=\"high\"\n deleting={deleting}\n onConfirm={handleDeleteConfirm}\n onCancel={handleDeleteCancel}\n />\n </Content>\n </Page>\n );\n};\n\nexport const ApiProductsPage = () => {\n return (\n <PermissionGate\n permission={kuadrantApiProductListPermission}\n errorMessage=\"you don't have permission to view the Kuadrant page\"\n >\n <ResourceList />\n </PermissionGate>\n );\n};\n"],"names":["useStyles","makeStyles","theme","root","width","minWidth","padding","spacing","borderRight","palette","divider","backgroundColor","background","paper","height","overflowY","sectionTitle","fontWeight","fontSize","textTransform","letterSpacing","color","text","secondary","marginBottom","display","alignItems","justifyContent","cursor","userSelect","filterSection","checkbox","checkboxLabel","clearButton","marginTop","count","marginLeft","FilterPanel","sections","filters","onChange","onClear","classes","collapsedSections","setCollapsedSections","React","Set","filter","s","collapsed","map","id","hasActiveFilters","Object","values","some","length","Box","className","mb","Typography","variant","Button","size","onClick","clearedFilters","forEach","section","Divider","isCollapsed","has","selectedCount","mt","toggleSection","sectionId","prev","next","delete","add","span","title","ExpandMoreIcon","ExpandLessIcon","Collapse","in","FormGroup","options","option","FormControlLabel","control","Checkbox","checked","includes","value","currentValues","newValues","v","handleCheckboxChange","label","undefined","PermissionGate","children","permission","fallback","errorMessage","allowed","loading","error","useKuadrantPermission","Progress","p","message","name","asterisk","sectionHeader","gap","infoIcon","tagChip","marginRight","CreateAPIProductDialog","open","onClose","onSuccess","selectedPlanPolicy","selectedAuthPolicy","selectedRateLimitPolicy","kuadrantApi","useApi","kuadrantApiRef","setName","useState","displayName","setDisplayName","description","setDescription","version","setVersion","approvalMode","setApprovalMode","publishStatus","setPublishStatus","lifecycle","setLifecycle","tags","setTags","tagInput","setTagInput","selectedHTTPRoute","setSelectedHTTPRoute","contactEmail","setContactEmail","contactTeam","setContactTeam","docsURL","setDocsURL","openAPISpec","setOpenAPISpec","setError","creating","setCreating","httpRoutesRetry","setHttpRoutesRetry","nameError","setNameError","openAPISpecError","setOpenAPISpecError","routeSearchTerm","setRouteSearchTerm","routeSearchField","setRouteSearchField","httpRoutes","httpRoutesLoading","httpRoutesError","useAsync","async","getHttpRoutes","items","planPolicies","planPoliciesError","getPlanPolicies","authPolicies","authPoliciesError","getAuthPolicies","rateLimitPolicies","rateLimitPoliciesError","getRateLimitPolicies","getPlanPolicyForRoute","routeNamespace","routeName","getPolicyForRoute","selectedRouteInfo","split","planPolicyAcceptedCondition","status","conditions","find","c","type","authPolicyAcceptedCondition","getRateLimitPolicyForRoute","rateLimitPolicyAcceptedCondition","planPolicyProps","statusCondition","discoveredPlans","spec","plans","authPolicyProps","namespacedName","namespace","metadata","rateLimitPolicyProps","getPolicyInfoForRoute","policy","tiers","entries","plan","limit","limits","requests","period","join","formatTierInfo","useEffect","handleAddTag","trim","handleClose","hasValidationErrors","Dialog","maxWidth","fullWidth","DialogTitle","DialogContent","Alert","severity","style","strong","Grid","container","item","xs","TextField","e","match","autoName","toLowerCase","replace","Math","floor","random","toString","padStart","validateKubernetesName","handleDisplayNameChange","target","placeholder","helperText","margin","required","disabled","InputLabelProps","handleNameChange","onKeyPress","key","preventDefault","InputProps","endAdornment","InputAdornment","position","IconButton","AddIcon","flexWrap","tag","Chip","onDelete","handleDeleteTag","tagToDelete","multiline","rows","Tooltip","InfoOutlinedIcon","handleOpenAPISpecChange","validateURL","select","SelectProps","MenuProps","PaperProps","maxHeight","anchorOrigin","vertical","horizontal","transformOrigin","getContentAnchorEl","px","pt","pb","top","zIndex","onKeyDown","stopPropagation","MenuItem","route","routeNs","policyInfo","searchLower","ApiProductPolicies","planPolicy","authPolicy","rateLimitPolicy","includeTopMargin","FormControl","component","RadioGroup","row","Radio","DialogActions","Error","selectedRouteNamespace","selectedRouteName","apiProduct","apiVersion","kind","labels","targetRef","group","contact","email","team","documentation","openAPISpecURL","createApiProduct","err","String","startIcon","CircularProgress","minHeight","tableContainer","flex","overflow","emptyState","emptyStateContent","emptyStateText","emptyStateTitle","emptyStateDescription","emptyStateImage","ResourceList","alertApi","alertApiRef","identityApi","identityApiRef","catalogApi","catalogApiRef","userEntityRef","setUserEntityRef","createDialogOpen","setCreateDialogOpen","editDialogOpen","setEditDialogOpen","refreshTrigger","setRefreshTrigger","deleteDialogOpen","setDeleteDialogOpen","apiProductToDelete","setApiProductToDelete","apiProductToEdit","setApiProductToEdit","deleting","setDeleting","deleteStats","setDeleteStats","setFilters","authentication","canCreateApiProduct","createPermissionLoading","createPermissionError","kuadrantApiProductCreatePermission","canDeleteOwnApiProduct","deleteOwnPermissionLoading","kuadrantApiProductDeleteOwnPermission","canDeleteAllApiProducts","deleteAllPermissionLoading","deletePermissionError","kuadrantApiProductDeleteAllPermission","canUpdateOwnApiProduct","kuadrantApiProductUpdateOwnPermission","canUpdateAllApiProducts","kuadrantApiProductUpdateAllPermission","deletePermissionLoading","canListPlanPolicies","planPolicyPermissionLoading","planPolicyPermissionError","kuadrantPlanPolicyListPermission","identity","getBackstageIdentity","apiProducts","apiProductsLoading","apiProductsError","getApiProducts","planPoliciesLoading","catalogEntities","getEntities","fields","lifecycleByName","useMemo","Map","entity","set","getLifecycle","useCallback","product","get","getPolicyForProduct","pp","ref","getAuthSchemes","authSchemes","discoveredAuthScheme","schemeObjects","schemes","scheme","hasOwnProperty","push","permissionError","allProducts","products","filterSections","statusCounts","Draft","Published","lifecycleCounts","policyCounts","routeCounts","namespaceCounts","tagCounts","authCounts","ns","Array","from","state","charAt","toUpperCase","slice","splice","filteredProducts","a","t","columns","field","render","Link","to","customFilterAndSearch","term","getLifecycleChipStyle","hasApiKey","hasJwt","icon","VpnKeyIcon","LockIcon","fontStyle","filtering","isOwner","annotations","canEdit","canDelete","isPublished","newStatus","post","productPatch","updateApiProduct","handlePublishToggle","handleEditClick","EditIcon","related","getRequestsByNamespace","r","apiName","apiNamespace","approved","phase","secrets","handleDeleteClick","DeleteIcon","Page","themeId","Header","subtitle","SupportButton","Content","flexDirection","ResponseErrorPanel","img","src","emptyStateIllustration","alt","textAlign","Table","paging","pageSize","search","debounceInterval","toolbar","emptyRowsWhenPaging","data","productInfo","EditAPIProductDialog","productName","ConfirmDeleteDialog","confirmText","onConfirm","deleteApiProduct","deletedName","onCancel","ApiProductsPage","kuadrantApiProductListPermission"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunkinternal_plugin_kuadrant=self.webpackChunkinternal_plugin_kuadrant||[]).push([[7164],{67164:(e,t,r)=>{r.r(t),r.d(t,{default:()=>ne});var n=function(){function e(e){var t=this;this._insertTag=function(e){var r;r=0===t.tags.length?t.insertionPoint?t.insertionPoint.nextSibling:t.prepend?t.container.firstChild:t.before:t.tags[t.tags.length-1].nextSibling,t.container.insertBefore(e,r),t.tags.push(e)},this.isSpeedy=void 0===e.speedy||e.speedy,this.tags=[],this.ctr=0,this.nonce=e.nonce,this.key=e.key,this.container=e.container,this.prepend=e.prepend,this.insertionPoint=e.insertionPoint,this.before=null}var t=e.prototype;return t.hydrate=function(e){e.forEach(this._insertTag)},t.insert=function(e){this.ctr%(this.isSpeedy?65e3:1)==0&&this._insertTag(function(e){var t=document.createElement("style");return t.setAttribute("data-emotion",e.key),void 0!==e.nonce&&t.setAttribute("nonce",e.nonce),t.appendChild(document.createTextNode("")),t.setAttribute("data-s",""),t}(this));var t=this.tags[this.tags.length-1];if(this.isSpeedy){var r=function(e){if(e.sheet)return e.sheet;for(var t=0;t<document.styleSheets.length;t++)if(document.styleSheets[t].ownerNode===e)return document.styleSheets[t]}(t);try{r.insertRule(e,r.cssRules.length)}catch(e){}}else t.appendChild(document.createTextNode(e));this.ctr++},t.flush=function(){this.tags.forEach(function(e){var t;return null==(t=e.parentNode)?void 0:t.removeChild(e)}),this.tags=[],this.ctr=0},e}(),a=Math.abs,c=String.fromCharCode,s=Object.assign;function i(e){return e.trim()}function u(e,t,r){return e.replace(t,r)}function o(e,t){return e.indexOf(t)}function l(e,t){return 0|e.charCodeAt(t)}function f(e,t,r){return e.slice(t,r)}function h(e){return e.length}function p(e){return e.length}function d(e,t){return t.push(e),e}var g=1,b=1,v=0,y=0,k=0,m="";function w(e,t,r,n,a,c,s){return{value:e,root:t,parent:r,type:n,props:a,children:c,line:g,column:b,length:s,return:""}}function $(e,t){return s(w("",null,null,"",null,null,0),e,{length:-e.length},t)}function x(){return k=y>0?l(m,--y):0,b--,10===k&&(b=1,g--),k}function A(){return k=y<v?l(m,y++):0,b++,10===k&&(b=1,g++),k}function C(){return l(m,y)}function S(){return y}function P(e,t){return f(m,e,t)}function _(e){switch(e){case 0:case 9:case 10:case 13:case 32:return 5;case 33:case 43:case 44:case 47:case 62:case 64:case 126:case 59:case 123:case 125:return 4;case 58:return 3;case 34:case 39:case 40:case 91:return 2;case 41:case 93:return 1}return 0}function z(e){return g=b=1,v=h(m=e),y=0,[]}function E(e){return m="",e}function T(e){return i(P(y-1,O(91===e?e+2:40===e?e+1:e)))}function j(e){for(;(k=C())&&k<33;)A();return _(e)>2||_(k)>3?"":" "}function N(e,t){for(;--t&&A()&&!(k<48||k>102||k>57&&k<65||k>70&&k<97););return P(e,S()+(t<6&&32==C()&&32==A()))}function O(e){for(;A();)switch(k){case e:return y;case 34:case 39:34!==e&&39!==e&&O(k);break;case 40:41===e&&O(e);break;case 92:A()}return y}function q(e,t){for(;A()&&e+k!==57&&(e+k!==84||47!==C()););return"/*"+P(t,y-1)+"*"+c(47===e?e:A())}function M(e){for(;!_(C());)A();return P(e,y)}var R="-ms-",B="-moz-",W="-webkit-",D="comm",F="rule",G="decl",H="@keyframes";function I(e,t){for(var r="",n=p(e),a=0;a<n;a++)r+=t(e[a],a,e,t)||"";return r}function J(e,t,r,n){switch(e.type){case"@layer":if(e.children.length)break;case"@import":case G:return e.return=e.return||e.value;case D:return"";case H:return e.return=e.value+"{"+I(e.children,n)+"}";case F:e.value=e.props.join(",")}return h(r=I(e.children,n))?e.return=e.value+"{"+r+"}":""}function K(e){return E(L("",null,null,null,[""],e=z(e),0,[0],e))}function L(e,t,r,n,a,s,i,f,p){for(var g=0,b=0,v=i,y=0,k=0,m=0,w=1,$=1,P=1,_=0,z="",E=a,O=s,R=n,B=z;$;)switch(m=_,_=A()){case 40:if(108!=m&&58==l(B,v-1)){-1!=o(B+=u(T(_),"&","&\f"),"&\f")&&(P=-1);break}case 34:case 39:case 91:B+=T(_);break;case 9:case 10:case 13:case 32:B+=j(m);break;case 92:B+=N(S()-1,7);continue;case 47:switch(C()){case 42:case 47:d(U(q(A(),S()),t,r),p);break;default:B+="/"}break;case 123*w:f[g++]=h(B)*P;case 125*w:case 59:case 0:switch(_){case 0:case 125:$=0;case 59+b:-1==P&&(B=u(B,/\f/g,"")),k>0&&h(B)-v&&d(k>32?V(B+";",n,r,v-1):V(u(B," ","")+";",n,r,v-2),p);break;case 59:B+=";";default:if(d(R=Q(B,t,r,g,b,a,f,z,E=[],O=[],v),s),123===_)if(0===b)L(B,t,R,R,E,s,v,f,O);else switch(99===y&&110===l(B,3)?100:y){case 100:case 108:case 109:case 115:L(e,R,R,n&&d(Q(e,R,R,0,0,a,f,z,a,E=[],v),O),a,O,v,f,n?E:O);break;default:L(B,R,R,R,[""],O,0,f,O)}}g=b=k=0,w=P=1,z=B="",v=i;break;case 58:v=1+h(B),k=m;default:if(w<1)if(123==_)--w;else if(125==_&&0==w++&&125==x())continue;switch(B+=c(_),_*w){case 38:P=b>0?1:(B+="\f",-1);break;case 44:f[g++]=(h(B)-1)*P,P=1;break;case 64:45===C()&&(B+=T(A())),y=C(),b=v=h(z=B+=M(S())),_++;break;case 45:45===m&&2==h(B)&&(w=0)}}return s}function Q(e,t,r,n,c,s,o,l,h,d,g){for(var b=c-1,v=0===c?s:[""],y=p(v),k=0,m=0,$=0;k<n;++k)for(var x=0,A=f(e,b+1,b=a(m=o[k])),C=e;x<y;++x)(C=i(m>0?v[x]+" "+A:u(A,/&\f/g,v[x])))&&(h[$++]=C);return w(e,t,r,0===c?F:l,h,d,g)}function U(e,t,r){return w(e,t,r,D,c(k),f(e,2,-2),0)}function V(e,t,r,n){return w(e,t,r,G,f(e,0,n),f(e,n+1,-1),n)}var X=function(e,t,r){for(var n=0,a=0;n=a,a=C(),38===n&&12===a&&(t[r]=1),!_(a);)A();return P(e,y)},Y=new WeakMap,Z=function(e){if("rule"===e.type&&e.parent&&!(e.length<1)){for(var t=e.value,r=e.parent,n=e.column===r.column&&e.line===r.line;"rule"!==r.type;)if(!(r=r.parent))return;if((1!==e.props.length||58===t.charCodeAt(0)||Y.get(r))&&!n){Y.set(e,!0);for(var a=[],s=function(e,t){return E(function(e,t){var r=-1,n=44;do{switch(_(n)){case 0:38===n&&12===C()&&(t[r]=1),e[r]+=X(y-1,t,r);break;case 2:e[r]+=T(n);break;case 4:if(44===n){e[++r]=58===C()?"&\f":"",t[r]=e[r].length;break}default:e[r]+=c(n)}}while(n=A());return e}(z(e),t))}(t,a),i=r.props,u=0,o=0;u<s.length;u++)for(var l=0;l<i.length;l++,o++)e.props[o]=a[u]?s[u].replace(/&\f/g,i[l]):i[l]+" "+s[u]}}},ee=function(e){if("decl"===e.type){var t=e.value;108===t.charCodeAt(0)&&98===t.charCodeAt(2)&&(e.return="",e.value="")}};function te(e,t){switch(function(e,t){return 45^l(e,0)?(((t<<2^l(e,0))<<2^l(e,1))<<2^l(e,2))<<2^l(e,3):0}(e,t)){case 5103:return W+"print-"+e+e;case 5737:case 4201:case 3177:case 3433:case 1641:case 4457:case 2921:case 5572:case 6356:case 5844:case 3191:case 6645:case 3005:case 6391:case 5879:case 5623:case 6135:case 4599:case 4855:case 4215:case 6389:case 5109:case 5365:case 5621:case 3829:return W+e+e;case 5349:case 4246:case 4810:case 6968:case 2756:return W+e+B+e+R+e+e;case 6828:case 4268:return W+e+R+e+e;case 6165:return W+e+R+"flex-"+e+e;case 5187:return W+e+u(e,/(\w+).+(:[^]+)/,W+"box-$1$2"+R+"flex-$1$2")+e;case 5443:return W+e+R+"flex-item-"+u(e,/flex-|-self/,"")+e;case 4675:return W+e+R+"flex-line-pack"+u(e,/align-content|flex-|-self/,"")+e;case 5548:return W+e+R+u(e,"shrink","negative")+e;case 5292:return W+e+R+u(e,"basis","preferred-size")+e;case 6060:return W+"box-"+u(e,"-grow","")+W+e+R+u(e,"grow","positive")+e;case 4554:return W+u(e,/([^-])(transform)/g,"$1"+W+"$2")+e;case 6187:return u(u(u(e,/(zoom-|grab)/,W+"$1"),/(image-set)/,W+"$1"),e,"")+e;case 5495:case 3959:return u(e,/(image-set\([^]*)/,W+"$1$`$1");case 4968:return u(u(e,/(.+:)(flex-)?(.*)/,W+"box-pack:$3"+R+"flex-pack:$3"),/s.+-b[^;]+/,"justify")+W+e+e;case 4095:case 3583:case 4068:case 2532:return u(e,/(.+)-inline(.+)/,W+"$1$2")+e;case 8116:case 7059:case 5753:case 5535:case 5445:case 5701:case 4933:case 4677:case 5533:case 5789:case 5021:case 4765:if(h(e)-1-t>6)switch(l(e,t+1)){case 109:if(45!==l(e,t+4))break;case 102:return u(e,/(.+:)(.+)-([^]+)/,"$1"+W+"$2-$3$1"+B+(108==l(e,t+3)?"$3":"$2-$3"))+e;case 115:return~o(e,"stretch")?te(u(e,"stretch","fill-available"),t)+e:e}break;case 4949:if(115!==l(e,t+1))break;case 6444:switch(l(e,h(e)-3-(~o(e,"!important")&&10))){case 107:return u(e,":",":"+W)+e;case 101:return u(e,/(.+:)([^;!]+)(;|!.+)?/,"$1"+W+(45===l(e,14)?"inline-":"")+"box$3$1"+W+"$2$3$1"+R+"$2box$3")+e}break;case 5936:switch(l(e,t+11)){case 114:return W+e+R+u(e,/[svh]\w+-[tblr]{2}/,"tb")+e;case 108:return W+e+R+u(e,/[svh]\w+-[tblr]{2}/,"tb-rl")+e;case 45:return W+e+R+u(e,/[svh]\w+-[tblr]{2}/,"lr")+e}return W+e+R+e+e}return e}var re=[function(e,t,r,n){if(e.length>-1&&!e.return)switch(e.type){case G:e.return=te(e.value,e.length);break;case H:return I([$(e,{value:u(e.value,"@","@"+W)})],n);case F:if(e.length)return function(e,t){return e.map(t).join("")}(e.props,function(t){switch(function(e){return(e=/(::plac\w+|:read-\w+)/.exec(e))?e[0]:e}(t)){case":read-only":case":read-write":return I([$(e,{props:[u(t,/:(read-\w+)/,":-moz-$1")]})],n);case"::placeholder":return I([$(e,{props:[u(t,/:(plac\w+)/,":"+W+"input-$1")]}),$(e,{props:[u(t,/:(plac\w+)/,":-moz-$1")]}),$(e,{props:[u(t,/:(plac\w+)/,R+"input-$1")]})],n)}return""})}}],ne=function(e){var t=e.key;if("css"===t){var r=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(r,function(e){-1!==e.getAttribute("data-emotion").indexOf(" ")&&(document.head.appendChild(e),e.setAttribute("data-s",""))})}var a,c,s=e.stylisPlugins||re,i={},u=[];a=e.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+t+' "]'),function(e){for(var t=e.getAttribute("data-emotion").split(" "),r=1;r<t.length;r++)i[t[r]]=!0;u.push(e)});var o,l,f,h,d=[J,(h=function(e){o.insert(e)},function(e){e.root||(e=e.return)&&h(e)})],g=(l=[Z,ee].concat(s,d),f=p(l),function(e,t,r,n){for(var a="",c=0;c<f;c++)a+=l[c](e,t,r,n)||"";return a});c=function(e,t,r,n){o=r,I(K(e?e+"{"+t.styles+"}":t.styles),g),n&&(b.inserted[t.name]=!0)};var b={key:t,sheet:new n({key:t,container:a,nonce:e.nonce,speedy:e.speedy,prepend:e.prepend,insertionPoint:e.insertionPoint}),nonce:e.nonce,inserted:i,registered:{},insert:c};return b.sheet.hydrate(u),b}}}]);
|
|
2
|
+
//# sourceMappingURL=7164.5dc4bc72.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"static/7164.5dc4bc72.chunk.js","mappings":"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","sources":["webpack://internal.plugin-kuadrant/../../node_modules/@emotion/sheet/dist/emotion-sheet.esm.js","webpack://internal.plugin-kuadrant/../../node_modules/stylis/src/Utility.js","webpack://internal.plugin-kuadrant/../../node_modules/stylis/src/Tokenizer.js","webpack://internal.plugin-kuadrant/../../node_modules/stylis/src/Enum.js","webpack://internal.plugin-kuadrant/../../node_modules/stylis/src/Serializer.js","webpack://internal.plugin-kuadrant/../../node_modules/stylis/src/Parser.js","webpack://internal.plugin-kuadrant/../../node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js","webpack://internal.plugin-kuadrant/../../node_modules/stylis/src/Middleware.js"],"sourcesContent":["var isDevelopment = false;\n\n/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n\nfunction sheetForTag(tag) {\n if (tag.sheet) {\n return tag.sheet;\n } // this weirdness brought to you by firefox\n\n /* istanbul ignore next */\n\n\n for (var i = 0; i < document.styleSheets.length; i++) {\n if (document.styleSheets[i].ownerNode === tag) {\n return document.styleSheets[i];\n }\n } // this function should always return with a value\n // TS can't understand it though so we make it stop complaining here\n\n\n return undefined;\n}\n\nfunction createStyleElement(options) {\n var tag = document.createElement('style');\n tag.setAttribute('data-emotion', options.key);\n\n if (options.nonce !== undefined) {\n tag.setAttribute('nonce', options.nonce);\n }\n\n tag.appendChild(document.createTextNode(''));\n tag.setAttribute('data-s', '');\n return tag;\n}\n\nvar StyleSheet = /*#__PURE__*/function () {\n // Using Node instead of HTMLElement since container may be a ShadowRoot\n function StyleSheet(options) {\n var _this = this;\n\n this._insertTag = function (tag) {\n var before;\n\n if (_this.tags.length === 0) {\n if (_this.insertionPoint) {\n before = _this.insertionPoint.nextSibling;\n } else if (_this.prepend) {\n before = _this.container.firstChild;\n } else {\n before = _this.before;\n }\n } else {\n before = _this.tags[_this.tags.length - 1].nextSibling;\n }\n\n _this.container.insertBefore(tag, before);\n\n _this.tags.push(tag);\n };\n\n this.isSpeedy = options.speedy === undefined ? !isDevelopment : options.speedy;\n this.tags = [];\n this.ctr = 0;\n this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n this.key = options.key;\n this.container = options.container;\n this.prepend = options.prepend;\n this.insertionPoint = options.insertionPoint;\n this.before = null;\n }\n\n var _proto = StyleSheet.prototype;\n\n _proto.hydrate = function hydrate(nodes) {\n nodes.forEach(this._insertTag);\n };\n\n _proto.insert = function insert(rule) {\n // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n // it's 1 in dev because we insert source maps that map a single rule to a location\n // and you can only have one source map per style tag\n if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n this._insertTag(createStyleElement(this));\n }\n\n var tag = this.tags[this.tags.length - 1];\n\n if (this.isSpeedy) {\n var sheet = sheetForTag(tag);\n\n try {\n // this is the ultrafast version, works across browsers\n // the big drawback is that the css won't be editable in devtools\n sheet.insertRule(rule, sheet.cssRules.length);\n } catch (e) {\n }\n } else {\n tag.appendChild(document.createTextNode(rule));\n }\n\n this.ctr++;\n };\n\n _proto.flush = function flush() {\n this.tags.forEach(function (tag) {\n var _tag$parentNode;\n\n return (_tag$parentNode = tag.parentNode) == null ? void 0 : _tag$parentNode.removeChild(tag);\n });\n this.tags = [];\n this.ctr = 0;\n };\n\n return StyleSheet;\n}();\n\nexport { StyleSheet };\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @return {number}\n */\nexport function indexof (value, search) {\n\treturn value.indexOf(search)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: ''}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0), root, {length: -root.length}, props)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\nexport var LAYER = '@layer'\n","import {IMPORT, LAYER, COMMENT, RULESET, DECLARATION, KEYFRAMES} from './Enum.js'\nimport {strlen, sizeof} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\tvar length = sizeof(children)\n\n\tfor (var i = 0; i < length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase LAYER: if (element.children.length) break\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: element.value = element.props.join(',')\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f') != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset: if (ampersand == -1) characters = replace(characters, /\\f/g, '')\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule === 99 && charat(characters, 3) === 110 ? 100 : atrule) {\n\t\t\t\t\t\t\t\t\t// d l m s\n\t\t\t\t\t\t\t\t\tcase 100: case 108: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @return {object}\n */\nexport function comment (value, root, parent) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @return {object}\n */\nexport function declaration (value, root, parent, length) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length)\n}\n","import { StyleSheet } from '@emotion/sheet';\nimport { dealloc, alloc, next, token, from, peek, delimit, slice, position, RULESET, combine, match, serialize, copy, replace, WEBKIT, MOZ, MS, KEYFRAMES, DECLARATION, hash, charat, strlen, indexof, stringify, rulesheet, middleware, compile } from 'stylis';\nimport '@emotion/weak-memoize';\nimport '@emotion/memoize';\n\nvar identifierWithPointTracking = function identifierWithPointTracking(begin, points, index) {\n var previous = 0;\n var character = 0;\n\n while (true) {\n previous = character;\n character = peek(); // &\\f\n\n if (previous === 38 && character === 12) {\n points[index] = 1;\n }\n\n if (token(character)) {\n break;\n }\n\n next();\n }\n\n return slice(begin, position);\n};\n\nvar toRules = function toRules(parsed, points) {\n // pretend we've started with a comma\n var index = -1;\n var character = 44;\n\n do {\n switch (token(character)) {\n case 0:\n // &\\f\n if (character === 38 && peek() === 12) {\n // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n // and when it should just concatenate the outer and inner selectors\n // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n points[index] = 1;\n }\n\n parsed[index] += identifierWithPointTracking(position - 1, points, index);\n break;\n\n case 2:\n parsed[index] += delimit(character);\n break;\n\n case 4:\n // comma\n if (character === 44) {\n // colon\n parsed[++index] = peek() === 58 ? '&\\f' : '';\n points[index] = parsed[index].length;\n break;\n }\n\n // fallthrough\n\n default:\n parsed[index] += from(character);\n }\n } while (character = next());\n\n return parsed;\n};\n\nvar getRules = function getRules(value, points) {\n return dealloc(toRules(alloc(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\n\n\nvar fixedElements = /* #__PURE__ */new WeakMap();\nvar compat = function compat(element) {\n if (element.type !== 'rule' || !element.parent || // positive .length indicates that this rule contains pseudo\n // negative .length indicates that this rule has been already prefixed\n element.length < 1) {\n return;\n }\n\n var value = element.value;\n var parent = element.parent;\n var isImplicitRule = element.column === parent.column && element.line === parent.line;\n\n while (parent.type !== 'rule') {\n parent = parent.parent;\n if (!parent) return;\n } // short-circuit for the simplest case\n\n\n if (element.props.length === 1 && value.charCodeAt(0) !== 58\n /* colon */\n && !fixedElements.get(parent)) {\n return;\n } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n\n\n if (isImplicitRule) {\n return;\n }\n\n fixedElements.set(element, true);\n var points = [];\n var rules = getRules(value, points);\n var parentRules = parent.props;\n\n for (var i = 0, k = 0; i < rules.length; i++) {\n for (var j = 0; j < parentRules.length; j++, k++) {\n element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n }\n }\n};\nvar removeLabel = function removeLabel(element) {\n if (element.type === 'decl') {\n var value = element.value;\n\n if ( // charcode for l\n value.charCodeAt(0) === 108 && // charcode for b\n value.charCodeAt(2) === 98) {\n // this ignores label\n element[\"return\"] = '';\n element.value = '';\n }\n }\n};\n\n/* eslint-disable no-fallthrough */\n\nfunction prefix(value, length) {\n switch (hash(value, length)) {\n // color-adjust\n case 5103:\n return WEBKIT + 'print-' + value + value;\n // animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\n case 5737:\n case 4201:\n case 3177:\n case 3433:\n case 1641:\n case 4457:\n case 2921: // text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\n case 5572:\n case 6356:\n case 5844:\n case 3191:\n case 6645:\n case 3005: // mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\n case 6391:\n case 5879:\n case 5623:\n case 6135:\n case 4599:\n case 4855: // background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\n case 4215:\n case 6389:\n case 5109:\n case 5365:\n case 5621:\n case 3829:\n return WEBKIT + value + value;\n // appearance, user-select, transform, hyphens, text-size-adjust\n\n case 5349:\n case 4246:\n case 4810:\n case 6968:\n case 2756:\n return WEBKIT + value + MOZ + value + MS + value + value;\n // flex, flex-direction\n\n case 6828:\n case 4268:\n return WEBKIT + value + MS + value + value;\n // order\n\n case 6165:\n return WEBKIT + value + MS + 'flex-' + value + value;\n // align-items\n\n case 5187:\n return WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value;\n // align-self\n\n case 5443:\n return WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/, '') + value;\n // align-content\n\n case 4675:\n return WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/, '') + value;\n // flex-shrink\n\n case 5548:\n return WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value;\n // flex-basis\n\n case 5292:\n return WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value;\n // flex-grow\n\n case 6060:\n return WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value;\n // transition\n\n case 4554:\n return WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value;\n // cursor\n\n case 6187:\n return replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value;\n // background, background-image\n\n case 5495:\n case 3959:\n return replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1');\n // justify-content\n\n case 4968:\n return replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value;\n // (margin|padding)-inline-(start|end)\n\n case 4095:\n case 3583:\n case 4068:\n case 2532:\n return replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value;\n // (min|max)?(width|height|inline-size|block-size)\n\n case 8116:\n case 7059:\n case 5753:\n case 5535:\n case 5445:\n case 5701:\n case 4933:\n case 4677:\n case 5533:\n case 5789:\n case 5021:\n case 4765:\n // stretch, max-content, min-content, fill-available\n if (strlen(value) - 1 - length > 6) switch (charat(value, length + 1)) {\n // (m)ax-content, (m)in-content\n case 109:\n // -\n if (charat(value, length + 4) !== 45) break;\n // (f)ill-available, (f)it-content\n\n case 102:\n return replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value;\n // (s)tretch\n\n case 115:\n return ~indexof(value, 'stretch') ? prefix(replace(value, 'stretch', 'fill-available'), length) + value : value;\n }\n break;\n // position: sticky\n\n case 4949:\n // (s)ticky?\n if (charat(value, length + 1) !== 115) break;\n // display: (flex|inline-flex)\n\n case 6444:\n switch (charat(value, strlen(value) - 3 - (~indexof(value, '!important') && 10))) {\n // stic(k)y\n case 107:\n return replace(value, ':', ':' + WEBKIT) + value;\n // (inline-)?fl(e)x\n\n case 101:\n return replace(value, /(.+:)([^;!]+)(;|!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value;\n }\n\n break;\n // writing-mode\n\n case 5936:\n switch (charat(value, length + 11)) {\n // vertical-l(r)\n case 114:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value;\n // vertical-r(l)\n\n case 108:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value;\n // horizontal(-)tb\n\n case 45:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value;\n }\n\n return WEBKIT + value + MS + value + value;\n }\n\n return value;\n}\n\nvar prefixer = function prefixer(element, index, children, callback) {\n if (element.length > -1) if (!element[\"return\"]) switch (element.type) {\n case DECLARATION:\n element[\"return\"] = prefix(element.value, element.length);\n break;\n\n case KEYFRAMES:\n return serialize([copy(element, {\n value: replace(element.value, '@', '@' + WEBKIT)\n })], callback);\n\n case RULESET:\n if (element.length) return combine(element.props, function (value) {\n switch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n // :read-(only|write)\n case ':read-only':\n case ':read-write':\n return serialize([copy(element, {\n props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]\n })], callback);\n // :placeholder\n\n case '::placeholder':\n return serialize([copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]\n })], callback);\n }\n\n return '';\n });\n }\n};\n\nvar defaultStylisPlugins = [prefixer];\n\nvar createCache = function createCache(options) {\n var key = options.key;\n\n if (key === 'css') {\n var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\"); // get SSRed styles out of the way of React's hydration\n // document.head is a safe place to move them to(though note document.head is not necessarily the last place they will be)\n // note this very very intentionally targets all style elements regardless of the key to ensure\n // that creating a cache works inside of render of a React component\n\n Array.prototype.forEach.call(ssrStyles, function (node) {\n // we want to only move elements which have a space in the data-emotion attribute value\n // because that indicates that it is an Emotion 11 server-side rendered style elements\n // while we will already ignore Emotion 11 client-side inserted styles because of the :not([data-s]) part in the selector\n // Emotion 10 client-side inserted styles did not have data-s (but importantly did not have a space in their data-emotion attributes)\n // so checking for the space ensures that loading Emotion 11 after Emotion 10 has inserted some styles\n // will not result in the Emotion 10 styles being destroyed\n var dataEmotionAttribute = node.getAttribute('data-emotion');\n\n if (dataEmotionAttribute.indexOf(' ') === -1) {\n return;\n }\n\n document.head.appendChild(node);\n node.setAttribute('data-s', '');\n });\n }\n\n var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n var inserted = {};\n var container;\n var nodesToHydrate = [];\n\n {\n container = options.container || document.head;\n Array.prototype.forEach.call( // this means we will ignore elements which don't have a space in them which\n // means that the style elements we're looking at are only Emotion 11 server-rendered style elements\n document.querySelectorAll(\"style[data-emotion^=\\\"\" + key + \" \\\"]\"), function (node) {\n var attrib = node.getAttribute(\"data-emotion\").split(' ');\n\n for (var i = 1; i < attrib.length; i++) {\n inserted[attrib[i]] = true;\n }\n\n nodesToHydrate.push(node);\n });\n }\n\n var _insert;\n\n var omnipresentPlugins = [compat, removeLabel];\n\n {\n var currentSheet;\n var finalizingPlugins = [stringify, rulesheet(function (rule) {\n currentSheet.insert(rule);\n })];\n var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n\n var stylis = function stylis(styles) {\n return serialize(compile(styles), serializer);\n };\n\n _insert = function insert(selector, serialized, sheet, shouldCache) {\n currentSheet = sheet;\n\n stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n\n if (shouldCache) {\n cache.inserted[serialized.name] = true;\n }\n };\n }\n\n var cache = {\n key: key,\n sheet: new StyleSheet({\n key: key,\n container: container,\n nonce: options.nonce,\n speedy: options.speedy,\n prepend: options.prepend,\n insertionPoint: options.insertionPoint\n }),\n nonce: options.nonce,\n inserted: inserted,\n registered: {},\n insert: _insert\n };\n cache.sheet.hydrate(nodesToHydrate);\n return cache;\n};\n\nexport { createCache as default };\n","import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine} from './Utility.js'\nimport {copy, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length, children)\n\t\t\t\t\treturn\n\t\t\t\tcase KEYFRAMES:\n\t\t\t\t\treturn serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback)\n\t\t\t\tcase RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn combine(element.props, function (value) {\n\t\t\t\t\t\t\tswitch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\treturn serialize([copy(element, {props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]})], callback)\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\treturn serialize([\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]})\n\t\t\t\t\t\t\t\t\t], callback)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n"],"names":["StyleSheet","options","_this","this","_insertTag","tag","before","tags","length","insertionPoint","nextSibling","prepend","container","firstChild","insertBefore","push","isSpeedy","undefined","speedy","ctr","nonce","key","_proto","prototype","hydrate","nodes","forEach","insert","rule","document","createElement","setAttribute","appendChild","createTextNode","createStyleElement","sheet","i","styleSheets","ownerNode","sheetForTag","insertRule","cssRules","e","flush","_tag$parentNode","parentNode","removeChild","abs","Math","String","fromCharCode","Object","assign","trim","value","pattern","replacement","replace","indexof","search","indexOf","index","charCodeAt","begin","end","slice","array","line","column","position","character","characters","node","root","parent","type","props","children","return","prev","next","peek","caret","token","alloc","dealloc","delimit","delimiter","whitespace","escaping","count","commenter","identifier","COMMENT","callback","output","stringify","element","join","compile","parse","rules","rulesets","pseudo","points","declarations","offset","atrule","property","previous","variable","scanning","ampersand","reference","comment","declaration","ruleset","post","size","j","k","x","y","z","identifierWithPointTracking","fixedElements","WeakMap","compat","isImplicitRule","get","set","parsed","toRules","getRules","parentRules","removeLabel","hash","defaultStylisPlugins","map","exec","createCache","ssrStyles","querySelectorAll","Array","call","getAttribute","head","_insert","stylisPlugins","inserted","nodesToHydrate","attrib","split","currentSheet","collection","finalizingPlugins","serializer","concat","selector","serialized","shouldCache","styles","cache","name","registered"],"sourceRoot":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use strict";(self.webpackChunkinternal_plugin_kuadrant=self.webpackChunkinternal_plugin_kuadrant||[]).push([[7266],{57266:(e,t,n)=>{n.r(t),n.d(t,{AnalyticsContext:()=>c,AnalyticsImplementationBlueprint:()=>N,ApiBlueprint:()=>V,AppRootElementBlueprint:()=>q,AppRootWrapperBlueprint:()=>L,ErrorDisplay:()=>te,ExtensionBoundary:()=>ce,IconBundleBlueprint:()=>_,NavContentBlueprint:()=>H,NavItemBlueprint:()=>J,NotFoundErrorPage:()=>ee,PageBlueprint:()=>ue,Progress:()=>Z,RouterBlueprint:()=>le,SessionState:()=>p.SessionState,SignInPageBlueprint:()=>he,SwappableComponentBlueprint:()=>we,ThemeBlueprint:()=>me,TranslationBlueprint:()=>Re,alertApiRef:()=>p.alertApiRef,analyticsApiRef:()=>u,appThemeApiRef:()=>p.appThemeApiRef,appTreeApiRef:()=>h,atlassianAuthApiRef:()=>p.atlassianAuthApiRef,bitbucketAuthApiRef:()=>p.bitbucketAuthApiRef,bitbucketServerAuthApiRef:()=>p.bitbucketServerAuthApiRef,configApiRef:()=>p.configApiRef,coreExtensionData:()=>G,createApiFactory:()=>p.createApiFactory,createApiRef:()=>p.createApiRef,createExtension:()=>I,createExtensionBlueprint:()=>B,createExtensionBlueprintParams:()=>C,createExtensionDataRef:()=>w,createExtensionInput:()=>Me,createExternalRouteRef:()=>Ie,createFrontendFeatureLoader:()=>Le,createFrontendModule:()=>ze,createFrontendPlugin:()=>qe,createRouteRef:()=>Ee,createSubRouteRef:()=>je,createSwappableComponent:()=>Y,createTranslationMessages:()=>Fe.W,createTranslationRef:()=>Be.h,createTranslationResource:()=>De.o,dialogApiRef:()=>y,discoveryApiRef:()=>p.discoveryApiRef,errorApiRef:()=>p.errorApiRef,featureFlagsApiRef:()=>p.featureFlagsApiRef,fetchApiRef:()=>p.fetchApiRef,githubAuthApiRef:()=>p.githubAuthApiRef,gitlabAuthApiRef:()=>p.gitlabAuthApiRef,googleAuthApiRef:()=>p.googleAuthApiRef,iconsApiRef:()=>m,identityApiRef:()=>p.identityApiRef,microsoftAuthApiRef:()=>p.microsoftAuthApiRef,oauthRequestApiRef:()=>p.oauthRequestApiRef,oktaAuthApiRef:()=>p.oktaAuthApiRef,oneloginAuthApiRef:()=>p.oneloginAuthApiRef,routeResolutionApiRef:()=>R,storageApiRef:()=>p.storageApiRef,swappableComponentsApiRef:()=>g,useAnalytics:()=>f,useApi:()=>p.useApi,useApiHolder:()=>p.useApiHolder,useAppNode:()=>ae,useRouteRef:()=>Ce,useRouteRefParams:()=>Oe,useTranslationRef:()=>Ne.i,vmwareCloudAuthApiRef:()=>p.vmwareCloudAuthApiRef,withApis:()=>p.withApis});var i=n(31085),o=n(15427),r=n(95478);const a=(0,o.createVersionedContext)("analytics-context"),s=()=>{const e=(0,r.useContext)(a);if(void 0===e)return{pluginId:"app",extensionId:"app"};const t=e.atVersion(1);if(void 0===t)throw new Error("No context found for version 1.");return t},c=e=>{const{attributes:t,children:n}=e,r={...s(),...t},c=(0,o.createVersionedValueMap)({1:r});return(0,i.jsx)(a.Provider,{value:c,children:n})};var p=n(22097);const u=(0,p.createApiRef)({id:"core.analytics"}),d=(0,o.getOrCreateGlobalSingleton)("core-plugin-api:analytics-tracker-events",()=>({mostRecentGatheredNavigation:void 0,mostRecentRoutableExtensionRender:void 0,beforeUnloadRegistered:!1}));class l{constructor(e,t={pluginId:"root",extensionId:"App"}){this.analyticsApi=e,this.context=t,d.beforeUnloadRegistered||(addEventListener("beforeunload",()=>{d.mostRecentGatheredNavigation&&(this.analyticsApi.captureEvent({...d.mostRecentGatheredNavigation,...d.mostRecentRoutableExtensionRender}),d.mostRecentGatheredNavigation=void 0,d.mostRecentRoutableExtensionRender=void 0)},{once:!0,passive:!0}),d.beforeUnloadRegistered=!0)}setContext(e){this.context=e}captureEvent(e,t,{value:n,attributes:i}={}){const o=this.context;if("_ROUTABLE-EXTENSION-RENDERED"!==e){if(d.mostRecentGatheredNavigation){try{this.analyticsApi.captureEvent({...d.mostRecentGatheredNavigation,...d.mostRecentRoutableExtensionRender})}catch(e){console.warn("Error during analytics event capture. %o",e)}d.mostRecentGatheredNavigation=void 0,d.mostRecentRoutableExtensionRender=void 0}if("navigate"!==e||"root"!==o.pluginId)try{this.analyticsApi.captureEvent({action:e,subject:t,value:n,attributes:i,context:o})}catch(e){console.warn("Error during analytics event capture. %o",e)}else d.mostRecentGatheredNavigation={action:e,subject:t,value:n,attributes:i,context:o}}else d.mostRecentGatheredNavigation&&(d.mostRecentRoutableExtensionRender={context:{...o,extensionId:"App"}})}}function f(){const e=(0,r.useRef)(null),t=s(),n=function(){try{return(0,p.useApi)(u)}catch(e){if("NotImplementedError"===e.name)return{captureEvent:()=>{}};throw e}}(),i=(null===e.current&&(e.current=new l(n)),e.current);return i.setContext(t),i}const h=(0,p.createApiRef)({id:"core.app-tree"}),g=(0,p.createApiRef)({id:"core.swappable-components"}),m=(0,p.createApiRef)({id:"core.icons"}),y=(0,p.createApiRef)({id:"core.dialog"}),R=(0,p.createApiRef)({id:"core.route-resolution"});var v=n(20569);function w(){const e=e=>Object.assign(t=>({$$type:"@backstage/ExtensionDataValue",id:e,value:t}),{id:e,$$type:"@backstage/ExtensionDataRef",config:{},optional(){return{...this,config:{...this.config,optional:!0}}},toString(){const t=Boolean(this.config.optional);return`ExtensionDataRef{id=${e},optional=${t}}`}});return{with:t=>e(t.id)}}function b(e,t,n){if("object"!=typeof e||!e?.[Symbol.iterator])throw new Error(`${t} did not provide an iterable object`);const i=new Map,o=n&&new Map(n.map(e=>[e.id,e]));for(const t of e){if(o&&!o.delete(t.id))throw new Error(`extension data '${t.id}' was provided but not declared`);i.set(t.id,t)}const r=o&&Array.from(o.values()).filter(e=>!e.config.optional);if(r&&r.length>0)throw new Error(`missing required extension data value(s) '${r.map(e=>e.id).join(", ")}'`);return{get:e=>i.get(e.id)?.value,[Symbol.iterator]:()=>i.values()}}function A(e){return e}function x(e){return e}function $(e,t,n){if(!e||!t||!n)return t;const i={};for(const o in e){if(!Object.hasOwn(e,o))continue;const r=e[o],a=n[o];if(r.config.singleton){const e=x(t[o]);if(a){const t=b(a,"extension input override",r.extensionData);if(!e)throw new Error(`attempted to override data of input '${o}' but it is not present in the original inputs`);i[o]=Object.assign(t,{node:e.node})}}else{const e=A(t[o]);if(!Array.isArray(a))throw new Error(`override data provided for input '${o}' must be an array`);if(0===a.length)i[o]=[];else{const t=a.filter(e=>"node"in e).length;if(0===t){if(e.length!==a.length)throw new Error(`override data provided for input '${o}' must match the length of the original inputs`);i[o]=a.map((t,n)=>{const i=b(t,"extension input override",r.extensionData);return Object.assign(i,{node:e[n].node})})}else{if(t!==a.length)throw new Error(`override data for input '${o}' may not mix forwarded inputs with data overrides`);i[o]=a}}}}return i}var E=n(33587);function k(e){if("invalid_union"===e.code)return k(e.unionErrors[0].issues[0]);let t=e.message;return"Required"===t&&(t="Missing required value"),e.path.length&&(t+=` at '${e.path.join(".")}'`),t}class T{static create(e){return new T(e.type,new Set(e.versions))}#e;#t;constructor(e,t){this.#e=e,this.#t=t}TPublic=void 0;TInternal=void 0;isType=e=>this.#n(e);toInternal=e=>{if(!this.#n(e))throw new TypeError(`Invalid opaque type, expected '${this.#e}', but got '${this.#i(e)}'`);if(!this.#t.has(e.version)){const t=Array.from(this.#t).map(this.#o);t.length>1&&(t[t.length-1]=`or ${t[t.length-1]}`);const n=t.length>2?t.join(", "):t.join(" ");throw new TypeError(`Invalid opaque type instance, got version ${this.#o(e.version)}, expected ${n}`)}return e};createInstance(e,t){return Object.assign(t,{$$type:this.#e,...e&&{version:e}})}#n(e){return null!==e&&"object"==typeof e&&e.$$type===this.#e}#i(e){return"object"!=typeof e?`<${typeof e}>`:null===e?"<null>":String("$$type"in e?e.$$type:e)}#o=e=>e?`'${e}'`:"undefined"}const j=T.create({type:"@backstage/ExtensionDefinition",versions:["v1","v2"]}),S=Symbol("params");function I(e){const t=e.config?.schema,n=t&&function(){const e=(n=E).object(Object.fromEntries(Object.entries(t).map(([e,t])=>[e,t(n)])));var n;return{parse:t=>{const n=e.safeParse(t);if(n.success)return n.data;throw new Error(n.error.issues.map(k).join("; "))},schema:(0,v.Ay)(e)}}();return j.createInstance("v2",{T:void 0,kind:e.kind,name:e.name,attachTo:e.attachTo,disabled:e.disabled??!1,inputs:e.inputs??{},output:e.output,configSchema:n,factory:e.factory,toString(){const t=[];return e.kind&&t.push(`kind=${e.kind}`),e.name&&t.push(`name=${e.name}`),t.push(`attachTo=${[e.attachTo].flat().map(e=>`${e.id}@${e.input}`).join("+")}`),`ExtensionDefinition{${t.join(",")}}`},override(t){if(!Array.isArray(e.output))throw new Error("Cannot override an extension that is not declared using the new format with outputs as an array");if(t.output&&!t.factory)throw new Error("Refused to override output without also overriding factory");if(t.params&&t.factory)throw new Error("Refused to override params and factory at the same time");return I({kind:e.kind,name:e.name,attachTo:t.attachTo??e.attachTo,disabled:t.disabled??e.disabled,inputs:{...t.inputs,...e.inputs},output:t.output??e.output,config:e.config||t.config?{schema:{...e.config?.schema,...t.config?.schema}}:void 0,factory:({node:n,apis:i,config:o,inputs:r})=>{if(!t.factory)return e.factory({node:n,apis:i,config:o,inputs:r,[S]:t.params});const a=t.factory(t=>b(e.factory({node:n,apis:i,config:t?.config??o,inputs:$(e.inputs,r,t?.inputs),[S]:t?.params}),"original extension factory",e.output),{node:n,apis:i,config:o,inputs:r});if("object"!=typeof a||!a?.[Symbol.iterator])throw new Error("extension factory override did not provide an iterable object");const s=new Map;for(const e of a)s.set(e.id,e);return s.values()}})}})}const P=T.create({type:"@backstage/BlueprintParams",versions:["v1"]});function C(e){return P.createInstance("v1",{T:null,params:e})}function O(e,t,n){const i=e(t);try{return P.toInternal(i).params}catch(e){throw new TypeError(`Invalid invocation of blueprint with kind '${n}', the parameter definition callback function did not return a valid parameter definition object; Caused by: ${e.message}`)}}function F(e,t,n,i){const o=t[S];if(n){if(o){if("function"!=typeof o)throw new TypeError(`Invalid extension override of blueprint with kind '${i}', the override params were passed as a plain object, but this blueprint requires them to be passed in callback form`);return O(o,n,i)}if("function"!=typeof e)throw new TypeError(`Invalid invocation of blueprint with kind '${i}', the parameters where passed as a plain object, but this blueprint requires them to be passed in callback form`);return O(e,n,i)}return{..."function"==typeof e?O(e,C,i):e,..."function"==typeof o?O(o,C,i):o}}function B(e){const t=e.defineParams;return{dataRefs:e.dataRefs,make:n=>I({kind:e.kind,name:n.name,attachTo:n.attachTo??e.attachTo,disabled:n.disabled??e.disabled,inputs:e.inputs,output:e.output,config:e.config,factory:i=>e.factory(F(n.params,i,t,e.kind),i)}),makeWithOverrides:n=>I({kind:e.kind,name:n.name,attachTo:n.attachTo??e.attachTo,disabled:n.disabled??e.disabled,inputs:{...n.inputs,...e.inputs},output:n.output??e.output,config:e.config||n.config?{schema:{...e.config?.schema,...n.config?.schema}}:void 0,factory:i=>{const{node:o,config:r,inputs:a,apis:s}=i;return n.factory((n,c)=>b(e.factory(F(n,i,t,e.kind),{apis:s,node:o,config:c?.config??r,inputs:$(e.inputs,a,c?.inputs)}),"original blueprint factory",e.output),{apis:s,node:o,config:r,inputs:a})}})}}const D=w().with({id:"core.analytics.factory"}),N=B({kind:"analytics",attachTo:[{id:"api:app/analytics",input:"implementations"}],output:[D],dataRefs:{factory:D},defineParams:e=>C(e),*factory(e){yield D(e)}}),M=w().with({id:"core.api.factory"}),V=B({kind:"api",attachTo:{id:"root",input:"apis"},output:[M],dataRefs:{factory:M},defineParams:e=>C(e),*factory(e){yield M(e)}}),G={reactElement:w().with({id:"core.reactElement"}),routePath:w().with({id:"core.routing.path"}),routeRef:w().with({id:"core.routing.ref"})},q=B({kind:"app-root-element",attachTo:{id:"app/root",input:"elements"},output:[G.reactElement],*factory(e){yield G.reactElement(e.element)}}),z=w().with({id:"app.root.wrapper"}),L=B({kind:"app-root-wrapper",attachTo:{id:"app/root",input:"wrappers"},output:[z],dataRefs:{component:z},*factory(e){yield z(e.component)}}),U=w().with({id:"core.icons"}),_=B({kind:"icon-bundle",attachTo:{id:"api:app/icons",input:"icons"},output:[U],factory:e=>[U(e.icons)],dataRefs:{icons:U}}),W=w().with({id:"core.nav-content.component"}),H=B({kind:"nav-content",attachTo:{id:"app/nav",input:"content"},output:[W],dataRefs:{component:W},*factory(e){yield W(e.component)}}),X=w().with({id:"core.nav-item.target"}),J=B({kind:"nav-item",attachTo:{id:"app/nav",input:"items"},output:[X],dataRefs:{target:X},factory:({icon:e,routeRef:t,title:n},{config:i})=>[X({title:i.title??n,icon:e,routeRef:t})],config:{schema:{title:e=>e.string().optional()}}}),K=T.create({versions:["v1"],type:"@backstage/SwappableComponentRef"}),Q=()=>{try{return(0,p.useApi)(g)}catch(e){return}};function Y(e){const t=t=>(0,i.jsx)("div",{"data-testid":e.id,...t}),n=K.createInstance("v1",{id:e.id,TProps:null,TExternalProps:null,toString:()=>`SwappableComponentRef{id=${e.id}}`,defaultComponent:(0,r.lazy)(async()=>({default:await(e.loader?.())??t})),transformProps:e.transformProps}),o=e=>{const t=Q();if(!t){const t=K.toInternal(n),o=t.defaultComponent,r=t.transformProps?.(e)??e;return(0,i.jsx)(o,{...r})}const o=t.getComponent(n);return(0,i.jsx)(o,{...e})};return Object.assign(o,{ref:n}),o}const Z=Y({id:"core-progress"}),ee=Y({id:"core-not-found-error-page"}),te=Y({id:"core-error-display",loader:()=>e=>(0,i.jsx)("div",{"data-testid":"core-error-display",children:e.error.message})});class ne extends r.Component{static getDerivedStateFromError(e){return{error:e}}state={error:void 0};handleErrorReset=()=>{this.setState({error:void 0})};render(){const{error:e}=this.state,{plugin:t,children:n}=this.props;return e?(0,i.jsx)(te,{plugin:t,error:e,resetError:this.handleErrorReset}):n}}(0,o.getOrCreateGlobalSingleton)("core-plugin-api:analytics-tracker-events",()=>({mostRecentGatheredNavigation:void 0,mostRecentRoutableExtensionRender:void 0,beforeUnloadRegistered:!1}));const ie="app-node-context",oe=(0,o.createVersionedContext)(ie);function re({node:e,children:t}){const n=(0,o.createVersionedValueMap)({1:{node:e}});return(0,i.jsx)(oe.Provider,{value:n,children:t})}function ae(){const e=(0,o.useVersionedContext)(ie);if(!e)return;const t=e.atVersion(1);if(!t)throw new Error("AppNodeContext v1 not available");return t.node}const se=e=>{const{enabled:t,children:n}=e,o=(0,p.useAnalytics)();return(0,r.useEffect)(()=>{t&&o.captureEvent("_ROUTABLE-EXTENSION-RENDERED","")},[o,t]),(0,i.jsx)(i.Fragment,{children:n})};function ce(e){const{node:t,children:n}=e,o=Boolean(t.instance?.getData(G.routePath)),a=t.spec.plugin,s={extensionId:t.spec.id,pluginId:t.spec.plugin?.id??"app"};return(0,i.jsx)(re,{node:t,children:(0,i.jsx)(r.Suspense,{fallback:(0,i.jsx)(Z,{}),children:(0,i.jsx)(ne,{plugin:a,children:(0,i.jsx)(p.AnalyticsContext,{attributes:s,children:(0,i.jsx)(se,{enabled:o,children:n})})})})})}var pe;(pe=ce||(ce={})).lazy=function(e,t){const n=(0,r.lazy)(()=>t().then(e=>({default:()=>e})));return(0,i.jsx)(pe,{node:e,children:(0,i.jsx)(n,{})})},pe.lazyComponent=function(e,t){const n=(0,r.lazy)(()=>t().then(e=>({default:e})));return t=>(0,i.jsx)(pe,{node:e,children:(0,i.jsx)(n,{...t})})};const ue=B({kind:"page",attachTo:{id:"app/routes",input:"routes"},output:[G.routePath,G.reactElement,G.routeRef.optional()],config:{schema:{path:e=>e.string().optional()}},*factory(e,{config:t,node:n}){yield G.routePath(t.path??e.path),yield G.reactElement(ce.lazy(n,e.loader)),e.routeRef&&(yield G.routeRef(e.routeRef))}}),de=w().with({id:"app.router.wrapper"}),le=B({kind:"app-router-component",attachTo:{id:"app/root",input:"router"},output:[de],dataRefs:{component:de},*factory(e){yield de(e.component)}}),fe=w().with({id:"core.sign-in-page.component"}),he=B({kind:"sign-in-page",attachTo:{id:"app/root",input:"signInPage"},output:[fe],dataRefs:{component:fe},*factory({loader:e},{node:t}){const n=(0,r.lazy)(()=>e().then(e=>({default:e})));yield fe(e=>(0,i.jsx)(ce,{node:t,children:(0,i.jsx)(n,{...e})}))}}),ge=w().with({id:"core.theme.theme"}),me=B({kind:"theme",attachTo:{id:"api:app/app-theme",input:"themes"},output:[ge],dataRefs:{theme:ge},factory:({theme:e})=>[ge(e)]}),ye=w().with({id:"core.translation.translation"}),Re=B({kind:"translation",attachTo:{id:"api:app/translations",input:"translations"},output:[ye],dataRefs:{translation:ye},factory:({resource:e})=>[ye(e)]}),ve=w().with({id:"core.swappableComponent"}),we=B({kind:"component",attachTo:{id:"api:app/swappable-components",input:"components"},output:[ve],dataRefs:{component:ve},defineParams:e=>C(e),factory:e=>[ve({ref:e.component.ref,loader:e.loader})]}),be="eHgtF5hmbrXyiEvo";function Ae(e=Error){const{stack:t}=new e(be);if(!t)return"<unknown>";const n=t.includes(be)?t.indexOf("\n")+1:0,i=t.indexOf("\n",t.indexOf("\n",n)+1)+1,o=t.indexOf("\n",i),r=t.substring(i,o).trim();return r?r.includes("(")?r.substring(r.indexOf("(")+1,r.indexOf(")")):r.includes("@")?r.substring(r.indexOf("@")+1):r:"unknown"}function xe(e){const t=e;if("@backstage/RouteRef"!==t.$$type)throw new Error(`Invalid RouteRef, bad type '${t.$$type}'`);return t}class $e{constructor(e=[],t,n){this.params=e,this.#r=e,this.#a=t,this.#s=n}$$type="@backstage/RouteRef";version="v1";#c;#r;#a;#s;getParams(){return this.#r}get alias(){return this.#s}getDescription(){return this.#c?this.#c:`created at '${this.#a}'`}get#p(){return this.$$type.slice(11)}setId(e){if(!e)throw new Error(`${this.#p} id must be a non-empty string`);if(this.#c&&this.#c!==e)throw new Error(`${this.#p} was referenced twice as both '${this.#c}' and '${e}'`);this.#c=e}toString(){return`${this.#p}{${this.getDescription()}}`}}function Ee(e){return new $e(e?.params,Ae(),e?.aliasFor)}const ke=/^\w+$/;class Te{constructor(e,t,n){this.path=e,this.#r=t,this.#u=n}$$type="@backstage/SubRouteRef";version="v1";#r;#u;getParams(){return this.#r}getParent(){return this.#u}getDescription(){const e=xe(this.#u);return`at ${this.path} with parent ${e.getDescription()}`}toString(){return`SubRouteRef{${this.getDescription()}}`}}function je(e){const{path:t,parent:n}=e,i=xe(n).getParams(),o=t.split("/").filter(e=>e.startsWith(":")).map(e=>e.substring(1)),r=[...i,...o];if(i.some(e=>o.includes(e)))throw new Error("SubRouteRef may not have params that overlap with its parent");if(!t.startsWith("/"))throw new Error(`SubRouteRef path must start with '/', got '${t}'`);if(t.endsWith("/"))throw new Error(`SubRouteRef path must not end with '/', got '${t}'`);for(const e of o)if(!ke.test(e))throw new Error(`SubRouteRef path has invalid param, got '${e}'`);return new Te(t,r,n)}class Se extends $e{constructor(e=[],t,n){super(e,n),this.params=e,this.defaultTarget=t}$$type="@backstage/ExternalRouteRef";getDefaultTarget(){return this.defaultTarget}}function Ie(e){return new Se(e?.params,e?.defaultTarget,Ae())}var Pe=n(49634);function Ce(e){const{pathname:t}=(0,Pe.useLocation)(),n=(0,p.useApi)(R);return(0,r.useMemo)(()=>n.resolve(e,{sourcePath:t}),[n,e,t])}function Oe(e){return(0,Pe.useParams)()}var Fe=n(70796),Be=n(92821),De=n(46184),Ne=n(67550);function Me(e,t){return{$$type:"@backstage/ExtensionInput",extensionData:e,config:{singleton:Boolean(t?.singleton),optional:Boolean(t?.optional)},replaces:t?.replaces}}function Ve(e,t){const n=j.toInternal(e),{name:i,kind:o,namespace:r,override:a,...s}=n,c=n.namespace??t?.namespace,p=i&&c?`${c}/${i}`:c||i;if(!p)throw new Error(`Extension must declare an explicit namespace or name as it could not be resolved from context, kind=${o} namespace=${c} name=${i}`);const u=o?`${o}:${p}`:p;return{...s,$$type:"@backstage/Extension",version:n.version,id:u,toString:()=>`Extension{id=${u}}`}}const Ge=T.create({type:"@backstage/FrontendPlugin",versions:["v1"]});function qe(e){const t=e.pluginId,n=new Array,i=new Map;for(const o of e.extensions??[]){const e=j.toInternal(o),r=Ve(o,{namespace:t});n.push(r),i.set(r.id,{...e,namespace:t})}if(n.length!==i.size){const e=n.map(e=>e.id),i=Array.from(new Set(e.filter((t,n)=>e.indexOf(t)!==n)));throw new Error(`Plugin '${t}' provided duplicate extensions: ${i.join(", ")}`)}return Ge.createInstance("v1",{id:t,routes:e.routes??{},externalRoutes:e.externalRoutes??{},featureFlags:e.featureFlags??[],extensions:n,infoOptions:e.info,async info(){throw new Error(`Attempted to load plugin info for plugin '${t}', but the plugin instance is not installed in an app`)},getExtension(e){const n=i.get(e);if(!n)throw new Error(`Attempted to get non-existent extension '${e}' from plugin '${t}'`);return n},toString:()=>`Plugin{id=${t}}`,withOverrides(n){const i=new Set(n.extensions.map(e=>Ve(e,{namespace:t}).id)),o=(e.extensions??[]).filter(e=>!i.has(Ve(e,{namespace:t}).id));return qe({...e,pluginId:t,extensions:[...o,...n.extensions],info:{...e.info,...n.info}})}})}function ze(e){const{pluginId:t}=e,n=new Array,i=new Map;for(const o of e.extensions??[]){const e=j.toInternal(o),r=Ve(o,{namespace:t});n.push(r),i.set(r.id,{...e,namespace:t})}if(n.length!==i.size){const e=n.map(e=>e.id),i=Array.from(new Set(e.filter((t,n)=>e.indexOf(t)!==n)));throw new Error(`Plugin '${t}' provided duplicate extensions: ${i.join(", ")}`)}return{$$type:"@backstage/FrontendModule",version:"v1",pluginId:t,featureFlags:e.featureFlags??[],extensions:n,toString:()=>`Module{pluginId=${t}}`}}function Le(e){const t=`created at '${Ae()}'`;return{$$type:"@backstage/FrontendFeatureLoader",version:"v1",description:t,toString:()=>`FeatureLoader{description=${t}}`,async loader(t){const n=await e.loader(t),i=new Array;for await(const e of n)if(Ue(e))i.push(e);else{if(!("default"in e))throw new Error(`Invalid item "${e}"`);i.push(e.default)}return i}}}function Ue(e){return null!==e&&"object"==typeof e&&"$$type"in e&&("@backstage/FrontendPlugin"===e.$$type||"@backstage/FrontendModule"===e.$$type||"@backstage/FrontendFeatureLoader"===e.$$type)}}}]);
|
|
2
|
-
//# sourceMappingURL=7266.
|
|
2
|
+
//# sourceMappingURL=7266.3c4174cc.chunk.js.map
|