@drodil/backstage-plugin-qeta 3.59.1 → 3.59.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/alpha.d.ts +235 -2
- package/dist/alpha.esm.js +2 -2
- package/dist/alpha.esm.js.map +1 -1
- package/dist/components/ArticlePage/ArticlePage.esm.js.map +1 -1
- package/dist/components/ArticlesPage/ArticlesPage.esm.js.map +1 -1
- package/dist/components/AskPage/AskPage.esm.js.map +1 -1
- package/dist/components/CollectionCreatePage/CollectionCreatePage.esm.js.map +1 -1
- package/dist/components/CollectionPage/CollectionPage.esm.js.map +1 -1
- package/dist/components/CollectionsPage/CollectionsPage.esm.js.map +1 -1
- package/dist/components/ContentHealthCard/ContentHealthCard.esm.js.map +1 -1
- package/dist/components/ContentHealthCard/ReviewList.esm.js.map +1 -1
- package/dist/components/CreateLinkPage/CreateLinkPage.esm.js.map +1 -1
- package/dist/components/EntityCards/EntityPostsContainerCard.esm.js.map +1 -1
- package/dist/components/EntityCards/EntityPostsGridCard.esm.js.map +1 -1
- package/dist/components/EntityPage/EntityPage.esm.js.map +1 -1
- package/dist/components/EntityPostsContent/EntityPostsContent.esm.js.map +1 -1
- package/dist/components/FavoritePage/FavoritePage.esm.js.map +1 -1
- package/dist/components/HomePage/HomePage.esm.js +1 -1
- package/dist/components/HomePage/HomePage.esm.js.map +1 -1
- package/dist/components/HomeTimeline/HomeTimeline.esm.js.map +1 -1
- package/dist/components/HomeTimeline/index.esm.js +5 -1
- package/dist/components/HomeTimeline/index.esm.js.map +1 -1
- package/dist/components/LinkPage/LinkPage.esm.js +1 -1
- package/dist/components/LinkPage/LinkPage.esm.js.map +1 -1
- package/dist/components/LinksPage/LinksPage.esm.js.map +1 -1
- package/dist/components/ModeratorPage/ModeratorPage.esm.js.map +1 -1
- package/dist/components/PostsTableCard/Content.esm.js.map +1 -1
- package/dist/components/PostsTableCard/index.esm.js +5 -1
- package/dist/components/PostsTableCard/index.esm.js.map +1 -1
- package/dist/components/QetaPage/QetaPage.esm.js +1 -1
- package/dist/components/QetaPage/QetaPage.esm.js.map +1 -1
- package/dist/components/QetaPage/index.esm.js +5 -1
- package/dist/components/QetaPage/index.esm.js.map +1 -1
- package/dist/components/QetaSearchResultListItem/QetaSearchResultListItem.esm.js +2 -2
- package/dist/components/QetaSearchResultListItem/QetaSearchResultListItem.esm.js.map +1 -1
- package/dist/components/QetaSearchResultListItem/index.esm.js +5 -1
- package/dist/components/QetaSearchResultListItem/index.esm.js.map +1 -1
- package/dist/components/QuestionPage/QuestionPage.esm.js +1 -1
- package/dist/components/QuestionPage/QuestionPage.esm.js.map +1 -1
- package/dist/components/QuestionsPage/QuestionsPage.esm.js.map +1 -1
- package/dist/components/ReviewPage/ReviewPage.esm.js.map +1 -1
- package/dist/components/ReviewPage/index.esm.js +5 -1
- package/dist/components/ReviewPage/index.esm.js.map +1 -1
- package/dist/components/RightContent/ArticlesRightContent.esm.js.map +1 -1
- package/dist/components/RightContent/AskRightContent.esm.js.map +1 -1
- package/dist/components/RightContent/CollectionsRightContent.esm.js.map +1 -1
- package/dist/components/RightContent/DefaultRightContent.esm.js.map +1 -1
- package/dist/components/RightContent/EntitiesRightContent.esm.js.map +1 -1
- package/dist/components/RightContent/EntityRightContent.esm.js.map +1 -1
- package/dist/components/RightContent/FavoriteRightContent.esm.js.map +1 -1
- package/dist/components/RightContent/HomeRightContent.esm.js.map +1 -1
- package/dist/components/RightContent/LinkedPosts.esm.js.map +1 -1
- package/dist/components/RightContent/LinksRightContent.esm.js.map +1 -1
- package/dist/components/RightContent/PostRightContent.esm.js.map +1 -1
- package/dist/components/RightContent/QuestionsRightContent.esm.js.map +1 -1
- package/dist/components/RightContent/RightContent.esm.js +1 -1
- package/dist/components/RightContent/RightContent.esm.js.map +1 -1
- package/dist/components/RightContent/SimilarPosts.esm.js.map +1 -1
- package/dist/components/RightContent/SimilarQuestions.esm.js.map +1 -1
- package/dist/components/RightContent/TagRightContent.esm.js.map +1 -1
- package/dist/components/RightContent/TagsRightContent.esm.js.map +1 -1
- package/dist/components/RightContent/UsersRightContent.esm.js.map +1 -1
- package/dist/components/SettingsPage/SettingsPage.esm.js +1 -1
- package/dist/components/SettingsPage/SettingsPage.esm.js.map +1 -1
- package/dist/components/Statistics/GlobalStatsContent.esm.js.map +1 -1
- package/dist/components/Statistics/StatisticsPage.esm.js.map +1 -1
- package/dist/components/TagPage/TagPage.esm.js.map +1 -1
- package/dist/components/TechDocsAskQuestionAddon/TechDocsAskQuestionAddon.esm.js.map +1 -1
- package/dist/components/UserPage/UserPage.esm.js +1 -1
- package/dist/components/UserPage/UserPage.esm.js.map +1 -1
- package/dist/components/UserPage/UserStatsContent.esm.js.map +1 -1
- package/dist/components/UsersPage/UsersPage.esm.js.map +1 -1
- package/dist/components/WritePage/WritePage.esm.js.map +1 -1
- package/dist/hooks/useSidebarSettings.esm.js.map +1 -1
- package/dist/package.json.esm.js +5 -5
- package/dist/plugin.esm.js +1 -1
- package/dist/plugin.esm.js.map +1 -1
- package/package.json +26 -26
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReviewList.esm.js","sources":["../../../src/components/ContentHealthCard/ReviewList.tsx"],"sourcesContent":["import { PostReview } from '@drodil/backstage-plugin-qeta-common';\nimport {\n Typography,\n makeStyles,\n List,\n ListItem,\n ListItemText,\n} from '@material-ui/core';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport {\n qetaTranslationRef,\n UserLink,\n RelativeTimeWithTooltip,\n} from '@drodil/backstage-plugin-qeta-react';\n\nconst useStyles = makeStyles(theme => ({\n reviewList: {\n padding: 0,\n marginTop: theme.spacing(1),\n },\n reviewItem: {\n paddingLeft: 0,\n paddingRight: 0,\n paddingTop: theme.spacing(0.5),\n paddingBottom: theme.spacing(0.5),\n borderBottom: `1px solid ${theme.palette.divider}`,\n '&:last-child': {\n borderBottom: 'none',\n },\n },\n reviewMeta: {\n display: 'flex',\n alignItems: 'baseline',\n gap: theme.spacing(0.5),\n flexWrap: 'wrap',\n },\n reviewUserLink: {\n fontSize: '0.75rem',\n },\n reviewStatus: {\n fontWeight: 500,\n },\n reviewComment: {\n marginTop: theme.spacing(0.25),\n fontSize: '0.8rem',\n },\n}));\n\nexport const ReviewList = ({ reviews }: { reviews: PostReview[] }) => {\n const classes = useStyles();\n const { t } = useTranslationRef(qetaTranslationRef);\n\n if (!reviews || reviews.length === 0) {\n return null;\n }\n\n return (\n <>\n <Typography variant=\"subtitle2\">\n {t('contentHealth.reviewHistory', {})}\n </Typography>\n <List className={classes.reviewList}>\n {reviews.map(review => (\n <ListItem key={review.id} className={classes.reviewItem} dense>\n <ListItemText\n primary={\n <div className={classes.reviewMeta}>\n <span className={classes.reviewUserLink}>\n <UserLink entityRef={review.reviewer} />\n </span>\n <Typography\n variant=\"caption\"\n className={classes.reviewStatus}\n color={review.status === 'valid' ? 'primary' : 'secondary'}\n >\n {review.status === 'valid'\n ? t('contentHealth.valid')\n : t('contentHealth.obsolete')}\n </Typography>\n <Typography variant=\"caption\" color=\"textSecondary\">\n <RelativeTimeWithTooltip value={review.created} />\n </Typography>\n </div>\n }\n secondary={\n review.comment ? (\n <Typography\n variant=\"body2\"\n color=\"textSecondary\"\n className={classes.reviewComment}\n >\n {review.comment}\n </Typography>\n ) : null\n }\n />\n </ListItem>\n ))}\n </List>\n </>\n );\n};\n"],"names":[],"mappings":";;;;;AAeA,MAAM,SAAA,GAAY,WAAW,
|
|
1
|
+
{"version":3,"file":"ReviewList.esm.js","sources":["../../../src/components/ContentHealthCard/ReviewList.tsx"],"sourcesContent":["import { PostReview } from '@drodil/backstage-plugin-qeta-common';\nimport {\n Typography,\n makeStyles,\n List,\n ListItem,\n ListItemText,\n} from '@material-ui/core';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport {\n qetaTranslationRef,\n UserLink,\n RelativeTimeWithTooltip,\n} from '@drodil/backstage-plugin-qeta-react';\n\nconst useStyles = makeStyles(theme => ({\n reviewList: {\n padding: 0,\n marginTop: theme.spacing(1),\n },\n reviewItem: {\n paddingLeft: 0,\n paddingRight: 0,\n paddingTop: theme.spacing(0.5),\n paddingBottom: theme.spacing(0.5),\n borderBottom: `1px solid ${theme.palette.divider}`,\n '&:last-child': {\n borderBottom: 'none',\n },\n },\n reviewMeta: {\n display: 'flex',\n alignItems: 'baseline',\n gap: theme.spacing(0.5),\n flexWrap: 'wrap',\n },\n reviewUserLink: {\n fontSize: '0.75rem',\n },\n reviewStatus: {\n fontWeight: 500,\n },\n reviewComment: {\n marginTop: theme.spacing(0.25),\n fontSize: '0.8rem',\n },\n}));\n\nexport const ReviewList = ({ reviews }: { reviews: PostReview[] }) => {\n const classes = useStyles();\n const { t } = useTranslationRef(qetaTranslationRef);\n\n if (!reviews || reviews.length === 0) {\n return null;\n }\n\n return (\n <>\n <Typography variant=\"subtitle2\">\n {t('contentHealth.reviewHistory', {})}\n </Typography>\n <List className={classes.reviewList}>\n {reviews.map(review => (\n <ListItem key={review.id} className={classes.reviewItem} dense>\n <ListItemText\n primary={\n <div className={classes.reviewMeta}>\n <span className={classes.reviewUserLink}>\n <UserLink entityRef={review.reviewer} />\n </span>\n <Typography\n variant=\"caption\"\n className={classes.reviewStatus}\n color={review.status === 'valid' ? 'primary' : 'secondary'}\n >\n {review.status === 'valid'\n ? t('contentHealth.valid')\n : t('contentHealth.obsolete')}\n </Typography>\n <Typography variant=\"caption\" color=\"textSecondary\">\n <RelativeTimeWithTooltip value={review.created} />\n </Typography>\n </div>\n }\n secondary={\n review.comment ? (\n <Typography\n variant=\"body2\"\n color=\"textSecondary\"\n className={classes.reviewComment}\n >\n {review.comment}\n </Typography>\n ) : null\n }\n />\n </ListItem>\n ))}\n </List>\n </>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreateLinkPage.esm.js","sources":["../../../src/components/CreateLinkPage/CreateLinkPage.tsx"],"sourcesContent":["import { useParams, useSearchParams } from 'react-router-dom';\nimport { filterTags } from '@drodil/backstage-plugin-qeta-common';\nimport {\n ContentHeader,\n PostForm,\n qetaTranslationRef,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { useEntityPresentation } from '@backstage/plugin-catalog-react';\nimport { InfoCard } from '@backstage/core-components';\nimport { Grid } from '@material-ui/core';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\n\nexport const CreateLinkPage = () => {\n const { id } = useParams();\n const [searchParams] = useSearchParams();\n const entity = searchParams.get('entity') ?? undefined;\n const entityPage = searchParams.get('entityPage') === 'true';\n const tags = filterTags(searchParams.get('tags'));\n const { t } = useTranslationRef(qetaTranslationRef);\n let title;\n if (id) {\n title = t('createLinkPage.title.existingLink');\n } else if (entity) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const representation = useEntityPresentation(entity);\n title = t('createLinkPage.title.entityLink', {\n entity: representation.primaryTitle,\n });\n } else {\n title = t('createLinkPage.title.newLink');\n }\n\n return (\n <>\n <ContentHeader title={title} />\n <Grid container spacing={3} direction=\"column\">\n <Grid item>\n <InfoCard>\n <PostForm\n id={id}\n entity={entity}\n entityPage={entityPage}\n tags={tags}\n type=\"link\"\n />\n </InfoCard>\n </Grid>\n </Grid>\n </>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;AAYO,MAAM,iBAAiB,MAAM;AAClC,
|
|
1
|
+
{"version":3,"file":"CreateLinkPage.esm.js","sources":["../../../src/components/CreateLinkPage/CreateLinkPage.tsx"],"sourcesContent":["import { useParams, useSearchParams } from 'react-router-dom';\nimport { filterTags } from '@drodil/backstage-plugin-qeta-common';\nimport {\n ContentHeader,\n PostForm,\n qetaTranslationRef,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { useEntityPresentation } from '@backstage/plugin-catalog-react';\nimport { InfoCard } from '@backstage/core-components';\nimport { Grid } from '@material-ui/core';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\n\nexport const CreateLinkPage = () => {\n const { id } = useParams();\n const [searchParams] = useSearchParams();\n const entity = searchParams.get('entity') ?? undefined;\n const entityPage = searchParams.get('entityPage') === 'true';\n const tags = filterTags(searchParams.get('tags'));\n const { t } = useTranslationRef(qetaTranslationRef);\n let title;\n if (id) {\n title = t('createLinkPage.title.existingLink');\n } else if (entity) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const representation = useEntityPresentation(entity);\n title = t('createLinkPage.title.entityLink', {\n entity: representation.primaryTitle,\n });\n } else {\n title = t('createLinkPage.title.newLink');\n }\n\n return (\n <>\n <ContentHeader title={title} />\n <Grid container spacing={3} direction=\"column\">\n <Grid item>\n <InfoCard>\n <PostForm\n id={id}\n entity={entity}\n entityPage={entityPage}\n tags={tags}\n type=\"link\"\n />\n </InfoCard>\n </Grid>\n </Grid>\n </>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;AAYO,MAAM,iBAAiB,MAAM;AAClC,EAAA,MAAM,EAAE,EAAA,EAAG,GAAI,SAAA,EAAU;AACzB,EAAA,MAAM,CAAC,YAAY,CAAA,GAAI,eAAA,EAAgB;AACvC,EAAA,MAAM,MAAA,GAAS,YAAA,CAAa,GAAA,CAAI,QAAQ,CAAA,IAAK,MAAA;AAC7C,EAAA,MAAM,UAAA,GAAa,YAAA,CAAa,GAAA,CAAI,YAAY,CAAA,KAAM,MAAA;AACtD,EAAA,MAAM,IAAA,GAAO,UAAA,CAAW,YAAA,CAAa,GAAA,CAAI,MAAM,CAAC,CAAA;AAChD,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,kBAAkB,CAAA;AAClD,EAAA,IAAI,KAAA;AACJ,EAAA,IAAI,EAAA,EAAI;AACN,IAAA,KAAA,GAAQ,EAAE,mCAAmC,CAAA;AAAA,EAC/C,WAAW,MAAA,EAAQ;AAEjB,IAAA,MAAM,cAAA,GAAiB,sBAAsB,MAAM,CAAA;AACnD,IAAA,KAAA,GAAQ,EAAE,iCAAA,EAAmC;AAAA,MAC3C,QAAQ,cAAA,CAAe;AAAA,KACxB,CAAA;AAAA,EACH,CAAA,MAAO;AACL,IAAA,KAAA,GAAQ,EAAE,8BAA8B,CAAA;AAAA,EAC1C;AAEA,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,iBAAc,KAAA,EAAc,CAAA;AAAA,oBAC7B,GAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAS,IAAA,EAAC,OAAA,EAAS,CAAA,EAAG,SAAA,EAAU,QAAA,EACpC,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAI,IAAA,EACR,8BAAC,QAAA,EAAA,EACC,QAAA,kBAAA,GAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,EAAA;AAAA,QACA,MAAA;AAAA,QACA,UAAA;AAAA,QACA,IAAA;AAAA,QACA,IAAA,EAAK;AAAA;AAAA,KACP,EACF,GACF,CAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityPostsContainerCard.esm.js","sources":["../../../src/components/EntityCards/EntityPostsContainerCard.tsx"],"sourcesContent":["import { useEntity } from '@backstage/plugin-catalog-react';\nimport { stringifyEntityRef } from '@backstage/catalog-model';\nimport {\n PostsContainer,\n PostsContainerProps,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { InfoCard } from '@backstage/core-components';\n\nexport const EntityPostsContainerCard = (props: PostsContainerProps) => {\n const { entity } = useEntity();\n\n return (\n <InfoCard>\n <PostsContainer {...props} entity={stringifyEntityRef(entity)} />\n </InfoCard>\n );\n};\n"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"EntityPostsContainerCard.esm.js","sources":["../../../src/components/EntityCards/EntityPostsContainerCard.tsx"],"sourcesContent":["import { useEntity } from '@backstage/plugin-catalog-react';\nimport { stringifyEntityRef } from '@backstage/catalog-model';\nimport {\n PostsContainer,\n PostsContainerProps,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { InfoCard } from '@backstage/core-components';\n\nexport const EntityPostsContainerCard = (props: PostsContainerProps) => {\n const { entity } = useEntity();\n\n return (\n <InfoCard>\n <PostsContainer {...props} entity={stringifyEntityRef(entity)} />\n </InfoCard>\n );\n};\n"],"names":[],"mappings":";;;;;;AAQO,MAAM,wBAAA,GAA2B,CAAC,KAAA,KAA+B;AACtE,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,SAAA,EAAU;AAE7B,EAAA,uBACE,GAAA,CAAC,QAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,cAAA,EAAA,EAAgB,GAAG,OAAO,MAAA,EAAQ,kBAAA,CAAmB,MAAM,CAAA,EAAG,CAAA,EACjE,CAAA;AAEJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityPostsGridCard.esm.js","sources":["../../../src/components/EntityCards/EntityPostsGridCard.tsx"],"sourcesContent":["import { useEntity } from '@backstage/plugin-catalog-react';\nimport { stringifyEntityRef } from '@backstage/catalog-model';\nimport {\n PostsContainer,\n PostsContainerProps,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { InfoCard } from '@backstage/core-components';\n\nexport const EntityPostsGridCard = (props: PostsContainerProps) => {\n const { entity } = useEntity();\n\n return (\n <InfoCard>\n <PostsContainer\n defaultView=\"grid\"\n {...props}\n entity={stringifyEntityRef(entity)}\n />\n </InfoCard>\n );\n};\n"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"EntityPostsGridCard.esm.js","sources":["../../../src/components/EntityCards/EntityPostsGridCard.tsx"],"sourcesContent":["import { useEntity } from '@backstage/plugin-catalog-react';\nimport { stringifyEntityRef } from '@backstage/catalog-model';\nimport {\n PostsContainer,\n PostsContainerProps,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { InfoCard } from '@backstage/core-components';\n\nexport const EntityPostsGridCard = (props: PostsContainerProps) => {\n const { entity } = useEntity();\n\n return (\n <InfoCard>\n <PostsContainer\n defaultView=\"grid\"\n {...props}\n entity={stringifyEntityRef(entity)}\n />\n </InfoCard>\n );\n};\n"],"names":[],"mappings":";;;;;;AAQO,MAAM,mBAAA,GAAsB,CAAC,KAAA,KAA+B;AACjE,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,SAAA,EAAU;AAE7B,EAAA,2BACG,QAAA,EAAA,EACC,QAAA,kBAAA,GAAA;AAAA,IAAC,cAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAY,MAAA;AAAA,MACX,GAAG,KAAA;AAAA,MACJ,MAAA,EAAQ,mBAAmB,MAAM;AAAA;AAAA,GACnC,EACF,CAAA;AAEJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityPage.esm.js","sources":["../../../src/components/EntityPage/EntityPage.tsx"],"sourcesContent":["import { useState, useEffect } from 'react';\nimport { useParams } from 'react-router-dom';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { useApi } from '@backstage/core-plugin-api';\nimport {\n AskQuestionButton,\n CreateLinkButton,\n EntitiesContainer,\n EntityFollowButton,\n PostsContainer,\n qetaTranslationRef,\n useQetaApi,\n WriteArticleButton,\n ContentHeaderCard,\n ContentHeader,\n} from '@drodil/backstage-plugin-qeta-react';\nimport {\n EntityRefLink,\n useEntityPresentation,\n catalogApiRef,\n} from '@backstage/plugin-catalog-react';\nimport CategoryOutlined from '@material-ui/icons/CategoryOutlined';\nimport QuestionAnswerIcon from '@material-ui/icons/QuestionAnswer';\nimport PeopleIcon from '@material-ui/icons/People';\nimport { Skeleton } from '@material-ui/lab';\nimport { WarningPanel } from '@backstage/core-components';\nimport { Entity } from '@backstage/catalog-model';\n\nconst SingleEntityPage = ({ entityRef }: { entityRef: string }) => {\n const { t } = useTranslationRef(qetaTranslationRef);\n const [entity, setEntity] = useState<Entity | undefined>(undefined);\n const { Icon } = useEntityPresentation(entityRef);\n const catalogApi = useApi(catalogApiRef);\n\n useEffect(() => {\n catalogApi.getEntityByRef(entityRef).then(e => setEntity(e));\n }, [catalogApi, entityRef]);\n\n const {\n value: resp,\n loading,\n error,\n } = useQetaApi(api => api.getEntity(entityRef), [entityRef]);\n\n if (loading) {\n return <Skeleton variant=\"rect\" height={200} />;\n }\n\n if (error || !resp) {\n return (\n <WarningPanel severity=\"error\" title={t('questionPage.errorLoading')}>\n {error?.message}\n </WarningPanel>\n );\n }\n\n const title = (\n <div style={{ display: 'flex', alignItems: 'center' }}>\n <EntityRefLink\n entityRef={resp.entityRef}\n defaultKind=\"Component\"\n hideIcon\n />\n </div>\n );\n\n const description = `${entity?.kind} ${\n entity?.spec?.type ? `(${entity?.spec?.type})` : ''\n }`;\n\n return (\n <>\n <ContentHeader\n title={title}\n titleIcon={<CategoryOutlined fontSize=\"large\" />}\n description={description}\n >\n <EntityFollowButton entityRef={resp.entityRef} />\n <AskQuestionButton entity={resp.entityRef} />\n <WriteArticleButton entity={resp.entityRef} />\n <CreateLinkButton entity={resp.entityRef} />\n </ContentHeader>\n {resp && (\n <ContentHeaderCard\n description={entity?.metadata?.description}\n imageIcon={\n Icon ? (\n <div style={{ fontSize: '80px', display: 'flex' }}>\n <Icon fontSize=\"inherit\" />\n </div>\n ) : (\n <CategoryOutlined style={{ fontSize: 80 }} />\n )\n }\n stats={[\n {\n label: t('common.postsLabel', {\n count: resp.postsCount,\n itemType: 'post',\n }),\n value: resp.postsCount,\n icon: <QuestionAnswerIcon fontSize=\"small\" />,\n },\n {\n label: t('common.followersLabel', { count: resp.followerCount }),\n value: resp.followerCount,\n icon: <PeopleIcon fontSize=\"small\" />,\n },\n ]}\n />\n )}\n <PostsContainer\n entity={entityRef}\n filterPanelProps={{ showEntityFilter: false }}\n defaultView=\"list\"\n showTypeLabel\n />\n </>\n );\n};\n\nexport const EntityPage = () => {\n const { entityRef } = useParams();\n const { t } = useTranslationRef(qetaTranslationRef);\n\n if (entityRef) {\n return <SingleEntityPage entityRef={entityRef} />;\n }\n\n return (\n <>\n <ContentHeader\n title={t('entitiesPage.defaultTitle')}\n titleIcon={<CategoryOutlined fontSize=\"large\" />}\n >\n <AskQuestionButton />\n <WriteArticleButton />\n <CreateLinkButton />\n </ContentHeader>\n <EntitiesContainer />\n </>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;AA4BA,MAAM,
|
|
1
|
+
{"version":3,"file":"EntityPage.esm.js","sources":["../../../src/components/EntityPage/EntityPage.tsx"],"sourcesContent":["import { useState, useEffect } from 'react';\nimport { useParams } from 'react-router-dom';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { useApi } from '@backstage/core-plugin-api';\nimport {\n AskQuestionButton,\n CreateLinkButton,\n EntitiesContainer,\n EntityFollowButton,\n PostsContainer,\n qetaTranslationRef,\n useQetaApi,\n WriteArticleButton,\n ContentHeaderCard,\n ContentHeader,\n} from '@drodil/backstage-plugin-qeta-react';\nimport {\n EntityRefLink,\n useEntityPresentation,\n catalogApiRef,\n} from '@backstage/plugin-catalog-react';\nimport CategoryOutlined from '@material-ui/icons/CategoryOutlined';\nimport QuestionAnswerIcon from '@material-ui/icons/QuestionAnswer';\nimport PeopleIcon from '@material-ui/icons/People';\nimport { Skeleton } from '@material-ui/lab';\nimport { WarningPanel } from '@backstage/core-components';\nimport { Entity } from '@backstage/catalog-model';\n\nconst SingleEntityPage = ({ entityRef }: { entityRef: string }) => {\n const { t } = useTranslationRef(qetaTranslationRef);\n const [entity, setEntity] = useState<Entity | undefined>(undefined);\n const { Icon } = useEntityPresentation(entityRef);\n const catalogApi = useApi(catalogApiRef);\n\n useEffect(() => {\n catalogApi.getEntityByRef(entityRef).then(e => setEntity(e));\n }, [catalogApi, entityRef]);\n\n const {\n value: resp,\n loading,\n error,\n } = useQetaApi(api => api.getEntity(entityRef), [entityRef]);\n\n if (loading) {\n return <Skeleton variant=\"rect\" height={200} />;\n }\n\n if (error || !resp) {\n return (\n <WarningPanel severity=\"error\" title={t('questionPage.errorLoading')}>\n {error?.message}\n </WarningPanel>\n );\n }\n\n const title = (\n <div style={{ display: 'flex', alignItems: 'center' }}>\n <EntityRefLink\n entityRef={resp.entityRef}\n defaultKind=\"Component\"\n hideIcon\n />\n </div>\n );\n\n const description = `${entity?.kind} ${\n entity?.spec?.type ? `(${entity?.spec?.type})` : ''\n }`;\n\n return (\n <>\n <ContentHeader\n title={title}\n titleIcon={<CategoryOutlined fontSize=\"large\" />}\n description={description}\n >\n <EntityFollowButton entityRef={resp.entityRef} />\n <AskQuestionButton entity={resp.entityRef} />\n <WriteArticleButton entity={resp.entityRef} />\n <CreateLinkButton entity={resp.entityRef} />\n </ContentHeader>\n {resp && (\n <ContentHeaderCard\n description={entity?.metadata?.description}\n imageIcon={\n Icon ? (\n <div style={{ fontSize: '80px', display: 'flex' }}>\n <Icon fontSize=\"inherit\" />\n </div>\n ) : (\n <CategoryOutlined style={{ fontSize: 80 }} />\n )\n }\n stats={[\n {\n label: t('common.postsLabel', {\n count: resp.postsCount,\n itemType: 'post',\n }),\n value: resp.postsCount,\n icon: <QuestionAnswerIcon fontSize=\"small\" />,\n },\n {\n label: t('common.followersLabel', { count: resp.followerCount }),\n value: resp.followerCount,\n icon: <PeopleIcon fontSize=\"small\" />,\n },\n ]}\n />\n )}\n <PostsContainer\n entity={entityRef}\n filterPanelProps={{ showEntityFilter: false }}\n defaultView=\"list\"\n showTypeLabel\n />\n </>\n );\n};\n\nexport const EntityPage = () => {\n const { entityRef } = useParams();\n const { t } = useTranslationRef(qetaTranslationRef);\n\n if (entityRef) {\n return <SingleEntityPage entityRef={entityRef} />;\n }\n\n return (\n <>\n <ContentHeader\n title={t('entitiesPage.defaultTitle')}\n titleIcon={<CategoryOutlined fontSize=\"large\" />}\n >\n <AskQuestionButton />\n <WriteArticleButton />\n <CreateLinkButton />\n </ContentHeader>\n <EntitiesContainer />\n </>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityPostsContent.esm.js","sources":["../../../src/components/EntityPostsContent/EntityPostsContent.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport {\n PostsContainer,\n PostsContainerProps,\n QetaProvider,\n ViewType,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { Content } from '@backstage/core-components';\nimport { isUserEntity, stringifyEntityRef } from '@backstage/catalog-model';\nimport { catalogApiRef, useEntity } from '@backstage/plugin-catalog-react';\nimport { Container } from '@material-ui/core';\nimport { PluggableList } from 'unified';\nimport { useApi } from '@backstage/core-plugin-api';\nimport { Skeleton } from '@material-ui/lab';\n\nexport type EntityPostsContentProps = PostsContainerProps & {\n remarkPlugins?: PluggableList;\n rehypePlugins?: PluggableList;\n /**\n * Relation names of the current entity to show posts too.\n * For example for a system, you can also show all posts from components\n * related to the system by passing `partOf` relation.\n */\n relations?: string[];\n};\n\nexport const EntityPostsContent = (props: EntityPostsContentProps) => {\n const [view, setView] = useState<ViewType>(props.view ?? 'list');\n const { entity } = useEntity();\n const catalog = useApi(catalogApiRef);\n const [additionalProps, setAdditionalProps] = useState<PostsContainerProps>(\n () => {\n if (isUserEntity(entity)) {\n return { author: stringifyEntityRef(entity) };\n }\n return { entity: props.entity ?? stringifyEntityRef(entity) };\n },\n );\n\n const [loading, setLoading] = useState<boolean>(true);\n useEffect(() => {\n if (!props.relations?.length) {\n setLoading(false);\n return;\n }\n const filters = props.relations.map(relation => {\n return { [`relations.${relation}`]: stringifyEntityRef(entity) };\n });\n catalog\n .getEntities({\n filter: filters,\n fields: ['kind', 'metadata.name', 'metadata.namespace'],\n })\n .then(entities => {\n setAdditionalProps(prev => ({\n ...prev,\n entities: entities.items.map(stringifyEntityRef),\n entitiesRelation: 'or',\n }));\n setLoading(false);\n })\n .catch(() => {\n setLoading(false);\n });\n }, [catalog, entity, props.relations]);\n\n if (loading) {\n return <Skeleton variant=\"rect\" height={200} />;\n }\n\n return (\n <QetaProvider\n remarkPlugins={props.remarkPlugins}\n rehypePlugins={props.rehypePlugins}\n >\n <Content>\n <Container>\n <PostsContainer\n {...props}\n {...additionalProps}\n view={view}\n onViewChange={setView}\n />\n </Container>\n </Content>\n </QetaProvider>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"EntityPostsContent.esm.js","sources":["../../../src/components/EntityPostsContent/EntityPostsContent.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport {\n PostsContainer,\n PostsContainerProps,\n QetaProvider,\n ViewType,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { Content } from '@backstage/core-components';\nimport { isUserEntity, stringifyEntityRef } from '@backstage/catalog-model';\nimport { catalogApiRef, useEntity } from '@backstage/plugin-catalog-react';\nimport { Container } from '@material-ui/core';\nimport { PluggableList } from 'unified';\nimport { useApi } from '@backstage/core-plugin-api';\nimport { Skeleton } from '@material-ui/lab';\n\nexport type EntityPostsContentProps = PostsContainerProps & {\n remarkPlugins?: PluggableList;\n rehypePlugins?: PluggableList;\n /**\n * Relation names of the current entity to show posts too.\n * For example for a system, you can also show all posts from components\n * related to the system by passing `partOf` relation.\n */\n relations?: string[];\n};\n\nexport const EntityPostsContent = (props: EntityPostsContentProps) => {\n const [view, setView] = useState<ViewType>(props.view ?? 'list');\n const { entity } = useEntity();\n const catalog = useApi(catalogApiRef);\n const [additionalProps, setAdditionalProps] = useState<PostsContainerProps>(\n () => {\n if (isUserEntity(entity)) {\n return { author: stringifyEntityRef(entity) };\n }\n return { entity: props.entity ?? stringifyEntityRef(entity) };\n },\n );\n\n const [loading, setLoading] = useState<boolean>(true);\n useEffect(() => {\n if (!props.relations?.length) {\n setLoading(false);\n return;\n }\n const filters = props.relations.map(relation => {\n return { [`relations.${relation}`]: stringifyEntityRef(entity) };\n });\n catalog\n .getEntities({\n filter: filters,\n fields: ['kind', 'metadata.name', 'metadata.namespace'],\n })\n .then(entities => {\n setAdditionalProps(prev => ({\n ...prev,\n entities: entities.items.map(stringifyEntityRef),\n entitiesRelation: 'or',\n }));\n setLoading(false);\n })\n .catch(() => {\n setLoading(false);\n });\n }, [catalog, entity, props.relations]);\n\n if (loading) {\n return <Skeleton variant=\"rect\" height={200} />;\n }\n\n return (\n <QetaProvider\n remarkPlugins={props.remarkPlugins}\n rehypePlugins={props.rehypePlugins}\n >\n <Content>\n <Container>\n <PostsContainer\n {...props}\n {...additionalProps}\n view={view}\n onViewChange={setView}\n />\n </Container>\n </Content>\n </QetaProvider>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;AA0BO,MAAM,kBAAA,GAAqB,CAAC,KAAA,KAAmC;AACpE,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,IAAI,QAAA,CAAmB,KAAA,CAAM,QAAQ,MAAM,CAAA;AAC/D,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,SAAA,EAAU;AAC7B,EAAA,MAAM,OAAA,GAAU,OAAO,aAAa,CAAA;AACpC,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAI,QAAA;AAAA,IAC5C,MAAM;AACJ,MAAA,IAAI,YAAA,CAAa,MAAM,CAAA,EAAG;AACxB,QAAA,OAAO,EAAE,MAAA,EAAQ,kBAAA,CAAmB,MAAM,CAAA,EAAE;AAAA,MAC9C;AACA,MAAA,OAAO,EAAE,MAAA,EAAQ,KAAA,CAAM,MAAA,IAAU,kBAAA,CAAmB,MAAM,CAAA,EAAE;AAAA,IAC9D;AAAA,GACF;AAEA,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAkB,IAAI,CAAA;AACpD,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,KAAA,CAAM,SAAA,EAAW,MAAA,EAAQ;AAC5B,MAAA,UAAA,CAAW,KAAK,CAAA;AAChB,MAAA;AAAA,IACF;AACA,IAAA,MAAM,OAAA,GAAU,KAAA,CAAM,SAAA,CAAU,GAAA,CAAI,CAAA,QAAA,KAAY;AAC9C,MAAA,OAAO,EAAE,CAAC,CAAA,UAAA,EAAa,QAAQ,EAAE,GAAG,kBAAA,CAAmB,MAAM,CAAA,EAAE;AAAA,IACjE,CAAC,CAAA;AACD,IAAA,OAAA,CACG,WAAA,CAAY;AAAA,MACX,MAAA,EAAQ,OAAA;AAAA,MACR,MAAA,EAAQ,CAAC,MAAA,EAAQ,eAAA,EAAiB,oBAAoB;AAAA,KACvD,CAAA,CACA,IAAA,CAAK,CAAA,QAAA,KAAY;AAChB,MAAA,kBAAA,CAAmB,CAAA,IAAA,MAAS;AAAA,QAC1B,GAAG,IAAA;AAAA,QACH,QAAA,EAAU,QAAA,CAAS,KAAA,CAAM,GAAA,CAAI,kBAAkB,CAAA;AAAA,QAC/C,gBAAA,EAAkB;AAAA,OACpB,CAAE,CAAA;AACF,MAAA,UAAA,CAAW,KAAK,CAAA;AAAA,IAClB,CAAC,CAAA,CACA,KAAA,CAAM,MAAM;AACX,MAAA,UAAA,CAAW,KAAK,CAAA;AAAA,IAClB,CAAC,CAAA;AAAA,EACL,GAAG,CAAC,OAAA,EAAS,MAAA,EAAQ,KAAA,CAAM,SAAS,CAAC,CAAA;AAErC,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,uBAAO,GAAA,CAAC,QAAA,EAAA,EAAS,OAAA,EAAQ,MAAA,EAAO,QAAQ,GAAA,EAAK,CAAA;AAAA,EAC/C;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,YAAA;AAAA,IAAA;AAAA,MACC,eAAe,KAAA,CAAM,aAAA;AAAA,MACrB,eAAe,KAAA,CAAM,aAAA;AAAA,MAErB,QAAA,kBAAA,GAAA,CAAC,OAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,SAAA,EAAA,EACC,QAAA,kBAAA,GAAA;AAAA,QAAC,cAAA;AAAA,QAAA;AAAA,UACE,GAAG,KAAA;AAAA,UACH,GAAG,eAAA;AAAA,UACJ,IAAA;AAAA,UACA,YAAA,EAAc;AAAA;AAAA,SAElB,CAAA,EACF;AAAA;AAAA,GACF;AAEJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FavoritePage.esm.js","sources":["../../../src/components/FavoritePage/FavoritePage.tsx"],"sourcesContent":["import {\n AskQuestionButton,\n ContentHeader,\n CreateLinkButton,\n PostsContainer,\n qetaTranslationRef,\n WriteArticleButton,\n} from '@drodil/backstage-plugin-qeta-react';\nimport StarBorder from '@material-ui/icons/StarBorder';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\n\nexport const FavoritePage = () => {\n const { t } = useTranslationRef(qetaTranslationRef);\n\n return (\n <>\n <ContentHeader\n title={t('favoritePage.title')}\n titleIcon={<StarBorder fontSize=\"large\" />}\n >\n <AskQuestionButton />\n <WriteArticleButton />\n <CreateLinkButton />\n </ContentHeader>\n <PostsContainer\n favorite\n showNoQuestionsBtn={false}\n showTypeLabel\n defaultView=\"list\"\n prefix=\"favorites\"\n />\n </>\n );\n};\n"],"names":[],"mappings":";;;;;AAWO,MAAM,eAAe,MAAM;AAChC,EAAA,MAAM,EAAE,CAAA,
|
|
1
|
+
{"version":3,"file":"FavoritePage.esm.js","sources":["../../../src/components/FavoritePage/FavoritePage.tsx"],"sourcesContent":["import {\n AskQuestionButton,\n ContentHeader,\n CreateLinkButton,\n PostsContainer,\n qetaTranslationRef,\n WriteArticleButton,\n} from '@drodil/backstage-plugin-qeta-react';\nimport StarBorder from '@material-ui/icons/StarBorder';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\n\nexport const FavoritePage = () => {\n const { t } = useTranslationRef(qetaTranslationRef);\n\n return (\n <>\n <ContentHeader\n title={t('favoritePage.title')}\n titleIcon={<StarBorder fontSize=\"large\" />}\n >\n <AskQuestionButton />\n <WriteArticleButton />\n <CreateLinkButton />\n </ContentHeader>\n <PostsContainer\n favorite\n showNoQuestionsBtn={false}\n showTypeLabel\n defaultView=\"list\"\n prefix=\"favorites\"\n />\n </>\n );\n};\n"],"names":[],"mappings":";;;;;AAWO,MAAM,eAAe,MAAM;AAChC,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,kBAAkB,CAAA;AAElD,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,IAAA;AAAA,MAAC,aAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,EAAE,oBAAoB,CAAA;AAAA,QAC7B,SAAA,kBAAW,GAAA,CAAC,UAAA,EAAA,EAAW,QAAA,EAAS,OAAA,EAAQ,CAAA;AAAA,QAExC,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,iBAAA,EAAA,EAAkB,CAAA;AAAA,8BAClB,kBAAA,EAAA,EAAmB,CAAA;AAAA,8BACnB,gBAAA,EAAA,EAAiB;AAAA;AAAA;AAAA,KACpB;AAAA,oBACA,GAAA;AAAA,MAAC,cAAA;AAAA,MAAA;AAAA,QACC,QAAA,EAAQ,IAAA;AAAA,QACR,kBAAA,EAAoB,KAAA;AAAA,QACpB,aAAA,EAAa,IAAA;AAAA,QACb,WAAA,EAAY,MAAA;AAAA,QACZ,MAAA,EAAO;AAAA;AAAA;AACT,GAAA,EACF,CAAA;AAEJ;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { qetaTranslationRef, ContentHeader, AskQuestionButton, WriteArticleButton, CreateLinkButton, SuggestionsCard, FollowedItemsCard, ImpactCard, CommunityActivityCard, Timeline } from '@drodil/backstage-plugin-qeta-react';
|
|
3
|
-
import {
|
|
3
|
+
import { Box, makeStyles } from '@material-ui/core';
|
|
4
4
|
import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
|
|
5
5
|
import HomeOutlined from '@material-ui/icons/HomeOutlined';
|
|
6
6
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HomePage.esm.js","sources":["../../../src/components/HomePage/HomePage.tsx"],"sourcesContent":["import {\n AskQuestionButton,\n ContentHeader,\n CreateLinkButton,\n ImpactCard,\n qetaTranslationRef,\n SuggestionsCard,\n WriteArticleButton,\n Timeline,\n CommunityActivityCard,\n FollowedItemsCard,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { Box, makeStyles } from '@material-ui/core';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport HomeOutlined from '@material-ui/icons/HomeOutlined';\n\nconst useStyles = makeStyles(theme => ({\n flexRow: {\n display: 'flex',\n flexWrap: 'wrap',\n gap: theme.spacing(2),\n width: '100%',\n marginBottom: theme.spacing(2),\n alignItems: 'stretch',\n },\n suggestionColumn: {\n flex: '3 1 350px',\n display: 'flex',\n minWidth: 0,\n '& > *': {\n flex: 1,\n maxHeight: 460,\n overflowY: 'auto',\n },\n },\n followedColumn: {\n flex: '1 1 250px',\n display: 'flex',\n minWidth: 0,\n '& > *': {\n flex: 1,\n maxHeight: 460,\n overflowY: 'auto',\n },\n },\n equalColumn: {\n flex: '1 1 395px',\n display: 'flex',\n minWidth: 0,\n '& > *': {\n flex: 1,\n maxHeight: 460,\n overflowY: 'auto',\n },\n },\n timelineWrapper: {\n width: '100%',\n marginTop: theme.spacing(2),\n },\n}));\n\nexport const HomePage = () => {\n const classes = useStyles();\n const { t } = useTranslationRef(qetaTranslationRef);\n\n return (\n <>\n <ContentHeader\n title={t('homePage.title')}\n titleIcon={<HomeOutlined fontSize=\"large\" />}\n >\n <AskQuestionButton />\n <WriteArticleButton />\n <CreateLinkButton />\n </ContentHeader>\n\n <Box className={classes.flexRow}>\n <Box className={classes.suggestionColumn}>\n <SuggestionsCard />\n </Box>\n <Box className={classes.followedColumn}>\n <FollowedItemsCard />\n </Box>\n </Box>\n\n <Box className={classes.flexRow}>\n <Box className={classes.equalColumn}>\n <ImpactCard />\n </Box>\n <Box className={classes.equalColumn}>\n <CommunityActivityCard />\n </Box>\n </Box>\n\n <Box className={classes.timelineWrapper}>\n <Timeline />\n </Box>\n </>\n );\n};\n"],"names":[],"mappings":";;;;;;AAgBA,MAAM,SAAA,GAAY,WAAW,
|
|
1
|
+
{"version":3,"file":"HomePage.esm.js","sources":["../../../src/components/HomePage/HomePage.tsx"],"sourcesContent":["import {\n AskQuestionButton,\n ContentHeader,\n CreateLinkButton,\n ImpactCard,\n qetaTranslationRef,\n SuggestionsCard,\n WriteArticleButton,\n Timeline,\n CommunityActivityCard,\n FollowedItemsCard,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { Box, makeStyles } from '@material-ui/core';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport HomeOutlined from '@material-ui/icons/HomeOutlined';\n\nconst useStyles = makeStyles(theme => ({\n flexRow: {\n display: 'flex',\n flexWrap: 'wrap',\n gap: theme.spacing(2),\n width: '100%',\n marginBottom: theme.spacing(2),\n alignItems: 'stretch',\n },\n suggestionColumn: {\n flex: '3 1 350px',\n display: 'flex',\n minWidth: 0,\n '& > *': {\n flex: 1,\n maxHeight: 460,\n overflowY: 'auto',\n },\n },\n followedColumn: {\n flex: '1 1 250px',\n display: 'flex',\n minWidth: 0,\n '& > *': {\n flex: 1,\n maxHeight: 460,\n overflowY: 'auto',\n },\n },\n equalColumn: {\n flex: '1 1 395px',\n display: 'flex',\n minWidth: 0,\n '& > *': {\n flex: 1,\n maxHeight: 460,\n overflowY: 'auto',\n },\n },\n timelineWrapper: {\n width: '100%',\n marginTop: theme.spacing(2),\n },\n}));\n\nexport const HomePage = () => {\n const classes = useStyles();\n const { t } = useTranslationRef(qetaTranslationRef);\n\n return (\n <>\n <ContentHeader\n title={t('homePage.title')}\n titleIcon={<HomeOutlined fontSize=\"large\" />}\n >\n <AskQuestionButton />\n <WriteArticleButton />\n <CreateLinkButton />\n </ContentHeader>\n\n <Box className={classes.flexRow}>\n <Box className={classes.suggestionColumn}>\n <SuggestionsCard />\n </Box>\n <Box className={classes.followedColumn}>\n <FollowedItemsCard />\n </Box>\n </Box>\n\n <Box className={classes.flexRow}>\n <Box className={classes.equalColumn}>\n <ImpactCard />\n </Box>\n <Box className={classes.equalColumn}>\n <CommunityActivityCard />\n </Box>\n </Box>\n\n <Box className={classes.timelineWrapper}>\n <Timeline />\n </Box>\n </>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HomeTimeline.esm.js","sources":["../../../src/components/HomeTimeline/HomeTimeline.tsx"],"sourcesContent":["import { Timeline } from '@drodil/backstage-plugin-qeta-react';\n\nexport const HomeTimeline = () => {\n return <Timeline />;\n};\n"],"names":[],"mappings":";;;AAEO,MAAM,eAAe,MAAM;AAChC,EAAA,2BAAQ,
|
|
1
|
+
{"version":3,"file":"HomeTimeline.esm.js","sources":["../../../src/components/HomeTimeline/HomeTimeline.tsx"],"sourcesContent":["import { Timeline } from '@drodil/backstage-plugin-qeta-react';\n\nexport const HomeTimeline = () => {\n return <Timeline />;\n};\n"],"names":[],"mappings":";;;AAEO,MAAM,eAAe,MAAM;AAChC,EAAA,2BAAQ,QAAA,EAAA,EAAS,CAAA;AACnB;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -3,7 +3,7 @@ import { useParams } from 'react-router-dom';
|
|
|
3
3
|
import { useState, useEffect } from 'react';
|
|
4
4
|
import { useSignal } from '@backstage/plugin-signals-react';
|
|
5
5
|
import { WarningPanel } from '@backstage/core-components';
|
|
6
|
-
import { qetaApiRef, qetaTranslationRef, useQetaApi, ContentHeader,
|
|
6
|
+
import { qetaApiRef, qetaTranslationRef, useQetaApi, ContentHeader, PostHistoryButton, FollowPostButton, CreateLinkButton, AddToCollectionButton, FaviconItem, DraftBanner, DeletedBanner, LinkCard, RelativeTimeWithTooltip, UpdatedByLink } from '@drodil/backstage-plugin-qeta-react';
|
|
7
7
|
import { Skeleton } from '@material-ui/lab';
|
|
8
8
|
import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
|
|
9
9
|
import { makeStyles, Box } from '@material-ui/core';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LinkPage.esm.js","sources":["../../../src/components/LinkPage/LinkPage.tsx"],"sourcesContent":["import { useParams } from 'react-router-dom';\nimport { useEffect, useState } from 'react';\nimport { useSignal } from '@backstage/plugin-signals-react';\nimport { WarningPanel } from '@backstage/core-components';\nimport { PostResponse, QetaSignal } from '@drodil/backstage-plugin-qeta-common';\nimport {\n AddToCollectionButton,\n ContentHeader,\n CreateLinkButton,\n DeletedBanner,\n DraftBanner,\n LinkCard,\n PostHistoryButton,\n qetaTranslationRef,\n RelativeTimeWithTooltip,\n UpdatedByLink,\n useQetaApi,\n FaviconItem,\n qetaApiRef,\n FollowPostButton,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { Skeleton } from '@material-ui/lab';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { Box, makeStyles } from '@material-ui/core';\nimport { useApi } from '@backstage/core-plugin-api';\n\nconst useDescriptionStyles = makeStyles(\n () => ({\n root: {},\n box: {\n display: 'inline',\n },\n }),\n { name: 'QetaDescription' },\n);\n\nexport const LinkPage = () => {\n const { id } = useParams();\n const qetaApi = useApi(qetaApiRef);\n const { t } = useTranslationRef(qetaTranslationRef);\n const dStyles = useDescriptionStyles();\n const [score, setScore] = useState(0);\n const { lastSignal } = useSignal<QetaSignal>(`qeta:post_${id}`);\n\n const {\n value: post,\n loading,\n error,\n retry,\n } = useQetaApi(api => api.getPost(id), [id]);\n\n useEffect(() => {\n if (post) {\n setScore(post.score);\n }\n }, [post]);\n\n useEffect(() => {\n if (lastSignal?.type === 'post_stats') {\n setScore(lastSignal.score);\n }\n }, [lastSignal]);\n\n if (loading) {\n return <Skeleton variant=\"rect\" height={200} />;\n }\n\n if (error || post === undefined) {\n return (\n <WarningPanel severity=\"error\" title={t('linkPage.errorLoading')}>\n {error?.message}\n </WarningPanel>\n );\n }\n\n if (post.type !== 'link') {\n return <WarningPanel title=\"Not found\" message={t('linkPage.notFound')} />;\n }\n\n const getDescription = (q: PostResponse) => {\n return (\n <span className={dStyles.root}>\n <Box fontWeight=\"fontWeightMedium\" className={dStyles.box}>\n {t('authorBox.postedAtTime')}{' '}\n <RelativeTimeWithTooltip value={q.created} />\n {' · '}\n </Box>\n {q.updated && (\n <Box fontWeight=\"fontWeightMedium\" className={dStyles.box}>\n {t('authorBox.updatedAtTime')}{' '}\n <RelativeTimeWithTooltip value={q.updated} />{' '}\n {t('authorBox.updatedBy')} <UpdatedByLink entity={q} />\n {' · '}\n </Box>\n )}\n <Box fontWeight=\"fontWeightMedium\" className={dStyles.box}>\n {t('common.clicksCount', { count: score })}\n </Box>\n </span>\n );\n };\n\n return (\n <>\n <ContentHeader\n title={\n post.url ? (\n <a\n href={post.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n style={{ color: 'inherit', textDecoration: 'none' }}\n data-testid=\"link-title\"\n onClick={event => {\n event.stopPropagation();\n qetaApi.clickLink(post.id);\n }}\n >\n {post.title}\n </a>\n ) : (\n post.title\n )\n }\n titleIcon={post.url ? <FaviconItem entity={post} /> : undefined}\n description={getDescription(post)}\n >\n <PostHistoryButton post={post} onRestore={retry} />\n <FollowPostButton post={post} />\n <CreateLinkButton />\n <AddToCollectionButton post={post} />\n </ContentHeader>\n {post.status === 'draft' && <DraftBanner />}\n {post.status === 'deleted' && <DeletedBanner />}\n <LinkCard link={post} />\n </>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;AA0BA,MAAM,
|
|
1
|
+
{"version":3,"file":"LinkPage.esm.js","sources":["../../../src/components/LinkPage/LinkPage.tsx"],"sourcesContent":["import { useParams } from 'react-router-dom';\nimport { useEffect, useState } from 'react';\nimport { useSignal } from '@backstage/plugin-signals-react';\nimport { WarningPanel } from '@backstage/core-components';\nimport { PostResponse, QetaSignal } from '@drodil/backstage-plugin-qeta-common';\nimport {\n AddToCollectionButton,\n ContentHeader,\n CreateLinkButton,\n DeletedBanner,\n DraftBanner,\n LinkCard,\n PostHistoryButton,\n qetaTranslationRef,\n RelativeTimeWithTooltip,\n UpdatedByLink,\n useQetaApi,\n FaviconItem,\n qetaApiRef,\n FollowPostButton,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { Skeleton } from '@material-ui/lab';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { Box, makeStyles } from '@material-ui/core';\nimport { useApi } from '@backstage/core-plugin-api';\n\nconst useDescriptionStyles = makeStyles(\n () => ({\n root: {},\n box: {\n display: 'inline',\n },\n }),\n { name: 'QetaDescription' },\n);\n\nexport const LinkPage = () => {\n const { id } = useParams();\n const qetaApi = useApi(qetaApiRef);\n const { t } = useTranslationRef(qetaTranslationRef);\n const dStyles = useDescriptionStyles();\n const [score, setScore] = useState(0);\n const { lastSignal } = useSignal<QetaSignal>(`qeta:post_${id}`);\n\n const {\n value: post,\n loading,\n error,\n retry,\n } = useQetaApi(api => api.getPost(id), [id]);\n\n useEffect(() => {\n if (post) {\n setScore(post.score);\n }\n }, [post]);\n\n useEffect(() => {\n if (lastSignal?.type === 'post_stats') {\n setScore(lastSignal.score);\n }\n }, [lastSignal]);\n\n if (loading) {\n return <Skeleton variant=\"rect\" height={200} />;\n }\n\n if (error || post === undefined) {\n return (\n <WarningPanel severity=\"error\" title={t('linkPage.errorLoading')}>\n {error?.message}\n </WarningPanel>\n );\n }\n\n if (post.type !== 'link') {\n return <WarningPanel title=\"Not found\" message={t('linkPage.notFound')} />;\n }\n\n const getDescription = (q: PostResponse) => {\n return (\n <span className={dStyles.root}>\n <Box fontWeight=\"fontWeightMedium\" className={dStyles.box}>\n {t('authorBox.postedAtTime')}{' '}\n <RelativeTimeWithTooltip value={q.created} />\n {' · '}\n </Box>\n {q.updated && (\n <Box fontWeight=\"fontWeightMedium\" className={dStyles.box}>\n {t('authorBox.updatedAtTime')}{' '}\n <RelativeTimeWithTooltip value={q.updated} />{' '}\n {t('authorBox.updatedBy')} <UpdatedByLink entity={q} />\n {' · '}\n </Box>\n )}\n <Box fontWeight=\"fontWeightMedium\" className={dStyles.box}>\n {t('common.clicksCount', { count: score })}\n </Box>\n </span>\n );\n };\n\n return (\n <>\n <ContentHeader\n title={\n post.url ? (\n <a\n href={post.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n style={{ color: 'inherit', textDecoration: 'none' }}\n data-testid=\"link-title\"\n onClick={event => {\n event.stopPropagation();\n qetaApi.clickLink(post.id);\n }}\n >\n {post.title}\n </a>\n ) : (\n post.title\n )\n }\n titleIcon={post.url ? <FaviconItem entity={post} /> : undefined}\n description={getDescription(post)}\n >\n <PostHistoryButton post={post} onRestore={retry} />\n <FollowPostButton post={post} />\n <CreateLinkButton />\n <AddToCollectionButton post={post} />\n </ContentHeader>\n {post.status === 'draft' && <DraftBanner />}\n {post.status === 'deleted' && <DeletedBanner />}\n <LinkCard link={post} />\n </>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LinksPage.esm.js","sources":["../../../src/components/LinksPage/LinksPage.tsx"],"sourcesContent":["import { useSearchParams } from 'react-router-dom';\nimport { useEffect, useState } from 'react';\nimport {\n ContentHeader,\n CreateLinkButton,\n PostsContainer,\n qetaTranslationRef,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { filterTags } from '@drodil/backstage-plugin-qeta-common';\nimport LinkIcon from '@material-ui/icons/Link';\nimport { Typography } from '@material-ui/core';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\n\nexport const LinksPage = () => {\n const [searchParams] = useSearchParams();\n\n const [entityRef, setEntityRef] = useState<string | undefined>(undefined);\n const [tags, setTags] = useState<string[] | undefined>(undefined);\n const { t } = useTranslationRef(qetaTranslationRef);\n useEffect(() => {\n setEntityRef(searchParams.get('entity') ?? undefined);\n setTags(filterTags(searchParams.get('tags')));\n }, [searchParams, setEntityRef]);\n\n return (\n <>\n <ContentHeader\n titleComponent={\n <Typography\n variant=\"h4\"\n style={{ display: 'flex', alignItems: 'center' }}\n >\n <LinkIcon fontSize=\"large\" style={{ marginRight: '8px' }} />\n {t('linksPage.title')}\n </Typography>\n }\n >\n <CreateLinkButton entity={entityRef} tags={tags} />\n </ContentHeader>\n <PostsContainer type=\"link\" defaultView=\"list\" />\n </>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;AAaO,MAAM,YAAY,MAAM;AAC7B,
|
|
1
|
+
{"version":3,"file":"LinksPage.esm.js","sources":["../../../src/components/LinksPage/LinksPage.tsx"],"sourcesContent":["import { useSearchParams } from 'react-router-dom';\nimport { useEffect, useState } from 'react';\nimport {\n ContentHeader,\n CreateLinkButton,\n PostsContainer,\n qetaTranslationRef,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { filterTags } from '@drodil/backstage-plugin-qeta-common';\nimport LinkIcon from '@material-ui/icons/Link';\nimport { Typography } from '@material-ui/core';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\n\nexport const LinksPage = () => {\n const [searchParams] = useSearchParams();\n\n const [entityRef, setEntityRef] = useState<string | undefined>(undefined);\n const [tags, setTags] = useState<string[] | undefined>(undefined);\n const { t } = useTranslationRef(qetaTranslationRef);\n useEffect(() => {\n setEntityRef(searchParams.get('entity') ?? undefined);\n setTags(filterTags(searchParams.get('tags')));\n }, [searchParams, setEntityRef]);\n\n return (\n <>\n <ContentHeader\n titleComponent={\n <Typography\n variant=\"h4\"\n style={{ display: 'flex', alignItems: 'center' }}\n >\n <LinkIcon fontSize=\"large\" style={{ marginRight: '8px' }} />\n {t('linksPage.title')}\n </Typography>\n }\n >\n <CreateLinkButton entity={entityRef} tags={tags} />\n </ContentHeader>\n <PostsContainer type=\"link\" defaultView=\"list\" />\n </>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;AAaO,MAAM,YAAY,MAAM;AAC7B,EAAA,MAAM,CAAC,YAAY,CAAA,GAAI,eAAA,EAAgB;AAEvC,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAA6B,MAAS,CAAA;AACxE,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,SAA+B,MAAS,CAAA;AAChE,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,kBAAkB,CAAA;AAClD,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,YAAA,CAAa,YAAA,CAAa,GAAA,CAAI,QAAQ,CAAA,IAAK,MAAS,CAAA;AACpD,IAAA,OAAA,CAAQ,UAAA,CAAW,YAAA,CAAa,GAAA,CAAI,MAAM,CAAC,CAAC,CAAA;AAAA,EAC9C,CAAA,EAAG,CAAC,YAAA,EAAc,YAAY,CAAC,CAAA;AAE/B,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,aAAA;AAAA,MAAA;AAAA,QACC,cAAA,kBACE,IAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAQ,IAAA;AAAA,YACR,KAAA,EAAO,EAAE,OAAA,EAAS,MAAA,EAAQ,YAAY,QAAA,EAAS;AAAA,YAE/C,QAAA,EAAA;AAAA,8BAAA,GAAA,CAAC,YAAS,QAAA,EAAS,OAAA,EAAQ,OAAO,EAAE,WAAA,EAAa,OAAM,EAAG,CAAA;AAAA,cACzD,EAAE,iBAAiB;AAAA;AAAA;AAAA,SACtB;AAAA,QAGF,QAAA,kBAAA,GAAA,CAAC,gBAAA,EAAA,EAAiB,MAAA,EAAQ,SAAA,EAAW,IAAA,EAAY;AAAA;AAAA,KACnD;AAAA,oBACA,GAAA,CAAC,cAAA,EAAA,EAAe,IAAA,EAAK,MAAA,EAAO,aAAY,MAAA,EAAO;AAAA,GAAA,EACjD,CAAA;AAEJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModeratorPage.esm.js","sources":["../../../src/components/ModeratorPage/ModeratorPage.tsx"],"sourcesContent":["import { ChangeEvent, useState } from 'react';\nimport {\n ContentHeader,\n PostsContainer,\n qetaTranslationRef,\n TemplateList,\n useIsModerator,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { Box, Tab } from '@material-ui/core';\nimport { Alert, TabContext, TabList, TabPanel } from '@material-ui/lab';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport SettingsOutlined from '@material-ui/icons/SettingsOutlined';\n\nexport const ModeratorPage = () => {\n const { isModerator } = useIsModerator();\n const [tab, setTab] = useState('templates');\n const { t } = useTranslationRef(qetaTranslationRef);\n\n if (!isModerator) {\n return null;\n }\n\n const handleChange = (_event: ChangeEvent<{}>, newValue: string) => {\n setTab(newValue);\n };\n\n return (\n <>\n <ContentHeader\n title={t('moderatorPage.title')}\n titleIcon={<SettingsOutlined fontSize=\"large\" />}\n />\n <TabContext value={tab}>\n <Box sx={{ borderBottom: 1, borderColor: 'divider' }}>\n <TabList\n onChange={handleChange}\n aria-label={t('moderatorPage.tools')}\n >\n <Tab label={t('moderatorPage.templates')} value=\"templates\" />\n <Tab label={t('moderatorPage.deletedPosts')} value=\"deletedPosts\" />\n </TabList>\n </Box>\n <TabPanel value=\"templates\" style={{ padding: '24px 0' }}>\n <Alert severity=\"info\" style={{ marginBottom: '1em' }}>\n {t('moderatorPage.templatesInfo')}\n </Alert>\n <TemplateList />\n </TabPanel>\n <TabPanel value=\"deletedPosts\" style={{ padding: '24px 0' }}>\n <PostsContainer\n status=\"deleted\"\n showNoQuestionsBtn={false}\n showTypeLabel\n />\n </TabPanel>\n </TabContext>\n </>\n );\n};\n"],"names":[],"mappings":";;;;;;;;AAaO,MAAM,gBAAgB,MAAM;AACjC,
|
|
1
|
+
{"version":3,"file":"ModeratorPage.esm.js","sources":["../../../src/components/ModeratorPage/ModeratorPage.tsx"],"sourcesContent":["import { ChangeEvent, useState } from 'react';\nimport {\n ContentHeader,\n PostsContainer,\n qetaTranslationRef,\n TemplateList,\n useIsModerator,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { Box, Tab } from '@material-ui/core';\nimport { Alert, TabContext, TabList, TabPanel } from '@material-ui/lab';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport SettingsOutlined from '@material-ui/icons/SettingsOutlined';\n\nexport const ModeratorPage = () => {\n const { isModerator } = useIsModerator();\n const [tab, setTab] = useState('templates');\n const { t } = useTranslationRef(qetaTranslationRef);\n\n if (!isModerator) {\n return null;\n }\n\n const handleChange = (_event: ChangeEvent<{}>, newValue: string) => {\n setTab(newValue);\n };\n\n return (\n <>\n <ContentHeader\n title={t('moderatorPage.title')}\n titleIcon={<SettingsOutlined fontSize=\"large\" />}\n />\n <TabContext value={tab}>\n <Box sx={{ borderBottom: 1, borderColor: 'divider' }}>\n <TabList\n onChange={handleChange}\n aria-label={t('moderatorPage.tools')}\n >\n <Tab label={t('moderatorPage.templates')} value=\"templates\" />\n <Tab label={t('moderatorPage.deletedPosts')} value=\"deletedPosts\" />\n </TabList>\n </Box>\n <TabPanel value=\"templates\" style={{ padding: '24px 0' }}>\n <Alert severity=\"info\" style={{ marginBottom: '1em' }}>\n {t('moderatorPage.templatesInfo')}\n </Alert>\n <TemplateList />\n </TabPanel>\n <TabPanel value=\"deletedPosts\" style={{ padding: '24px 0' }}>\n <PostsContainer\n status=\"deleted\"\n showNoQuestionsBtn={false}\n showTypeLabel\n />\n </TabPanel>\n </TabContext>\n </>\n );\n};\n"],"names":[],"mappings":";;;;;;;;AAaO,MAAM,gBAAgB,MAAM;AACjC,EAAA,MAAM,EAAE,WAAA,EAAY,GAAI,cAAA,EAAe;AACvC,EAAA,MAAM,CAAC,GAAA,EAAK,MAAM,CAAA,GAAI,SAAS,WAAW,CAAA;AAC1C,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,kBAAkB,CAAA;AAElD,EAAA,IAAI,CAAC,WAAA,EAAa;AAChB,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,YAAA,GAAe,CAAC,MAAA,EAAyB,QAAA,KAAqB;AAClE,IAAA,MAAA,CAAO,QAAQ,CAAA;AAAA,EACjB,CAAA;AAEA,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,aAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,EAAE,qBAAqB,CAAA;AAAA,QAC9B,SAAA,kBAAW,GAAA,CAAC,gBAAA,EAAA,EAAiB,QAAA,EAAS,OAAA,EAAQ;AAAA;AAAA,KAChD;AAAA,oBACA,IAAA,CAAC,UAAA,EAAA,EAAW,KAAA,EAAO,GAAA,EACjB,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,OAAI,EAAA,EAAI,EAAE,cAAc,CAAA,EAAG,WAAA,EAAa,WAAU,EACjD,QAAA,kBAAA,IAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,QAAA,EAAU,YAAA;AAAA,UACV,YAAA,EAAY,EAAE,qBAAqB,CAAA;AAAA,UAEnC,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,OAAI,KAAA,EAAO,CAAA,CAAE,yBAAyB,CAAA,EAAG,OAAM,WAAA,EAAY,CAAA;AAAA,gCAC3D,GAAA,EAAA,EAAI,KAAA,EAAO,EAAE,4BAA4B,CAAA,EAAG,OAAM,cAAA,EAAe;AAAA;AAAA;AAAA,OACpE,EACF,CAAA;AAAA,sBACA,IAAA,CAAC,YAAS,KAAA,EAAM,WAAA,EAAY,OAAO,EAAE,OAAA,EAAS,UAAS,EACrD,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,KAAA,EAAA,EAAM,QAAA,EAAS,MAAA,EAAO,KAAA,EAAO,EAAE,cAAc,KAAA,EAAM,EACjD,QAAA,EAAA,CAAA,CAAE,6BAA6B,CAAA,EAClC,CAAA;AAAA,4BACC,YAAA,EAAA,EAAa;AAAA,OAAA,EAChB,CAAA;AAAA,sBACA,GAAA,CAAC,YAAS,KAAA,EAAM,cAAA,EAAe,OAAO,EAAE,OAAA,EAAS,UAAS,EACxD,QAAA,kBAAA,GAAA;AAAA,QAAC,cAAA;AAAA,QAAA;AAAA,UACC,MAAA,EAAO,SAAA;AAAA,UACP,kBAAA,EAAoB,KAAA;AAAA,UACpB,aAAA,EAAa;AAAA;AAAA,OACf,EACF;AAAA,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Content.esm.js","sources":["../../../src/components/PostsTableCard/Content.tsx"],"sourcesContent":["import { PostsTable, QetaProvider } from '@drodil/backstage-plugin-qeta-react';\nimport { PostType } from '@drodil/backstage-plugin-qeta-common';\nimport type { PluggableList } from 'unified';\n\nexport const Content = (props: {\n rowsPerPage?: number;\n quickFilter?: 'latest' | 'favorites' | 'most_viewed';\n postType?: PostType | 'all';\n remarkPlugins?: PluggableList;\n rehypePlugins?: PluggableList;\n}) => {\n const postType = props.postType === 'all' ? undefined : props.postType;\n\n return (\n <QetaProvider\n remarkPlugins={props.remarkPlugins}\n rehypePlugins={props.rehypePlugins}\n >\n <PostsTable hideTitle {...props} postType={postType} />\n </QetaProvider>\n );\n};\n"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"Content.esm.js","sources":["../../../src/components/PostsTableCard/Content.tsx"],"sourcesContent":["import { PostsTable, QetaProvider } from '@drodil/backstage-plugin-qeta-react';\nimport { PostType } from '@drodil/backstage-plugin-qeta-common';\nimport type { PluggableList } from 'unified';\n\nexport const Content = (props: {\n rowsPerPage?: number;\n quickFilter?: 'latest' | 'favorites' | 'most_viewed';\n postType?: PostType | 'all';\n remarkPlugins?: PluggableList;\n rehypePlugins?: PluggableList;\n}) => {\n const postType = props.postType === 'all' ? undefined : props.postType;\n\n return (\n <QetaProvider\n remarkPlugins={props.remarkPlugins}\n rehypePlugins={props.rehypePlugins}\n >\n <PostsTable hideTitle {...props} postType={postType} />\n </QetaProvider>\n );\n};\n"],"names":[],"mappings":";;;AAIO,MAAM,OAAA,GAAU,CAAC,KAAA,KAMlB;AACJ,EAAA,MAAM,QAAA,GAAW,KAAA,CAAM,QAAA,KAAa,KAAA,GAAQ,SAAY,KAAA,CAAM,QAAA;AAE9D,EAAA,uBACE,GAAA;AAAA,IAAC,YAAA;AAAA,IAAA;AAAA,MACC,eAAe,KAAA,CAAM,aAAA;AAAA,MACrB,eAAe,KAAA,CAAM,aAAA;AAAA,MAErB,8BAAC,UAAA,EAAA,EAAW,SAAA,EAAS,IAAA,EAAE,GAAG,OAAO,QAAA,EAAoB;AAAA;AAAA,GACvD;AAEJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -25,7 +25,7 @@ import { UsersPage } from '../UsersPage/UsersPage.esm.js';
|
|
|
25
25
|
import { ModeratorPage } from '../ModeratorPage/ModeratorPage.esm.js';
|
|
26
26
|
import { ReviewPage } from '../ReviewPage/ReviewPage.esm.js';
|
|
27
27
|
import { SettingsPage } from '../SettingsPage/SettingsPage.esm.js';
|
|
28
|
-
import {
|
|
28
|
+
import { Container, Grid, Box, makeStyles } from '@material-ui/core';
|
|
29
29
|
import { useSidebarSettings } from '../../hooks/useSidebarSettings.esm.js';
|
|
30
30
|
import { RightContent } from '../RightContent/RightContent.esm.js';
|
|
31
31
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QetaPage.esm.js","sources":["../../../src/components/QetaPage/QetaPage.tsx"],"sourcesContent":["import { Fragment, ReactNode } from 'react';\nimport { Content, Header, Page } from '@backstage/core-components';\nimport { Route, Routes, useLocation } from 'react-router-dom';\nimport { AskPage } from '../AskPage';\nimport { QuestionPage } from '../QuestionPage/QuestionPage';\nimport { TagPage } from '../TagPage/TagPage';\nimport { UserPage } from '../UserPage/UserPage';\nimport { FavoritePage } from '../FavoritePage/FavoritePage';\nimport { StatisticsPage } from '../Statistics';\nimport {\n articleRouteRef,\n articlesRouteRef,\n askRouteRef,\n collectionCreateRouteRef,\n collectionEditRouteRef,\n collectionRouteRef,\n collectionsRouteRef,\n createLinkRouteRef,\n editArticleRouteRef,\n editLinkRouteRef,\n editQuestionRouteRef,\n entitiesRouteRef,\n entityRouteRef,\n favoriteQuestionsRouteRef,\n LeftMenu,\n LeftMenuButton,\n linkRouteRef,\n linksRouteRef,\n moderatorRouteRef,\n QetaProvider,\n questionRouteRef,\n questionsRouteRef,\n reviewRouteRef,\n settingsRouteRef,\n statisticsRouteRef,\n tagRouteRef,\n tagsRouteRef,\n userRouteRef,\n usersRouteRef,\n writeRouteRef,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { QuestionsPage } from '../QuestionsPage/QuestionsPage';\nimport { HomePage } from '../HomePage/HomePage';\nimport { ArticlesPage } from '../ArticlesPage/ArticlesPage';\nimport { WritePage } from '../WritePage/WritePage';\nimport { ArticlePage } from '../ArticlePage/ArticlePage';\nimport { LinksPage } from '../LinksPage/LinksPage';\nimport { LinkPage } from '../LinkPage/LinkPage';\nimport { CreateLinkPage } from '../CreateLinkPage/CreateLinkPage';\nimport { CollectionsPage } from '../CollectionsPage/CollectionsPage';\nimport { CollectionPage } from '../CollectionPage/CollectionPage';\nimport { CollectionCreatePage } from '../CollectionCreatePage/CollectionCreatePage';\nimport { EntityPage } from '../EntityPage/EntityPage';\nimport { UsersPage } from '../UsersPage/UsersPage';\nimport { ModeratorPage } from '../ModeratorPage/ModeratorPage';\nimport { ReviewPage } from '../ReviewPage/ReviewPage';\nimport { SettingsPage } from '../SettingsPage/SettingsPage';\nimport { Box, Container, Grid, makeStyles } from '@material-ui/core';\nimport { useSidebarSettings } from '../../hooks/useSidebarSettings';\nimport { RightContent } from '../RightContent/RightContent';\nimport type { PluggableList } from 'unified';\n\ntype Props = {\n title?: string;\n subtitle?: string;\n headerElements?: ReactNode[];\n themeId?: string;\n headerTooltip?: string;\n headerType?: string;\n headerTypeLink?: string;\n introElement?: ReactNode;\n remarkPlugins?: PluggableList;\n rehypePlugins?: PluggableList;\n};\n\ntype StyleProps = {\n leftCompact: boolean;\n rightCompact: boolean;\n};\n\nconst useStyles = makeStyles(theme => ({\n sidebarColumn: {\n padding: 0,\n transition: 'all 0.2s ease-in-out',\n flexShrink: 0,\n position: 'sticky',\n top: theme.spacing(2),\n alignSelf: 'flex-start',\n maxHeight: 'calc(100dvh - 20px)',\n overflowX: 'hidden',\n [theme.breakpoints.up('lg')]: {\n width: (props: StyleProps) => (props.leftCompact ? 80 : 180),\n minWidth: (props: StyleProps) => (props.leftCompact ? 80 : 180),\n },\n [theme.breakpoints.down('md')]: {\n width: '100%',\n marginBottom: theme.spacing(1),\n position: 'static',\n maxHeight: 'none',\n },\n '-ms-overflow-style': 'none',\n 'scrollbar-width': 'none',\n '&::-webkit-scrollbar': {\n display: 'none',\n },\n },\n rightSidebarColumn: {\n padding: 0,\n transition: 'all 0.2s ease-in-out',\n flexShrink: 0,\n position: 'sticky',\n top: theme.spacing(2),\n alignSelf: 'flex-start',\n maxHeight: 'calc(100vh - 150px)',\n overflowY: 'auto',\n overflowX: 'hidden',\n // Hide scrollbar but keep scrolling functionality\n scrollbarWidth: 'none', // Firefox\n '-ms-overflow-style': 'none', // IE/Edge\n '&::-webkit-scrollbar': {\n display: 'none', // Chrome/Safari/Edge\n },\n [theme.breakpoints.up('lg')]: {\n width: (props: StyleProps) => (props.rightCompact ? 72 : 250),\n minWidth: (props: StyleProps) => (props.rightCompact ? 72 : 250),\n },\n [theme.breakpoints.down('md')]: {\n display: 'none',\n },\n },\n mainColumn: {\n paddingRight: 0,\n minWidth: 0,\n transition: 'all 0.2s ease-in-out',\n [theme.breakpoints.down('md')]: {\n paddingLeft: 0,\n },\n },\n}));\n\nexport const QetaPage = (props?: Props) => {\n const {\n title = 'Q&A',\n subtitle,\n headerElements,\n themeId = 'tool',\n headerTooltip,\n headerType,\n headerTypeLink,\n introElement,\n remarkPlugins,\n rehypePlugins,\n } = props ?? {};\n const { leftCompact, rightCompact, toggleLeft, toggleRight } =\n useSidebarSettings();\n const location = useLocation();\n\n // Hide right sidebar on review and moderator pages\n const hideRightSidebar =\n location.pathname.includes('/review') ||\n location.pathname.includes('/moderate');\n\n const classes = useStyles({\n leftCompact,\n rightCompact,\n });\n\n return (\n <QetaProvider remarkPlugins={remarkPlugins} rehypePlugins={rehypePlugins}>\n <Page themeId={themeId}>\n <Header\n title={title}\n subtitle={subtitle}\n type={headerType}\n typeLink={headerTypeLink}\n tooltip={headerTooltip}\n >\n {headerElements?.map((element, index) => (\n <Fragment key={index}>{element}</Fragment>\n ))}\n </Header>\n <Content className=\"qetaHomePage\">\n {introElement}\n <Container maxWidth=\"xl\">\n <Grid\n container\n spacing={3}\n justifyContent=\"flex-start\"\n alignItems=\"flex-start\"\n >\n <Grid item className={classes.sidebarColumn}>\n <Box display={{ xs: 'block', lg: 'none' }}>\n <LeftMenuButton />\n </Box>\n <Box display={{ xs: 'none', lg: 'block' }}>\n <LeftMenu compact={leftCompact} onToggle={toggleLeft} />\n </Box>\n </Grid>\n <Grid item xs className={classes.mainColumn}>\n <Routes>\n <Route path=\"/\" element={<HomePage />} />\n <Route\n path={questionsRouteRef.path}\n element={<QuestionsPage />}\n />\n <Route path={askRouteRef.path} element={<AskPage />} />\n <Route\n path={articlesRouteRef.path}\n element={<ArticlesPage />}\n />\n <Route path={writeRouteRef.path} element={<WritePage />} />\n <Route path={linksRouteRef.path} element={<LinksPage />} />\n <Route\n path={createLinkRouteRef.path}\n element={<CreateLinkPage />}\n />\n <Route\n path={favoriteQuestionsRouteRef.path}\n element={<FavoritePage />}\n />\n <Route\n path={editQuestionRouteRef.path}\n element={<AskPage />}\n />\n <Route\n path={editArticleRouteRef.path}\n element={<WritePage />}\n />\n <Route\n path={editLinkRouteRef.path}\n element={<CreateLinkPage />}\n />\n <Route\n path={questionRouteRef.path}\n element={<QuestionPage />}\n />\n <Route path={linkRouteRef.path} element={<LinkPage />} />\n <Route\n path={articleRouteRef.path}\n element={<ArticlePage />}\n />\n <Route path={tagsRouteRef.path} element={<TagPage />} />\n <Route path={tagRouteRef.path} element={<TagPage />} />\n <Route path={usersRouteRef.path} element={<UsersPage />} />\n <Route path={userRouteRef.path} element={<UserPage />} />\n <Route\n path={statisticsRouteRef.path}\n element={<StatisticsPage />}\n />\n <Route\n path={collectionsRouteRef.path}\n element={<CollectionsPage />}\n />\n <Route\n path={collectionCreateRouteRef.path}\n element={<CollectionCreatePage />}\n />\n <Route\n path={collectionEditRouteRef.path}\n element={<CollectionCreatePage />}\n />\n <Route\n path={collectionRouteRef.path}\n element={<CollectionPage />}\n />\n <Route\n path={entitiesRouteRef.path}\n element={<EntityPage />}\n />\n <Route path={entityRouteRef.path} element={<EntityPage />} />\n <Route\n path={moderatorRouteRef.path}\n element={<ModeratorPage />}\n />\n <Route path={reviewRouteRef.path} element={<ReviewPage />} />\n <Route\n path={settingsRouteRef.path}\n element={<SettingsPage />}\n />\n </Routes>\n </Grid>\n {!hideRightSidebar && (\n <Grid item className={classes.rightSidebarColumn}>\n <RightContent compact={rightCompact} onToggle={toggleRight} />\n </Grid>\n )}\n </Grid>\n </Container>\n </Content>\n </Page>\n </QetaProvider>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"QetaPage.esm.js","sources":["../../../src/components/QetaPage/QetaPage.tsx"],"sourcesContent":["import { Fragment, ReactNode } from 'react';\nimport { Content, Header, Page } from '@backstage/core-components';\nimport { Route, Routes, useLocation } from 'react-router-dom';\nimport { AskPage } from '../AskPage';\nimport { QuestionPage } from '../QuestionPage/QuestionPage';\nimport { TagPage } from '../TagPage/TagPage';\nimport { UserPage } from '../UserPage/UserPage';\nimport { FavoritePage } from '../FavoritePage/FavoritePage';\nimport { StatisticsPage } from '../Statistics';\nimport {\n articleRouteRef,\n articlesRouteRef,\n askRouteRef,\n collectionCreateRouteRef,\n collectionEditRouteRef,\n collectionRouteRef,\n collectionsRouteRef,\n createLinkRouteRef,\n editArticleRouteRef,\n editLinkRouteRef,\n editQuestionRouteRef,\n entitiesRouteRef,\n entityRouteRef,\n favoriteQuestionsRouteRef,\n LeftMenu,\n LeftMenuButton,\n linkRouteRef,\n linksRouteRef,\n moderatorRouteRef,\n QetaProvider,\n questionRouteRef,\n questionsRouteRef,\n reviewRouteRef,\n settingsRouteRef,\n statisticsRouteRef,\n tagRouteRef,\n tagsRouteRef,\n userRouteRef,\n usersRouteRef,\n writeRouteRef,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { QuestionsPage } from '../QuestionsPage/QuestionsPage';\nimport { HomePage } from '../HomePage/HomePage';\nimport { ArticlesPage } from '../ArticlesPage/ArticlesPage';\nimport { WritePage } from '../WritePage/WritePage';\nimport { ArticlePage } from '../ArticlePage/ArticlePage';\nimport { LinksPage } from '../LinksPage/LinksPage';\nimport { LinkPage } from '../LinkPage/LinkPage';\nimport { CreateLinkPage } from '../CreateLinkPage/CreateLinkPage';\nimport { CollectionsPage } from '../CollectionsPage/CollectionsPage';\nimport { CollectionPage } from '../CollectionPage/CollectionPage';\nimport { CollectionCreatePage } from '../CollectionCreatePage/CollectionCreatePage';\nimport { EntityPage } from '../EntityPage/EntityPage';\nimport { UsersPage } from '../UsersPage/UsersPage';\nimport { ModeratorPage } from '../ModeratorPage/ModeratorPage';\nimport { ReviewPage } from '../ReviewPage/ReviewPage';\nimport { SettingsPage } from '../SettingsPage/SettingsPage';\nimport { Box, Container, Grid, makeStyles } from '@material-ui/core';\nimport { useSidebarSettings } from '../../hooks/useSidebarSettings';\nimport { RightContent } from '../RightContent/RightContent';\nimport type { PluggableList } from 'unified';\n\ntype Props = {\n title?: string;\n subtitle?: string;\n headerElements?: ReactNode[];\n themeId?: string;\n headerTooltip?: string;\n headerType?: string;\n headerTypeLink?: string;\n introElement?: ReactNode;\n remarkPlugins?: PluggableList;\n rehypePlugins?: PluggableList;\n};\n\ntype StyleProps = {\n leftCompact: boolean;\n rightCompact: boolean;\n};\n\nconst useStyles = makeStyles(theme => ({\n sidebarColumn: {\n padding: 0,\n transition: 'all 0.2s ease-in-out',\n flexShrink: 0,\n position: 'sticky',\n top: theme.spacing(2),\n alignSelf: 'flex-start',\n maxHeight: 'calc(100dvh - 20px)',\n overflowX: 'hidden',\n [theme.breakpoints.up('lg')]: {\n width: (props: StyleProps) => (props.leftCompact ? 80 : 180),\n minWidth: (props: StyleProps) => (props.leftCompact ? 80 : 180),\n },\n [theme.breakpoints.down('md')]: {\n width: '100%',\n marginBottom: theme.spacing(1),\n position: 'static',\n maxHeight: 'none',\n },\n '-ms-overflow-style': 'none',\n 'scrollbar-width': 'none',\n '&::-webkit-scrollbar': {\n display: 'none',\n },\n },\n rightSidebarColumn: {\n padding: 0,\n transition: 'all 0.2s ease-in-out',\n flexShrink: 0,\n position: 'sticky',\n top: theme.spacing(2),\n alignSelf: 'flex-start',\n maxHeight: 'calc(100vh - 150px)',\n overflowY: 'auto',\n overflowX: 'hidden',\n // Hide scrollbar but keep scrolling functionality\n scrollbarWidth: 'none', // Firefox\n '-ms-overflow-style': 'none', // IE/Edge\n '&::-webkit-scrollbar': {\n display: 'none', // Chrome/Safari/Edge\n },\n [theme.breakpoints.up('lg')]: {\n width: (props: StyleProps) => (props.rightCompact ? 72 : 250),\n minWidth: (props: StyleProps) => (props.rightCompact ? 72 : 250),\n },\n [theme.breakpoints.down('md')]: {\n display: 'none',\n },\n },\n mainColumn: {\n paddingRight: 0,\n minWidth: 0,\n transition: 'all 0.2s ease-in-out',\n [theme.breakpoints.down('md')]: {\n paddingLeft: 0,\n },\n },\n}));\n\nexport const QetaPage = (props?: Props) => {\n const {\n title = 'Q&A',\n subtitle,\n headerElements,\n themeId = 'tool',\n headerTooltip,\n headerType,\n headerTypeLink,\n introElement,\n remarkPlugins,\n rehypePlugins,\n } = props ?? {};\n const { leftCompact, rightCompact, toggleLeft, toggleRight } =\n useSidebarSettings();\n const location = useLocation();\n\n // Hide right sidebar on review and moderator pages\n const hideRightSidebar =\n location.pathname.includes('/review') ||\n location.pathname.includes('/moderate');\n\n const classes = useStyles({\n leftCompact,\n rightCompact,\n });\n\n return (\n <QetaProvider remarkPlugins={remarkPlugins} rehypePlugins={rehypePlugins}>\n <Page themeId={themeId}>\n <Header\n title={title}\n subtitle={subtitle}\n type={headerType}\n typeLink={headerTypeLink}\n tooltip={headerTooltip}\n >\n {headerElements?.map((element, index) => (\n <Fragment key={index}>{element}</Fragment>\n ))}\n </Header>\n <Content className=\"qetaHomePage\">\n {introElement}\n <Container maxWidth=\"xl\">\n <Grid\n container\n spacing={3}\n justifyContent=\"flex-start\"\n alignItems=\"flex-start\"\n >\n <Grid item className={classes.sidebarColumn}>\n <Box display={{ xs: 'block', lg: 'none' }}>\n <LeftMenuButton />\n </Box>\n <Box display={{ xs: 'none', lg: 'block' }}>\n <LeftMenu compact={leftCompact} onToggle={toggleLeft} />\n </Box>\n </Grid>\n <Grid item xs className={classes.mainColumn}>\n <Routes>\n <Route path=\"/\" element={<HomePage />} />\n <Route\n path={questionsRouteRef.path}\n element={<QuestionsPage />}\n />\n <Route path={askRouteRef.path} element={<AskPage />} />\n <Route\n path={articlesRouteRef.path}\n element={<ArticlesPage />}\n />\n <Route path={writeRouteRef.path} element={<WritePage />} />\n <Route path={linksRouteRef.path} element={<LinksPage />} />\n <Route\n path={createLinkRouteRef.path}\n element={<CreateLinkPage />}\n />\n <Route\n path={favoriteQuestionsRouteRef.path}\n element={<FavoritePage />}\n />\n <Route\n path={editQuestionRouteRef.path}\n element={<AskPage />}\n />\n <Route\n path={editArticleRouteRef.path}\n element={<WritePage />}\n />\n <Route\n path={editLinkRouteRef.path}\n element={<CreateLinkPage />}\n />\n <Route\n path={questionRouteRef.path}\n element={<QuestionPage />}\n />\n <Route path={linkRouteRef.path} element={<LinkPage />} />\n <Route\n path={articleRouteRef.path}\n element={<ArticlePage />}\n />\n <Route path={tagsRouteRef.path} element={<TagPage />} />\n <Route path={tagRouteRef.path} element={<TagPage />} />\n <Route path={usersRouteRef.path} element={<UsersPage />} />\n <Route path={userRouteRef.path} element={<UserPage />} />\n <Route\n path={statisticsRouteRef.path}\n element={<StatisticsPage />}\n />\n <Route\n path={collectionsRouteRef.path}\n element={<CollectionsPage />}\n />\n <Route\n path={collectionCreateRouteRef.path}\n element={<CollectionCreatePage />}\n />\n <Route\n path={collectionEditRouteRef.path}\n element={<CollectionCreatePage />}\n />\n <Route\n path={collectionRouteRef.path}\n element={<CollectionPage />}\n />\n <Route\n path={entitiesRouteRef.path}\n element={<EntityPage />}\n />\n <Route path={entityRouteRef.path} element={<EntityPage />} />\n <Route\n path={moderatorRouteRef.path}\n element={<ModeratorPage />}\n />\n <Route path={reviewRouteRef.path} element={<ReviewPage />} />\n <Route\n path={settingsRouteRef.path}\n element={<SettingsPage />}\n />\n </Routes>\n </Grid>\n {!hideRightSidebar && (\n <Grid item className={classes.rightSidebarColumn}>\n <RightContent compact={rightCompact} onToggle={toggleRight} />\n </Grid>\n )}\n </Grid>\n </Container>\n </Content>\n </Page>\n </QetaProvider>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -3,8 +3,8 @@ import { DateTime } from 'luxon';
|
|
|
3
3
|
import { Link } from '@backstage/core-components';
|
|
4
4
|
import { HighlightedSearchResultText } from '@backstage/plugin-search-react';
|
|
5
5
|
import CollectionsBookmarkIcon from '@material-ui/icons/CollectionsBookmark';
|
|
6
|
-
import {
|
|
7
|
-
import { truncate, removeMarkdownFormatting
|
|
6
|
+
import { ListItem, ListItemIcon, ListItemText, Divider, makeStyles } from '@material-ui/core';
|
|
7
|
+
import { selectByPostType, truncate, removeMarkdownFormatting } from '@drodil/backstage-plugin-qeta-common';
|
|
8
8
|
import { EntityRefLink } from '@backstage/plugin-catalog-react';
|
|
9
9
|
import HelpOutlined from '@material-ui/icons/HelpOutlined';
|
|
10
10
|
import PlaylistPlayIcon from '@material-ui/icons/PlaylistPlay';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QetaSearchResultListItem.esm.js","sources":["../../../src/components/QetaSearchResultListItem/QetaSearchResultListItem.tsx"],"sourcesContent":["import { DateTime } from 'luxon';\nimport { Link } from '@backstage/core-components';\nimport {\n IndexableDocument,\n ResultHighlight,\n} from '@backstage/plugin-search-common';\nimport { HighlightedSearchResultText } from '@backstage/plugin-search-react';\nimport CollectionsBookmarkIcon from '@material-ui/icons/CollectionsBookmark';\nimport {\n Divider,\n ListItem,\n ListItemIcon,\n ListItemText,\n makeStyles,\n} from '@material-ui/core';\nimport {\n QetaCollectionDocument,\n QetaPostDocument,\n QetaSearchDocument,\n removeMarkdownFormatting,\n selectByPostType,\n truncate,\n} from '@drodil/backstage-plugin-qeta-common';\nimport { EntityRefLink } from '@backstage/plugin-catalog-react';\nimport HelpOutlined from '@material-ui/icons/HelpOutlined';\nimport PlaylistPlay from '@material-ui/icons/PlaylistPlay';\nimport DOMPurify from 'dompurify';\nimport { capitalize } from 'lodash';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { qetaTranslationRef } from '@drodil/backstage-plugin-qeta-react';\nimport LinkIcon from '@material-ui/icons/Link';\nimport { parseEntityRef } from '@backstage/catalog-model';\n\nconst useStyles = makeStyles({\n excerptText: {\n display: 'block',\n marginTop: '0.2rem',\n marginBottom: '0.4rem',\n },\n excerpt: {\n lineHeight: '1.55',\n },\n itemText: {\n wordBreak: 'break-all',\n },\n});\n\nexport type QetaSearchResultListItemProps = {\n result?: IndexableDocument;\n highlight?: ResultHighlight;\n rank?: number;\n hideIcon?: boolean;\n};\n\nconst isQetaSearchDocument = (\n document: IndexableDocument,\n): document is QetaSearchDocument => {\n return (\n 'docType' in document &&\n (document.docType === 'qeta_post' || document.docType === 'qeta_collection')\n );\n};\n\nconst isQetaPostDocument = (\n document: QetaSearchDocument,\n): document is QetaPostDocument => {\n return document.docType === 'qeta_post';\n};\n\nconst isQetaCollectionDocument = (\n document: QetaSearchDocument,\n): document is QetaCollectionDocument => {\n return document.docType === 'qeta_collection';\n};\n\nconst Excerpt = (props: {\n document: QetaSearchDocument;\n highlight?: ResultHighlight;\n}) => {\n const { document, highlight } = props;\n const classes = useStyles();\n const { t } = useTranslationRef(qetaTranslationRef);\n\n const text = DOMPurify.sanitize(\n truncate(\n removeMarkdownFormatting(highlight?.fields.text ?? document.text),\n 300,\n ),\n );\n\n if (isQetaPostDocument(document)) {\n const authorEntity = parseEntityRef(document.author, {\n defaultKind: 'user',\n defaultNamespace: 'default',\n });\n return (\n <>\n <span className={classes.excerptText}>\n {capitalize(t(`common.${document.postType}`))}\n {' · '}\n {t('searchResult.created')}{' '}\n {DateTime.fromISO(document.created.toString() as string).toRelative()}\n {' · '}\n <EntityRefLink entityRef={authorEntity} hideIcon />\n {document.postType !== 'link' && (\n <>\n {' · '}\n {t('common.score', { score: document.score.toString(10) })}\n </>\n )}\n {' · '}\n {document.postType === 'link' &&\n t('common.clicksCount', { count: document.views })}\n {document.postType !== 'link' &&\n t('common.viewsShort', { count: document.views })}\n {document.postType !== 'link' && (\n <>\n {' · '}\n {t('common.answersCount', { count: document.answerCount })}\n </>\n )}\n </span>\n <>\n {highlight?.fields.text ? (\n <HighlightedSearchResultText\n text={text}\n preTag={highlight.preTag}\n postTag={highlight.postTag}\n />\n ) : (\n text\n )}\n </>\n </>\n );\n } else if (isQetaCollectionDocument(document)) {\n const ownerEntity = parseEntityRef(document.owner, {\n defaultKind: 'user',\n defaultNamespace: 'default',\n });\n return (\n <>\n <span className={classes.excerptText}>\n {capitalize(t(`common.collection`))}\n {' · '}\n {t('searchResult.created')}{' '}\n {DateTime.fromISO(document.created.toString() as string).toRelative()}\n {' · '}\n <EntityRefLink entityRef={ownerEntity} hideIcon />\n {' · '}\n {t('common.posts', {\n count: document.postsCount,\n itemType: t('common.post'),\n })}\n </span>\n <>\n {highlight?.fields.text ? (\n <HighlightedSearchResultText\n text={text}\n preTag={highlight.preTag}\n postTag={highlight.postTag}\n />\n ) : (\n text\n )}\n </>\n </>\n );\n }\n\n return null;\n};\n\nconst ResultIcon = (props: { document: QetaSearchDocument }) => {\n const { document } = props;\n if (isQetaPostDocument(document)) {\n return selectByPostType(\n document.postType,\n <HelpOutlined />,\n <CollectionsBookmarkIcon />,\n <LinkIcon />,\n );\n }\n\n return <PlaylistPlay />;\n};\n\nexport const QetaSearchResultListItem = (\n props: QetaSearchResultListItemProps,\n) => {\n const classes = useStyles();\n const { result, highlight, hideIcon } = props;\n\n if (!result || !isQetaSearchDocument(result)) {\n return null;\n }\n\n const title = (\n <Link noTrack to={result.location}>\n {highlight?.fields.title ? (\n <HighlightedSearchResultText\n text={highlight.fields.title}\n preTag={highlight.preTag}\n postTag={highlight.postTag}\n />\n ) : (\n result.title\n )}\n </Link>\n );\n\n return (\n <>\n <ListItem\n alignItems=\"center\"\n role=\"article\"\n aria-labelledby={`search-result-${result.title}`}\n >\n {hideIcon !== true && (\n <ListItemIcon>\n <ResultIcon document={result} aria-hidden=\"true\" />\n </ListItemIcon>\n )}\n <ListItemText\n primary={title}\n secondary={<Excerpt document={result} highlight={highlight} />}\n className={classes.itemText}\n primaryTypographyProps={{\n variant: 'h6',\n id: `search-result-${result.title}`,\n component: 'h3',\n }}\n />\n </ListItem>\n\n <Divider component=\"li\" aria-hidden=\"true\" />\n </>\n );\n};\n"],"names":["PlaylistPlay"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"QetaSearchResultListItem.esm.js","sources":["../../../src/components/QetaSearchResultListItem/QetaSearchResultListItem.tsx"],"sourcesContent":["import { DateTime } from 'luxon';\nimport { Link } from '@backstage/core-components';\nimport {\n IndexableDocument,\n ResultHighlight,\n} from '@backstage/plugin-search-common';\nimport { HighlightedSearchResultText } from '@backstage/plugin-search-react';\nimport CollectionsBookmarkIcon from '@material-ui/icons/CollectionsBookmark';\nimport {\n Divider,\n ListItem,\n ListItemIcon,\n ListItemText,\n makeStyles,\n} from '@material-ui/core';\nimport {\n QetaCollectionDocument,\n QetaPostDocument,\n QetaSearchDocument,\n removeMarkdownFormatting,\n selectByPostType,\n truncate,\n} from '@drodil/backstage-plugin-qeta-common';\nimport { EntityRefLink } from '@backstage/plugin-catalog-react';\nimport HelpOutlined from '@material-ui/icons/HelpOutlined';\nimport PlaylistPlay from '@material-ui/icons/PlaylistPlay';\nimport DOMPurify from 'dompurify';\nimport { capitalize } from 'lodash';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { qetaTranslationRef } from '@drodil/backstage-plugin-qeta-react';\nimport LinkIcon from '@material-ui/icons/Link';\nimport { parseEntityRef } from '@backstage/catalog-model';\n\nconst useStyles = makeStyles({\n excerptText: {\n display: 'block',\n marginTop: '0.2rem',\n marginBottom: '0.4rem',\n },\n excerpt: {\n lineHeight: '1.55',\n },\n itemText: {\n wordBreak: 'break-all',\n },\n});\n\nexport type QetaSearchResultListItemProps = {\n result?: IndexableDocument;\n highlight?: ResultHighlight;\n rank?: number;\n hideIcon?: boolean;\n};\n\nconst isQetaSearchDocument = (\n document: IndexableDocument,\n): document is QetaSearchDocument => {\n return (\n 'docType' in document &&\n (document.docType === 'qeta_post' || document.docType === 'qeta_collection')\n );\n};\n\nconst isQetaPostDocument = (\n document: QetaSearchDocument,\n): document is QetaPostDocument => {\n return document.docType === 'qeta_post';\n};\n\nconst isQetaCollectionDocument = (\n document: QetaSearchDocument,\n): document is QetaCollectionDocument => {\n return document.docType === 'qeta_collection';\n};\n\nconst Excerpt = (props: {\n document: QetaSearchDocument;\n highlight?: ResultHighlight;\n}) => {\n const { document, highlight } = props;\n const classes = useStyles();\n const { t } = useTranslationRef(qetaTranslationRef);\n\n const text = DOMPurify.sanitize(\n truncate(\n removeMarkdownFormatting(highlight?.fields.text ?? document.text),\n 300,\n ),\n );\n\n if (isQetaPostDocument(document)) {\n const authorEntity = parseEntityRef(document.author, {\n defaultKind: 'user',\n defaultNamespace: 'default',\n });\n return (\n <>\n <span className={classes.excerptText}>\n {capitalize(t(`common.${document.postType}`))}\n {' · '}\n {t('searchResult.created')}{' '}\n {DateTime.fromISO(document.created.toString() as string).toRelative()}\n {' · '}\n <EntityRefLink entityRef={authorEntity} hideIcon />\n {document.postType !== 'link' && (\n <>\n {' · '}\n {t('common.score', { score: document.score.toString(10) })}\n </>\n )}\n {' · '}\n {document.postType === 'link' &&\n t('common.clicksCount', { count: document.views })}\n {document.postType !== 'link' &&\n t('common.viewsShort', { count: document.views })}\n {document.postType !== 'link' && (\n <>\n {' · '}\n {t('common.answersCount', { count: document.answerCount })}\n </>\n )}\n </span>\n <>\n {highlight?.fields.text ? (\n <HighlightedSearchResultText\n text={text}\n preTag={highlight.preTag}\n postTag={highlight.postTag}\n />\n ) : (\n text\n )}\n </>\n </>\n );\n } else if (isQetaCollectionDocument(document)) {\n const ownerEntity = parseEntityRef(document.owner, {\n defaultKind: 'user',\n defaultNamespace: 'default',\n });\n return (\n <>\n <span className={classes.excerptText}>\n {capitalize(t(`common.collection`))}\n {' · '}\n {t('searchResult.created')}{' '}\n {DateTime.fromISO(document.created.toString() as string).toRelative()}\n {' · '}\n <EntityRefLink entityRef={ownerEntity} hideIcon />\n {' · '}\n {t('common.posts', {\n count: document.postsCount,\n itemType: t('common.post'),\n })}\n </span>\n <>\n {highlight?.fields.text ? (\n <HighlightedSearchResultText\n text={text}\n preTag={highlight.preTag}\n postTag={highlight.postTag}\n />\n ) : (\n text\n )}\n </>\n </>\n );\n }\n\n return null;\n};\n\nconst ResultIcon = (props: { document: QetaSearchDocument }) => {\n const { document } = props;\n if (isQetaPostDocument(document)) {\n return selectByPostType(\n document.postType,\n <HelpOutlined />,\n <CollectionsBookmarkIcon />,\n <LinkIcon />,\n );\n }\n\n return <PlaylistPlay />;\n};\n\nexport const QetaSearchResultListItem = (\n props: QetaSearchResultListItemProps,\n) => {\n const classes = useStyles();\n const { result, highlight, hideIcon } = props;\n\n if (!result || !isQetaSearchDocument(result)) {\n return null;\n }\n\n const title = (\n <Link noTrack to={result.location}>\n {highlight?.fields.title ? (\n <HighlightedSearchResultText\n text={highlight.fields.title}\n preTag={highlight.preTag}\n postTag={highlight.postTag}\n />\n ) : (\n result.title\n )}\n </Link>\n );\n\n return (\n <>\n <ListItem\n alignItems=\"center\"\n role=\"article\"\n aria-labelledby={`search-result-${result.title}`}\n >\n {hideIcon !== true && (\n <ListItemIcon>\n <ResultIcon document={result} aria-hidden=\"true\" />\n </ListItemIcon>\n )}\n <ListItemText\n primary={title}\n secondary={<Excerpt document={result} highlight={highlight} />}\n className={classes.itemText}\n primaryTypographyProps={{\n variant: 'h6',\n id: `search-result-${result.title}`,\n component: 'h3',\n }}\n />\n </ListItem>\n\n <Divider component=\"li\" aria-hidden=\"true\" />\n </>\n );\n};\n"],"names":["PlaylistPlay"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|