@drodil/backstage-plugin-qeta 3.59.2 → 3.59.6
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 +2 -3
- 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":"CollectionsRightContent.esm.js","sources":["../../../src/components/RightContent/CollectionsRightContent.tsx"],"sourcesContent":["import {\n FollowedCollectionsList,\n PostHighlightListContainer,\n} from '@drodil/backstage-plugin-qeta-react';\n\nexport const CollectionsRightContent = () => {\n return (\n <>\n <FollowedCollectionsList />\n <PostHighlightListContainer />\n </>\n );\n};\n"],"names":[],"mappings":";;;AAKO,MAAM,0BAA0B,MAAM;AAC3C,EAAA,
|
|
1
|
+
{"version":3,"file":"CollectionsRightContent.esm.js","sources":["../../../src/components/RightContent/CollectionsRightContent.tsx"],"sourcesContent":["import {\n FollowedCollectionsList,\n PostHighlightListContainer,\n} from '@drodil/backstage-plugin-qeta-react';\n\nexport const CollectionsRightContent = () => {\n return (\n <>\n <FollowedCollectionsList />\n <PostHighlightListContainer />\n </>\n );\n};\n"],"names":[],"mappings":";;;AAKO,MAAM,0BAA0B,MAAM;AAC3C,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,uBAAA,EAAA,EAAwB,CAAA;AAAA,wBACxB,0BAAA,EAAA,EAA2B;AAAA,GAAA,EAC9B,CAAA;AAEJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultRightContent.esm.js","sources":["../../../src/components/RightContent/DefaultRightContent.tsx"],"sourcesContent":["import {\n FollowedCollectionsList,\n FollowedEntitiesList,\n FollowedTagsList,\n FollowedUsersList,\n PostHighlightList,\n qetaTranslationRef,\n} from '@drodil/backstage-plugin-qeta-react';\nimport Whatshot from '@material-ui/icons/Whatshot';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\n\nexport const DefaultRightContent = () => {\n const { t } = useTranslationRef(qetaTranslationRef);\n return (\n <>\n <PostHighlightList\n type=\"hot\"\n title={t('highlights.hotQuestions.title')}\n noQuestionsLabel={t('highlights.hotQuestions.noQuestionsLabel')}\n icon={<Whatshot fontSize=\"small\" />}\n postType=\"question\"\n />\n <FollowedTagsList />\n <FollowedUsersList />\n <FollowedEntitiesList />\n <FollowedCollectionsList />\n </>\n );\n};\n"],"names":[],"mappings":";;;;;AAWO,MAAM,sBAAsB,MAAM;AACvC,EAAA,MAAM,EAAE,CAAA,
|
|
1
|
+
{"version":3,"file":"DefaultRightContent.esm.js","sources":["../../../src/components/RightContent/DefaultRightContent.tsx"],"sourcesContent":["import {\n FollowedCollectionsList,\n FollowedEntitiesList,\n FollowedTagsList,\n FollowedUsersList,\n PostHighlightList,\n qetaTranslationRef,\n} from '@drodil/backstage-plugin-qeta-react';\nimport Whatshot from '@material-ui/icons/Whatshot';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\n\nexport const DefaultRightContent = () => {\n const { t } = useTranslationRef(qetaTranslationRef);\n return (\n <>\n <PostHighlightList\n type=\"hot\"\n title={t('highlights.hotQuestions.title')}\n noQuestionsLabel={t('highlights.hotQuestions.noQuestionsLabel')}\n icon={<Whatshot fontSize=\"small\" />}\n postType=\"question\"\n />\n <FollowedTagsList />\n <FollowedUsersList />\n <FollowedEntitiesList />\n <FollowedCollectionsList />\n </>\n );\n};\n"],"names":[],"mappings":";;;;;AAWO,MAAM,sBAAsB,MAAM;AACvC,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,kBAAkB,CAAA;AAClD,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,iBAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,KAAA;AAAA,QACL,KAAA,EAAO,EAAE,+BAA+B,CAAA;AAAA,QACxC,gBAAA,EAAkB,EAAE,0CAA0C,CAAA;AAAA,QAC9D,IAAA,kBAAM,GAAA,CAAC,QAAA,EAAA,EAAS,QAAA,EAAS,OAAA,EAAQ,CAAA;AAAA,QACjC,QAAA,EAAS;AAAA;AAAA,KACX;AAAA,wBACC,gBAAA,EAAA,EAAiB,CAAA;AAAA,wBACjB,iBAAA,EAAA,EAAkB,CAAA;AAAA,wBAClB,oBAAA,EAAA,EAAqB,CAAA;AAAA,wBACrB,uBAAA,EAAA,EAAwB;AAAA,GAAA,EAC3B,CAAA;AAEJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntitiesRightContent.esm.js","sources":["../../../src/components/RightContent/EntitiesRightContent.tsx"],"sourcesContent":["import {\n FollowedEntitiesList,\n PostHighlightListContainer,\n} from '@drodil/backstage-plugin-qeta-react';\n\nexport const EntitiesRightContent = () => {\n return (\n <>\n <FollowedEntitiesList />\n <PostHighlightListContainer />\n </>\n );\n};\n"],"names":[],"mappings":";;;AAKO,MAAM,uBAAuB,MAAM;AACxC,EAAA,
|
|
1
|
+
{"version":3,"file":"EntitiesRightContent.esm.js","sources":["../../../src/components/RightContent/EntitiesRightContent.tsx"],"sourcesContent":["import {\n FollowedEntitiesList,\n PostHighlightListContainer,\n} from '@drodil/backstage-plugin-qeta-react';\n\nexport const EntitiesRightContent = () => {\n return (\n <>\n <FollowedEntitiesList />\n <PostHighlightListContainer />\n </>\n );\n};\n"],"names":[],"mappings":";;;AAKO,MAAM,uBAAuB,MAAM;AACxC,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,oBAAA,EAAA,EAAqB,CAAA;AAAA,wBACrB,0BAAA,EAAA,EAA2B;AAAA,GAAA,EAC9B,CAAA;AAEJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityRightContent.esm.js","sources":["../../../src/components/RightContent/EntityRightContent.tsx"],"sourcesContent":["import {\n FollowedEntitiesList,\n PostHighlightList,\n qetaTranslationRef,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport Whatshot from '@material-ui/icons/Whatshot';\n\nexport const EntityRightContent = (props: { entityRef?: string }) => {\n const { t } = useTranslationRef(qetaTranslationRef);\n const { entityRef } = props;\n const entities = entityRef ? [entityRef] : undefined;\n\n return (\n <>\n <FollowedEntitiesList />\n <PostHighlightList\n type=\"hot\"\n title={t('highlights.hotQuestions.title')}\n noQuestionsLabel={t('highlights.hotQuestions.noQuestionsLabel')}\n icon={<Whatshot fontSize=\"small\" />}\n options={{ entities: entities }}\n postType=\"question\"\n />\n <PostHighlightList\n type=\"unanswered\"\n title={t('highlights.unanswered.title')}\n noQuestionsLabel={t('highlights.unanswered.noQuestionsLabel')}\n options={{ entities: entities }}\n postType=\"question\"\n />\n <PostHighlightList\n type=\"incorrect\"\n title={t('highlights.incorrect.title')}\n noQuestionsLabel={t('highlights.incorrect.noQuestionsLabel')}\n options={{ entities: entities }}\n postType=\"question\"\n />\n </>\n );\n};\n"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"EntityRightContent.esm.js","sources":["../../../src/components/RightContent/EntityRightContent.tsx"],"sourcesContent":["import {\n FollowedEntitiesList,\n PostHighlightList,\n qetaTranslationRef,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport Whatshot from '@material-ui/icons/Whatshot';\n\nexport const EntityRightContent = (props: { entityRef?: string }) => {\n const { t } = useTranslationRef(qetaTranslationRef);\n const { entityRef } = props;\n const entities = entityRef ? [entityRef] : undefined;\n\n return (\n <>\n <FollowedEntitiesList />\n <PostHighlightList\n type=\"hot\"\n title={t('highlights.hotQuestions.title')}\n noQuestionsLabel={t('highlights.hotQuestions.noQuestionsLabel')}\n icon={<Whatshot fontSize=\"small\" />}\n options={{ entities: entities }}\n postType=\"question\"\n />\n <PostHighlightList\n type=\"unanswered\"\n title={t('highlights.unanswered.title')}\n noQuestionsLabel={t('highlights.unanswered.noQuestionsLabel')}\n options={{ entities: entities }}\n postType=\"question\"\n />\n <PostHighlightList\n type=\"incorrect\"\n title={t('highlights.incorrect.title')}\n noQuestionsLabel={t('highlights.incorrect.noQuestionsLabel')}\n options={{ entities: entities }}\n postType=\"question\"\n />\n </>\n );\n};\n"],"names":[],"mappings":";;;;;AAQO,MAAM,kBAAA,GAAqB,CAAC,KAAA,KAAkC;AACnE,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,kBAAkB,CAAA;AAClD,EAAA,MAAM,EAAE,WAAU,GAAI,KAAA;AACtB,EAAA,MAAM,QAAA,GAAW,SAAA,GAAY,CAAC,SAAS,CAAA,GAAI,MAAA;AAE3C,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,oBAAA,EAAA,EAAqB,CAAA;AAAA,oBACtB,GAAA;AAAA,MAAC,iBAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,KAAA;AAAA,QACL,KAAA,EAAO,EAAE,+BAA+B,CAAA;AAAA,QACxC,gBAAA,EAAkB,EAAE,0CAA0C,CAAA;AAAA,QAC9D,IAAA,kBAAM,GAAA,CAAC,QAAA,EAAA,EAAS,QAAA,EAAS,OAAA,EAAQ,CAAA;AAAA,QACjC,OAAA,EAAS,EAAE,QAAA,EAAmB;AAAA,QAC9B,QAAA,EAAS;AAAA;AAAA,KACX;AAAA,oBACA,GAAA;AAAA,MAAC,iBAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,YAAA;AAAA,QACL,KAAA,EAAO,EAAE,6BAA6B,CAAA;AAAA,QACtC,gBAAA,EAAkB,EAAE,wCAAwC,CAAA;AAAA,QAC5D,OAAA,EAAS,EAAE,QAAA,EAAmB;AAAA,QAC9B,QAAA,EAAS;AAAA;AAAA,KACX;AAAA,oBACA,GAAA;AAAA,MAAC,iBAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,WAAA;AAAA,QACL,KAAA,EAAO,EAAE,4BAA4B,CAAA;AAAA,QACrC,gBAAA,EAAkB,EAAE,uCAAuC,CAAA;AAAA,QAC3D,OAAA,EAAS,EAAE,QAAA,EAAmB;AAAA,QAC9B,QAAA,EAAS;AAAA;AAAA;AACX,GAAA,EACF,CAAA;AAEJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FavoriteRightContent.esm.js","sources":["../../../src/components/RightContent/FavoriteRightContent.tsx"],"sourcesContent":["import { PostHighlightListContainer } from '@drodil/backstage-plugin-qeta-react';\n\nexport const FavoriteRightContent = () => {\n return <PostHighlightListContainer options={{ favorite: true }} />;\n};\n"],"names":[],"mappings":";;;AAEO,MAAM,uBAAuB,MAAM;AACxC,EAAA,2BAAQ,
|
|
1
|
+
{"version":3,"file":"FavoriteRightContent.esm.js","sources":["../../../src/components/RightContent/FavoriteRightContent.tsx"],"sourcesContent":["import { PostHighlightListContainer } from '@drodil/backstage-plugin-qeta-react';\n\nexport const FavoriteRightContent = () => {\n return <PostHighlightListContainer options={{ favorite: true }} />;\n};\n"],"names":[],"mappings":";;;AAEO,MAAM,uBAAuB,MAAM;AACxC,EAAA,2BAAQ,0BAAA,EAAA,EAA2B,OAAA,EAAS,EAAE,QAAA,EAAU,MAAK,EAAG,CAAA;AAClE;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HomeRightContent.esm.js","sources":["../../../src/components/RightContent/HomeRightContent.tsx"],"sourcesContent":["import {\n PostHighlightList,\n qetaTranslationRef,\n useIdentityApi,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\n\nexport const HomeRightContent = () => {\n const { t } = useTranslationRef(qetaTranslationRef);\n const { value: user } = useIdentityApi(api => api.getBackstageIdentity(), []);\n\n return (\n <>\n <PostHighlightList\n type=\"recent\"\n title={t('highlights.recent.title')}\n noQuestionsLabel={t('highlights.recent.noQuestionsLabel')}\n options={{ limit: 5 }}\n hideIfEmpty\n />\n <PostHighlightList\n type=\"followed\"\n title={t('highlights.followed.title')}\n noQuestionsLabel={t('highlights.followed.noQuestionsLabel')}\n options={{ following: true, limit: 5 }}\n hideIfEmpty\n />\n <PostHighlightList\n type=\"hot\"\n title={t('highlights.hot.title')}\n noQuestionsLabel={t('highlights.hot.noQuestionsLabel')}\n options={{ orderBy: 'trend', limit: 5 }}\n hideIfEmpty\n />\n {user && (\n <PostHighlightList\n type=\"own\"\n title={t('highlights.own.title')}\n noQuestionsLabel={t('highlights.own.noQuestionsLabel')}\n postType=\"question\"\n options={{ author: user.userEntityRef, limit: 5 }}\n hideIfEmpty\n />\n )}\n <PostHighlightList\n type=\"unanswered\"\n title={t('highlights.unanswered.title')}\n noQuestionsLabel={t('highlights.unanswered.noQuestionsLabel')}\n postType=\"question\"\n options={{ noAnswers: true, limit: 5 }}\n hideIfEmpty\n />\n </>\n );\n};\n"],"names":[],"mappings":";;;;AAOO,MAAM,mBAAmB,MAAM;AACpC,EAAA,MAAM,EAAE,CAAA,
|
|
1
|
+
{"version":3,"file":"HomeRightContent.esm.js","sources":["../../../src/components/RightContent/HomeRightContent.tsx"],"sourcesContent":["import {\n PostHighlightList,\n qetaTranslationRef,\n useIdentityApi,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\n\nexport const HomeRightContent = () => {\n const { t } = useTranslationRef(qetaTranslationRef);\n const { value: user } = useIdentityApi(api => api.getBackstageIdentity(), []);\n\n return (\n <>\n <PostHighlightList\n type=\"recent\"\n title={t('highlights.recent.title')}\n noQuestionsLabel={t('highlights.recent.noQuestionsLabel')}\n options={{ limit: 5 }}\n hideIfEmpty\n />\n <PostHighlightList\n type=\"followed\"\n title={t('highlights.followed.title')}\n noQuestionsLabel={t('highlights.followed.noQuestionsLabel')}\n options={{ following: true, limit: 5 }}\n hideIfEmpty\n />\n <PostHighlightList\n type=\"hot\"\n title={t('highlights.hot.title')}\n noQuestionsLabel={t('highlights.hot.noQuestionsLabel')}\n options={{ orderBy: 'trend', limit: 5 }}\n hideIfEmpty\n />\n {user && (\n <PostHighlightList\n type=\"own\"\n title={t('highlights.own.title')}\n noQuestionsLabel={t('highlights.own.noQuestionsLabel')}\n postType=\"question\"\n options={{ author: user.userEntityRef, limit: 5 }}\n hideIfEmpty\n />\n )}\n <PostHighlightList\n type=\"unanswered\"\n title={t('highlights.unanswered.title')}\n noQuestionsLabel={t('highlights.unanswered.noQuestionsLabel')}\n postType=\"question\"\n options={{ noAnswers: true, limit: 5 }}\n hideIfEmpty\n />\n </>\n );\n};\n"],"names":[],"mappings":";;;;AAOO,MAAM,mBAAmB,MAAM;AACpC,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,kBAAkB,CAAA;AAClD,EAAA,MAAM,EAAE,KAAA,EAAO,IAAA,EAAK,GAAI,cAAA,CAAe,SAAO,GAAA,CAAI,oBAAA,EAAqB,EAAG,EAAE,CAAA;AAE5E,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,iBAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,QAAA;AAAA,QACL,KAAA,EAAO,EAAE,yBAAyB,CAAA;AAAA,QAClC,gBAAA,EAAkB,EAAE,oCAAoC,CAAA;AAAA,QACxD,OAAA,EAAS,EAAE,KAAA,EAAO,CAAA,EAAE;AAAA,QACpB,WAAA,EAAW;AAAA;AAAA,KACb;AAAA,oBACA,GAAA;AAAA,MAAC,iBAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,UAAA;AAAA,QACL,KAAA,EAAO,EAAE,2BAA2B,CAAA;AAAA,QACpC,gBAAA,EAAkB,EAAE,sCAAsC,CAAA;AAAA,QAC1D,OAAA,EAAS,EAAE,SAAA,EAAW,IAAA,EAAM,OAAO,CAAA,EAAE;AAAA,QACrC,WAAA,EAAW;AAAA;AAAA,KACb;AAAA,oBACA,GAAA;AAAA,MAAC,iBAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,KAAA;AAAA,QACL,KAAA,EAAO,EAAE,sBAAsB,CAAA;AAAA,QAC/B,gBAAA,EAAkB,EAAE,iCAAiC,CAAA;AAAA,QACrD,OAAA,EAAS,EAAE,OAAA,EAAS,OAAA,EAAS,OAAO,CAAA,EAAE;AAAA,QACtC,WAAA,EAAW;AAAA;AAAA,KACb;AAAA,IACC,IAAA,oBACC,GAAA;AAAA,MAAC,iBAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,KAAA;AAAA,QACL,KAAA,EAAO,EAAE,sBAAsB,CAAA;AAAA,QAC/B,gBAAA,EAAkB,EAAE,iCAAiC,CAAA;AAAA,QACrD,QAAA,EAAS,UAAA;AAAA,QACT,SAAS,EAAE,MAAA,EAAQ,IAAA,CAAK,aAAA,EAAe,OAAO,CAAA,EAAE;AAAA,QAChD,WAAA,EAAW;AAAA;AAAA,KACb;AAAA,oBAEF,GAAA;AAAA,MAAC,iBAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,YAAA;AAAA,QACL,KAAA,EAAO,EAAE,6BAA6B,CAAA;AAAA,QACtC,gBAAA,EAAkB,EAAE,wCAAwC,CAAA;AAAA,QAC5D,QAAA,EAAS,UAAA;AAAA,QACT,OAAA,EAAS,EAAE,SAAA,EAAW,IAAA,EAAM,OAAO,CAAA,EAAE;AAAA,QACrC,WAAA,EAAW;AAAA;AAAA;AACb,GAAA,EACF,CAAA;AAEJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LinkedPosts.esm.js","sources":["../../../src/components/RightContent/LinkedPosts.tsx"],"sourcesContent":["import {\n PostHighlightListContent,\n qetaTranslationRef,\n useQetaApi,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { makeStyles } from '@material-ui/core';\nimport LinkIcon from '@material-ui/icons/Link';\n\nconst useStyles = makeStyles(theme => ({\n container: {\n borderLeft: `3px solid ${theme.palette.info.main}`,\n backgroundColor:\n theme.palette.type === 'dark'\n ? 'rgba(33, 150, 243, 0.08)'\n : 'rgba(33, 150, 243, 0.05)',\n borderRadius: theme.shape.borderRadius,\n padding: `${theme.spacing(1)}px 2px ${theme.spacing(1)}px`,\n marginBottom: theme.spacing(2),\n },\n title: {\n color: theme.palette.info.main,\n fontWeight: 600,\n },\n}));\n\nexport const LinkedPosts = (props: { postId: number }) => {\n const { postId } = props;\n const classes = useStyles();\n const { t } = useTranslationRef(qetaTranslationRef);\n\n const {\n value: posts,\n loading,\n error,\n } = useQetaApi(api => api.getLinkedPosts(postId), [postId]);\n\n if (error || !posts || posts.length === 0) {\n return null;\n }\n\n return (\n <PostHighlightListContent\n title={t('rightMenu.linkedPosts')}\n posts={posts}\n loading={loading}\n containerClassName={classes.container}\n titleClassName={classes.title}\n icon={<LinkIcon fontSize=\"small\" />}\n />\n );\n};\n"],"names":[],"mappings":";;;;;;AASA,MAAM,SAAA,GAAY,WAAW,
|
|
1
|
+
{"version":3,"file":"LinkedPosts.esm.js","sources":["../../../src/components/RightContent/LinkedPosts.tsx"],"sourcesContent":["import {\n PostHighlightListContent,\n qetaTranslationRef,\n useQetaApi,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { makeStyles } from '@material-ui/core';\nimport LinkIcon from '@material-ui/icons/Link';\n\nconst useStyles = makeStyles(theme => ({\n container: {\n borderLeft: `3px solid ${theme.palette.info.main}`,\n backgroundColor:\n theme.palette.type === 'dark'\n ? 'rgba(33, 150, 243, 0.08)'\n : 'rgba(33, 150, 243, 0.05)',\n borderRadius: theme.shape.borderRadius,\n padding: `${theme.spacing(1)}px 2px ${theme.spacing(1)}px`,\n marginBottom: theme.spacing(2),\n },\n title: {\n color: theme.palette.info.main,\n fontWeight: 600,\n },\n}));\n\nexport const LinkedPosts = (props: { postId: number }) => {\n const { postId } = props;\n const classes = useStyles();\n const { t } = useTranslationRef(qetaTranslationRef);\n\n const {\n value: posts,\n loading,\n error,\n } = useQetaApi(api => api.getLinkedPosts(postId), [postId]);\n\n if (error || !posts || posts.length === 0) {\n return null;\n }\n\n return (\n <PostHighlightListContent\n title={t('rightMenu.linkedPosts')}\n posts={posts}\n loading={loading}\n containerClassName={classes.container}\n titleClassName={classes.title}\n icon={<LinkIcon fontSize=\"small\" />}\n />\n );\n};\n"],"names":[],"mappings":";;;;;;AASA,MAAM,SAAA,GAAY,WAAW,CAAA,KAAA,MAAU;AAAA,EACrC,SAAA,EAAW;AAAA,IACT,UAAA,EAAY,CAAA,UAAA,EAAa,KAAA,CAAM,OAAA,CAAQ,KAAK,IAAI,CAAA,CAAA;AAAA,IAChD,eAAA,EACE,KAAA,CAAM,OAAA,CAAQ,IAAA,KAAS,SACnB,0BAAA,GACA,0BAAA;AAAA,IACN,YAAA,EAAc,MAAM,KAAA,CAAM,YAAA;AAAA,IAC1B,OAAA,EAAS,CAAA,EAAG,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAC,CAAA,OAAA,EAAU,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAC,CAAA,EAAA,CAAA;AAAA,IACtD,YAAA,EAAc,KAAA,CAAM,OAAA,CAAQ,CAAC;AAAA,GAC/B;AAAA,EACA,KAAA,EAAO;AAAA,IACL,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,IAAA;AAAA,IAC1B,UAAA,EAAY;AAAA;AAEhB,CAAA,CAAE,CAAA;AAEK,MAAM,WAAA,GAAc,CAAC,KAAA,KAA8B;AACxD,EAAA,MAAM,EAAE,QAAO,GAAI,KAAA;AACnB,EAAA,MAAM,UAAU,SAAA,EAAU;AAC1B,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,kBAAkB,CAAA;AAElD,EAAA,MAAM;AAAA,IACJ,KAAA,EAAO,KAAA;AAAA,IACP,OAAA;AAAA,IACA;AAAA,GACF,GAAI,WAAW,CAAA,GAAA,KAAO,GAAA,CAAI,eAAe,MAAM,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAE1D,EAAA,IAAI,KAAA,IAAS,CAAC,KAAA,IAAS,KAAA,CAAM,WAAW,CAAA,EAAG;AACzC,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,wBAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,EAAE,uBAAuB,CAAA;AAAA,MAChC,KAAA;AAAA,MACA,OAAA;AAAA,MACA,oBAAoB,OAAA,CAAQ,SAAA;AAAA,MAC5B,gBAAgB,OAAA,CAAQ,KAAA;AAAA,MACxB,IAAA,kBAAM,GAAA,CAAC,QAAA,EAAA,EAAS,QAAA,EAAS,OAAA,EAAQ;AAAA;AAAA,GACnC;AAEJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LinksRightContent.esm.js","sources":["../../../src/components/RightContent/LinksRightContent.tsx"],"sourcesContent":["import {\n FollowedEntitiesList,\n FollowedTagsList,\n PostHighlightList,\n qetaTranslationRef,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport Whatshot from '@material-ui/icons/Whatshot';\n\nexport const LinksRightContent = (props: {\n tags?: string[];\n entityRef?: string;\n}) => {\n const { t } = useTranslationRef(qetaTranslationRef);\n const { tags, entityRef } = props;\n const entities = entityRef ? [entityRef] : undefined;\n\n return (\n <>\n <PostHighlightList\n type=\"hot\"\n title={t('highlights.hotLinks.title')}\n noQuestionsLabel={t('highlights.hotLinks.noLinksLabel')}\n icon={<Whatshot fontSize=\"small\" />}\n postType=\"link\"\n options={{\n tags: tags,\n entities: entities,\n }}\n />\n <FollowedTagsList />\n <FollowedEntitiesList />\n </>\n );\n};\n"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"LinksRightContent.esm.js","sources":["../../../src/components/RightContent/LinksRightContent.tsx"],"sourcesContent":["import {\n FollowedEntitiesList,\n FollowedTagsList,\n PostHighlightList,\n qetaTranslationRef,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport Whatshot from '@material-ui/icons/Whatshot';\n\nexport const LinksRightContent = (props: {\n tags?: string[];\n entityRef?: string;\n}) => {\n const { t } = useTranslationRef(qetaTranslationRef);\n const { tags, entityRef } = props;\n const entities = entityRef ? [entityRef] : undefined;\n\n return (\n <>\n <PostHighlightList\n type=\"hot\"\n title={t('highlights.hotLinks.title')}\n noQuestionsLabel={t('highlights.hotLinks.noLinksLabel')}\n icon={<Whatshot fontSize=\"small\" />}\n postType=\"link\"\n options={{\n tags: tags,\n entities: entities,\n }}\n />\n <FollowedTagsList />\n <FollowedEntitiesList />\n </>\n );\n};\n"],"names":[],"mappings":";;;;;AASO,MAAM,iBAAA,GAAoB,CAAC,KAAA,KAG5B;AACJ,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,kBAAkB,CAAA;AAClD,EAAA,MAAM,EAAE,IAAA,EAAM,SAAA,EAAU,GAAI,KAAA;AAC5B,EAAA,MAAM,QAAA,GAAW,SAAA,GAAY,CAAC,SAAS,CAAA,GAAI,MAAA;AAE3C,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,iBAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,KAAA;AAAA,QACL,KAAA,EAAO,EAAE,2BAA2B,CAAA;AAAA,QACpC,gBAAA,EAAkB,EAAE,kCAAkC,CAAA;AAAA,QACtD,IAAA,kBAAM,GAAA,CAAC,QAAA,EAAA,EAAS,QAAA,EAAS,OAAA,EAAQ,CAAA;AAAA,QACjC,QAAA,EAAS,MAAA;AAAA,QACT,OAAA,EAAS;AAAA,UACP,IAAA;AAAA,UACA;AAAA;AACF;AAAA,KACF;AAAA,wBACC,gBAAA,EAAA,EAAiB,CAAA;AAAA,wBACjB,oBAAA,EAAA,EAAqB;AAAA,GAAA,EACxB,CAAA;AAEJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PostRightContent.esm.js","sources":["../../../src/components/RightContent/PostRightContent.tsx"],"sourcesContent":["import { useParams } from 'react-router-dom';\nimport {\n FollowedCollectionsList,\n FollowedEntitiesList,\n FollowedTagsList,\n FollowedUsersList,\n PostHighlightList,\n qetaTranslationRef,\n useQetaApi,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { DefaultRightContent } from './DefaultRightContent';\nimport { ContentHealthCard } from '../ContentHealthCard';\nimport { SimilarPosts } from './SimilarPosts';\nimport { Box } from '@material-ui/core';\nimport Whatshot from '@material-ui/icons/Whatshot';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\n\nimport { LinkedPosts } from './LinkedPosts';\n\nexport const PostRightContent = (props?: { id?: string }) => {\n const { id: paramId } = useParams();\n const id = props?.id || paramId;\n const { t } = useTranslationRef(qetaTranslationRef);\n\n const { value: post } = useQetaApi(\n api => api.getPost(id, { anonymous: true }),\n [id],\n );\n\n let title: string;\n\n if (post?.type === 'article') {\n title = t('highlights.hotArticles.title');\n } else if (post?.type === 'link') {\n title = t('highlights.hotLinks.title');\n } else {\n title = t('highlights.hotQuestions.title');\n }\n\n return (\n <>\n {post && (\n <>\n <Box mb={2}>\n <ContentHealthCard post={post} />\n </Box>\n <LinkedPosts postId={post.id} />\n <SimilarPosts post={post} />\n <PostHighlightList\n type=\"hot\"\n title={title}\n noQuestionsLabel={t('highlights.hotQuestions.noQuestionsLabel')}\n icon={<Whatshot fontSize=\"small\" />}\n postType={post.type}\n options={{\n tags: post.tags,\n entities: post.entities,\n }}\n />\n <FollowedTagsList />\n <FollowedUsersList />\n <FollowedEntitiesList />\n <FollowedCollectionsList />\n </>\n )}\n {!post && <DefaultRightContent />}\n </>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"PostRightContent.esm.js","sources":["../../../src/components/RightContent/PostRightContent.tsx"],"sourcesContent":["import { useParams } from 'react-router-dom';\nimport {\n FollowedCollectionsList,\n FollowedEntitiesList,\n FollowedTagsList,\n FollowedUsersList,\n PostHighlightList,\n qetaTranslationRef,\n useQetaApi,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { DefaultRightContent } from './DefaultRightContent';\nimport { ContentHealthCard } from '../ContentHealthCard';\nimport { SimilarPosts } from './SimilarPosts';\nimport { Box } from '@material-ui/core';\nimport Whatshot from '@material-ui/icons/Whatshot';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\n\nimport { LinkedPosts } from './LinkedPosts';\n\nexport const PostRightContent = (props?: { id?: string }) => {\n const { id: paramId } = useParams();\n const id = props?.id || paramId;\n const { t } = useTranslationRef(qetaTranslationRef);\n\n const { value: post } = useQetaApi(\n api => api.getPost(id, { anonymous: true }),\n [id],\n );\n\n let title: string;\n\n if (post?.type === 'article') {\n title = t('highlights.hotArticles.title');\n } else if (post?.type === 'link') {\n title = t('highlights.hotLinks.title');\n } else {\n title = t('highlights.hotQuestions.title');\n }\n\n return (\n <>\n {post && (\n <>\n <Box mb={2}>\n <ContentHealthCard post={post} />\n </Box>\n <LinkedPosts postId={post.id} />\n <SimilarPosts post={post} />\n <PostHighlightList\n type=\"hot\"\n title={title}\n noQuestionsLabel={t('highlights.hotQuestions.noQuestionsLabel')}\n icon={<Whatshot fontSize=\"small\" />}\n postType={post.type}\n options={{\n tags: post.tags,\n entities: post.entities,\n }}\n />\n <FollowedTagsList />\n <FollowedUsersList />\n <FollowedEntitiesList />\n <FollowedCollectionsList />\n </>\n )}\n {!post && <DefaultRightContent />}\n </>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;AAmBO,MAAM,gBAAA,GAAmB,CAAC,KAAA,KAA4B;AAC3D,EAAA,MAAM,EAAE,EAAA,EAAI,OAAA,EAAQ,GAAI,SAAA,EAAU;AAClC,EAAA,MAAM,EAAA,GAAK,OAAO,EAAA,IAAM,OAAA;AACxB,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,kBAAkB,CAAA;AAElD,EAAA,MAAM,EAAE,KAAA,EAAO,IAAA,EAAK,GAAI,UAAA;AAAA,IACtB,SAAO,GAAA,CAAI,OAAA,CAAQ,IAAI,EAAE,SAAA,EAAW,MAAM,CAAA;AAAA,IAC1C,CAAC,EAAE;AAAA,GACL;AAEA,EAAA,IAAI,KAAA;AAEJ,EAAA,IAAI,IAAA,EAAM,SAAS,SAAA,EAAW;AAC5B,IAAA,KAAA,GAAQ,EAAE,8BAA8B,CAAA;AAAA,EAC1C,CAAA,MAAA,IAAW,IAAA,EAAM,IAAA,KAAS,MAAA,EAAQ;AAChC,IAAA,KAAA,GAAQ,EAAE,2BAA2B,CAAA;AAAA,EACvC,CAAA,MAAO;AACL,IAAA,KAAA,GAAQ,EAAE,+BAA+B,CAAA;AAAA,EAC3C;AAEA,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,IAAA,IAAA,oBACC,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,OAAI,EAAA,EAAI,CAAA,EACP,QAAA,kBAAA,GAAA,CAAC,iBAAA,EAAA,EAAkB,MAAY,CAAA,EACjC,CAAA;AAAA,sBACA,GAAA,CAAC,WAAA,EAAA,EAAY,MAAA,EAAQ,IAAA,CAAK,EAAA,EAAI,CAAA;AAAA,sBAC9B,GAAA,CAAC,gBAAa,IAAA,EAAY,CAAA;AAAA,sBAC1B,GAAA;AAAA,QAAC,iBAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,KAAA;AAAA,UACL,KAAA;AAAA,UACA,gBAAA,EAAkB,EAAE,0CAA0C,CAAA;AAAA,UAC9D,IAAA,kBAAM,GAAA,CAAC,QAAA,EAAA,EAAS,QAAA,EAAS,OAAA,EAAQ,CAAA;AAAA,UACjC,UAAU,IAAA,CAAK,IAAA;AAAA,UACf,OAAA,EAAS;AAAA,YACP,MAAM,IAAA,CAAK,IAAA;AAAA,YACX,UAAU,IAAA,CAAK;AAAA;AACjB;AAAA,OACF;AAAA,0BACC,gBAAA,EAAA,EAAiB,CAAA;AAAA,0BACjB,iBAAA,EAAA,EAAkB,CAAA;AAAA,0BAClB,oBAAA,EAAA,EAAqB,CAAA;AAAA,0BACrB,uBAAA,EAAA,EAAwB;AAAA,KAAA,EAC3B,CAAA;AAAA,IAED,CAAC,IAAA,oBAAQ,GAAA,CAAC,mBAAA,EAAA,EAAoB;AAAA,GAAA,EACjC,CAAA;AAEJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QuestionsRightContent.esm.js","sources":["../../../src/components/RightContent/QuestionsRightContent.tsx"],"sourcesContent":["import {\n FollowedEntitiesList,\n FollowedTagsList,\n PostHighlightList,\n qetaTranslationRef,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport Whatshot from '@material-ui/icons/Whatshot';\n\nexport const QuestionsRightContent = (props: {\n tags?: string[];\n entityRef?: string;\n}) => {\n const { t } = useTranslationRef(qetaTranslationRef);\n const { tags, entityRef } = props;\n const entities = entityRef ? [entityRef] : undefined;\n\n return (\n <>\n <PostHighlightList\n type=\"hot\"\n title={t('highlights.hotQuestions.title')}\n noQuestionsLabel={t('highlights.hotQuestions.noQuestionsLabel')}\n icon={<Whatshot fontSize=\"small\" />}\n options={{\n tags: tags,\n entities: entities,\n }}\n postType=\"question\"\n />\n <PostHighlightList\n type=\"unanswered\"\n title={t('highlights.unanswered.title')}\n noQuestionsLabel={t('highlights.unanswered.noQuestionsLabel')}\n options={{\n tags: tags,\n entities: entities,\n }}\n postType=\"question\"\n />\n <PostHighlightList\n type=\"incorrect\"\n title={t('highlights.incorrect.title')}\n noQuestionsLabel={t('highlights.incorrect.noQuestionsLabel')}\n options={{\n tags: tags,\n entities: entities,\n }}\n postType=\"question\"\n />\n <FollowedTagsList />\n <FollowedEntitiesList />\n </>\n );\n};\n"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"QuestionsRightContent.esm.js","sources":["../../../src/components/RightContent/QuestionsRightContent.tsx"],"sourcesContent":["import {\n FollowedEntitiesList,\n FollowedTagsList,\n PostHighlightList,\n qetaTranslationRef,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport Whatshot from '@material-ui/icons/Whatshot';\n\nexport const QuestionsRightContent = (props: {\n tags?: string[];\n entityRef?: string;\n}) => {\n const { t } = useTranslationRef(qetaTranslationRef);\n const { tags, entityRef } = props;\n const entities = entityRef ? [entityRef] : undefined;\n\n return (\n <>\n <PostHighlightList\n type=\"hot\"\n title={t('highlights.hotQuestions.title')}\n noQuestionsLabel={t('highlights.hotQuestions.noQuestionsLabel')}\n icon={<Whatshot fontSize=\"small\" />}\n options={{\n tags: tags,\n entities: entities,\n }}\n postType=\"question\"\n />\n <PostHighlightList\n type=\"unanswered\"\n title={t('highlights.unanswered.title')}\n noQuestionsLabel={t('highlights.unanswered.noQuestionsLabel')}\n options={{\n tags: tags,\n entities: entities,\n }}\n postType=\"question\"\n />\n <PostHighlightList\n type=\"incorrect\"\n title={t('highlights.incorrect.title')}\n noQuestionsLabel={t('highlights.incorrect.noQuestionsLabel')}\n options={{\n tags: tags,\n entities: entities,\n }}\n postType=\"question\"\n />\n <FollowedTagsList />\n <FollowedEntitiesList />\n </>\n );\n};\n"],"names":[],"mappings":";;;;;AASO,MAAM,qBAAA,GAAwB,CAAC,KAAA,KAGhC;AACJ,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,kBAAkB,CAAA;AAClD,EAAA,MAAM,EAAE,IAAA,EAAM,SAAA,EAAU,GAAI,KAAA;AAC5B,EAAA,MAAM,QAAA,GAAW,SAAA,GAAY,CAAC,SAAS,CAAA,GAAI,MAAA;AAE3C,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,iBAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,KAAA;AAAA,QACL,KAAA,EAAO,EAAE,+BAA+B,CAAA;AAAA,QACxC,gBAAA,EAAkB,EAAE,0CAA0C,CAAA;AAAA,QAC9D,IAAA,kBAAM,GAAA,CAAC,QAAA,EAAA,EAAS,QAAA,EAAS,OAAA,EAAQ,CAAA;AAAA,QACjC,OAAA,EAAS;AAAA,UACP,IAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,QAAA,EAAS;AAAA;AAAA,KACX;AAAA,oBACA,GAAA;AAAA,MAAC,iBAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,YAAA;AAAA,QACL,KAAA,EAAO,EAAE,6BAA6B,CAAA;AAAA,QACtC,gBAAA,EAAkB,EAAE,wCAAwC,CAAA;AAAA,QAC5D,OAAA,EAAS;AAAA,UACP,IAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,QAAA,EAAS;AAAA;AAAA,KACX;AAAA,oBACA,GAAA;AAAA,MAAC,iBAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,WAAA;AAAA,QACL,KAAA,EAAO,EAAE,4BAA4B,CAAA;AAAA,QACrC,gBAAA,EAAkB,EAAE,uCAAuC,CAAA;AAAA,QAC3D,OAAA,EAAS;AAAA,UACP,IAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,QAAA,EAAS;AAAA;AAAA,KACX;AAAA,wBACC,gBAAA,EAAA,EAAiB,CAAA;AAAA,wBACjB,oBAAA,EAAA,EAAqB;AAAA,GAAA,EACxB,CAAA;AAEJ;;;;"}
|
|
@@ -3,7 +3,7 @@ import { useState, useEffect } from 'react';
|
|
|
3
3
|
import { useRouteRef } from '@backstage/core-plugin-api';
|
|
4
4
|
import { AskRightContent } from './AskRightContent.esm.js';
|
|
5
5
|
import { qetaTranslationRef, questionsRouteRef, articlesRouteRef, usersRouteRef, tagsRouteRef, linksRouteRef, collectionsRouteRef, entitiesRouteRef, favoriteQuestionsRouteRef, qetaRouteRef, askRouteRef, editQuestionRouteRef, userRouteRef, tagRouteRef, entityRouteRef, questionRouteRef, articleRouteRef, linkRouteRef } from '@drodil/backstage-plugin-qeta-react';
|
|
6
|
-
import {
|
|
6
|
+
import { Box, Tooltip, IconButton, makeStyles } from '@material-ui/core';
|
|
7
7
|
import { useLocation, useSearchParams, matchPath } from 'react-router-dom';
|
|
8
8
|
import { filterTags } from '@drodil/backstage-plugin-qeta-common';
|
|
9
9
|
import { HomeRightContent } from './HomeRightContent.esm.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RightContent.esm.js","sources":["../../../src/components/RightContent/RightContent.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport { useRouteRef } from '@backstage/core-plugin-api';\nimport { AskRightContent } from './AskRightContent';\nimport {\n articleRouteRef,\n articlesRouteRef,\n askRouteRef,\n collectionsRouteRef,\n editQuestionRouteRef,\n entitiesRouteRef,\n entityRouteRef,\n favoriteQuestionsRouteRef,\n linkRouteRef,\n linksRouteRef,\n qetaRouteRef,\n qetaTranslationRef,\n questionRouteRef,\n questionsRouteRef,\n tagRouteRef,\n tagsRouteRef,\n userRouteRef,\n usersRouteRef,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { Box, IconButton, makeStyles, Tooltip } from '@material-ui/core';\nimport { matchPath, useLocation, useSearchParams } from 'react-router-dom';\nimport { filterTags } from '@drodil/backstage-plugin-qeta-common';\nimport { HomeRightContent } from './HomeRightContent';\nimport { QuestionsRightContent } from './QuestionsRightContent';\nimport { ArticlesRightContent } from './ArticlesRightContent';\nimport { LinksRightContent } from './LinksRightContent';\nimport { FavoriteRightContent } from './FavoriteRightContent';\nimport { UsersRightContent } from './UsersRightContent';\nimport { TagRightContent } from './TagRightContent';\nimport { TagsRightContent } from './TagsRightContent';\nimport { EntitiesRightContent } from './EntitiesRightContent';\nimport { EntityRightContent } from './EntityRightContent';\nimport { CollectionsRightContent } from './CollectionsRightContent';\nimport MenuOpenIcon from '@material-ui/icons/MenuOpen';\nimport ChevronLeftIcon from '@material-ui/icons/ChevronLeft';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { DefaultRightContent } from './DefaultRightContent';\nimport { PostRightContent } from './PostRightContent';\n\nconst useStyles = makeStyles(theme => ({\n container: {\n width: (props: { compact: boolean }) => (props.compact ? '72px' : '245px'),\n padding: (props: { compact: boolean }) =>\n props.compact ? theme.spacing(1) : theme.spacing(0, 0, 0, 1),\n transition: 'width 0.2s ease-in-out',\n display: 'flex',\n flexDirection: 'column',\n overflowX: 'hidden',\n [theme.breakpoints.down('md')]: {\n width: '100%',\n },\n },\n toggleButton: {\n marginBottom: theme.spacing(1),\n marginRight: theme.spacing(1.5),\n },\n content: {\n display: (props: { compact: boolean }) =>\n props.compact ? 'none' : 'block',\n opacity: (props: { compact: boolean }) => (props.compact ? 0 : 1),\n transition: 'opacity 0.2s ease-in-out',\n },\n}));\n\nexport const RightContent = (props: {\n compact?: boolean;\n onToggle?: () => void;\n}) => {\n const { compact = false, onToggle } = props;\n const classes = useStyles({ compact });\n const location = useLocation();\n const [searchParams] = useSearchParams();\n const { t } = useTranslationRef(qetaTranslationRef);\n\n // Route Refs\n const questionsPath = useRouteRef(questionsRouteRef);\n const articlesPath = useRouteRef(articlesRouteRef);\n const usersPath = useRouteRef(usersRouteRef);\n const tagsPath = useRouteRef(tagsRouteRef);\n const linksPath = useRouteRef(linksRouteRef);\n const collectionsPath = useRouteRef(collectionsRouteRef);\n const entitiesPath = useRouteRef(entitiesRouteRef);\n const favoritePath = useRouteRef(favoriteQuestionsRouteRef);\n const homePath = useRouteRef(qetaRouteRef);\n // qetaRouteRef gives the base path of the plugin, e.g. /qeta\n const rootPath = homePath();\n\n // Matchers\n const isQuestions = !!matchPath(\n { path: questionsPath(), end: true },\n location.pathname,\n );\n const isAsk = !!(\n matchPath(\n { path: `${rootPath}${askRouteRef.path}`, end: true },\n location.pathname,\n ) ||\n matchPath(\n { path: `${rootPath}${editQuestionRouteRef.path}`, end: true },\n location.pathname,\n )\n );\n\n const isArticles = !!matchPath(\n { path: articlesPath(), end: true },\n location.pathname,\n );\n const isUsers = !!matchPath(\n { path: usersPath(), end: true },\n location.pathname,\n );\n const userMatch = matchPath(\n { path: `${rootPath}${userRouteRef.path}` },\n location.pathname,\n );\n const isTags = !!matchPath(\n { path: tagsPath(), end: true },\n location.pathname,\n );\n const tagMatch = matchPath(\n { path: `${rootPath}${tagRouteRef.path}` },\n location.pathname,\n );\n const isCollections = !!matchPath(\n { path: collectionsPath(), end: true },\n location.pathname,\n );\n const isEntities = !!matchPath(\n { path: entitiesPath(), end: true },\n location.pathname,\n );\n const entityMatch = matchPath(\n { path: `${rootPath}${entityRouteRef.path}` },\n location.pathname,\n );\n const isLinks = !!matchPath(\n { path: linksPath(), end: true },\n location.pathname,\n );\n const isFavorite = !!matchPath(\n { path: favoritePath(), end: true },\n location.pathname,\n );\n const questionMatch = matchPath(\n { path: `${rootPath}${questionRouteRef.path}` },\n location.pathname,\n );\n const articleMatch = matchPath(\n { path: `${rootPath}${articleRouteRef.path}` },\n location.pathname,\n );\n const linkMatch = matchPath(\n { path: `${rootPath}${linkRouteRef.path}` },\n location.pathname,\n );\n const isPostPage = !!(questionMatch || articleMatch || linkMatch);\n const isHome = !!(\n matchPath({ path: homePath(), end: true }, location.pathname) ||\n location.pathname === homePath()\n );\n\n const [entityRef, setEntityRef] = useState<string | undefined>(undefined);\n const [tags, setTags] = useState<string[] | undefined>(undefined);\n const [userRef, setUserRef] = useState<string | undefined>(undefined);\n\n const tagParam = tagMatch?.params.tag;\n const userParam = userMatch?.params['*'];\n const entityParam = entityMatch?.params.entityRef;\n\n const entitySearchParam = searchParams.get('entity') ?? undefined;\n const tagsSearchParam = searchParams.get('tags');\n\n useEffect(() => {\n if (isQuestions || isArticles || isLinks) {\n setEntityRef(entitySearchParam);\n setTags(filterTags(tagsSearchParam));\n setUserRef(undefined);\n } else if (tagParam) {\n setTags([tagParam]);\n setEntityRef(undefined);\n setUserRef(undefined);\n } else if (userParam) {\n setUserRef(userParam);\n setTags(undefined);\n setEntityRef(undefined);\n } else if (entityParam) {\n setEntityRef(entityParam);\n setTags(undefined);\n setUserRef(undefined);\n } else {\n setTags(undefined);\n setEntityRef(undefined);\n setUserRef(undefined);\n }\n }, [\n entitySearchParam,\n tagsSearchParam,\n isQuestions,\n isArticles,\n isLinks,\n tagParam,\n userParam,\n entityParam,\n location.pathname,\n ]);\n\n let content = null;\n\n if (isHome) {\n content = <HomeRightContent />;\n } else if (isAsk) {\n content = <AskRightContent />;\n } else if (isPostPage) {\n const id =\n questionMatch?.params.id ||\n articleMatch?.params.id ||\n linkMatch?.params.id;\n content = <PostRightContent id={id} />;\n } else if (isQuestions) {\n content = <QuestionsRightContent tags={tags} entityRef={entityRef} />;\n } else if (isArticles) {\n content = <ArticlesRightContent tags={tags} entityRef={entityRef} />;\n } else if (isLinks) {\n content = <LinksRightContent tags={tags} entityRef={entityRef} />;\n } else if (isFavorite) {\n content = <FavoriteRightContent />;\n } else if (isUsers) {\n content = <UsersRightContent />;\n } else if (tagMatch) {\n content = <TagRightContent tags={tags} />;\n } else if (userMatch && userRef) {\n content = null;\n } else if (isTags) {\n content = <TagsRightContent />;\n } else if (isEntities) {\n content = <EntitiesRightContent />;\n } else if (entityMatch && entityRef) {\n content = <EntityRightContent entityRef={entityRef} />;\n } else if (isCollections) {\n content = <CollectionsRightContent />;\n }\n\n if (!content) {\n content = <DefaultRightContent />;\n }\n\n return (\n <Box className={classes.container}>\n <Box className={classes.content}>{content}</Box>\n <Box\n display=\"flex\"\n justifyContent={compact ? 'center' : 'flex-end'}\n style={{ marginTop: 'auto' }}\n >\n <Tooltip\n title={compact ? t('rightMenu.expand') : t('rightMenu.collapse')}\n placement=\"left\"\n >\n <IconButton\n onClick={onToggle}\n size=\"small\"\n className={compact ? '' : classes.toggleButton}\n style={{ marginTop: 8 }}\n >\n {compact ? (\n <ChevronLeftIcon />\n ) : (\n <MenuOpenIcon style={{ transform: 'scaleX(-1)' }} />\n )}\n </IconButton>\n </Tooltip>\n </Box>\n </Box>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RightContent.esm.js","sources":["../../../src/components/RightContent/RightContent.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport { useRouteRef } from '@backstage/core-plugin-api';\nimport { AskRightContent } from './AskRightContent';\nimport {\n articleRouteRef,\n articlesRouteRef,\n askRouteRef,\n collectionsRouteRef,\n editQuestionRouteRef,\n entitiesRouteRef,\n entityRouteRef,\n favoriteQuestionsRouteRef,\n linkRouteRef,\n linksRouteRef,\n qetaRouteRef,\n qetaTranslationRef,\n questionRouteRef,\n questionsRouteRef,\n tagRouteRef,\n tagsRouteRef,\n userRouteRef,\n usersRouteRef,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { Box, IconButton, makeStyles, Tooltip } from '@material-ui/core';\nimport { matchPath, useLocation, useSearchParams } from 'react-router-dom';\nimport { filterTags } from '@drodil/backstage-plugin-qeta-common';\nimport { HomeRightContent } from './HomeRightContent';\nimport { QuestionsRightContent } from './QuestionsRightContent';\nimport { ArticlesRightContent } from './ArticlesRightContent';\nimport { LinksRightContent } from './LinksRightContent';\nimport { FavoriteRightContent } from './FavoriteRightContent';\nimport { UsersRightContent } from './UsersRightContent';\nimport { TagRightContent } from './TagRightContent';\nimport { TagsRightContent } from './TagsRightContent';\nimport { EntitiesRightContent } from './EntitiesRightContent';\nimport { EntityRightContent } from './EntityRightContent';\nimport { CollectionsRightContent } from './CollectionsRightContent';\nimport MenuOpenIcon from '@material-ui/icons/MenuOpen';\nimport ChevronLeftIcon from '@material-ui/icons/ChevronLeft';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { DefaultRightContent } from './DefaultRightContent';\nimport { PostRightContent } from './PostRightContent';\n\nconst useStyles = makeStyles(theme => ({\n container: {\n width: (props: { compact: boolean }) => (props.compact ? '72px' : '245px'),\n padding: (props: { compact: boolean }) =>\n props.compact ? theme.spacing(1) : theme.spacing(0, 0, 0, 1),\n transition: 'width 0.2s ease-in-out',\n display: 'flex',\n flexDirection: 'column',\n overflowX: 'hidden',\n [theme.breakpoints.down('md')]: {\n width: '100%',\n },\n },\n toggleButton: {\n marginBottom: theme.spacing(1),\n marginRight: theme.spacing(1.5),\n },\n content: {\n display: (props: { compact: boolean }) =>\n props.compact ? 'none' : 'block',\n opacity: (props: { compact: boolean }) => (props.compact ? 0 : 1),\n transition: 'opacity 0.2s ease-in-out',\n },\n}));\n\nexport const RightContent = (props: {\n compact?: boolean;\n onToggle?: () => void;\n}) => {\n const { compact = false, onToggle } = props;\n const classes = useStyles({ compact });\n const location = useLocation();\n const [searchParams] = useSearchParams();\n const { t } = useTranslationRef(qetaTranslationRef);\n\n // Route Refs\n const questionsPath = useRouteRef(questionsRouteRef);\n const articlesPath = useRouteRef(articlesRouteRef);\n const usersPath = useRouteRef(usersRouteRef);\n const tagsPath = useRouteRef(tagsRouteRef);\n const linksPath = useRouteRef(linksRouteRef);\n const collectionsPath = useRouteRef(collectionsRouteRef);\n const entitiesPath = useRouteRef(entitiesRouteRef);\n const favoritePath = useRouteRef(favoriteQuestionsRouteRef);\n const homePath = useRouteRef(qetaRouteRef);\n // qetaRouteRef gives the base path of the plugin, e.g. /qeta\n const rootPath = homePath();\n\n // Matchers\n const isQuestions = !!matchPath(\n { path: questionsPath(), end: true },\n location.pathname,\n );\n const isAsk = !!(\n matchPath(\n { path: `${rootPath}${askRouteRef.path}`, end: true },\n location.pathname,\n ) ||\n matchPath(\n { path: `${rootPath}${editQuestionRouteRef.path}`, end: true },\n location.pathname,\n )\n );\n\n const isArticles = !!matchPath(\n { path: articlesPath(), end: true },\n location.pathname,\n );\n const isUsers = !!matchPath(\n { path: usersPath(), end: true },\n location.pathname,\n );\n const userMatch = matchPath(\n { path: `${rootPath}${userRouteRef.path}` },\n location.pathname,\n );\n const isTags = !!matchPath(\n { path: tagsPath(), end: true },\n location.pathname,\n );\n const tagMatch = matchPath(\n { path: `${rootPath}${tagRouteRef.path}` },\n location.pathname,\n );\n const isCollections = !!matchPath(\n { path: collectionsPath(), end: true },\n location.pathname,\n );\n const isEntities = !!matchPath(\n { path: entitiesPath(), end: true },\n location.pathname,\n );\n const entityMatch = matchPath(\n { path: `${rootPath}${entityRouteRef.path}` },\n location.pathname,\n );\n const isLinks = !!matchPath(\n { path: linksPath(), end: true },\n location.pathname,\n );\n const isFavorite = !!matchPath(\n { path: favoritePath(), end: true },\n location.pathname,\n );\n const questionMatch = matchPath(\n { path: `${rootPath}${questionRouteRef.path}` },\n location.pathname,\n );\n const articleMatch = matchPath(\n { path: `${rootPath}${articleRouteRef.path}` },\n location.pathname,\n );\n const linkMatch = matchPath(\n { path: `${rootPath}${linkRouteRef.path}` },\n location.pathname,\n );\n const isPostPage = !!(questionMatch || articleMatch || linkMatch);\n const isHome = !!(\n matchPath({ path: homePath(), end: true }, location.pathname) ||\n location.pathname === homePath()\n );\n\n const [entityRef, setEntityRef] = useState<string | undefined>(undefined);\n const [tags, setTags] = useState<string[] | undefined>(undefined);\n const [userRef, setUserRef] = useState<string | undefined>(undefined);\n\n const tagParam = tagMatch?.params.tag;\n const userParam = userMatch?.params['*'];\n const entityParam = entityMatch?.params.entityRef;\n\n const entitySearchParam = searchParams.get('entity') ?? undefined;\n const tagsSearchParam = searchParams.get('tags');\n\n useEffect(() => {\n if (isQuestions || isArticles || isLinks) {\n setEntityRef(entitySearchParam);\n setTags(filterTags(tagsSearchParam));\n setUserRef(undefined);\n } else if (tagParam) {\n setTags([tagParam]);\n setEntityRef(undefined);\n setUserRef(undefined);\n } else if (userParam) {\n setUserRef(userParam);\n setTags(undefined);\n setEntityRef(undefined);\n } else if (entityParam) {\n setEntityRef(entityParam);\n setTags(undefined);\n setUserRef(undefined);\n } else {\n setTags(undefined);\n setEntityRef(undefined);\n setUserRef(undefined);\n }\n }, [\n entitySearchParam,\n tagsSearchParam,\n isQuestions,\n isArticles,\n isLinks,\n tagParam,\n userParam,\n entityParam,\n location.pathname,\n ]);\n\n let content = null;\n\n if (isHome) {\n content = <HomeRightContent />;\n } else if (isAsk) {\n content = <AskRightContent />;\n } else if (isPostPage) {\n const id =\n questionMatch?.params.id ||\n articleMatch?.params.id ||\n linkMatch?.params.id;\n content = <PostRightContent id={id} />;\n } else if (isQuestions) {\n content = <QuestionsRightContent tags={tags} entityRef={entityRef} />;\n } else if (isArticles) {\n content = <ArticlesRightContent tags={tags} entityRef={entityRef} />;\n } else if (isLinks) {\n content = <LinksRightContent tags={tags} entityRef={entityRef} />;\n } else if (isFavorite) {\n content = <FavoriteRightContent />;\n } else if (isUsers) {\n content = <UsersRightContent />;\n } else if (tagMatch) {\n content = <TagRightContent tags={tags} />;\n } else if (userMatch && userRef) {\n content = null;\n } else if (isTags) {\n content = <TagsRightContent />;\n } else if (isEntities) {\n content = <EntitiesRightContent />;\n } else if (entityMatch && entityRef) {\n content = <EntityRightContent entityRef={entityRef} />;\n } else if (isCollections) {\n content = <CollectionsRightContent />;\n }\n\n if (!content) {\n content = <DefaultRightContent />;\n }\n\n return (\n <Box className={classes.container}>\n <Box className={classes.content}>{content}</Box>\n <Box\n display=\"flex\"\n justifyContent={compact ? 'center' : 'flex-end'}\n style={{ marginTop: 'auto' }}\n >\n <Tooltip\n title={compact ? t('rightMenu.expand') : t('rightMenu.collapse')}\n placement=\"left\"\n >\n <IconButton\n onClick={onToggle}\n size=\"small\"\n className={compact ? '' : classes.toggleButton}\n style={{ marginTop: 8 }}\n >\n {compact ? (\n <ChevronLeftIcon />\n ) : (\n <MenuOpenIcon style={{ transform: 'scaleX(-1)' }} />\n )}\n </IconButton>\n </Tooltip>\n </Box>\n </Box>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SimilarPosts.esm.js","sources":["../../../src/components/RightContent/SimilarPosts.tsx"],"sourcesContent":["import {\n PostHighlightListContent,\n qetaTranslationRef,\n useQetaApi,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { Post } from '@drodil/backstage-plugin-qeta-common';\n\nexport const SimilarPosts = (props: { post: Post }) => {\n const { post } = props;\n const { t } = useTranslationRef(qetaTranslationRef);\n\n const { value: similarPosts, loading } = useQetaApi(\n api => {\n if (!post.title || post.title.length === 0) {\n return Promise.resolve({ posts: [], total: 0 });\n }\n return api.suggest({\n title: post.title,\n content: post.content,\n tags: post.tags,\n entities: post.entities,\n });\n },\n [post.id, post.title, post.content, post.tags, post.entities],\n );\n\n const filteredPosts = (similarPosts?.posts ?? []).filter(\n p => p.id !== post.id,\n );\n\n if (filteredPosts.length === 0) {\n return null;\n }\n\n return (\n <PostHighlightListContent\n title={t('rightMenu.similarPosts', {})}\n posts={filteredPosts}\n loading={loading}\n disableLoading\n />\n );\n};\n"],"names":[],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"SimilarPosts.esm.js","sources":["../../../src/components/RightContent/SimilarPosts.tsx"],"sourcesContent":["import {\n PostHighlightListContent,\n qetaTranslationRef,\n useQetaApi,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { Post } from '@drodil/backstage-plugin-qeta-common';\n\nexport const SimilarPosts = (props: { post: Post }) => {\n const { post } = props;\n const { t } = useTranslationRef(qetaTranslationRef);\n\n const { value: similarPosts, loading } = useQetaApi(\n api => {\n if (!post.title || post.title.length === 0) {\n return Promise.resolve({ posts: [], total: 0 });\n }\n return api.suggest({\n title: post.title,\n content: post.content,\n tags: post.tags,\n entities: post.entities,\n });\n },\n [post.id, post.title, post.content, post.tags, post.entities],\n );\n\n const filteredPosts = (similarPosts?.posts ?? []).filter(\n p => p.id !== post.id,\n );\n\n if (filteredPosts.length === 0) {\n return null;\n }\n\n return (\n <PostHighlightListContent\n title={t('rightMenu.similarPosts', {})}\n posts={filteredPosts}\n loading={loading}\n disableLoading\n />\n );\n};\n"],"names":[],"mappings":";;;;AAQO,MAAM,YAAA,GAAe,CAAC,KAAA,KAA0B;AACrD,EAAA,MAAM,EAAE,MAAK,GAAI,KAAA;AACjB,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,kBAAkB,CAAA;AAElD,EAAA,MAAM,EAAE,KAAA,EAAO,YAAA,EAAc,OAAA,EAAQ,GAAI,UAAA;AAAA,IACvC,CAAA,GAAA,KAAO;AACL,MAAA,IAAI,CAAC,IAAA,CAAK,KAAA,IAAS,IAAA,CAAK,KAAA,CAAM,WAAW,CAAA,EAAG;AAC1C,QAAA,OAAO,OAAA,CAAQ,QAAQ,EAAE,KAAA,EAAO,EAAC,EAAG,KAAA,EAAO,GAAG,CAAA;AAAA,MAChD;AACA,MAAA,OAAO,IAAI,OAAA,CAAQ;AAAA,QACjB,OAAO,IAAA,CAAK,KAAA;AAAA,QACZ,SAAS,IAAA,CAAK,OAAA;AAAA,QACd,MAAM,IAAA,CAAK,IAAA;AAAA,QACX,UAAU,IAAA,CAAK;AAAA,OAChB,CAAA;AAAA,IACH,CAAA;AAAA,IACA,CAAC,IAAA,CAAK,EAAA,EAAI,IAAA,CAAK,KAAA,EAAO,KAAK,OAAA,EAAS,IAAA,CAAK,IAAA,EAAM,IAAA,CAAK,QAAQ;AAAA,GAC9D;AAEA,EAAA,MAAM,aAAA,GAAA,CAAiB,YAAA,EAAc,KAAA,IAAS,EAAC,EAAG,MAAA;AAAA,IAChD,CAAA,CAAA,KAAK,CAAA,CAAE,EAAA,KAAO,IAAA,CAAK;AAAA,GACrB;AAEA,EAAA,IAAI,aAAA,CAAc,WAAW,CAAA,EAAG;AAC9B,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,wBAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,CAAA,CAAE,wBAAA,EAA0B,EAAE,CAAA;AAAA,MACrC,KAAA,EAAO,aAAA;AAAA,MACP,OAAA;AAAA,MACA,cAAA,EAAc;AAAA;AAAA,GAChB;AAEJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SimilarQuestions.esm.js","sources":["../../../src/components/RightContent/SimilarQuestions.tsx"],"sourcesContent":["import {\n PostHighlightListContent,\n qetaTranslationRef,\n useQetaApi,\n useQetaContext,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { Post } from '@drodil/backstage-plugin-qeta-common';\nimport { useState, useEffect } from 'react';\nimport { makeStyles } from '@material-ui/core';\n\nconst useStyles = makeStyles(theme => ({\n similarQuestionsContainer: {\n borderLeft: `3px solid ${theme.palette.warning.main}`,\n backgroundColor:\n theme.palette.type === 'dark'\n ? 'rgba(255, 167, 38, 0.08)'\n : 'rgba(255, 167, 38, 0.05)',\n borderRadius: theme.shape.borderRadius,\n padding: `${theme.spacing(1)}px 2px ${theme.spacing(1)}px`,\n },\n similarQuestionsTitle: {\n color: theme.palette.warning.main,\n fontWeight: 600,\n },\n}));\n\nexport const SimilarQuestions = () => {\n const classes = useStyles();\n const { draftQuestion } = useQetaContext();\n const { t } = useTranslationRef(qetaTranslationRef);\n const [debouncedDraftQuestion, setDebouncedDraftQuestion] =\n useState(draftQuestion);\n\n useEffect(() => {\n const handler = setTimeout(() => {\n setDebouncedDraftQuestion(draftQuestion);\n }, 500);\n\n return () => {\n clearTimeout(handler);\n };\n }, [draftQuestion]);\n\n const { value: questions, loading } = useQetaApi(\n api => {\n if (\n !debouncedDraftQuestion ||\n debouncedDraftQuestion.title.length === 0\n ) {\n return Promise.resolve({ posts: [], total: 0 });\n }\n return api.suggest({\n title: debouncedDraftQuestion.title,\n content: debouncedDraftQuestion.content,\n tags: debouncedDraftQuestion.tags,\n entities: debouncedDraftQuestion.entities,\n });\n },\n [debouncedDraftQuestion],\n );\n\n const [displayQuestions, setDisplayQuestions] = useState<Post[]>([]);\n\n useEffect(() => {\n if (questions) {\n setDisplayQuestions(questions.posts);\n }\n }, [questions]);\n\n useEffect(() => {\n if (\n (!draftQuestion || draftQuestion.title.length === 0) &&\n displayQuestions.length > 0\n ) {\n setDisplayQuestions([]);\n }\n }, [draftQuestion, displayQuestions]);\n\n if (displayQuestions.length === 0) {\n return null;\n }\n\n return (\n <PostHighlightListContent\n title={t('rightMenu.similarQuestions')}\n posts={displayQuestions}\n loading={loading}\n disableLoading\n containerClassName={classes.similarQuestionsContainer}\n titleClassName={classes.similarQuestionsTitle}\n />\n );\n};\n"],"names":[],"mappings":";;;;;;AAWA,MAAM,SAAA,GAAY,WAAW,
|
|
1
|
+
{"version":3,"file":"SimilarQuestions.esm.js","sources":["../../../src/components/RightContent/SimilarQuestions.tsx"],"sourcesContent":["import {\n PostHighlightListContent,\n qetaTranslationRef,\n useQetaApi,\n useQetaContext,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { Post } from '@drodil/backstage-plugin-qeta-common';\nimport { useState, useEffect } from 'react';\nimport { makeStyles } from '@material-ui/core';\n\nconst useStyles = makeStyles(theme => ({\n similarQuestionsContainer: {\n borderLeft: `3px solid ${theme.palette.warning.main}`,\n backgroundColor:\n theme.palette.type === 'dark'\n ? 'rgba(255, 167, 38, 0.08)'\n : 'rgba(255, 167, 38, 0.05)',\n borderRadius: theme.shape.borderRadius,\n padding: `${theme.spacing(1)}px 2px ${theme.spacing(1)}px`,\n },\n similarQuestionsTitle: {\n color: theme.palette.warning.main,\n fontWeight: 600,\n },\n}));\n\nexport const SimilarQuestions = () => {\n const classes = useStyles();\n const { draftQuestion } = useQetaContext();\n const { t } = useTranslationRef(qetaTranslationRef);\n const [debouncedDraftQuestion, setDebouncedDraftQuestion] =\n useState(draftQuestion);\n\n useEffect(() => {\n const handler = setTimeout(() => {\n setDebouncedDraftQuestion(draftQuestion);\n }, 500);\n\n return () => {\n clearTimeout(handler);\n };\n }, [draftQuestion]);\n\n const { value: questions, loading } = useQetaApi(\n api => {\n if (\n !debouncedDraftQuestion ||\n debouncedDraftQuestion.title.length === 0\n ) {\n return Promise.resolve({ posts: [], total: 0 });\n }\n return api.suggest({\n title: debouncedDraftQuestion.title,\n content: debouncedDraftQuestion.content,\n tags: debouncedDraftQuestion.tags,\n entities: debouncedDraftQuestion.entities,\n });\n },\n [debouncedDraftQuestion],\n );\n\n const [displayQuestions, setDisplayQuestions] = useState<Post[]>([]);\n\n useEffect(() => {\n if (questions) {\n setDisplayQuestions(questions.posts);\n }\n }, [questions]);\n\n useEffect(() => {\n if (\n (!draftQuestion || draftQuestion.title.length === 0) &&\n displayQuestions.length > 0\n ) {\n setDisplayQuestions([]);\n }\n }, [draftQuestion, displayQuestions]);\n\n if (displayQuestions.length === 0) {\n return null;\n }\n\n return (\n <PostHighlightListContent\n title={t('rightMenu.similarQuestions')}\n posts={displayQuestions}\n loading={loading}\n disableLoading\n containerClassName={classes.similarQuestionsContainer}\n titleClassName={classes.similarQuestionsTitle}\n />\n );\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TagRightContent.esm.js","sources":["../../../src/components/RightContent/TagRightContent.tsx"],"sourcesContent":["import {\n FollowedTagsList,\n PostHighlightList,\n PostHighlightListContainer,\n qetaTranslationRef,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport Whatshot from '@material-ui/icons/Whatshot';\n\nexport const TagRightContent = (props: { tags?: string[] }) => {\n const { t } = useTranslationRef(qetaTranslationRef);\n const { tags } = props;\n\n return (\n <>\n <FollowedTagsList />\n {tags && tags.length > 0 ? (\n <>\n <PostHighlightList\n type=\"hot\"\n title={t('highlights.hotQuestions.title')}\n noQuestionsLabel={t('highlights.hotQuestions.noQuestionsLabel')}\n icon={<Whatshot fontSize=\"small\" />}\n options={{ tags: tags }}\n postType=\"question\"\n />\n <PostHighlightList\n type=\"unanswered\"\n title={t('highlights.unanswered.title')}\n noQuestionsLabel={t('highlights.unanswered.noQuestionsLabel')}\n options={{ tags: tags }}\n postType=\"question\"\n />\n <PostHighlightList\n type=\"incorrect\"\n title={t('highlights.incorrect.title')}\n noQuestionsLabel={t('highlights.incorrect.noQuestionsLabel')}\n options={{ tags: tags }}\n postType=\"question\"\n />\n </>\n ) : (\n <PostHighlightListContainer />\n )}\n </>\n );\n};\n"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"TagRightContent.esm.js","sources":["../../../src/components/RightContent/TagRightContent.tsx"],"sourcesContent":["import {\n FollowedTagsList,\n PostHighlightList,\n PostHighlightListContainer,\n qetaTranslationRef,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport Whatshot from '@material-ui/icons/Whatshot';\n\nexport const TagRightContent = (props: { tags?: string[] }) => {\n const { t } = useTranslationRef(qetaTranslationRef);\n const { tags } = props;\n\n return (\n <>\n <FollowedTagsList />\n {tags && tags.length > 0 ? (\n <>\n <PostHighlightList\n type=\"hot\"\n title={t('highlights.hotQuestions.title')}\n noQuestionsLabel={t('highlights.hotQuestions.noQuestionsLabel')}\n icon={<Whatshot fontSize=\"small\" />}\n options={{ tags: tags }}\n postType=\"question\"\n />\n <PostHighlightList\n type=\"unanswered\"\n title={t('highlights.unanswered.title')}\n noQuestionsLabel={t('highlights.unanswered.noQuestionsLabel')}\n options={{ tags: tags }}\n postType=\"question\"\n />\n <PostHighlightList\n type=\"incorrect\"\n title={t('highlights.incorrect.title')}\n noQuestionsLabel={t('highlights.incorrect.noQuestionsLabel')}\n options={{ tags: tags }}\n postType=\"question\"\n />\n </>\n ) : (\n <PostHighlightListContainer />\n )}\n </>\n );\n};\n"],"names":[],"mappings":";;;;;AASO,MAAM,eAAA,GAAkB,CAAC,KAAA,KAA+B;AAC7D,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,kBAAkB,CAAA;AAClD,EAAA,MAAM,EAAE,MAAK,GAAI,KAAA;AAEjB,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,gBAAA,EAAA,EAAiB,CAAA;AAAA,IACjB,IAAA,IAAQ,IAAA,CAAK,MAAA,GAAS,CAAA,mBACrB,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,sBAAA,GAAA;AAAA,QAAC,iBAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,KAAA;AAAA,UACL,KAAA,EAAO,EAAE,+BAA+B,CAAA;AAAA,UACxC,gBAAA,EAAkB,EAAE,0CAA0C,CAAA;AAAA,UAC9D,IAAA,kBAAM,GAAA,CAAC,QAAA,EAAA,EAAS,QAAA,EAAS,OAAA,EAAQ,CAAA;AAAA,UACjC,OAAA,EAAS,EAAE,IAAA,EAAW;AAAA,UACtB,QAAA,EAAS;AAAA;AAAA,OACX;AAAA,sBACA,GAAA;AAAA,QAAC,iBAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,YAAA;AAAA,UACL,KAAA,EAAO,EAAE,6BAA6B,CAAA;AAAA,UACtC,gBAAA,EAAkB,EAAE,wCAAwC,CAAA;AAAA,UAC5D,OAAA,EAAS,EAAE,IAAA,EAAW;AAAA,UACtB,QAAA,EAAS;AAAA;AAAA,OACX;AAAA,sBACA,GAAA;AAAA,QAAC,iBAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,WAAA;AAAA,UACL,KAAA,EAAO,EAAE,4BAA4B,CAAA;AAAA,UACrC,gBAAA,EAAkB,EAAE,uCAAuC,CAAA;AAAA,UAC3D,OAAA,EAAS,EAAE,IAAA,EAAW;AAAA,UACtB,QAAA,EAAS;AAAA;AAAA;AACX,KAAA,EACF,CAAA,uBAEC,0BAAA,EAAA,EAA2B;AAAA,GAAA,EAEhC,CAAA;AAEJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TagsRightContent.esm.js","sources":["../../../src/components/RightContent/TagsRightContent.tsx"],"sourcesContent":["import {\n FollowedTagsList,\n PostHighlightListContainer,\n} from '@drodil/backstage-plugin-qeta-react';\n\nexport const TagsRightContent = () => {\n return (\n <>\n <FollowedTagsList />\n <PostHighlightListContainer />\n </>\n );\n};\n"],"names":[],"mappings":";;;AAKO,MAAM,mBAAmB,MAAM;AACpC,EAAA,
|
|
1
|
+
{"version":3,"file":"TagsRightContent.esm.js","sources":["../../../src/components/RightContent/TagsRightContent.tsx"],"sourcesContent":["import {\n FollowedTagsList,\n PostHighlightListContainer,\n} from '@drodil/backstage-plugin-qeta-react';\n\nexport const TagsRightContent = () => {\n return (\n <>\n <FollowedTagsList />\n <PostHighlightListContainer />\n </>\n );\n};\n"],"names":[],"mappings":";;;AAKO,MAAM,mBAAmB,MAAM;AACpC,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,gBAAA,EAAA,EAAiB,CAAA;AAAA,wBACjB,0BAAA,EAAA,EAA2B;AAAA,GAAA,EAC9B,CAAA;AAEJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UsersRightContent.esm.js","sources":["../../../src/components/RightContent/UsersRightContent.tsx"],"sourcesContent":["import {\n FollowedUsersList,\n PostHighlightListContainer,\n} from '@drodil/backstage-plugin-qeta-react';\n\nexport const UsersRightContent = () => {\n return (\n <>\n <FollowedUsersList />\n <PostHighlightListContainer />\n </>\n );\n};\n"],"names":[],"mappings":";;;AAKO,MAAM,oBAAoB,MAAM;AACrC,EAAA,
|
|
1
|
+
{"version":3,"file":"UsersRightContent.esm.js","sources":["../../../src/components/RightContent/UsersRightContent.tsx"],"sourcesContent":["import {\n FollowedUsersList,\n PostHighlightListContainer,\n} from '@drodil/backstage-plugin-qeta-react';\n\nexport const UsersRightContent = () => {\n return (\n <>\n <FollowedUsersList />\n <PostHighlightListContainer />\n </>\n );\n};\n"],"names":[],"mappings":";;;AAKO,MAAM,oBAAoB,MAAM;AACrC,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,iBAAA,EAAA,EAAkB,CAAA;AAAA,wBAClB,0BAAA,EAAA,EAA2B;AAAA,GAAA,EAC9B,CAAA;AAEJ;;;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
-
import {
|
|
2
|
+
import { useTheme, CardContent, Typography, FormControlLabel, Switch, Box, ButtonGroup, Button, makeStyles } from '@material-ui/core';
|
|
3
3
|
import { InfoCard } from '@backstage/core-components';
|
|
4
4
|
import { useUserSettings, qetaTranslationRef, useAI } from '@drodil/backstage-plugin-qeta-react';
|
|
5
5
|
import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsPage.esm.js","sources":["../../../src/components/SettingsPage/SettingsPage.tsx"],"sourcesContent":["import {\n Box,\n Button,\n ButtonGroup,\n CardContent,\n FormControlLabel,\n makeStyles,\n Switch,\n Typography,\n useTheme,\n} from '@material-ui/core';\nimport { InfoCard } from '@backstage/core-components';\nimport {\n qetaTranslationRef,\n useAI,\n useUserSettings,\n ViewType,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { configApiRef, useApi } from '@backstage/core-plugin-api';\n\nconst useStyles = makeStyles(theme => ({\n content: {\n maxWidth: '800px',\n margin: '0 auto',\n },\n section: {\n marginBottom: theme.spacing(3),\n },\n sectionTitle: {\n marginBottom: theme.spacing(2),\n fontWeight: 600,\n },\n settingItem: {\n marginBottom: theme.spacing(2),\n },\n description: {\n color: theme.palette.text.secondary,\n fontSize: '0.875rem',\n marginTop: theme.spacing(0.5),\n },\n viewTypeItem: {\n marginBottom: theme.spacing(2),\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n viewTypeLabel: {\n minWidth: '200px',\n },\n}));\n\nexport const SettingsPage = () => {\n const classes = useStyles();\n const theme = useTheme();\n const {\n settings,\n setSetting,\n getSetting,\n resetSettings,\n isLoaded,\n updateSettings,\n } = useUserSettings();\n const { t } = useTranslationRef(qetaTranslationRef);\n const { isAIEnabled } = useAI();\n const configApi = useApi(configApiRef);\n const allowAnonymous = configApi.getOptionalBoolean('qeta.allowAnonymous');\n\n const viewTypes = [\n {\n key: 'posts-question',\n label: t('settingsPage.viewTypePreferences.labels.questions', {}),\n },\n {\n key: 'posts-article',\n label: t('settingsPage.viewTypePreferences.labels.articles', {}),\n },\n {\n key: 'posts-link',\n label: t('settingsPage.viewTypePreferences.labels.links', {}),\n },\n {\n key: 'favorites',\n label: t('settingsPage.viewTypePreferences.labels.favorites', {}),\n },\n {\n key: 'collections',\n label: t('settingsPage.viewTypePreferences.labels.collections', {}),\n },\n {\n key: 'tags',\n label: t('settingsPage.viewTypePreferences.labels.tags', {}),\n },\n {\n key: 'users',\n label: t('settingsPage.viewTypePreferences.labels.users', {}),\n },\n {\n key: 'entities',\n label: t('settingsPage.viewTypePreferences.labels.entities', {}),\n },\n {\n key: 'tag-posts',\n label: t('settingsPage.viewTypePreferences.labels.tagPosts', {}),\n },\n {\n key: 'collection-posts',\n label: t('settingsPage.viewTypePreferences.labels.collectionPosts', {}),\n },\n {\n key: 'user-questions',\n label: t('settingsPage.viewTypePreferences.labels.userQuestions', {}),\n },\n {\n key: 'user-articles',\n label: t('settingsPage.viewTypePreferences.labels.userArticles', {}),\n },\n {\n key: 'user-links',\n label: t('settingsPage.viewTypePreferences.labels.userLinks', {}),\n },\n {\n key: 'user-collections',\n label: t('settingsPage.viewTypePreferences.labels.userCollections', {}),\n },\n {\n key: 'user-answers',\n label: t('settingsPage.viewTypePreferences.labels.userAnswers', {}),\n },\n ];\n\n const handleViewTypeChange = (key: string, value: ViewType | null) => {\n if (value === null) {\n updateSettings({\n viewType: { ...getSetting('viewType'), [key]: undefined as any },\n });\n } else {\n updateSettings({\n viewType: { ...getSetting('viewType'), [key]: value },\n });\n }\n };\n\n const getViewType = (key: string): ViewType | null => {\n return settings.viewType[key] || null;\n };\n\n if (!isLoaded) {\n return null;\n }\n\n return (\n <InfoCard title={t('settingsPage.title', {})} data-testid=\"settings-page\">\n <CardContent>\n <div className={classes.section}>\n <Typography variant=\"h6\" className={classes.sectionTitle}>\n {t('settingsPage.editorPreferences', {})}\n </Typography>\n\n <div className={classes.settingItem} data-testid=\"auto-save-setting\">\n <FormControlLabel\n control={\n <Switch\n checked={settings.autoSaveEnabled}\n onChange={e =>\n setSetting('autoSaveEnabled', e.target.checked)\n }\n color=\"primary\"\n data-testid=\"auto-save-switch\"\n />\n }\n label={t('settingsPage.autoSave.label', {})}\n />\n <Typography className={classes.description}>\n {t('settingsPage.autoSave.description', {})}\n </Typography>\n </div>\n\n {allowAnonymous && (\n <div\n className={classes.settingItem}\n data-testid=\"anonymous-posting-setting\"\n >\n <FormControlLabel\n control={\n <Switch\n checked={settings.anonymousPosting}\n onChange={e =>\n setSetting('anonymousPosting', e.target.checked)\n }\n color=\"primary\"\n data-testid=\"anonymous-posting-switch\"\n />\n }\n label={t('settingsPage.anonymousPosting.label', {})}\n />\n <Typography className={classes.description}>\n {t('settingsPage.anonymousPosting.description', {})}\n </Typography>\n </div>\n )}\n </div>\n\n <div className={classes.section}>\n <Typography variant=\"h6\" className={classes.sectionTitle}>\n {t('settingsPage.displayPreferences', {})}\n </Typography>\n\n {isAIEnabled && (\n <div\n className={classes.settingItem}\n data-testid=\"ai-answer-setting\"\n >\n <FormControlLabel\n control={\n <Switch\n checked={settings.aiAnswerExpanded}\n onChange={e =>\n setSetting('aiAnswerExpanded', e.target.checked)\n }\n color=\"primary\"\n data-testid=\"ai-answer-switch\"\n />\n }\n label={t('settingsPage.aiAnswerExpanded.label', {})}\n />\n <Typography className={classes.description}>\n {t('settingsPage.aiAnswerExpanded.description', {})}\n </Typography>\n </div>\n )}\n\n <div className={classes.settingItem} data-testid=\"pagination-setting\">\n <FormControlLabel\n control={\n <Switch\n checked={settings.usePagination}\n onChange={e => setSetting('usePagination', e.target.checked)}\n color=\"primary\"\n data-testid=\"pagination-switch\"\n />\n }\n label={t('settingsPage.usePagination.label', {})}\n />\n <Typography className={classes.description}>\n {t('settingsPage.usePagination.description', {})}\n </Typography>\n </div>\n\n <Box mt={3}>\n <Typography\n variant=\"subtitle1\"\n style={{ fontWeight: 500, marginBottom: 16 }}\n >\n {t('settingsPage.viewTypePreferences.title', {})}\n </Typography>\n <Typography\n className={classes.description}\n style={{ marginBottom: 16 }}\n >\n {t('settingsPage.viewTypePreferences.description', {})}\n </Typography>\n\n {viewTypes.map(({ key, label }) => {\n const currentView = getViewType(key);\n return (\n <div\n key={key}\n className={classes.viewTypeItem}\n data-testid={`view-type-${key}`}\n >\n <Typography className={classes.viewTypeLabel}>\n {label}\n </Typography>\n <ButtonGroup size=\"small\" color=\"primary\">\n <Button\n variant={\n currentView === 'grid' ? 'contained' : 'outlined'\n }\n onClick={() => handleViewTypeChange(key, 'grid')}\n data-testid={`view-type-${key}-grid`}\n data-selected={currentView === 'grid'}\n >\n {t('settingsPage.viewTypePreferences.grid', {})}\n </Button>\n <Button\n variant={\n currentView === 'list' ? 'contained' : 'outlined'\n }\n onClick={() => handleViewTypeChange(key, 'list')}\n data-testid={`view-type-${key}-list`}\n data-selected={currentView === 'list'}\n >\n {t('settingsPage.viewTypePreferences.list', {})}\n </Button>\n <Button\n variant={currentView === null ? 'contained' : 'outlined'}\n onClick={() => handleViewTypeChange(key, null)}\n data-testid={`view-type-${key}-default`}\n data-selected={currentView === null}\n >\n {t('settingsPage.viewTypePreferences.default', {})}\n </Button>\n </ButtonGroup>\n </div>\n );\n })}\n </Box>\n </div>\n\n <Box mt={4} pt={3} borderTop={`1px solid ${theme.palette.divider}`}>\n <Button\n variant=\"outlined\"\n color=\"secondary\"\n onClick={() => {\n resetSettings();\n }}\n data-testid=\"reset-all-settings-button\"\n >\n {t('settingsPage.resetAllSettings', {})}\n </Button>\n <Typography\n className={classes.description}\n style={{ marginTop: theme.spacing(1) }}\n >\n {t('settingsPage.resetAllSettingsDescription', {})}\n </Typography>\n </Box>\n </CardContent>\n </InfoCard>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SettingsPage.esm.js","sources":["../../../src/components/SettingsPage/SettingsPage.tsx"],"sourcesContent":["import {\n Box,\n Button,\n ButtonGroup,\n CardContent,\n FormControlLabel,\n makeStyles,\n Switch,\n Typography,\n useTheme,\n} from '@material-ui/core';\nimport { InfoCard } from '@backstage/core-components';\nimport {\n qetaTranslationRef,\n useAI,\n useUserSettings,\n ViewType,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { configApiRef, useApi } from '@backstage/core-plugin-api';\n\nconst useStyles = makeStyles(theme => ({\n content: {\n maxWidth: '800px',\n margin: '0 auto',\n },\n section: {\n marginBottom: theme.spacing(3),\n },\n sectionTitle: {\n marginBottom: theme.spacing(2),\n fontWeight: 600,\n },\n settingItem: {\n marginBottom: theme.spacing(2),\n },\n description: {\n color: theme.palette.text.secondary,\n fontSize: '0.875rem',\n marginTop: theme.spacing(0.5),\n },\n viewTypeItem: {\n marginBottom: theme.spacing(2),\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n viewTypeLabel: {\n minWidth: '200px',\n },\n}));\n\nexport const SettingsPage = () => {\n const classes = useStyles();\n const theme = useTheme();\n const {\n settings,\n setSetting,\n getSetting,\n resetSettings,\n isLoaded,\n updateSettings,\n } = useUserSettings();\n const { t } = useTranslationRef(qetaTranslationRef);\n const { isAIEnabled } = useAI();\n const configApi = useApi(configApiRef);\n const allowAnonymous = configApi.getOptionalBoolean('qeta.allowAnonymous');\n\n const viewTypes = [\n {\n key: 'posts-question',\n label: t('settingsPage.viewTypePreferences.labels.questions', {}),\n },\n {\n key: 'posts-article',\n label: t('settingsPage.viewTypePreferences.labels.articles', {}),\n },\n {\n key: 'posts-link',\n label: t('settingsPage.viewTypePreferences.labels.links', {}),\n },\n {\n key: 'favorites',\n label: t('settingsPage.viewTypePreferences.labels.favorites', {}),\n },\n {\n key: 'collections',\n label: t('settingsPage.viewTypePreferences.labels.collections', {}),\n },\n {\n key: 'tags',\n label: t('settingsPage.viewTypePreferences.labels.tags', {}),\n },\n {\n key: 'users',\n label: t('settingsPage.viewTypePreferences.labels.users', {}),\n },\n {\n key: 'entities',\n label: t('settingsPage.viewTypePreferences.labels.entities', {}),\n },\n {\n key: 'tag-posts',\n label: t('settingsPage.viewTypePreferences.labels.tagPosts', {}),\n },\n {\n key: 'collection-posts',\n label: t('settingsPage.viewTypePreferences.labels.collectionPosts', {}),\n },\n {\n key: 'user-questions',\n label: t('settingsPage.viewTypePreferences.labels.userQuestions', {}),\n },\n {\n key: 'user-articles',\n label: t('settingsPage.viewTypePreferences.labels.userArticles', {}),\n },\n {\n key: 'user-links',\n label: t('settingsPage.viewTypePreferences.labels.userLinks', {}),\n },\n {\n key: 'user-collections',\n label: t('settingsPage.viewTypePreferences.labels.userCollections', {}),\n },\n {\n key: 'user-answers',\n label: t('settingsPage.viewTypePreferences.labels.userAnswers', {}),\n },\n ];\n\n const handleViewTypeChange = (key: string, value: ViewType | null) => {\n if (value === null) {\n updateSettings({\n viewType: { ...getSetting('viewType'), [key]: undefined as any },\n });\n } else {\n updateSettings({\n viewType: { ...getSetting('viewType'), [key]: value },\n });\n }\n };\n\n const getViewType = (key: string): ViewType | null => {\n return settings.viewType[key] || null;\n };\n\n if (!isLoaded) {\n return null;\n }\n\n return (\n <InfoCard title={t('settingsPage.title', {})} data-testid=\"settings-page\">\n <CardContent>\n <div className={classes.section}>\n <Typography variant=\"h6\" className={classes.sectionTitle}>\n {t('settingsPage.editorPreferences', {})}\n </Typography>\n\n <div className={classes.settingItem} data-testid=\"auto-save-setting\">\n <FormControlLabel\n control={\n <Switch\n checked={settings.autoSaveEnabled}\n onChange={e =>\n setSetting('autoSaveEnabled', e.target.checked)\n }\n color=\"primary\"\n data-testid=\"auto-save-switch\"\n />\n }\n label={t('settingsPage.autoSave.label', {})}\n />\n <Typography className={classes.description}>\n {t('settingsPage.autoSave.description', {})}\n </Typography>\n </div>\n\n {allowAnonymous && (\n <div\n className={classes.settingItem}\n data-testid=\"anonymous-posting-setting\"\n >\n <FormControlLabel\n control={\n <Switch\n checked={settings.anonymousPosting}\n onChange={e =>\n setSetting('anonymousPosting', e.target.checked)\n }\n color=\"primary\"\n data-testid=\"anonymous-posting-switch\"\n />\n }\n label={t('settingsPage.anonymousPosting.label', {})}\n />\n <Typography className={classes.description}>\n {t('settingsPage.anonymousPosting.description', {})}\n </Typography>\n </div>\n )}\n </div>\n\n <div className={classes.section}>\n <Typography variant=\"h6\" className={classes.sectionTitle}>\n {t('settingsPage.displayPreferences', {})}\n </Typography>\n\n {isAIEnabled && (\n <div\n className={classes.settingItem}\n data-testid=\"ai-answer-setting\"\n >\n <FormControlLabel\n control={\n <Switch\n checked={settings.aiAnswerExpanded}\n onChange={e =>\n setSetting('aiAnswerExpanded', e.target.checked)\n }\n color=\"primary\"\n data-testid=\"ai-answer-switch\"\n />\n }\n label={t('settingsPage.aiAnswerExpanded.label', {})}\n />\n <Typography className={classes.description}>\n {t('settingsPage.aiAnswerExpanded.description', {})}\n </Typography>\n </div>\n )}\n\n <div className={classes.settingItem} data-testid=\"pagination-setting\">\n <FormControlLabel\n control={\n <Switch\n checked={settings.usePagination}\n onChange={e => setSetting('usePagination', e.target.checked)}\n color=\"primary\"\n data-testid=\"pagination-switch\"\n />\n }\n label={t('settingsPage.usePagination.label', {})}\n />\n <Typography className={classes.description}>\n {t('settingsPage.usePagination.description', {})}\n </Typography>\n </div>\n\n <Box mt={3}>\n <Typography\n variant=\"subtitle1\"\n style={{ fontWeight: 500, marginBottom: 16 }}\n >\n {t('settingsPage.viewTypePreferences.title', {})}\n </Typography>\n <Typography\n className={classes.description}\n style={{ marginBottom: 16 }}\n >\n {t('settingsPage.viewTypePreferences.description', {})}\n </Typography>\n\n {viewTypes.map(({ key, label }) => {\n const currentView = getViewType(key);\n return (\n <div\n key={key}\n className={classes.viewTypeItem}\n data-testid={`view-type-${key}`}\n >\n <Typography className={classes.viewTypeLabel}>\n {label}\n </Typography>\n <ButtonGroup size=\"small\" color=\"primary\">\n <Button\n variant={\n currentView === 'grid' ? 'contained' : 'outlined'\n }\n onClick={() => handleViewTypeChange(key, 'grid')}\n data-testid={`view-type-${key}-grid`}\n data-selected={currentView === 'grid'}\n >\n {t('settingsPage.viewTypePreferences.grid', {})}\n </Button>\n <Button\n variant={\n currentView === 'list' ? 'contained' : 'outlined'\n }\n onClick={() => handleViewTypeChange(key, 'list')}\n data-testid={`view-type-${key}-list`}\n data-selected={currentView === 'list'}\n >\n {t('settingsPage.viewTypePreferences.list', {})}\n </Button>\n <Button\n variant={currentView === null ? 'contained' : 'outlined'}\n onClick={() => handleViewTypeChange(key, null)}\n data-testid={`view-type-${key}-default`}\n data-selected={currentView === null}\n >\n {t('settingsPage.viewTypePreferences.default', {})}\n </Button>\n </ButtonGroup>\n </div>\n );\n })}\n </Box>\n </div>\n\n <Box mt={4} pt={3} borderTop={`1px solid ${theme.palette.divider}`}>\n <Button\n variant=\"outlined\"\n color=\"secondary\"\n onClick={() => {\n resetSettings();\n }}\n data-testid=\"reset-all-settings-button\"\n >\n {t('settingsPage.resetAllSettings', {})}\n </Button>\n <Typography\n className={classes.description}\n style={{ marginTop: theme.spacing(1) }}\n >\n {t('settingsPage.resetAllSettingsDescription', {})}\n </Typography>\n </Box>\n </CardContent>\n </InfoCard>\n );\n};\n"],"names":[],"mappings":";;;;;;;AAqBA,MAAM,SAAA,GAAY,WAAW,CAAA,KAAA,MAAU;AAAA,EACrC,OAAA,EAAS;AAAA,IACP,QAAA,EAAU,OAAA;AAAA,IACV,MAAA,EAAQ;AAAA,GACV;AAAA,EACA,OAAA,EAAS;AAAA,IACP,YAAA,EAAc,KAAA,CAAM,OAAA,CAAQ,CAAC;AAAA,GAC/B;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,YAAA,EAAc,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA;AAAA,IAC7B,UAAA,EAAY;AAAA,GACd;AAAA,EACA,WAAA,EAAa;AAAA,IACX,YAAA,EAAc,KAAA,CAAM,OAAA,CAAQ,CAAC;AAAA,GAC/B;AAAA,EACA,WAAA,EAAa;AAAA,IACX,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,SAAA;AAAA,IAC1B,QAAA,EAAU,UAAA;AAAA,IACV,SAAA,EAAW,KAAA,CAAM,OAAA,CAAQ,GAAG;AAAA,GAC9B;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,YAAA,EAAc,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA;AAAA,IAC7B,OAAA,EAAS,MAAA;AAAA,IACT,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB;AAAA,GAClB;AAAA,EACA,aAAA,EAAe;AAAA,IACb,QAAA,EAAU;AAAA;AAEd,CAAA,CAAE,CAAA;AAEK,MAAM,eAAe,MAAM;AAChC,EAAA,MAAM,UAAU,SAAA,EAAU;AAC1B,EAAA,MAAM,QAAQ,QAAA,EAAS;AACvB,EAAA,MAAM;AAAA,IACJ,QAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA,aAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,MACE,eAAA,EAAgB;AACpB,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,kBAAkB,CAAA;AAClD,EAAA,MAAM,EAAE,WAAA,EAAY,GAAI,KAAA,EAAM;AAC9B,EAAA,MAAM,SAAA,GAAY,OAAO,YAAY,CAAA;AACrC,EAAA,MAAM,cAAA,GAAiB,SAAA,CAAU,kBAAA,CAAmB,qBAAqB,CAAA;AAEzE,EAAA,MAAM,SAAA,GAAY;AAAA,IAChB;AAAA,MACE,GAAA,EAAK,gBAAA;AAAA,MACL,KAAA,EAAO,CAAA,CAAE,mDAAA,EAAqD,EAAE;AAAA,KAClE;AAAA,IACA;AAAA,MACE,GAAA,EAAK,eAAA;AAAA,MACL,KAAA,EAAO,CAAA,CAAE,kDAAA,EAAoD,EAAE;AAAA,KACjE;AAAA,IACA;AAAA,MACE,GAAA,EAAK,YAAA;AAAA,MACL,KAAA,EAAO,CAAA,CAAE,+CAAA,EAAiD,EAAE;AAAA,KAC9D;AAAA,IACA;AAAA,MACE,GAAA,EAAK,WAAA;AAAA,MACL,KAAA,EAAO,CAAA,CAAE,mDAAA,EAAqD,EAAE;AAAA,KAClE;AAAA,IACA;AAAA,MACE,GAAA,EAAK,aAAA;AAAA,MACL,KAAA,EAAO,CAAA,CAAE,qDAAA,EAAuD,EAAE;AAAA,KACpE;AAAA,IACA;AAAA,MACE,GAAA,EAAK,MAAA;AAAA,MACL,KAAA,EAAO,CAAA,CAAE,8CAAA,EAAgD,EAAE;AAAA,KAC7D;AAAA,IACA;AAAA,MACE,GAAA,EAAK,OAAA;AAAA,MACL,KAAA,EAAO,CAAA,CAAE,+CAAA,EAAiD,EAAE;AAAA,KAC9D;AAAA,IACA;AAAA,MACE,GAAA,EAAK,UAAA;AAAA,MACL,KAAA,EAAO,CAAA,CAAE,kDAAA,EAAoD,EAAE;AAAA,KACjE;AAAA,IACA;AAAA,MACE,GAAA,EAAK,WAAA;AAAA,MACL,KAAA,EAAO,CAAA,CAAE,kDAAA,EAAoD,EAAE;AAAA,KACjE;AAAA,IACA;AAAA,MACE,GAAA,EAAK,kBAAA;AAAA,MACL,KAAA,EAAO,CAAA,CAAE,yDAAA,EAA2D,EAAE;AAAA,KACxE;AAAA,IACA;AAAA,MACE,GAAA,EAAK,gBAAA;AAAA,MACL,KAAA,EAAO,CAAA,CAAE,uDAAA,EAAyD,EAAE;AAAA,KACtE;AAAA,IACA;AAAA,MACE,GAAA,EAAK,eAAA;AAAA,MACL,KAAA,EAAO,CAAA,CAAE,sDAAA,EAAwD,EAAE;AAAA,KACrE;AAAA,IACA;AAAA,MACE,GAAA,EAAK,YAAA;AAAA,MACL,KAAA,EAAO,CAAA,CAAE,mDAAA,EAAqD,EAAE;AAAA,KAClE;AAAA,IACA;AAAA,MACE,GAAA,EAAK,kBAAA;AAAA,MACL,KAAA,EAAO,CAAA,CAAE,yDAAA,EAA2D,EAAE;AAAA,KACxE;AAAA,IACA;AAAA,MACE,GAAA,EAAK,cAAA;AAAA,MACL,KAAA,EAAO,CAAA,CAAE,qDAAA,EAAuD,EAAE;AAAA;AACpE,GACF;AAEA,EAAA,MAAM,oBAAA,GAAuB,CAAC,GAAA,EAAa,KAAA,KAA2B;AACpE,IAAA,IAAI,UAAU,IAAA,EAAM;AAClB,MAAA,cAAA,CAAe;AAAA,QACb,QAAA,EAAU,EAAE,GAAG,UAAA,CAAW,UAAU,CAAA,EAAG,CAAC,GAAG,GAAG,MAAA;AAAiB,OAChE,CAAA;AAAA,IACH,CAAA,MAAO;AACL,MAAA,cAAA,CAAe;AAAA,QACb,QAAA,EAAU,EAAE,GAAG,UAAA,CAAW,UAAU,CAAA,EAAG,CAAC,GAAG,GAAG,KAAA;AAAM,OACrD,CAAA;AAAA,IACH;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,WAAA,GAAc,CAAC,GAAA,KAAiC;AACpD,IAAA,OAAO,QAAA,CAAS,QAAA,CAAS,GAAG,CAAA,IAAK,IAAA;AAAA,EACnC,CAAA;AAEA,EAAA,IAAI,CAAC,QAAA,EAAU;AACb,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBACE,GAAA,CAAC,QAAA,EAAA,EAAS,KAAA,EAAO,CAAA,CAAE,oBAAA,EAAsB,EAAE,CAAA,EAAG,aAAA,EAAY,eAAA,EACxD,QAAA,kBAAA,IAAA,CAAC,WAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,OAAA,CAAQ,OAAA,EACtB,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,UAAA,EAAA,EAAW,OAAA,EAAQ,IAAA,EAAK,SAAA,EAAW,OAAA,CAAQ,cACzC,QAAA,EAAA,CAAA,CAAE,gCAAA,EAAkC,EAAE,CAAA,EACzC,CAAA;AAAA,2BAEC,KAAA,EAAA,EAAI,SAAA,EAAW,OAAA,CAAQ,WAAA,EAAa,eAAY,mBAAA,EAC/C,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAC,gBAAA;AAAA,UAAA;AAAA,YACC,OAAA,kBACE,GAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,SAAS,QAAA,CAAS,eAAA;AAAA,gBAClB,UAAU,CAAA,CAAA,KACR,UAAA,CAAW,iBAAA,EAAmB,CAAA,CAAE,OAAO,OAAO,CAAA;AAAA,gBAEhD,KAAA,EAAM,SAAA;AAAA,gBACN,aAAA,EAAY;AAAA;AAAA,aACd;AAAA,YAEF,KAAA,EAAO,CAAA,CAAE,6BAAA,EAA+B,EAAE;AAAA;AAAA,SAC5C;AAAA,wBACA,GAAA,CAAC,cAAW,SAAA,EAAW,OAAA,CAAQ,aAC5B,QAAA,EAAA,CAAA,CAAE,mCAAA,EAAqC,EAAE,CAAA,EAC5C;AAAA,OAAA,EACF,CAAA;AAAA,MAEC,cAAA,oBACC,IAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,WAAW,OAAA,CAAQ,WAAA;AAAA,UACnB,aAAA,EAAY,2BAAA;AAAA,UAEZ,QAAA,EAAA;AAAA,4BAAA,GAAA;AAAA,cAAC,gBAAA;AAAA,cAAA;AAAA,gBACC,OAAA,kBACE,GAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,SAAS,QAAA,CAAS,gBAAA;AAAA,oBAClB,UAAU,CAAA,CAAA,KACR,UAAA,CAAW,kBAAA,EAAoB,CAAA,CAAE,OAAO,OAAO,CAAA;AAAA,oBAEjD,KAAA,EAAM,SAAA;AAAA,oBACN,aAAA,EAAY;AAAA;AAAA,iBACd;AAAA,gBAEF,KAAA,EAAO,CAAA,CAAE,qCAAA,EAAuC,EAAE;AAAA;AAAA,aACpD;AAAA,4BACA,GAAA,CAAC,cAAW,SAAA,EAAW,OAAA,CAAQ,aAC5B,QAAA,EAAA,CAAA,CAAE,2CAAA,EAA6C,EAAE,CAAA,EACpD;AAAA;AAAA;AAAA;AACF,KAAA,EAEJ,CAAA;AAAA,oBAEA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,OAAA,CAAQ,OAAA,EACtB,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,UAAA,EAAA,EAAW,OAAA,EAAQ,IAAA,EAAK,SAAA,EAAW,OAAA,CAAQ,cACzC,QAAA,EAAA,CAAA,CAAE,iCAAA,EAAmC,EAAE,CAAA,EAC1C,CAAA;AAAA,MAEC,WAAA,oBACC,IAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,WAAW,OAAA,CAAQ,WAAA;AAAA,UACnB,aAAA,EAAY,mBAAA;AAAA,UAEZ,QAAA,EAAA;AAAA,4BAAA,GAAA;AAAA,cAAC,gBAAA;AAAA,cAAA;AAAA,gBACC,OAAA,kBACE,GAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,SAAS,QAAA,CAAS,gBAAA;AAAA,oBAClB,UAAU,CAAA,CAAA,KACR,UAAA,CAAW,kBAAA,EAAoB,CAAA,CAAE,OAAO,OAAO,CAAA;AAAA,oBAEjD,KAAA,EAAM,SAAA;AAAA,oBACN,aAAA,EAAY;AAAA;AAAA,iBACd;AAAA,gBAEF,KAAA,EAAO,CAAA,CAAE,qCAAA,EAAuC,EAAE;AAAA;AAAA,aACpD;AAAA,4BACA,GAAA,CAAC,cAAW,SAAA,EAAW,OAAA,CAAQ,aAC5B,QAAA,EAAA,CAAA,CAAE,2CAAA,EAA6C,EAAE,CAAA,EACpD;AAAA;AAAA;AAAA,OACF;AAAA,2BAGD,KAAA,EAAA,EAAI,SAAA,EAAW,OAAA,CAAQ,WAAA,EAAa,eAAY,oBAAA,EAC/C,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAC,gBAAA;AAAA,UAAA;AAAA,YACC,OAAA,kBACE,GAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,SAAS,QAAA,CAAS,aAAA;AAAA,gBAClB,UAAU,CAAA,CAAA,KAAK,UAAA,CAAW,eAAA,EAAiB,CAAA,CAAE,OAAO,OAAO,CAAA;AAAA,gBAC3D,KAAA,EAAM,SAAA;AAAA,gBACN,aAAA,EAAY;AAAA;AAAA,aACd;AAAA,YAEF,KAAA,EAAO,CAAA,CAAE,kCAAA,EAAoC,EAAE;AAAA;AAAA,SACjD;AAAA,wBACA,GAAA,CAAC,cAAW,SAAA,EAAW,OAAA,CAAQ,aAC5B,QAAA,EAAA,CAAA,CAAE,wCAAA,EAA0C,EAAE,CAAA,EACjD;AAAA,OAAA,EACF,CAAA;AAAA,sBAEA,IAAA,CAAC,GAAA,EAAA,EAAI,EAAA,EAAI,CAAA,EACP,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAQ,WAAA;AAAA,YACR,KAAA,EAAO,EAAE,UAAA,EAAY,GAAA,EAAK,cAAc,EAAA,EAAG;AAAA,YAE1C,QAAA,EAAA,CAAA,CAAE,wCAAA,EAA0C,EAAE;AAAA;AAAA,SACjD;AAAA,wBACA,GAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACC,WAAW,OAAA,CAAQ,WAAA;AAAA,YACnB,KAAA,EAAO,EAAE,YAAA,EAAc,EAAA,EAAG;AAAA,YAEzB,QAAA,EAAA,CAAA,CAAE,8CAAA,EAAgD,EAAE;AAAA;AAAA,SACvD;AAAA,QAEC,UAAU,GAAA,CAAI,CAAC,EAAE,GAAA,EAAK,OAAM,KAAM;AACjC,UAAA,MAAM,WAAA,GAAc,YAAY,GAAG,CAAA;AACnC,UAAA,uBACE,IAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cAEC,WAAW,OAAA,CAAQ,YAAA;AAAA,cACnB,aAAA,EAAa,aAAa,GAAG,CAAA,CAAA;AAAA,cAE7B,QAAA,EAAA;AAAA,gCAAA,GAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAW,OAAA,CAAQ,aAAA,EAC5B,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,gCACA,IAAA,CAAC,WAAA,EAAA,EAAY,IAAA,EAAK,OAAA,EAAQ,OAAM,SAAA,EAC9B,QAAA,EAAA;AAAA,kCAAA,GAAA;AAAA,oBAAC,MAAA;AAAA,oBAAA;AAAA,sBACC,OAAA,EACE,WAAA,KAAgB,MAAA,GAAS,WAAA,GAAc,UAAA;AAAA,sBAEzC,OAAA,EAAS,MAAM,oBAAA,CAAqB,GAAA,EAAK,MAAM,CAAA;AAAA,sBAC/C,aAAA,EAAa,aAAa,GAAG,CAAA,KAAA,CAAA;AAAA,sBAC7B,iBAAe,WAAA,KAAgB,MAAA;AAAA,sBAE9B,QAAA,EAAA,CAAA,CAAE,uCAAA,EAAyC,EAAE;AAAA;AAAA,mBAChD;AAAA,kCACA,GAAA;AAAA,oBAAC,MAAA;AAAA,oBAAA;AAAA,sBACC,OAAA,EACE,WAAA,KAAgB,MAAA,GAAS,WAAA,GAAc,UAAA;AAAA,sBAEzC,OAAA,EAAS,MAAM,oBAAA,CAAqB,GAAA,EAAK,MAAM,CAAA;AAAA,sBAC/C,aAAA,EAAa,aAAa,GAAG,CAAA,KAAA,CAAA;AAAA,sBAC7B,iBAAe,WAAA,KAAgB,MAAA;AAAA,sBAE9B,QAAA,EAAA,CAAA,CAAE,uCAAA,EAAyC,EAAE;AAAA;AAAA,mBAChD;AAAA,kCACA,GAAA;AAAA,oBAAC,MAAA;AAAA,oBAAA;AAAA,sBACC,OAAA,EAAS,WAAA,KAAgB,IAAA,GAAO,WAAA,GAAc,UAAA;AAAA,sBAC9C,OAAA,EAAS,MAAM,oBAAA,CAAqB,GAAA,EAAK,IAAI,CAAA;AAAA,sBAC7C,aAAA,EAAa,aAAa,GAAG,CAAA,QAAA,CAAA;AAAA,sBAC7B,iBAAe,WAAA,KAAgB,IAAA;AAAA,sBAE9B,QAAA,EAAA,CAAA,CAAE,0CAAA,EAA4C,EAAE;AAAA;AAAA;AACnD,iBAAA,EACF;AAAA;AAAA,aAAA;AAAA,YApCK;AAAA,WAqCP;AAAA,QAEJ,CAAC;AAAA,OAAA,EACH;AAAA,KAAA,EACF,CAAA;AAAA,oBAEA,IAAA,CAAC,GAAA,EAAA,EAAI,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,CAAA,EAAG,SAAA,EAAW,CAAA,UAAA,EAAa,KAAA,CAAM,OAAA,CAAQ,OAAO,CAAA,CAAA,EAC9D,QAAA,EAAA;AAAA,sBAAA,GAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAQ,UAAA;AAAA,UACR,KAAA,EAAM,WAAA;AAAA,UACN,SAAS,MAAM;AACb,YAAA,aAAA,EAAc;AAAA,UAChB,CAAA;AAAA,UACA,aAAA,EAAY,2BAAA;AAAA,UAEX,QAAA,EAAA,CAAA,CAAE,+BAAA,EAAiC,EAAE;AAAA;AAAA,OACxC;AAAA,sBACA,GAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UACC,WAAW,OAAA,CAAQ,WAAA;AAAA,UACnB,OAAO,EAAE,SAAA,EAAW,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA,EAAE;AAAA,UAEpC,QAAA,EAAA,CAAA,CAAE,0CAAA,EAA4C,EAAE;AAAA;AAAA;AACnD,KAAA,EACF;AAAA,GAAA,EACF,CAAA,EACF,CAAA;AAEJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GlobalStatsContent.esm.js","sources":["../../../src/components/Statistics/GlobalStatsContent.tsx"],"sourcesContent":["import { StatsChart, useQetaApi } from '@drodil/backstage-plugin-qeta-react';\nimport {\n Card,\n CardContent,\n CardHeader,\n CircularProgress,\n Grid,\n} from '@material-ui/core';\n\nexport const GlobalStatsContent = () => {\n const {\n value: response,\n loading,\n error,\n } = useQetaApi(api => api.getGlobalStats(), []);\n if (error) {\n return null;\n }\n return (\n <Grid container spacing={3}>\n <Grid item xs={12}>\n <Card>\n <CardHeader title=\"Activity Trends\" />\n <CardContent>\n {!loading && response && (\n <StatsChart\n data={response.statistics}\n summary={response.summary as unknown as Record<string, number>}\n />\n )}\n {loading && <CircularProgress />}\n </CardContent>\n </Card>\n </Grid>\n </Grid>\n );\n};\n"],"names":[],"mappings":";;;;AASO,MAAM,qBAAqB,MAAM;AACtC,
|
|
1
|
+
{"version":3,"file":"GlobalStatsContent.esm.js","sources":["../../../src/components/Statistics/GlobalStatsContent.tsx"],"sourcesContent":["import { StatsChart, useQetaApi } from '@drodil/backstage-plugin-qeta-react';\nimport {\n Card,\n CardContent,\n CardHeader,\n CircularProgress,\n Grid,\n} from '@material-ui/core';\n\nexport const GlobalStatsContent = () => {\n const {\n value: response,\n loading,\n error,\n } = useQetaApi(api => api.getGlobalStats(), []);\n if (error) {\n return null;\n }\n return (\n <Grid container spacing={3}>\n <Grid item xs={12}>\n <Card>\n <CardHeader title=\"Activity Trends\" />\n <CardContent>\n {!loading && response && (\n <StatsChart\n data={response.statistics}\n summary={response.summary as unknown as Record<string, number>}\n />\n )}\n {loading && <CircularProgress />}\n </CardContent>\n </Card>\n </Grid>\n </Grid>\n );\n};\n"],"names":[],"mappings":";;;;AASO,MAAM,qBAAqB,MAAM;AACtC,EAAA,MAAM;AAAA,IACJ,KAAA,EAAO,QAAA;AAAA,IACP,OAAA;AAAA,IACA;AAAA,MACE,UAAA,CAAW,CAAA,GAAA,KAAO,IAAI,cAAA,EAAe,EAAG,EAAE,CAAA;AAC9C,EAAA,IAAI,KAAA,EAAO;AACT,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,uBACE,GAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAS,IAAA,EAAC,OAAA,EAAS,CAAA,EACvB,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAI,IAAA,EAAC,EAAA,EAAI,EAAA,EACb,+BAAC,IAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,UAAA,EAAA,EAAW,OAAM,iBAAA,EAAkB,CAAA;AAAA,yBACnC,WAAA,EAAA,EACE,QAAA,EAAA;AAAA,MAAA,CAAC,WAAW,QAAA,oBACX,GAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UACC,MAAM,QAAA,CAAS,UAAA;AAAA,UACf,SAAS,QAAA,CAAS;AAAA;AAAA,OACpB;AAAA,MAED,OAAA,wBAAY,gBAAA,EAAA,EAAiB;AAAA,KAAA,EAChC;AAAA,GAAA,EACF,GACF,CAAA,EACF,CAAA;AAEJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatisticsPage.esm.js","sources":["../../../src/components/Statistics/StatisticsPage.tsx"],"sourcesContent":["import {\n AskQuestionButton,\n ContentHeader,\n CreateLinkButton,\n TopRankingUsers,\n WriteArticleButton,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { GlobalStatsContent } from './GlobalStatsContent';\nimport { Box, Tab } from '@material-ui/core';\nimport EmojiEventsOutlined from '@material-ui/icons/EmojiEventsOutlined';\nimport { TabContext, TabList, TabPanel } from '@material-ui/lab';\nimport { useState } from 'react';\n\nexport const StatisticsPage = () => {\n const [tab, setTab] = useState('global');\n\n const handleChange = (_event: React.ChangeEvent<{}>, newValue: string) => {\n setTab(newValue);\n };\n\n return (\n <>\n <ContentHeader\n title=\"Statistics\"\n titleIcon={<EmojiEventsOutlined fontSize=\"large\" />}\n >\n <AskQuestionButton />\n <WriteArticleButton />\n <CreateLinkButton />\n </ContentHeader>\n <TabContext value={tab}>\n <Box sx={{ borderBottom: 1, borderColor: 'divider' }}>\n <TabList onChange={handleChange} style={{ padding: 0 }}>\n <Tab label=\"Global Stats\" value=\"global\" />\n <Tab label=\"Leaderboard\" value=\"leaderboard\" />\n </TabList>\n </Box>\n <TabPanel value=\"global\" style={{ padding: '24px 0' }}>\n <GlobalStatsContent />\n </TabPanel>\n <TabPanel value=\"leaderboard\" style={{ padding: '24px 0' }}>\n <TopRankingUsers limit={10} />\n </TabPanel>\n </TabContext>\n </>\n );\n};\n"],"names":[],"mappings":";;;;;;;;AAaO,MAAM,iBAAiB,MAAM;AAClC,EAAA,MAAM,CAAC,GAAA,EAAK,MAAM,CAAA,GAAI,SAAS,QAAQ,CAAA;AAEvC,
|
|
1
|
+
{"version":3,"file":"StatisticsPage.esm.js","sources":["../../../src/components/Statistics/StatisticsPage.tsx"],"sourcesContent":["import {\n AskQuestionButton,\n ContentHeader,\n CreateLinkButton,\n TopRankingUsers,\n WriteArticleButton,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { GlobalStatsContent } from './GlobalStatsContent';\nimport { Box, Tab } from '@material-ui/core';\nimport EmojiEventsOutlined from '@material-ui/icons/EmojiEventsOutlined';\nimport { TabContext, TabList, TabPanel } from '@material-ui/lab';\nimport { useState } from 'react';\n\nexport const StatisticsPage = () => {\n const [tab, setTab] = useState('global');\n\n const handleChange = (_event: React.ChangeEvent<{}>, newValue: string) => {\n setTab(newValue);\n };\n\n return (\n <>\n <ContentHeader\n title=\"Statistics\"\n titleIcon={<EmojiEventsOutlined fontSize=\"large\" />}\n >\n <AskQuestionButton />\n <WriteArticleButton />\n <CreateLinkButton />\n </ContentHeader>\n <TabContext value={tab}>\n <Box sx={{ borderBottom: 1, borderColor: 'divider' }}>\n <TabList onChange={handleChange} style={{ padding: 0 }}>\n <Tab label=\"Global Stats\" value=\"global\" />\n <Tab label=\"Leaderboard\" value=\"leaderboard\" />\n </TabList>\n </Box>\n <TabPanel value=\"global\" style={{ padding: '24px 0' }}>\n <GlobalStatsContent />\n </TabPanel>\n <TabPanel value=\"leaderboard\" style={{ padding: '24px 0' }}>\n <TopRankingUsers limit={10} />\n </TabPanel>\n </TabContext>\n </>\n );\n};\n"],"names":[],"mappings":";;;;;;;;AAaO,MAAM,iBAAiB,MAAM;AAClC,EAAA,MAAM,CAAC,GAAA,EAAK,MAAM,CAAA,GAAI,SAAS,QAAQ,CAAA;AAEvC,EAAA,MAAM,YAAA,GAAe,CAAC,MAAA,EAA+B,QAAA,KAAqB;AACxE,IAAA,MAAA,CAAO,QAAQ,CAAA;AAAA,EACjB,CAAA;AAEA,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,IAAA;AAAA,MAAC,aAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAM,YAAA;AAAA,QACN,SAAA,kBAAW,GAAA,CAAC,mBAAA,EAAA,EAAoB,QAAA,EAAS,OAAA,EAAQ,CAAA;AAAA,QAEjD,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,IAAA,CAAC,UAAA,EAAA,EAAW,KAAA,EAAO,GAAA,EACjB,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,OAAI,EAAA,EAAI,EAAE,YAAA,EAAc,CAAA,EAAG,aAAa,SAAA,EAAU,EACjD,QAAA,kBAAA,IAAA,CAAC,OAAA,EAAA,EAAQ,UAAU,YAAA,EAAc,KAAA,EAAO,EAAE,OAAA,EAAS,GAAE,EACnD,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,GAAA,EAAA,EAAI,KAAA,EAAM,cAAA,EAAe,KAAA,EAAM,QAAA,EAAS,CAAA;AAAA,wBACzC,GAAA,CAAC,GAAA,EAAA,EAAI,KAAA,EAAM,aAAA,EAAc,OAAM,aAAA,EAAc;AAAA,OAAA,EAC/C,CAAA,EACF,CAAA;AAAA,sBACA,GAAA,CAAC,QAAA,EAAA,EAAS,KAAA,EAAM,QAAA,EAAS,KAAA,EAAO,EAAE,OAAA,EAAS,QAAA,EAAS,EAClD,QAAA,kBAAA,GAAA,CAAC,kBAAA,EAAA,EAAmB,CAAA,EACtB,CAAA;AAAA,sBACA,GAAA,CAAC,QAAA,EAAA,EAAS,KAAA,EAAM,aAAA,EAAc,KAAA,EAAO,EAAE,OAAA,EAAS,QAAA,EAAS,EACvD,QAAA,kBAAA,GAAA,CAAC,eAAA,EAAA,EAAgB,KAAA,EAAO,IAAI,CAAA,EAC9B;AAAA,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TagPage.esm.js","sources":["../../../src/components/TagPage/TagPage.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport { useParams } from 'react-router-dom';\nimport {\n AskQuestionButton,\n ContentHeader,\n CreateLinkButton,\n DeleteModal,\n EditTagModal,\n PostsContainer,\n qetaApiRef,\n qetaTranslationRef,\n TagFollowButton,\n TagsContainer,\n useIsModerator,\n WriteArticleButton,\n} from '@drodil/backstage-plugin-qeta-react';\nimport LocalOfferOutlined from '@material-ui/icons/LocalOfferOutlined';\nimport QuestionAnswerIcon from '@material-ui/icons/QuestionAnswer';\nimport PeopleIcon from '@material-ui/icons/People';\nimport EditIcon from '@material-ui/icons/Edit';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport { alertApiRef, useApi } from '@backstage/core-plugin-api';\nimport { TagResponse } from '@drodil/backstage-plugin-qeta-common';\nimport { EntityRefLink } from '@backstage/plugin-catalog-react';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { ContentHeaderCard } from '@drodil/backstage-plugin-qeta-react';\nimport { Button, Typography } from '@material-ui/core';\n\nexport const TagPage = () => {\n const { tag } = useParams();\n const { t } = useTranslationRef(qetaTranslationRef);\n const [resp, setResp] = useState<undefined | TagResponse>();\n const { isModerator } = useIsModerator();\n\n const [editModalOpen, setEditModalOpen] = useState(false);\n const [deleteModalOpen, setDeleteModalOpen] = useState(false);\n\n const qetaApi = useApi(qetaApiRef);\n const alertApi = useApi(alertApiRef);\n\n const fetchTag = () => {\n if (!tag) {\n setResp(undefined);\n return;\n }\n\n qetaApi\n .getTag(tag)\n .then(res => {\n if (res) {\n setResp(res);\n }\n })\n .catch(e => {\n alertApi.post({\n message: e.message,\n severity: 'error',\n display: 'transient',\n });\n });\n };\n\n useEffect(() => {\n fetchTag();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [qetaApi, tag, alertApi]);\n\n const handleEditModalClose = () => {\n setEditModalOpen(false);\n fetchTag();\n };\n\n const handleDeleteModalClose = () => {\n setDeleteModalOpen(false);\n };\n\n return (\n <>\n {tag ? (\n <ContentHeader\n title={tag}\n titleIcon={<LocalOfferOutlined fontSize=\"large\" />}\n >\n <TagFollowButton tag={tag} />\n <AskQuestionButton tags={[tag]} />\n <WriteArticleButton tags={[tag]} />\n <CreateLinkButton tags={[tag]} />\n </ContentHeader>\n ) : (\n <ContentHeader\n title={t('tagPage.defaultTitle', {})}\n titleIcon={<LocalOfferOutlined fontSize=\"large\" />}\n >\n <AskQuestionButton />\n <WriteArticleButton />\n <CreateLinkButton />\n </ContentHeader>\n )}\n {resp && (\n <ContentHeaderCard\n description={resp.description}\n imageIcon={<LocalOfferOutlined style={{ fontSize: 80 }} />}\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 {resp.experts && resp.experts.length > 0 && (\n <Typography variant=\"caption\">\n {t('common.experts')}\n {': '}\n {resp.experts.map((e, i) => (\n <>\n <EntityRefLink key={e} entityRef={e} />\n {i === resp.experts!.length - 1 ? '' : ','}\n </>\n ))}\n </Typography>\n )}\n {(resp.canEdit || resp.canDelete) && (\n <div style={{ marginTop: '1em' }}>\n {resp.canEdit && (\n <Button\n variant=\"outlined\"\n size=\"small\"\n startIcon={<EditIcon />}\n onClick={() => setEditModalOpen(true)}\n style={{ marginRight: '0.5em' }}\n >\n {t('tagButton.edit')}\n </Button>\n )}\n {resp.canDelete && (\n <Button\n variant=\"outlined\"\n size=\"small\"\n color=\"secondary\"\n startIcon={<DeleteIcon />}\n onClick={() => setDeleteModalOpen(true)}\n >\n {t('tagButton.delete')}\n </Button>\n )}\n </div>\n )}\n </ContentHeaderCard>\n )}\n {tag && (\n <PostsContainer\n tags={[tag ?? '']}\n filterPanelProps={{ showTagFilter: false }}\n showTypeLabel\n defaultView=\"list\"\n prefix=\"tag-posts\"\n />\n )}\n {!tag && <TagsContainer />}\n {resp && (\n <>\n <EditTagModal\n tag={resp}\n open={editModalOpen}\n onClose={handleEditModalClose}\n isModerator={isModerator}\n />\n <DeleteModal\n open={deleteModalOpen}\n onClose={handleDeleteModalClose}\n entity={resp}\n />\n </>\n )}\n </>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TagPage.esm.js","sources":["../../../src/components/TagPage/TagPage.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport { useParams } from 'react-router-dom';\nimport {\n AskQuestionButton,\n ContentHeader,\n CreateLinkButton,\n DeleteModal,\n EditTagModal,\n PostsContainer,\n qetaApiRef,\n qetaTranslationRef,\n TagFollowButton,\n TagsContainer,\n useIsModerator,\n WriteArticleButton,\n} from '@drodil/backstage-plugin-qeta-react';\nimport LocalOfferOutlined from '@material-ui/icons/LocalOfferOutlined';\nimport QuestionAnswerIcon from '@material-ui/icons/QuestionAnswer';\nimport PeopleIcon from '@material-ui/icons/People';\nimport EditIcon from '@material-ui/icons/Edit';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport { alertApiRef, useApi } from '@backstage/core-plugin-api';\nimport { TagResponse } from '@drodil/backstage-plugin-qeta-common';\nimport { EntityRefLink } from '@backstage/plugin-catalog-react';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { ContentHeaderCard } from '@drodil/backstage-plugin-qeta-react';\nimport { Button, Typography } from '@material-ui/core';\n\nexport const TagPage = () => {\n const { tag } = useParams();\n const { t } = useTranslationRef(qetaTranslationRef);\n const [resp, setResp] = useState<undefined | TagResponse>();\n const { isModerator } = useIsModerator();\n\n const [editModalOpen, setEditModalOpen] = useState(false);\n const [deleteModalOpen, setDeleteModalOpen] = useState(false);\n\n const qetaApi = useApi(qetaApiRef);\n const alertApi = useApi(alertApiRef);\n\n const fetchTag = () => {\n if (!tag) {\n setResp(undefined);\n return;\n }\n\n qetaApi\n .getTag(tag)\n .then(res => {\n if (res) {\n setResp(res);\n }\n })\n .catch(e => {\n alertApi.post({\n message: e.message,\n severity: 'error',\n display: 'transient',\n });\n });\n };\n\n useEffect(() => {\n fetchTag();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [qetaApi, tag, alertApi]);\n\n const handleEditModalClose = () => {\n setEditModalOpen(false);\n fetchTag();\n };\n\n const handleDeleteModalClose = () => {\n setDeleteModalOpen(false);\n };\n\n return (\n <>\n {tag ? (\n <ContentHeader\n title={tag}\n titleIcon={<LocalOfferOutlined fontSize=\"large\" />}\n >\n <TagFollowButton tag={tag} />\n <AskQuestionButton tags={[tag]} />\n <WriteArticleButton tags={[tag]} />\n <CreateLinkButton tags={[tag]} />\n </ContentHeader>\n ) : (\n <ContentHeader\n title={t('tagPage.defaultTitle', {})}\n titleIcon={<LocalOfferOutlined fontSize=\"large\" />}\n >\n <AskQuestionButton />\n <WriteArticleButton />\n <CreateLinkButton />\n </ContentHeader>\n )}\n {resp && (\n <ContentHeaderCard\n description={resp.description}\n imageIcon={<LocalOfferOutlined style={{ fontSize: 80 }} />}\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 {resp.experts && resp.experts.length > 0 && (\n <Typography variant=\"caption\">\n {t('common.experts')}\n {': '}\n {resp.experts.map((e, i) => (\n <>\n <EntityRefLink key={e} entityRef={e} />\n {i === resp.experts!.length - 1 ? '' : ','}\n </>\n ))}\n </Typography>\n )}\n {(resp.canEdit || resp.canDelete) && (\n <div style={{ marginTop: '1em' }}>\n {resp.canEdit && (\n <Button\n variant=\"outlined\"\n size=\"small\"\n startIcon={<EditIcon />}\n onClick={() => setEditModalOpen(true)}\n style={{ marginRight: '0.5em' }}\n >\n {t('tagButton.edit')}\n </Button>\n )}\n {resp.canDelete && (\n <Button\n variant=\"outlined\"\n size=\"small\"\n color=\"secondary\"\n startIcon={<DeleteIcon />}\n onClick={() => setDeleteModalOpen(true)}\n >\n {t('tagButton.delete')}\n </Button>\n )}\n </div>\n )}\n </ContentHeaderCard>\n )}\n {tag && (\n <PostsContainer\n tags={[tag ?? '']}\n filterPanelProps={{ showTagFilter: false }}\n showTypeLabel\n defaultView=\"list\"\n prefix=\"tag-posts\"\n />\n )}\n {!tag && <TagsContainer />}\n {resp && (\n <>\n <EditTagModal\n tag={resp}\n open={editModalOpen}\n onClose={handleEditModalClose}\n isModerator={isModerator}\n />\n <DeleteModal\n open={deleteModalOpen}\n onClose={handleDeleteModalClose}\n entity={resp}\n />\n </>\n )}\n </>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;AA4BO,MAAM,UAAU,MAAM;AAC3B,EAAA,MAAM,EAAE,GAAA,EAAI,GAAI,SAAA,EAAU;AAC1B,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,kBAAkB,CAAA;AAClD,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,QAAA,EAAkC;AAC1D,EAAA,MAAM,EAAE,WAAA,EAAY,GAAI,cAAA,EAAe;AAEvC,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAI,SAAS,KAAK,CAAA;AACxD,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAI,SAAS,KAAK,CAAA;AAE5D,EAAA,MAAM,OAAA,GAAU,OAAO,UAAU,CAAA;AACjC,EAAA,MAAM,QAAA,GAAW,OAAO,WAAW,CAAA;AAEnC,EAAA,MAAM,WAAW,MAAM;AACrB,IAAA,IAAI,CAAC,GAAA,EAAK;AACR,MAAA,OAAA,CAAQ,MAAS,CAAA;AACjB,MAAA;AAAA,IACF;AAEA,IAAA,OAAA,CACG,MAAA,CAAO,GAAG,CAAA,CACV,IAAA,CAAK,CAAA,GAAA,KAAO;AACX,MAAA,IAAI,GAAA,EAAK;AACP,QAAA,OAAA,CAAQ,GAAG,CAAA;AAAA,MACb;AAAA,IACF,CAAC,CAAA,CACA,KAAA,CAAM,CAAA,CAAA,KAAK;AACV,MAAA,QAAA,CAAS,IAAA,CAAK;AAAA,QACZ,SAAS,CAAA,CAAE,OAAA;AAAA,QACX,QAAA,EAAU,OAAA;AAAA,QACV,OAAA,EAAS;AAAA,OACV,CAAA;AAAA,IACH,CAAC,CAAA;AAAA,EACL,CAAA;AAEA,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,QAAA,EAAS;AAAA,EAEX,CAAA,EAAG,CAAC,OAAA,EAAS,GAAA,EAAK,QAAQ,CAAC,CAAA;AAE3B,EAAA,MAAM,uBAAuB,MAAM;AACjC,IAAA,gBAAA,CAAiB,KAAK,CAAA;AACtB,IAAA,QAAA,EAAS;AAAA,EACX,CAAA;AAEA,EAAA,MAAM,yBAAyB,MAAM;AACnC,IAAA,kBAAA,CAAmB,KAAK,CAAA;AAAA,EAC1B,CAAA;AAEA,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,IAAA,GAAA,mBACC,IAAA;AAAA,MAAC,aAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,GAAA;AAAA,QACP,SAAA,kBAAW,GAAA,CAAC,kBAAA,EAAA,EAAmB,QAAA,EAAS,OAAA,EAAQ,CAAA;AAAA,QAEhD,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,mBAAgB,GAAA,EAAU,CAAA;AAAA,0BAC3B,GAAA,CAAC,iBAAA,EAAA,EAAkB,IAAA,EAAM,CAAC,GAAG,CAAA,EAAG,CAAA;AAAA,0BAChC,GAAA,CAAC,kBAAA,EAAA,EAAmB,IAAA,EAAM,CAAC,GAAG,CAAA,EAAG,CAAA;AAAA,0BACjC,GAAA,CAAC,gBAAA,EAAA,EAAiB,IAAA,EAAM,CAAC,GAAG,CAAA,EAAG;AAAA;AAAA;AAAA,KACjC,mBAEA,IAAA;AAAA,MAAC,aAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,CAAA,CAAE,sBAAA,EAAwB,EAAE,CAAA;AAAA,QACnC,SAAA,kBAAW,GAAA,CAAC,kBAAA,EAAA,EAAmB,QAAA,EAAS,OAAA,EAAQ,CAAA;AAAA,QAEhD,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,IAED,IAAA,oBACC,IAAA;AAAA,MAAC,iBAAA;AAAA,MAAA;AAAA,QACC,aAAa,IAAA,CAAK,WAAA;AAAA,QAClB,2BAAW,GAAA,CAAC,kBAAA,EAAA,EAAmB,OAAO,EAAE,QAAA,EAAU,IAAG,EAAG,CAAA;AAAA,QACxD,KAAA,EAAO;AAAA,UACL;AAAA,YACE,KAAA,EAAO,EAAE,mBAAA,EAAqB;AAAA,cAC5B,OAAO,IAAA,CAAK,UAAA;AAAA,cACZ,QAAA,EAAU;AAAA,aACX,CAAA;AAAA,YACD,OAAO,IAAA,CAAK,UAAA;AAAA,YACZ,IAAA,kBAAM,GAAA,CAAC,kBAAA,EAAA,EAAmB,QAAA,EAAS,OAAA,EAAQ;AAAA,WAC7C;AAAA,UACA;AAAA,YACE,OAAO,CAAA,CAAE,uBAAA,EAAyB,EAAE,KAAA,EAAO,IAAA,CAAK,eAAe,CAAA;AAAA,YAC/D,OAAO,IAAA,CAAK,aAAA;AAAA,YACZ,IAAA,kBAAM,GAAA,CAAC,UAAA,EAAA,EAAW,QAAA,EAAS,OAAA,EAAQ;AAAA;AACrC,SACF;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,IAAA,CAAK,OAAA,IAAW,KAAK,OAAA,CAAQ,MAAA,GAAS,qBACrC,IAAA,CAAC,UAAA,EAAA,EAAW,SAAQ,SAAA,EACjB,QAAA,EAAA;AAAA,YAAA,CAAA,CAAE,gBAAgB,CAAA;AAAA,YAClB,IAAA;AAAA,YACA,KAAK,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAA,EAAG,sBACpB,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,8BAAA,GAAA,CAAC,aAAA,EAAA,EAAsB,SAAA,EAAW,CAAA,EAAA,EAAd,CAAiB,CAAA;AAAA,cACpC,CAAA,KAAM,IAAA,CAAK,OAAA,CAAS,MAAA,GAAS,IAAI,EAAA,GAAK;AAAA,aAAA,EACzC,CACD;AAAA,WAAA,EACH,CAAA;AAAA,UAAA,CAEA,IAAA,CAAK,OAAA,IAAW,IAAA,CAAK,SAAA,qBACrB,IAAA,CAAC,SAAI,KAAA,EAAO,EAAE,SAAA,EAAW,KAAA,EAAM,EAC5B,QAAA,EAAA;AAAA,YAAA,IAAA,CAAK,OAAA,oBACJ,GAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAQ,UAAA;AAAA,gBACR,IAAA,EAAK,OAAA;AAAA,gBACL,SAAA,sBAAY,QAAA,EAAA,EAAS,CAAA;AAAA,gBACrB,OAAA,EAAS,MAAM,gBAAA,CAAiB,IAAI,CAAA;AAAA,gBACpC,KAAA,EAAO,EAAE,WAAA,EAAa,OAAA,EAAQ;AAAA,gBAE7B,YAAE,gBAAgB;AAAA;AAAA,aACrB;AAAA,YAED,KAAK,SAAA,oBACJ,GAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAQ,UAAA;AAAA,gBACR,IAAA,EAAK,OAAA;AAAA,gBACL,KAAA,EAAM,WAAA;AAAA,gBACN,SAAA,sBAAY,UAAA,EAAA,EAAW,CAAA;AAAA,gBACvB,OAAA,EAAS,MAAM,kBAAA,CAAmB,IAAI,CAAA;AAAA,gBAErC,YAAE,kBAAkB;AAAA;AAAA;AACvB,WAAA,EAEJ;AAAA;AAAA;AAAA,KAEJ;AAAA,IAED,GAAA,oBACC,GAAA;AAAA,MAAC,cAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAM,CAAC,GAAA,IAAO,EAAE,CAAA;AAAA,QAChB,gBAAA,EAAkB,EAAE,aAAA,EAAe,KAAA,EAAM;AAAA,QACzC,aAAA,EAAa,IAAA;AAAA,QACb,WAAA,EAAY,MAAA;AAAA,QACZ,MAAA,EAAO;AAAA;AAAA,KACT;AAAA,IAED,CAAC,GAAA,oBAAO,GAAA,CAAC,aAAA,EAAA,EAAc,CAAA;AAAA,IACvB,wBACC,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,sBAAA,GAAA;AAAA,QAAC,YAAA;AAAA,QAAA;AAAA,UACC,GAAA,EAAK,IAAA;AAAA,UACL,IAAA,EAAM,aAAA;AAAA,UACN,OAAA,EAAS,oBAAA;AAAA,UACT;AAAA;AAAA,OACF;AAAA,sBACA,GAAA;AAAA,QAAC,WAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAM,eAAA;AAAA,UACN,OAAA,EAAS,sBAAA;AAAA,UACT,MAAA,EAAQ;AAAA;AAAA;AACV,KAAA,EACF;AAAA,GAAA,EAEJ,CAAA;AAEJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TechDocsAskQuestionAddon.esm.js","sources":["../../../src/components/TechDocsAskQuestionAddon/TechDocsAskQuestionAddon.tsx"],"sourcesContent":["import { makeStyles, Portal, Typography } from '@material-ui/core';\nimport {\n useShadowRootElements,\n useTechDocsReaderPage,\n} from '@backstage/plugin-techdocs-react';\nimport { Link } from '@backstage/core-components';\nimport { askRouteRef } from '@drodil/backstage-plugin-qeta-react';\nimport { useRouteRef } from '@backstage/core-plugin-api';\nimport ContactSupportIcon from '@material-ui/icons/ContactSupport';\nimport { stringifyEntityRef } from '@backstage/catalog-model';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n padding: theme.spacing(1),\n },\n link: {\n display: 'grid',\n gridAutoFlow: 'column',\n justifyContent: 'flex-end',\n alignItems: 'center',\n },\n}));\n\nexport const TechDocsAskQuestionAddon = () => {\n const styles = useStyles();\n const { title, subtitle, entityRef } = useTechDocsReaderPage();\n const [mainContent] = useShadowRootElements([\n '[data-md-component=\"main\"] .md-content',\n ]);\n\n const askRoute = useRouteRef(askRouteRef);\n\n const params = new URLSearchParams();\n if (entityRef) {\n params.append('entity', stringifyEntityRef(entityRef));\n }\n if (title) {\n params.append(\n 'title',\n `Question about \"${title}${subtitle ? ` - ${subtitle}` : ''}\"`,\n );\n }\n params.append(\n 'content',\n `\\n\\nThis question relates to ${window.location.href}`,\n );\n\n return (\n <Portal container={mainContent}>\n <div className={styles.root}>\n <Link\n target=\"_blank\"\n className={styles.link}\n to={`${askRoute()}?${params.toString()}`}\n >\n <ContactSupportIcon />\n <Typography>Ask a question about the content</Typography>\n </Link>\n </div>\n </Portal>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;AAWA,MAAM,SAAA,GAAY,WAAW,
|
|
1
|
+
{"version":3,"file":"TechDocsAskQuestionAddon.esm.js","sources":["../../../src/components/TechDocsAskQuestionAddon/TechDocsAskQuestionAddon.tsx"],"sourcesContent":["import { makeStyles, Portal, Typography } from '@material-ui/core';\nimport {\n useShadowRootElements,\n useTechDocsReaderPage,\n} from '@backstage/plugin-techdocs-react';\nimport { Link } from '@backstage/core-components';\nimport { askRouteRef } from '@drodil/backstage-plugin-qeta-react';\nimport { useRouteRef } from '@backstage/core-plugin-api';\nimport ContactSupportIcon from '@material-ui/icons/ContactSupport';\nimport { stringifyEntityRef } from '@backstage/catalog-model';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n padding: theme.spacing(1),\n },\n link: {\n display: 'grid',\n gridAutoFlow: 'column',\n justifyContent: 'flex-end',\n alignItems: 'center',\n },\n}));\n\nexport const TechDocsAskQuestionAddon = () => {\n const styles = useStyles();\n const { title, subtitle, entityRef } = useTechDocsReaderPage();\n const [mainContent] = useShadowRootElements([\n '[data-md-component=\"main\"] .md-content',\n ]);\n\n const askRoute = useRouteRef(askRouteRef);\n\n const params = new URLSearchParams();\n if (entityRef) {\n params.append('entity', stringifyEntityRef(entityRef));\n }\n if (title) {\n params.append(\n 'title',\n `Question about \"${title}${subtitle ? ` - ${subtitle}` : ''}\"`,\n );\n }\n params.append(\n 'content',\n `\\n\\nThis question relates to ${window.location.href}`,\n );\n\n return (\n <Portal container={mainContent}>\n <div className={styles.root}>\n <Link\n target=\"_blank\"\n className={styles.link}\n to={`${askRoute()}?${params.toString()}`}\n >\n <ContactSupportIcon />\n <Typography>Ask a question about the content</Typography>\n </Link>\n </div>\n </Portal>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;AAWA,MAAM,SAAA,GAAY,WAAW,CAAA,KAAA,MAAU;AAAA,EACrC,IAAA,EAAM;AAAA,IACJ,OAAA,EAAS,KAAA,CAAM,OAAA,CAAQ,CAAC;AAAA,GAC1B;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,OAAA,EAAS,MAAA;AAAA,IACT,YAAA,EAAc,QAAA;AAAA,IACd,cAAA,EAAgB,UAAA;AAAA,IAChB,UAAA,EAAY;AAAA;AAEhB,CAAA,CAAE,CAAA;AAEK,MAAM,2BAA2B,MAAM;AAC5C,EAAA,MAAM,SAAS,SAAA,EAAU;AACzB,EAAA,MAAM,EAAE,KAAA,EAAO,QAAA,EAAU,SAAA,KAAc,qBAAA,EAAsB;AAC7D,EAAA,MAAM,CAAC,WAAW,CAAA,GAAI,qBAAA,CAAsB;AAAA,IAC1C;AAAA,GACD,CAAA;AAED,EAAA,MAAM,QAAA,GAAW,YAAY,WAAW,CAAA;AAExC,EAAA,MAAM,MAAA,GAAS,IAAI,eAAA,EAAgB;AACnC,EAAA,IAAI,SAAA,EAAW;AACb,IAAA,MAAA,CAAO,MAAA,CAAO,QAAA,EAAU,kBAAA,CAAmB,SAAS,CAAC,CAAA;AAAA,EACvD;AACA,EAAA,IAAI,KAAA,EAAO;AACT,IAAA,MAAA,CAAO,MAAA;AAAA,MACL,OAAA;AAAA,MACA,mBAAmB,KAAK,CAAA,EAAG,WAAW,CAAA,GAAA,EAAM,QAAQ,KAAK,EAAE,CAAA,CAAA;AAAA,KAC7D;AAAA,EACF;AACA,EAAA,MAAA,CAAO,MAAA;AAAA,IACL,SAAA;AAAA,IACA;;AAAA,yBAAA,EAAgC,MAAA,CAAO,SAAS,IAAI,CAAA;AAAA,GACtD;AAEA,EAAA,uBACE,GAAA,CAAC,UAAO,SAAA,EAAW,WAAA,EACjB,8BAAC,KAAA,EAAA,EAAI,SAAA,EAAW,OAAO,IAAA,EACrB,QAAA,kBAAA,IAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,MAAA,EAAO,QAAA;AAAA,MACP,WAAW,MAAA,CAAO,IAAA;AAAA,MAClB,IAAI,CAAA,EAAG,QAAA,EAAU,CAAA,CAAA,EAAI,MAAA,CAAO,UAAU,CAAA,CAAA;AAAA,MAEtC,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,kBAAA,EAAA,EAAmB,CAAA;AAAA,wBACpB,GAAA,CAAC,cAAW,QAAA,EAAA,kCAAA,EAAgC;AAAA;AAAA;AAAA,KAEhD,CAAA,EACF,CAAA;AAEJ;;;;"}
|