@backstage/plugin-home 0.7.3-next.1 → 0.7.4-next.0
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 +41 -0
- package/alpha/package.json +1 -1
- package/dist/alpha.esm.js +1 -1
- package/dist/alpha.esm.js.map +1 -1
- package/dist/api/VisitsApi.esm.js +11 -0
- package/dist/api/VisitsApi.esm.js.map +1 -0
- package/dist/api/VisitsStorageApi.esm.js +118 -0
- package/dist/api/VisitsStorageApi.esm.js.map +1 -0
- package/dist/api/VisitsWebStorageApi.esm.js +15 -0
- package/dist/api/VisitsWebStorageApi.esm.js.map +1 -0
- package/dist/api/config.esm.js +37 -0
- package/dist/api/config.esm.js.map +1 -0
- package/dist/assets/TemplateBackstageLogo.esm.js +22 -0
- package/dist/assets/TemplateBackstageLogo.esm.js.map +1 -0
- package/dist/assets/TemplateBackstageLogoIcon.esm.js +33 -0
- package/dist/assets/TemplateBackstageLogoIcon.esm.js.map +1 -0
- package/dist/{esm/index-BNfZuEhy.esm.js → componentRenderers/ComponentAccordion.esm.js} +2 -26
- package/dist/componentRenderers/ComponentAccordion.esm.js.map +1 -0
- package/dist/componentRenderers/ComponentTabs/ComponentTab.esm.js +9 -0
- package/dist/componentRenderers/ComponentTabs/ComponentTab.esm.js.map +1 -0
- package/dist/componentRenderers/ComponentTabs/ComponentTabs.esm.js +23 -0
- package/dist/componentRenderers/ComponentTabs/ComponentTabs.esm.js.map +1 -0
- package/dist/componentRenderers/index.esm.js +4 -0
- package/dist/componentRenderers/index.esm.js.map +1 -0
- package/dist/components/CustomHomepage/AddWidgetDialog.esm.js +45 -0
- package/dist/components/CustomHomepage/AddWidgetDialog.esm.js.map +1 -0
- package/dist/components/CustomHomepage/CustomHomepageButtons.esm.js +90 -0
- package/dist/components/CustomHomepage/CustomHomepageButtons.esm.js.map +1 -0
- package/dist/components/CustomHomepage/CustomHomepageGrid.esm.js +319 -0
- package/dist/components/CustomHomepage/CustomHomepageGrid.esm.js.map +1 -0
- package/dist/components/CustomHomepage/WidgetSettingsOverlay.esm.js +88 -0
- package/dist/components/CustomHomepage/WidgetSettingsOverlay.esm.js.map +1 -0
- package/dist/components/CustomHomepage/types.esm.js +48 -0
- package/dist/components/CustomHomepage/types.esm.js.map +1 -0
- package/dist/components/HomepageCompositionRoot.esm.js +12 -0
- package/dist/components/HomepageCompositionRoot.esm.js.map +1 -0
- package/dist/components/StarredEntityListItem/StarredEntityListItem.esm.js +31 -0
- package/dist/components/StarredEntityListItem/StarredEntityListItem.esm.js.map +1 -0
- package/dist/components/VisitList/ItemCategory.esm.js +63 -0
- package/dist/components/VisitList/ItemCategory.esm.js.map +1 -0
- package/dist/components/VisitList/ItemDetail.esm.js +26 -0
- package/dist/components/VisitList/ItemDetail.esm.js.map +1 -0
- package/dist/components/VisitList/ItemName.esm.js +27 -0
- package/dist/components/VisitList/ItemName.esm.js.map +1 -0
- package/dist/components/VisitList/VisitList.esm.js +46 -0
- package/dist/components/VisitList/VisitList.esm.js.map +1 -0
- package/dist/components/VisitList/VisitListEmpty.esm.js +7 -0
- package/dist/components/VisitList/VisitListEmpty.esm.js.map +1 -0
- package/dist/components/VisitList/VisitListFew.esm.js +7 -0
- package/dist/components/VisitList/VisitListFew.esm.js.map +1 -0
- package/dist/components/VisitList/VisitListItem.esm.js +31 -0
- package/dist/components/VisitList/VisitListItem.esm.js.map +1 -0
- package/dist/components/VisitList/VisitListSkeleton.esm.js +39 -0
- package/dist/components/VisitList/VisitListSkeleton.esm.js.map +1 -0
- package/dist/components/VisitListener.esm.js +62 -0
- package/dist/components/VisitListener.esm.js.map +1 -0
- package/dist/components/index.esm.js +4 -0
- package/dist/components/index.esm.js.map +1 -0
- package/dist/deprecated.esm.js +7 -0
- package/dist/deprecated.esm.js.map +1 -0
- package/dist/{esm/index-FqRX6ImF.esm.js → homePageComponents/CompanyLogo/CompanyLogo.esm.js} +1 -1
- package/dist/{esm/index-FqRX6ImF.esm.js.map → homePageComponents/CompanyLogo/CompanyLogo.esm.js.map} +1 -1
- package/dist/homePageComponents/CompanyLogo/index.esm.js +2 -0
- package/dist/homePageComponents/CompanyLogo/index.esm.js.map +1 -0
- package/dist/{esm/index-D7JTE1IL.esm.js → homePageComponents/FeaturedDocsCard/Content.esm.js} +1 -1
- package/dist/homePageComponents/FeaturedDocsCard/Content.esm.js.map +1 -0
- package/dist/homePageComponents/FeaturedDocsCard/index.esm.js +2 -0
- package/dist/homePageComponents/FeaturedDocsCard/index.esm.js.map +1 -0
- package/dist/{esm/index-BvvJGS3L.esm.js → homePageComponents/HeaderWorldClock/HeaderWorldClock.esm.js} +1 -1
- package/dist/homePageComponents/HeaderWorldClock/HeaderWorldClock.esm.js.map +1 -0
- package/dist/homePageComponents/HeaderWorldClock/index.esm.js +2 -0
- package/dist/homePageComponents/HeaderWorldClock/index.esm.js.map +1 -0
- package/dist/homePageComponents/RandomJoke/Actions.esm.js +11 -0
- package/dist/homePageComponents/RandomJoke/Actions.esm.js.map +1 -0
- package/dist/homePageComponents/RandomJoke/Content.esm.js +13 -0
- package/dist/homePageComponents/RandomJoke/Content.esm.js.map +1 -0
- package/dist/homePageComponents/RandomJoke/Context.esm.js +48 -0
- package/dist/homePageComponents/RandomJoke/Context.esm.js.map +1 -0
- package/dist/homePageComponents/RandomJoke/Settings.esm.js +33 -0
- package/dist/homePageComponents/RandomJoke/Settings.esm.js.map +1 -0
- package/dist/homePageComponents/RandomJoke/index.esm.js +5 -0
- package/dist/homePageComponents/RandomJoke/index.esm.js.map +1 -0
- package/dist/{esm/index-SfHoDIi1.esm.js → homePageComponents/StarredEntities/Content.esm.js} +4 -27
- package/dist/homePageComponents/StarredEntities/Content.esm.js.map +1 -0
- package/dist/homePageComponents/StarredEntities/index.esm.js +2 -0
- package/dist/homePageComponents/StarredEntities/index.esm.js.map +1 -0
- package/dist/{esm/index-CeXFfTX2.esm.js → homePageComponents/Toolkit/Content.esm.js} +4 -17
- package/dist/homePageComponents/Toolkit/Content.esm.js.map +1 -0
- package/dist/homePageComponents/Toolkit/Context.esm.js +18 -0
- package/dist/homePageComponents/Toolkit/Context.esm.js.map +1 -0
- package/dist/homePageComponents/Toolkit/index.esm.js +3 -0
- package/dist/homePageComponents/Toolkit/index.esm.js.map +1 -0
- package/dist/homePageComponents/VisitedByType/Actions.esm.js +18 -0
- package/dist/homePageComponents/VisitedByType/Actions.esm.js.map +1 -0
- package/dist/homePageComponents/VisitedByType/Content.esm.js +68 -0
- package/dist/homePageComponents/VisitedByType/Content.esm.js.map +1 -0
- package/dist/homePageComponents/VisitedByType/Context.esm.js +77 -0
- package/dist/homePageComponents/VisitedByType/Context.esm.js.map +1 -0
- package/dist/homePageComponents/VisitedByType/RecentlyVisited.esm.js +9 -0
- package/dist/homePageComponents/VisitedByType/RecentlyVisited.esm.js.map +1 -0
- package/dist/homePageComponents/VisitedByType/TopVisited.esm.js +9 -0
- package/dist/homePageComponents/VisitedByType/TopVisited.esm.js.map +1 -0
- package/dist/homePageComponents/VisitedByType/VisitedByType.esm.js +21 -0
- package/dist/homePageComponents/VisitedByType/VisitedByType.esm.js.map +1 -0
- package/dist/homePageComponents/WelcomeTitle/WelcomeTitle.esm.js +27 -0
- package/dist/homePageComponents/WelcomeTitle/WelcomeTitle.esm.js.map +1 -0
- package/dist/homePageComponents/WelcomeTitle/index.esm.js +2 -0
- package/dist/homePageComponents/WelcomeTitle/index.esm.js.map +1 -0
- package/dist/homePageComponents/WelcomeTitle/locales/goodAfternoon.locales.json.esm.js +256 -0
- package/dist/homePageComponents/WelcomeTitle/locales/goodAfternoon.locales.json.esm.js.map +1 -0
- package/dist/homePageComponents/WelcomeTitle/locales/goodEvening.locales.json.esm.js +196 -0
- package/dist/homePageComponents/WelcomeTitle/locales/goodEvening.locales.json.esm.js.map +1 -0
- package/dist/homePageComponents/WelcomeTitle/locales/goodMorning.locales.json.esm.js +131 -0
- package/dist/homePageComponents/WelcomeTitle/locales/goodMorning.locales.json.esm.js.map +1 -0
- package/dist/homePageComponents/WelcomeTitle/timeUtil.esm.js +41 -0
- package/dist/homePageComponents/WelcomeTitle/timeUtil.esm.js.map +1 -0
- package/dist/index.esm.js +10 -352
- package/dist/index.esm.js.map +1 -1
- package/dist/plugin.esm.js +144 -0
- package/dist/plugin.esm.js.map +1 -0
- package/dist/routes.esm.js +8 -0
- package/dist/routes.esm.js.map +1 -0
- package/package.json +20 -20
- package/dist/esm/Content-Quo42yad.esm.js +0 -396
- package/dist/esm/Content-Quo42yad.esm.js.map +0 -1
- package/dist/esm/RecentlyVisited-qOUgoCVu.esm.js +0 -48
- package/dist/esm/RecentlyVisited-qOUgoCVu.esm.js.map +0 -1
- package/dist/esm/TopVisited-B_KhSJit.esm.js +0 -48
- package/dist/esm/TopVisited-B_KhSJit.esm.js.map +0 -1
- package/dist/esm/VisitListener-dDLtFiIW.esm.js +0 -627
- package/dist/esm/VisitListener-dDLtFiIW.esm.js.map +0 -1
- package/dist/esm/index-BMySa_Iw.esm.js +0 -638
- package/dist/esm/index-BMySa_Iw.esm.js.map +0 -1
- package/dist/esm/index-BNfZuEhy.esm.js.map +0 -1
- package/dist/esm/index-BvvJGS3L.esm.js.map +0 -1
- package/dist/esm/index-Bzg5mDMo.esm.js +0 -45
- package/dist/esm/index-Bzg5mDMo.esm.js.map +0 -1
- package/dist/esm/index-CeXFfTX2.esm.js.map +0 -1
- package/dist/esm/index-D7JTE1IL.esm.js.map +0 -1
- package/dist/esm/index-Dg9lslkf.esm.js +0 -90
- package/dist/esm/index-Dg9lslkf.esm.js.map +0 -1
- package/dist/esm/index-SfHoDIi1.esm.js.map +0 -1
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { useOutlet } from 'react-router-dom';
|
|
3
|
-
export { C as CustomHomepageGrid, V as VisitListener } from './VisitListener-dDLtFiIW.esm.js';
|
|
4
|
-
import 'react-grid-layout';
|
|
5
|
-
import '@backstage/core-plugin-api';
|
|
6
|
-
import 'react-grid-layout/css/styles.css';
|
|
7
|
-
import 'react-resizable/css/styles.css';
|
|
8
|
-
import '@material-ui/core/Dialog';
|
|
9
|
-
import '@material-ui/core/styles';
|
|
10
|
-
import 'lodash';
|
|
11
|
-
import 'react-use/esm/useObservable';
|
|
12
|
-
import '@backstage/core-components';
|
|
13
|
-
import '@material-ui/core/Typography';
|
|
14
|
-
import '@material-ui/core/DialogContent';
|
|
15
|
-
import '@material-ui/core/Grid';
|
|
16
|
-
import '@material-ui/core/Tooltip';
|
|
17
|
-
import '@material-ui/core/IconButton';
|
|
18
|
-
import '@material-ui/icons/Settings';
|
|
19
|
-
import '@material-ui/icons/Delete';
|
|
20
|
-
import '@rjsf/core';
|
|
21
|
-
import '@rjsf/material-ui';
|
|
22
|
-
import '@rjsf/validator-ajv8';
|
|
23
|
-
import '@material-ui/core/List';
|
|
24
|
-
import '@material-ui/core/ListItem';
|
|
25
|
-
import '@material-ui/core/DialogTitle';
|
|
26
|
-
import '@material-ui/core/ListItemAvatar';
|
|
27
|
-
import '@material-ui/icons/Add';
|
|
28
|
-
import '@material-ui/core/ListItemText';
|
|
29
|
-
import '@material-ui/core/Button';
|
|
30
|
-
import '@material-ui/icons/Save';
|
|
31
|
-
import '@material-ui/icons/Edit';
|
|
32
|
-
import '@material-ui/icons/Cancel';
|
|
33
|
-
import 'zod';
|
|
34
|
-
import '@backstage/core-app-api';
|
|
35
|
-
import '@backstage/catalog-model';
|
|
36
|
-
|
|
37
|
-
const HomepageCompositionRoot = (props) => {
|
|
38
|
-
var _a;
|
|
39
|
-
const outlet = useOutlet();
|
|
40
|
-
const children = (_a = props.children) != null ? _a : outlet;
|
|
41
|
-
return /* @__PURE__ */ React.createElement(React.Fragment, null, children);
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
export { HomepageCompositionRoot };
|
|
45
|
-
//# sourceMappingURL=index-Bzg5mDMo.esm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-Bzg5mDMo.esm.js","sources":["../../src/components/HomepageCompositionRoot.tsx"],"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 */\n\nimport React, { ReactNode } from 'react';\nimport { useOutlet } from 'react-router-dom';\n\nexport const HomepageCompositionRoot = (props: {\n title?: string;\n children?: ReactNode;\n}) => {\n const outlet = useOutlet();\n const children = props.children ?? outlet;\n return <>{children}</>;\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmBa,MAAA,uBAAA,GAA0B,CAAC,KAGlC,KAAA;AAtBN,EAAA,IAAA,EAAA,CAAA;AAuBE,EAAA,MAAM,SAAS,SAAU,EAAA,CAAA;AACzB,EAAM,MAAA,QAAA,GAAA,CAAW,EAAM,GAAA,KAAA,CAAA,QAAA,KAAN,IAAkB,GAAA,EAAA,GAAA,MAAA,CAAA;AACnC,EAAA,iEAAU,QAAS,CAAA,CAAA;AACrB;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-CeXFfTX2.esm.js","sources":["../../src/homePageComponents/Toolkit/Context.tsx","../../src/homePageComponents/Toolkit/Content.tsx"],"sourcesContent":["/*\n * Copyright 2022 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 React, { createContext } from 'react';\n\n/** @public */\nexport type Tool = {\n label: string;\n url: string;\n icon: React.ReactNode;\n};\n\ntype ToolkitContextValue = {\n tools: Tool[];\n};\n\nconst Context = createContext<ToolkitContextValue | undefined>(undefined);\n\nexport const ContextProvider = (props: {\n children: JSX.Element;\n tools: Tool[];\n}) => {\n const { children, tools } = props;\n\n const [toolsValue, _setTools] = React.useState(tools);\n\n const value: ToolkitContextValue = {\n tools: toolsValue,\n };\n\n return <Context.Provider value={value}>{children}</Context.Provider>;\n};\n\nexport const useToolkit = () => {\n const value = React.useContext(Context);\n return value;\n};\n\nexport default Context;\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 { Link } from '@backstage/core-components';\nimport List from '@material-ui/core/List';\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport { makeStyles } from '@material-ui/core/styles';\nimport React from 'react';\nimport { useToolkit, Tool } from './Context';\n\nconst useStyles = makeStyles(theme => ({\n toolkit: {\n display: 'flex',\n flexWrap: 'wrap',\n textAlign: 'center',\n },\n tool: {\n margin: theme.spacing(0.5, 1),\n },\n label: {\n marginTop: theme.spacing(1),\n width: '72px',\n fontSize: '0.9em',\n lineHeight: '1.25',\n overflowWrap: 'break-word',\n color: theme.palette.text.secondary,\n },\n icon: {\n width: '64px',\n height: '64px',\n borderRadius: '50px',\n justifyContent: 'center',\n alignItems: 'center',\n boxShadow: theme.shadows[1],\n backgroundColor: theme.palette.background.default,\n },\n}));\n\n/**\n * A component to display a list of tools for the user.\n *\n * @public\n */\nexport const Content = (props: ToolkitContentProps) => {\n const classes = useStyles();\n const toolkit = useToolkit();\n const tools = toolkit?.tools ?? props.tools;\n\n return (\n <List className={classes.toolkit}>\n {tools.map((tool: Tool) => (\n <Link key={tool.url} to={tool.url} className={classes.tool}>\n <ListItemIcon className={classes.icon}>{tool.icon}</ListItemIcon>\n <ListItemText\n secondaryTypographyProps={{ className: classes.label }}\n secondary={tool.label}\n />\n </Link>\n ))}\n </List>\n );\n};\n\n/**\n * Props for Toolkit Content component.\n *\n * @public\n */\nexport type ToolkitContentProps = {\n tools: Tool[];\n};\n"],"names":[],"mappings":";;;;;;;AA6BA,MAAM,OAAA,GAAU,cAA+C,KAAS,CAAA,CAAA,CAAA;AAE3D,MAAA,eAAA,GAAkB,CAAC,KAG1B,KAAA;AACJ,EAAM,MAAA,EAAE,QAAU,EAAA,KAAA,EAAU,GAAA,KAAA,CAAA;AAE5B,EAAA,MAAM,CAAC,UAAY,EAAA,SAAS,CAAI,GAAA,KAAA,CAAM,SAAS,KAAK,CAAA,CAAA;AAEpD,EAAA,MAAM,KAA6B,GAAA;AAAA,IACjC,KAAO,EAAA,UAAA;AAAA,GACT,CAAA;AAEA,EAAA,uBAAQ,KAAA,CAAA,aAAA,CAAA,OAAA,CAAQ,QAAR,EAAA,EAAiB,SAAe,QAAS,CAAA,CAAA;AACnD,EAAA;AAEO,MAAM,aAAa,MAAM;AAC9B,EAAM,MAAA,KAAA,GAAQ,KAAM,CAAA,UAAA,CAAW,OAAO,CAAA,CAAA;AACtC,EAAO,OAAA,KAAA,CAAA;AACT,CAAA;;ACzBA,MAAM,SAAA,GAAY,WAAW,CAAU,KAAA,MAAA;AAAA,EACrC,OAAS,EAAA;AAAA,IACP,OAAS,EAAA,MAAA;AAAA,IACT,QAAU,EAAA,MAAA;AAAA,IACV,SAAW,EAAA,QAAA;AAAA,GACb;AAAA,EACA,IAAM,EAAA;AAAA,IACJ,MAAQ,EAAA,KAAA,CAAM,OAAQ,CAAA,GAAA,EAAK,CAAC,CAAA;AAAA,GAC9B;AAAA,EACA,KAAO,EAAA;AAAA,IACL,SAAA,EAAW,KAAM,CAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,IAC1B,KAAO,EAAA,MAAA;AAAA,IACP,QAAU,EAAA,OAAA;AAAA,IACV,UAAY,EAAA,MAAA;AAAA,IACZ,YAAc,EAAA,YAAA;AAAA,IACd,KAAA,EAAO,KAAM,CAAA,OAAA,CAAQ,IAAK,CAAA,SAAA;AAAA,GAC5B;AAAA,EACA,IAAM,EAAA;AAAA,IACJ,KAAO,EAAA,MAAA;AAAA,IACP,MAAQ,EAAA,MAAA;AAAA,IACR,YAAc,EAAA,MAAA;AAAA,IACd,cAAgB,EAAA,QAAA;AAAA,IAChB,UAAY,EAAA,QAAA;AAAA,IACZ,SAAA,EAAW,KAAM,CAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,IAC1B,eAAA,EAAiB,KAAM,CAAA,OAAA,CAAQ,UAAW,CAAA,OAAA;AAAA,GAC5C;AACF,CAAE,CAAA,CAAA,CAAA;AAOW,MAAA,OAAA,GAAU,CAAC,KAA+B,KAAA;AAzDvD,EAAA,IAAA,EAAA,CAAA;AA0DE,EAAA,MAAM,UAAU,SAAU,EAAA,CAAA;AAC1B,EAAA,MAAM,UAAU,UAAW,EAAA,CAAA;AAC3B,EAAA,MAAM,KAAQ,GAAA,CAAA,EAAA,GAAA,OAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,OAAA,CAAS,KAAT,KAAA,IAAA,GAAA,EAAA,GAAkB,KAAM,CAAA,KAAA,CAAA;AAEtC,EACE,uBAAA,KAAA,CAAA,aAAA,CAAC,IAAK,EAAA,EAAA,SAAA,EAAW,OAAQ,CAAA,OAAA,EAAA,EACtB,KAAM,CAAA,GAAA,CAAI,CAAC,IAAA,qBACT,KAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAK,GAAK,EAAA,IAAA,CAAK,GAAK,EAAA,EAAA,EAAI,IAAK,CAAA,GAAA,EAAK,SAAW,EAAA,OAAA,CAAQ,IACpD,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,YAAa,EAAA,EAAA,SAAA,EAAW,OAAQ,CAAA,IAAA,EAAA,EAAO,IAAK,CAAA,IAAK,CAClD,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,YAAA;AAAA,IAAA;AAAA,MACC,wBAA0B,EAAA,EAAE,SAAW,EAAA,OAAA,CAAQ,KAAM,EAAA;AAAA,MACrD,WAAW,IAAK,CAAA,KAAA;AAAA,KAAA;AAAA,GAEpB,CACD,CACH,CAAA,CAAA;AAEJ;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-D7JTE1IL.esm.js","sources":["../../src/homePageComponents/FeaturedDocsCard/Content.tsx"],"sourcesContent":["/*\n * Copyright 2022 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 React from 'react';\nimport useAsync from 'react-use/esm/useAsync';\nimport {\n LinkButton,\n EmptyState,\n Link,\n Progress,\n ErrorPanel,\n} from '@backstage/core-components';\nimport {\n catalogApiRef,\n CatalogApi,\n EntityDisplayName,\n} from '@backstage/plugin-catalog-react';\nimport { useApi } from '@backstage/core-plugin-api';\nimport { EntityFilterQuery } from '@backstage/catalog-client';\n\nimport Typography from '@material-ui/core/Typography';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { stringifyEntityRef } from '@backstage/catalog-model';\n\n/**\n * Props customizing the <FeaturedDocsCard/> component.\n *\n * @public\n */\nexport type FeaturedDocsCardProps = {\n /** The entity filter used to display only the intended item/s */\n filter: EntityFilterQuery;\n /** An optional ReactNode for empty states */\n emptyState?: React.JSX.Element;\n /** An optional linkDestination to set for the Featured Doc */\n linkDestination?: string;\n /** An optional limit to set for link destination */\n responseLimit?: number;\n /** An optional string to customize sublink text */\n subLinkText?: string;\n};\n\nconst useStyles = makeStyles(\n theme => ({\n docDescription: {\n fontSize: theme.typography.body1.fontSize,\n fontWeight: theme.typography.body1.fontWeight,\n marginBottom: theme.spacing(2),\n marginTop: theme.spacing(2),\n },\n docSubLink: {\n fontSize: theme.typography.subtitle1.fontSize,\n fontWeight: theme.typography.subtitle1.fontWeight,\n lineHeight: theme.typography.subtitle1.lineHeight,\n },\n docsTitleLink: {\n fontSize: theme.typography.h6.fontSize,\n fontWeight: theme.typography.h6.fontWeight,\n lineHeight: theme.typography.h6.lineHeight,\n },\n }),\n { name: 'HomeFeaturedDocsCard' },\n);\n\n/**\n * A component to display specific Featured Docs.\n *\n * @public\n */\nexport const Content = (props: FeaturedDocsCardProps): JSX.Element => {\n const { emptyState, filter, linkDestination, responseLimit, subLinkText } =\n props;\n const linkText = subLinkText || 'LEARN MORE';\n const styles = useStyles();\n const catalogApi: CatalogApi = useApi(catalogApiRef);\n const {\n value: entities,\n loading,\n error,\n } = useAsync(async () => {\n const response = await catalogApi.getEntities({\n filter: filter,\n limit: responseLimit || 10,\n });\n return response.items;\n });\n\n if (loading) {\n return <Progress />;\n }\n if (error) {\n return <ErrorPanel error={error} />;\n }\n\n return entities?.length ? (\n <>\n {entities.map(d => (\n <div\n key={`${d.metadata.name}-${d.kind}-${d.metadata.namespace}`}\n data-testid=\"docs-card-content\"\n >\n <Link\n className={styles.docsTitleLink}\n data-testid=\"docs-card-title\"\n to={\n linkDestination ||\n `/docs/${d.metadata.namespace || 'default'}/${d.kind}/${\n d.metadata.name\n }/`\n }\n >\n <EntityDisplayName entityRef={stringifyEntityRef(d)} />\n </Link>\n {d.metadata.description && (\n <Typography className={styles.docDescription}>\n {d.metadata.description}\n </Typography>\n )}\n <Link\n className={styles.docSubLink}\n data-testid=\"docs-card-sub-link\"\n to={\n linkDestination ||\n `/docs/${d.metadata.namespace || 'default'}/${d.kind}/${\n d.metadata.name\n }/`\n }\n >\n {linkText}\n </Link>\n </div>\n ))}\n </>\n ) : (\n emptyState || (\n <EmptyState\n missing=\"data\"\n title=\"No documents to show\"\n description=\"Create your own document. Check out our Getting Started Information\"\n action={\n <LinkButton\n to=\"https://backstage.io/docs/features/techdocs/getting-started\"\n variant=\"contained\"\n >\n DOCS\n </LinkButton>\n }\n />\n )\n );\n};\n"],"names":[],"mappings":";;;;;;;;;AAuDA,MAAM,SAAY,GAAA,UAAA;AAAA,EAChB,CAAU,KAAA,MAAA;AAAA,IACR,cAAgB,EAAA;AAAA,MACd,QAAA,EAAU,KAAM,CAAA,UAAA,CAAW,KAAM,CAAA,QAAA;AAAA,MACjC,UAAA,EAAY,KAAM,CAAA,UAAA,CAAW,KAAM,CAAA,UAAA;AAAA,MACnC,YAAA,EAAc,KAAM,CAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,MAC7B,SAAA,EAAW,KAAM,CAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,KAC5B;AAAA,IACA,UAAY,EAAA;AAAA,MACV,QAAA,EAAU,KAAM,CAAA,UAAA,CAAW,SAAU,CAAA,QAAA;AAAA,MACrC,UAAA,EAAY,KAAM,CAAA,UAAA,CAAW,SAAU,CAAA,UAAA;AAAA,MACvC,UAAA,EAAY,KAAM,CAAA,UAAA,CAAW,SAAU,CAAA,UAAA;AAAA,KACzC;AAAA,IACA,aAAe,EAAA;AAAA,MACb,QAAA,EAAU,KAAM,CAAA,UAAA,CAAW,EAAG,CAAA,QAAA;AAAA,MAC9B,UAAA,EAAY,KAAM,CAAA,UAAA,CAAW,EAAG,CAAA,UAAA;AAAA,MAChC,UAAA,EAAY,KAAM,CAAA,UAAA,CAAW,EAAG,CAAA,UAAA;AAAA,KAClC;AAAA,GACF,CAAA;AAAA,EACA,EAAE,MAAM,sBAAuB,EAAA;AACjC,CAAA,CAAA;AAOa,MAAA,OAAA,GAAU,CAAC,KAA8C,KAAA;AACpE,EAAA,MAAM,EAAE,UAAY,EAAA,MAAA,EAAQ,eAAiB,EAAA,aAAA,EAAe,aAC1D,GAAA,KAAA,CAAA;AACF,EAAA,MAAM,WAAW,WAAe,IAAA,YAAA,CAAA;AAChC,EAAA,MAAM,SAAS,SAAU,EAAA,CAAA;AACzB,EAAM,MAAA,UAAA,GAAyB,OAAO,aAAa,CAAA,CAAA;AACnD,EAAM,MAAA;AAAA,IACJ,KAAO,EAAA,QAAA;AAAA,IACP,OAAA;AAAA,IACA,KAAA;AAAA,GACF,GAAI,SAAS,YAAY;AACvB,IAAM,MAAA,QAAA,GAAW,MAAM,UAAA,CAAW,WAAY,CAAA;AAAA,MAC5C,MAAA;AAAA,MACA,OAAO,aAAiB,IAAA,EAAA;AAAA,KACzB,CAAA,CAAA;AACD,IAAA,OAAO,QAAS,CAAA,KAAA,CAAA;AAAA,GACjB,CAAA,CAAA;AAED,EAAA,IAAI,OAAS,EAAA;AACX,IAAA,2CAAQ,QAAS,EAAA,IAAA,CAAA,CAAA;AAAA,GACnB;AACA,EAAA,IAAI,KAAO,EAAA;AACT,IAAO,uBAAA,KAAA,CAAA,aAAA,CAAC,cAAW,KAAc,EAAA,CAAA,CAAA;AAAA,GACnC;AAEA,EAAA,OAAA,CAAO,QAAU,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAA,MAAA,oBAEZ,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,EAAA,QAAA,CAAS,IAAI,CACZ,CAAA,qBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,CAAG,EAAA,CAAA,CAAE,QAAS,CAAA,IAAI,CAAI,CAAA,EAAA,CAAA,CAAE,IAAI,CAAA,CAAA,EAAI,CAAE,CAAA,QAAA,CAAS,SAAS,CAAA,CAAA;AAAA,MACzD,aAAY,EAAA,mBAAA;AAAA,KAAA;AAAA,oBAEZ,KAAA,CAAA,aAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,WAAW,MAAO,CAAA,aAAA;AAAA,QAClB,aAAY,EAAA,iBAAA;AAAA,QACZ,EACE,EAAA,eAAA,IACA,CAAS,MAAA,EAAA,CAAA,CAAE,QAAS,CAAA,SAAA,IAAa,SAAS,CAAA,CAAA,EAAI,CAAE,CAAA,IAAI,CAClD,CAAA,EAAA,CAAA,CAAE,SAAS,IACb,CAAA,CAAA,CAAA;AAAA,OAAA;AAAA,sBAGD,KAAA,CAAA,aAAA,CAAA,iBAAA,EAAA,EAAkB,SAAW,EAAA,kBAAA,CAAmB,CAAC,CAAG,EAAA,CAAA;AAAA,KACvD;AAAA,IACC,CAAA,CAAE,QAAS,CAAA,WAAA,oBACT,KAAA,CAAA,aAAA,CAAA,UAAA,EAAA,EAAW,WAAW,MAAO,CAAA,cAAA,EAAA,EAC3B,CAAE,CAAA,QAAA,CAAS,WACd,CAAA;AAAA,oBAEF,KAAA,CAAA,aAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,WAAW,MAAO,CAAA,UAAA;AAAA,QAClB,aAAY,EAAA,oBAAA;AAAA,QACZ,EACE,EAAA,eAAA,IACA,CAAS,MAAA,EAAA,CAAA,CAAE,QAAS,CAAA,SAAA,IAAa,SAAS,CAAA,CAAA,EAAI,CAAE,CAAA,IAAI,CAClD,CAAA,EAAA,CAAA,CAAE,SAAS,IACb,CAAA,CAAA,CAAA;AAAA,OAAA;AAAA,MAGD,QAAA;AAAA,KACH;AAAA,GAEH,CACH,CAAA,GAEA,UACE,oBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,OAAQ,EAAA,MAAA;AAAA,MACR,KAAM,EAAA,sBAAA;AAAA,MACN,WAAY,EAAA,qEAAA;AAAA,MACZ,MACE,kBAAA,KAAA,CAAA,aAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UACC,EAAG,EAAA,6DAAA;AAAA,UACH,OAAQ,EAAA,WAAA;AAAA,SAAA;AAAA,QACT,MAAA;AAAA,OAED;AAAA,KAAA;AAAA,GAEJ,CAAA;AAGN;;;;"}
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import React, { createContext } from 'react';
|
|
2
|
-
import Button from '@material-ui/core/Button';
|
|
3
|
-
import Typography from '@material-ui/core/Typography';
|
|
4
|
-
import FormControl from '@material-ui/core/FormControl';
|
|
5
|
-
import FormLabel from '@material-ui/core/FormLabel';
|
|
6
|
-
import RadioGroup from '@material-ui/core/RadioGroup';
|
|
7
|
-
import FormControlLabel from '@material-ui/core/FormControlLabel';
|
|
8
|
-
import Radio from '@material-ui/core/Radio';
|
|
9
|
-
import upperFirst from 'lodash/upperFirst';
|
|
10
|
-
|
|
11
|
-
const Context = createContext(void 0);
|
|
12
|
-
const getNewJoke = (type) => fetch(
|
|
13
|
-
`https://official-joke-api.appspot.com/jokes${type !== "any" ? `/${type}` : ""}/random`
|
|
14
|
-
).then((res) => res.json()).then((data) => Array.isArray(data) ? data[0] : data);
|
|
15
|
-
const ContextProvider = (props) => {
|
|
16
|
-
const { children, defaultCategory } = props;
|
|
17
|
-
const [loading, setLoading] = React.useState(true);
|
|
18
|
-
const [joke, setJoke] = React.useState({
|
|
19
|
-
setup: "",
|
|
20
|
-
punchline: ""
|
|
21
|
-
});
|
|
22
|
-
const [type, setType] = React.useState(
|
|
23
|
-
defaultCategory || "programming"
|
|
24
|
-
);
|
|
25
|
-
const rerollJoke = React.useCallback(() => {
|
|
26
|
-
setLoading(true);
|
|
27
|
-
getNewJoke(type).then((newJoke) => setJoke(newJoke));
|
|
28
|
-
}, [type]);
|
|
29
|
-
const handleChangeType = (newType) => {
|
|
30
|
-
setType(newType);
|
|
31
|
-
};
|
|
32
|
-
React.useEffect(() => {
|
|
33
|
-
setLoading(false);
|
|
34
|
-
}, [joke]);
|
|
35
|
-
React.useEffect(() => {
|
|
36
|
-
rerollJoke();
|
|
37
|
-
}, [rerollJoke]);
|
|
38
|
-
const value = {
|
|
39
|
-
loading,
|
|
40
|
-
joke,
|
|
41
|
-
type,
|
|
42
|
-
rerollJoke,
|
|
43
|
-
handleChangeType
|
|
44
|
-
};
|
|
45
|
-
return /* @__PURE__ */ React.createElement(Context.Provider, { value }, children);
|
|
46
|
-
};
|
|
47
|
-
const useRandomJoke = () => {
|
|
48
|
-
const value = React.useContext(Context);
|
|
49
|
-
if (value === void 0) {
|
|
50
|
-
throw new Error("useRandomJoke must be used within a RandomJokeProvider");
|
|
51
|
-
}
|
|
52
|
-
return value;
|
|
53
|
-
};
|
|
54
|
-
|
|
55
|
-
const Actions = () => {
|
|
56
|
-
const { rerollJoke } = useRandomJoke();
|
|
57
|
-
return /* @__PURE__ */ React.createElement(Button, { variant: "contained", color: "primary", onClick: () => rerollJoke() }, "Reroll");
|
|
58
|
-
};
|
|
59
|
-
|
|
60
|
-
const Content = () => {
|
|
61
|
-
const { joke, loading } = useRandomJoke();
|
|
62
|
-
if (loading)
|
|
63
|
-
return /* @__PURE__ */ React.createElement(Typography, { paragraph: true }, "Loading...");
|
|
64
|
-
return /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement(Typography, { paragraph: true }, joke.setup), /* @__PURE__ */ React.createElement(Typography, { paragraph: true }, joke.punchline));
|
|
65
|
-
};
|
|
66
|
-
|
|
67
|
-
const Settings = () => {
|
|
68
|
-
const { type, handleChangeType } = useRandomJoke();
|
|
69
|
-
const JOKE_TYPES = ["any", "programming"];
|
|
70
|
-
return /* @__PURE__ */ React.createElement(FormControl, { component: "fieldset" }, /* @__PURE__ */ React.createElement(FormLabel, { component: "legend" }, "Joke Type"), /* @__PURE__ */ React.createElement(
|
|
71
|
-
RadioGroup,
|
|
72
|
-
{
|
|
73
|
-
"aria-label": "joke type",
|
|
74
|
-
value: type,
|
|
75
|
-
onChange: (e) => handleChangeType(e.target.value)
|
|
76
|
-
},
|
|
77
|
-
JOKE_TYPES.map((t) => /* @__PURE__ */ React.createElement(
|
|
78
|
-
FormControlLabel,
|
|
79
|
-
{
|
|
80
|
-
key: t,
|
|
81
|
-
value: t,
|
|
82
|
-
control: /* @__PURE__ */ React.createElement(Radio, null),
|
|
83
|
-
label: upperFirst(t)
|
|
84
|
-
}
|
|
85
|
-
))
|
|
86
|
-
));
|
|
87
|
-
};
|
|
88
|
-
|
|
89
|
-
export { Actions, Content, ContextProvider, Settings };
|
|
90
|
-
//# sourceMappingURL=index-Dg9lslkf.esm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-Dg9lslkf.esm.js","sources":["../../src/homePageComponents/RandomJoke/Context.tsx","../../src/homePageComponents/RandomJoke/Actions.tsx","../../src/homePageComponents/RandomJoke/Content.tsx","../../src/homePageComponents/RandomJoke/Settings.tsx"],"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 */\n\nimport React, { createContext } from 'react';\n\nexport type JokeType = 'any' | 'programming';\n\ntype Joke = {\n setup: string;\n punchline: string;\n};\n\ntype RandomJokeContextValue = {\n loading: boolean;\n joke: Joke;\n type: JokeType;\n rerollJoke: Function;\n handleChangeType: Function;\n};\n\nconst Context = createContext<RandomJokeContextValue | undefined>(undefined);\n\nconst getNewJoke = (type: string): Promise<Joke> =>\n fetch(\n `https://official-joke-api.appspot.com/jokes${\n type !== 'any' ? `/${type}` : ''\n }/random`,\n )\n .then(res => res.json())\n .then(data => (Array.isArray(data) ? data[0] : data));\n\nexport const ContextProvider = (props: {\n children: JSX.Element;\n defaultCategory?: JokeType;\n}) => {\n const { children, defaultCategory } = props;\n\n const [loading, setLoading] = React.useState(true);\n const [joke, setJoke] = React.useState<Joke>({\n setup: '',\n punchline: '',\n });\n const [type, setType] = React.useState<JokeType>(\n defaultCategory || ('programming' as JokeType),\n );\n\n const rerollJoke = React.useCallback(() => {\n setLoading(true);\n getNewJoke(type).then(newJoke => setJoke(newJoke));\n }, [type]);\n\n const handleChangeType = (newType: JokeType) => {\n setType(newType);\n };\n\n React.useEffect(() => {\n setLoading(false);\n }, [joke]);\n\n React.useEffect(() => {\n rerollJoke();\n }, [rerollJoke]);\n\n const value: RandomJokeContextValue = {\n loading,\n joke,\n type,\n rerollJoke,\n handleChangeType,\n };\n\n return <Context.Provider value={value}>{children}</Context.Provider>;\n};\n\nexport const useRandomJoke = () => {\n const value = React.useContext(Context);\n\n if (value === undefined) {\n throw new Error('useRandomJoke must be used within a RandomJokeProvider');\n }\n\n return value;\n};\n\nexport default Context;\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 React from 'react';\n\nimport Button from '@material-ui/core/Button';\nimport { useRandomJoke } from './Context';\n\nexport const Actions = () => {\n const { rerollJoke } = useRandomJoke();\n return (\n <Button variant=\"contained\" color=\"primary\" onClick={() => rerollJoke()}>\n Reroll\n </Button>\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 Typography from '@material-ui/core/Typography';\nimport React from 'react';\nimport { useRandomJoke } from './Context';\n\nexport const Content = () => {\n const { joke, loading } = useRandomJoke();\n\n if (loading) return <Typography paragraph>Loading...</Typography>;\n\n return (\n <div>\n <Typography paragraph>{joke.setup}</Typography>\n <Typography paragraph>{joke.punchline}</Typography>\n </div>\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 */\nimport FormControl from '@material-ui/core/FormControl';\nimport FormLabel from '@material-ui/core/FormLabel';\nimport RadioGroup from '@material-ui/core/RadioGroup';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport Radio from '@material-ui/core/Radio';\nimport React from 'react';\nimport { useRandomJoke, JokeType } from './Context';\nimport upperFirst from 'lodash/upperFirst';\n\nexport const Settings = () => {\n const { type, handleChangeType } = useRandomJoke();\n const JOKE_TYPES: JokeType[] = ['any' as JokeType, 'programming' as JokeType];\n return (\n <FormControl component=\"fieldset\">\n <FormLabel component=\"legend\">Joke Type</FormLabel>\n <RadioGroup\n aria-label=\"joke type\"\n value={type}\n onChange={e => handleChangeType(e.target.value)}\n >\n {JOKE_TYPES.map(t => (\n <FormControlLabel\n key={t}\n value={t}\n control={<Radio />}\n label={upperFirst(t)}\n />\n ))}\n </RadioGroup>\n </FormControl>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-SfHoDIi1.esm.js","sources":["../../src/components/StarredEntityListItem/StarredEntityListItem.tsx","../../src/homePageComponents/StarredEntities/Content.tsx"],"sourcesContent":["/*\n * Copyright 2023 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 { Entity, stringifyEntityRef } from '@backstage/catalog-model';\nimport { entityRouteParams } from '@backstage/plugin-catalog-react';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport IconButton from '@material-ui/core/IconButton';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport React from 'react';\nimport { Link } from 'react-router-dom';\nimport { entityRouteRef } from '@backstage/plugin-catalog-react';\nimport { useRouteRef } from '@backstage/core-plugin-api';\nimport StarIcon from '@material-ui/icons/Star';\n\ntype EntityListItemProps = {\n entity: Entity;\n onToggleStarredEntity: (entity: Entity) => void;\n};\n\nexport const StarredEntityListItem = ({\n entity,\n onToggleStarredEntity,\n}: EntityListItemProps) => {\n const catalogEntityRoute = useRouteRef(entityRouteRef);\n\n return (\n <ListItem key={stringifyEntityRef(entity)}>\n <ListItemIcon>\n <Tooltip title=\"Remove from starred\">\n <IconButton\n edge=\"end\"\n aria-label=\"unstar\"\n onClick={() => onToggleStarredEntity(entity)}\n >\n <StarIcon style={{ color: '#f3ba37' }} />\n </IconButton>\n </Tooltip>\n </ListItemIcon>\n <Link to={catalogEntityRoute(entityRouteParams(entity))}>\n <ListItemText primary={entity.metadata.title ?? entity.metadata.name} />\n </Link>\n </ListItem>\n );\n};\n","/*\n * Copyright 2022 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 catalogApiRef,\n useStarredEntities,\n} from '@backstage/plugin-catalog-react';\nimport { Entity, stringifyEntityRef } from '@backstage/catalog-model';\nimport { useApi } from '@backstage/core-plugin-api';\nimport { Progress, ResponseErrorPanel } from '@backstage/core-components';\nimport List from '@material-ui/core/List';\nimport Typography from '@material-ui/core/Typography';\nimport Tabs from '@material-ui/core/Tabs';\nimport Tab from '@material-ui/core/Tab';\nimport React from 'react';\nimport useAsync from 'react-use/esm/useAsync';\nimport { StarredEntityListItem } from '../../components/StarredEntityListItem/StarredEntityListItem';\n\n/**\n * A component to display a list of starred entities for the user.\n *\n * @public\n */\n\nexport type StarredEntitiesProps = {\n noStarredEntitiesMessage?: React.ReactNode | undefined;\n groupByKind?: boolean;\n};\n\nexport const Content = ({\n noStarredEntitiesMessage,\n groupByKind,\n}: StarredEntitiesProps) => {\n const catalogApi = useApi(catalogApiRef);\n const { starredEntities, toggleStarredEntity } = useStarredEntities();\n const [activeTab, setActiveTab] = React.useState(0);\n\n // Grab starred entities from catalog to ensure they still exist and also retrieve display titles\n const entities = useAsync(async () => {\n if (!starredEntities.size) {\n return [];\n }\n\n return (\n await catalogApi.getEntitiesByRefs({\n entityRefs: [...starredEntities],\n fields: [\n 'kind',\n 'metadata.namespace',\n 'metadata.name',\n 'metadata.title',\n ],\n })\n ).items.filter((e): e is Entity => !!e);\n }, [catalogApi, starredEntities]);\n\n if (starredEntities.size === 0)\n return (\n <Typography variant=\"body1\">\n {noStarredEntitiesMessage ||\n 'Click the star beside an entity name to add it to this list!'}\n </Typography>\n );\n\n if (entities.loading) {\n return <Progress />;\n }\n\n const groupedEntities: { [kind: string]: Entity[] } = {};\n entities.value?.forEach(entity => {\n const kind = entity.kind;\n if (!groupedEntities[kind]) {\n groupedEntities[kind] = [];\n }\n groupedEntities[kind].push(entity);\n });\n\n const groupByKindEntries = Object.entries(groupedEntities);\n\n return entities.error ? (\n <ResponseErrorPanel error={entities.error} />\n ) : (\n <div>\n {!groupByKind && (\n <List>\n {entities.value\n ?.sort((a, b) =>\n (a.metadata.title ?? a.metadata.name).localeCompare(\n b.metadata.title ?? b.metadata.name,\n ),\n )\n .map(entity => (\n <StarredEntityListItem\n key={stringifyEntityRef(entity)}\n entity={entity}\n onToggleStarredEntity={toggleStarredEntity}\n />\n ))}\n </List>\n )}\n\n {groupByKind && (\n <Tabs\n value={activeTab}\n onChange={(_, newValue) => setActiveTab(newValue)}\n variant=\"scrollable\"\n scrollButtons=\"auto\"\n aria-label=\"entity-tabs\"\n >\n {groupByKindEntries.map(([kind]) => (\n <Tab key={kind} label={kind} />\n ))}\n </Tabs>\n )}\n\n {groupByKind &&\n groupByKindEntries.map(([kind, entitiesByKind], index) => (\n <div key={kind} hidden={groupByKind && activeTab !== index}>\n <List>\n {entitiesByKind\n ?.sort((a, b) =>\n (a.metadata.title ?? a.metadata.name).localeCompare(\n b.metadata.title ?? b.metadata.name,\n ),\n )\n .map(entity => (\n <StarredEntityListItem\n key={stringifyEntityRef(entity)}\n entity={entity}\n onToggleStarredEntity={toggleStarredEntity}\n />\n ))}\n </List>\n </div>\n ))}\n </div>\n );\n};\n"],"names":["_a","_b"],"mappings":"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"}
|