@techdocs/cli 1.10.7-next.1 → 1.10.7
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/CHANGELOG.md +12 -0
- package/dist/embedded-app/.config-schema.json +64 -31
- package/dist/embedded-app/index.html +1 -1
- package/dist/embedded-app/index.html.tmpl +1 -1
- package/dist/embedded-app/static/123.5e36a0db.chunk.js +2 -0
- package/dist/embedded-app/static/123.5e36a0db.chunk.js.map +1 -0
- package/dist/embedded-app/static/1659.76caecab.chunk.js +2 -0
- package/dist/embedded-app/static/1659.76caecab.chunk.js.map +1 -0
- package/dist/embedded-app/static/1733.d8004241.chunk.js +2 -0
- package/dist/embedded-app/static/1733.d8004241.chunk.js.map +1 -0
- package/dist/embedded-app/static/1749.3ab65683.chunk.js +2 -0
- package/dist/embedded-app/static/1749.3ab65683.chunk.js.map +1 -0
- package/dist/embedded-app/static/1994.78304f99.chunk.js +2 -0
- package/dist/embedded-app/static/1994.78304f99.chunk.js.map +1 -0
- package/dist/embedded-app/static/2295.a94805e5.chunk.js +5 -0
- package/dist/embedded-app/static/2295.a94805e5.chunk.js.map +1 -0
- package/dist/embedded-app/static/{3554.0ce35bc3.chunk.js → 3554.d745ad43.chunk.js} +2 -2
- package/dist/embedded-app/static/{3554.0ce35bc3.chunk.js.map → 3554.d745ad43.chunk.js.map} +1 -1
- package/dist/embedded-app/static/{4384.ae7b53b0.chunk.js → 4384.dc692f4f.chunk.js} +2 -2
- package/dist/embedded-app/static/{4384.ae7b53b0.chunk.js.map → 4384.dc692f4f.chunk.js.map} +1 -1
- package/dist/embedded-app/static/4587.85b7cf82.chunk.js +2 -0
- package/dist/embedded-app/static/4587.85b7cf82.chunk.js.map +1 -0
- package/dist/embedded-app/static/4648.e939339d.chunk.js +2 -0
- package/dist/embedded-app/static/4648.e939339d.chunk.js.map +1 -0
- package/dist/embedded-app/static/6138.d8ae40ee.chunk.js +2 -0
- package/dist/embedded-app/static/6138.d8ae40ee.chunk.js.map +1 -0
- package/dist/embedded-app/static/7203.1bd24814.chunk.js +2 -0
- package/dist/embedded-app/static/7203.1bd24814.chunk.js.map +1 -0
- package/dist/embedded-app/static/{7226.9f87f67d.chunk.js → 7226.bb48ee34.chunk.js} +2 -2
- package/dist/embedded-app/static/{7226.9f87f67d.chunk.js.map → 7226.bb48ee34.chunk.js.map} +1 -1
- package/dist/embedded-app/static/{8461.d5fe0648.chunk.js → 8461.0c3f2ac0.chunk.js} +3 -3
- package/dist/embedded-app/static/{8461.d5fe0648.chunk.js.map → 8461.0c3f2ac0.chunk.js.map} +1 -1
- package/dist/embedded-app/static/{8877.3f864531.chunk.js → 8877.a7ffabd9.chunk.js} +2 -2
- package/dist/embedded-app/static/{8877.3f864531.chunk.js.map → 8877.a7ffabd9.chunk.js.map} +1 -1
- package/dist/embedded-app/static/9050.69b458a6.chunk.js +2 -0
- package/dist/embedded-app/static/9050.69b458a6.chunk.js.map +1 -0
- package/dist/embedded-app/static/9230.23c1d5e0.chunk.js +2 -0
- package/dist/embedded-app/static/9230.23c1d5e0.chunk.js.map +1 -0
- package/dist/embedded-app/static/{main.161a9ecc.css → main.0657d08d.css} +2 -2
- package/dist/embedded-app/static/{main.161a9ecc.css.map → main.0657d08d.css.map} +1 -1
- package/dist/embedded-app/static/main.c9b00fd0.js +523 -0
- package/dist/embedded-app/static/main.c9b00fd0.js.map +1 -0
- package/dist/embedded-app/static/{module-react-aria-components.67232dc3.js → module-react-aria-components.c61f9ab4.js} +2 -2
- package/dist/embedded-app/static/{module-react-aria-components.67232dc3.js.map → module-react-aria-components.c61f9ab4.js.map} +1 -1
- package/dist/embedded-app/static/module-zod.b3376822.js +38 -0
- package/dist/embedded-app/static/module-zod.b3376822.js.map +1 -0
- package/dist/embedded-app/static/{runtime.c39b96cc.js → runtime.9896d1d9.js} +2 -2
- package/dist/embedded-app/static/{runtime.c39b96cc.js.map → runtime.9896d1d9.js.map} +1 -1
- package/dist/embedded-app/static/vendor.ff5541f5.js +6 -0
- package/dist/embedded-app/static/vendor.ff5541f5.js.map +1 -0
- package/dist/package.json.cjs.js +1 -1
- package/package.json +7 -7
- package/dist/embedded-app/static/123.97a62a60.chunk.js +0 -2
- package/dist/embedded-app/static/123.97a62a60.chunk.js.map +0 -1
- package/dist/embedded-app/static/1659.7dd5287b.chunk.js +0 -2
- package/dist/embedded-app/static/1659.7dd5287b.chunk.js.map +0 -1
- package/dist/embedded-app/static/1733.14c06ac4.chunk.js +0 -2
- package/dist/embedded-app/static/1733.14c06ac4.chunk.js.map +0 -1
- package/dist/embedded-app/static/1749.745aaeeb.chunk.js +0 -2
- package/dist/embedded-app/static/1749.745aaeeb.chunk.js.map +0 -1
- package/dist/embedded-app/static/1994.1f294712.chunk.js +0 -2
- package/dist/embedded-app/static/1994.1f294712.chunk.js.map +0 -1
- package/dist/embedded-app/static/2295.765b9f2e.chunk.js +0 -5
- package/dist/embedded-app/static/2295.765b9f2e.chunk.js.map +0 -1
- package/dist/embedded-app/static/4587.bf73bd77.chunk.js +0 -2
- package/dist/embedded-app/static/4587.bf73bd77.chunk.js.map +0 -1
- package/dist/embedded-app/static/4648.bd152b54.chunk.js +0 -2
- package/dist/embedded-app/static/4648.bd152b54.chunk.js.map +0 -1
- package/dist/embedded-app/static/6138.2560a5ba.chunk.js +0 -2
- package/dist/embedded-app/static/6138.2560a5ba.chunk.js.map +0 -1
- package/dist/embedded-app/static/7203.1ec93f6f.chunk.js +0 -2
- package/dist/embedded-app/static/7203.1ec93f6f.chunk.js.map +0 -1
- package/dist/embedded-app/static/9050.bab0c5db.chunk.js +0 -2
- package/dist/embedded-app/static/9050.bab0c5db.chunk.js.map +0 -1
- package/dist/embedded-app/static/9230.b3e5d612.chunk.js +0 -2
- package/dist/embedded-app/static/9230.b3e5d612.chunk.js.map +0 -1
- package/dist/embedded-app/static/main.cb460d15.js +0 -523
- package/dist/embedded-app/static/main.cb460d15.js.map +0 -1
- package/dist/embedded-app/static/module-zod.dd7f5a90.js +0 -2
- package/dist/embedded-app/static/module-zod.dd7f5a90.js.map +0 -1
- package/dist/embedded-app/static/vendor.65e7f165.js +0 -6
- package/dist/embedded-app/static/vendor.65e7f165.js.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(self.webpackChunktechdocs_cli_embedded_app=self.webpackChunktechdocs_cli_embedded_app||[]).push([["7226"],{68817(e,a,t){t.d(a,{TechDocsCustomHome:()=>Q});var r=t(31085),n=t(14041),i=t(73466),s=t(58837),d=t(
|
|
2
|
-
//# sourceMappingURL=7226.
|
|
1
|
+
"use strict";(self.webpackChunktechdocs_cli_embedded_app=self.webpackChunktechdocs_cli_embedded_app||[]).push([["7226"],{68817(e,a,t){t.d(a,{TechDocsCustomHome:()=>Q});var r=t(31085),n=t(14041),i=t(73466),s=t(58837),d=t(60728),l=t(58077),o=t(50509),c=t(48203),p=t(53320),m=t(59378),u=t(76272),g=t(74854),h=t(31314),x=t(90898),f=t(99255),j=t(81219),b=t(19735),k=t(77125),C=t(99703);let v=(0,s.A)(e=>(0,C.A)({root:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(22em, 1fr))",gridAutoRows:"1fr",gridGap:e.spacing(2)}}),{name:"BackstageItemCardGrid"});function y(e){let{children:a,...t}=e,n=v(t);return(0,r.jsx)(k.A,{className:n.root,...t,children:a})}var A=t(72501);let S=(0,s.A)(e=>(0,C.A)({root:{color:e.getPageTheme({themeId:"card"}).fontColor,padding:e.spacing(2,2,3),backgroundImage:e.getPageTheme({themeId:"card"}).backgroundImage,backgroundPosition:0,backgroundSize:"inherit"}}),{name:"BackstageItemCardHeader"});function P(e){let{title:a,subtitle:t,children:n}=e,i=S(e);return(0,r.jsxs)(k.A,{className:i.root,children:[t&&(0,r.jsx)(A.A,{variant:"subtitle2",component:"h3",children:t}),a&&(0,r.jsx)(A.A,{variant:"h6",component:"h4",children:a}),n]})}var T=t(45463),w=t(40703),I=t(59469),B=t(48653),U=t(57369),D=t(55489),N=t(89439),W=t(60603),_=t(87623);let V=(0,s.A)(e=>({linkSpacer:{paddingTop:e.spacing(.2)},readMoreLink:{paddingTop:e.spacing(.2)}}),{name:"BackstageInfoCardGrid"});var G=t(59821),R=t(47677),E=t(15179),H=t(23413),M=t(84391),z=t(87187),L=t(4809),O=t(38605),$=t(74953);let F=(0,s.A)(e=>({tabsWrapper:{gridArea:"pageSubheader",backgroundColor:e.palette.background.paper,paddingLeft:e.spacing(3),minWidth:0},defaultTab:{...e.typography.caption,padding:e.spacing(3,3),textTransform:"uppercase",fontWeight:e.typography.fontWeightBold,color:e.palette.text.secondary},selected:{color:e.palette.text.primary},tabRoot:{"&:hover":{backgroundColor:e.palette.background.default,color:e.palette.text.primary}}}),{name:"BackstageHeaderTabs"});function K(e){let{tabs:a,onChange:t,selectedIndex:i}=e,[s,d]=(0,n.useState)(i??0),l=F(),o=(0,n.useCallback)((e,a)=>{void 0===i&&d(a),t&&t(a)},[i,t]);return(0,n.useEffect)(()=>{void 0!==i&&d(i)},[i]),(0,r.jsx)(k.A,{className:l.tabsWrapper,children:(0,r.jsx)($.A,{indicatorColor:"primary",textColor:"inherit",variant:"scrollable",scrollButtons:"auto","aria-label":"tabs",onChange:o,value:s,children:a.map((e,a)=>(0,r.jsx)(O.A,{"data-testid":`header-tab-${a}`,label:e.label,value:a,className:l.defaultTab,classes:{selected:l.selected,root:l.tabRoot},...e.tabProps},e.id))})})}var Y=t(78931);let q={DocsTable:h.o,DocsCardGrid:e=>{let{entities:a}=e,t=(0,j.S)(x.Oc),n=(0,o.gf)(b.U);return a?(0,r.jsx)(y,{"data-testid":"docs-explore",children:a?.length?a.map((e,a)=>(0,r.jsxs)(w.A,{children:[(0,r.jsx)(U.A,{children:(0,r.jsx)(P,{title:e.metadata.title??e.metadata.name})}),(0,r.jsx)(B.A,{children:e.metadata.description}),(0,r.jsx)(I.A,{children:(0,r.jsx)(T.z,{to:t({namespace:(0,f.V)(e.metadata.namespace??"default",n),kind:(0,f.V)(e.kind,n),name:(0,f.V)(e.metadata.name,n)}),color:"primary","data-testid":"read_docs",children:"Read Docs"})})]},a)):null}):null},TechDocsIndexPage:R.TechDocsIndexPage,InfoCardGrid:e=>{let{entities:a,linkContent:t,linkDestination:n}=e,s=V(),d=(0,j.S)(x.Oc),c=(0,o.gf)(b.U),p=(0,o.gf)(_.n),{value:m,loading:u}=(0,i.A)(async()=>new Map(await Promise.all(a?.map(async e=>{let a=await p.forEntity(e).promise;return[(0,l.U2)(e),a]})||[])));return u?(0,r.jsx)(D.k,{}):a&&a?.length?(0,r.jsx)(y,{"data-testid":"info-card-container",children:a.map(e=>(0,r.jsxs)(N.n,{"data-testid":e?.metadata?.title,title:m?.get((0,l.U2)(e))?.primaryTitle,children:[(0,r.jsx)("div",{children:e?.metadata?.description}),(0,r.jsx)("div",{className:s.linkSpacer}),(0,r.jsx)(W.N_,{to:(e=>{if(n){let a=n(e);if(a)return a}return d({namespace:(0,f.V)(e.metadata.namespace??"default",c),kind:(0,f.V)(e.kind,c),name:(0,f.V)(e.metadata.name,c)})})(e),className:s.readMoreLink,"data-testid":"read-docs-link",children:t||"Read Docs"})]},e.metadata.name))}):null}},J=({config:e,entities:a,index:t})=>{let u=(0,s.A)({panelContainer:{marginBottom:"2rem",...e.panelCSS?e.panelCSS:{}}})(),{loading:g,isOwnedEntity:h}=function(){let e=(0,o.gf)(c.K),{loading:a,value:t}=(0,i.A)(async()=>{let{ownershipEntityRefs:a}=await e.getBackstageIdentity();return a},[]);return{loading:a,isOwnedEntity:(0,n.useMemo)(()=>{let e=new Set(t??[]);return a=>{for(let t of(0,p.t)(a,d.vv).map(l.U2))if(e.has(t))return!0;return!1}},[t])}}(),x=q[e.panelType],f=a.filter(a=>"ownedByUser"===e.filterPredicate?!g&&h(a):"function"==typeof e.filterPredicate&&e.filterPredicate(a)),j=e.panelProps?.CustomHeader||(()=>(0,r.jsx)(E.d,{title:e.title,description:e.description,children:0===t?(0,r.jsx)(H.Y,{children:"Discover documentation in your ecosystem."}):null}));return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(j,{}),(0,r.jsx)("div",{className:u.panelContainer,children:(0,r.jsx)(m.B9,{children:(0,r.jsx)(x,{"data-testid":"techdocs-custom-panel",entities:f,...e.panelProps})})})]})},Q=e=>{let{tabsConfig:a,filter:t,CustomPageWrapper:s}=e,[d,l]=(0,n.useState)(0),c=(0,o.gf)(u.v),{value:p,loading:m,error:h}=(0,i.A)(async()=>(await c.getEntities({filter:{...t,[`metadata.annotations.${Y.As}`]:g.c},fields:["apiVersion","kind","metadata","relations","spec.owner","spec.type"]})).items.filter(e=>!!e.metadata.annotations?.[Y.As])),x=a[d];return m?(0,r.jsx)(G.S,{CustomPageWrapper:s,children:(0,r.jsx)(M.U,{children:(0,r.jsx)(D.k,{})})}):h?(0,r.jsx)(G.S,{CustomPageWrapper:s,children:(0,r.jsx)(M.U,{children:(0,r.jsx)(z.B,{severity:"error",title:"Could not load available documentation.",children:(0,r.jsx)(L.z,{language:"text",text:h.toString()})})})}):(0,r.jsxs)(G.S,{CustomPageWrapper:s,children:[(0,r.jsx)(K,{selectedIndex:d,onChange:e=>l(e),tabs:a.map(({label:e},a)=>({id:a.toString(),label:e}))}),(0,r.jsx)(M.U,{"data-testid":"techdocs-content",children:x.panels.map((e,a)=>(0,r.jsx)(J,{config:e,entities:p||[],index:a},a))})]})}}}]);
|
|
2
|
+
//# sourceMappingURL=7226.bb48ee34.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"static/7226.9f87f67d.chunk.js","sources":["webpack://techdocs-cli-embedded-app/../core-components/src/layout/ItemCard/ItemCardGrid.tsx","webpack://techdocs-cli-embedded-app/../core-components/src/layout/ItemCard/ItemCardHeader.tsx","webpack://techdocs-cli-embedded-app/../../plugins/techdocs/src/home/components/Grids/InfoCardGrid.tsx","webpack://techdocs-cli-embedded-app/../core-components/src/layout/HeaderTabs/HeaderTabs.tsx","webpack://techdocs-cli-embedded-app/../../plugins/techdocs/src/home/components/TechDocsCustomHome.tsx","webpack://techdocs-cli-embedded-app/../../plugins/techdocs/src/home/components/Grids/DocsCardGrid.tsx","webpack://techdocs-cli-embedded-app/../../plugins/catalog-react/src/hooks/useEntityOwnership.ts"],"sourcesContent":["/*\n * Copyright 2021 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport Box from '@material-ui/core/Box';\nimport {\n createStyles,\n makeStyles,\n Theme,\n WithStyles,\n} from '@material-ui/core/styles';\nimport { ReactNode } from 'react';\n\n/** @public */\nexport type ItemCardGridClassKey = 'root';\n\nconst styles = (theme: Theme) =>\n createStyles({\n root: {\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fill, minmax(22em, 1fr))',\n gridAutoRows: '1fr',\n gridGap: theme.spacing(2),\n },\n });\n\nconst useStyles = makeStyles(styles, { name: 'BackstageItemCardGrid' });\n\n/** @public */\nexport type ItemCardGridProps = Partial<WithStyles<typeof styles>> & {\n /**\n * The Card items of the grid.\n */\n children?: ReactNode;\n};\n\n/**\n * A default grid to use when arranging \"item cards\" - cards that let users\n * select among several options.\n *\n * @remarks\n * The immediate children are expected to be Material UI Card components.\n *\n * Styles for the grid can be overridden using the `classes` prop, e.g.:\n *\n * `<ItemCardGrid title=\"Hello\" classes={{ root: myClassName }} />`\n *\n * This can be useful for e.g. overriding gridTemplateColumns to adapt the\n * minimum size of the cells to fit the content better.\n *\n * @public\n */\nexport function ItemCardGrid(props: ItemCardGridProps) {\n const { children, ...otherProps } = props;\n const classes = useStyles(otherProps);\n return (\n <Box className={classes.root} {...otherProps}>\n {children}\n </Box>\n );\n}\n","/*\n * Copyright 2021 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Box from '@material-ui/core/Box';\nimport {\n createStyles,\n makeStyles,\n Theme,\n WithStyles,\n} from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport { ReactNode } from 'react';\n\n/** @public */\nexport type ItemCardHeaderClassKey = 'root';\n\nconst styles = (theme: Theme) =>\n createStyles({\n root: {\n color: theme.getPageTheme({ themeId: 'card' }).fontColor,\n padding: theme.spacing(2, 2, 3),\n backgroundImage: theme.getPageTheme({ themeId: 'card' }).backgroundImage,\n backgroundPosition: 0,\n backgroundSize: 'inherit',\n },\n });\n\nconst useStyles = makeStyles(styles, { name: 'BackstageItemCardHeader' });\n\n/** @public */\nexport type ItemCardHeaderProps = Partial<WithStyles<typeof styles>> & {\n /**\n * A large title to show in the header, providing the main heading.\n *\n * Use this if you want to have the default styling and placement of a title.\n */\n title?: ReactNode;\n /**\n * A slightly smaller title to show in the header, providing additional\n * details.\n *\n * Use this if you want to have the default styling and placement of a\n * subtitle.\n */\n subtitle?: ReactNode;\n /**\n * Custom children to draw in the header.\n *\n * If the title and/or subtitle were specified, the children are drawn below\n * those.\n */\n children?: ReactNode;\n};\n\n/**\n * A simple card header, rendering a default look for \"item cards\" - cards that\n * are arranged in a grid for users to select among several options.\n *\n * @remarks\n * This component expects to be placed within a Material UI `<CardMedia>`.\n *\n * Styles for the header can be overridden using the `classes` prop, e.g.:\n *\n * `<ItemCardHeader title=\"Hello\" classes={{ root: myClassName }} />`\n *\n * @public\n */\nexport function ItemCardHeader(props: ItemCardHeaderProps) {\n const { title, subtitle, children } = props;\n const classes = useStyles(props);\n return (\n <Box className={classes.root}>\n {subtitle && (\n <Typography variant=\"subtitle2\" component=\"h3\">\n {subtitle}\n </Typography>\n )}\n {title && (\n <Typography variant=\"h6\" component=\"h4\">\n {title}\n </Typography>\n )}\n {children}\n </Box>\n );\n}\n","/*\n * Copyright 2021 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport useAsync from 'react-use/esm/useAsync';\nimport { Entity, stringifyEntityRef } from '@backstage/catalog-model';\nimport { useApi, useRouteRef, configApiRef } from '@backstage/core-plugin-api';\nimport {\n ItemCardGrid,\n InfoCard,\n Link,\n Progress,\n} from '@backstage/core-components';\nimport {\n EntityRefPresentationSnapshot,\n entityPresentationApiRef,\n} from '@backstage/plugin-catalog-react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { rootDocsRouteRef } from '../../../routes';\nimport { toLowerMaybe } from '../../../helpers';\n\n/** @public */\nexport type InfoCardGridClassKey = 'linkSpacer' | 'readMoreLink';\n\nconst useStyles = makeStyles(\n theme => ({\n linkSpacer: {\n paddingTop: theme.spacing(0.2),\n },\n readMoreLink: {\n paddingTop: theme.spacing(0.2),\n },\n }),\n { name: 'BackstageInfoCardGrid' },\n);\n\n/**\n * Props for {@link InfoCardGrid}\n *\n * @public\n */\nexport type InfoCardGridProps = {\n entities: Entity[] | undefined;\n linkContent?: string | JSX.Element;\n linkDestination?: (entity: Entity) => string | undefined;\n};\n\n/**\n * Component which accepts a list of entities and renders a info card for each entity\n *\n * @public\n */\nexport const InfoCardGrid = (props: InfoCardGridProps) => {\n const { entities, linkContent, linkDestination } = props;\n const classes = useStyles();\n const getRouteToReaderPageFor = useRouteRef(rootDocsRouteRef);\n const config = useApi(configApiRef);\n const linkRoute = (entity: Entity) => {\n if (linkDestination) {\n const destination = linkDestination(entity);\n if (destination) {\n return destination;\n }\n }\n return getRouteToReaderPageFor({\n namespace: toLowerMaybe(entity.metadata.namespace ?? 'default', config),\n kind: toLowerMaybe(entity.kind, config),\n name: toLowerMaybe(entity.metadata.name, config),\n });\n };\n const entityPresentationApi = useApi(entityPresentationApiRef);\n const { value: entityRefToPresentation, loading } = useAsync(async () => {\n return new Map<string, EntityRefPresentationSnapshot>(\n await Promise.all(\n entities?.map(async entity => {\n const presentation = await entityPresentationApi.forEntity(entity)\n .promise;\n return [stringifyEntityRef(entity), presentation] as [\n string,\n EntityRefPresentationSnapshot,\n ];\n }) || [],\n ),\n );\n });\n if (loading) return <Progress />;\n if (!entities || !entities?.length) return null;\n return (\n <ItemCardGrid data-testid=\"info-card-container\">\n {entities.map(entity => (\n <InfoCard\n key={entity.metadata.name}\n data-testid={entity?.metadata?.title}\n title={\n entityRefToPresentation?.get(stringifyEntityRef(entity))\n ?.primaryTitle\n }\n >\n <div>{entity?.metadata?.description}</div>\n <div className={classes.linkSpacer} />\n <Link\n to={linkRoute(entity)}\n className={classes.readMoreLink}\n data-testid=\"read-docs-link\"\n >\n {linkContent || 'Read Docs'}\n </Link>\n </InfoCard>\n ))}\n </ItemCardGrid>\n );\n};\n","/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport Box from '@material-ui/core/Box';\nimport { makeStyles } from '@material-ui/core/styles';\nimport TabUI, { TabProps } from '@material-ui/core/Tab';\nimport Tabs from '@material-ui/core/Tabs';\nimport {\n ElementType,\n ChangeEvent,\n useCallback,\n useEffect,\n useState,\n} from 'react';\n\n// TODO(blam): Remove this implementation when the Tabs are ready\n// This is just a temporary solution to implementing tabs for now\n\n/** @public */\nexport type HeaderTabsClassKey =\n | 'tabsWrapper'\n | 'defaultTab'\n | 'selected'\n | 'tabRoot';\n\nconst useStyles = makeStyles(\n theme => ({\n tabsWrapper: {\n gridArea: 'pageSubheader',\n backgroundColor: theme.palette.background.paper,\n paddingLeft: theme.spacing(3),\n minWidth: 0,\n },\n defaultTab: {\n ...theme.typography.caption,\n padding: theme.spacing(3, 3),\n textTransform: 'uppercase',\n fontWeight: theme.typography.fontWeightBold,\n color: theme.palette.text.secondary,\n },\n selected: {\n color: theme.palette.text.primary,\n },\n tabRoot: {\n '&:hover': {\n backgroundColor: theme.palette.background.default,\n color: theme.palette.text.primary,\n },\n },\n }),\n { name: 'BackstageHeaderTabs' },\n);\n\nexport type Tab = {\n id: string;\n label: string;\n tabProps?: TabProps<ElementType, { component?: ElementType }>;\n};\n\ntype HeaderTabsProps = {\n tabs: Tab[];\n onChange?: (index: number) => void;\n selectedIndex?: number;\n};\n\n/**\n * Horizontal Tabs component\n *\n * @public\n *\n */\nexport function HeaderTabs(props: HeaderTabsProps) {\n const { tabs, onChange, selectedIndex } = props;\n const [selectedTab, setSelectedTab] = useState<number>(selectedIndex ?? 0);\n const styles = useStyles();\n\n const handleChange = useCallback(\n (_: ChangeEvent<{}>, index: number) => {\n if (selectedIndex === undefined) {\n setSelectedTab(index);\n }\n if (onChange) onChange(index);\n },\n [selectedIndex, onChange],\n );\n\n useEffect(() => {\n if (selectedIndex !== undefined) {\n setSelectedTab(selectedIndex);\n }\n }, [selectedIndex]);\n\n return (\n <Box className={styles.tabsWrapper}>\n <Tabs\n indicatorColor=\"primary\"\n textColor=\"inherit\"\n variant=\"scrollable\"\n scrollButtons=\"auto\"\n aria-label=\"tabs\"\n onChange={handleChange}\n value={selectedTab}\n >\n {tabs.map((tab, index) => (\n <TabUI\n data-testid={`header-tab-${index}`}\n label={tab.label}\n key={tab.id}\n value={index}\n className={styles.defaultTab}\n classes={{ selected: styles.selected, root: styles.tabRoot }}\n {...tab.tabProps}\n />\n ))}\n </Tabs>\n </Box>\n );\n}\n","/*\n * Copyright 2021 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FC, useState } from 'react';\nimport useAsync from 'react-use/esm/useAsync';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { CSSProperties } from '@material-ui/styles/withStyles';\nimport {\n CATALOG_FILTER_EXISTS,\n catalogApiRef,\n useEntityOwnership,\n EntityListProvider,\n} from '@backstage/plugin-catalog-react';\nimport { Entity } from '@backstage/catalog-model';\nimport { DocsTable, DocsTableRow } from './Tables';\nimport { DocsCardGrid, InfoCardGrid } from './Grids';\nimport { TechDocsPageWrapper } from './TechDocsPageWrapper';\nimport { TechDocsIndexPage } from './TechDocsIndexPage';\n\nimport {\n CodeSnippet,\n Content,\n HeaderTabs,\n Progress,\n WarningPanel,\n SupportButton,\n ContentHeader,\n TableOptions,\n} from '@backstage/core-components';\nimport { useApi } from '@backstage/core-plugin-api';\nimport { TECHDOCS_ANNOTATION } from '@backstage/plugin-techdocs-common';\nimport { EntityFilterQuery } from '@backstage/catalog-client';\n\nconst panels = {\n DocsTable: DocsTable,\n DocsCardGrid: DocsCardGrid,\n TechDocsIndexPage: TechDocsIndexPage,\n InfoCardGrid: InfoCardGrid,\n};\n\n/**\n * Available panel types\n *\n * @public\n */\nexport type PanelType =\n | 'DocsCardGrid'\n | 'DocsTable'\n | 'TechDocsIndexPage'\n | 'InfoCardGrid';\n\n/**\n * Type representing Panel props\n *\n * @public\n */\nexport interface PanelProps {\n options?: TableOptions<DocsTableRow>;\n linkContent?: string | JSX.Element;\n linkDestination?: (entity: Entity) => string | undefined;\n PageWrapper?: FC;\n CustomHeader?: FC;\n}\n\n/**\n * Type representing a TechDocsCustomHome panel.\n *\n * @public\n */\nexport interface PanelConfig {\n title: string;\n description: string;\n panelType: PanelType;\n panelCSS?: CSSProperties;\n filterPredicate: ((entity: Entity) => boolean) | string;\n panelProps?: PanelProps;\n}\n\n/**\n * Type representing a TechDocsCustomHome tab.\n *\n * @public\n */\nexport interface TabConfig {\n label: string;\n panels: PanelConfig[];\n}\n\n/**\n * Type representing a list of TechDocsCustomHome tabs.\n *\n * @public\n */\nexport type TabsConfig = TabConfig[];\n\n/**\n * Component which can be used to render entities in a custom way.\n *\n * @public\n */\nexport const CustomDocsPanel = ({\n config,\n entities,\n index,\n}: {\n config: PanelConfig;\n entities: Entity[];\n index: number;\n}) => {\n const useStyles = makeStyles({\n panelContainer: {\n marginBottom: '2rem',\n ...(config.panelCSS ? config.panelCSS : {}),\n },\n });\n const classes = useStyles();\n const { loading: loadingOwnership, isOwnedEntity } = useEntityOwnership();\n\n const Panel = panels[config.panelType];\n\n const shownEntities = entities.filter(entity => {\n if (config.filterPredicate === 'ownedByUser') {\n if (loadingOwnership) {\n return false;\n }\n return isOwnedEntity(entity);\n }\n\n return (\n typeof config.filterPredicate === 'function' &&\n config.filterPredicate(entity)\n );\n });\n\n const Header: FC =\n config.panelProps?.CustomHeader ||\n (() => (\n <ContentHeader title={config.title} description={config.description}>\n {index === 0 ? (\n <SupportButton>\n Discover documentation in your ecosystem.\n </SupportButton>\n ) : null}\n </ContentHeader>\n ));\n\n return (\n <>\n <Header />\n <div className={classes.panelContainer}>\n <EntityListProvider>\n <Panel\n data-testid=\"techdocs-custom-panel\"\n entities={shownEntities}\n {...config.panelProps}\n />\n </EntityListProvider>\n </div>\n </>\n );\n};\n\n/**\n * Props for {@link TechDocsCustomHome}\n *\n * @public\n */\nexport type TechDocsCustomHomeProps = {\n tabsConfig: TabsConfig;\n filter?: EntityFilterQuery;\n CustomPageWrapper?: FC;\n};\n\nexport const TechDocsCustomHome = (props: TechDocsCustomHomeProps) => {\n const { tabsConfig, filter, CustomPageWrapper } = props;\n const [selectedTab, setSelectedTab] = useState<number>(0);\n const catalogApi = useApi(catalogApiRef);\n\n const {\n value: entities,\n loading,\n error,\n } = useAsync(async () => {\n const response = await catalogApi.getEntities({\n filter: {\n ...filter,\n [`metadata.annotations.${TECHDOCS_ANNOTATION}`]: CATALOG_FILTER_EXISTS,\n },\n fields: [\n 'apiVersion',\n 'kind',\n 'metadata',\n 'relations',\n 'spec.owner',\n 'spec.type',\n ],\n });\n return response.items.filter((entity: Entity) => {\n return !!entity.metadata.annotations?.[TECHDOCS_ANNOTATION];\n });\n });\n\n const currentTabConfig = tabsConfig[selectedTab];\n\n if (loading) {\n return (\n <TechDocsPageWrapper CustomPageWrapper={CustomPageWrapper}>\n <Content>\n <Progress />\n </Content>\n </TechDocsPageWrapper>\n );\n }\n\n if (error) {\n return (\n <TechDocsPageWrapper CustomPageWrapper={CustomPageWrapper}>\n <Content>\n <WarningPanel\n severity=\"error\"\n title=\"Could not load available documentation.\"\n >\n <CodeSnippet language=\"text\" text={error.toString()} />\n </WarningPanel>\n </Content>\n </TechDocsPageWrapper>\n );\n }\n\n return (\n <TechDocsPageWrapper CustomPageWrapper={CustomPageWrapper}>\n <HeaderTabs\n selectedIndex={selectedTab}\n onChange={index => setSelectedTab(index)}\n tabs={tabsConfig.map(({ label }, index) => ({\n id: index.toString(),\n label,\n }))}\n />\n <Content data-testid=\"techdocs-content\">\n {currentTabConfig.panels.map((config, index) => (\n <CustomDocsPanel\n key={index}\n config={config}\n entities={!!entities ? entities : []}\n index={index}\n />\n ))}\n </Content>\n </TechDocsPageWrapper>\n );\n};\n","/*\n * Copyright 2021 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { rootDocsRouteRef } from '../../../routes';\nimport { toLowerMaybe } from '../../../helpers';\nimport { Entity } from '@backstage/catalog-model';\nimport { useApi, useRouteRef, configApiRef } from '@backstage/core-plugin-api';\nimport {\n LinkButton,\n ItemCardGrid,\n ItemCardHeader,\n} from '@backstage/core-components';\nimport Card from '@material-ui/core/Card';\nimport CardActions from '@material-ui/core/CardActions';\nimport CardContent from '@material-ui/core/CardContent';\nimport CardMedia from '@material-ui/core/CardMedia';\n\n/**\n * Props for {@link DocsCardGrid}\n *\n * @public\n */\nexport type DocsCardGridProps = {\n entities: Entity[] | undefined;\n};\n\n/**\n * Component which accepts a list of entities and renders a item card for each entity\n *\n * @public\n */\nexport const DocsCardGrid = (props: DocsCardGridProps) => {\n const { entities } = props;\n const getRouteToReaderPageFor = useRouteRef(rootDocsRouteRef);\n const config = useApi(configApiRef);\n if (!entities) return null;\n return (\n <ItemCardGrid data-testid=\"docs-explore\">\n {!entities?.length\n ? null\n : entities.map((entity, index: number) => (\n <Card key={index}>\n <CardMedia>\n <ItemCardHeader\n title={entity.metadata.title ?? entity.metadata.name}\n />\n </CardMedia>\n <CardContent>{entity.metadata.description}</CardContent>\n <CardActions>\n <LinkButton\n to={getRouteToReaderPageFor({\n namespace: toLowerMaybe(\n entity.metadata.namespace ?? 'default',\n config,\n ),\n kind: toLowerMaybe(entity.kind, config),\n name: toLowerMaybe(entity.metadata.name, config),\n })}\n color=\"primary\"\n data-testid=\"read_docs\"\n >\n Read Docs\n </LinkButton>\n </CardActions>\n </Card>\n ))}\n </ItemCardGrid>\n );\n};\n","/*\n * Copyright 2021 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Entity,\n RELATION_OWNED_BY,\n stringifyEntityRef,\n} from '@backstage/catalog-model';\nimport { identityApiRef, useApi } from '@backstage/core-plugin-api';\nimport { useMemo } from 'react';\nimport useAsync from 'react-use/esm/useAsync';\nimport { getEntityRelations } from '../utils/getEntityRelations';\n\n/**\n * Returns a function that checks whether the currently signed-in user is an\n * owner of a given entity. When the hook is initially mounted, the loading\n * flag will be true and the results returned from the function will always be\n * false.\n *\n * @public\n *\n * @returns a function that checks if the signed in user owns an entity\n */\nexport function useEntityOwnership(): {\n loading: boolean;\n isOwnedEntity: (entity: Entity) => boolean;\n} {\n const identityApi = useApi(identityApiRef);\n\n // Trigger load only on mount\n const { loading, value: refs } = useAsync(\n async () => {\n const { ownershipEntityRefs } = await identityApi.getBackstageIdentity();\n return ownershipEntityRefs;\n },\n // load only on mount\n [],\n );\n\n const isOwnedEntity = useMemo(() => {\n const myOwnerRefs = new Set(refs ?? []);\n\n return (entity: Entity) => {\n const entityOwnerRefs = getEntityRelations(entity, RELATION_OWNED_BY).map(\n stringifyEntityRef,\n );\n for (const ref of entityOwnerRefs) {\n if (myOwnerRefs.has(ref)) {\n return true;\n }\n }\n return false;\n };\n }, [refs]);\n\n return { loading, isOwnedEntity };\n}\n"],"names":["useStyles","makeStyles","theme","createStyles","ItemCardGrid","props","children","otherProps","classes","Box","ItemCardHeader","title","subtitle","Typography","HeaderTabs","tabs","onChange","selectedIndex","selectedTab","setSelectedTab","useState","styles","handleChange","useCallback","_","index","undefined","useEffect","Tabs","tab","TabUI","panels","DocsTable","entities","getRouteToReaderPageFor","useRouteRef","rootDocsRouteRef","config","useApi","configApiRef","entity","Card","CardMedia","CardContent","CardActions","LinkButton","toLowerMaybe","TechDocsIndexPage","linkContent","linkDestination","entityPresentationApi","entityPresentationApiRef","entityRefToPresentation","loading","useAsync","Map","Promise","presentation","stringifyEntityRef","Progress","InfoCard","Link","linkRoute","destination","CustomDocsPanel","loadingOwnership","isOwnedEntity","useEntityOwnership","identityApi","identityApiRef","refs","ownershipEntityRefs","useMemo","myOwnerRefs","Set","ref","getEntityRelations","RELATION_OWNED_BY","Panel","shownEntities","Header","ContentHeader","SupportButton","EntityListProvider","TechDocsCustomHome","tabsConfig","filter","CustomPageWrapper","catalogApi","catalogApiRef","error","response","TECHDOCS_ANNOTATION","CATALOG_FILTER_EXISTS","currentTabConfig","TechDocsPageWrapper","Content","WarningPanel","CodeSnippet","label"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"static/7226.bb48ee34.chunk.js","sources":["webpack://techdocs-cli-embedded-app/../core-components/src/layout/ItemCard/ItemCardGrid.tsx","webpack://techdocs-cli-embedded-app/../core-components/src/layout/ItemCard/ItemCardHeader.tsx","webpack://techdocs-cli-embedded-app/../../plugins/techdocs/src/home/components/Grids/InfoCardGrid.tsx","webpack://techdocs-cli-embedded-app/../core-components/src/layout/HeaderTabs/HeaderTabs.tsx","webpack://techdocs-cli-embedded-app/../../plugins/techdocs/src/home/components/TechDocsCustomHome.tsx","webpack://techdocs-cli-embedded-app/../../plugins/techdocs/src/home/components/Grids/DocsCardGrid.tsx","webpack://techdocs-cli-embedded-app/../../plugins/catalog-react/src/hooks/useEntityOwnership.ts"],"sourcesContent":["/*\n * Copyright 2021 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport Box from '@material-ui/core/Box';\nimport {\n createStyles,\n makeStyles,\n Theme,\n WithStyles,\n} from '@material-ui/core/styles';\nimport { ReactNode } from 'react';\n\n/** @public */\nexport type ItemCardGridClassKey = 'root';\n\nconst styles = (theme: Theme) =>\n createStyles({\n root: {\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fill, minmax(22em, 1fr))',\n gridAutoRows: '1fr',\n gridGap: theme.spacing(2),\n },\n });\n\nconst useStyles = makeStyles(styles, { name: 'BackstageItemCardGrid' });\n\n/** @public */\nexport type ItemCardGridProps = Partial<WithStyles<typeof styles>> & {\n /**\n * The Card items of the grid.\n */\n children?: ReactNode;\n};\n\n/**\n * A default grid to use when arranging \"item cards\" - cards that let users\n * select among several options.\n *\n * @remarks\n * The immediate children are expected to be Material UI Card components.\n *\n * Styles for the grid can be overridden using the `classes` prop, e.g.:\n *\n * `<ItemCardGrid title=\"Hello\" classes={{ root: myClassName }} />`\n *\n * This can be useful for e.g. overriding gridTemplateColumns to adapt the\n * minimum size of the cells to fit the content better.\n *\n * @public\n */\nexport function ItemCardGrid(props: ItemCardGridProps) {\n const { children, ...otherProps } = props;\n const classes = useStyles(otherProps);\n return (\n <Box className={classes.root} {...otherProps}>\n {children}\n </Box>\n );\n}\n","/*\n * Copyright 2021 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Box from '@material-ui/core/Box';\nimport {\n createStyles,\n makeStyles,\n Theme,\n WithStyles,\n} from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport { ReactNode } from 'react';\n\n/** @public */\nexport type ItemCardHeaderClassKey = 'root';\n\nconst styles = (theme: Theme) =>\n createStyles({\n root: {\n color: theme.getPageTheme({ themeId: 'card' }).fontColor,\n padding: theme.spacing(2, 2, 3),\n backgroundImage: theme.getPageTheme({ themeId: 'card' }).backgroundImage,\n backgroundPosition: 0,\n backgroundSize: 'inherit',\n },\n });\n\nconst useStyles = makeStyles(styles, { name: 'BackstageItemCardHeader' });\n\n/** @public */\nexport type ItemCardHeaderProps = Partial<WithStyles<typeof styles>> & {\n /**\n * A large title to show in the header, providing the main heading.\n *\n * Use this if you want to have the default styling and placement of a title.\n */\n title?: ReactNode;\n /**\n * A slightly smaller title to show in the header, providing additional\n * details.\n *\n * Use this if you want to have the default styling and placement of a\n * subtitle.\n */\n subtitle?: ReactNode;\n /**\n * Custom children to draw in the header.\n *\n * If the title and/or subtitle were specified, the children are drawn below\n * those.\n */\n children?: ReactNode;\n};\n\n/**\n * A simple card header, rendering a default look for \"item cards\" - cards that\n * are arranged in a grid for users to select among several options.\n *\n * @remarks\n * This component expects to be placed within a Material UI `<CardMedia>`.\n *\n * Styles for the header can be overridden using the `classes` prop, e.g.:\n *\n * `<ItemCardHeader title=\"Hello\" classes={{ root: myClassName }} />`\n *\n * @public\n */\nexport function ItemCardHeader(props: ItemCardHeaderProps) {\n const { title, subtitle, children } = props;\n const classes = useStyles(props);\n return (\n <Box className={classes.root}>\n {subtitle && (\n <Typography variant=\"subtitle2\" component=\"h3\">\n {subtitle}\n </Typography>\n )}\n {title && (\n <Typography variant=\"h6\" component=\"h4\">\n {title}\n </Typography>\n )}\n {children}\n </Box>\n );\n}\n","/*\n * Copyright 2021 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport useAsync from 'react-use/esm/useAsync';\nimport { Entity, stringifyEntityRef } from '@backstage/catalog-model';\nimport { useApi, useRouteRef, configApiRef } from '@backstage/core-plugin-api';\nimport {\n ItemCardGrid,\n InfoCard,\n Link,\n Progress,\n} from '@backstage/core-components';\nimport {\n EntityRefPresentationSnapshot,\n entityPresentationApiRef,\n} from '@backstage/plugin-catalog-react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { rootDocsRouteRef } from '../../../routes';\nimport { toLowerMaybe } from '../../../helpers';\n\n/** @public */\nexport type InfoCardGridClassKey = 'linkSpacer' | 'readMoreLink';\n\nconst useStyles = makeStyles(\n theme => ({\n linkSpacer: {\n paddingTop: theme.spacing(0.2),\n },\n readMoreLink: {\n paddingTop: theme.spacing(0.2),\n },\n }),\n { name: 'BackstageInfoCardGrid' },\n);\n\n/**\n * Props for {@link InfoCardGrid}\n *\n * @public\n */\nexport type InfoCardGridProps = {\n entities: Entity[] | undefined;\n linkContent?: string | JSX.Element;\n linkDestination?: (entity: Entity) => string | undefined;\n};\n\n/**\n * Component which accepts a list of entities and renders a info card for each entity\n *\n * @public\n */\nexport const InfoCardGrid = (props: InfoCardGridProps) => {\n const { entities, linkContent, linkDestination } = props;\n const classes = useStyles();\n const getRouteToReaderPageFor = useRouteRef(rootDocsRouteRef);\n const config = useApi(configApiRef);\n const linkRoute = (entity: Entity) => {\n if (linkDestination) {\n const destination = linkDestination(entity);\n if (destination) {\n return destination;\n }\n }\n return getRouteToReaderPageFor({\n namespace: toLowerMaybe(entity.metadata.namespace ?? 'default', config),\n kind: toLowerMaybe(entity.kind, config),\n name: toLowerMaybe(entity.metadata.name, config),\n });\n };\n const entityPresentationApi = useApi(entityPresentationApiRef);\n const { value: entityRefToPresentation, loading } = useAsync(async () => {\n return new Map<string, EntityRefPresentationSnapshot>(\n await Promise.all(\n entities?.map(async entity => {\n const presentation = await entityPresentationApi.forEntity(entity)\n .promise;\n return [stringifyEntityRef(entity), presentation] as [\n string,\n EntityRefPresentationSnapshot,\n ];\n }) || [],\n ),\n );\n });\n if (loading) return <Progress />;\n if (!entities || !entities?.length) return null;\n return (\n <ItemCardGrid data-testid=\"info-card-container\">\n {entities.map(entity => (\n <InfoCard\n key={entity.metadata.name}\n data-testid={entity?.metadata?.title}\n title={\n entityRefToPresentation?.get(stringifyEntityRef(entity))\n ?.primaryTitle\n }\n >\n <div>{entity?.metadata?.description}</div>\n <div className={classes.linkSpacer} />\n <Link\n to={linkRoute(entity)}\n className={classes.readMoreLink}\n data-testid=\"read-docs-link\"\n >\n {linkContent || 'Read Docs'}\n </Link>\n </InfoCard>\n ))}\n </ItemCardGrid>\n );\n};\n","/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport Box from '@material-ui/core/Box';\nimport { makeStyles } from '@material-ui/core/styles';\nimport TabUI, { TabProps } from '@material-ui/core/Tab';\nimport Tabs from '@material-ui/core/Tabs';\nimport {\n ElementType,\n ChangeEvent,\n useCallback,\n useEffect,\n useState,\n} from 'react';\n\n// TODO(blam): Remove this implementation when the Tabs are ready\n// This is just a temporary solution to implementing tabs for now\n\n/** @public */\nexport type HeaderTabsClassKey =\n | 'tabsWrapper'\n | 'defaultTab'\n | 'selected'\n | 'tabRoot';\n\nconst useStyles = makeStyles(\n theme => ({\n tabsWrapper: {\n gridArea: 'pageSubheader',\n backgroundColor: theme.palette.background.paper,\n paddingLeft: theme.spacing(3),\n minWidth: 0,\n },\n defaultTab: {\n ...theme.typography.caption,\n padding: theme.spacing(3, 3),\n textTransform: 'uppercase',\n fontWeight: theme.typography.fontWeightBold,\n color: theme.palette.text.secondary,\n },\n selected: {\n color: theme.palette.text.primary,\n },\n tabRoot: {\n '&:hover': {\n backgroundColor: theme.palette.background.default,\n color: theme.palette.text.primary,\n },\n },\n }),\n { name: 'BackstageHeaderTabs' },\n);\n\nexport type Tab = {\n id: string;\n label: string;\n tabProps?: TabProps<ElementType, { component?: ElementType }>;\n};\n\ntype HeaderTabsProps = {\n tabs: Tab[];\n onChange?: (index: number) => void;\n selectedIndex?: number;\n};\n\n/**\n * Horizontal Tabs component\n *\n * @public\n *\n */\nexport function HeaderTabs(props: HeaderTabsProps) {\n const { tabs, onChange, selectedIndex } = props;\n const [selectedTab, setSelectedTab] = useState<number>(selectedIndex ?? 0);\n const styles = useStyles();\n\n const handleChange = useCallback(\n (_: ChangeEvent<{}>, index: number) => {\n if (selectedIndex === undefined) {\n setSelectedTab(index);\n }\n if (onChange) onChange(index);\n },\n [selectedIndex, onChange],\n );\n\n useEffect(() => {\n if (selectedIndex !== undefined) {\n setSelectedTab(selectedIndex);\n }\n }, [selectedIndex]);\n\n return (\n <Box className={styles.tabsWrapper}>\n <Tabs\n indicatorColor=\"primary\"\n textColor=\"inherit\"\n variant=\"scrollable\"\n scrollButtons=\"auto\"\n aria-label=\"tabs\"\n onChange={handleChange}\n value={selectedTab}\n >\n {tabs.map((tab, index) => (\n <TabUI\n data-testid={`header-tab-${index}`}\n label={tab.label}\n key={tab.id}\n value={index}\n className={styles.defaultTab}\n classes={{ selected: styles.selected, root: styles.tabRoot }}\n {...tab.tabProps}\n />\n ))}\n </Tabs>\n </Box>\n );\n}\n","/*\n * Copyright 2021 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FC, useState } from 'react';\nimport useAsync from 'react-use/esm/useAsync';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { CSSProperties } from '@material-ui/styles/withStyles';\nimport {\n CATALOG_FILTER_EXISTS,\n catalogApiRef,\n useEntityOwnership,\n EntityListProvider,\n} from '@backstage/plugin-catalog-react';\nimport { Entity } from '@backstage/catalog-model';\nimport { DocsTable, DocsTableRow } from './Tables';\nimport { DocsCardGrid, InfoCardGrid } from './Grids';\nimport { TechDocsPageWrapper } from './TechDocsPageWrapper';\nimport { TechDocsIndexPage } from './TechDocsIndexPage';\n\nimport {\n CodeSnippet,\n Content,\n HeaderTabs,\n Progress,\n WarningPanel,\n SupportButton,\n ContentHeader,\n TableOptions,\n} from '@backstage/core-components';\nimport { useApi } from '@backstage/core-plugin-api';\nimport { TECHDOCS_ANNOTATION } from '@backstage/plugin-techdocs-common';\nimport { EntityFilterQuery } from '@backstage/catalog-client';\n\nconst panels = {\n DocsTable: DocsTable,\n DocsCardGrid: DocsCardGrid,\n TechDocsIndexPage: TechDocsIndexPage,\n InfoCardGrid: InfoCardGrid,\n};\n\n/**\n * Available panel types\n *\n * @public\n */\nexport type PanelType =\n | 'DocsCardGrid'\n | 'DocsTable'\n | 'TechDocsIndexPage'\n | 'InfoCardGrid';\n\n/**\n * Type representing Panel props\n *\n * @public\n */\nexport interface PanelProps {\n options?: TableOptions<DocsTableRow>;\n linkContent?: string | JSX.Element;\n linkDestination?: (entity: Entity) => string | undefined;\n PageWrapper?: FC;\n CustomHeader?: FC;\n}\n\n/**\n * Type representing a TechDocsCustomHome panel.\n *\n * @public\n */\nexport interface PanelConfig {\n title: string;\n description: string;\n panelType: PanelType;\n panelCSS?: CSSProperties;\n filterPredicate: ((entity: Entity) => boolean) | string;\n panelProps?: PanelProps;\n}\n\n/**\n * Type representing a TechDocsCustomHome tab.\n *\n * @public\n */\nexport interface TabConfig {\n label: string;\n panels: PanelConfig[];\n}\n\n/**\n * Type representing a list of TechDocsCustomHome tabs.\n *\n * @public\n */\nexport type TabsConfig = TabConfig[];\n\n/**\n * Component which can be used to render entities in a custom way.\n *\n * @public\n */\nexport const CustomDocsPanel = ({\n config,\n entities,\n index,\n}: {\n config: PanelConfig;\n entities: Entity[];\n index: number;\n}) => {\n const useStyles = makeStyles({\n panelContainer: {\n marginBottom: '2rem',\n ...(config.panelCSS ? config.panelCSS : {}),\n },\n });\n const classes = useStyles();\n const { loading: loadingOwnership, isOwnedEntity } = useEntityOwnership();\n\n const Panel = panels[config.panelType];\n\n const shownEntities = entities.filter(entity => {\n if (config.filterPredicate === 'ownedByUser') {\n if (loadingOwnership) {\n return false;\n }\n return isOwnedEntity(entity);\n }\n\n return (\n typeof config.filterPredicate === 'function' &&\n config.filterPredicate(entity)\n );\n });\n\n const Header: FC =\n config.panelProps?.CustomHeader ||\n (() => (\n <ContentHeader title={config.title} description={config.description}>\n {index === 0 ? (\n <SupportButton>\n Discover documentation in your ecosystem.\n </SupportButton>\n ) : null}\n </ContentHeader>\n ));\n\n return (\n <>\n <Header />\n <div className={classes.panelContainer}>\n <EntityListProvider>\n <Panel\n data-testid=\"techdocs-custom-panel\"\n entities={shownEntities}\n {...config.panelProps}\n />\n </EntityListProvider>\n </div>\n </>\n );\n};\n\n/**\n * Props for {@link TechDocsCustomHome}\n *\n * @public\n */\nexport type TechDocsCustomHomeProps = {\n tabsConfig: TabsConfig;\n filter?: EntityFilterQuery;\n CustomPageWrapper?: FC;\n};\n\nexport const TechDocsCustomHome = (props: TechDocsCustomHomeProps) => {\n const { tabsConfig, filter, CustomPageWrapper } = props;\n const [selectedTab, setSelectedTab] = useState<number>(0);\n const catalogApi = useApi(catalogApiRef);\n\n const {\n value: entities,\n loading,\n error,\n } = useAsync(async () => {\n const response = await catalogApi.getEntities({\n filter: {\n ...filter,\n [`metadata.annotations.${TECHDOCS_ANNOTATION}`]: CATALOG_FILTER_EXISTS,\n },\n fields: [\n 'apiVersion',\n 'kind',\n 'metadata',\n 'relations',\n 'spec.owner',\n 'spec.type',\n ],\n });\n return response.items.filter((entity: Entity) => {\n return !!entity.metadata.annotations?.[TECHDOCS_ANNOTATION];\n });\n });\n\n const currentTabConfig = tabsConfig[selectedTab];\n\n if (loading) {\n return (\n <TechDocsPageWrapper CustomPageWrapper={CustomPageWrapper}>\n <Content>\n <Progress />\n </Content>\n </TechDocsPageWrapper>\n );\n }\n\n if (error) {\n return (\n <TechDocsPageWrapper CustomPageWrapper={CustomPageWrapper}>\n <Content>\n <WarningPanel\n severity=\"error\"\n title=\"Could not load available documentation.\"\n >\n <CodeSnippet language=\"text\" text={error.toString()} />\n </WarningPanel>\n </Content>\n </TechDocsPageWrapper>\n );\n }\n\n return (\n <TechDocsPageWrapper CustomPageWrapper={CustomPageWrapper}>\n <HeaderTabs\n selectedIndex={selectedTab}\n onChange={index => setSelectedTab(index)}\n tabs={tabsConfig.map(({ label }, index) => ({\n id: index.toString(),\n label,\n }))}\n />\n <Content data-testid=\"techdocs-content\">\n {currentTabConfig.panels.map((config, index) => (\n <CustomDocsPanel\n key={index}\n config={config}\n entities={!!entities ? entities : []}\n index={index}\n />\n ))}\n </Content>\n </TechDocsPageWrapper>\n );\n};\n","/*\n * Copyright 2021 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { rootDocsRouteRef } from '../../../routes';\nimport { toLowerMaybe } from '../../../helpers';\nimport { Entity } from '@backstage/catalog-model';\nimport { useApi, useRouteRef, configApiRef } from '@backstage/core-plugin-api';\nimport {\n LinkButton,\n ItemCardGrid,\n ItemCardHeader,\n} from '@backstage/core-components';\nimport Card from '@material-ui/core/Card';\nimport CardActions from '@material-ui/core/CardActions';\nimport CardContent from '@material-ui/core/CardContent';\nimport CardMedia from '@material-ui/core/CardMedia';\n\n/**\n * Props for {@link DocsCardGrid}\n *\n * @public\n */\nexport type DocsCardGridProps = {\n entities: Entity[] | undefined;\n};\n\n/**\n * Component which accepts a list of entities and renders a item card for each entity\n *\n * @public\n */\nexport const DocsCardGrid = (props: DocsCardGridProps) => {\n const { entities } = props;\n const getRouteToReaderPageFor = useRouteRef(rootDocsRouteRef);\n const config = useApi(configApiRef);\n if (!entities) return null;\n return (\n <ItemCardGrid data-testid=\"docs-explore\">\n {!entities?.length\n ? null\n : entities.map((entity, index: number) => (\n <Card key={index}>\n <CardMedia>\n <ItemCardHeader\n title={entity.metadata.title ?? entity.metadata.name}\n />\n </CardMedia>\n <CardContent>{entity.metadata.description}</CardContent>\n <CardActions>\n <LinkButton\n to={getRouteToReaderPageFor({\n namespace: toLowerMaybe(\n entity.metadata.namespace ?? 'default',\n config,\n ),\n kind: toLowerMaybe(entity.kind, config),\n name: toLowerMaybe(entity.metadata.name, config),\n })}\n color=\"primary\"\n data-testid=\"read_docs\"\n >\n Read Docs\n </LinkButton>\n </CardActions>\n </Card>\n ))}\n </ItemCardGrid>\n );\n};\n","/*\n * Copyright 2021 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Entity,\n RELATION_OWNED_BY,\n stringifyEntityRef,\n} from '@backstage/catalog-model';\nimport { identityApiRef, useApi } from '@backstage/core-plugin-api';\nimport { useMemo } from 'react';\nimport useAsync from 'react-use/esm/useAsync';\nimport { getEntityRelations } from '../utils/getEntityRelations';\n\n/**\n * Returns a function that checks whether the currently signed-in user is an\n * owner of a given entity. When the hook is initially mounted, the loading\n * flag will be true and the results returned from the function will always be\n * false.\n *\n * @public\n *\n * @returns a function that checks if the signed in user owns an entity\n */\nexport function useEntityOwnership(): {\n loading: boolean;\n isOwnedEntity: (entity: Entity) => boolean;\n} {\n const identityApi = useApi(identityApiRef);\n\n // Trigger load only on mount\n const { loading, value: refs } = useAsync(\n async () => {\n const { ownershipEntityRefs } = await identityApi.getBackstageIdentity();\n return ownershipEntityRefs;\n },\n // load only on mount\n [],\n );\n\n const isOwnedEntity = useMemo(() => {\n const myOwnerRefs = new Set(refs ?? []);\n\n return (entity: Entity) => {\n const entityOwnerRefs = getEntityRelations(entity, RELATION_OWNED_BY).map(\n stringifyEntityRef,\n );\n for (const ref of entityOwnerRefs) {\n if (myOwnerRefs.has(ref)) {\n return true;\n }\n }\n return false;\n };\n }, [refs]);\n\n return { loading, isOwnedEntity };\n}\n"],"names":["useStyles","makeStyles","theme","createStyles","ItemCardGrid","props","children","otherProps","classes","Box","ItemCardHeader","title","subtitle","Typography","HeaderTabs","tabs","onChange","selectedIndex","selectedTab","setSelectedTab","useState","styles","handleChange","useCallback","_","index","undefined","useEffect","Tabs","tab","TabUI","panels","DocsTable","entities","getRouteToReaderPageFor","useRouteRef","rootDocsRouteRef","config","useApi","configApiRef","entity","Card","CardMedia","CardContent","CardActions","LinkButton","toLowerMaybe","TechDocsIndexPage","linkContent","linkDestination","entityPresentationApi","entityPresentationApiRef","entityRefToPresentation","loading","useAsync","Map","Promise","presentation","stringifyEntityRef","Progress","InfoCard","Link","linkRoute","destination","CustomDocsPanel","loadingOwnership","isOwnedEntity","useEntityOwnership","identityApi","identityApiRef","refs","ownershipEntityRefs","useMemo","myOwnerRefs","Set","ref","getEntityRelations","RELATION_OWNED_BY","Panel","shownEntities","Header","ContentHeader","SupportButton","EntityListProvider","TechDocsCustomHome","tabsConfig","filter","CustomPageWrapper","catalogApi","catalogApiRef","error","response","TECHDOCS_ANNOTATION","CATALOG_FILTER_EXISTS","currentTabConfig","TechDocsPageWrapper","Content","WarningPanel","CodeSnippet","label"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";(self.webpackChunktechdocs_cli_embedded_app=self.webpackChunktechdocs_cli_embedded_app||[]).push([["8461"],{55290(e,t,a){var n=a(4293),r=a(78920);t.default=void 0;var i=r(a(14041));t.default=(0,n(a(74044)).default)(i.createElement("path",{d:"M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81 1.66 0 3-1.34 3-3s-1.34-3-3-3-3 1.34-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9c-1.66 0-3 1.34-3 3s1.34 3 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.16c-.05.21-.08.43-.08.65 0 1.61 1.31 2.92 2.92 2.92 1.61 0 2.92-1.31 2.92-2.92s-1.31-2.92-2.92-2.92z"}),"Share")},35571(e,t,a){a.d(t,{p:()=>f});var n=a(31085),r=a(42899),i=a(58837),l=a(72501);let s=a.p+"static/missingAnnotation.5df688e7.svg",o=a.p+"static/noInformation.acf1ccf4.svg",c=a.p+"static/createComponent.7c188d7f.svg",d=a.p+"static/noBuild.169833d0.svg",u=(0,i.A)({generalImg:{width:"95%",zIndex:2,position:"relative",left:"50%",top:"50%",transform:"translate(-50%, 15%)"}},{name:"BackstageEmptyStateImage"}),p=({missing:e})=>{let t=u();switch(e){case"field":return(0,n.jsx)("img",{src:s,className:t.generalImg,alt:"annotation is missing"});case"info":return(0,n.jsx)("img",{src:o,alt:"no Information",className:t.generalImg});case"content":return(0,n.jsx)("img",{src:c,alt:"create Component",className:t.generalImg});case"data":return(0,n.jsx)("img",{src:d,alt:"no Build",className:t.generalImg});default:return null}},m=(0,i.A)(e=>({root:{backgroundColor:e.palette.background.default,padding:e.spacing(2,0,0,0)},action:{marginTop:e.spacing(2)},imageContainer:{position:"relative"}}),{name:"BackstageEmptyState"});function f(e){let{title:t,description:a,missing:i,action:s}=e,o=m();return(0,n.jsxs)(r.A,{container:!0,direction:"row",justifyContent:"space-around",alignItems:"flex-start",className:o.root,spacing:2,children:[(0,n.jsx)(r.A,{item:!0,xs:12,md:6,children:(0,n.jsxs)(r.A,{container:!0,direction:"column",children:[(0,n.jsx)(r.A,{item:!0,xs:!0,children:(0,n.jsx)(l.A,{variant:"h5",children:t})}),(0,n.jsx)(r.A,{item:!0,xs:!0,children:(0,n.jsx)(l.A,{variant:"body1",children:a})}),(0,n.jsx)(r.A,{item:!0,xs:!0,className:o.action,children:s})]})}),(0,n.jsx)(r.A,{item:!0,xs:12,md:6,className:o.imageContainer,children:"string"==typeof i?(0,n.jsx)(p,{missing:i}):i.customImage})]})}},280(e,t,a){a.d(t,{m:()=>d,v:()=>u});var n=a(31085),r=a(29365),i=a(71677),l=a(72501),s=a(58837),o=a(55940);let c=(0,s.A)(()=>({icon:{color:"#f3ba37",cursor:"pointer",display:"inline-flex"},iconBorder:{color:"inherit",cursor:"pointer",display:"inline-flex"}}),{name:"BackstageFavoriteToggleIcon"});function d(e){let{isFavorite:t}=e,a=c();return(0,n.jsx)(l.A,{component:"span",className:t?a.icon:a.iconBorder,children:t?(0,n.jsx)(o.Gg,{}):(0,n.jsx)(o.KG,{})})}function u(e){let{id:t,title:a,isFavorite:l,onToggle:s,...o}=e;return(0,n.jsx)(i.Ay,{id:t,title:a,children:(0,n.jsx)(r.A,{"aria-label":a,id:t,onClick:()=>s(!l),color:"inherit",...o,children:(0,n.jsx)(d,{isFavorite:l})})})}},48266(e,t,a){a.d(t,{w:()=>S});var n=a(31085),r=a(77125),i=a(98552),l=a(94390),s=a(95061),o=a(41857),c=a(48543),d=a(26343),u=a(99489),p=a(7031),m=a(99703),f=a(58837),h=a(72501),g=a(92399),x=a(14041),y=a(10437);let v=(0,f.A)(e=>(0,m.A)({icon:{position:"absolute",right:e.spacing(.5),pointerEvents:"none",color:"#616161"}}),{name:"BackstageClosedDropdown"}),j=()=>{let e=v();return(0,n.jsx)(y.A,{className:e.icon,fill:"none",xmlns:"http://www.w3.org/2000/svg",children:(0,n.jsx)("path",{d:"M7.5 8L6 9.5L12.0703 15.5703L18.1406 9.5L16.6406 8L12.0703 12.5703L7.5 8Z",fill:"currentColor"})})},b=(0,f.A)(e=>(0,m.A)({icon:{position:"absolute",right:e.spacing(.5),pointerEvents:"none",color:"#616161"}}),{name:"BackstageOpenedDropdown"}),A=()=>{let e=b();return(0,n.jsx)(y.A,{className:e.icon,fill:"none",xmlns:"http://www.w3.org/2000/svg",children:(0,n.jsx)("path",{d:"M16.5 16L18 14.5L11.9297 8.42969L5.85938 14.5L7.35938 16L11.9297 11.4297L16.5 16Z",fill:"currentColor"})})},w=(0,p.A)(e=>(0,m.A)({root:{"label + &":{marginTop:e.spacing(3)},"&.Mui-focused > div[role=button]":{borderColor:e.palette.primary.main}},input:{borderRadius:e.shape.borderRadius,position:"relative",backgroundColor:e.palette.background.paper,border:"1px solid #ced4da",fontSize:e.typography.body1.fontSize,padding:e.spacing(1.25,3.25,1.25,1.5),transition:e.transitions.create(["border-color","box-shadow"]),"&:focus":{background:e.palette.background.paper,borderRadius:e.shape.borderRadius}}}),{name:"BackstageSelectInputBase"})(o.A),C=(0,f.A)(e=>(0,m.A)({formControl:{margin:e.spacing(1,0)},label:{transform:"initial",fontWeight:"bold",fontSize:e.typography.body2.fontSize,fontFamily:e.typography.fontFamily,color:e.palette.text.primary,"&.Mui-focused":{color:e.palette.text.primary}},formLabel:{transform:"initial",fontWeight:"bold",fontSize:e.typography.body2.fontSize,fontFamily:e.typography.fontFamily,color:e.palette.text.primary,"&.Mui-focused":{color:e.palette.text.primary}},chips:{display:"flex",flexWrap:"wrap"},chip:{margin:2},checkbox:{},root:{display:"flex",flexDirection:"column"}}),{name:"BackstageSelect"});function S(e){let{multiple:t,items:a,label:o,placeholder:p,selected:m,onChange:f,triggerReset:y,native:v=!1,disabled:b=!1,margin:S,"data-testid":k="select"}=e,E=C(),[I,R]=(0,x.useState)(m||(t?[]:"")),[T,F]=(0,x.useState)(!1);return(0,x.useEffect)(()=>{R(t?[]:"")},[y,t]),(0,x.useEffect)(()=>{R(m||(t?[]:""))},[m,t]),(0,n.jsx)(r.A,{className:E.root,children:(0,n.jsxs)(s.A,{className:E.formControl,children:[(0,n.jsx)(c.A,{className:E.formLabel,children:o}),(0,n.jsxs)(u.A,{"aria-label":o,value:I,native:v,disabled:b,"data-testid":k,displayEmpty:!0,multiple:t,margin:S,onChange:e=>{R(e.target.value),f(e.target.value)},open:T,onOpen:e=>{b?e.preventDefault():F(a=>!(!t||e.target instanceof HTMLElement)||!a)},onClose:()=>{F(!1)},input:(0,n.jsx)(w,{}),label:o,renderValue:e=>t&&0!==I.length?(0,n.jsx)(r.A,{className:E.chips,children:e.map(e=>{let t=a.find(t=>t.value===e);return!!t&&(0,n.jsx)(l.A,{"data-testid":"chip",label:t?.label,clickable:!0,deleteIcon:(0,n.jsx)(g.default,{"data-testid":"cancel-icon",onMouseDown:e=>e.stopPropagation()}),onDelete:()=>{let t=I.filter(t=>t!==e);R(t),f(t)},className:E.chip},t?.value)})}):(0,n.jsx)(h.A,{children:0===I.length?p||"":a.find(t=>t.value===e)?.label}),IconComponent:()=>T?(0,n.jsx)(A,{}):(0,n.jsx)(j,{}),MenuProps:{anchorOrigin:{vertical:"bottom",horizontal:"left"},transformOrigin:{vertical:"top",horizontal:"left"},getContentAnchorEl:null},children:[!!p&&!t&&(0,n.jsx)(d.A,{value:[],children:p}),v?a&&a.map(e=>(0,n.jsx)("option",{value:e.value,children:e.label},e.value)):a&&a.map(e=>(0,n.jsxs)(d.A,{value:e.value,children:[t&&(0,n.jsx)(i.A,{color:"primary",checked:I.includes(e.value)||!1,className:E.checkbox}),e.label]},e.value))]})]})})}},28499(e,t,a){a.d(t,{X:()=>Q});var n=a(31085),r=a(89595),i=a(25301),l=a(77125),s=a(29365),o=a(7031),c=a(58837),d=a(54917),u=a(72501),p=a(83313),m=a(89019),f=a(62461),h=a(68887),g=a(63798),x=a(64704),y=a(6774),v=a(75625),j=a(65859),b=a(45917),A=a(5416),w=a(33494),C=a(80113),S=a(26229),k=a(46802),E=a(45250),I=a(14041),R=a(89332),T=a(64947),F=a(48266);let N=(0,c.A)(e=>({root:{height:"100%",width:"315px",display:"flex",flexDirection:"column",marginRight:e.spacing(3)},value:{fontWeight:"bold",fontSize:18},header:{display:"flex",alignItems:"center",height:e.spacing(7.5),justifyContent:"space-between",borderBottom:`1px solid ${e.palette.grey[500]}`},filters:{display:"flex",flexDirection:"column","& > *":{marginTop:e.spacing(2)}}}),{name:"BackstageTableFilters"}),L=e=>{let t=N(),{onChangeFilters:a}=e,{t:i}=(0,r.i)(R.O),[s,o]=(0,I.useState)({...e.selectedFilters}),[c,d]=(0,I.useState)(!1);return(0,I.useEffect)(()=>{a(s)},[s,a]),(0,n.jsxs)(l.A,{className:t.root,children:[(0,n.jsxs)(l.A,{className:t.header,children:[(0,n.jsx)(l.A,{className:t.value,children:i("table.filter.title")}),(0,n.jsx)(T.A,{color:"primary",onClick:()=>{o({}),d(e=>!e)},children:i("table.filter.clearAll")})]}),(0,n.jsx)(l.A,{className:t.filters,children:e.filters?.length&&e.filters.map(e=>(0,n.jsx)(F.w,{triggerReset:c,...e.element,selected:s[e.element.label],onChange:t=>o({...s,[e.element.label]:t})},e.element.label))})]})};var O=a(78467);function P(e){return(0,n.jsx)("tbody",{"data-testid":"loading-indicator",children:(0,n.jsx)("tr",{children:(0,n.jsx)("td",{colSpan:e.colSpan,children:(0,n.jsx)(l.A,{sx:{display:"flex",justifyContent:"center",alignItems:"center",width:"100%",minHeight:"15rem"},children:(0,n.jsx)(O.A,{size:"5rem"})})})})})}let B={Add:(0,I.forwardRef)((e,t)=>(0,n.jsx)(p.default,{...e,ref:t})),Check:(0,I.forwardRef)((e,t)=>(0,n.jsx)(f.default,{...e,ref:t})),Clear:(0,I.forwardRef)((e,t)=>(0,n.jsx)(x.default,{...e,ref:t})),Delete:(0,I.forwardRef)((e,t)=>(0,n.jsx)(y.default,{...e,ref:t})),DetailPanel:(0,I.forwardRef)((e,t)=>(0,n.jsx)(g.default,{...e,ref:t})),Edit:(0,I.forwardRef)((e,t)=>(0,n.jsx)(v.default,{...e,ref:t})),Export:(0,I.forwardRef)((e,t)=>(0,n.jsx)(S.default,{...e,ref:t})),Filter:(0,I.forwardRef)((e,t)=>(0,n.jsx)(j.default,{...e,ref:t})),FirstPage:(0,I.forwardRef)((e,t)=>(0,n.jsx)(A.default,{...e,ref:t})),LastPage:(0,I.forwardRef)((e,t)=>(0,n.jsx)(w.default,{...e,ref:t})),NextPage:(0,I.forwardRef)((e,t)=>(0,n.jsx)(g.default,{...e,ref:t})),PreviousPage:(0,I.forwardRef)((e,t)=>(0,n.jsx)(h.default,{...e,ref:t})),ResetSearch:(0,I.forwardRef)((e,t)=>(0,n.jsx)(x.default,{...e,ref:t})),Search:(0,I.forwardRef)((e,t)=>(0,n.jsx)(b.default,{...e,ref:t})),SortArrow:(0,I.forwardRef)((e,t)=>(0,n.jsx)(m.default,{...e,ref:t})),ThirdStateCheck:(0,I.forwardRef)((e,t)=>(0,n.jsx)(C.default,{...e,ref:t})),ViewColumn:(0,I.forwardRef)((e,t)=>(0,n.jsx)(k.default,{...e,ref:t}))};function U(e,t){let a=t.split("."),n=e[a[0]];for(let e=1;e<a.length&&void 0!==n;++e)n=n[a[e]];return n}let $=(0,o.A)(e=>({header:{padding:e.spacing(1,2,1,2.5),borderTop:`1px solid ${e.palette.grey.A100}`,borderBottom:`1px solid ${e.palette.grey.A100}`,fontWeight:e.typography.fontWeightBold,position:"static",wordBreak:"normal",textTransform:"uppercase"}}),{name:"BackstageTableHeader"})(i.MTableHeader),z=(0,o.A)(e=>({root:{padding:e.spacing(3,0,2.5,2.5)},title:{"& > h6":{fontWeight:e.typography.fontWeightBold}},searchField:{paddingRight:e.spacing(2)}}),{name:"BackstageTableToolbar"})(i.MTableToolbar),M=(0,c.A)(e=>({root:{display:"flex",alignItems:"center",justifyContent:"space-between",flexWrap:"wrap"},filterControls:{display:"flex",alignItems:"center"},title:{fontWeight:e.typography.fontWeightBold,fontSize:18,whiteSpace:"nowrap"}}),{name:"BackstageTableFiltersContainer"}),D=(0,c.A)(()=>({root:{display:"flex",alignItems:"start"}}),{name:"BackstageTable"}),W={search:"",filtersOpen:!1,filters:{}};function K(e){let{toolbarRef:t,setSearch:a,hasFilters:i,selectedFiltersLength:o,toggleFilters:c}=e,{t:d}=(0,r.i)(R.O),p=M(),m=(0,I.useCallback)(t=>{e.onSearchChanged(t),a(t)},[e,a]);return i?(0,n.jsxs)(l.A,{className:p.root,children:[(0,n.jsxs)(l.A,{className:p.filterControls,children:[(0,n.jsx)(s.A,{onClick:c,"aria-label":"filter list",children:(0,n.jsx)(j.default,{})}),(0,n.jsxs)(u.A,{className:p.title,children:[d("table.filter.title")," (",o,")"]})]}),(0,n.jsx)(z,{...e,ref:t,onSearchChanged:m})]}):(0,n.jsx)(z,{...e,ref:t,onSearchChanged:m})}function Q(e){var t,a,s,o;let{data:c,columns:p,emptyContent:m,options:f,title:h,subtitle:g,localization:x,filters:y,initialState:v,onStateChange:j,components:b,isLoading:A,style:w,...C}=e,{t:S}=(0,r.i)(R.O),k=D(),T=(0,d.A)(),F={...W,...v},[N,O]=(0,I.useState)(F.filtersOpen),z=(0,I.useCallback)(()=>O(e=>!e),[O]),[M,Q]=(0,I.useState)(F.filters),[V,q]=(0,I.useState)(F.search);(0,I.useEffect)(()=>{if(j){var e;j((e={search:V,filtersOpen:N,filters:M},(0,E.transform)(e,(e,t,a)=>{(0,E.isEqual)(t,W[a])||(e[a]=t)})))}},[V,N,M,j]);let _=(0,I.useCallback)(e=>p.find(t=>t.title===e)?.field,[p]),H=(0,I.useMemo)(()=>{if("function"==typeof c||!M)return c;let e=Object.values(M);return c&&e.flat().length?c.filter(e=>!!Object.entries(M).filter(([,e])=>!!e.length).every(([t,a])=>{let n=U(e,_(t));return Array.isArray(n)&&Array.isArray(a)?n.some(e=>a.includes(e)):Array.isArray(n)?n.includes(a):Array.isArray(a)?a.includes(n):n===a})):c},[c,M,_]),G=Object.values(M).flat().length,X=!!y?.length,Y=(0,I.useCallback)(e=>(0,n.jsx)(K,{setSearch:q,hasFilters:X,selectedFiltersLength:G,toggleFilters:z,...e}),[z,X,G,q]),J="function"!=typeof c&&0===c.length,Z=p.length,ee=(0,I.useMemo)(()=>(function({columnCount:e,emptyContent:t,hasNoRows:a,loading:r}){return l=>r?(0,n.jsx)(P,{colSpan:e}):t&&a?(0,n.jsx)("tbody",{children:(0,n.jsx)("tr",{children:(0,n.jsx)("td",{colSpan:e,children:t})})}):(0,n.jsx)(i.MTableBody,{...l})})({hasNoRows:J,emptyContent:m,columnCount:Z,loading:A}),[J,m,Z,A]);return(0,n.jsxs)(l.A,{className:k.root,children:[N&&c&&"function"!=typeof c&&y?.length&&(0,n.jsx)(L,{filters:(t=y,a=c,s=p,o=S,t.map(e=>{var t;let n,r;return{type:e.type,element:{placeholder:o("table.filter.placeholder"),label:e.column,multiple:"multiple-select"===e.type,items:[...(t=e.column,n=new Set,r=e=>{null!=e&&n.add(e)},a&&a.forEach(e=>{let a=U(e,s.find(e=>e.title===t)?.field);Array.isArray(a)?a.forEach(r):r(a)}),n)].sort().map(e=>({label:e,value:e}))}}})),selectedFilters:M,onChangeFilters:Q}),(0,n.jsx)(i.default,{components:{Header:$,Body:ee,Toolbar:Y,...b},options:f,columns:p.map(e=>{let t=e.headerStyle??{},a=e.cellStyle||{};if(e.highlight)if(t.color=T.palette.textContrast,"object"==typeof a)a.fontWeight=T.typography.fontWeightBold;else{let e=a;a=(t,a,n)=>({...e(t,a,n),fontWeight:T.typography.fontWeightBold})}return{...e,headerStyle:t,cellStyle:a}}),icons:B,title:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(u.A,{variant:"h5",component:"h2",children:h}),g&&(0,n.jsx)(u.A,{color:"textSecondary",variant:"body1",children:g})]}),data:H,style:{width:"100%",...w},localization:{...x,body:{emptyDataSourceMessage:S("table.body.emptyDataSourceMessage"),...x?.body},pagination:{firstTooltip:S("table.pagination.firstTooltip"),labelDisplayedRows:S("table.pagination.labelDisplayedRows"),labelRowsSelect:S("table.pagination.labelRowsSelect"),lastTooltip:S("table.pagination.lastTooltip"),nextTooltip:S("table.pagination.nextTooltip"),previousTooltip:S("table.pagination.previousTooltip"),...x?.pagination},header:{actions:S("table.header.actions"),...x?.header},toolbar:{searchPlaceholder:S("table.toolbar.search"),searchTooltip:S("table.toolbar.search"),...x?.toolbar}},...C})]})}Q.icons=Object.freeze(B)},27231(e,t,a){a.d(t,{S:()=>u});var n=a(31085),r=a(42899),i=a(58837),l=a(268),s=a(72501),o=a(60603);let c=(0,i.A)(e=>({root:{textAlign:"left"},label:{color:e.page.fontColor,fontWeight:e.typography.fontWeightBold,letterSpacing:0,fontSize:e.typography.fontSize,marginBottom:e.spacing(1)/2,lineHeight:1},value:{color:(0,l.X4)(e.page.fontColor,.8),fontSize:e.typography.fontSize,lineHeight:1}}),{name:"BackstageHeaderLabel"}),d=({value:e,className:t,typographyRootComponent:a})=>(0,n.jsx)(s.A,{component:a??("string"==typeof e?"p":"span"),className:t,children:e});function u(e){let{label:t,value:a,url:i,contentTypograpyRootComponent:l}=e,u=c(),p=(0,n.jsx)(d,{className:u.value,value:a||"<Unknown>",typographyRootComponent:l});return(0,n.jsx)(r.A,{item:!0,children:(0,n.jsxs)(s.A,{component:"span",className:u.root,children:[(0,n.jsx)(s.A,{className:u.label,children:t}),i?(0,n.jsx)(o.N_,{to:i,children:p}):p]})})}},43311(e,t,a){a.d(t,{E:()=>i});var n=a(58077),r=a(47196);function i(e,t,a){if(a){let r="string"==typeof e||"metadata"in e?e:(0,n.U2)(e);return a.forEntity(r,t).snapshot}return(0,r.T)(e,t)}},80018(e,t,a){a.d(t,{Q:()=>w});var n=a(31085),r=a(77125),i=a(72501),l=a(4321),s=a(87263),o=a(16249),c=a(33145),d=a(58837),u=a(7031),p=a(99703),m=a(6924),f=a(62683),h=a(14041),g=a(45250),x=a(53373),y=a.n(x);let v=(0,d.A)(e=>({root:{margin:e.spacing(1,0)},label:{position:"relative",fontWeight:"bold",fontSize:e.typography.body2.fontSize,fontFamily:e.typography.fontFamily,color:e.palette.text.primary,"& > span":{top:0,left:0,position:"absolute"}}}),{name:"BackstageAutocomplete"}),j=(0,u.A)(e=>(0,p.A)({root:{},paper:{margin:0},hasClearIcon:{},hasPopupIcon:{},focused:{},inputRoot:{marginTop:24,backgroundColor:e.palette.background.paper,"$root$hasClearIcon$hasPopupIcon &":{paddingBlock:e.spacing(.75),paddingInlineStart:e.spacing(.75)},"$root$focused &":{outline:"none"},"$root &:hover > fieldset":{borderColor:"#ced4da"},"$root$focused & > fieldset":{borderWidth:1,borderColor:e.palette.primary.main}},popupIndicator:{padding:0,margin:0,color:"#616161","&:hover":{backgroundColor:"unset"},'& [class*="MuiTouchRipple-root"]':{display:"none"}},endAdornment:{"$root$hasClearIcon$hasPopupIcon &":{right:4}},input:{"$root$hasClearIcon$hasPopupIcon &":{fontSize:e.typography.body1.fontSize,paddingBlock:e.spacing(.8125)}}}),{name:"BackstageAutocompleteBase"})(f.Ay),b=e=>(0,n.jsx)(s.A,{...e,transition:!0,placement:"bottom-start",children:({TransitionProps:t})=>(0,n.jsx)(c.A,{...t,style:{transformOrigin:"0 0 0"},children:(0,n.jsx)(r.A,{children:e.children})})}),A=e=>(0,n.jsx)(l.A,{...e,elevation:8});function w(e){let{label:t,name:a,LabelProps:l,TextFieldProps:s,...c}=e,d=v(),u=(0,h.useCallback)(e=>(0,n.jsx)(o.A,{...(0,g.merge)(e,s),variant:"outlined"}),[s]),p=(0,n.jsx)(j,{size:"small",...c,renderInput:c.renderInput??u,popupIcon:(0,n.jsx)(m.default,{"data-testid":`${a}-expand`}),PaperComponent:A,PopperComponent:b});return(0,n.jsx)(r.A,{className:d.root,children:t?(0,n.jsxs)(i.A,{...l,className:y()(d.label,l?.className),component:"label",children:[(0,n.jsx)(r.A,{component:"span",children:t}),p]}):p})}},71242(e,t,a){a.d(t,{GI:()=>h});var n=a(31085),r=a(14041),i=a(77125),l=a(64947),s=a(73845),o=a(42899),c=a(72501),d=a(5893),u=a(54917),p=a(65859),m=a(79811),f=a(89595);let h=e=>(0,n.jsx)(o.A,{container:!0,style:{position:"relative"},children:e.children});h.Filters=e=>{let t=(0,d.A)(t=>t.breakpoints.down(e.options?.drawerBreakpoint??"md"),{noSsr:!0}),a=(0,u.A)(),[h,g]=(0,r.useState)(!1),{t:x}=(0,f.i)(m.j);return t?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(l.A,{style:{marginTop:a.spacing(1),marginLeft:a.spacing(1)},onClick:()=>g(!0),startIcon:(0,n.jsx)(p.default,{}),children:x("catalogFilter.buttonTitle")}),(0,n.jsx)(s.Ay,{open:h,onClose:()=>g(!1),anchor:e.options?.drawerAnchor??"left",disableAutoFocus:!0,keepMounted:!0,variant:"temporary",children:(0,n.jsxs)(i.A,{m:2,children:[(0,n.jsx)(c.A,{variant:"h6",component:"h2",style:{marginBottom:a.spacing(1)},children:x("catalogFilter.title")}),e.children]})})]}):(0,n.jsx)(o.A,{item:!0,lg:2,children:e.children})},h.Content=e=>(0,n.jsx)(o.A,{item:!0,xs:12,lg:10,children:e.children})},19030(e,t,a){a.d(t,{y:()=>w});var n=a(31085),r=a(77125),i=a(58837),l=a(14041),s=a(50509),o=a(73466),c=a(76272),d=a(98552),u=a(86901),p=a(44148),m=a(41260);let f=(0,n.jsx)(m.default,{fontSize:"small"}),h=(0,n.jsx)(p.default,{fontSize:"small"});function g({selected:e}){return(0,n.jsx)(d.A,{icon:f,checkedIcon:h,checked:e})}let x=(0,l.memo)(e=>{let{selected:t,value:a,availableOptions:r,showCounts:i}=e,l=i?`${a} (${r?.[a]})`:a;return(0,n.jsx)(u.A,{control:(0,n.jsx)(g,{selected:t}),label:l,onClick:e=>e.preventDefault()})});var y=a(59378),v=a(89729),j=a(80018),b=a(45250);let A=(0,i.A)({root:{},label:{textTransform:"none",fontWeight:"bold"}},{name:"CatalogReactEntityAutocompletePicker"});function w(e){let{label:t,name:a,path:i,showCounts:d,Filter:u,InputProps:p,initialSelectedOptions:m=[],filtersForAvailableValues:f=["kind"],hidden:h}=e,g=A(),{updateFilters:w,filters:C,queryParameters:{[a]:S}}=(0,y.nK)(),k=(0,s.gf)(c.v),E=f.map(e=>C[e]),{value:I}=(0,o.A)(async()=>{let{facets:e}=await k.getEntityFacets({facets:[i],filter:(0,v.Rr)(E.filter(Boolean))});return Object.fromEntries(e[i].map(({value:e,count:t})=>[e,t]))},[...E]),R=(0,l.useMemo)(()=>[S].flat().filter(Boolean),[S]),T=C[a]?.values,[F,N]=(0,l.useState)(R.length?R:T??m);(0,l.useEffect)(()=>{R.length&&N(R)},[R]);let L=Object.keys(I??{}),O=F.length&&L.length;(0,l.useEffect)(()=>{w({[a]:O?new u(F):void 0})},[a,O,F,u,w]),(0,l.useEffect)(()=>{if(!O)return;let e=T??[];(0,b.isEqual)(e,F)||N(e)},[T]);let P=C[a];return(!P||"object"!=typeof P||"values"in P)&&L.length?h?null:(0,n.jsx)(r.A,{className:g.root,pb:1,pt:1,children:(0,n.jsx)(j.Q,{multiple:!0,disableCloseOnSelect:!0,label:t,name:`${String(a)}-picker`,options:L,value:F,TextFieldProps:p,onChange:(e,t)=>N(t),renderOption:(e,{selected:t})=>(0,n.jsx)(x,{selected:t,value:e,availableOptions:I,showCounts:!!d})})}):null}},53149(e,t,a){a.d(t,{t:()=>P});var n=a(31085),r=a(58077),i=a(77125),l=a(98552),s=a(86901),o=a(72501),c=a(71677),d=a(58837),u=a(44148),p=a(41260),m=a(14041),f=a(59378),h=a(47195),g=a(1497),x=a(48108),y=a(47966),v=a(87623),j=a(43311),b=a(50509),A=a(87290),w=a(76272),C=a(76842),S=a(7031),k=a(76355),E=a(79811),I=a(89595),R=a(80018);let T=(0,d.A)({root:{},label:{},input:{},fullWidth:{width:"100%"},boxLabel:{width:"100%",textOverflow:"ellipsis",overflow:"hidden"}},{name:"CatalogReactEntityOwnerPicker"}),F=(0,S.A)(e=>({label:{width:"100%"},root:{width:"90%"}}),{name:"FixedWidthFormControlLabel"})(s.A),N=(0,n.jsx)(p.default,{fontSize:"small"}),L=(0,n.jsx)(u.default,{fontSize:"small"});function O(e){let t=T(),a="group"===e.entity.kind.toLocaleLowerCase("en-US"),{primaryTitle:r}=(0,k.f)(e.entity);return(0,n.jsx)(i.A,{className:t.fullWidth,children:(0,n.jsx)(F,{className:t.fullWidth,control:(0,n.jsx)(l.A,{icon:N,checkedIcon:L,checked:e.isSelected}),onClick:e=>e.preventDefault(),label:(0,n.jsx)(c.Ay,{title:r,children:(0,n.jsxs)(i.A,{display:"flex",alignItems:"center",children:[a?(0,n.jsx)(y.default,{fontSize:"small"}):(0,n.jsx)(x.default,{fontSize:"small"}),"\xa0",(0,n.jsx)(i.A,{className:t.boxLabel,children:(0,n.jsx)(o.A,{noWrap:!0,children:r})})]})})})})}let P=e=>{let t=T(),{mode:a="owners-only"}=e||{},l=(0,b.Q2)().get(v.n),{updateFilters:s,filters:o,queryParameters:{owners:c}}=(0,f.nK)(),[d,u]=(0,m.useState)(""),{t:p}=(0,I.i)(E.j),x=(0,m.useMemo)(()=>[c].flat().filter(Boolean),[c]),[y,S]=(0,m.useState)(x.length?x:o.owners?.values??[]),[{value:k,loading:F},N,L]=function({mode:e,initialSelectedOwnersRefs:t}){let a,n="owners-only"===e,i=(a=(0,b.gf)(w.v),(0,A.A)(async(e,t)=>{let n=t?.limit??20;if(e.cursor){let t=await a.queryEntities({cursor:e.cursor,limit:n});return{cursor:t.pageInfo.nextCursor,items:[...e.items,...t.items]}}let r=await a.queryEntities({fullTextFilter:{term:e.text||"",fields:["metadata.name","kind","spec.profile.displayname","metadata.title"]},filter:{kind:["User","Group"]},orderFields:[{field:"metadata.name",order:"asc"}],limit:n});return{cursor:r.pageInfo.nextCursor,items:r.items}},[],{loading:!0})),l=function({enabled:e}){let t=(0,b.gf)(w.v),[a]=(0,m.useState)(async()=>{if(!e)return[];let a="relations.ownedBy";return t.getEntityFacets({facets:[a]}).then(e=>e.facets[a].map(e=>e.value).map(e=>{let{kind:t,name:a,namespace:n}=(0,r.KU)(e);return{apiVersion:"backstage.io/v1beta1",kind:t,metadata:{name:a,namespace:n}}}).sort((e,t)=>e.kind.localeCompare(t.kind,"en-US")||e.metadata.namespace.localeCompare(t.metadata.namespace,"en-US")||e.metadata.name.localeCompare(t.metadata.name,"en-US"))).catch(()=>[])});return(0,A.A)(async(e,t)=>{var n;let r=await a;if(!r)return{items:[]};let i=t?.limit??20,{text:l,start:s}=(n=e).cursor&&n.cursor?JSON.parse(atob(n.cursor)):{text:n.text||"",start:0},o=r.filter(e=>{var t,a;let n;return t=l,a=e,n=t.trim(),a.kind.includes(n)||a.metadata.namespace?.includes(n)||a.metadata.name.includes(n)}),c=s+i;return{items:o.slice(0,c),...function({entities:e,limit:t,payload:a}){return e.length>t?{cursor:btoa(JSON.stringify(a))}:{}}({entities:o,limit:c,payload:{text:l,start:c}})}},[a],{loading:!0,value:{items:[]}})}({enabled:n}),[s,o]=n?l:i;return[s,o,function({enabled:e,initialSelectedOwnersRefs:t}){let a=(0,m.useRef)({}),n=(0,b.gf)(w.v),[,i]=(0,A.A)(async()=>{(await n.getEntitiesByRefs({entityRefs:t})).items.forEach(e=>{e&&(a.current[(0,r.U2)(e)]=e)})},[]);return(0,C.u)(()=>{e&&t.length>0&&i()}),{getEntity:e=>a.current[e],setEntity:e=>{a.current[(0,r.U2)(e)]=e}}}({enabled:!n,initialSelectedOwnersRefs:t})]}({mode:a,initialSelectedOwnersRefs:y});(0,g.s)(()=>N({text:d.toLocaleLowerCase("en-US")}),[d,N],250);let P=k?.items||[];return((0,m.useEffect)(()=>{x.length&&S(new h.N9(x).values)},[x]),(0,m.useEffect)(()=>{s({owners:y.length?new h.N9(y):void 0})},[y,s]),["user","group"].includes(o.kind?.value.toLocaleLowerCase("en-US")||""))?null:(0,n.jsx)(i.A,{className:t.root,pb:1,pt:1,children:(0,n.jsx)(R.Q,{label:p("entityOwnerPicker.title"),multiple:!0,disableCloseOnSelect:!0,loading:F,options:P,value:y,getOptionSelected:(e,t)=>"string"==typeof t?(0,r.U2)(e)===t:e===t,getOptionLabel:e=>{let t="string"==typeof e?L.getEntity(e)||(0,r.KU)(e,{defaultKind:"group",defaultNamespace:"default"}):e;return(0,j.E)(t,void 0,l).primaryTitle},onChange:(e,t)=>{u(""),S(t.map(e=>{let t="string"==typeof e?e:(0,r.U2)(e);return"string"!=typeof e&&L.setEntity(e),t}))},filterOptions:e=>e,renderOption:(e,{selected:t})=>(0,n.jsx)(O,{entity:e,isSelected:t}),name:"owner-picker",onInputChange:(e,t)=>{u(t)},ListboxProps:{onScroll:e=>{let t=e.currentTarget;1>Math.abs(t.scrollHeight-t.clientHeight-t.scrollTop)&&k?.cursor&&N({items:k.items,cursor:k.cursor})},"data-testid":"owner-picker-listbox"},LabelProps:{className:t.label},TextFieldProps:{className:t.input}})})}},67762(e,t,a){a.d(t,{m:()=>d});var n=a(31085),r=a(58837),i=a(47195),l=a(19030),s=a(79811),o=a(89595);let c=(0,r.A)({input:{}},{name:"CatalogReactEntityTagPicker"}),d=e=>{let t=c(),{t:a}=(0,o.i)(s.j);return(0,n.jsx)(l.y,{label:a("entityTagPicker.title"),name:"tags",path:"metadata.tags",Filter:i.q_,showCounts:e.showCounts,InputProps:{className:t.input},initialSelectedOptions:e.initialFilter?e.initialFilter:[],hidden:e.hidden})}},59302(e,t,a){a.d(t,{y:()=>F});var n=a(31085),r=a(50509),i=a(19735),l=a(40703),s=a(58007),o=a(46423),c=a(65569),d=a(5951),u=a(26343),p=a(72501),m=a(58837),f=a(9684),h=a(55940),g=a(14041),x=a(47195),y=a(59378),v=a(48203),j=a(45250),b=a(73466),A=a(76272),w=a(89729),C=a(87290),S=a(17855),k=a(58077),E=a(75710),I=a(89595),R=a(79811);let T=(0,m.A)(e=>({root:{backgroundColor:"rgba(0, 0, 0, .11)",boxShadow:"none",margin:e.spacing(1,0,1,0)},title:{margin:e.spacing(1,0,0,1),textTransform:"uppercase",fontSize:12,fontWeight:"bold"},listIcon:{minWidth:30,color:e.palette.text.primary},menuItem:{minHeight:e.spacing(6)},groupWrapper:{margin:e.spacing(1,1,2,1)}}),{name:"CatalogReactUserListPicker"}),F=e=>{let{initialFilter:t,availableFilters:a,hidden:m,alwaysKeepFilters:F}=e,N=T(),L=(0,r.gf)(i.U),{t:O}=(0,I.i)(R.j),P=L.getOptionalString("organization.name")??O("userListPicker.defaultOrgName"),{filters:B,updateFilters:U,queryParameters:{user:$}}=(0,y.nK)(),z=B.kind?.value?.toLowerCase(),M=["starred","all"],D=[{name:O("userListPicker.personalFilter.title"),items:[{id:"owned",label:O("userListPicker.personalFilter.ownedLabel"),icon:f.default},{id:"starred",label:O("userListPicker.personalFilter.starredLabel"),icon:h.Gg}]},{name:P,items:[{id:"all",label:O("userListPicker.orgFilterAllLabel")}]}].map(e=>({...e,items:e.items.filter(({id:e})=>["group","user"].some(e=>e===z)?M.includes(e):!a||a.includes(e))})).filter(({items:e})=>!!e.length),{count:W,loading:K,filter:Q}=function(){let e=(0,r.gf)(v.K),t=(0,r.gf)(A.v),{filters:a}=(0,y.nK)(),{value:n,loading:i}=(0,b.A)(async()=>(await e.getBackstageIdentity()).ownershipEntityRefs,[]),{user:l,owners:s,...o}=a,{orderFields:c,...d}=(0,w.$3)((0,j.compact)(Object.values(o))),[{value:u,loading:p},m]=(0,C.A)(async e=>{let a=function(e,t){if(void 0===t)return;let a=e?.values??[];if(a.length){let e=(0,j.intersection)(a,t);if(0===e.length)return;return e}return t}(e.owners,e.ownershipEntityRefs);if(void 0===a)return 0;let{"metadata.name":n,...r}=e.filter.filter,{totalItems:i}=await t.queryEntities({...e.filter,filter:{...r,"relations.ownedBy":a},limit:0});return i},[],{loading:!0});return(0,S.A)(()=>{0===Object.keys(d.filter).length||void 0!==n&&m({ownershipEntityRefs:n,owners:s,filter:d})},[n,s,d]),{count:u,loading:i||p,filter:(0,g.useMemo)(()=>x.tN.owned(n??[]),[n]),ownershipEntityRefs:n}}(),{count:V}=function(){let e=(0,r.gf)(A.v),{filters:t}=(0,y.nK)(),a=(0,g.useRef)(),n=(0,g.useMemo)(()=>{let{user:e,...n}=t,r=(0,j.compact)(Object.values(n)),{orderFields:i,...l}=(0,w.$3)(r),s={...l,limit:0};return 0===Object.keys(l.filter).length?(a.current=void 0,a.current):(0,j.isEqual)(s,a.current)?a.current:(a.current=s,s)},[t]),{value:i,loading:l}=(0,b.A)(async()=>{if(void 0===n)return 0;let{totalItems:t}=await e.queryEntities(n);return t},[n]);return{count:i,loading:l}}(),{count:q,filter:_,loading:H}=function(){let e=(0,r.gf)(A.v),{filters:t}=(0,y.nK)(),{starredEntities:a}=(0,E.I)(),n=(0,g.useRef)(),i=(0,g.useMemo)(()=>{let{user:e,...r}=t,i=(0,j.compact)(Object.values(r)),{orderFields:l,...s}=(0,w.$3)(i),o={...s,filter:{...s.filter,"metadata.name":Array.from(a).map(e=>(0,k.KU)(e).name)},limit:1e3};return(0,j.isEqual)(o,n.current)?n.current:(n.current=o,o)},[t,a]),{value:l,loading:s}=(0,b.A)(async()=>a.size?(await e.queryEntities(i)).items.map(e=>(0,k.U2)({kind:e.kind,namespace:e.metadata.namespace,name:e.metadata.name})).filter(e=>a.has(e)).length:0,[i,a]);return{count:l,loading:s,filter:(0,g.useMemo)(()=>x.tN.starred(Array.from(a)),[a])}}(),G=(0,g.useMemo)(()=>[$].flat()[0],[$]),[X,Y]=(0,g.useState)(G??t),J=(0,g.useMemo)(()=>({all:V,starred:q,owned:W}),[q,W,V]);(0,g.useEffect)(()=>{G&&Y(G)},[G]);let Z=K||H;return(0,g.useEffect)(()=>{Z||!X||"all"===X||0!==J[X]||F||Y("all")},[Z,J,X,Y,F]),(0,g.useEffect)(()=>{!X||Z||U({user:"owned"===X?Q:"starred"===X?_:x.tN.all()})},[X,_,Q,U,Z]),m?null:(0,n.jsx)(l.A,{className:N.root,children:D.map(e=>(0,n.jsxs)(g.Fragment,{children:[(0,n.jsx)(p.A,{variant:"subtitle2",component:"span",className:N.title,children:e.name}),(0,n.jsx)(l.A,{className:N.groupWrapper,children:(0,n.jsx)(s.A,{disablePadding:!0,dense:!0,role:"menu","aria-label":e.name,children:e.items.map((t,a)=>(0,n.jsxs)(u.A,{role:"none presentation",divider:a!==e.items.length-1,onClick:()=>Y(t.id),selected:t.id===B.user?.value,className:N.menuItem,disabled:0===J[t.id],"data-testid":`user-picker-${t.id}`,tabIndex:0,ContainerProps:{role:"menuitem"},children:[t.icon&&(0,n.jsx)(o.A,{className:N.listIcon,children:(0,n.jsx)(t.icon,{fontSize:"small"})}),(0,n.jsx)(d.A,{children:(0,n.jsxs)(p.A,{variant:"body1",children:[t.label," "]})}),(0,n.jsx)(c.A,{children:J[t.id]??"-"})]},t.id))})})]},e.name))})}},47195(e,t,a){a.d(t,{I5:()=>u,Kf:()=>h,N9:()=>d,V3:()=>c,gM:()=>l,gZ:()=>f,mT:()=>g,qA:()=>s,q_:()=>o,tN:()=>m,z:()=>p});var n=a(58077),r=a(96403),i=a(53320);class l{value;label;constructor(e,t){this.value=e,this.label=t}getCatalogFilters(){return{kind:this.value}}toQueryValue(){return this.value}}class s{value;constructor(e){this.value=e}getTypes(){return Array.isArray(this.value)?this.value:[this.value]}getCatalogFilters(){return{"spec.type":this.getTypes()}}toQueryValue(){return this.getTypes()}}class o{values;constructor(e){this.values=e}filterEntity(e){return this.values.every(t=>(e.metadata.tags??[]).includes(t))}getCatalogFilters(){return{"metadata.tags":this.values}}toQueryValue(){return this.values}}class c{value;constructor(e){this.value=e}filterEntity(e){let t=this.toUpperArray(this.value.split(/\s/)),a=this.toUpperArray([e.metadata.tags]),n=this.toUpperArray([e.metadata.name,e.metadata.title,e.spec?.profile?.displayName]);for(let e of t)if(a.every(t=>t!==e)&&n.every(t=>!t.includes(e)))return!1;return!0}getFullTextFilters(){return{term:this.value,fields:["metadata.name","metadata.title","spec.profile.displayName"]}}toQueryValue(){return this.value}toUpperArray(e){return e.flat().filter(e=>!!e).map(e=>e.toLocaleUpperCase("en-US"))}}class d{values;constructor(e){this.values=e.reduce((e,t)=>{try{return e.push((0,n.U2)((0,n.KU)(t,{defaultKind:"Group"}))),e}catch(t){return e}},[])}getCatalogFilters(){return{"relations.ownedBy":this.values}}filterEntity(e){return this.values.some(t=>(0,i.t)(e,r.vv).some(e=>(0,n.U2)(e)===t))}toQueryValue(){return this.values}}class u{values;constructor(e){this.values=e}getCatalogFilters(){return{"spec.lifecycle":this.values}}filterEntity(e){return this.values.some(t=>e.spec?.lifecycle===t)}toQueryValue(){return this.values}}class p{values;constructor(e){this.values=e}getCatalogFilters(){return{"metadata.namespace":this.values}}filterEntity(e){return this.values.some(t=>e.metadata.namespace===t)}toQueryValue(){return this.values}}class m{value;refs;constructor(e,t){this.value=e,this.refs=t}static owned(e){return new m("owned",e)}static all(){return new m("all")}static starred(e){return new m("starred",e)}getCatalogFilters(){return"owned"===this.value?{"relations.ownedBy":this.refs??[]}:"starred"===this.value?{"metadata.name":this.refs?.map(e=>(0,n.KU)(e).name)??[]}:{}}filterEntity(e){if("starred"===this.value)return this.refs?.includes((0,n.U2)(e))??!0;if("owned"===this.value){let t=(0,i.t)(e,r.vv);return this.refs?.some(e=>t.some(t=>(0,n.U2)(t)===e))??!1}return!0}toQueryValue(){return this.value}}class f{value;isOwnedEntity;isStarredEntity;constructor(e,t,a){this.value=e,this.isOwnedEntity=t,this.isStarredEntity=a}filterEntity(e){switch(this.value){case"owned":return this.isOwnedEntity(e);case"starred":return this.isStarredEntity(e);default:return!0}}toQueryValue(){return this.value}}class h{value;constructor(e){this.value=e}getCatalogFilters(){return this.value?{"metadata.annotations.backstage.io/orphan":String(this.value)}:{}}filterEntity(e){let t=e.metadata.annotations?.["backstage.io/orphan"];return void 0!==t&&this.value.toString()===t}}class g{value;constructor(e){this.value=e}filterEntity(e){let t=e?.status?.items?.length>0;return void 0!==t&&this.value===t}}},59378(e,t,a){a.d(t,{B9:()=>v,nK:()=>j});var n=a(31085),r=a(50509),i=a(9135),l=a(20549),s=a(45250),o=a(45810),c=a.n(o),d=a(14041),u=a(18690),p=a(87290),m=a(48240),f=a(71581),h=a(76272),g=a(89729);let x=(0,i.tK)("entity-list-context"),y=(0,d.createContext)(void 0),v=e=>{let t=(0,f.A)(),a=(0,r.gf)(h.v),[i,o]=(0,d.useState)({}),v=(0,u.useLocation)(),j=!0===e.pagination?"cursor":"object"==typeof e.pagination?e.pagination.mode??"cursor":"none",b="object"==typeof e.pagination?e.pagination.limit??20:20,{queryParameters:A,cursor:w,offset:C,limit:S}=(0,d.useMemo)(()=>{let e=c().parse(v.search,{ignoreQueryPrefix:!0,arrayLimit:1e4}),t=b;if("string"==typeof e.limit){let a=Number.parseInt(e.limit,10);isNaN(a)||(t=a)}let a="string"==typeof e.offset&&"offset"===j?Number.parseInt(e.offset,10):void 0;return{queryParameters:e.filters??{},cursor:"string"==typeof e.cursor&&"cursor"===j?e.cursor:void 0,offset:"offset"===j&&a&&!isNaN(a)?a:void 0,limit:t}},[j,v.search,b]),[k,E]=(0,d.useState)(w),[I,R]=(0,d.useState)(C),[T,F]=(0,d.useState)(S),[N,L]=(0,d.useState)(()=>({appliedFilters:{},entities:[],backendEntities:[],pageInfo:{},offset:I,limit:T})),[{value:O,loading:P,error:B},U]=(0,p.A)(async()=>{let e=i.kind?.value?.toLocaleLowerCase("en-US"),t="user"===e||"group"===e?{...i,owners:void 0}:i,n=(0,s.compact)(Object.values(t)),r=(0,g.be)(n);if("none"!==j){if(k){if(k!==N.appliedCursor){let e=await a.queryEntities({cursor:k,limit:T});return{appliedFilters:i,appliedCursor:k,backendEntities:e.items,entities:e.items.filter(r),pageInfo:e.pageInfo,totalItems:e.totalItems}}let e=N.backendEntities.filter(r);return{appliedFilters:i,appliedCursor:N.appliedCursor,backendEntities:N.backendEntities,entities:e,pageInfo:N.pageInfo,totalItems:N.totalItems,limit:N.limit,offset:N.offset}}let e=(0,g.$3)(n),t=(0,g.$3)((0,s.compact)(Object.values(N.appliedFilters)));if("offset"===j&&(N.limit!==T||N.offset!==I)||!(0,s.isEqual)(t,e)){let t=await a.queryEntities({...e,limit:T,offset:I});return{appliedFilters:i,backendEntities:t.items,entities:t.items.filter(r),pageInfo:t.pageInfo,totalItems:t.totalItems,limit:T,offset:I}}let l=N.backendEntities.filter(r);return{appliedFilters:i,backendEntities:N.backendEntities,entities:l,pageInfo:N.pageInfo,totalItems:N.totalItems,limit:N.limit,offset:N.offset}}let l=(0,g.Rr)(n),{orderFields:o}=(0,g.$3)(n),c=(0,g.Rr)((0,s.compact)(Object.values(N.appliedFilters)));if(!(0,s.isEqual)(c,l)){let e=await a.getEntities({filter:l,order:o}),t=e.items.filter(r);return{appliedFilters:i,backendEntities:e.items,entities:t,totalItems:t.length}}let d=N.backendEntities.filter(r);return{appliedFilters:i,backendEntities:N.backendEntities,entities:d,totalItems:d.length}},[a,A,i,N,k,j,T,I],{loading:!0});(0,m.A)(U,10,[i,k,T,I]),(0,d.useEffect)(()=>{if(void 0!==O&&(L(O),t())){let e=Object.keys(i).reduce((e,t)=>{let a=i[t];return a?.toQueryValue&&(e[t]=a.toQueryValue()),e},{}),t=c().parse(v.search,{ignoreQueryPrefix:!0,arrayLimit:1e4}),a=c().stringify({...t,filters:e,..."none"===j?{}:{cursor:k,limit:T,offset:I}},{addQueryPrefix:!0,arrayFormat:"repeat"}),n=`${window.location.pathname}${a}`;window.history?.replaceState(null,document.title,n)}},[k,t,T,v.search,I,i,O,j]);let $=(0,d.useCallback)(e=>{"cursor"===j?E(void 0):"offset"===j&&R(0),o(t=>{let a="function"==typeof e?e(t):e;return{...t,...a}})},[j]),z=O??N,M=(0,d.useMemo)(()=>{if("cursor"!==j)return;let e=z.pageInfo?.prevCursor,t=z.pageInfo?.nextCursor;return{prev:e?()=>E(e):void 0,next:t?()=>E(t):void 0}},[j,z.pageInfo]),D=(0,d.useMemo)(()=>({filters:z.appliedFilters,entities:z.entities,backendEntities:z.backendEntities,updateFilters:$,queryParameters:A,loading:P,error:B,pageInfo:M,totalItems:z.totalItems,limit:T,offset:I,setLimit:F,setOffset:R,paginationMode:j}),[z,$,A,P,B,M,T,I,j,F,R]);return(0,n.jsx)(y.Provider,{value:D,children:(0,n.jsx)(x.Provider,{value:(0,l.B)({1:D}),children:e.children})})};function j(){let e=(0,i.qO)("entity-list-context"),t=(0,d.useContext)(y);if(e){let t=e.atVersion(1);if(!t)throw Error("EntityListContext v1 not available");return t}if(t)return t;throw Error("useEntityList must be used within EntityListProvider")}},75710(e,t,a){a.d(t,{I:()=>c});var n=a(58077),r=a(50509),i=a(14041),l=a(10581),s=a(769);function o(e){return"string"==typeof e?e:(0,n.U2)(e)}function c(){let e=(0,r.gf)(s.a),t=(0,l.A)((0,i.useMemo)(()=>e.starredEntitie$(),[e]),new Set),a=(0,i.useCallback)(e=>t.has(o(e)),[t]);return{starredEntities:t,toggleStarredEntity:(0,i.useCallback)(t=>e.toggleStarred(o(t)).then(),[e]),isStarredEntity:a}}},89729(e,t,a){a.d(t,{$3:()=>l,Rr:()=>s,be:()=>o});var n=a(47195);function r(e){return!!e.getFullTextFilters}function i(e){return!!e.getOrderFilters}function l(e){let t=e.reduce((e,t)=>({...e,...t.getCatalogFilters?t.getCatalogFilters():{}}),{});return{filter:t,fullTextFilter:e.find(r)?.getFullTextFilters(),orderFields:e.find(i)?.getOrderFilters()||[{field:"metadata.name",order:"asc"}]}}function s(e){let t={};return e.forEach(e=>{e instanceof n.q_||e instanceof n.N9||e instanceof n.I5||e instanceof n.z||e instanceof n.tN||e instanceof n.Kf||e instanceof n.V3||e instanceof n.gZ||Object.assign(t,e.getCatalogFilters?.()||{})}),t}function o(e){return t=>e.every(e=>!e.filterEntity||e.filterEntity(t))}},27052(e,t,a){a.d(t,{Router:()=>$,LegacyEmbeddedDocsRouter:()=>D,EmbeddedDocsRouter:()=>M,TechDocsReaderRouter:()=>z});var n=a(31085),r=a(18690),i=a(58077),l=a(78931),s=a(95269),o=a(18288),c=a(78395),d=a(90898),u=a(33141),p=a(19735),m=a(71531),f=a(76637),h=a(18275),g=a(44355);let x=new class e{config;constructor(e){this.config=e}getId(){return this.config.id}getApis(){return this.config.apis??[]}getFeatureFlags(){return this.config.featureFlags?.slice()??[]}get routes(){return this.config.routes??{}}get externalRoutes(){return this.config.externalRoutes??{}}provide(e){return e.expose(this)}toString(){return`plugin{${this.config.id}}`}}({id:"techdocs",apis:[(0,u.b)({api:o.s,deps:{configApi:p.U,discoveryApi:m.I,fetchApi:f.a},factory:({configApi:e,discoveryApi:t,fetchApi:a})=>new c.E({configApi:e,discoveryApi:t,fetchApi:a})}),(0,u.b)({api:o.l,deps:{configApi:p.U,discoveryApi:m.I,fetchApi:f.a},factory:({configApi:e,discoveryApi:t,fetchApi:a})=>new c.z({configApi:e,discoveryApi:t,fetchApi:a})})],routes:{root:d.rQ,docRoot:d.Oc,entityContent:d.Ri}});x.provide((0,h.QJ)({name:"TechdocsPage",component:()=>Promise.resolve().then(a.bind(a,27052)).then(e=>e.Router),mountPoint:d.rQ})),x.provide((0,h.QJ)({name:"EntityTechdocsContent",component:()=>Promise.resolve().then(a.bind(a,27052)).then(e=>e.LegacyEmbeddedDocsRouter),mountPoint:d.Ri})),x.provide((0,h.QJ)({name:"TechDocsCustomHome",component:()=>a.e("7226").then(a.bind(a,68817)).then(e=>e.TechDocsCustomHome),mountPoint:d.rQ})),x.provide((0,h.QJ)({name:"TechDocsIndexPage",component:()=>Promise.resolve().then(a.bind(a,47677)).then(e=>e.TechDocsIndexPage),mountPoint:d.rQ}));let y=x.provide((0,h.QJ)({name:"TechDocsReaderPage",component:()=>a.e("6270").then(a.bind(a,70157)).then(e=>e.TechDocsReaderPage),mountPoint:d.Oc}));x.provide((0,g.ec)({name:"TechDocsSearchResultListItem",component:()=>Promise.resolve().then(a.bind(a,26761)).then(e=>e.TechDocsSearchResultListItem),predicate:e=>"techdocs"===e.type}));var v=a(59177),j=a(4518),b=a(14041),A=a(81219);let w=({entity:e,withSearch:t=!0})=>{let a=(0,i.sM)(e),r=function(e){let{kind:t,name:a,namespace:n}=e,r=(0,A.S)(d.Oc),i=(0,A.S)(d.Ri);return(0,b.useMemo)(()=>{let e=r({kind:t,namespace:n,name:a}).replace(/\/+$/,""),l=i().replace(/\/+$/,"");return t=>{if(t.toLocaleLowerCase("en-US").startsWith(e.toLocaleLowerCase("en-US"))){let a=t.slice(e.length).replace(/^\/+/,"");return 0===a.length||a.startsWith("#")?`${l}${a}`:`${l}/${a}`}return t}},[r,i,t,a,n])}(a);if(e.metadata.annotations?.[l.GO])try{a=(0,i.KU)(e.metadata.annotations?.[l.GO])}catch{}let o=(0,s.oN)(e);return(0,n.jsxs)(y,{entityRef:a,children:[(0,n.jsx)(j.Z,{}),(0,n.jsx)(v.p,{withSearch:t,searchResultUrlMapper:r,defaultPath:o})]})};var C=a(47677),S=a(93872),k=a(22845),E=a(77125),I=a(64947),R=a(58837),T=a(72501),F=a(35571),N=a(4809),L=a(60603),O=a(89595),P=a(79811);let B=(0,R.A)(e=>({code:{borderRadius:6,margin:e.spacing(2,0),background:"dark"===e.palette.type?"#444":e.palette.common.white}}),{name:"BackstageMissingAnnotationEmptyState"});function U(e){var t;let a,r,i,l,s,o,c,d,{t:u}=(0,O.i)(P.j);try{a=(0,k.tN)().entity}catch(e){}let{annotation:p,readMoreUrl:m}=e,f=Array.isArray(p)?p:[p],h=B(),g=a?.kind||"Component",{yamlText:x,lineNumbers:y}=(t=a,r=t?.kind||"Component",i=t?.metadata.name||"example",l=t?.spec?.type||"website",s=t?.spec?.owner||"user:default/guest",o=`apiVersion: backstage.io/v1alpha1
|
|
1
|
+
"use strict";(self.webpackChunktechdocs_cli_embedded_app=self.webpackChunktechdocs_cli_embedded_app||[]).push([["8461"],{55290(e,t,a){var n=a(4293),r=a(78920);t.default=void 0;var i=r(a(14041));t.default=(0,n(a(74044)).default)(i.createElement("path",{d:"M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81 1.66 0 3-1.34 3-3s-1.34-3-3-3-3 1.34-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9c-1.66 0-3 1.34-3 3s1.34 3 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.16c-.05.21-.08.43-.08.65 0 1.61 1.31 2.92 2.92 2.92 1.61 0 2.92-1.31 2.92-2.92s-1.31-2.92-2.92-2.92z"}),"Share")},35571(e,t,a){a.d(t,{p:()=>f});var n=a(31085),r=a(42899),i=a(58837),l=a(72501);let s=a.p+"static/missingAnnotation.5df688e7.svg",o=a.p+"static/noInformation.acf1ccf4.svg",c=a.p+"static/createComponent.7c188d7f.svg",d=a.p+"static/noBuild.169833d0.svg",u=(0,i.A)({generalImg:{width:"95%",zIndex:2,position:"relative",left:"50%",top:"50%",transform:"translate(-50%, 15%)"}},{name:"BackstageEmptyStateImage"}),p=({missing:e})=>{let t=u();switch(e){case"field":return(0,n.jsx)("img",{src:s,className:t.generalImg,alt:"annotation is missing"});case"info":return(0,n.jsx)("img",{src:o,alt:"no Information",className:t.generalImg});case"content":return(0,n.jsx)("img",{src:c,alt:"create Component",className:t.generalImg});case"data":return(0,n.jsx)("img",{src:d,alt:"no Build",className:t.generalImg});default:return null}},m=(0,i.A)(e=>({root:{backgroundColor:e.palette.background.default,padding:e.spacing(2,0,0,0)},action:{marginTop:e.spacing(2)},imageContainer:{position:"relative"}}),{name:"BackstageEmptyState"});function f(e){let{title:t,description:a,missing:i,action:s}=e,o=m();return(0,n.jsxs)(r.A,{container:!0,direction:"row",justifyContent:"space-around",alignItems:"flex-start",className:o.root,spacing:2,children:[(0,n.jsx)(r.A,{item:!0,xs:12,md:6,children:(0,n.jsxs)(r.A,{container:!0,direction:"column",children:[(0,n.jsx)(r.A,{item:!0,xs:!0,children:(0,n.jsx)(l.A,{variant:"h5",children:t})}),(0,n.jsx)(r.A,{item:!0,xs:!0,children:(0,n.jsx)(l.A,{variant:"body1",children:a})}),(0,n.jsx)(r.A,{item:!0,xs:!0,className:o.action,children:s})]})}),(0,n.jsx)(r.A,{item:!0,xs:12,md:6,className:o.imageContainer,children:"string"==typeof i?(0,n.jsx)(p,{missing:i}):i.customImage})]})}},280(e,t,a){a.d(t,{m:()=>d,v:()=>u});var n=a(31085),r=a(29365),i=a(71677),l=a(72501),s=a(58837),o=a(55940);let c=(0,s.A)(()=>({icon:{color:"#f3ba37",cursor:"pointer",display:"inline-flex"},iconBorder:{color:"inherit",cursor:"pointer",display:"inline-flex"}}),{name:"BackstageFavoriteToggleIcon"});function d(e){let{isFavorite:t}=e,a=c();return(0,n.jsx)(l.A,{component:"span",className:t?a.icon:a.iconBorder,children:t?(0,n.jsx)(o.Gg,{}):(0,n.jsx)(o.KG,{})})}function u(e){let{id:t,title:a,isFavorite:l,onToggle:s,...o}=e;return(0,n.jsx)(i.Ay,{id:t,title:a,children:(0,n.jsx)(r.A,{"aria-label":a,id:t,onClick:()=>s(!l),color:"inherit",...o,children:(0,n.jsx)(d,{isFavorite:l})})})}},48266(e,t,a){a.d(t,{w:()=>S});var n=a(31085),r=a(77125),i=a(98552),l=a(94390),s=a(95061),o=a(41857),c=a(48543),d=a(26343),u=a(99489),p=a(7031),m=a(99703),f=a(58837),h=a(72501),g=a(92399),x=a(14041),y=a(10437);let v=(0,f.A)(e=>(0,m.A)({icon:{position:"absolute",right:e.spacing(.5),pointerEvents:"none",color:"#616161"}}),{name:"BackstageClosedDropdown"}),j=()=>{let e=v();return(0,n.jsx)(y.A,{className:e.icon,fill:"none",xmlns:"http://www.w3.org/2000/svg",children:(0,n.jsx)("path",{d:"M7.5 8L6 9.5L12.0703 15.5703L18.1406 9.5L16.6406 8L12.0703 12.5703L7.5 8Z",fill:"currentColor"})})},b=(0,f.A)(e=>(0,m.A)({icon:{position:"absolute",right:e.spacing(.5),pointerEvents:"none",color:"#616161"}}),{name:"BackstageOpenedDropdown"}),A=()=>{let e=b();return(0,n.jsx)(y.A,{className:e.icon,fill:"none",xmlns:"http://www.w3.org/2000/svg",children:(0,n.jsx)("path",{d:"M16.5 16L18 14.5L11.9297 8.42969L5.85938 14.5L7.35938 16L11.9297 11.4297L16.5 16Z",fill:"currentColor"})})},w=(0,p.A)(e=>(0,m.A)({root:{"label + &":{marginTop:e.spacing(3)},"&.Mui-focused > div[role=button]":{borderColor:e.palette.primary.main}},input:{borderRadius:e.shape.borderRadius,position:"relative",backgroundColor:e.palette.background.paper,border:"1px solid #ced4da",fontSize:e.typography.body1.fontSize,padding:e.spacing(1.25,3.25,1.25,1.5),transition:e.transitions.create(["border-color","box-shadow"]),"&:focus":{background:e.palette.background.paper,borderRadius:e.shape.borderRadius}}}),{name:"BackstageSelectInputBase"})(o.A),C=(0,f.A)(e=>(0,m.A)({formControl:{margin:e.spacing(1,0)},label:{transform:"initial",fontWeight:"bold",fontSize:e.typography.body2.fontSize,fontFamily:e.typography.fontFamily,color:e.palette.text.primary,"&.Mui-focused":{color:e.palette.text.primary}},formLabel:{transform:"initial",fontWeight:"bold",fontSize:e.typography.body2.fontSize,fontFamily:e.typography.fontFamily,color:e.palette.text.primary,"&.Mui-focused":{color:e.palette.text.primary}},chips:{display:"flex",flexWrap:"wrap"},chip:{margin:2},checkbox:{},root:{display:"flex",flexDirection:"column"}}),{name:"BackstageSelect"});function S(e){let{multiple:t,items:a,label:o,placeholder:p,selected:m,onChange:f,triggerReset:y,native:v=!1,disabled:b=!1,margin:S,"data-testid":k="select"}=e,E=C(),[I,R]=(0,x.useState)(m||(t?[]:"")),[T,F]=(0,x.useState)(!1);return(0,x.useEffect)(()=>{R(t?[]:"")},[y,t]),(0,x.useEffect)(()=>{R(m||(t?[]:""))},[m,t]),(0,n.jsx)(r.A,{className:E.root,children:(0,n.jsxs)(s.A,{className:E.formControl,children:[(0,n.jsx)(c.A,{className:E.formLabel,children:o}),(0,n.jsxs)(u.A,{"aria-label":o,value:I,native:v,disabled:b,"data-testid":k,displayEmpty:!0,multiple:t,margin:S,onChange:e=>{R(e.target.value),f(e.target.value)},open:T,onOpen:e=>{b?e.preventDefault():F(a=>!(!t||e.target instanceof HTMLElement)||!a)},onClose:()=>{F(!1)},input:(0,n.jsx)(w,{}),label:o,renderValue:e=>t&&0!==I.length?(0,n.jsx)(r.A,{className:E.chips,children:e.map(e=>{let t=a.find(t=>t.value===e);return!!t&&(0,n.jsx)(l.A,{"data-testid":"chip",label:t?.label,clickable:!0,deleteIcon:(0,n.jsx)(g.default,{"data-testid":"cancel-icon",onMouseDown:e=>e.stopPropagation()}),onDelete:()=>{let t=I.filter(t=>t!==e);R(t),f(t)},className:E.chip},t?.value)})}):(0,n.jsx)(h.A,{children:0===I.length?p||"":a.find(t=>t.value===e)?.label}),IconComponent:()=>T?(0,n.jsx)(A,{}):(0,n.jsx)(j,{}),MenuProps:{anchorOrigin:{vertical:"bottom",horizontal:"left"},transformOrigin:{vertical:"top",horizontal:"left"},getContentAnchorEl:null},children:[!!p&&!t&&(0,n.jsx)(d.A,{value:[],children:p}),v?a&&a.map(e=>(0,n.jsx)("option",{value:e.value,children:e.label},e.value)):a&&a.map(e=>(0,n.jsxs)(d.A,{value:e.value,children:[t&&(0,n.jsx)(i.A,{color:"primary",checked:I.includes(e.value)||!1,className:E.checkbox}),e.label]},e.value))]})]})})}},28499(e,t,a){a.d(t,{X:()=>Q});var n=a(31085),r=a(89595),i=a(25301),l=a(77125),s=a(29365),o=a(7031),c=a(58837),d=a(54917),u=a(72501),p=a(83313),m=a(89019),f=a(62461),h=a(68887),g=a(63798),x=a(64704),y=a(6774),v=a(75625),j=a(65859),b=a(45917),A=a(5416),w=a(33494),C=a(80113),S=a(26229),k=a(46802),E=a(45250),I=a(14041),R=a(89332),T=a(64947),F=a(48266);let N=(0,c.A)(e=>({root:{height:"100%",width:"315px",display:"flex",flexDirection:"column",marginRight:e.spacing(3)},value:{fontWeight:"bold",fontSize:18},header:{display:"flex",alignItems:"center",height:e.spacing(7.5),justifyContent:"space-between",borderBottom:`1px solid ${e.palette.grey[500]}`},filters:{display:"flex",flexDirection:"column","& > *":{marginTop:e.spacing(2)}}}),{name:"BackstageTableFilters"}),L=e=>{let t=N(),{onChangeFilters:a}=e,{t:i}=(0,r.i)(R.O),[s,o]=(0,I.useState)({...e.selectedFilters}),[c,d]=(0,I.useState)(!1);return(0,I.useEffect)(()=>{a(s)},[s,a]),(0,n.jsxs)(l.A,{className:t.root,children:[(0,n.jsxs)(l.A,{className:t.header,children:[(0,n.jsx)(l.A,{className:t.value,children:i("table.filter.title")}),(0,n.jsx)(T.A,{color:"primary",onClick:()=>{o({}),d(e=>!e)},children:i("table.filter.clearAll")})]}),(0,n.jsx)(l.A,{className:t.filters,children:e.filters?.length&&e.filters.map(e=>(0,n.jsx)(F.w,{triggerReset:c,...e.element,selected:s[e.element.label],onChange:t=>o({...s,[e.element.label]:t})},e.element.label))})]})};var O=a(78467);function P(e){return(0,n.jsx)("tbody",{"data-testid":"loading-indicator",children:(0,n.jsx)("tr",{children:(0,n.jsx)("td",{colSpan:e.colSpan,children:(0,n.jsx)(l.A,{sx:{display:"flex",justifyContent:"center",alignItems:"center",width:"100%",minHeight:"15rem"},children:(0,n.jsx)(O.A,{size:"5rem"})})})})})}let B={Add:(0,I.forwardRef)((e,t)=>(0,n.jsx)(p.default,{...e,ref:t})),Check:(0,I.forwardRef)((e,t)=>(0,n.jsx)(f.default,{...e,ref:t})),Clear:(0,I.forwardRef)((e,t)=>(0,n.jsx)(x.default,{...e,ref:t})),Delete:(0,I.forwardRef)((e,t)=>(0,n.jsx)(y.default,{...e,ref:t})),DetailPanel:(0,I.forwardRef)((e,t)=>(0,n.jsx)(g.default,{...e,ref:t})),Edit:(0,I.forwardRef)((e,t)=>(0,n.jsx)(v.default,{...e,ref:t})),Export:(0,I.forwardRef)((e,t)=>(0,n.jsx)(S.default,{...e,ref:t})),Filter:(0,I.forwardRef)((e,t)=>(0,n.jsx)(j.default,{...e,ref:t})),FirstPage:(0,I.forwardRef)((e,t)=>(0,n.jsx)(A.default,{...e,ref:t})),LastPage:(0,I.forwardRef)((e,t)=>(0,n.jsx)(w.default,{...e,ref:t})),NextPage:(0,I.forwardRef)((e,t)=>(0,n.jsx)(g.default,{...e,ref:t})),PreviousPage:(0,I.forwardRef)((e,t)=>(0,n.jsx)(h.default,{...e,ref:t})),ResetSearch:(0,I.forwardRef)((e,t)=>(0,n.jsx)(x.default,{...e,ref:t})),Search:(0,I.forwardRef)((e,t)=>(0,n.jsx)(b.default,{...e,ref:t})),SortArrow:(0,I.forwardRef)((e,t)=>(0,n.jsx)(m.default,{...e,ref:t})),ThirdStateCheck:(0,I.forwardRef)((e,t)=>(0,n.jsx)(C.default,{...e,ref:t})),ViewColumn:(0,I.forwardRef)((e,t)=>(0,n.jsx)(k.default,{...e,ref:t}))};function U(e,t){let a=t.split("."),n=e[a[0]];for(let e=1;e<a.length&&void 0!==n;++e)n=n[a[e]];return n}let $=(0,o.A)(e=>({header:{padding:e.spacing(1,2,1,2.5),borderTop:`1px solid ${e.palette.grey.A100}`,borderBottom:`1px solid ${e.palette.grey.A100}`,fontWeight:e.typography.fontWeightBold,position:"static",wordBreak:"normal",textTransform:"uppercase"}}),{name:"BackstageTableHeader"})(i.MTableHeader),z=(0,o.A)(e=>({root:{padding:e.spacing(3,0,2.5,2.5)},title:{"& > h6":{fontWeight:e.typography.fontWeightBold}},searchField:{paddingRight:e.spacing(2)}}),{name:"BackstageTableToolbar"})(i.MTableToolbar),M=(0,c.A)(e=>({root:{display:"flex",alignItems:"center",justifyContent:"space-between",flexWrap:"wrap"},filterControls:{display:"flex",alignItems:"center"},title:{fontWeight:e.typography.fontWeightBold,fontSize:18,whiteSpace:"nowrap"}}),{name:"BackstageTableFiltersContainer"}),D=(0,c.A)(()=>({root:{display:"flex",alignItems:"start"}}),{name:"BackstageTable"}),W={search:"",filtersOpen:!1,filters:{}};function K(e){let{toolbarRef:t,setSearch:a,hasFilters:i,selectedFiltersLength:o,toggleFilters:c}=e,{t:d}=(0,r.i)(R.O),p=M(),m=(0,I.useCallback)(t=>{e.onSearchChanged(t),a(t)},[e,a]);return i?(0,n.jsxs)(l.A,{className:p.root,children:[(0,n.jsxs)(l.A,{className:p.filterControls,children:[(0,n.jsx)(s.A,{onClick:c,"aria-label":"filter list",children:(0,n.jsx)(j.default,{})}),(0,n.jsxs)(u.A,{className:p.title,children:[d("table.filter.title")," (",o,")"]})]}),(0,n.jsx)(z,{...e,ref:t,onSearchChanged:m})]}):(0,n.jsx)(z,{...e,ref:t,onSearchChanged:m})}function Q(e){var t,a,s,o;let{data:c,columns:p,emptyContent:m,options:f,title:h,subtitle:g,localization:x,filters:y,initialState:v,onStateChange:j,components:b,isLoading:A,style:w,...C}=e,{t:S}=(0,r.i)(R.O),k=D(),T=(0,d.A)(),F={...W,...v},[N,O]=(0,I.useState)(F.filtersOpen),z=(0,I.useCallback)(()=>O(e=>!e),[O]),[M,Q]=(0,I.useState)(F.filters),[V,q]=(0,I.useState)(F.search);(0,I.useEffect)(()=>{if(j){var e;j((e={search:V,filtersOpen:N,filters:M},(0,E.transform)(e,(e,t,a)=>{(0,E.isEqual)(t,W[a])||(e[a]=t)})))}},[V,N,M,j]);let _=(0,I.useCallback)(e=>p.find(t=>t.title===e)?.field,[p]),H=(0,I.useMemo)(()=>{if("function"==typeof c||!M)return c;let e=Object.values(M);return c&&e.flat().length?c.filter(e=>!!Object.entries(M).filter(([,e])=>!!e.length).every(([t,a])=>{let n=U(e,_(t));return Array.isArray(n)&&Array.isArray(a)?n.some(e=>a.includes(e)):Array.isArray(n)?n.includes(a):Array.isArray(a)?a.includes(n):n===a})):c},[c,M,_]),G=Object.values(M).flat().length,X=!!y?.length,Y=(0,I.useCallback)(e=>(0,n.jsx)(K,{setSearch:q,hasFilters:X,selectedFiltersLength:G,toggleFilters:z,...e}),[z,X,G,q]),J="function"!=typeof c&&0===c.length,Z=p.length,ee=(0,I.useMemo)(()=>(function({columnCount:e,emptyContent:t,hasNoRows:a,loading:r}){return l=>r?(0,n.jsx)(P,{colSpan:e}):t&&a?(0,n.jsx)("tbody",{children:(0,n.jsx)("tr",{children:(0,n.jsx)("td",{colSpan:e,children:t})})}):(0,n.jsx)(i.MTableBody,{...l})})({hasNoRows:J,emptyContent:m,columnCount:Z,loading:A}),[J,m,Z,A]);return(0,n.jsxs)(l.A,{className:k.root,children:[N&&c&&"function"!=typeof c&&y?.length&&(0,n.jsx)(L,{filters:(t=y,a=c,s=p,o=S,t.map(e=>{var t;let n,r;return{type:e.type,element:{placeholder:o("table.filter.placeholder"),label:e.column,multiple:"multiple-select"===e.type,items:[...(t=e.column,n=new Set,r=e=>{null!=e&&n.add(e)},a&&a.forEach(e=>{let a=U(e,s.find(e=>e.title===t)?.field);Array.isArray(a)?a.forEach(r):r(a)}),n)].sort().map(e=>({label:e,value:e}))}}})),selectedFilters:M,onChangeFilters:Q}),(0,n.jsx)(i.default,{components:{Header:$,Body:ee,Toolbar:Y,...b},options:f,columns:p.map(e=>{let t=e.headerStyle??{},a=e.cellStyle||{};if(e.highlight)if(t.color=T.palette.textContrast,"object"==typeof a)a.fontWeight=T.typography.fontWeightBold;else{let e=a;a=(t,a,n)=>({...e(t,a,n),fontWeight:T.typography.fontWeightBold})}return{...e,headerStyle:t,cellStyle:a}}),icons:B,title:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(u.A,{variant:"h5",component:"h2",children:h}),g&&(0,n.jsx)(u.A,{color:"textSecondary",variant:"body1",children:g})]}),data:H,style:{width:"100%",...w},localization:{...x,body:{emptyDataSourceMessage:S("table.body.emptyDataSourceMessage"),...x?.body},pagination:{firstTooltip:S("table.pagination.firstTooltip"),labelDisplayedRows:S("table.pagination.labelDisplayedRows"),labelRowsSelect:S("table.pagination.labelRowsSelect"),lastTooltip:S("table.pagination.lastTooltip"),nextTooltip:S("table.pagination.nextTooltip"),previousTooltip:S("table.pagination.previousTooltip"),...x?.pagination},header:{actions:S("table.header.actions"),...x?.header},toolbar:{searchPlaceholder:S("table.toolbar.search"),searchTooltip:S("table.toolbar.search"),...x?.toolbar}},...C})]})}Q.icons=Object.freeze(B)},27231(e,t,a){a.d(t,{S:()=>u});var n=a(31085),r=a(42899),i=a(58837),l=a(268),s=a(72501),o=a(60603);let c=(0,i.A)(e=>({root:{textAlign:"left"},label:{color:e.page.fontColor,fontWeight:e.typography.fontWeightBold,letterSpacing:0,fontSize:e.typography.fontSize,marginBottom:e.spacing(1)/2,lineHeight:1},value:{color:(0,l.X4)(e.page.fontColor,.8),fontSize:e.typography.fontSize,lineHeight:1}}),{name:"BackstageHeaderLabel"}),d=({value:e,className:t,typographyRootComponent:a})=>(0,n.jsx)(s.A,{component:a??("string"==typeof e?"p":"span"),className:t,children:e});function u(e){let{label:t,value:a,url:i,contentTypograpyRootComponent:l}=e,u=c(),p=(0,n.jsx)(d,{className:u.value,value:a||"<Unknown>",typographyRootComponent:l});return(0,n.jsx)(r.A,{item:!0,children:(0,n.jsxs)(s.A,{component:"span",className:u.root,children:[(0,n.jsx)(s.A,{className:u.label,children:t}),i?(0,n.jsx)(o.N_,{to:i,children:p}):p]})})}},43311(e,t,a){a.d(t,{E:()=>i});var n=a(58077),r=a(47196);function i(e,t,a){if(a){let r="string"==typeof e||"metadata"in e?e:(0,n.U2)(e);return a.forEntity(r,t).snapshot}return(0,r.T)(e,t)}},80018(e,t,a){a.d(t,{Q:()=>w});var n=a(31085),r=a(77125),i=a(72501),l=a(4321),s=a(87263),o=a(16249),c=a(33145),d=a(58837),u=a(7031),p=a(99703),m=a(6924),f=a(62683),h=a(14041),g=a(45250),x=a(53373),y=a.n(x);let v=(0,d.A)(e=>({root:{margin:e.spacing(1,0)},label:{position:"relative",fontWeight:"bold",fontSize:e.typography.body2.fontSize,fontFamily:e.typography.fontFamily,color:e.palette.text.primary,"& > span":{top:0,left:0,position:"absolute"}}}),{name:"BackstageAutocomplete"}),j=(0,u.A)(e=>(0,p.A)({root:{},paper:{margin:0},hasClearIcon:{},hasPopupIcon:{},focused:{},inputRoot:{marginTop:24,backgroundColor:e.palette.background.paper,"$root$hasClearIcon$hasPopupIcon &":{paddingBlock:e.spacing(.75),paddingInlineStart:e.spacing(.75)},"$root$focused &":{outline:"none"},"$root &:hover > fieldset":{borderColor:"#ced4da"},"$root$focused & > fieldset":{borderWidth:1,borderColor:e.palette.primary.main}},popupIndicator:{padding:0,margin:0,color:"#616161","&:hover":{backgroundColor:"unset"},'& [class*="MuiTouchRipple-root"]':{display:"none"}},endAdornment:{"$root$hasClearIcon$hasPopupIcon &":{right:4}},input:{"$root$hasClearIcon$hasPopupIcon &":{fontSize:e.typography.body1.fontSize,paddingBlock:e.spacing(.8125)}}}),{name:"BackstageAutocompleteBase"})(f.Ay),b=e=>(0,n.jsx)(s.A,{...e,transition:!0,placement:"bottom-start",children:({TransitionProps:t})=>(0,n.jsx)(c.A,{...t,style:{transformOrigin:"0 0 0"},children:(0,n.jsx)(r.A,{children:e.children})})}),A=e=>(0,n.jsx)(l.A,{...e,elevation:8});function w(e){let{label:t,name:a,LabelProps:l,TextFieldProps:s,...c}=e,d=v(),u=(0,h.useCallback)(e=>(0,n.jsx)(o.A,{...(0,g.merge)(e,s),variant:"outlined"}),[s]),p=(0,n.jsx)(j,{size:"small",...c,renderInput:c.renderInput??u,popupIcon:(0,n.jsx)(m.default,{"data-testid":`${a}-expand`}),PaperComponent:A,PopperComponent:b});return(0,n.jsx)(r.A,{className:d.root,children:t?(0,n.jsxs)(i.A,{...l,className:y()(d.label,l?.className),component:"label",children:[(0,n.jsx)(r.A,{component:"span",children:t}),p]}):p})}},71242(e,t,a){a.d(t,{GI:()=>h});var n=a(31085),r=a(14041),i=a(77125),l=a(64947),s=a(73845),o=a(42899),c=a(72501),d=a(5893),u=a(54917),p=a(65859),m=a(79811),f=a(89595);let h=e=>(0,n.jsx)(o.A,{container:!0,style:{position:"relative"},children:e.children});h.Filters=e=>{let t=(0,d.A)(t=>t.breakpoints.down(e.options?.drawerBreakpoint??"md"),{noSsr:!0}),a=(0,u.A)(),[h,g]=(0,r.useState)(!1),{t:x}=(0,f.i)(m.j);return t?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(l.A,{style:{marginTop:a.spacing(1),marginLeft:a.spacing(1)},onClick:()=>g(!0),startIcon:(0,n.jsx)(p.default,{}),children:x("catalogFilter.buttonTitle")}),(0,n.jsx)(s.Ay,{open:h,onClose:()=>g(!1),anchor:e.options?.drawerAnchor??"left",disableAutoFocus:!0,keepMounted:!0,variant:"temporary",children:(0,n.jsxs)(i.A,{m:2,children:[(0,n.jsx)(c.A,{variant:"h6",component:"h2",style:{marginBottom:a.spacing(1)},children:x("catalogFilter.title")}),e.children]})})]}):(0,n.jsx)(o.A,{item:!0,lg:2,children:e.children})},h.Content=e=>(0,n.jsx)(o.A,{item:!0,xs:12,lg:10,children:e.children})},19030(e,t,a){a.d(t,{y:()=>w});var n=a(31085),r=a(77125),i=a(58837),l=a(14041),s=a(50509),o=a(73466),c=a(76272),d=a(98552),u=a(86901),p=a(44148),m=a(41260);let f=(0,n.jsx)(m.default,{fontSize:"small"}),h=(0,n.jsx)(p.default,{fontSize:"small"});function g({selected:e}){return(0,n.jsx)(d.A,{icon:f,checkedIcon:h,checked:e})}let x=(0,l.memo)(e=>{let{selected:t,value:a,availableOptions:r,showCounts:i}=e,l=i?`${a} (${r?.[a]})`:a;return(0,n.jsx)(u.A,{control:(0,n.jsx)(g,{selected:t}),label:l,onClick:e=>e.preventDefault()})});var y=a(59378),v=a(89729),j=a(80018),b=a(45250);let A=(0,i.A)({root:{},label:{textTransform:"none",fontWeight:"bold"}},{name:"CatalogReactEntityAutocompletePicker"});function w(e){let{label:t,name:a,path:i,showCounts:d,Filter:u,InputProps:p,initialSelectedOptions:m=[],filtersForAvailableValues:f=["kind"],hidden:h}=e,g=A(),{updateFilters:w,filters:C,queryParameters:{[a]:S}}=(0,y.nK)(),k=(0,s.gf)(c.v),E=f.map(e=>C[e]),{value:I}=(0,o.A)(async()=>{let{facets:e}=await k.getEntityFacets({facets:[i],filter:(0,v.Rr)(E.filter(Boolean))});return Object.fromEntries(e[i].map(({value:e,count:t})=>[e,t]))},[...E]),R=(0,l.useMemo)(()=>[S].flat().filter(Boolean),[S]),T=C[a]?.values,[F,N]=(0,l.useState)(R.length?R:T??m);(0,l.useEffect)(()=>{R.length&&N(R)},[R]);let L=Object.keys(I??{}),O=F.length&&L.length;(0,l.useEffect)(()=>{w({[a]:O?new u(F):void 0})},[a,O,F,u,w]),(0,l.useEffect)(()=>{if(!O)return;let e=T??[];(0,b.isEqual)(e,F)||N(e)},[T]);let P=C[a];return(!P||"object"!=typeof P||"values"in P)&&L.length?h?null:(0,n.jsx)(r.A,{className:g.root,pb:1,pt:1,children:(0,n.jsx)(j.Q,{multiple:!0,disableCloseOnSelect:!0,label:t,name:`${String(a)}-picker`,options:L,value:F,TextFieldProps:p,onChange:(e,t)=>N(t),renderOption:(e,{selected:t})=>(0,n.jsx)(x,{selected:t,value:e,availableOptions:I,showCounts:!!d})})}):null}},53149(e,t,a){a.d(t,{t:()=>P});var n=a(31085),r=a(58077),i=a(77125),l=a(98552),s=a(86901),o=a(72501),c=a(71677),d=a(58837),u=a(44148),p=a(41260),m=a(14041),f=a(59378),h=a(47195),g=a(1497),x=a(48108),y=a(47966),v=a(87623),j=a(43311),b=a(50509),A=a(87290),w=a(76272),C=a(76842),S=a(7031),k=a(76355),E=a(79811),I=a(89595),R=a(80018);let T=(0,d.A)({root:{},label:{},input:{},fullWidth:{width:"100%"},boxLabel:{width:"100%",textOverflow:"ellipsis",overflow:"hidden"}},{name:"CatalogReactEntityOwnerPicker"}),F=(0,S.A)(e=>({label:{width:"100%"},root:{width:"90%"}}),{name:"FixedWidthFormControlLabel"})(s.A),N=(0,n.jsx)(p.default,{fontSize:"small"}),L=(0,n.jsx)(u.default,{fontSize:"small"});function O(e){let t=T(),a="group"===e.entity.kind.toLocaleLowerCase("en-US"),{primaryTitle:r}=(0,k.f)(e.entity);return(0,n.jsx)(i.A,{className:t.fullWidth,children:(0,n.jsx)(F,{className:t.fullWidth,control:(0,n.jsx)(l.A,{icon:N,checkedIcon:L,checked:e.isSelected}),onClick:e=>e.preventDefault(),label:(0,n.jsx)(c.Ay,{title:r,children:(0,n.jsxs)(i.A,{display:"flex",alignItems:"center",children:[a?(0,n.jsx)(y.default,{fontSize:"small"}):(0,n.jsx)(x.default,{fontSize:"small"}),"\xa0",(0,n.jsx)(i.A,{className:t.boxLabel,children:(0,n.jsx)(o.A,{noWrap:!0,children:r})})]})})})})}let P=e=>{let t=T(),{mode:a="owners-only"}=e||{},l=(0,b.Q2)().get(v.n),{updateFilters:s,filters:o,queryParameters:{owners:c}}=(0,f.nK)(),[d,u]=(0,m.useState)(""),{t:p}=(0,I.i)(E.j),x=(0,m.useMemo)(()=>[c].flat().filter(Boolean),[c]),[y,S]=(0,m.useState)(x.length?x:o.owners?.values??[]),[{value:k,loading:F},N,L]=function({mode:e,initialSelectedOwnersRefs:t}){let a,n="owners-only"===e,i=(a=(0,b.gf)(w.v),(0,A.A)(async(e,t)=>{let n=t?.limit??20;if(e.cursor){let t=await a.queryEntities({cursor:e.cursor,limit:n});return{cursor:t.pageInfo.nextCursor,items:[...e.items,...t.items]}}let r=await a.queryEntities({fullTextFilter:{term:e.text||"",fields:["metadata.name","kind","spec.profile.displayname","metadata.title"]},filter:{kind:["User","Group"]},orderFields:[{field:"metadata.name",order:"asc"}],limit:n});return{cursor:r.pageInfo.nextCursor,items:r.items}},[],{loading:!0})),l=function({enabled:e}){let t=(0,b.gf)(w.v),[a]=(0,m.useState)(async()=>{if(!e)return[];let a="relations.ownedBy";return t.getEntityFacets({facets:[a]}).then(e=>e.facets[a].map(e=>e.value).map(e=>{let{kind:t,name:a,namespace:n}=(0,r.KU)(e);return{apiVersion:"backstage.io/v1beta1",kind:t,metadata:{name:a,namespace:n}}}).sort((e,t)=>e.kind.localeCompare(t.kind,"en-US")||e.metadata.namespace.localeCompare(t.metadata.namespace,"en-US")||e.metadata.name.localeCompare(t.metadata.name,"en-US"))).catch(()=>[])});return(0,A.A)(async(e,t)=>{var n;let r=await a;if(!r)return{items:[]};let i=t?.limit??20,{text:l,start:s}=(n=e).cursor&&n.cursor?JSON.parse(atob(n.cursor)):{text:n.text||"",start:0},o=r.filter(e=>{var t,a;let n;return t=l,a=e,n=t.trim(),a.kind.includes(n)||a.metadata.namespace?.includes(n)||a.metadata.name.includes(n)}),c=s+i;return{items:o.slice(0,c),...function({entities:e,limit:t,payload:a}){return e.length>t?{cursor:btoa(JSON.stringify(a))}:{}}({entities:o,limit:c,payload:{text:l,start:c}})}},[a],{loading:!0,value:{items:[]}})}({enabled:n}),[s,o]=n?l:i;return[s,o,function({enabled:e,initialSelectedOwnersRefs:t}){let a=(0,m.useRef)({}),n=(0,b.gf)(w.v),[,i]=(0,A.A)(async()=>{(await n.getEntitiesByRefs({entityRefs:t})).items.forEach(e=>{e&&(a.current[(0,r.U2)(e)]=e)})},[]);return(0,C.u)(()=>{e&&t.length>0&&i()}),{getEntity:e=>a.current[e],setEntity:e=>{a.current[(0,r.U2)(e)]=e}}}({enabled:!n,initialSelectedOwnersRefs:t})]}({mode:a,initialSelectedOwnersRefs:y});(0,g.s)(()=>N({text:d.toLocaleLowerCase("en-US")}),[d,N],250);let P=k?.items||[];return((0,m.useEffect)(()=>{x.length&&S(new h.N9(x).values)},[x]),(0,m.useEffect)(()=>{s({owners:y.length?new h.N9(y):void 0})},[y,s]),["user","group"].includes(o.kind?.value.toLocaleLowerCase("en-US")||""))?null:(0,n.jsx)(i.A,{className:t.root,pb:1,pt:1,children:(0,n.jsx)(R.Q,{label:p("entityOwnerPicker.title"),multiple:!0,disableCloseOnSelect:!0,loading:F,options:P,value:y,getOptionSelected:(e,t)=>"string"==typeof t?(0,r.U2)(e)===t:e===t,getOptionLabel:e=>{let t="string"==typeof e?L.getEntity(e)||(0,r.KU)(e,{defaultKind:"group",defaultNamespace:"default"}):e;return(0,j.E)(t,void 0,l).primaryTitle},onChange:(e,t)=>{u(""),S(t.map(e=>{let t="string"==typeof e?e:(0,r.U2)(e);return"string"!=typeof e&&L.setEntity(e),t}))},filterOptions:e=>e,renderOption:(e,{selected:t})=>(0,n.jsx)(O,{entity:e,isSelected:t}),name:"owner-picker",onInputChange:(e,t)=>{u(t)},ListboxProps:{onScroll:e=>{let t=e.currentTarget;1>Math.abs(t.scrollHeight-t.clientHeight-t.scrollTop)&&k?.cursor&&N({items:k.items,cursor:k.cursor})},"data-testid":"owner-picker-listbox"},LabelProps:{className:t.label},TextFieldProps:{className:t.input}})})}},67762(e,t,a){a.d(t,{m:()=>d});var n=a(31085),r=a(58837),i=a(47195),l=a(19030),s=a(79811),o=a(89595);let c=(0,r.A)({input:{}},{name:"CatalogReactEntityTagPicker"}),d=e=>{let t=c(),{t:a}=(0,o.i)(s.j);return(0,n.jsx)(l.y,{label:a("entityTagPicker.title"),name:"tags",path:"metadata.tags",Filter:i.q_,showCounts:e.showCounts,InputProps:{className:t.input},initialSelectedOptions:e.initialFilter?e.initialFilter:[],hidden:e.hidden})}},59302(e,t,a){a.d(t,{y:()=>F});var n=a(31085),r=a(50509),i=a(19735),l=a(40703),s=a(58007),o=a(46423),c=a(65569),d=a(5951),u=a(26343),p=a(72501),m=a(58837),f=a(9684),h=a(55940),g=a(14041),x=a(47195),y=a(59378),v=a(48203),j=a(45250),b=a(73466),A=a(76272),w=a(89729),C=a(87290),S=a(17855),k=a(58077),E=a(75710),I=a(89595),R=a(79811);let T=(0,m.A)(e=>({root:{backgroundColor:"rgba(0, 0, 0, .11)",boxShadow:"none",margin:e.spacing(1,0,1,0)},title:{margin:e.spacing(1,0,0,1),textTransform:"uppercase",fontSize:12,fontWeight:"bold"},listIcon:{minWidth:30,color:e.palette.text.primary},menuItem:{minHeight:e.spacing(6)},groupWrapper:{margin:e.spacing(1,1,2,1)}}),{name:"CatalogReactUserListPicker"}),F=e=>{let{initialFilter:t,availableFilters:a,hidden:m,alwaysKeepFilters:F}=e,N=T(),L=(0,r.gf)(i.U),{t:O}=(0,I.i)(R.j),P=L.getOptionalString("organization.name")??O("userListPicker.defaultOrgName"),{filters:B,updateFilters:U,queryParameters:{user:$}}=(0,y.nK)(),z=B.kind?.value?.toLowerCase(),M=["starred","all"],D=[{name:O("userListPicker.personalFilter.title"),items:[{id:"owned",label:O("userListPicker.personalFilter.ownedLabel"),icon:f.default},{id:"starred",label:O("userListPicker.personalFilter.starredLabel"),icon:h.Gg}]},{name:P,items:[{id:"all",label:O("userListPicker.orgFilterAllLabel")}]}].map(e=>({...e,items:e.items.filter(({id:e})=>["group","user"].some(e=>e===z)?M.includes(e):!a||a.includes(e))})).filter(({items:e})=>!!e.length),{count:W,loading:K,filter:Q}=function(){let e=(0,r.gf)(v.K),t=(0,r.gf)(A.v),{filters:a}=(0,y.nK)(),{value:n,loading:i}=(0,b.A)(async()=>(await e.getBackstageIdentity()).ownershipEntityRefs,[]),{user:l,owners:s,...o}=a,{orderFields:c,...d}=(0,w.$3)((0,j.compact)(Object.values(o))),[{value:u,loading:p},m]=(0,C.A)(async e=>{let a=function(e,t){if(void 0===t)return;let a=e?.values??[];if(a.length){let e=(0,j.intersection)(a,t);if(0===e.length)return;return e}return t}(e.owners,e.ownershipEntityRefs);if(void 0===a)return 0;let{"metadata.name":n,...r}=e.filter.filter,{totalItems:i}=await t.queryEntities({...e.filter,filter:{...r,"relations.ownedBy":a},limit:0});return i},[],{loading:!0});return(0,S.A)(()=>{0===Object.keys(d.filter).length||void 0!==n&&m({ownershipEntityRefs:n,owners:s,filter:d})},[n,s,d]),{count:u,loading:i||p,filter:(0,g.useMemo)(()=>x.tN.owned(n??[]),[n]),ownershipEntityRefs:n}}(),{count:V}=function(){let e=(0,r.gf)(A.v),{filters:t}=(0,y.nK)(),a=(0,g.useRef)(),n=(0,g.useMemo)(()=>{let{user:e,...n}=t,r=(0,j.compact)(Object.values(n)),{orderFields:i,...l}=(0,w.$3)(r),s={...l,limit:0};return 0===Object.keys(l.filter).length?(a.current=void 0,a.current):(0,j.isEqual)(s,a.current)?a.current:(a.current=s,s)},[t]),{value:i,loading:l}=(0,b.A)(async()=>{if(void 0===n)return 0;let{totalItems:t}=await e.queryEntities(n);return t},[n]);return{count:i,loading:l}}(),{count:q,filter:_,loading:H}=function(){let e=(0,r.gf)(A.v),{filters:t}=(0,y.nK)(),{starredEntities:a}=(0,E.I)(),n=(0,g.useRef)(),i=(0,g.useMemo)(()=>{let{user:e,...r}=t,i=(0,j.compact)(Object.values(r)),{orderFields:l,...s}=(0,w.$3)(i),o={...s,filter:{...s.filter,"metadata.name":Array.from(a).map(e=>(0,k.KU)(e).name)},limit:1e3};return(0,j.isEqual)(o,n.current)?n.current:(n.current=o,o)},[t,a]),{value:l,loading:s}=(0,b.A)(async()=>a.size?(await e.queryEntities(i)).items.map(e=>(0,k.U2)({kind:e.kind,namespace:e.metadata.namespace,name:e.metadata.name})).filter(e=>a.has(e)).length:0,[i,a]);return{count:l,loading:s,filter:(0,g.useMemo)(()=>x.tN.starred(Array.from(a)),[a])}}(),G=(0,g.useMemo)(()=>[$].flat()[0],[$]),[X,Y]=(0,g.useState)(G??t),J=(0,g.useMemo)(()=>({all:V,starred:q,owned:W}),[q,W,V]);(0,g.useEffect)(()=>{G&&Y(G)},[G]);let Z=K||H;return(0,g.useEffect)(()=>{Z||!X||"all"===X||0!==J[X]||F||Y("all")},[Z,J,X,Y,F]),(0,g.useEffect)(()=>{!X||Z||U({user:"owned"===X?Q:"starred"===X?_:x.tN.all()})},[X,_,Q,U,Z]),m?null:(0,n.jsx)(l.A,{className:N.root,children:D.map(e=>(0,n.jsxs)(g.Fragment,{children:[(0,n.jsx)(p.A,{variant:"subtitle2",component:"span",className:N.title,children:e.name}),(0,n.jsx)(l.A,{className:N.groupWrapper,children:(0,n.jsx)(s.A,{disablePadding:!0,dense:!0,role:"menu","aria-label":e.name,children:e.items.map((t,a)=>(0,n.jsxs)(u.A,{role:"none presentation",divider:a!==e.items.length-1,onClick:()=>Y(t.id),selected:t.id===B.user?.value,className:N.menuItem,disabled:0===J[t.id],"data-testid":`user-picker-${t.id}`,tabIndex:0,ContainerProps:{role:"menuitem"},children:[t.icon&&(0,n.jsx)(o.A,{className:N.listIcon,children:(0,n.jsx)(t.icon,{fontSize:"small"})}),(0,n.jsx)(d.A,{children:(0,n.jsxs)(p.A,{variant:"body1",children:[t.label," "]})}),(0,n.jsx)(c.A,{children:J[t.id]??"-"})]},t.id))})})]},e.name))})}},47195(e,t,a){a.d(t,{I5:()=>u,Kf:()=>h,N9:()=>d,V3:()=>c,gM:()=>l,gZ:()=>f,mT:()=>g,qA:()=>s,q_:()=>o,tN:()=>m,z:()=>p});var n=a(58077),r=a(60728),i=a(53320);class l{value;label;constructor(e,t){this.value=e,this.label=t}getCatalogFilters(){return{kind:this.value}}toQueryValue(){return this.value}}class s{value;constructor(e){this.value=e}getTypes(){return Array.isArray(this.value)?this.value:[this.value]}getCatalogFilters(){return{"spec.type":this.getTypes()}}toQueryValue(){return this.getTypes()}}class o{values;constructor(e){this.values=e}filterEntity(e){return this.values.every(t=>(e.metadata.tags??[]).includes(t))}getCatalogFilters(){return{"metadata.tags":this.values}}toQueryValue(){return this.values}}class c{value;constructor(e){this.value=e}filterEntity(e){let t=this.toUpperArray(this.value.split(/\s/)),a=this.toUpperArray([e.metadata.tags]),n=this.toUpperArray([e.metadata.name,e.metadata.title,e.spec?.profile?.displayName]);for(let e of t)if(a.every(t=>t!==e)&&n.every(t=>!t.includes(e)))return!1;return!0}getFullTextFilters(){return{term:this.value,fields:["metadata.name","metadata.title","spec.profile.displayName"]}}toQueryValue(){return this.value}toUpperArray(e){return e.flat().filter(e=>!!e).map(e=>e.toLocaleUpperCase("en-US"))}}class d{values;constructor(e){this.values=e.reduce((e,t)=>{try{return e.push((0,n.U2)((0,n.KU)(t,{defaultKind:"Group"}))),e}catch(t){return e}},[])}getCatalogFilters(){return{"relations.ownedBy":this.values}}filterEntity(e){return this.values.some(t=>(0,i.t)(e,r.vv).some(e=>(0,n.U2)(e)===t))}toQueryValue(){return this.values}}class u{values;constructor(e){this.values=e}getCatalogFilters(){return{"spec.lifecycle":this.values}}filterEntity(e){return this.values.some(t=>e.spec?.lifecycle===t)}toQueryValue(){return this.values}}class p{values;constructor(e){this.values=e}getCatalogFilters(){return{"metadata.namespace":this.values}}filterEntity(e){return this.values.some(t=>e.metadata.namespace===t)}toQueryValue(){return this.values}}class m{value;refs;constructor(e,t){this.value=e,this.refs=t}static owned(e){return new m("owned",e)}static all(){return new m("all")}static starred(e){return new m("starred",e)}getCatalogFilters(){return"owned"===this.value?{"relations.ownedBy":this.refs??[]}:"starred"===this.value?{"metadata.name":this.refs?.map(e=>(0,n.KU)(e).name)??[]}:{}}filterEntity(e){if("starred"===this.value)return this.refs?.includes((0,n.U2)(e))??!0;if("owned"===this.value){let t=(0,i.t)(e,r.vv);return this.refs?.some(e=>t.some(t=>(0,n.U2)(t)===e))??!1}return!0}toQueryValue(){return this.value}}class f{value;isOwnedEntity;isStarredEntity;constructor(e,t,a){this.value=e,this.isOwnedEntity=t,this.isStarredEntity=a}filterEntity(e){switch(this.value){case"owned":return this.isOwnedEntity(e);case"starred":return this.isStarredEntity(e);default:return!0}}toQueryValue(){return this.value}}class h{value;constructor(e){this.value=e}getCatalogFilters(){return this.value?{"metadata.annotations.backstage.io/orphan":String(this.value)}:{}}filterEntity(e){let t=e.metadata.annotations?.["backstage.io/orphan"];return void 0!==t&&this.value.toString()===t}}class g{value;constructor(e){this.value=e}filterEntity(e){let t=e?.status?.items?.length>0;return void 0!==t&&this.value===t}}},59378(e,t,a){a.d(t,{B9:()=>v,nK:()=>j});var n=a(31085),r=a(50509),i=a(9135),l=a(20549),s=a(45250),o=a(45810),c=a.n(o),d=a(14041),u=a(18690),p=a(87290),m=a(48240),f=a(71581),h=a(76272),g=a(89729);let x=(0,i.tK)("entity-list-context"),y=(0,d.createContext)(void 0),v=e=>{let t=(0,f.A)(),a=(0,r.gf)(h.v),[i,o]=(0,d.useState)({}),v=(0,u.useLocation)(),j=!0===e.pagination?"cursor":"object"==typeof e.pagination?e.pagination.mode??"cursor":"none",b="object"==typeof e.pagination?e.pagination.limit??20:20,{queryParameters:A,cursor:w,offset:C,limit:S}=(0,d.useMemo)(()=>{let e=c().parse(v.search,{ignoreQueryPrefix:!0,arrayLimit:1e4}),t=b;if("string"==typeof e.limit){let a=Number.parseInt(e.limit,10);isNaN(a)||(t=a)}let a="string"==typeof e.offset&&"offset"===j?Number.parseInt(e.offset,10):void 0;return{queryParameters:e.filters??{},cursor:"string"==typeof e.cursor&&"cursor"===j?e.cursor:void 0,offset:"offset"===j&&a&&!isNaN(a)?a:void 0,limit:t}},[j,v.search,b]),[k,E]=(0,d.useState)(w),[I,R]=(0,d.useState)(C),[T,F]=(0,d.useState)(S),[N,L]=(0,d.useState)(()=>({appliedFilters:{},entities:[],backendEntities:[],pageInfo:{},offset:I,limit:T})),[{value:O,loading:P,error:B},U]=(0,p.A)(async()=>{let e=i.kind?.value?.toLocaleLowerCase("en-US"),t="user"===e||"group"===e?{...i,owners:void 0}:i,n=(0,s.compact)(Object.values(t)),r=(0,g.be)(n);if("none"!==j){if(k){if(k!==N.appliedCursor){let e=await a.queryEntities({cursor:k,limit:T});return{appliedFilters:i,appliedCursor:k,backendEntities:e.items,entities:e.items.filter(r),pageInfo:e.pageInfo,totalItems:e.totalItems}}let e=N.backendEntities.filter(r);return{appliedFilters:i,appliedCursor:N.appliedCursor,backendEntities:N.backendEntities,entities:e,pageInfo:N.pageInfo,totalItems:N.totalItems,limit:N.limit,offset:N.offset}}let e=(0,g.$3)(n),t=(0,g.$3)((0,s.compact)(Object.values(N.appliedFilters)));if("offset"===j&&(N.limit!==T||N.offset!==I)||!(0,s.isEqual)(t,e)){let t=await a.queryEntities({...e,limit:T,offset:I});return{appliedFilters:i,backendEntities:t.items,entities:t.items.filter(r),pageInfo:t.pageInfo,totalItems:t.totalItems,limit:T,offset:I}}let l=N.backendEntities.filter(r);return{appliedFilters:i,backendEntities:N.backendEntities,entities:l,pageInfo:N.pageInfo,totalItems:N.totalItems,limit:N.limit,offset:N.offset}}let l=(0,g.Rr)(n),{orderFields:o}=(0,g.$3)(n),c=(0,g.Rr)((0,s.compact)(Object.values(N.appliedFilters)));if(!(0,s.isEqual)(c,l)){let e=await a.getEntities({filter:l,order:o}),t=e.items.filter(r);return{appliedFilters:i,backendEntities:e.items,entities:t,totalItems:t.length}}let d=N.backendEntities.filter(r);return{appliedFilters:i,backendEntities:N.backendEntities,entities:d,totalItems:d.length}},[a,A,i,N,k,j,T,I],{loading:!0});(0,m.A)(U,10,[i,k,T,I]),(0,d.useEffect)(()=>{if(void 0!==O&&(L(O),t())){let e=Object.keys(i).reduce((e,t)=>{let a=i[t];return a?.toQueryValue&&(e[t]=a.toQueryValue()),e},{}),t=c().parse(v.search,{ignoreQueryPrefix:!0,arrayLimit:1e4}),a=c().stringify({...t,filters:e,..."none"===j?{}:{cursor:k,limit:T,offset:I}},{addQueryPrefix:!0,arrayFormat:"repeat"}),n=`${window.location.pathname}${a}`;window.history?.replaceState(null,document.title,n)}},[k,t,T,v.search,I,i,O,j]);let $=(0,d.useCallback)(e=>{"cursor"===j?E(void 0):"offset"===j&&R(0),o(t=>{let a="function"==typeof e?e(t):e;return{...t,...a}})},[j]),z=O??N,M=(0,d.useMemo)(()=>{if("cursor"!==j)return;let e=z.pageInfo?.prevCursor,t=z.pageInfo?.nextCursor;return{prev:e?()=>E(e):void 0,next:t?()=>E(t):void 0}},[j,z.pageInfo]),D=(0,d.useMemo)(()=>({filters:z.appliedFilters,entities:z.entities,backendEntities:z.backendEntities,updateFilters:$,queryParameters:A,loading:P,error:B,pageInfo:M,totalItems:z.totalItems,limit:T,offset:I,setLimit:F,setOffset:R,paginationMode:j}),[z,$,A,P,B,M,T,I,j,F,R]);return(0,n.jsx)(y.Provider,{value:D,children:(0,n.jsx)(x.Provider,{value:(0,l.B)({1:D}),children:e.children})})};function j(){let e=(0,i.qO)("entity-list-context"),t=(0,d.useContext)(y);if(e){let t=e.atVersion(1);if(!t)throw Error("EntityListContext v1 not available");return t}if(t)return t;throw Error("useEntityList must be used within EntityListProvider")}},75710(e,t,a){a.d(t,{I:()=>c});var n=a(58077),r=a(50509),i=a(14041),l=a(10581),s=a(769);function o(e){return"string"==typeof e?e:(0,n.U2)(e)}function c(){let e=(0,r.gf)(s.a),t=(0,l.A)((0,i.useMemo)(()=>e.starredEntitie$(),[e]),new Set),a=(0,i.useCallback)(e=>t.has(o(e)),[t]);return{starredEntities:t,toggleStarredEntity:(0,i.useCallback)(t=>e.toggleStarred(o(t)).then(),[e]),isStarredEntity:a}}},89729(e,t,a){a.d(t,{$3:()=>l,Rr:()=>s,be:()=>o});var n=a(47195);function r(e){return!!e.getFullTextFilters}function i(e){return!!e.getOrderFilters}function l(e){let t=e.reduce((e,t)=>({...e,...t.getCatalogFilters?t.getCatalogFilters():{}}),{});return{filter:t,fullTextFilter:e.find(r)?.getFullTextFilters(),orderFields:e.find(i)?.getOrderFilters()||[{field:"metadata.name",order:"asc"}]}}function s(e){let t={};return e.forEach(e=>{e instanceof n.q_||e instanceof n.N9||e instanceof n.I5||e instanceof n.z||e instanceof n.tN||e instanceof n.Kf||e instanceof n.V3||e instanceof n.gZ||Object.assign(t,e.getCatalogFilters?.()||{})}),t}function o(e){return t=>e.every(e=>!e.filterEntity||e.filterEntity(t))}},27052(e,t,a){a.d(t,{Router:()=>$,LegacyEmbeddedDocsRouter:()=>D,EmbeddedDocsRouter:()=>M,TechDocsReaderRouter:()=>z});var n=a(31085),r=a(18690),i=a(58077),l=a(78931),s=a(95269),o=a(18288),c=a(78395),d=a(90898),u=a(33141),p=a(19735),m=a(71531),f=a(76637),h=a(18275),g=a(44355);let x=new class e{config;constructor(e){this.config=e}getId(){return this.config.id}getApis(){return this.config.apis??[]}getFeatureFlags(){return this.config.featureFlags?.slice()??[]}get routes(){return this.config.routes??{}}get externalRoutes(){return this.config.externalRoutes??{}}provide(e){return e.expose(this)}toString(){return`plugin{${this.config.id}}`}}({id:"techdocs",apis:[(0,u.b)({api:o.s,deps:{configApi:p.U,discoveryApi:m.I,fetchApi:f.a},factory:({configApi:e,discoveryApi:t,fetchApi:a})=>new c.E({configApi:e,discoveryApi:t,fetchApi:a})}),(0,u.b)({api:o.l,deps:{configApi:p.U,discoveryApi:m.I,fetchApi:f.a},factory:({configApi:e,discoveryApi:t,fetchApi:a})=>new c.z({configApi:e,discoveryApi:t,fetchApi:a})})],routes:{root:d.rQ,docRoot:d.Oc,entityContent:d.Ri}});x.provide((0,h.QJ)({name:"TechdocsPage",component:()=>Promise.resolve().then(a.bind(a,27052)).then(e=>e.Router),mountPoint:d.rQ})),x.provide((0,h.QJ)({name:"EntityTechdocsContent",component:()=>Promise.resolve().then(a.bind(a,27052)).then(e=>e.LegacyEmbeddedDocsRouter),mountPoint:d.Ri})),x.provide((0,h.QJ)({name:"TechDocsCustomHome",component:()=>a.e("7226").then(a.bind(a,68817)).then(e=>e.TechDocsCustomHome),mountPoint:d.rQ})),x.provide((0,h.QJ)({name:"TechDocsIndexPage",component:()=>Promise.resolve().then(a.bind(a,47677)).then(e=>e.TechDocsIndexPage),mountPoint:d.rQ}));let y=x.provide((0,h.QJ)({name:"TechDocsReaderPage",component:()=>a.e("6270").then(a.bind(a,70157)).then(e=>e.TechDocsReaderPage),mountPoint:d.Oc}));x.provide((0,g.ec)({name:"TechDocsSearchResultListItem",component:()=>Promise.resolve().then(a.bind(a,26761)).then(e=>e.TechDocsSearchResultListItem),predicate:e=>"techdocs"===e.type}));var v=a(59177),j=a(4518),b=a(14041),A=a(81219);let w=({entity:e,withSearch:t=!0})=>{let a=(0,i.sM)(e),r=function(e){let{kind:t,name:a,namespace:n}=e,r=(0,A.S)(d.Oc),i=(0,A.S)(d.Ri);return(0,b.useMemo)(()=>{let e=r({kind:t,namespace:n,name:a}).replace(/\/+$/,""),l=i().replace(/\/+$/,"");return t=>{if(t.toLocaleLowerCase("en-US").startsWith(e.toLocaleLowerCase("en-US"))){let a=t.slice(e.length).replace(/^\/+/,"");return 0===a.length||a.startsWith("#")?`${l}${a}`:`${l}/${a}`}return t}},[r,i,t,a,n])}(a);if(e.metadata.annotations?.[l.GO])try{a=(0,i.KU)(e.metadata.annotations?.[l.GO])}catch{}let o=(0,s.oN)(e);return(0,n.jsxs)(y,{entityRef:a,children:[(0,n.jsx)(j.Z,{}),(0,n.jsx)(v.p,{withSearch:t,searchResultUrlMapper:r,defaultPath:o})]})};var C=a(47677),S=a(93872),k=a(22845),E=a(77125),I=a(64947),R=a(58837),T=a(72501),F=a(35571),N=a(4809),L=a(60603),O=a(89595),P=a(79811);let B=(0,R.A)(e=>({code:{borderRadius:6,margin:e.spacing(2,0),background:"dark"===e.palette.type?"#444":e.palette.common.white}}),{name:"BackstageMissingAnnotationEmptyState"});function U(e){var t;let a,r,i,l,s,o,c,d,{t:u}=(0,O.i)(P.j);try{a=(0,k.tN)().entity}catch(e){}let{annotation:p,readMoreUrl:m}=e,f=Array.isArray(p)?p:[p],h=B(),g=a?.kind||"Component",{yamlText:x,lineNumbers:y}=(t=a,r=t?.kind||"Component",i=t?.metadata.name||"example",l=t?.spec?.type||"website",s=t?.spec?.owner||"user:default/guest",o=`apiVersion: backstage.io/v1alpha1
|
|
2
2
|
kind: ${r}
|
|
3
3
|
metadata:
|
|
4
4
|
name: ${i}
|
|
@@ -6,5 +6,5 @@ metadata:
|
|
|
6
6
|
${e}: value`).join("")}
|
|
7
7
|
spec:
|
|
8
8
|
type: ${l}
|
|
9
|
-
owner: ${s}`,c=6,d=[],f.forEach(()=>{d.push(c),c++}),{yamlText:o,lineNumbers:d});return(0,n.jsx)(F.p,{missing:"field",title:u("missingAnnotationEmptyState.title"),description:function(e,t="Component",a){let r=e.map(e=>(0,n.jsx)("code",{children:e},e)).reduce((e,t)=>(0,n.jsxs)(n.Fragment,{children:[e,", ",t]}));return a("missingAnnotationEmptyState.generateDescription",{count:e.length,entityKind:t,annotations:r})}(f,g,u),action:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(T.A,{variant:"body1",children:u("missingAnnotationEmptyState.annotationYaml",{entityKind:g})}),(0,n.jsx)(E.A,{className:h.code,children:(0,n.jsx)(N.z,{text:x,language:"yaml",showLineNumbers:!0,highlightedNumbers:y,customStyle:{background:"inherit",fontSize:"115%"}})}),(0,n.jsx)(I.A,{color:"primary",component:L.N_,to:m||"https://backstage.io/docs/features/software-catalog/well-known-annotations",children:u("missingAnnotationEmptyState.readMore")})]})})}let $=()=>(0,n.jsxs)(r.Routes,{children:[(0,n.jsx)(r.Route,{path:"/",element:(0,n.jsx)(C.TechDocsIndexPage,{})}),(0,n.jsx)(r.Route,{path:"/:namespace/:kind/:name/*",element:(0,n.jsx)(S.W,{})})]}),z=e=>{let{children:t}=e;return(0,r.useRoutes)([{path:"*",element:(0,n.jsx)(S.W,{}),children:[{path:"*",element:t}]}])},M=e=>{let{children:t,emptyState:a,withSearch:i=!0}=e,{entity:s}=(0,k.tN)(),o=(0,r.useRoutes)([{path:"/*",element:(0,n.jsx)(w,{entity:s,withSearch:i}),children:[{path:"*",element:t}]}]);return s.metadata.annotations?.[l.As]||s.metadata.annotations?.[l.GO]?o:a??(0,n.jsx)(U,{annotation:[l.As]})},D=({children:e,withSearch:t=!0})=>(0,n.jsx)(M,{children:e,withSearch:t})},99255(e,t,a){a.d(t,{V:()=>n});function n(e,t){return t.getOptionalBoolean("techdocs.legacyUseCaseSensitiveTripletPaths")?e:e.toLocaleLowerCase("en-US")}},31314(e,t,a){a.d(t,{o:()=>h});var n=a(31085),r=a(11688),i=a(81219),l=a(50509),s=a(19735),o=a(90898),c=a(28499),d=a(35571),u=a(45463),p=a(37144),m=a(44093),f=a(25046);let h=e=>{let{entities:t,title:a,loading:h,columns:g,actions:x,options:y}=e,[,v]=(0,r.A)(),j=(0,i.S)(o.Oc),b=(0,l.gf)(s.U);if(!t)return null;let A=(0,f.H)(t,j,b),w=[p.f.createCopyDocsUrlAction(v)],C=A&&A.length>20;return(0,n.jsx)(n.Fragment,{children:h||A&&A.length>0?(0,n.jsx)(c.X,{isLoading:h,options:{paging:C,pageSize:20,search:!0,actionsColumnIndex:-1,...y},data:A,columns:g||m.F,actions:x||w,title:a?`${a} (${A.length})`:`All (${A.length})`}):(0,n.jsx)(d.p,{missing:"data",title:"No documents to show",description:"Create your own document. Check out our Getting Started Information",action:(0,n.jsx)(u.z,{color:"primary",to:"https://backstage.io/docs/features/techdocs/getting-started",variant:"contained",children:"DOCS"})})})};h.columns=m.B,h.actions=p.f},55374(e,t,a){a.d(t,{$:()=>w});var n=a(31085),r=a(11688),i=a(45250),l=a(87187),s=a(4809),o=a(81219),c=a(50509),d=a(19735),u=a(59378),p=a(75710),m=a(31314),f=a(14041),h=a(28499),g=a(47195);function x(e){let{actions:t,columns:a,data:r,isLoading:i,options:l,title:s}=e,{updateFilters:o,setLimit:c,setOffset:d,limit:p,totalItems:m,offset:x}=(0,u.nK)(),[y,v]=(0,f.useState)(x&&p?Math.floor(x/p):0);return(0,f.useEffect)(()=>{m&&y*p>=m?d(Math.max(0,m-p)):d(Math.max(0,y*p))},[d,y,p,m]),(0,n.jsx)(h.X,{title:s,columns:a,data:r,options:{paginationPosition:"both",pageSizeOptions:[5,10,20,50,100],pageSize:p,emptyRowsWhenPaging:!1,actionsColumnIndex:-1,...l},actions:t,onSearchChange:e=>o({text:e?new g.V3(e):void 0}),page:y,onPageChange:e=>{v(e)},onRowsPerPageChange:e=>{c(e)},totalCount:m,localization:{pagination:{labelDisplayedRows:""}},isLoading:i})}function y(e){let{actions:t,columns:a,data:r,next:i,prev:l,title:s,isLoading:o,options:c,...d}=e;return(0,n.jsx)(h.X,{title:o?"":s,columns:a,data:r,options:{paginationPosition:"both",...c,pageSizeOptions:[],showFirstLastPageButtons:!1,pageSize:Number.MAX_SAFE_INTEGER,emptyRowsWhenPaging:!1,actionsColumnIndex:-1},onPageChange:e=>{e>0?i?.():l?.()},page:+!!l,totalCount:i?Number.MAX_VALUE:Number.MAX_SAFE_INTEGER,localization:{pagination:{labelDisplayedRows:""}},isLoading:o,...d})}var v=a(37144),j=a(44093),b=a(90898),A=a(25046);let w=e=>{let{columns:t,actions:a,options:f}=e,{loading:h,error:g,entities:w,filters:C,paginationMode:S,pageInfo:k}=(0,u.nK)(),{isStarredEntity:E,toggleStarredEntity:I}=(0,p.I)(),[,R]=(0,r.A)(),T=(0,o.S)(b.Oc),F=(0,c.gf)(d.U),N=(0,i.capitalize)(C.user?.value??"all"),L=[v.f.createCopyDocsUrlAction(R),v.f.createStarEntityAction(E,I)],O=(0,A.H)(w,T,F);return"cursor"===S?(0,n.jsx)(y,{columns:t||j.F,isLoading:h,title:N,actions:a||L,options:f,data:O,next:k?.next,prev:k?.prev}):"offset"===S?(0,n.jsx)(x,{columns:t||j.F,isLoading:h,title:N,actions:a||L,options:f,data:O}):g?(0,n.jsx)(l.B,{severity:"error",title:"Could not load available documentation.",children:(0,n.jsx)(s.z,{language:"text",text:g.toString()})}):(0,n.jsx)(m.o,{title:N,entities:w,loading:h,actions:a||L,columns:t,options:f})};w.columns=j.B,w.actions=v.f},37144(e,t,a){a.d(t,{f:()=>l});var n=a(31085),r=a(55290),i=a(280);let l={createCopyDocsUrlAction:e=>t=>({icon:()=>(0,n.jsx)(r.default,{fontSize:"small"}),tooltip:"Click to copy documentation link to clipboard",onClick:()=>e(`${window.location.origin}${t.resolved.docsUrl}`)}),createStarEntityAction:(e,t)=>a=>{let r=a.entity,l=e(r);return{cellStyle:{paddingLeft:"1em"},icon:()=>(0,n.jsx)(i.m,{isFavorite:l}),tooltip:l?"Remove from favorites":"Add to favorites",onClick:()=>t(r)}}}},44093(e,t,a){a.d(t,{F:()=>u,B:()=>d});var n=a(31085),r=a(77125);let i=(0,a(58837).A)(e=>({value:{marginBottom:e.spacing(.75)},subvalue:{color:e.palette.textSubtle,fontWeight:"normal"}}),{name:"BackstageSubvalueCell"});function l(e){let{value:t,subvalue:a}=e,l=i();return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(r.A,{className:l.value,children:t}),(0,n.jsx)(r.A,{className:l.subvalue,children:a})]})}var s=a(60603),o=a(53987);function c(e){return e.metadata.title||e.metadata.name}let d={createTitleColumn:e=>({...d.createNameColumn(),field:"entity.metadata.title",hidden:e?.hidden}),createNameColumn:()=>({title:"Document",field:"entity.metadata.name",highlight:!0,searchable:!0,defaultSort:"asc",customSort:(e,t)=>{let a=c(e.entity).toLocaleLowerCase(),n=c(t.entity).toLocaleLowerCase();return a.localeCompare(n)},render:e=>(0,n.jsx)(l,{value:(0,n.jsx)(s.N_,{to:e.resolved.docsUrl,children:c(e.entity)}),subvalue:e.entity.metadata.description})}),createOwnerColumn:()=>({title:"Owner",field:"resolved.ownedByRelationsTitle",render:({resolved:e})=>(0,n.jsx)(o.i,{entityRefs:e.ownedByRelations,defaultKind:"group"})}),createKindColumn:()=>({title:"Kind",field:"entity.kind"}),createTypeColumn:()=>({title:"Type",field:"entity.spec.type"})},u=[d.createTitleColumn({hidden:!0}),d.createNameColumn(),d.createOwnerColumn(),d.createKindColumn(),d.createTypeColumn()]},25046(e,t,a){a.d(t,{H:()=>s});var n=a(96403),r=a(53320),i=a(43311),l=a(99255);function s(e,t,a,s){return e.map(e=>{let o=(0,r.t)(e,n.vv);return{entity:e,resolved:{docsUrl:t({namespace:(0,l.V)(e.metadata.namespace??"default",a),kind:(0,l.V)(e.kind,a),name:(0,l.V)(e.metadata.name,a)}),ownedByRelations:o,ownedByRelationsTitle:o.map(e=>(0,i.E)(e,{defaultKind:"group"},s).primaryTitle).join(", ")}}})}},47677(e,t,a){a.d(t,{TechDocsIndexPage:()=>x});var n=a(31085),r=a(18690),i=a(15179),l=a(23413),s=a(84391),o=a(59378),c=a(71242),d=a(59302),u=a(53149),p=a(67762),m=a(59821),f=a(59152),h=a(55374);let g=e=>{let{initialFilter:t="owned",columns:a,actions:r,ownerPickerMode:g,pagination:x,options:y,PageWrapper:v,CustomHeader:j}=e,b=v||m.S,A=j||(()=>(0,n.jsx)(i.d,{title:"",children:(0,n.jsx)(l.Y,{children:"Discover documentation in your ecosystem."})}));return(0,n.jsx)(b,{children:(0,n.jsxs)(s.U,{children:[(0,n.jsx)(A,{}),(0,n.jsx)(o.B9,{pagination:x,children:(0,n.jsxs)(c.GI,{children:[(0,n.jsxs)(c.GI.Filters,{children:[(0,n.jsx)(f.Y,{}),(0,n.jsx)(d.y,{initialFilter:t}),(0,n.jsx)(u.t,{mode:g}),(0,n.jsx)(p.m,{})]}),(0,n.jsx)(c.GI.Content,{children:(0,n.jsx)(h.$,{actions:r,columns:a,options:y})})]})})]})})},x=e=>(0,r.useOutlet)()||(0,n.jsx)(g,{...e})},59821(e,t,a){a.d(t,{S:()=>c});var n=a(31085),r=a(70111),i=a(12439);function l(e){let{themeId:t,children:a,...l}=e;return(0,n.jsxs)(i.Y,{themeId:t,children:[(0,n.jsx)(r.Y,{...l}),a]})}var s=a(50509),o=a(19735);let c=e=>{let{children:t,CustomPageWrapper:a}=e,r=(0,s.gf)(o.U),i=`Documentation available in ${r.getOptionalString("organization.name")??"Backstage"}`;return(0,n.jsx)(n.Fragment,{children:a?(0,n.jsx)(a,{children:t}):(0,n.jsx)(l,{title:"Documentation",subtitle:i,themeId:"documentation",children:t})})}},59152(e,t,a){a.d(t,{Y:()=>o});var n=a(14041),r=a(74854),i=a(59378),l=a(78931);class s{getCatalogFilters(){return{[`metadata.annotations.${l.As}`]:r.c}}}let o=()=>{let{updateFilters:e}=(0,i.nK)();return(0,n.useEffect)(()=>{e({techdocs:new s})},[e]),null}},93872(e,t,a){a.d(t,{W:()=>ei});var n=a(31085),r=a(14041),i=a(18690),l=a(12439),s=a(55489),o=a(90479),c=a(63401),d=a(59177),u=a(93285),p=a(42899),m=a(89575),f=a(39850),h=a(57384),g=a(268),x=a(7031),y=r.forwardRef(function(e,t){var a=e.animation,n=void 0===a?"pulse":a,i=e.classes,l=e.className,s=e.component,o=e.height,c=e.variant,d=e.width,u=(0,f.A)(e,["animation","classes","className","component","height","variant","width"]),p=!!u.children;return r.createElement(void 0===s?"span":s,(0,m.A)({ref:t,className:(0,h.A)(i.root,i[void 0===c?"text":c],l,p&&[i.withChildren,!d&&i.fitContent,!o&&i.heightAuto],!1!==n&&i[n])},u,{style:(0,m.A)({width:d,height:o},u.style)}))});let v=(0,x.A)(function(e){return{root:{display:"block",backgroundColor:(0,g.X4)(e.palette.text.primary,"light"===e.palette.type?.11:.13),height:"1.2em"},text:{marginTop:0,marginBottom:0,height:"auto",transformOrigin:"0 60%",transform:"scale(1, 0.60)",borderRadius:e.shape.borderRadius,"&:empty:before":{content:'"\\00a0"'}},rect:{},circle:{borderRadius:"50%"},pulse:{animation:"$pulse 1.5s ease-in-out 0.5s infinite"},"@keyframes pulse":{"0%":{opacity:1},"50%":{opacity:.4},"100%":{opacity:1}},wave:{position:"relative",overflow:"hidden","&::after":{animation:"$wave 1.6s linear 0.5s infinite",background:"linear-gradient(90deg, transparent, ".concat(e.palette.action.hover,", transparent)"),content:'""',position:"absolute",transform:"translateX(-100%)",bottom:0,left:0,right:0,top:0}},"@keyframes wave":{"0%":{transform:"translateX(-100%)"},"60%":{transform:"translateX(100%)"},"100%":{transform:"translateX(100%)"}},withChildren:{"& > *":{visibility:"hidden"}},fitContent:{maxWidth:"fit-content"},heightAuto:{height:"auto"}}},{name:"MuiSkeleton"})(y);var j=a(13660),b=a(10337),A=a(53320),w=a(3438),C=a(53987),S=a(96403),k=a(27231),E=a(70111),I=a(81219),R=a(56005),T=a.n(R),F=a(90898),N=a(59535);let L=(0,n.jsx)(v,{animation:"wave",variant:"text",height:40}),O=e=>{let{children:t}=e,{title:a,subtitle:r,entityRef:i,entityMetadata:l,tabTitle:s,hidden:o,showSourceLink:c,sourceLink:d,addons:m}=(0,N.f)(),f=(0,I.S)(F.rQ)();if(o)return null;let{spec:h}=l||{},g=h?.lifecycle,x=l?(0,A.t)(l,S.vv):[],y=(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(k.S,{label:T()(l?.kind||"entity"),value:(0,n.jsx)(w.z,{color:"inherit",entityRef:i,title:l?.metadata.title,defaultKind:"Component"})}),x.length>0&&(0,n.jsx)(k.S,{label:"Owner",value:(0,n.jsx)(C.i,{color:"inherit",entityRefs:x,defaultKind:"group"})}),g?(0,n.jsx)(k.S,{label:"Lifecycle",value:String(g)}):null,c?(0,n.jsx)(k.S,{label:"",value:(0,n.jsxs)(p.A,{container:!0,direction:"column",alignItems:"center",children:[(0,n.jsx)(p.A,{style:{padding:0},item:!0,children:(0,n.jsx)(j.default,{style:{marginTop:"-25px"}})}),(0,n.jsx)(p.A,{style:{padding:0},item:!0,children:"Source"})]}),url:d}):null]});return(0,n.jsxs)(E.Y,{type:"Documentation",typeLink:f,title:a||L,subtitle:""===r?void 0:r||L,children:[(0,n.jsx)(u.A,{titleTemplate:"%s",children:(0,n.jsx)("title",{children:s})}),y,t,m.renderComponentsByLocation(b.e.Header)]})};var P=a(4518),B=a(90615),U=a(65605),$=a(60691),z=a(91189),M=a(64947),D=a(50509),W=a(76637),K=a(71531),Q=a(16261),V=a(76842),q=a(33947);function _(e){let{children:t,...a}=e,{Progress:i}=(0,z.n)().getComponents(),l=function(e){let{pluginId:t}=e??{},a=(0,D.gf)(W.a),n=(0,D.gf)(K.I),i=(0,r.useMemo)(()=>"BroadcastChannel"in window?new BroadcastChannel(`${t}-auth-cookie-expires-at`):null,[t]),[l,s]=function(e){let[t,a]=(0,r.useState)({status:"not-executed",error:void 0,result:void 0}),n=(0,r.useRef)(),i=(0,r.useRef)(),l=(0,Q.J)({execute(...t){i.current=t;let r=e(...t);return n.current=r,a(e=>({...e,status:"loading"})),r.then(e=>{r===n.current&&a(t=>({...t,status:"success",error:void 0,result:e}))},e=>{r===n.current&&a(t=>({...t,status:"error",error:e}))}),r},reset(){a({status:"not-executed",error:void 0,result:void 0}),n.current=void 0,i.current=void 0}});return[t,(0,r.useMemo)(()=>({reset(){l.current.reset()},execute:(...e)=>l.current.execute(...e)}),[]),{promise:n.current,lastArgs:i.current}]}(async()=>{let e=await n.getBaseUrl(t),r=`${e}/.backstage/auth/v1/cookie`,i=await a.fetch(`${r}`,{credentials:"include"});if(!i.ok){if(404===i.status)return{expiresAt:new Date(Date.now()+31536e6)};throw await q.o.fromResponse(i)}let l=await i.json();if(!l.expiresAt)throw Error("No expiration date found in response");return l});(0,V.u)(s.execute);let o=(0,r.useCallback)(()=>{s.execute()},[s]),c=(0,r.useCallback)(e=>{let t=(1+3*Math.random())*6e4,a=setTimeout(o,Date.parse(e.expiresAt)-Date.now()-t);return()=>clearTimeout(a)},[o]);return((0,r.useEffect)(()=>{if("success"!==l.status||!l.result)return()=>{};i?.postMessage({action:"COOKIE_REFRESH_SUCCESS",payload:l.result});let e=c(l.result),t=t=>{let{action:a,payload:n}=t.data;"COOKIE_REFRESH_SUCCESS"===a&&(e(),e=c(n))};return i?.addEventListener("message",t),()=>{e(),i?.removeEventListener("message",t)}},[l,c,i]),"not-executed"===l.status||"loading"===l.status&&!l.result||"loading"===l.status&&l.error)?{status:"loading"}:"error"===l.status&&l.error?{status:"error",error:l.error,retry:o}:{status:"success",data:l.result}}(a);return"loading"===l.status?(0,n.jsx)(i,{}):"error"===l.status?(0,n.jsx)($.b,{error:l.error,children:(0,n.jsx)(M.A,{variant:"outlined",onClick:l.retry,children:"Retry"})}):(0,n.jsx)(n.Fragment,{children:t})}var H=a(60882),G=a(54917),X=a(41329),Y=a(50868),J=a(73466),Z=a(76272),ee=a(58077),et=a(95269),ea=a(78931);let en=e=>{let{withSearch:t,withHeader:a=!0}=e;return(0,n.jsxs)(l.Y,{themeId:"documentation",children:[a&&(0,n.jsx)(O,{}),(0,n.jsx)(P.Z,{}),(0,n.jsx)(d.p,{withSearch:t})]})},er=(0,H.A)(l.Y)({height:"inherit",overflowY:"visible"}),ei=e=>{let t,a,l,d,u,p,m,f,h=(0,G.A)(),g=(0,r.useMemo)(()=>(0,X.A)({...h,...e.overrideThemeOptions||{}}),[h,e.overrideThemeOptions]),{kind:x,name:y,namespace:v}=(0,B.K)(F.Oc),{children:j,entityRef:b={kind:x,name:y,namespace:v}}=e,A=(0,i.useOutlet)(),w=(0,r.useMemo)(()=>({kind:b.kind,name:b.name,namespace:b.namespace}),[b.kind,b.name,b.namespace]),{shouldShowProgress:C}=(t=(0,D.gf)(Z.v),a=(0,i.useNavigate)(),l=(0,I.S)(F.Oc),d=(0,ee.U2)(w),p=(u=(0,r.useRef)(null)).current!==d,m=(0,J.A)(async()=>{try{let e=await t.getEntityByRef(w);if(e?.metadata?.annotations?.[ea.GO])return(0,et.b1)(e,l)}catch(e){}},[d,t]),(0,r.useEffect)(()=>{!m.loading&&m.value&&a(m.value,{replace:!0}),m.loading||m.value||(u.current=d)},[m.loading,m.value,a,d]),f=p&&m.loading||!!m.value,{loading:m.loading,shouldShowProgress:f}),S=(0,r.useMemo)(()=>j?null:(A?r.Children.toArray(A.props.children):[]).flatMap(e=>e?.props?.children??[]).find(e=>!(0,U.E)(e,o.AF)&&!(0,U.E)(e,o.Wm)),[j,A]);return C?(0,n.jsx)(s.k,{}):j?(0,n.jsx)(Y.A,{theme:g,children:(0,n.jsx)(_,{pluginId:"techdocs",children:(0,n.jsx)(c.R,{entityRef:w,children:({metadata:e,entityMetadata:t,onReady:a})=>(0,n.jsx)(er,{themeId:"documentation",className:"techdocs-reader-page",children:j instanceof Function?j({entityRef:w,techdocsMetadataValue:e.value,entityMetadataValue:t.value,onReady:a}):j})})})}):(0,n.jsx)(Y.A,{theme:g,children:(0,n.jsx)(_,{pluginId:"techdocs",children:(0,n.jsx)(c.R,{entityRef:w,children:S||(0,n.jsx)(en,{})})})})}},59177(e,t,a){let n;a.d(t,{p:()=>D});var r=a(31085),i=a(42899),l=a(58837),s=a(96741),o=a(84391),c=a(55489),d=a(14041),u=a(78467),p=a(62683),m=a(63489),f=a(50509),h=a(19735),g=a(91189),x=a(92829),y=a(29365),v=a(34839),j=a(16249),b=a(64947),A=a(45917),w=a(48240),C=a(89595);let S=(0,a(97386).h)({id:"search-react",messages:{searchBar:{title:"Search",placeholder:"Search in {{org}}",clearButtonTitle:"Clear"},searchFilter:{allOptionTitle:"All"},searchPagination:{limitLabel:"Results per page:",limitText:"of {{num}}"},noResultsDescription:"Sorry, no results were found",searchResultGroup:{linkTitle:"See All",addFilterButtonTitle:"Add filter"},searchResultPager:{previous:"Previous",next:"Next"}}}),k=(0,d.forwardRef)((e,t)=>{let{onChange:a,onKeyDown:n=()=>{},onClear:i=()=>{},onSubmit:l=()=>{},debounceTime:s=200,clearButton:o=!0,fullWidth:c=!0,value:u,label:p,placeholder:x,inputProps:k={},InputProps:E={},endAdornment:I,...R}=e,T=(0,f.gf)(h.U),[F,N]=(0,d.useState)(""),L=(0,d.useRef)(""),{t:O}=(0,C.i)(S);(0,d.useEffect)(()=>{N(e=>e===L.current?String(u):e)},[u,L]),(0,w.A)(()=>{L.current=F,a(F)},s,[F]);let P=(0,d.useCallback)(e=>{N(e.target.value)},[N]),B=(0,d.useCallback)(e=>{n&&n(e),l&&"Enter"===e.key&&l()},[n,l]),U=(0,d.useCallback)(()=>{L.current="",a(""),N(""),i&&i()},[a,i]),$=p?void 0:O("searchBar.title"),z=x??O("searchBar.placeholder",{org:T.getOptionalString("app.title")||"Backstage"}),M=(0,g.n)().getSystemIcon("search")||A.default,D=(0,r.jsx)(v.A,{position:"start",children:(0,r.jsx)(y.A,{"aria-label":"Query",size:"small",disabled:!0,children:(0,r.jsx)(M,{})})}),W=(0,r.jsx)(v.A,{position:"end",children:(0,r.jsx)(b.A,{"aria-label":O("searchBar.clearButtonTitle"),size:"small",onClick:U,onKeyDown:e=>{"Enter"===e.key&&e.stopPropagation()},children:O("searchBar.clearButtonTitle")})});return(0,r.jsx)(m.Lt,{inheritParentContextIfAvailable:!0,children:(0,r.jsx)(j.A,{id:"search-bar-text-field","data-testid":"search-bar-next",variant:"outlined",margin:"normal",inputRef:t,value:F,label:p,placeholder:z,InputProps:{startAdornment:D,endAdornment:o?W:I,...E},inputProps:{"aria-label":$,...k},fullWidth:c,onChange:P,onKeyDown:B,...R})})}),E=(0,d.forwardRef)((e,t)=>{let{value:a="",onChange:n,...i}=e,{term:l,setTerm:s}=(0,m.SQ)();(0,d.useEffect)(()=>{a&&s(String(a))},[a,s]);let o=(0,d.useCallback)(e=>{n?n(e):s(e)},[n,s]);return(0,r.jsx)(m.Lt,{inheritParentContextIfAvailable:!0,children:(0,r.jsx)(x.Ig,{attributes:{pluginId:"search",extension:"SearchBar"},children:(0,r.jsx)(k,{...i,ref:t,value:l,onChange:o})})})}),I=(0,l.A)(e=>({loading:{right:e.spacing(1),position:"absolute"}})),R=()=>{let e=I();return(0,r.jsx)(u.A,{className:e.loading,"data-testid":"search-autocomplete-progressbar",color:"inherit",size:20})},T=(n=function(e){let{loading:t,value:a,onChange:n=()=>{},options:i=[],getOptionLabel:l=e=>String(e),inputPlaceholder:s,inputDebounceTime:o,freeSolo:c=!0,fullWidth:u=!0,clearOnBlur:f=!1,"data-testid":h="search-autocomplete",...g}=e,{setTerm:x}=(0,m.SQ)(),y=(0,d.useCallback)(e=>e?"string"==typeof e?e:l(e):"",[l]),v=(0,d.useMemo)(()=>y(a),[a,y]),j=(0,d.useCallback)((e,t,a,r)=>{x(y(t)),n(e,t,a,r)},[y,x,n]),b=(0,d.useCallback)(({InputProps:{ref:e,className:a,endAdornment:n},InputLabelProps:i,...l})=>(0,r.jsx)(E,{...l,ref:e,clearButton:!1,value:v,placeholder:s,debounceTime:o,endAdornment:t?(0,r.jsx)(R,{}):n,InputProps:{className:a}}),[t,v,s,o]);return(0,r.jsx)(p.Ay,{...g,"data-testid":h,value:a,onChange:j,options:i,getOptionLabel:l,renderInput:b,freeSolo:c,fullWidth:u,clearOnBlur:f})},e=>(0,r.jsx)(m.Lt,{inheritParentContextIfAvailable:!0,children:(0,r.jsx)(n,{...e})}));var F=a(18690),N=a(26761),L=a(36985);let O=e=>{let{entityId:t,entityTitle:a,debounceTime:n=150,searchResultUrlMapper:i}=e,[l,s]=(0,d.useState)(!1),o=(0,F.useNavigate)(),{results:c,term:u,loading:p}=(0,L.F)(t);return(0,r.jsx)(T,{"data-testid":"techdocs-search-bar",size:"small",open:l&&!!u,getOptionLabel:()=>"",filterOptions:e=>e,onClose:()=>{s(!1)},onOpen:()=>{s(!0)},onChange:(e,t)=>{if(t?.document){let{location:e}=t.document;o(i?i(e):e)}},blurOnSelect:!0,noOptionsText:"No results found",value:null,options:c,renderOption:({document:e,highlight:t})=>(0,r.jsx)(N.TechDocsSearchResultListItem,{result:e,lineClamp:3,asListItem:!1,asLink:!1,title:e.title,highlight:t}),loading:p,inputDebounceTime:n,inputPlaceholder:`Search ${a||t.name} docs`,freeSolo:!1})},P=e=>{let t={term:"",types:["techdocs"],pageCursor:"",filters:e.entityId};return(0,r.jsx)(m.Lt,{initialState:t,children:(0,r.jsx)(O,{...e})})};var B=a(3905),U=a(4723),$=a(73455),z=a(31035);let M=(0,l.A)({search:{width:"100%","@media (min-width: 76.1875em)":{width:"calc(100% - 34.4rem)",margin:"0 auto"},"@media print":{display:"none"}}}),D=(0,U.sh)(e=>{let{withSearch:t=!0,searchResultUrlMapper:a}=e,n=M(),{entityRef:l,entityMetadata:d,dom:u,handleAppend:p,isNotFound:m,isDomReady:f,showProgress:h,NotFoundErrorPage:g}=(0,z.t)({defaultPath:e.defaultPath,onReady:e.onReady});return m?(0,r.jsx)(g,{}):f?(0,r.jsx)(o.U,{children:(0,r.jsxs)(i.A,{container:!0,children:[(0,r.jsx)(i.A,{xs:12,item:!0,children:(0,r.jsx)(B.W,{})}),t&&(0,r.jsx)(i.A,{className:n.search,xs:"auto",item:!0,children:(0,r.jsx)(P,{entityId:l,entityTitle:d?.metadata?.title,searchResultUrlMapper:a})}),(0,r.jsxs)(i.A,{xs:12,item:!0,children:[h&&(0,r.jsx)(c.k,{}),(0,r.jsx)(s.eh,{element:u,onAppend:p,children:(0,r.jsx)($.k,{})})]})]})}):(0,r.jsx)(o.U,{children:(0,r.jsx)(i.A,{container:!0,children:(0,r.jsx)(i.A,{xs:12,item:!0,children:(0,r.jsx)(B.W,{})})})})})},26761(e,t,a){a.d(t,{TechDocsSearchResultListItem:()=>u});var n=a(31085),r=a(46423),i=a(5951),l=a(58837),s=a(72501),o=a(60603),c=a(7613);let d=(0,l.A)({flexContainer:{flexWrap:"wrap"},itemText:{width:"100%",marginBottom:"1rem"}}),u=e=>{let{result:t,highlight:a,lineClamp:l=5,asListItem:u=!0,asLink:p=!0,title:m,icon:f}=e,h=d(),g=({children:e})=>p?(0,n.jsx)(o.N_,{noTrack:!0,to:t.location,children:e}):(0,n.jsx)(n.Fragment,{children:e});return(0,n.jsx)(({children:e})=>u?(0,n.jsxs)(n.Fragment,{children:[f&&(0,n.jsx)(r.A,{children:"function"==typeof f?f(t):f}),(0,n.jsx)("div",{className:h.flexContainer,children:e})]}):(0,n.jsx)(n.Fragment,{children:e}),{children:(0,n.jsx)(()=>{let e=a?.fields.title?(0,n.jsx)(c.e,{text:a.fields.title,preTag:a.preTag,postTag:a.postTag}):t.title,r=a?.fields.entityTitle?(0,n.jsx)(c.e,{text:a.fields.entityTitle,preTag:a.preTag,postTag:a.postTag}):t.entityTitle,o=a?.fields.name?(0,n.jsx)(c.e,{text:a.fields.name,preTag:a.preTag,postTag:a.postTag}):t.name;return t?(0,n.jsx)(i.A,{className:h.itemText,primaryTypographyProps:{variant:"h6"},primary:(0,n.jsx)(g,{children:m||(0,n.jsxs)(n.Fragment,{children:[e," | ",r??o," docs"]})}),secondary:(0,n.jsx)(s.A,{component:"span",style:{display:"-webkit-box",WebkitBoxOrient:"vertical",WebkitLineClamp:l,overflow:"hidden"},color:"textSecondary",variant:"body2",children:a?.fields.text?(0,n.jsx)(c.e,{text:a.fields.text,preTag:a.preTag,postTag:a.postTag}):t.text})}):null},{})})}}}]);
|
|
10
|
-
//# sourceMappingURL=8461.
|
|
9
|
+
owner: ${s}`,c=6,d=[],f.forEach(()=>{d.push(c),c++}),{yamlText:o,lineNumbers:d});return(0,n.jsx)(F.p,{missing:"field",title:u("missingAnnotationEmptyState.title"),description:function(e,t="Component",a){let r=e.map(e=>(0,n.jsx)("code",{children:e},e)).reduce((e,t)=>(0,n.jsxs)(n.Fragment,{children:[e,", ",t]}));return a("missingAnnotationEmptyState.generateDescription",{count:e.length,entityKind:t,annotations:r})}(f,g,u),action:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(T.A,{variant:"body1",children:u("missingAnnotationEmptyState.annotationYaml",{entityKind:g})}),(0,n.jsx)(E.A,{className:h.code,children:(0,n.jsx)(N.z,{text:x,language:"yaml",showLineNumbers:!0,highlightedNumbers:y,customStyle:{background:"inherit",fontSize:"115%"}})}),(0,n.jsx)(I.A,{color:"primary",component:L.N_,to:m||"https://backstage.io/docs/features/software-catalog/well-known-annotations",children:u("missingAnnotationEmptyState.readMore")})]})})}let $=()=>(0,n.jsxs)(r.Routes,{children:[(0,n.jsx)(r.Route,{path:"/",element:(0,n.jsx)(C.TechDocsIndexPage,{})}),(0,n.jsx)(r.Route,{path:"/:namespace/:kind/:name/*",element:(0,n.jsx)(S.W,{})})]}),z=e=>{let{children:t}=e;return(0,r.useRoutes)([{path:"*",element:(0,n.jsx)(S.W,{}),children:[{path:"*",element:t}]}])},M=e=>{let{children:t,emptyState:a,withSearch:i=!0}=e,{entity:s}=(0,k.tN)(),o=(0,r.useRoutes)([{path:"/*",element:(0,n.jsx)(w,{entity:s,withSearch:i}),children:[{path:"*",element:t}]}]);return s.metadata.annotations?.[l.As]||s.metadata.annotations?.[l.GO]?o:a??(0,n.jsx)(U,{annotation:[l.As]})},D=({children:e,withSearch:t=!0})=>(0,n.jsx)(M,{children:e,withSearch:t})},99255(e,t,a){a.d(t,{V:()=>n});function n(e,t){return t.getOptionalBoolean("techdocs.legacyUseCaseSensitiveTripletPaths")?e:e.toLocaleLowerCase("en-US")}},31314(e,t,a){a.d(t,{o:()=>h});var n=a(31085),r=a(11688),i=a(81219),l=a(50509),s=a(19735),o=a(90898),c=a(28499),d=a(35571),u=a(45463),p=a(37144),m=a(44093),f=a(25046);let h=e=>{let{entities:t,title:a,loading:h,columns:g,actions:x,options:y}=e,[,v]=(0,r.A)(),j=(0,i.S)(o.Oc),b=(0,l.gf)(s.U);if(!t)return null;let A=(0,f.H)(t,j,b),w=[p.f.createCopyDocsUrlAction(v)],C=A&&A.length>20;return(0,n.jsx)(n.Fragment,{children:h||A&&A.length>0?(0,n.jsx)(c.X,{isLoading:h,options:{paging:C,pageSize:20,search:!0,actionsColumnIndex:-1,...y},data:A,columns:g||m.F,actions:x||w,title:a?`${a} (${A.length})`:`All (${A.length})`}):(0,n.jsx)(d.p,{missing:"data",title:"No documents to show",description:"Create your own document. Check out our Getting Started Information",action:(0,n.jsx)(u.z,{color:"primary",to:"https://backstage.io/docs/features/techdocs/getting-started",variant:"contained",children:"DOCS"})})})};h.columns=m.B,h.actions=p.f},55374(e,t,a){a.d(t,{$:()=>w});var n=a(31085),r=a(11688),i=a(45250),l=a(87187),s=a(4809),o=a(81219),c=a(50509),d=a(19735),u=a(59378),p=a(75710),m=a(31314),f=a(14041),h=a(28499),g=a(47195);function x(e){let{actions:t,columns:a,data:r,isLoading:i,options:l,title:s}=e,{updateFilters:o,setLimit:c,setOffset:d,limit:p,totalItems:m,offset:x}=(0,u.nK)(),[y,v]=(0,f.useState)(x&&p?Math.floor(x/p):0);return(0,f.useEffect)(()=>{m&&y*p>=m?d(Math.max(0,m-p)):d(Math.max(0,y*p))},[d,y,p,m]),(0,n.jsx)(h.X,{title:s,columns:a,data:r,options:{paginationPosition:"both",pageSizeOptions:[5,10,20,50,100],pageSize:p,emptyRowsWhenPaging:!1,actionsColumnIndex:-1,...l},actions:t,onSearchChange:e=>o({text:e?new g.V3(e):void 0}),page:y,onPageChange:e=>{v(e)},onRowsPerPageChange:e=>{c(e)},totalCount:m,localization:{pagination:{labelDisplayedRows:""}},isLoading:i})}function y(e){let{actions:t,columns:a,data:r,next:i,prev:l,title:s,isLoading:o,options:c,...d}=e;return(0,n.jsx)(h.X,{title:o?"":s,columns:a,data:r,options:{paginationPosition:"both",...c,pageSizeOptions:[],showFirstLastPageButtons:!1,pageSize:Number.MAX_SAFE_INTEGER,emptyRowsWhenPaging:!1,actionsColumnIndex:-1},onPageChange:e=>{e>0?i?.():l?.()},page:+!!l,totalCount:i?Number.MAX_VALUE:Number.MAX_SAFE_INTEGER,localization:{pagination:{labelDisplayedRows:""}},isLoading:o,...d})}var v=a(37144),j=a(44093),b=a(90898),A=a(25046);let w=e=>{let{columns:t,actions:a,options:f}=e,{loading:h,error:g,entities:w,filters:C,paginationMode:S,pageInfo:k}=(0,u.nK)(),{isStarredEntity:E,toggleStarredEntity:I}=(0,p.I)(),[,R]=(0,r.A)(),T=(0,o.S)(b.Oc),F=(0,c.gf)(d.U),N=(0,i.capitalize)(C.user?.value??"all"),L=[v.f.createCopyDocsUrlAction(R),v.f.createStarEntityAction(E,I)],O=(0,A.H)(w,T,F);return"cursor"===S?(0,n.jsx)(y,{columns:t||j.F,isLoading:h,title:N,actions:a||L,options:f,data:O,next:k?.next,prev:k?.prev}):"offset"===S?(0,n.jsx)(x,{columns:t||j.F,isLoading:h,title:N,actions:a||L,options:f,data:O}):g?(0,n.jsx)(l.B,{severity:"error",title:"Could not load available documentation.",children:(0,n.jsx)(s.z,{language:"text",text:g.toString()})}):(0,n.jsx)(m.o,{title:N,entities:w,loading:h,actions:a||L,columns:t,options:f})};w.columns=j.B,w.actions=v.f},37144(e,t,a){a.d(t,{f:()=>l});var n=a(31085),r=a(55290),i=a(280);let l={createCopyDocsUrlAction:e=>t=>({icon:()=>(0,n.jsx)(r.default,{fontSize:"small"}),tooltip:"Click to copy documentation link to clipboard",onClick:()=>e(`${window.location.origin}${t.resolved.docsUrl}`)}),createStarEntityAction:(e,t)=>a=>{let r=a.entity,l=e(r);return{cellStyle:{paddingLeft:"1em"},icon:()=>(0,n.jsx)(i.m,{isFavorite:l}),tooltip:l?"Remove from favorites":"Add to favorites",onClick:()=>t(r)}}}},44093(e,t,a){a.d(t,{F:()=>u,B:()=>d});var n=a(31085),r=a(77125);let i=(0,a(58837).A)(e=>({value:{marginBottom:e.spacing(.75)},subvalue:{color:e.palette.textSubtle,fontWeight:"normal"}}),{name:"BackstageSubvalueCell"});function l(e){let{value:t,subvalue:a}=e,l=i();return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(r.A,{className:l.value,children:t}),(0,n.jsx)(r.A,{className:l.subvalue,children:a})]})}var s=a(60603),o=a(53987);function c(e){return e.metadata.title||e.metadata.name}let d={createTitleColumn:e=>({...d.createNameColumn(),field:"entity.metadata.title",hidden:e?.hidden}),createNameColumn:()=>({title:"Document",field:"entity.metadata.name",highlight:!0,searchable:!0,defaultSort:"asc",customSort:(e,t)=>{let a=c(e.entity).toLocaleLowerCase(),n=c(t.entity).toLocaleLowerCase();return a.localeCompare(n)},render:e=>(0,n.jsx)(l,{value:(0,n.jsx)(s.N_,{to:e.resolved.docsUrl,children:c(e.entity)}),subvalue:e.entity.metadata.description})}),createOwnerColumn:()=>({title:"Owner",field:"resolved.ownedByRelationsTitle",render:({resolved:e})=>(0,n.jsx)(o.i,{entityRefs:e.ownedByRelations,defaultKind:"group"})}),createKindColumn:()=>({title:"Kind",field:"entity.kind"}),createTypeColumn:()=>({title:"Type",field:"entity.spec.type"})},u=[d.createTitleColumn({hidden:!0}),d.createNameColumn(),d.createOwnerColumn(),d.createKindColumn(),d.createTypeColumn()]},25046(e,t,a){a.d(t,{H:()=>s});var n=a(60728),r=a(53320),i=a(43311),l=a(99255);function s(e,t,a,s){return e.map(e=>{let o=(0,r.t)(e,n.vv);return{entity:e,resolved:{docsUrl:t({namespace:(0,l.V)(e.metadata.namespace??"default",a),kind:(0,l.V)(e.kind,a),name:(0,l.V)(e.metadata.name,a)}),ownedByRelations:o,ownedByRelationsTitle:o.map(e=>(0,i.E)(e,{defaultKind:"group"},s).primaryTitle).join(", ")}}})}},47677(e,t,a){a.d(t,{TechDocsIndexPage:()=>x});var n=a(31085),r=a(18690),i=a(15179),l=a(23413),s=a(84391),o=a(59378),c=a(71242),d=a(59302),u=a(53149),p=a(67762),m=a(59821),f=a(59152),h=a(55374);let g=e=>{let{initialFilter:t="owned",columns:a,actions:r,ownerPickerMode:g,pagination:x,options:y,PageWrapper:v,CustomHeader:j}=e,b=v||m.S,A=j||(()=>(0,n.jsx)(i.d,{title:"",children:(0,n.jsx)(l.Y,{children:"Discover documentation in your ecosystem."})}));return(0,n.jsx)(b,{children:(0,n.jsxs)(s.U,{children:[(0,n.jsx)(A,{}),(0,n.jsx)(o.B9,{pagination:x,children:(0,n.jsxs)(c.GI,{children:[(0,n.jsxs)(c.GI.Filters,{children:[(0,n.jsx)(f.Y,{}),(0,n.jsx)(d.y,{initialFilter:t}),(0,n.jsx)(u.t,{mode:g}),(0,n.jsx)(p.m,{})]}),(0,n.jsx)(c.GI.Content,{children:(0,n.jsx)(h.$,{actions:r,columns:a,options:y})})]})})]})})},x=e=>(0,r.useOutlet)()||(0,n.jsx)(g,{...e})},59821(e,t,a){a.d(t,{S:()=>c});var n=a(31085),r=a(70111),i=a(12439);function l(e){let{themeId:t,children:a,...l}=e;return(0,n.jsxs)(i.Y,{themeId:t,children:[(0,n.jsx)(r.Y,{...l}),a]})}var s=a(50509),o=a(19735);let c=e=>{let{children:t,CustomPageWrapper:a}=e,r=(0,s.gf)(o.U),i=`Documentation available in ${r.getOptionalString("organization.name")??"Backstage"}`;return(0,n.jsx)(n.Fragment,{children:a?(0,n.jsx)(a,{children:t}):(0,n.jsx)(l,{title:"Documentation",subtitle:i,themeId:"documentation",children:t})})}},59152(e,t,a){a.d(t,{Y:()=>o});var n=a(14041),r=a(74854),i=a(59378),l=a(78931);class s{getCatalogFilters(){return{[`metadata.annotations.${l.As}`]:r.c}}}let o=()=>{let{updateFilters:e}=(0,i.nK)();return(0,n.useEffect)(()=>{e({techdocs:new s})},[e]),null}},93872(e,t,a){a.d(t,{W:()=>ei});var n=a(31085),r=a(14041),i=a(18690),l=a(12439),s=a(55489),o=a(90479),c=a(63401),d=a(59177),u=a(93285),p=a(42899),m=a(89575),f=a(39850),h=a(57384),g=a(268),x=a(7031),y=r.forwardRef(function(e,t){var a=e.animation,n=void 0===a?"pulse":a,i=e.classes,l=e.className,s=e.component,o=e.height,c=e.variant,d=e.width,u=(0,f.A)(e,["animation","classes","className","component","height","variant","width"]),p=!!u.children;return r.createElement(void 0===s?"span":s,(0,m.A)({ref:t,className:(0,h.A)(i.root,i[void 0===c?"text":c],l,p&&[i.withChildren,!d&&i.fitContent,!o&&i.heightAuto],!1!==n&&i[n])},u,{style:(0,m.A)({width:d,height:o},u.style)}))});let v=(0,x.A)(function(e){return{root:{display:"block",backgroundColor:(0,g.X4)(e.palette.text.primary,"light"===e.palette.type?.11:.13),height:"1.2em"},text:{marginTop:0,marginBottom:0,height:"auto",transformOrigin:"0 60%",transform:"scale(1, 0.60)",borderRadius:e.shape.borderRadius,"&:empty:before":{content:'"\\00a0"'}},rect:{},circle:{borderRadius:"50%"},pulse:{animation:"$pulse 1.5s ease-in-out 0.5s infinite"},"@keyframes pulse":{"0%":{opacity:1},"50%":{opacity:.4},"100%":{opacity:1}},wave:{position:"relative",overflow:"hidden","&::after":{animation:"$wave 1.6s linear 0.5s infinite",background:"linear-gradient(90deg, transparent, ".concat(e.palette.action.hover,", transparent)"),content:'""',position:"absolute",transform:"translateX(-100%)",bottom:0,left:0,right:0,top:0}},"@keyframes wave":{"0%":{transform:"translateX(-100%)"},"60%":{transform:"translateX(100%)"},"100%":{transform:"translateX(100%)"}},withChildren:{"& > *":{visibility:"hidden"}},fitContent:{maxWidth:"fit-content"},heightAuto:{height:"auto"}}},{name:"MuiSkeleton"})(y);var j=a(13660),b=a(10337),A=a(53320),w=a(3438),C=a(53987),S=a(60728),k=a(27231),E=a(70111),I=a(81219),R=a(56005),T=a.n(R),F=a(90898),N=a(59535);let L=(0,n.jsx)(v,{animation:"wave",variant:"text",height:40}),O=e=>{let{children:t}=e,{title:a,subtitle:r,entityRef:i,entityMetadata:l,tabTitle:s,hidden:o,showSourceLink:c,sourceLink:d,addons:m}=(0,N.f)(),f=(0,I.S)(F.rQ)();if(o)return null;let{spec:h}=l||{},g=h?.lifecycle,x=l?(0,A.t)(l,S.vv):[],y=(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(k.S,{label:T()(l?.kind||"entity"),value:(0,n.jsx)(w.z,{color:"inherit",entityRef:i,title:l?.metadata.title,defaultKind:"Component"})}),x.length>0&&(0,n.jsx)(k.S,{label:"Owner",value:(0,n.jsx)(C.i,{color:"inherit",entityRefs:x,defaultKind:"group"})}),g?(0,n.jsx)(k.S,{label:"Lifecycle",value:String(g)}):null,c?(0,n.jsx)(k.S,{label:"",value:(0,n.jsxs)(p.A,{container:!0,direction:"column",alignItems:"center",children:[(0,n.jsx)(p.A,{style:{padding:0},item:!0,children:(0,n.jsx)(j.default,{style:{marginTop:"-25px"}})}),(0,n.jsx)(p.A,{style:{padding:0},item:!0,children:"Source"})]}),url:d}):null]});return(0,n.jsxs)(E.Y,{type:"Documentation",typeLink:f,title:a||L,subtitle:""===r?void 0:r||L,children:[(0,n.jsx)(u.A,{titleTemplate:"%s",children:(0,n.jsx)("title",{children:s})}),y,t,m.renderComponentsByLocation(b.e.Header)]})};var P=a(4518),B=a(90615),U=a(65605),$=a(60691),z=a(91189),M=a(64947),D=a(50509),W=a(76637),K=a(71531),Q=a(16261),V=a(76842),q=a(33947);function _(e){let{children:t,...a}=e,{Progress:i}=(0,z.n)().getComponents(),l=function(e){let{pluginId:t}=e??{},a=(0,D.gf)(W.a),n=(0,D.gf)(K.I),i=(0,r.useMemo)(()=>"BroadcastChannel"in window?new BroadcastChannel(`${t}-auth-cookie-expires-at`):null,[t]),[l,s]=function(e){let[t,a]=(0,r.useState)({status:"not-executed",error:void 0,result:void 0}),n=(0,r.useRef)(),i=(0,r.useRef)(),l=(0,Q.J)({execute(...t){i.current=t;let r=e(...t);return n.current=r,a(e=>({...e,status:"loading"})),r.then(e=>{r===n.current&&a(t=>({...t,status:"success",error:void 0,result:e}))},e=>{r===n.current&&a(t=>({...t,status:"error",error:e}))}),r},reset(){a({status:"not-executed",error:void 0,result:void 0}),n.current=void 0,i.current=void 0}});return[t,(0,r.useMemo)(()=>({reset(){l.current.reset()},execute:(...e)=>l.current.execute(...e)}),[]),{promise:n.current,lastArgs:i.current}]}(async()=>{let e=await n.getBaseUrl(t),r=`${e}/.backstage/auth/v1/cookie`,i=await a.fetch(`${r}`,{credentials:"include"});if(!i.ok){if(404===i.status)return{expiresAt:new Date(Date.now()+31536e6)};throw await q.o.fromResponse(i)}let l=await i.json();if(!l.expiresAt)throw Error("No expiration date found in response");return l});(0,V.u)(s.execute);let o=(0,r.useCallback)(()=>{s.execute()},[s]),c=(0,r.useCallback)(e=>{let t=(1+3*Math.random())*6e4,a=setTimeout(o,Date.parse(e.expiresAt)-Date.now()-t);return()=>clearTimeout(a)},[o]);return((0,r.useEffect)(()=>{if("success"!==l.status||!l.result)return()=>{};i?.postMessage({action:"COOKIE_REFRESH_SUCCESS",payload:l.result});let e=c(l.result),t=t=>{let{action:a,payload:n}=t.data;"COOKIE_REFRESH_SUCCESS"===a&&(e(),e=c(n))};return i?.addEventListener("message",t),()=>{e(),i?.removeEventListener("message",t)}},[l,c,i]),"not-executed"===l.status||"loading"===l.status&&!l.result||"loading"===l.status&&l.error)?{status:"loading"}:"error"===l.status&&l.error?{status:"error",error:l.error,retry:o}:{status:"success",data:l.result}}(a);return"loading"===l.status?(0,n.jsx)(i,{}):"error"===l.status?(0,n.jsx)($.b,{error:l.error,children:(0,n.jsx)(M.A,{variant:"outlined",onClick:l.retry,children:"Retry"})}):(0,n.jsx)(n.Fragment,{children:t})}var H=a(60882),G=a(54917),X=a(41329),Y=a(50868),J=a(73466),Z=a(76272),ee=a(58077),et=a(95269),ea=a(78931);let en=e=>{let{withSearch:t,withHeader:a=!0}=e;return(0,n.jsxs)(l.Y,{themeId:"documentation",children:[a&&(0,n.jsx)(O,{}),(0,n.jsx)(P.Z,{}),(0,n.jsx)(d.p,{withSearch:t})]})},er=(0,H.A)(l.Y)({height:"inherit",overflowY:"visible"}),ei=e=>{let t,a,l,d,u,p,m,f,h=(0,G.A)(),g=(0,r.useMemo)(()=>(0,X.A)({...h,...e.overrideThemeOptions||{}}),[h,e.overrideThemeOptions]),{kind:x,name:y,namespace:v}=(0,B.K)(F.Oc),{children:j,entityRef:b={kind:x,name:y,namespace:v}}=e,A=(0,i.useOutlet)(),w=(0,r.useMemo)(()=>({kind:b.kind,name:b.name,namespace:b.namespace}),[b.kind,b.name,b.namespace]),{shouldShowProgress:C}=(t=(0,D.gf)(Z.v),a=(0,i.useNavigate)(),l=(0,I.S)(F.Oc),d=(0,ee.U2)(w),p=(u=(0,r.useRef)(null)).current!==d,m=(0,J.A)(async()=>{try{let e=await t.getEntityByRef(w);if(e?.metadata?.annotations?.[ea.GO])return(0,et.b1)(e,l)}catch(e){}},[d,t]),(0,r.useEffect)(()=>{!m.loading&&m.value&&a(m.value,{replace:!0}),m.loading||m.value||(u.current=d)},[m.loading,m.value,a,d]),f=p&&m.loading||!!m.value,{loading:m.loading,shouldShowProgress:f}),S=(0,r.useMemo)(()=>j?null:(A?r.Children.toArray(A.props.children):[]).flatMap(e=>e?.props?.children??[]).find(e=>!(0,U.E)(e,o.AF)&&!(0,U.E)(e,o.Wm)),[j,A]);return C?(0,n.jsx)(s.k,{}):j?(0,n.jsx)(Y.A,{theme:g,children:(0,n.jsx)(_,{pluginId:"techdocs",children:(0,n.jsx)(c.R,{entityRef:w,children:({metadata:e,entityMetadata:t,onReady:a})=>(0,n.jsx)(er,{themeId:"documentation",className:"techdocs-reader-page",children:j instanceof Function?j({entityRef:w,techdocsMetadataValue:e.value,entityMetadataValue:t.value,onReady:a}):j})})})}):(0,n.jsx)(Y.A,{theme:g,children:(0,n.jsx)(_,{pluginId:"techdocs",children:(0,n.jsx)(c.R,{entityRef:w,children:S||(0,n.jsx)(en,{})})})})}},59177(e,t,a){let n;a.d(t,{p:()=>D});var r=a(31085),i=a(42899),l=a(58837),s=a(96741),o=a(84391),c=a(55489),d=a(14041),u=a(78467),p=a(62683),m=a(63489),f=a(50509),h=a(19735),g=a(91189),x=a(92829),y=a(29365),v=a(34839),j=a(16249),b=a(64947),A=a(45917),w=a(48240),C=a(89595);let S=(0,a(97386).h)({id:"search-react",messages:{searchBar:{title:"Search",placeholder:"Search in {{org}}",clearButtonTitle:"Clear"},searchFilter:{allOptionTitle:"All"},searchPagination:{limitLabel:"Results per page:",limitText:"of {{num}}"},noResultsDescription:"Sorry, no results were found",searchResultGroup:{linkTitle:"See All",addFilterButtonTitle:"Add filter"},searchResultPager:{previous:"Previous",next:"Next"}}}),k=(0,d.forwardRef)((e,t)=>{let{onChange:a,onKeyDown:n=()=>{},onClear:i=()=>{},onSubmit:l=()=>{},debounceTime:s=200,clearButton:o=!0,fullWidth:c=!0,value:u,label:p,placeholder:x,inputProps:k={},InputProps:E={},endAdornment:I,...R}=e,T=(0,f.gf)(h.U),[F,N]=(0,d.useState)(""),L=(0,d.useRef)(""),{t:O}=(0,C.i)(S);(0,d.useEffect)(()=>{N(e=>e===L.current?String(u):e)},[u,L]),(0,w.A)(()=>{L.current=F,a(F)},s,[F]);let P=(0,d.useCallback)(e=>{N(e.target.value)},[N]),B=(0,d.useCallback)(e=>{n&&n(e),l&&"Enter"===e.key&&l()},[n,l]),U=(0,d.useCallback)(()=>{L.current="",a(""),N(""),i&&i()},[a,i]),$=p?void 0:O("searchBar.title"),z=x??O("searchBar.placeholder",{org:T.getOptionalString("app.title")||"Backstage"}),M=(0,g.n)().getSystemIcon("search")||A.default,D=(0,r.jsx)(v.A,{position:"start",children:(0,r.jsx)(y.A,{"aria-label":"Query",size:"small",disabled:!0,children:(0,r.jsx)(M,{})})}),W=(0,r.jsx)(v.A,{position:"end",children:(0,r.jsx)(b.A,{"aria-label":O("searchBar.clearButtonTitle"),size:"small",onClick:U,onKeyDown:e=>{"Enter"===e.key&&e.stopPropagation()},children:O("searchBar.clearButtonTitle")})});return(0,r.jsx)(m.Lt,{inheritParentContextIfAvailable:!0,children:(0,r.jsx)(j.A,{id:"search-bar-text-field","data-testid":"search-bar-next",variant:"outlined",margin:"normal",inputRef:t,value:F,label:p,placeholder:z,InputProps:{startAdornment:D,endAdornment:o?W:I,...E},inputProps:{"aria-label":$,...k},fullWidth:c,onChange:P,onKeyDown:B,...R})})}),E=(0,d.forwardRef)((e,t)=>{let{value:a="",onChange:n,...i}=e,{term:l,setTerm:s}=(0,m.SQ)();(0,d.useEffect)(()=>{a&&s(String(a))},[a,s]);let o=(0,d.useCallback)(e=>{n?n(e):s(e)},[n,s]);return(0,r.jsx)(m.Lt,{inheritParentContextIfAvailable:!0,children:(0,r.jsx)(x.Ig,{attributes:{pluginId:"search",extension:"SearchBar"},children:(0,r.jsx)(k,{...i,ref:t,value:l,onChange:o})})})}),I=(0,l.A)(e=>({loading:{right:e.spacing(1),position:"absolute"}})),R=()=>{let e=I();return(0,r.jsx)(u.A,{className:e.loading,"data-testid":"search-autocomplete-progressbar",color:"inherit",size:20})},T=(n=function(e){let{loading:t,value:a,onChange:n=()=>{},options:i=[],getOptionLabel:l=e=>String(e),inputPlaceholder:s,inputDebounceTime:o,freeSolo:c=!0,fullWidth:u=!0,clearOnBlur:f=!1,"data-testid":h="search-autocomplete",...g}=e,{setTerm:x}=(0,m.SQ)(),y=(0,d.useCallback)(e=>e?"string"==typeof e?e:l(e):"",[l]),v=(0,d.useMemo)(()=>y(a),[a,y]),j=(0,d.useCallback)((e,t,a,r)=>{x(y(t)),n(e,t,a,r)},[y,x,n]),b=(0,d.useCallback)(({InputProps:{ref:e,className:a,endAdornment:n},InputLabelProps:i,...l})=>(0,r.jsx)(E,{...l,ref:e,clearButton:!1,value:v,placeholder:s,debounceTime:o,endAdornment:t?(0,r.jsx)(R,{}):n,InputProps:{className:a}}),[t,v,s,o]);return(0,r.jsx)(p.Ay,{...g,"data-testid":h,value:a,onChange:j,options:i,getOptionLabel:l,renderInput:b,freeSolo:c,fullWidth:u,clearOnBlur:f})},e=>(0,r.jsx)(m.Lt,{inheritParentContextIfAvailable:!0,children:(0,r.jsx)(n,{...e})}));var F=a(18690),N=a(26761),L=a(36985);let O=e=>{let{entityId:t,entityTitle:a,debounceTime:n=150,searchResultUrlMapper:i}=e,[l,s]=(0,d.useState)(!1),o=(0,F.useNavigate)(),{results:c,term:u,loading:p}=(0,L.F)(t);return(0,r.jsx)(T,{"data-testid":"techdocs-search-bar",size:"small",open:l&&!!u,getOptionLabel:()=>"",filterOptions:e=>e,onClose:()=>{s(!1)},onOpen:()=>{s(!0)},onChange:(e,t)=>{if(t?.document){let{location:e}=t.document;o(i?i(e):e)}},blurOnSelect:!0,noOptionsText:"No results found",value:null,options:c,renderOption:({document:e,highlight:t})=>(0,r.jsx)(N.TechDocsSearchResultListItem,{result:e,lineClamp:3,asListItem:!1,asLink:!1,title:e.title,highlight:t}),loading:p,inputDebounceTime:n,inputPlaceholder:`Search ${a||t.name} docs`,freeSolo:!1})},P=e=>{let t={term:"",types:["techdocs"],pageCursor:"",filters:e.entityId};return(0,r.jsx)(m.Lt,{initialState:t,children:(0,r.jsx)(O,{...e})})};var B=a(3905),U=a(4723),$=a(73455),z=a(31035);let M=(0,l.A)({search:{width:"100%","@media (min-width: 76.1875em)":{width:"calc(100% - 34.4rem)",margin:"0 auto"},"@media print":{display:"none"}}}),D=(0,U.sh)(e=>{let{withSearch:t=!0,searchResultUrlMapper:a}=e,n=M(),{entityRef:l,entityMetadata:d,dom:u,handleAppend:p,isNotFound:m,isDomReady:f,showProgress:h,NotFoundErrorPage:g}=(0,z.t)({defaultPath:e.defaultPath,onReady:e.onReady});return m?(0,r.jsx)(g,{}):f?(0,r.jsx)(o.U,{children:(0,r.jsxs)(i.A,{container:!0,children:[(0,r.jsx)(i.A,{xs:12,item:!0,children:(0,r.jsx)(B.W,{})}),t&&(0,r.jsx)(i.A,{className:n.search,xs:"auto",item:!0,children:(0,r.jsx)(P,{entityId:l,entityTitle:d?.metadata?.title,searchResultUrlMapper:a})}),(0,r.jsxs)(i.A,{xs:12,item:!0,children:[h&&(0,r.jsx)(c.k,{}),(0,r.jsx)(s.eh,{element:u,onAppend:p,children:(0,r.jsx)($.k,{})})]})]})}):(0,r.jsx)(o.U,{children:(0,r.jsx)(i.A,{container:!0,children:(0,r.jsx)(i.A,{xs:12,item:!0,children:(0,r.jsx)(B.W,{})})})})})},26761(e,t,a){a.d(t,{TechDocsSearchResultListItem:()=>u});var n=a(31085),r=a(46423),i=a(5951),l=a(58837),s=a(72501),o=a(60603),c=a(7613);let d=(0,l.A)({flexContainer:{flexWrap:"wrap"},itemText:{width:"100%",marginBottom:"1rem"}}),u=e=>{let{result:t,highlight:a,lineClamp:l=5,asListItem:u=!0,asLink:p=!0,title:m,icon:f}=e,h=d(),g=({children:e})=>p?(0,n.jsx)(o.N_,{noTrack:!0,to:t.location,children:e}):(0,n.jsx)(n.Fragment,{children:e});return(0,n.jsx)(({children:e})=>u?(0,n.jsxs)(n.Fragment,{children:[f&&(0,n.jsx)(r.A,{children:"function"==typeof f?f(t):f}),(0,n.jsx)("div",{className:h.flexContainer,children:e})]}):(0,n.jsx)(n.Fragment,{children:e}),{children:(0,n.jsx)(()=>{let e=a?.fields.title?(0,n.jsx)(c.e,{text:a.fields.title,preTag:a.preTag,postTag:a.postTag}):t.title,r=a?.fields.entityTitle?(0,n.jsx)(c.e,{text:a.fields.entityTitle,preTag:a.preTag,postTag:a.postTag}):t.entityTitle,o=a?.fields.name?(0,n.jsx)(c.e,{text:a.fields.name,preTag:a.preTag,postTag:a.postTag}):t.name;return t?(0,n.jsx)(i.A,{className:h.itemText,primaryTypographyProps:{variant:"h6"},primary:(0,n.jsx)(g,{children:m||(0,n.jsxs)(n.Fragment,{children:[e," | ",r??o," docs"]})}),secondary:(0,n.jsx)(s.A,{component:"span",style:{display:"-webkit-box",WebkitBoxOrient:"vertical",WebkitLineClamp:l,overflow:"hidden"},color:"textSecondary",variant:"body2",children:a?.fields.text?(0,n.jsx)(c.e,{text:a.fields.text,preTag:a.preTag,postTag:a.postTag}):t.text})}):null},{})})}}}]);
|
|
10
|
+
//# sourceMappingURL=8461.0c3f2ac0.chunk.js.map
|