@drodil/backstage-plugin-qeta-react 3.32.1 → 3.33.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/CommentSection/CommentListItem.esm.js +1 -2
- package/dist/components/CommentSection/CommentListItem.esm.js.map +1 -1
- package/dist/components/CommentSection/CommentSection.esm.js +2 -3
- package/dist/components/CommentSection/CommentSection.esm.js.map +1 -1
- package/dist/components/DeleteModal/DeleteModal.esm.js +23 -5
- package/dist/components/DeleteModal/DeleteModal.esm.js.map +1 -1
- package/dist/components/MarkdownEditor/MarkdownEditor.esm.js +24 -8
- package/dist/components/MarkdownEditor/MarkdownEditor.esm.js.map +1 -1
- package/dist/components/PostsContainer/PostsContainer.esm.js.map +1 -1
- package/dist/components/Utility/QetaGridHeader.esm.js.map +1 -1
- package/dist/hooks/useVoting.esm.js +2 -5
- package/dist/hooks/useVoting.esm.js.map +1 -1
- package/dist/index.d.ts +29 -23
- package/dist/translation.esm.js +7 -0
- package/dist/translation.esm.js.map +1 -1
- package/package.json +7 -7
|
@@ -4,7 +4,6 @@ import { MarkdownRenderer } from '../MarkdownRenderer/MarkdownRenderer.esm.js';
|
|
|
4
4
|
import { AuthorLink } from '../Links/Links.esm.js';
|
|
5
5
|
import { RelativeTimeWithTooltip } from '../RelativeTimeWithTooltip/RelativeTimeWithTooltip.esm.js';
|
|
6
6
|
import { Link } from '@backstage/core-components';
|
|
7
|
-
import * as React from 'react';
|
|
8
7
|
import { useState } from 'react';
|
|
9
8
|
import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
|
|
10
9
|
import { qetaTranslationRef } from '../../translation.esm.js';
|
|
@@ -49,7 +48,7 @@ const CommentListItem = (props) => {
|
|
|
49
48
|
const { t } = useTranslationRef(qetaTranslationRef);
|
|
50
49
|
const { comment, onCommentAction, post, answer } = props;
|
|
51
50
|
const qetaApi = useApi(qetaApiRef);
|
|
52
|
-
const [posting, setPosting] =
|
|
51
|
+
const [posting, setPosting] = useState(false);
|
|
53
52
|
const styles = useStyles();
|
|
54
53
|
const [editing, setEditing] = useState(false);
|
|
55
54
|
const deleteComment = (id) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommentListItem.esm.js","sources":["../../../src/components/CommentSection/CommentListItem.tsx"],"sourcesContent":["import { Box, makeStyles, Typography } from '@material-ui/core';\nimport { MarkdownRenderer } from '../MarkdownRenderer';\nimport { AuthorLink } from '../Links';\nimport { RelativeTimeWithTooltip } from '../RelativeTimeWithTooltip';\nimport { Link } from '@backstage/core-components';\nimport
|
|
1
|
+
{"version":3,"file":"CommentListItem.esm.js","sources":["../../../src/components/CommentSection/CommentListItem.tsx"],"sourcesContent":["import { Box, makeStyles, Typography } from '@material-ui/core';\nimport { MarkdownRenderer } from '../MarkdownRenderer';\nimport { AuthorLink } from '../Links';\nimport { RelativeTimeWithTooltip } from '../RelativeTimeWithTooltip';\nimport { Link } from '@backstage/core-components';\nimport { useState } from 'react';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { qetaTranslationRef } from '../../translation.ts';\nimport {\n AnswerResponse,\n Comment,\n PostResponse,\n} from '@drodil/backstage-plugin-qeta-common';\nimport { useApi } from '@backstage/core-plugin-api';\nimport { qetaApiRef } from '../../api.ts';\nimport { CommentForm } from './CommentForm.tsx';\nimport { ExpertIcon } from '../Icons/ExpertIcon.tsx';\n\nconst useStyles = makeStyles(\n theme => ({\n root: {},\n box: {\n padding: theme.spacing(1.5),\n transition: 'all 0.2s ease-in-out',\n '&:hover': {\n backgroundColor: theme.palette.action.hover,\n },\n },\n content: {\n display: 'inline',\n '& *:last-child': {\n display: 'inline',\n },\n lineHeight: 1.5,\n },\n metadata: {\n color: theme.palette.text.secondary,\n marginTop: theme.spacing(0.5),\n '& a': {\n color: theme.palette.primary.main,\n transition: 'all 0.2s ease-in-out',\n '&:hover': {\n textDecoration: 'underline',\n opacity: 0.8,\n },\n },\n },\n }),\n { name: 'QetaCommentList' },\n);\n\nexport const CommentListItem = (props: {\n comment: Comment;\n onCommentAction: (question: PostResponse, answer?: AnswerResponse) => void;\n post: PostResponse;\n answer?: AnswerResponse;\n}) => {\n const { t } = useTranslationRef(qetaTranslationRef);\n const { comment, onCommentAction, post, answer } = props;\n const qetaApi = useApi(qetaApiRef);\n const [posting, setPosting] = useState(false);\n const styles = useStyles();\n const [editing, setEditing] = useState(false);\n\n const deleteComment = (id: number) => {\n if (answer) {\n qetaApi.deleteAnswerComment(post.id, answer.id, id).then(a => {\n onCommentAction(post, a);\n });\n return;\n }\n qetaApi.deletePostComment(post.id, id).then(q => onCommentAction(q));\n };\n\n const saveComment = (data: { content: string }) => {\n setPosting(true);\n if (answer) {\n qetaApi\n .updateAnswerComment(post.id, answer.id, comment.id, data.content)\n .then(a => {\n setEditing(false);\n setPosting(false);\n onCommentAction(post, a);\n });\n return;\n }\n qetaApi.updatePostComment(post.id, comment.id, data.content).then(q => {\n setEditing(false);\n setPosting(false);\n onCommentAction(q);\n });\n };\n\n return (\n <Box className={styles.box}>\n {editing ? (\n <>\n <CommentForm\n submit={saveComment}\n saveButtonTitle={t('commentList.save')}\n defaultValues={{ content: comment.content }}\n disabled={posting}\n />\n </>\n ) : (\n <>\n <MarkdownRenderer\n content={comment.content}\n className={styles.content}\n />\n <Typography variant=\"caption\" className={styles.metadata}>\n {' – '}\n <AuthorLink entity={comment} />\n {comment.expert && <ExpertIcon />}{' '}\n <RelativeTimeWithTooltip value={comment.created} />\n {comment.canEdit && (\n <>\n {' / '}\n <Link\n underline=\"none\"\n to=\"#\"\n className=\"qetaCommentEditBtn\"\n onClick={() => setEditing(true)}\n >\n {t('commentList.editLink')}\n </Link>\n </>\n )}\n {comment.canDelete && (\n <>\n {' / '}\n <Link\n underline=\"none\"\n to=\"#\"\n className=\"qetaCommentDeleteBtn\"\n onClick={() => deleteComment(comment.id)}\n >\n {t('commentList.deleteLink')}\n </Link>\n </>\n )}\n </Typography>\n </>\n )}\n </Box>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
2
|
-
import * as React from 'react';
|
|
3
2
|
import { useState } from 'react';
|
|
4
3
|
import { makeStyles, Box, Button, Grid } from '@material-ui/core';
|
|
5
4
|
import { qetaCreateCommentPermission } from '@drodil/backstage-plugin-qeta-common';
|
|
@@ -55,9 +54,9 @@ const CommentSection = (props) => {
|
|
|
55
54
|
const { answer, post, onCommentAction } = props;
|
|
56
55
|
const analytics = useAnalytics();
|
|
57
56
|
const qetaApi = useApi(qetaApiRef);
|
|
58
|
-
const [posting, setPosting] =
|
|
57
|
+
const [posting, setPosting] = useState(false);
|
|
59
58
|
const [formVisible, setFormVisible] = useState(false);
|
|
60
|
-
const [edited, setEdited] =
|
|
59
|
+
const [edited, setEdited] = useState(false);
|
|
61
60
|
const { t } = useTranslationRef(qetaTranslationRef);
|
|
62
61
|
const styles = useStyles();
|
|
63
62
|
const entity = answer ?? post;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommentSection.esm.js","sources":["../../../src/components/CommentSection/CommentSection.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/no-autofocus */\nimport
|
|
1
|
+
{"version":3,"file":"CommentSection.esm.js","sources":["../../../src/components/CommentSection/CommentSection.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/no-autofocus */\nimport { useState } from 'react';\nimport { Box, Button, Grid, makeStyles } from '@material-ui/core';\nimport {\n AnswerResponse,\n PostResponse,\n qetaCreateCommentPermission,\n} from '@drodil/backstage-plugin-qeta-common';\nimport { useAnalytics, useApi } from '@backstage/core-plugin-api';\nimport { CommentList } from './CommentList';\nimport { qetaApiRef } from '../../api';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { qetaTranslationRef } from '../../translation.ts';\nimport AddCommentIcon from '@material-ui/icons/AddComment';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport ExpandLessIcon from '@material-ui/icons/ExpandLess';\nimport { OptionalRequirePermission } from '../Utility/OptionalRequirePermission';\nimport { CommentForm } from './CommentForm.tsx';\nimport { useConfirmNavigationIfEdited } from '../../utils';\n\nexport type QetaCommentSectionClassKey =\n | 'root'\n | 'addCommentButton'\n | 'commentSection'\n | 'commentForm';\n\nconst useStyles = makeStyles(\n theme => ({\n root: {},\n commentSection: {\n position: 'relative',\n marginLeft: theme.spacing(3.5),\n '&::before': {\n content: '\"\"',\n position: 'absolute',\n left: theme.spacing(1),\n height: 'calc(100% - 46px)',\n width: '1px',\n backgroundColor: theme.palette.divider,\n opacity: 0.4,\n transition: 'all 0.2s ease-in-out',\n zIndex: 1,\n },\n },\n addCommentButton: {\n textTransform: 'none',\n backgroundColor: 'transparent',\n border: 'none',\n color: theme.palette.text.secondary,\n marginTop: '3px',\n '&:hover': {\n backgroundColor: 'transparent',\n color: theme.palette.primary.main,\n },\n },\n commentForm: {\n marginLeft: theme.spacing(2.5),\n marginTop: theme.spacing(1),\n },\n }),\n { name: 'QetaCommentSection' },\n);\n\nexport const CommentSection = (props: {\n onCommentAction: (post: PostResponse, answer?: AnswerResponse) => void;\n post: PostResponse;\n answer?: AnswerResponse;\n className?: string;\n}) => {\n const { answer, post, onCommentAction } = props;\n const analytics = useAnalytics();\n const qetaApi = useApi(qetaApiRef);\n const [posting, setPosting] = useState(false);\n const [formVisible, setFormVisible] = useState(false);\n const [edited, setEdited] = useState(false);\n const { t } = useTranslationRef(qetaTranslationRef);\n const styles = useStyles();\n\n // Determine the entity to get comments from\n const entity = answer ?? post;\n const commentsCount = entity.comments?.length || 0;\n const [commentsVisible, setCommentsVisible] = useState(true);\n\n const postComment = (data: { content: string }) => {\n setPosting(true);\n if (answer) {\n qetaApi.commentAnswer(post.id, answer.id, data.content).then(a => {\n setFormVisible(false);\n analytics.captureEvent('comment', 'answer');\n setPosting(false);\n setEdited(false);\n onCommentAction(post, a);\n });\n return;\n }\n\n qetaApi.commentPost(post.id, data.content).then(q => {\n setFormVisible(false);\n analytics.captureEvent('comment', post.type);\n setPosting(false);\n setEdited(false);\n onCommentAction(q);\n });\n };\n\n useConfirmNavigationIfEdited(edited);\n\n if (post.status !== 'active') {\n return null;\n }\n\n return (\n <Box\n className={`${styles.root} ${styles.commentSection} ${props.className} qetaCommentSection`}\n >\n {commentsCount > 0 && (\n <Box display=\"flex\" alignItems=\"center\" pl={1}>\n <Button\n size=\"small\"\n variant=\"text\"\n onClick={() => setCommentsVisible(v => !v)}\n style={{\n textTransform: 'none',\n padding: '0.5rem 0.8rem',\n border: 'none',\n backgroundColor: 'transparent',\n }}\n endIcon={\n commentsVisible ? (\n <ExpandMoreIcon fontSize=\"small\" />\n ) : (\n <ExpandLessIcon fontSize=\"small\" />\n )\n }\n >\n {`${commentsCount} ${t('common.comments')}`}\n </Button>\n </Box>\n )}\n {commentsVisible && (\n <Box pl={1}>\n <CommentList\n post={post}\n answer={answer}\n onCommentAction={onCommentAction}\n />\n </Box>\n )}\n <OptionalRequirePermission\n permission={qetaCreateCommentPermission}\n errorPage={<></>}\n >\n {!formVisible && (\n <Grid container justifyContent=\"flex-end\">\n <Grid item>\n <Button\n size=\"small\"\n startIcon={<AddCommentIcon fontSize=\"small\" />}\n onClick={() => setFormVisible(true)}\n className={styles.addCommentButton}\n >\n {t('commentSection.addComment')}\n </Button>\n </Grid>\n </Grid>\n )}\n {formVisible && (\n <Box className={styles.commentForm}>\n <CommentForm\n submit={postComment}\n saveButtonTitle={t('commentSection.post')}\n disabled={posting}\n />\n </Box>\n )}\n </OptionalRequirePermission>\n </Box>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;AA0BA,MAAM,SAAY,GAAA,UAAA;AAAA,EAChB,CAAU,KAAA,MAAA;AAAA,IACR,MAAM,EAAC;AAAA,IACP,cAAgB,EAAA;AAAA,MACd,QAAU,EAAA,UAAA;AAAA,MACV,UAAA,EAAY,KAAM,CAAA,OAAA,CAAQ,GAAG,CAAA;AAAA,MAC7B,WAAa,EAAA;AAAA,QACX,OAAS,EAAA,IAAA;AAAA,QACT,QAAU,EAAA,UAAA;AAAA,QACV,IAAA,EAAM,KAAM,CAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,QACrB,MAAQ,EAAA,mBAAA;AAAA,QACR,KAAO,EAAA,KAAA;AAAA,QACP,eAAA,EAAiB,MAAM,OAAQ,CAAA,OAAA;AAAA,QAC/B,OAAS,EAAA,GAAA;AAAA,QACT,UAAY,EAAA,sBAAA;AAAA,QACZ,MAAQ,EAAA;AAAA;AACV,KACF;AAAA,IACA,gBAAkB,EAAA;AAAA,MAChB,aAAe,EAAA,MAAA;AAAA,MACf,eAAiB,EAAA,aAAA;AAAA,MACjB,MAAQ,EAAA,MAAA;AAAA,MACR,KAAA,EAAO,KAAM,CAAA,OAAA,CAAQ,IAAK,CAAA,SAAA;AAAA,MAC1B,SAAW,EAAA,KAAA;AAAA,MACX,SAAW,EAAA;AAAA,QACT,eAAiB,EAAA,aAAA;AAAA,QACjB,KAAA,EAAO,KAAM,CAAA,OAAA,CAAQ,OAAQ,CAAA;AAAA;AAC/B,KACF;AAAA,IACA,WAAa,EAAA;AAAA,MACX,UAAA,EAAY,KAAM,CAAA,OAAA,CAAQ,GAAG,CAAA;AAAA,MAC7B,SAAA,EAAW,KAAM,CAAA,OAAA,CAAQ,CAAC;AAAA;AAC5B,GACF,CAAA;AAAA,EACA,EAAE,MAAM,oBAAqB;AAC/B,CAAA;AAEa,MAAA,cAAA,GAAiB,CAAC,KAKzB,KAAA;AACJ,EAAA,MAAM,EAAE,MAAA,EAAQ,IAAM,EAAA,eAAA,EAAoB,GAAA,KAAA;AAC1C,EAAA,MAAM,YAAY,YAAa,EAAA;AAC/B,EAAM,MAAA,OAAA,GAAU,OAAO,UAAU,CAAA;AACjC,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,SAAS,KAAK,CAAA;AACpD,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAI,SAAS,KAAK,CAAA;AAC1C,EAAA,MAAM,EAAE,CAAA,EAAM,GAAA,iBAAA,CAAkB,kBAAkB,CAAA;AAClD,EAAA,MAAM,SAAS,SAAU,EAAA;AAGzB,EAAA,MAAM,SAAS,MAAU,IAAA,IAAA;AACzB,EAAM,MAAA,aAAA,GAAgB,MAAO,CAAA,QAAA,EAAU,MAAU,IAAA,CAAA;AACjD,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAI,SAAS,IAAI,CAAA;AAE3D,EAAM,MAAA,WAAA,GAAc,CAAC,IAA8B,KAAA;AACjD,IAAA,UAAA,CAAW,IAAI,CAAA;AACf,IAAA,IAAI,MAAQ,EAAA;AACV,MAAQ,OAAA,CAAA,aAAA,CAAc,KAAK,EAAI,EAAA,MAAA,CAAO,IAAI,IAAK,CAAA,OAAO,CAAE,CAAA,IAAA,CAAK,CAAK,CAAA,KAAA;AAChE,QAAA,cAAA,CAAe,KAAK,CAAA;AACpB,QAAU,SAAA,CAAA,YAAA,CAAa,WAAW,QAAQ,CAAA;AAC1C,QAAA,UAAA,CAAW,KAAK,CAAA;AAChB,QAAA,SAAA,CAAU,KAAK,CAAA;AACf,QAAA,eAAA,CAAgB,MAAM,CAAC,CAAA;AAAA,OACxB,CAAA;AACD,MAAA;AAAA;AAGF,IAAA,OAAA,CAAQ,YAAY,IAAK,CAAA,EAAA,EAAI,KAAK,OAAO,CAAA,CAAE,KAAK,CAAK,CAAA,KAAA;AACnD,MAAA,cAAA,CAAe,KAAK,CAAA;AACpB,MAAU,SAAA,CAAA,YAAA,CAAa,SAAW,EAAA,IAAA,CAAK,IAAI,CAAA;AAC3C,MAAA,UAAA,CAAW,KAAK,CAAA;AAChB,MAAA,SAAA,CAAU,KAAK,CAAA;AACf,MAAA,eAAA,CAAgB,CAAC,CAAA;AAAA,KAClB,CAAA;AAAA,GACH;AAEA,EAAA,4BAAA,CAA6B,MAAM,CAAA;AAEnC,EAAI,IAAA,IAAA,CAAK,WAAW,QAAU,EAAA;AAC5B,IAAO,OAAA,IAAA;AAAA;AAGT,EACE,uBAAA,IAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,GAAG,MAAO,CAAA,IAAI,IAAI,MAAO,CAAA,cAAc,CAAI,CAAA,EAAA,KAAA,CAAM,SAAS,CAAA,mBAAA,CAAA;AAAA,MAEpE,QAAA,EAAA;AAAA,QAAgB,aAAA,GAAA,CAAA,wBACd,GAAI,EAAA,EAAA,OAAA,EAAQ,QAAO,UAAW,EAAA,QAAA,EAAS,IAAI,CAC1C,EAAA,QAAA,kBAAA,GAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,IAAK,EAAA,OAAA;AAAA,YACL,OAAQ,EAAA,MAAA;AAAA,YACR,OAAS,EAAA,MAAM,kBAAmB,CAAA,CAAA,CAAA,KAAK,CAAC,CAAC,CAAA;AAAA,YACzC,KAAO,EAAA;AAAA,cACL,aAAe,EAAA,MAAA;AAAA,cACf,OAAS,EAAA,eAAA;AAAA,cACT,MAAQ,EAAA,MAAA;AAAA,cACR,eAAiB,EAAA;AAAA,aACnB;AAAA,YACA,OAAA,EACE,eACE,mBAAA,GAAA,CAAC,cAAe,EAAA,EAAA,QAAA,EAAS,SAAQ,CAEjC,mBAAA,GAAA,CAAC,cAAe,EAAA,EAAA,QAAA,EAAS,OAAQ,EAAA,CAAA;AAAA,YAIpC,QAAG,EAAA,CAAA,EAAA,aAAa,CAAI,CAAA,EAAA,CAAA,CAAE,iBAAiB,CAAC,CAAA;AAAA;AAAA,SAE7C,EAAA,CAAA;AAAA,QAED,eACC,oBAAA,GAAA,CAAC,GAAI,EAAA,EAAA,EAAA,EAAI,CACP,EAAA,QAAA,kBAAA,GAAA;AAAA,UAAC,WAAA;AAAA,UAAA;AAAA,YACC,IAAA;AAAA,YACA,MAAA;AAAA,YACA;AAAA;AAAA,SAEJ,EAAA,CAAA;AAAA,wBAEF,IAAA;AAAA,UAAC,yBAAA;AAAA,UAAA;AAAA,YACC,UAAY,EAAA,2BAAA;AAAA,YACZ,2BAAa,GAAA,CAAA,QAAA,EAAA,EAAA,CAAA;AAAA,YAEZ,QAAA,EAAA;AAAA,cAAC,CAAA,WAAA,oBACC,GAAA,CAAA,IAAA,EAAA,EAAK,SAAS,EAAA,IAAA,EAAC,gBAAe,UAC7B,EAAA,QAAA,kBAAA,GAAA,CAAC,IAAK,EAAA,EAAA,IAAA,EAAI,IACR,EAAA,QAAA,kBAAA,GAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,IAAK,EAAA,OAAA;AAAA,kBACL,SAAW,kBAAA,GAAA,CAAC,cAAe,EAAA,EAAA,QAAA,EAAS,OAAQ,EAAA,CAAA;AAAA,kBAC5C,OAAA,EAAS,MAAM,cAAA,CAAe,IAAI,CAAA;AAAA,kBAClC,WAAW,MAAO,CAAA,gBAAA;AAAA,kBAEjB,YAAE,2BAA2B;AAAA;AAAA,iBAElC,CACF,EAAA,CAAA;AAAA,cAED,WACC,oBAAA,GAAA,CAAC,GAAI,EAAA,EAAA,SAAA,EAAW,OAAO,WACrB,EAAA,QAAA,kBAAA,GAAA;AAAA,gBAAC,WAAA;AAAA,gBAAA;AAAA,kBACC,MAAQ,EAAA,WAAA;AAAA,kBACR,eAAA,EAAiB,EAAE,qBAAqB,CAAA;AAAA,kBACxC,QAAU,EAAA;AAAA;AAAA,eAEd,EAAA;AAAA;AAAA;AAAA;AAEJ;AAAA;AAAA,GACF;AAEJ;;;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
-
import { Modal, Backdrop, Typography, Button } from '@material-ui/core';
|
|
2
|
+
import { Modal, Backdrop, Typography, TextField, Button } from '@material-ui/core';
|
|
3
3
|
import { Alert } from '@material-ui/lab';
|
|
4
4
|
import DeleteIcon from '@material-ui/icons/Delete';
|
|
5
5
|
import { useState } from 'react';
|
|
@@ -21,6 +21,7 @@ const DeleteModal = (props) => {
|
|
|
21
21
|
const articlesRoute = useRouteRef(articlesRouteRef);
|
|
22
22
|
const { entity, open, question, onClose, onDelete } = props;
|
|
23
23
|
const [error, setError] = useState(false);
|
|
24
|
+
const [reason, setReason] = useState(void 0);
|
|
24
25
|
const { t } = useTranslationRef(qetaTranslationRef);
|
|
25
26
|
const isQuestion = "title" in entity;
|
|
26
27
|
const isCollection = "owner" in entity;
|
|
@@ -40,7 +41,7 @@ const DeleteModal = (props) => {
|
|
|
40
41
|
const title = getTitle();
|
|
41
42
|
const handleDelete = () => {
|
|
42
43
|
if (isCollection) {
|
|
43
|
-
qetaApi.deleteCollection(entity.id).catch((_) => setError(true)).then((ret) => {
|
|
44
|
+
qetaApi.deleteCollection(entity.id, reason).catch((_) => setError(true)).then((ret) => {
|
|
44
45
|
if (ret) {
|
|
45
46
|
onClose();
|
|
46
47
|
onDelete?.(entity);
|
|
@@ -55,7 +56,7 @@ const DeleteModal = (props) => {
|
|
|
55
56
|
}
|
|
56
57
|
});
|
|
57
58
|
} else if (isTag) {
|
|
58
|
-
qetaApi.deleteTag(entity.id).catch((_) => setError(true)).then((ret) => {
|
|
59
|
+
qetaApi.deleteTag(entity.id, reason).catch((_) => setError(true)).then((ret) => {
|
|
59
60
|
if (ret) {
|
|
60
61
|
onClose();
|
|
61
62
|
onDelete?.(entity);
|
|
@@ -70,7 +71,7 @@ const DeleteModal = (props) => {
|
|
|
70
71
|
}
|
|
71
72
|
});
|
|
72
73
|
} else if (isQuestion) {
|
|
73
|
-
qetaApi.deletePost(entity.id).catch((_) => setError(true)).then((ret) => {
|
|
74
|
+
qetaApi.deletePost(entity.id, reason).catch((_) => setError(true)).then((ret) => {
|
|
74
75
|
if (ret) {
|
|
75
76
|
onClose();
|
|
76
77
|
onDelete?.(entity);
|
|
@@ -87,7 +88,7 @@ const DeleteModal = (props) => {
|
|
|
87
88
|
}
|
|
88
89
|
});
|
|
89
90
|
} else if (question) {
|
|
90
|
-
qetaApi.deleteAnswer(question.id, entity.id).catch((_) => setError(true)).then((ret) => {
|
|
91
|
+
qetaApi.deleteAnswer(question.id, entity.id, reason).catch((_) => setError(true)).then((ret) => {
|
|
91
92
|
if (ret) {
|
|
92
93
|
onClose();
|
|
93
94
|
onDelete?.(entity);
|
|
@@ -127,6 +128,23 @@ const DeleteModal = (props) => {
|
|
|
127
128
|
children: title
|
|
128
129
|
}
|
|
129
130
|
),
|
|
131
|
+
/* @__PURE__ */ jsx(
|
|
132
|
+
TextField,
|
|
133
|
+
{
|
|
134
|
+
variant: "outlined",
|
|
135
|
+
multiline: true,
|
|
136
|
+
style: { marginTop: 16 },
|
|
137
|
+
minRows: 4,
|
|
138
|
+
label: t("deleteModal.reason"),
|
|
139
|
+
id: "reason",
|
|
140
|
+
fullWidth: true,
|
|
141
|
+
value: reason,
|
|
142
|
+
InputLabelProps: { shrink: true },
|
|
143
|
+
onChange: (e) => {
|
|
144
|
+
setReason(e.target.value);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
),
|
|
130
148
|
/* @__PURE__ */ jsx(
|
|
131
149
|
Button,
|
|
132
150
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeleteModal.esm.js","sources":["../../../src/components/DeleteModal/DeleteModal.tsx"],"sourcesContent":["import {\n AnswerResponse,\n CollectionResponse,\n PostResponse,\n TagResponse,\n} from '@drodil/backstage-plugin-qeta-common';\nimport { Backdrop, Button, Modal, Typography } from '@material-ui/core';\nimport { Alert } from '@material-ui/lab';\nimport Delete from '@material-ui/icons/Delete';\nimport { useState } from 'react';\nimport { alertApiRef, useApi, useRouteRef } from '@backstage/core-plugin-api';\nimport { useNavigate } from 'react-router-dom';\nimport { qetaApiRef } from '../../api';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { qetaTranslationRef } from '../../translation.ts';\nimport { ModalContent } from '../Utility/ModalContent';\nimport {\n articlesRouteRef,\n collectionsRouteRef,\n questionsRouteRef,\n tagsRouteRef,\n} from '../../routes.ts';\n\nexport const DeleteModal = (props: {\n entity: PostResponse | AnswerResponse | CollectionResponse | TagResponse;\n open: boolean;\n onClose: () => void;\n question?: PostResponse;\n onDelete?: (\n entity: PostResponse | AnswerResponse | CollectionResponse | TagResponse,\n ) => void;\n}) => {\n const qetaApi = useApi(qetaApiRef);\n const alertApi = useApi(alertApiRef);\n const navigate = useNavigate();\n const collectionsRoute = useRouteRef(collectionsRouteRef);\n const tagsRoute = useRouteRef(tagsRouteRef);\n const questionsRoute = useRouteRef(questionsRouteRef);\n const articlesRoute = useRouteRef(articlesRouteRef);\n const { entity, open, question, onClose, onDelete } = props;\n const [error, setError] = useState(false);\n const { t } = useTranslationRef(qetaTranslationRef);\n const isQuestion = 'title' in entity;\n const isCollection = 'owner' in entity;\n const isTag = 'tag' in entity;\n\n const getTitle = () => {\n if (isCollection) {\n return t('deleteModal.title.collection');\n }\n if (isTag) {\n return t('deleteModal.title.tag');\n }\n if (isQuestion) {\n return t('deleteModal.title.question');\n }\n return t('deleteModal.title.answer');\n };\n\n // eslint-disable-next-line no-nested-ternary\n const title = getTitle();\n\n const handleDelete = () => {\n if (isCollection) {\n qetaApi\n .deleteCollection(entity.id)\n .catch(_ => setError(true))\n .then(ret => {\n if (ret) {\n onClose();\n onDelete?.(entity);\n alertApi.post({\n message: t('deleteModal.collectionDeleted'),\n severity: 'success',\n display: 'transient',\n });\n navigate(collectionsRoute());\n } else {\n setError(true);\n }\n });\n } else if (isTag) {\n qetaApi\n .deleteTag(entity.id)\n .catch(_ => setError(true))\n .then(ret => {\n if (ret) {\n onClose();\n onDelete?.(entity);\n alertApi.post({\n message: t('deleteModal.tagDeleted'),\n severity: 'success',\n display: 'transient',\n });\n navigate(tagsRoute());\n } else {\n setError(true);\n }\n });\n } else if (isQuestion) {\n qetaApi\n .deletePost(entity.id)\n .catch(_ => setError(true))\n .then(ret => {\n if (ret) {\n onClose();\n onDelete?.(entity);\n alertApi.post({\n message:\n entity.type === 'question'\n ? t('deleteModal.questionDeleted')\n : t('deleteModal.articleDeleted'),\n severity: 'success',\n display: 'transient',\n });\n navigate(\n entity.type === 'question' ? questionsRoute() : articlesRoute(),\n );\n } else {\n setError(true);\n }\n });\n } else if (question) {\n qetaApi\n .deleteAnswer(question.id, entity.id)\n .catch(_ => setError(true))\n .then(ret => {\n if (ret) {\n onClose();\n onDelete?.(entity);\n alertApi.post({\n message: t('deleteModal.answerDeleted'),\n severity: 'success',\n display: 'transient',\n });\n } else {\n setError(true);\n }\n });\n }\n };\n\n return (\n <Modal\n open={open}\n onClose={onClose}\n className=\"qetaDeleteModal\"\n aria-labelledby=\"modal-modal-title\"\n aria-describedby=\"modal-modal-description\"\n closeAfterTransition\n BackdropComponent={Backdrop}\n BackdropProps={{\n timeout: 500,\n }}\n >\n <ModalContent>\n {error && (\n <Alert severity=\"error\">{t('deleteModal.errorDeleting')}</Alert>\n )}\n <Typography\n id=\"modal-modal-title\"\n className=\"qetaDeleteModalTitle\"\n variant=\"h6\"\n component=\"h2\"\n >\n {title}\n </Typography>\n <Button\n onClick={handleDelete}\n className=\"qetaDeleteModalDeleteBtn\"\n startIcon={<Delete />}\n color=\"secondary\"\n >\n {t('deleteModal.deleteButton')}\n </Button>\n <Button onClick={onClose} className=\"qetaDeleteModalCancelBtn\">\n {t('deleteModal.cancelButton')}\n </Button>\n </ModalContent>\n </Modal>\n );\n};\n"],"names":["Delete"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DeleteModal.esm.js","sources":["../../../src/components/DeleteModal/DeleteModal.tsx"],"sourcesContent":["import {\n AnswerResponse,\n CollectionResponse,\n PostResponse,\n TagResponse,\n} from '@drodil/backstage-plugin-qeta-common';\nimport {\n Backdrop,\n Button,\n Modal,\n TextField,\n Typography,\n} from '@material-ui/core';\nimport { Alert } from '@material-ui/lab';\nimport Delete from '@material-ui/icons/Delete';\nimport { useState } from 'react';\nimport { alertApiRef, useApi, useRouteRef } from '@backstage/core-plugin-api';\nimport { useNavigate } from 'react-router-dom';\nimport { qetaApiRef } from '../../api';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { qetaTranslationRef } from '../../translation.ts';\nimport { ModalContent } from '../Utility/ModalContent';\nimport {\n articlesRouteRef,\n collectionsRouteRef,\n questionsRouteRef,\n tagsRouteRef,\n} from '../../routes.ts';\n\nexport const DeleteModal = (props: {\n entity: PostResponse | AnswerResponse | CollectionResponse | TagResponse;\n open: boolean;\n onClose: () => void;\n question?: PostResponse;\n onDelete?: (\n entity: PostResponse | AnswerResponse | CollectionResponse | TagResponse,\n ) => void;\n}) => {\n const qetaApi = useApi(qetaApiRef);\n const alertApi = useApi(alertApiRef);\n const navigate = useNavigate();\n const collectionsRoute = useRouteRef(collectionsRouteRef);\n const tagsRoute = useRouteRef(tagsRouteRef);\n const questionsRoute = useRouteRef(questionsRouteRef);\n const articlesRoute = useRouteRef(articlesRouteRef);\n const { entity, open, question, onClose, onDelete } = props;\n const [error, setError] = useState(false);\n const [reason, setReason] = useState<undefined | string>(undefined);\n const { t } = useTranslationRef(qetaTranslationRef);\n const isQuestion = 'title' in entity;\n const isCollection = 'owner' in entity;\n const isTag = 'tag' in entity;\n\n const getTitle = () => {\n if (isCollection) {\n return t('deleteModal.title.collection');\n }\n if (isTag) {\n return t('deleteModal.title.tag');\n }\n if (isQuestion) {\n return t('deleteModal.title.question');\n }\n return t('deleteModal.title.answer');\n };\n\n // eslint-disable-next-line no-nested-ternary\n const title = getTitle();\n\n const handleDelete = () => {\n if (isCollection) {\n qetaApi\n .deleteCollection(entity.id, reason)\n .catch(_ => setError(true))\n .then(ret => {\n if (ret) {\n onClose();\n onDelete?.(entity);\n alertApi.post({\n message: t('deleteModal.collectionDeleted'),\n severity: 'success',\n display: 'transient',\n });\n navigate(collectionsRoute());\n } else {\n setError(true);\n }\n });\n } else if (isTag) {\n qetaApi\n .deleteTag(entity.id, reason)\n .catch(_ => setError(true))\n .then(ret => {\n if (ret) {\n onClose();\n onDelete?.(entity);\n alertApi.post({\n message: t('deleteModal.tagDeleted'),\n severity: 'success',\n display: 'transient',\n });\n navigate(tagsRoute());\n } else {\n setError(true);\n }\n });\n } else if (isQuestion) {\n qetaApi\n .deletePost(entity.id, reason)\n .catch(_ => setError(true))\n .then(ret => {\n if (ret) {\n onClose();\n onDelete?.(entity);\n alertApi.post({\n message:\n entity.type === 'question'\n ? t('deleteModal.questionDeleted')\n : t('deleteModal.articleDeleted'),\n severity: 'success',\n display: 'transient',\n });\n navigate(\n entity.type === 'question' ? questionsRoute() : articlesRoute(),\n );\n } else {\n setError(true);\n }\n });\n } else if (question) {\n qetaApi\n .deleteAnswer(question.id, entity.id, reason)\n .catch(_ => setError(true))\n .then(ret => {\n if (ret) {\n onClose();\n onDelete?.(entity);\n alertApi.post({\n message: t('deleteModal.answerDeleted'),\n severity: 'success',\n display: 'transient',\n });\n } else {\n setError(true);\n }\n });\n }\n };\n\n return (\n <Modal\n open={open}\n onClose={onClose}\n className=\"qetaDeleteModal\"\n aria-labelledby=\"modal-modal-title\"\n aria-describedby=\"modal-modal-description\"\n closeAfterTransition\n BackdropComponent={Backdrop}\n BackdropProps={{\n timeout: 500,\n }}\n >\n <ModalContent>\n {error && (\n <Alert severity=\"error\">{t('deleteModal.errorDeleting')}</Alert>\n )}\n <Typography\n id=\"modal-modal-title\"\n className=\"qetaDeleteModalTitle\"\n variant=\"h6\"\n component=\"h2\"\n >\n {title}\n </Typography>\n <TextField\n variant=\"outlined\"\n multiline\n style={{ marginTop: 16 }}\n minRows={4}\n label={t('deleteModal.reason')}\n id=\"reason\"\n fullWidth\n value={reason}\n InputLabelProps={{ shrink: true }}\n onChange={e => {\n setReason(e.target.value);\n }}\n />\n <Button\n onClick={handleDelete}\n className=\"qetaDeleteModalDeleteBtn\"\n startIcon={<Delete />}\n color=\"secondary\"\n >\n {t('deleteModal.deleteButton')}\n </Button>\n <Button onClick={onClose} className=\"qetaDeleteModalCancelBtn\">\n {t('deleteModal.cancelButton')}\n </Button>\n </ModalContent>\n </Modal>\n );\n};\n"],"names":["Delete"],"mappings":"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"}
|
|
@@ -12,6 +12,8 @@ import { makeStyles } from '@material-ui/core';
|
|
|
12
12
|
import { catalogApiRef } from '@backstage/plugin-catalog-react';
|
|
13
13
|
import { stringifyEntityRef } from '@backstage/catalog-model';
|
|
14
14
|
import { findTagMentions } from '@drodil/backstage-plugin-qeta-common';
|
|
15
|
+
import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
|
|
16
|
+
import { qetaTranslationRef } from '../../translation.esm.js';
|
|
15
17
|
|
|
16
18
|
const useStyles = makeStyles(
|
|
17
19
|
(theme) => {
|
|
@@ -121,19 +123,27 @@ const MarkdownEditor = (props) => {
|
|
|
121
123
|
const qetaApi = useApi(qetaApiRef);
|
|
122
124
|
const catalogApi = useApi(catalogApiRef);
|
|
123
125
|
const config = useApi(configApiRef);
|
|
124
|
-
const
|
|
126
|
+
const { t } = useTranslationRef(qetaTranslationRef);
|
|
127
|
+
const supportedMentionKinds = config.getOptionalStringArray(
|
|
125
128
|
"qeta.mentions.supportedKinds"
|
|
126
129
|
) || ["user"];
|
|
130
|
+
const enabledMentionKinds = supportedMentionKinds.filter(
|
|
131
|
+
(kind) => ["user", "group"].includes(kind.toLowerCase())
|
|
132
|
+
);
|
|
133
|
+
const maxTags = config.getOptionalNumber("qeta.tags.max") ?? 5;
|
|
134
|
+
const suggestionChars = [];
|
|
135
|
+
if (enabledMentionKinds.length > 0) {
|
|
136
|
+
suggestionChars.push("@");
|
|
137
|
+
}
|
|
138
|
+
if (maxTags > 0) {
|
|
139
|
+
suggestionChars.push("#");
|
|
140
|
+
}
|
|
127
141
|
const loadEntitySuggestions = async (text) => {
|
|
128
|
-
const supportedKinds = ["user", "group"];
|
|
129
|
-
const enabledKinds = supportedKinds.filter(
|
|
130
|
-
(kind) => enabledMentionTypes.includes(kind.toLowerCase())
|
|
131
|
-
);
|
|
132
142
|
if (!text) {
|
|
133
143
|
return NO_SUGGESTIONS;
|
|
134
144
|
}
|
|
135
145
|
const entities = await catalogApi.queryEntities({
|
|
136
|
-
filter: { kind:
|
|
146
|
+
filter: { kind: enabledMentionKinds },
|
|
137
147
|
limit: 5,
|
|
138
148
|
fullTextFilter: {
|
|
139
149
|
term: text,
|
|
@@ -200,6 +210,12 @@ const MarkdownEditor = (props) => {
|
|
|
200
210
|
selectedTab,
|
|
201
211
|
onTabChange: setSelectedTab,
|
|
202
212
|
minEditorHeight: height,
|
|
213
|
+
l18n: {
|
|
214
|
+
write: t("markdownEditor.write"),
|
|
215
|
+
preview: t("markdownEditor.preview"),
|
|
216
|
+
uploadingImage: t("markdownEditor.uploadingImage"),
|
|
217
|
+
pasteDropSelect: t("markdownEditor.pasteDropSelect")
|
|
218
|
+
},
|
|
203
219
|
minPreviewHeight: height - 10,
|
|
204
220
|
childProps: {
|
|
205
221
|
textArea: {
|
|
@@ -210,12 +226,12 @@ const MarkdownEditor = (props) => {
|
|
|
210
226
|
name,
|
|
211
227
|
onBlur: () => {
|
|
212
228
|
if (onTagsChange) {
|
|
213
|
-
onTagsChange(findTagMentions(value).map((
|
|
229
|
+
onTagsChange(findTagMentions(value).map((tag) => tag.slice(1)));
|
|
214
230
|
}
|
|
215
231
|
}
|
|
216
232
|
}
|
|
217
233
|
},
|
|
218
|
-
suggestionTriggerCharacters:
|
|
234
|
+
suggestionTriggerCharacters: suggestionChars,
|
|
219
235
|
loadSuggestions,
|
|
220
236
|
suggestionsAutoplace: true,
|
|
221
237
|
generateMarkdownPreview: (content) => Promise.resolve(
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownEditor.esm.js","sources":["../../../src/components/MarkdownEditor/MarkdownEditor.tsx"],"sourcesContent":["/* eslint-disable no-console */\nimport { useState } from 'react';\nimport ReactMde from 'react-mde';\nimport 'react-mde/lib/styles/css/react-mde.css';\nimport 'react-mde/lib/styles/css/react-mde-editor.css';\nimport 'react-mde/lib/styles/css/react-mde-toolbar.css';\nimport { configApiRef, errorApiRef, useApi } from '@backstage/core-plugin-api';\nimport { qetaApiRef } from '../../api';\nimport { MarkdownRenderer } from '../MarkdownRenderer';\nimport { imageUpload } from '../../utils';\nimport { makeStyles } from '@material-ui/core';\nimport { catalogApiRef } from '@backstage/plugin-catalog-react';\nimport {\n Entity,\n GroupEntity,\n stringifyEntityRef,\n UserEntity,\n} from '@backstage/catalog-model';\nimport { findTagMentions } from '@drodil/backstage-plugin-qeta-common';\n\nexport type QetaMarkdownEditorClassKey =\n | 'markdownEditor'\n | 'markdownEditorError'\n | 'markdownPreview'\n | 'suggestionsDropdown';\n\nexport const useStyles = makeStyles(\n theme => {\n return {\n markdownEditor: {\n backgroundColor: 'initial',\n color: theme.palette.text.primary,\n border: `1px solid ${theme.palette.action.disabled}`,\n borderRadius: theme.shape.borderRadius,\n '&:hover': {\n borderColor: theme.palette.action.active,\n },\n '&:focus-within': {\n borderColor: theme.palette.primary.main,\n },\n '& .mde-header': {\n backgroundColor: 'initial',\n color: theme.palette.text.primary,\n borderBottom: `1px solid ${theme.palette.action.selected}`,\n '& .mde-tabs button, .mde-header-item > button': {\n color: `${theme.palette.text.primary} !important`,\n },\n },\n '& .mde-preview-content': {\n padding: '10px',\n },\n '& .mde-text, .mde-preview': {\n fontSize: theme.typography.body1.fontSize,\n fontFamily: theme.typography.body1.fontFamily,\n lineHeight: theme.typography.body1.lineHeight,\n },\n '& .mde-text': {\n backgroundColor: 'initial',\n color: theme.palette.text.primary,\n outline: 'none',\n },\n '& .image-tip': {\n color: theme.palette.text.primary,\n backgroundColor: 'initial',\n },\n },\n markdownEditorError: {\n border: `1px solid ${theme.palette.error.main} !important`,\n },\n markdownPreview: {\n '& *': {\n wordBreak: 'break-word',\n },\n '&.inline': {\n display: 'inline-block',\n },\n '& > :first-child': {\n marginTop: '0px !important',\n },\n '& > :last-child': {\n marginBottom: '0px !important',\n },\n },\n suggestionsDropdown: {\n position: 'absolute',\n minWidth: '180px',\n margin: '20px 0 0',\n listStyle: 'none',\n padding: '0',\n cursor: 'pointer',\n background: theme.palette.background.paper,\n border: `1px solid ${theme.palette.divider}`,\n borderRadius: theme.shape.borderRadius,\n '& li': {\n width: '100%',\n padding: '0.5rem',\n '&:hover': {\n backgroundColor: theme.palette.action.hover,\n },\n },\n },\n hide: {\n display: 'none',\n },\n };\n },\n { name: 'QetaMarkdownEditor' },\n);\n\nexport type MarkdownEditorProps = {\n value: string;\n onChange: (value: string) => void;\n onTagsChange?: (tags: string[]) => void;\n height: number;\n name?: string;\n error?: boolean;\n placeholder?: string;\n onImageUpload?: (imageId: number) => void;\n disableToolbar?: boolean;\n disableAttachments?: boolean;\n disablePreview?: boolean;\n postId?: number;\n disabled?: boolean;\n answerId?: number;\n collectionId?: number;\n autoFocus?: boolean;\n required?: boolean;\n};\n\nconst NO_SUGGESTIONS = [{ preview: 'No suggestions', value: '' }];\n\nexport const MarkdownEditor = (props: MarkdownEditorProps) => {\n const {\n value,\n onChange,\n height,\n disabled,\n error,\n placeholder,\n disableAttachments,\n onTagsChange,\n name,\n disableToolbar,\n disablePreview,\n postId,\n answerId,\n collectionId,\n autoFocus,\n required = true,\n } = props;\n const [selectedTab, setSelectedTab] = useState<'write' | 'preview'>('write');\n const styles = useStyles();\n const errorApi = useApi(errorApiRef);\n const qetaApi = useApi(qetaApiRef);\n const catalogApi = useApi(catalogApiRef);\n const config = useApi(configApiRef);\n\n // Get the enabled mention types from the configuration,\n // defaulting to 'user' if not specified, to keep the current behavior.\n const enabledMentionTypes = config.getOptionalStringArray(\n 'qeta.mentions.supportedKinds',\n ) || ['user'];\n\n const loadEntitySuggestions = async (text: string) => {\n const supportedKinds = ['user', 'group'] as const;\n // Filter the supported kinds based on the enabled mention types\n // to ensure we only query for the kinds that are enabled.\n const enabledKinds = supportedKinds.filter(kind =>\n enabledMentionTypes.includes(kind.toLowerCase()),\n );\n if (!text) {\n return NO_SUGGESTIONS;\n }\n const entities = await catalogApi.queryEntities({\n filter: { kind: enabledKinds },\n limit: 5,\n fullTextFilter: {\n term: text,\n fields: [\n 'metadata.name',\n 'metadata.title',\n 'spec.profile.displayName',\n 'spec.profile.email',\n ],\n },\n });\n\n if (entities.items.length === 0) {\n return NO_SUGGESTIONS;\n }\n\n return entities.items.map(entity => {\n const mentionEntity = entity as Entity & (UserEntity | GroupEntity);\n return {\n preview:\n mentionEntity.spec?.profile?.displayName ??\n mentionEntity.metadata.title ??\n mentionEntity.metadata.name,\n value: `@${stringifyEntityRef(entity)}`,\n };\n });\n };\n\n const loadTagSuggestions = async (text: string) => {\n if (!text) {\n return NO_SUGGESTIONS;\n }\n const tags = await qetaApi.getTags({ searchQuery: text });\n if (tags.tags.length === 0) {\n return NO_SUGGESTIONS;\n }\n return tags.tags.map(tag => {\n return {\n preview: tag.tag,\n value: `#${tag.tag}`,\n };\n });\n };\n\n const loadSuggestions = async (text: string, triggeredBy: string) => {\n if (!text || !triggeredBy) {\n return NO_SUGGESTIONS;\n }\n if (triggeredBy === '@') {\n return loadEntitySuggestions(text);\n }\n if (triggeredBy === '#') {\n return loadTagSuggestions(text);\n }\n return NO_SUGGESTIONS;\n };\n\n const isUploadDisabled =\n config?.getOptionalBoolean('qeta.storage.disabled') ||\n disableAttachments ||\n false;\n\n return (\n <ReactMde\n classes={{\n reactMde: `qetaMarkdownEditorEdit ${styles.markdownEditor}`,\n textArea: error\n ? `qetaMarkdownEditorError ${styles.markdownEditorError}`\n : undefined,\n preview: 'qetaMarkdownEditorPreview',\n toolbar: `${\n disableToolbar ? styles.hide : ''\n } qetaMarkdownEditorToolbar`,\n suggestionsDropdown: styles.suggestionsDropdown,\n }}\n disablePreview={disablePreview}\n value={value}\n onChange={onChange}\n selectedTab={selectedTab}\n onTabChange={setSelectedTab}\n minEditorHeight={height}\n minPreviewHeight={height - 10}\n childProps={{\n textArea: {\n required,\n placeholder,\n disabled,\n autoFocus,\n name,\n onBlur: () => {\n if (onTagsChange) {\n onTagsChange(findTagMentions(value).map(t => t.slice(1)));\n }\n },\n },\n }}\n suggestionTriggerCharacters={['@', '#']}\n loadSuggestions={loadSuggestions}\n suggestionsAutoplace\n generateMarkdownPreview={content =>\n Promise.resolve(\n <MarkdownRenderer\n content={content}\n className={`qetaMarkdownEditorPreview ${styles.markdownPreview}`}\n useBlankLinks\n />,\n )\n }\n paste={\n isUploadDisabled\n ? undefined\n : {\n saveImage: imageUpload({\n qetaApi,\n errorApi,\n onImageUpload: props.onImageUpload,\n postId,\n answerId,\n collectionId,\n }),\n }\n }\n />\n );\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MarkdownEditor.esm.js","sources":["../../../src/components/MarkdownEditor/MarkdownEditor.tsx"],"sourcesContent":["/* eslint-disable no-console */\nimport { useState } from 'react';\nimport ReactMde from 'react-mde';\nimport 'react-mde/lib/styles/css/react-mde.css';\nimport 'react-mde/lib/styles/css/react-mde-editor.css';\nimport 'react-mde/lib/styles/css/react-mde-toolbar.css';\nimport { configApiRef, errorApiRef, useApi } from '@backstage/core-plugin-api';\nimport { qetaApiRef } from '../../api';\nimport { MarkdownRenderer } from '../MarkdownRenderer';\nimport { imageUpload } from '../../utils';\nimport { makeStyles } from '@material-ui/core';\nimport { catalogApiRef } from '@backstage/plugin-catalog-react';\nimport {\n Entity,\n GroupEntity,\n stringifyEntityRef,\n UserEntity,\n} from '@backstage/catalog-model';\nimport { findTagMentions } from '@drodil/backstage-plugin-qeta-common';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { qetaTranslationRef } from '../../translation.ts';\n\nexport type QetaMarkdownEditorClassKey =\n | 'markdownEditor'\n | 'markdownEditorError'\n | 'markdownPreview'\n | 'suggestionsDropdown';\n\nexport const useStyles = makeStyles(\n theme => {\n return {\n markdownEditor: {\n backgroundColor: 'initial',\n color: theme.palette.text.primary,\n border: `1px solid ${theme.palette.action.disabled}`,\n borderRadius: theme.shape.borderRadius,\n '&:hover': {\n borderColor: theme.palette.action.active,\n },\n '&:focus-within': {\n borderColor: theme.palette.primary.main,\n },\n '& .mde-header': {\n backgroundColor: 'initial',\n color: theme.palette.text.primary,\n borderBottom: `1px solid ${theme.palette.action.selected}`,\n '& .mde-tabs button, .mde-header-item > button': {\n color: `${theme.palette.text.primary} !important`,\n },\n },\n '& .mde-preview-content': {\n padding: '10px',\n },\n '& .mde-text, .mde-preview': {\n fontSize: theme.typography.body1.fontSize,\n fontFamily: theme.typography.body1.fontFamily,\n lineHeight: theme.typography.body1.lineHeight,\n },\n '& .mde-text': {\n backgroundColor: 'initial',\n color: theme.palette.text.primary,\n outline: 'none',\n },\n '& .image-tip': {\n color: theme.palette.text.primary,\n backgroundColor: 'initial',\n },\n },\n markdownEditorError: {\n border: `1px solid ${theme.palette.error.main} !important`,\n },\n markdownPreview: {\n '& *': {\n wordBreak: 'break-word',\n },\n '&.inline': {\n display: 'inline-block',\n },\n '& > :first-child': {\n marginTop: '0px !important',\n },\n '& > :last-child': {\n marginBottom: '0px !important',\n },\n },\n suggestionsDropdown: {\n position: 'absolute',\n minWidth: '180px',\n margin: '20px 0 0',\n listStyle: 'none',\n padding: '0',\n cursor: 'pointer',\n background: theme.palette.background.paper,\n border: `1px solid ${theme.palette.divider}`,\n borderRadius: theme.shape.borderRadius,\n '& li': {\n width: '100%',\n padding: '0.5rem',\n '&:hover': {\n backgroundColor: theme.palette.action.hover,\n },\n },\n },\n hide: {\n display: 'none',\n },\n };\n },\n { name: 'QetaMarkdownEditor' },\n);\n\nexport type MarkdownEditorProps = {\n value: string;\n onChange: (value: string) => void;\n onTagsChange?: (tags: string[]) => void;\n height: number;\n name?: string;\n error?: boolean;\n placeholder?: string;\n onImageUpload?: (imageId: number) => void;\n disableToolbar?: boolean;\n disableAttachments?: boolean;\n disablePreview?: boolean;\n postId?: number;\n disabled?: boolean;\n answerId?: number;\n collectionId?: number;\n autoFocus?: boolean;\n required?: boolean;\n};\n\nconst NO_SUGGESTIONS = [{ preview: 'No suggestions', value: '' }];\n\nexport const MarkdownEditor = (props: MarkdownEditorProps) => {\n const {\n value,\n onChange,\n height,\n disabled,\n error,\n placeholder,\n disableAttachments,\n onTagsChange,\n name,\n disableToolbar,\n disablePreview,\n postId,\n answerId,\n collectionId,\n autoFocus,\n required = true,\n } = props;\n const [selectedTab, setSelectedTab] = useState<'write' | 'preview'>('write');\n const styles = useStyles();\n const errorApi = useApi(errorApiRef);\n const qetaApi = useApi(qetaApiRef);\n const catalogApi = useApi(catalogApiRef);\n const config = useApi(configApiRef);\n const { t } = useTranslationRef(qetaTranslationRef);\n\n const supportedMentionKinds = config.getOptionalStringArray(\n 'qeta.mentions.supportedKinds',\n ) || ['user'];\n const enabledMentionKinds = supportedMentionKinds.filter(kind =>\n ['user', 'group'].includes(kind.toLowerCase()),\n );\n const maxTags = config.getOptionalNumber('qeta.tags.max') ?? 5;\n\n const suggestionChars: string[] = [];\n if (enabledMentionKinds.length > 0) {\n suggestionChars.push('@');\n }\n if (maxTags > 0) {\n suggestionChars.push('#');\n }\n\n const loadEntitySuggestions = async (text: string) => {\n if (!text) {\n return NO_SUGGESTIONS;\n }\n const entities = await catalogApi.queryEntities({\n filter: { kind: enabledMentionKinds },\n limit: 5,\n fullTextFilter: {\n term: text,\n fields: [\n 'metadata.name',\n 'metadata.title',\n 'spec.profile.displayName',\n 'spec.profile.email',\n ],\n },\n });\n\n if (entities.items.length === 0) {\n return NO_SUGGESTIONS;\n }\n\n return entities.items.map(entity => {\n const mentionEntity = entity as Entity & (UserEntity | GroupEntity);\n return {\n preview:\n mentionEntity.spec?.profile?.displayName ??\n mentionEntity.metadata.title ??\n mentionEntity.metadata.name,\n value: `@${stringifyEntityRef(entity)}`,\n };\n });\n };\n\n const loadTagSuggestions = async (text: string) => {\n if (!text) {\n return NO_SUGGESTIONS;\n }\n const tags = await qetaApi.getTags({ searchQuery: text });\n if (tags.tags.length === 0) {\n return NO_SUGGESTIONS;\n }\n return tags.tags.map(tag => {\n return {\n preview: tag.tag,\n value: `#${tag.tag}`,\n };\n });\n };\n\n const loadSuggestions = async (text: string, triggeredBy: string) => {\n if (!text || !triggeredBy) {\n return NO_SUGGESTIONS;\n }\n if (triggeredBy === '@') {\n return loadEntitySuggestions(text);\n }\n if (triggeredBy === '#') {\n return loadTagSuggestions(text);\n }\n return NO_SUGGESTIONS;\n };\n\n const isUploadDisabled =\n config?.getOptionalBoolean('qeta.storage.disabled') ||\n disableAttachments ||\n false;\n\n return (\n <ReactMde\n classes={{\n reactMde: `qetaMarkdownEditorEdit ${styles.markdownEditor}`,\n textArea: error\n ? `qetaMarkdownEditorError ${styles.markdownEditorError}`\n : undefined,\n preview: 'qetaMarkdownEditorPreview',\n toolbar: `${\n disableToolbar ? styles.hide : ''\n } qetaMarkdownEditorToolbar`,\n suggestionsDropdown: styles.suggestionsDropdown,\n }}\n disablePreview={disablePreview}\n value={value}\n onChange={onChange}\n selectedTab={selectedTab}\n onTabChange={setSelectedTab}\n minEditorHeight={height}\n l18n={{\n write: t('markdownEditor.write'),\n preview: t('markdownEditor.preview'),\n uploadingImage: t('markdownEditor.uploadingImage'),\n pasteDropSelect: t('markdownEditor.pasteDropSelect'),\n }}\n minPreviewHeight={height - 10}\n childProps={{\n textArea: {\n required,\n placeholder,\n disabled,\n autoFocus,\n name,\n onBlur: () => {\n if (onTagsChange) {\n onTagsChange(findTagMentions(value).map(tag => tag.slice(1)));\n }\n },\n },\n }}\n suggestionTriggerCharacters={suggestionChars}\n loadSuggestions={loadSuggestions}\n suggestionsAutoplace\n generateMarkdownPreview={content =>\n Promise.resolve(\n <MarkdownRenderer\n content={content}\n className={`qetaMarkdownEditorPreview ${styles.markdownPreview}`}\n useBlankLinks\n />,\n )\n }\n paste={\n isUploadDisabled\n ? undefined\n : {\n saveImage: imageUpload({\n qetaApi,\n errorApi,\n onImageUpload: props.onImageUpload,\n postId,\n answerId,\n collectionId,\n }),\n }\n }\n />\n );\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PostsContainer.esm.js","sources":["../../../src/components/PostsContainer/PostsContainer.tsx"],"sourcesContent":["import {\n CommonFilterPanelProps,\n FilterPanel,\n PostFilters,\n} from '../FilterPanel/FilterPanel';\nimport { PostList } from './PostList';\nimport { AskQuestionButton } from '../Buttons/AskQuestionButton';\nimport { EntityRefLink } from '@backstage/plugin-catalog-react';\nimport { TagFollowButton } from '../Buttons/TagFollowButton';\nimport { EntityFollowButton } from '../Buttons/EntityFollowButton';\nimport { WriteArticleButton } from '../Buttons';\nimport { ViewToggle, ViewType } from '../ViewToggle/ViewToggle';\nimport { capitalize } from 'lodash';\nimport {\n PaginatedPostsProps,\n usePaginatedPosts,\n} from '../../hooks/usePaginatedPosts';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { qetaTranslationRef } from '../../translation.ts';\nimport { SearchBar } from '../SearchBar/SearchBar';\nimport { Box, Button, Collapse, Grid, Typography } from '@material-ui/core';\nimport FilterList from '@material-ui/icons/FilterList';\n\nexport const PostsContainer = (\n props: PaginatedPostsProps & {\n entity?: string;\n filterPanelProps?: CommonFilterPanelProps;\n showTypeLabel?: boolean;\n view?: ViewType;\n onViewChange?: (view: ViewType) => void;\n },\n) => {\n const {\n type,\n tags,\n author,\n entity,\n showFilters,\n showTitle,\n title,\n favorite,\n showAskButton,\n showWriteButton,\n showNoQuestionsBtn,\n showTypeLabel,\n view,\n onViewChange,\n } = props;\n const {\n onSearchQueryChange,\n filters,\n response,\n loading,\n error,\n setShowFilterPanel,\n showFilterPanel,\n onFilterChange,\n onPageChange,\n onPageSizeChange,\n page,\n postsPerPage,\n pageCount,\n } = usePaginatedPosts(props);\n const { t } = useTranslationRef(qetaTranslationRef);\n\n const itemType = capitalize(t(`common.${type ?? 'post'}`, {}));\n let shownTitle = title;\n let link = undefined;\n let btn = undefined;\n if (author) {\n shownTitle = t(`postsContainer.title.by`, { itemType });\n link = <EntityRefLink entityRef={author} hideIcon defaultKind=\"user\" />;\n } else if (entity) {\n shownTitle = t(`postsContainer.title.about`, { itemType });\n link = <EntityRefLink entityRef={entity} />;\n btn = <EntityFollowButton entityRef={entity} />;\n } else if (tags) {\n shownTitle = `#${tags.join(', #')}`;\n if (tags.length === 1) {\n btn = <TagFollowButton tag={tags[0]} />;\n }\n } else if (favorite) {\n shownTitle = t('postsContainer.title.favorite', {\n itemType: itemType.toLowerCase(),\n });\n }\n\n return (\n <Box className=\"qetaPostsContainer\">\n {showTitle && (\n <Box mb={3}>\n <Grid container alignItems=\"center\" justifyContent=\"space-between\">\n <Grid item>\n <Typography\n variant=\"h5\"\n className=\"qetaPostsContainerTitle\"\n style={{ fontWeight: 500, paddingBottom: 2 }}\n >\n {shownTitle} {link} {btn}\n </Typography>\n </Grid>\n <Grid item>\n {showAskButton && (\n <AskQuestionButton\n entity={entity ?? filters.entity}\n entityPage={entity !== undefined}\n tags={tags}\n />\n )}\n {showWriteButton && (\n <WriteArticleButton\n entity={entity ?? filters.entity}\n entityPage={entity !== undefined}\n tags={tags}\n />\n )}\n </Grid>\n </Grid>\n </Box>\n )}\n <Grid container alignItems=\"flex-end\" justifyContent=\"space-between\">\n <Grid item xs={12} md={4}>\n <SearchBar\n onSearch={onSearchQueryChange}\n label={t('postsContainer.search.label', {\n itemType: itemType.toLowerCase(),\n })}\n loading={loading}\n />\n </Grid>\n </Grid>\n {response && (\n <Box mt={2} mb={2}>\n <Grid container alignItems=\"center\" justifyContent=\"space-between\">\n <Grid item>\n <Typography\n variant=\"h6\"\n className=\"qetaPostsContainerQuestionCount\"\n style={{ fontWeight: 500, paddingBottom: 2 }}\n >\n {t('common.posts', { count: response?.total ?? 0, itemType })}\n </Typography>\n </Grid>\n <Grid item>\n <Grid container spacing={1} alignItems=\"center\">\n {view && onViewChange && (\n <Grid item>\n <ViewToggle view={view} onChange={onViewChange} />\n </Grid>\n )}\n {(showFilters ?? true) && (\n <Grid item>\n <Button\n onClick={() => {\n setShowFilterPanel(!showFilterPanel);\n }}\n className=\"qetaPostsContainerFilterPanelBtn\"\n startIcon={<FilterList />}\n >\n {t('filterPanel.filterButton')}\n </Button>\n </Grid>\n )}\n </Grid>\n </Grid>\n </Grid>\n </Box>\n )}\n {(showFilters ?? true) && (\n <Collapse in={showFilterPanel}>\n <FilterPanel<PostFilters>\n onChange={onFilterChange}\n filters={filters}\n type={type}\n showEntityFilter={entity === undefined}\n {...props.filterPanelProps}\n />\n </Collapse>\n )}\n <PostList\n loading={loading}\n error={error}\n response={response}\n onPageChange={onPageChange}\n onPageSizeChange={onPageSizeChange}\n entity={entity ?? filters.entity}\n page={page}\n pageSize={postsPerPage}\n pageCount={pageCount}\n showNoQuestionsBtn={showNoQuestionsBtn}\n entityPage={entity !== undefined}\n tags={tags ?? filters.tags}\n type={type}\n showTypeLabel={showTypeLabel}\n />\n </Box>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PostsContainer.esm.js","sources":["../../../src/components/PostsContainer/PostsContainer.tsx"],"sourcesContent":["import {\n CommonFilterPanelProps,\n FilterPanel,\n PostFilters,\n} from '../FilterPanel/FilterPanel';\nimport { PostList } from './PostList';\nimport { AskQuestionButton } from '../Buttons/AskQuestionButton';\nimport { EntityRefLink } from '@backstage/plugin-catalog-react';\nimport { TagFollowButton } from '../Buttons/TagFollowButton';\nimport { EntityFollowButton } from '../Buttons/EntityFollowButton';\nimport { WriteArticleButton } from '../Buttons';\nimport { ViewToggle, ViewType } from '../ViewToggle/ViewToggle';\nimport { capitalize } from 'lodash';\nimport {\n PaginatedPostsProps,\n usePaginatedPosts,\n} from '../../hooks/usePaginatedPosts';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { qetaTranslationRef } from '../../translation.ts';\nimport { SearchBar } from '../SearchBar/SearchBar';\nimport { Box, Button, Collapse, Grid, Typography } from '@material-ui/core';\nimport FilterList from '@material-ui/icons/FilterList';\n\nexport type PostsContainerProps = PaginatedPostsProps & {\n entity?: string;\n filterPanelProps?: CommonFilterPanelProps;\n showTypeLabel?: boolean;\n view?: ViewType;\n onViewChange?: (view: ViewType) => void;\n};\n\nexport const PostsContainer = (props: PostsContainerProps) => {\n const {\n type,\n tags,\n author,\n entity,\n showFilters,\n showTitle,\n title,\n favorite,\n showAskButton,\n showWriteButton,\n showNoQuestionsBtn,\n showTypeLabel,\n view,\n onViewChange,\n } = props;\n const {\n onSearchQueryChange,\n filters,\n response,\n loading,\n error,\n setShowFilterPanel,\n showFilterPanel,\n onFilterChange,\n onPageChange,\n onPageSizeChange,\n page,\n postsPerPage,\n pageCount,\n } = usePaginatedPosts(props);\n const { t } = useTranslationRef(qetaTranslationRef);\n\n const itemType = capitalize(t(`common.${type ?? 'post'}`, {}));\n let shownTitle = title;\n let link = undefined;\n let btn = undefined;\n if (author) {\n shownTitle = t(`postsContainer.title.by`, { itemType });\n link = <EntityRefLink entityRef={author} hideIcon defaultKind=\"user\" />;\n } else if (entity) {\n shownTitle = t(`postsContainer.title.about`, { itemType });\n link = <EntityRefLink entityRef={entity} />;\n btn = <EntityFollowButton entityRef={entity} />;\n } else if (tags) {\n shownTitle = `#${tags.join(', #')}`;\n if (tags.length === 1) {\n btn = <TagFollowButton tag={tags[0]} />;\n }\n } else if (favorite) {\n shownTitle = t('postsContainer.title.favorite', {\n itemType: itemType.toLowerCase(),\n });\n }\n\n return (\n <Box className=\"qetaPostsContainer\">\n {showTitle && (\n <Box mb={3}>\n <Grid container alignItems=\"center\" justifyContent=\"space-between\">\n <Grid item>\n <Typography\n variant=\"h5\"\n className=\"qetaPostsContainerTitle\"\n style={{ fontWeight: 500, paddingBottom: 2 }}\n >\n {shownTitle} {link} {btn}\n </Typography>\n </Grid>\n <Grid item>\n {showAskButton && (\n <AskQuestionButton\n entity={entity ?? filters.entity}\n entityPage={entity !== undefined}\n tags={tags}\n />\n )}\n {showWriteButton && (\n <WriteArticleButton\n entity={entity ?? filters.entity}\n entityPage={entity !== undefined}\n tags={tags}\n />\n )}\n </Grid>\n </Grid>\n </Box>\n )}\n <Grid container alignItems=\"flex-end\" justifyContent=\"space-between\">\n <Grid item xs={12} md={4}>\n <SearchBar\n onSearch={onSearchQueryChange}\n label={t('postsContainer.search.label', {\n itemType: itemType.toLowerCase(),\n })}\n loading={loading}\n />\n </Grid>\n </Grid>\n {response && (\n <Box mt={2} mb={2}>\n <Grid container alignItems=\"center\" justifyContent=\"space-between\">\n <Grid item>\n <Typography\n variant=\"h6\"\n className=\"qetaPostsContainerQuestionCount\"\n style={{ fontWeight: 500, paddingBottom: 2 }}\n >\n {t('common.posts', { count: response?.total ?? 0, itemType })}\n </Typography>\n </Grid>\n <Grid item>\n <Grid container spacing={1} alignItems=\"center\">\n {view && onViewChange && (\n <Grid item>\n <ViewToggle view={view} onChange={onViewChange} />\n </Grid>\n )}\n {(showFilters ?? true) && (\n <Grid item>\n <Button\n onClick={() => {\n setShowFilterPanel(!showFilterPanel);\n }}\n className=\"qetaPostsContainerFilterPanelBtn\"\n startIcon={<FilterList />}\n >\n {t('filterPanel.filterButton')}\n </Button>\n </Grid>\n )}\n </Grid>\n </Grid>\n </Grid>\n </Box>\n )}\n {(showFilters ?? true) && (\n <Collapse in={showFilterPanel}>\n <FilterPanel<PostFilters>\n onChange={onFilterChange}\n filters={filters}\n type={type}\n showEntityFilter={entity === undefined}\n {...props.filterPanelProps}\n />\n </Collapse>\n )}\n <PostList\n loading={loading}\n error={error}\n response={response}\n onPageChange={onPageChange}\n onPageSizeChange={onPageSizeChange}\n entity={entity ?? filters.entity}\n page={page}\n pageSize={postsPerPage}\n pageCount={pageCount}\n showNoQuestionsBtn={showNoQuestionsBtn}\n entityPage={entity !== undefined}\n tags={tags ?? filters.tags}\n type={type}\n showTypeLabel={showTypeLabel}\n />\n </Box>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QetaGridHeader.esm.js","sources":["../../../src/components/Utility/QetaGridHeader.tsx"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"QetaGridHeader.esm.js","sources":["../../../src/components/Utility/QetaGridHeader.tsx"],"sourcesContent":["import { Box, Grid, Typography } from '@material-ui/core';\nimport { SearchBar } from '../SearchBar/SearchBar';\n\nexport type QetaGridHeaderProps = {\n title: React.ReactNode;\n searchBarLabel: string;\n loading: boolean;\n onSearch: (val: string) => void;\n buttons?: React.ReactNode;\n};\n\nexport const QetaGridHeader = ({\n title,\n searchBarLabel,\n loading,\n onSearch,\n buttons,\n}: QetaGridHeaderProps) => {\n return (\n <Box mb={3}>\n <Grid container alignItems=\"flex-end\" justifyContent=\"space-between\">\n <Grid item xs={12} md={4}>\n <SearchBar\n onSearch={onSearch}\n label={searchBarLabel}\n loading={loading}\n />\n </Grid>\n </Grid>\n <Box mt={2} mb={2}>\n <Grid container alignItems=\"center\" justifyContent=\"space-between\">\n <Grid item>\n {!loading && (\n <Typography\n variant=\"h6\"\n style={{ fontWeight: 500, paddingBottom: 2 }}\n >\n {title}\n </Typography>\n )}\n </Grid>\n {buttons && <Grid item>{buttons}</Grid>}\n </Grid>\n </Box>\n </Box>\n );\n};\n"],"names":[],"mappings":";;;;AAWO,MAAM,iBAAiB,CAAC;AAAA,EAC7B,KAAA;AAAA,EACA,cAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAA2B,KAAA;AACzB,EACE,uBAAA,IAAA,CAAC,GAAI,EAAA,EAAA,EAAA,EAAI,CACP,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,IAAK,EAAA,EAAA,SAAA,EAAS,IAAC,EAAA,UAAA,EAAW,YAAW,cAAe,EAAA,eAAA,EACnD,QAAC,kBAAA,GAAA,CAAA,IAAA,EAAA,EAAK,IAAI,EAAA,IAAA,EAAC,EAAI,EAAA,EAAA,EAAI,IAAI,CACrB,EAAA,QAAA,kBAAA,GAAA;AAAA,MAAC,SAAA;AAAA,MAAA;AAAA,QACC,QAAA;AAAA,QACA,KAAO,EAAA,cAAA;AAAA,QACP;AAAA;AAAA,OAEJ,CACF,EAAA,CAAA;AAAA,oBACC,GAAA,CAAA,GAAA,EAAA,EAAI,EAAI,EAAA,CAAA,EAAG,EAAI,EAAA,CAAA,EACd,QAAC,kBAAA,IAAA,CAAA,IAAA,EAAA,EAAK,SAAS,EAAA,IAAA,EAAC,UAAW,EAAA,QAAA,EAAS,gBAAe,eACjD,EAAA,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,IAAK,EAAA,EAAA,IAAA,EAAI,IACP,EAAA,QAAA,EAAA,CAAC,OACA,oBAAA,GAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UACC,OAAQ,EAAA,IAAA;AAAA,UACR,KAAO,EAAA,EAAE,UAAY,EAAA,GAAA,EAAK,eAAe,CAAE,EAAA;AAAA,UAE1C,QAAA,EAAA;AAAA;AAAA,OAGP,EAAA,CAAA;AAAA,MACC,OAAW,oBAAA,GAAA,CAAC,IAAK,EAAA,EAAA,IAAA,EAAI,MAAE,QAAQ,EAAA,OAAA,EAAA;AAAA,KAAA,EAClC,CACF,EAAA;AAAA,GACF,EAAA,CAAA;AAEJ;;;;"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
1
|
import { useState, useEffect } from 'react';
|
|
3
2
|
import { useAnalytics, useApi } from '@backstage/core-plugin-api';
|
|
4
3
|
import { qetaApiRef } from '../api.esm.js';
|
|
@@ -10,10 +9,8 @@ function isPostResponse(resp) {
|
|
|
10
9
|
return "title" in resp;
|
|
11
10
|
}
|
|
12
11
|
function useVoting(resp) {
|
|
13
|
-
const [entity, setEntity] =
|
|
14
|
-
|
|
15
|
-
);
|
|
16
|
-
const [ownVote, setOwnVote] = React.useState(entity.ownVote ?? 0);
|
|
12
|
+
const [entity, setEntity] = useState(resp);
|
|
13
|
+
const [ownVote, setOwnVote] = useState(entity.ownVote ?? 0);
|
|
17
14
|
const [correctAnswer, setCorrectAnswer] = useState(
|
|
18
15
|
"postId" in entity ? entity.correct : false
|
|
19
16
|
);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useVoting.esm.js","sources":["../../src/hooks/useVoting.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"useVoting.esm.js","sources":["../../src/hooks/useVoting.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport { useAnalytics, useApi } from '@backstage/core-plugin-api';\nimport { qetaApiRef } from '../api';\nimport { useSignal } from '@backstage/plugin-signals-react';\nimport {\n AnswerResponse,\n PostResponse,\n QetaSignal,\n} from '@drodil/backstage-plugin-qeta-common';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { qetaTranslationRef } from '../translation.ts';\n\nfunction isPostResponse(\n resp: PostResponse | AnswerResponse,\n): resp is PostResponse {\n return 'title' in resp;\n}\n\nexport function useVoting(resp: PostResponse | AnswerResponse) {\n const [entity, setEntity] = useState<PostResponse | AnswerResponse>(resp);\n const [ownVote, setOwnVote] = useState(entity.ownVote ?? 0);\n const [correctAnswer, setCorrectAnswer] = useState(\n 'postId' in entity ? entity.correct : false,\n );\n const [score, setScore] = useState(entity.score);\n const analytics = useAnalytics();\n const qetaApi = useApi(qetaApiRef);\n const { t } = useTranslationRef(qetaTranslationRef);\n\n const isPost = isPostResponse(resp);\n const own = entity.own ?? false;\n\n const { lastSignal } = useSignal<QetaSignal>(\n isPost ? `qeta:post_${entity.id}` : `qeta:answer_${entity.id}`,\n );\n\n useEffect(() => {\n if (entity) {\n setScore(entity.score);\n }\n }, [entity]);\n\n useEffect(() => {\n if (\n lastSignal?.type === 'post_stats' ||\n lastSignal?.type === 'answer_stats'\n ) {\n setCorrectAnswer(lastSignal.correctAnswer);\n setScore(lastSignal.score);\n }\n }, [lastSignal]);\n\n const deletePostVote = (id: number) => {\n qetaApi.deletePostVote(id).then(response => {\n setOwnVote(0);\n analytics.captureEvent('vote', 'question', { value: 0 });\n setEntity(response);\n });\n };\n\n const deleteAnswerVote = (postId: number, id: number) => {\n qetaApi.deleteAnswerVote(postId, id).then(response => {\n setOwnVote(0);\n analytics.captureEvent('vote', 'answer', { value: 0 });\n setEntity(response);\n });\n };\n\n const voteUp = () => {\n if (isPost) {\n if (ownVote > 0) {\n deletePostVote(entity.id);\n return;\n }\n qetaApi.votePostUp(entity.id).then(response => {\n setOwnVote(1);\n analytics.captureEvent('vote', 'question', { value: 1 });\n setEntity(response);\n });\n } else if ('postId' in entity) {\n if (ownVote > 0) {\n deleteAnswerVote(entity.postId, entity.id);\n return;\n }\n qetaApi.voteAnswerUp(entity.postId, entity.id).then(response => {\n setOwnVote(1);\n analytics.captureEvent('vote', 'answer', { value: 1 });\n setEntity(response);\n });\n }\n };\n\n const voteDown = () => {\n if (isPost) {\n if (ownVote < 0) {\n deletePostVote(entity.id);\n return;\n }\n qetaApi.votePostDown(entity.id).then(response => {\n setOwnVote(-1);\n analytics.captureEvent('vote', 'question', { value: -1 });\n setEntity(response);\n });\n } else if ('postId' in entity) {\n if (ownVote < 0) {\n deleteAnswerVote(entity.postId, entity.id);\n return;\n }\n qetaApi.voteAnswerDown(entity.postId, entity.id).then(response => {\n setOwnVote(-1);\n analytics.captureEvent('vote', 'answer', { value: -1 });\n setEntity(response);\n });\n }\n };\n\n let correctTooltip: string = correctAnswer\n ? t('voteButtons.answer.markIncorrect')\n : t('voteButtons.answer.markCorrect');\n if (own) {\n correctTooltip = correctAnswer ? t('voteButtons.answer.marked') : '';\n }\n\n let voteUpTooltip: string = isPost\n ? t('voteButtons.post.good', { type: resp.type })\n : t('voteButtons.answer.good');\n if (own) {\n voteUpTooltip = isPost\n ? t('voteButtons.post.own', { type: resp.type })\n : t('voteButtons.answer.own');\n }\n\n let voteDownTooltip: string = isPost\n ? t('voteButtons.post.bad', { type: resp.type })\n : t('voteButtons.answer.bad');\n if (own) {\n voteDownTooltip = voteUpTooltip;\n }\n\n const toggleCorrectAnswer = () => {\n if (!('postId' in entity)) {\n return;\n }\n if (correctAnswer) {\n qetaApi.markAnswerIncorrect(entity.postId, entity.id).then(response => {\n if (response) {\n setCorrectAnswer(false);\n }\n });\n } else {\n qetaApi.markAnswerCorrect(entity.postId, entity.id).then(response => {\n if (response) {\n setCorrectAnswer(true);\n }\n });\n }\n };\n\n return {\n entity,\n ownVote,\n correctAnswer,\n score,\n voteUp,\n voteDown,\n toggleCorrectAnswer,\n voteUpTooltip,\n voteDownTooltip,\n correctTooltip,\n };\n}\n"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -125,13 +125,14 @@ type PaginatedPostsProps = PostFilters & {
|
|
|
125
125
|
status?: PostStatus;
|
|
126
126
|
};
|
|
127
127
|
|
|
128
|
-
|
|
128
|
+
type PostsContainerProps = PaginatedPostsProps & {
|
|
129
129
|
entity?: string;
|
|
130
130
|
filterPanelProps?: CommonFilterPanelProps;
|
|
131
131
|
showTypeLabel?: boolean;
|
|
132
132
|
view?: ViewType;
|
|
133
133
|
onViewChange?: (view: ViewType) => void;
|
|
134
|
-
}
|
|
134
|
+
};
|
|
135
|
+
declare const PostsContainer: (props: PostsContainerProps) => react_jsx_runtime.JSX.Element;
|
|
135
136
|
|
|
136
137
|
declare const PostList: (props: {
|
|
137
138
|
loading: boolean;
|
|
@@ -507,12 +508,6 @@ declare const useAI: () => {
|
|
|
507
508
|
|
|
508
509
|
/** @alpha */
|
|
509
510
|
declare const qetaTranslationRef: _backstage_core_plugin_api_alpha.TranslationRef<"qeta", {
|
|
510
|
-
readonly "code.aria": "Copy code to clipboard";
|
|
511
|
-
readonly "code.copied": "Code copied to clipboard";
|
|
512
|
-
readonly "link.post": "Copy link to this post to clipboard";
|
|
513
|
-
readonly "link.answer": "Copy link to this answer to clipboard";
|
|
514
|
-
readonly "link.aria": "Copy link to clipboard";
|
|
515
|
-
readonly "link.copied": "Link copied to clipboard";
|
|
516
511
|
readonly "statistics.ranking": "User ranking 🏆";
|
|
517
512
|
readonly "statistics.errorLoading": "Could not load statistics";
|
|
518
513
|
readonly "statistics.notAvailable": "Statistics are unavailable";
|
|
@@ -534,19 +529,25 @@ declare const qetaTranslationRef: _backstage_core_plugin_api_alpha.TranslationRe
|
|
|
534
529
|
readonly "ranking.bottom": "Rank this question to the bottom in this collection";
|
|
535
530
|
readonly "ranking.up": "Rank this question up in this collection";
|
|
536
531
|
readonly "ranking.down": "Rank this question down in this collection";
|
|
532
|
+
readonly "code.aria": "Copy code to clipboard";
|
|
533
|
+
readonly "code.copied": "Code copied to clipboard";
|
|
534
|
+
readonly "link.post": "Copy link to this post to clipboard";
|
|
535
|
+
readonly "link.answer": "Copy link to this answer to clipboard";
|
|
536
|
+
readonly "link.aria": "Copy link to clipboard";
|
|
537
|
+
readonly "link.copied": "Link copied to clipboard";
|
|
537
538
|
readonly pluginName: "Q&A";
|
|
538
539
|
readonly "answerList.noAnswers": "No answers";
|
|
539
540
|
readonly "answerList.errorLoading": "Could not load answers";
|
|
540
541
|
readonly "answerList.limitSelect": "Answers per page";
|
|
541
|
-
readonly "common.article": "article";
|
|
542
|
-
readonly "common.search": "Search";
|
|
543
542
|
readonly "common.post": "post";
|
|
544
543
|
readonly "common.collection": "collection";
|
|
545
544
|
readonly "common.question": "question";
|
|
545
|
+
readonly "common.article": "article";
|
|
546
546
|
readonly "common.draft": "Draft";
|
|
547
547
|
readonly "common.deleted": "Deleted";
|
|
548
548
|
readonly "common.score": "{{score}} score";
|
|
549
549
|
readonly "common.answers": "answers";
|
|
550
|
+
readonly "common.search": "Search";
|
|
550
551
|
readonly "common.experts": "Experts";
|
|
551
552
|
readonly "common.tagExpert": "This user is an expert in this area";
|
|
552
553
|
readonly "common.comments": "Comments";
|
|
@@ -582,6 +583,10 @@ declare const qetaTranslationRef: _backstage_core_plugin_api_alpha.TranslationRe
|
|
|
582
583
|
readonly "common.followers_other": "{{count}} followers";
|
|
583
584
|
readonly "common.unsaved_changes": "You have unsaved changes. Are you sure you want to leave?";
|
|
584
585
|
readonly "common.loading": "Loading...";
|
|
586
|
+
readonly "markdownEditor.write": "Write";
|
|
587
|
+
readonly "markdownEditor.preview": "Preview";
|
|
588
|
+
readonly "markdownEditor.uploadingImage": "Uploading image...";
|
|
589
|
+
readonly "markdownEditor.pasteDropSelect": "Paste, drop or select an image";
|
|
585
590
|
readonly "answerContainer.search.label": "Search answer";
|
|
586
591
|
readonly "answerContainer.search.placeholder": "Search...";
|
|
587
592
|
readonly "answerContainer.title.answersBy": "Answers by";
|
|
@@ -592,9 +597,9 @@ declare const qetaTranslationRef: _backstage_core_plugin_api_alpha.TranslationRe
|
|
|
592
597
|
readonly "anonymousCheckbox.postAnonymously": "Post anonymously";
|
|
593
598
|
readonly "anonymousCheckbox.info": "Your name will not be shown to others.";
|
|
594
599
|
readonly "fileInput.label": "Header image";
|
|
600
|
+
readonly "fileInput.preview": "Preview image";
|
|
595
601
|
readonly "fileInput.helperText": "URL of the header image to be used";
|
|
596
602
|
readonly "fileInput.uploadHeaderImage": "Upload image";
|
|
597
|
-
readonly "fileInput.preview": "Preview image";
|
|
598
603
|
readonly "fileInput.dropHere": "Drop your image here";
|
|
599
604
|
readonly "fileInput.dragAndDrop": "Drag and drop an image here";
|
|
600
605
|
readonly "fileInput.supportedFormats": "Supported formats: {{formats}}";
|
|
@@ -679,8 +684,8 @@ declare const qetaTranslationRef: _backstage_core_plugin_api_alpha.TranslationRe
|
|
|
679
684
|
readonly "commentList.editLink": "edit";
|
|
680
685
|
readonly "commentList.deleteLink": "delete";
|
|
681
686
|
readonly "markdown.toc": "Table of contents";
|
|
682
|
-
readonly "commentSection.input.placeholder": "Your comment";
|
|
683
687
|
readonly "commentSection.post": "Post";
|
|
688
|
+
readonly "commentSection.input.placeholder": "Your comment";
|
|
684
689
|
readonly "commentSection.addComment": "Add a comment";
|
|
685
690
|
readonly "tagChip.nonExistingTag": "This tag does not yet exist";
|
|
686
691
|
readonly "editTagModal.title": "Edit tag {{tag}}";
|
|
@@ -702,6 +707,7 @@ declare const qetaTranslationRef: _backstage_core_plugin_api_alpha.TranslationRe
|
|
|
702
707
|
readonly "deleteModal.title.question": "Are you sure you want to delete this post?";
|
|
703
708
|
readonly "deleteModal.cancelButton": "Cancel";
|
|
704
709
|
readonly "deleteModal.errorDeleting": "Failed to delete";
|
|
710
|
+
readonly "deleteModal.reason": "Reason for deletion";
|
|
705
711
|
readonly "deleteModal.deleteButton": "Delete";
|
|
706
712
|
readonly "deleteModal.tagDeleted": "Tag deleted";
|
|
707
713
|
readonly "deleteModal.collectionDeleted": "Collection deleted";
|
|
@@ -724,20 +730,20 @@ declare const qetaTranslationRef: _backstage_core_plugin_api_alpha.TranslationRe
|
|
|
724
730
|
readonly "leftMenu.favoriteQuestions": "Favorites";
|
|
725
731
|
readonly "leftMenu.content": "Content";
|
|
726
732
|
readonly "leftMenu.community": "Community";
|
|
727
|
-
readonly "moderatorPage.title": "Moderate";
|
|
728
733
|
readonly "moderatorPage.templates": "Templates";
|
|
734
|
+
readonly "moderatorPage.title": "Moderate";
|
|
729
735
|
readonly "moderatorPage.tools": "Tools";
|
|
730
736
|
readonly "moderatorPage.templatesInfo": "Templates can be used to prefill question content for the user";
|
|
731
737
|
readonly "moderatorPage.deletedPosts": "Deleted posts";
|
|
732
|
-
readonly "suggestionsCard.title": "Suggestions";
|
|
733
738
|
readonly "suggestionsCard.noCorrectAnswer": "Your question \"{{title}}\" does not have a correct answer";
|
|
734
739
|
readonly "suggestionsCard.newQuestion": "Do you have an answer for \"{{title}}\"?";
|
|
735
740
|
readonly "suggestionsCard.newArticle": "You might like to read \"{{title}}\"";
|
|
736
741
|
readonly "suggestionsCard.draftPost": "Ready to finalize draft post \"{{title}}\"?";
|
|
742
|
+
readonly "suggestionsCard.title": "Suggestions";
|
|
737
743
|
readonly "suggestionsCard.noSuggestions": "No suggestions";
|
|
738
744
|
readonly "homePage.title": "Home";
|
|
739
|
-
readonly "impactCard.title": "Your impact";
|
|
740
745
|
readonly "impactCard.error": "Failed to load impact data";
|
|
746
|
+
readonly "impactCard.title": "Your impact";
|
|
741
747
|
readonly "impactCard.views": "views";
|
|
742
748
|
readonly "impactCard.contributions": "Your contributions helped {{lastWeek}} people this week";
|
|
743
749
|
readonly "rightMenu.followedEntities": "Followed entities";
|
|
@@ -797,8 +803,8 @@ declare const qetaTranslationRef: _backstage_core_plugin_api_alpha.TranslationRe
|
|
|
797
803
|
readonly "questionPage.restoreButton": "Restore";
|
|
798
804
|
readonly "questionPage.draftStatus": "This is a draft post. Please edit and publish it to make it visible to others.";
|
|
799
805
|
readonly "questionPage.deletedStatus": "This post has been deleted. You can delete it permanently or restore it.";
|
|
800
|
-
readonly "questionPage.sortAnswers.label": "Sort answers";
|
|
801
806
|
readonly "questionPage.sortAnswers.default": "Default";
|
|
807
|
+
readonly "questionPage.sortAnswers.label": "Sort answers";
|
|
802
808
|
readonly "questionPage.sortAnswers.menuLabel": "Sort answers menu";
|
|
803
809
|
readonly "questionPage.sortAnswers.createdDesc": "Created (desc)";
|
|
804
810
|
readonly "questionPage.sortAnswers.createdAsc": "Created (asc)";
|
|
@@ -826,8 +832,8 @@ declare const qetaTranslationRef: _backstage_core_plugin_api_alpha.TranslationRe
|
|
|
826
832
|
readonly "datePicker.from": "From date";
|
|
827
833
|
readonly "datePicker.to": "To date";
|
|
828
834
|
readonly "datePicker.invalidRange": "Date range invalid, 'To date' should be greater than 'From date'";
|
|
829
|
-
readonly "datePicker.range.label": "Posted";
|
|
830
835
|
readonly "datePicker.range.default": "Select";
|
|
836
|
+
readonly "datePicker.range.label": "Posted";
|
|
831
837
|
readonly "datePicker.range.last7days": "Last 7 days";
|
|
832
838
|
readonly "datePicker.range.last30days": "Last 30 days";
|
|
833
839
|
readonly "datePicker.range.custom": "Custom";
|
|
@@ -844,21 +850,21 @@ declare const qetaTranslationRef: _backstage_core_plugin_api_alpha.TranslationRe
|
|
|
844
850
|
readonly "filterPanel.toggleEntityRelation.or": "Change to with any selected entities (OR)";
|
|
845
851
|
readonly "filterPanel.toggleTagRelation.and": "Change to only with all selected tags (AND)";
|
|
846
852
|
readonly "filterPanel.toggleTagRelation.or": "Change to with any selected tags (OR)";
|
|
847
|
-
readonly "filterPanel.orderBy.label": "Order by";
|
|
848
|
-
readonly "filterPanel.orderBy.title": "Title";
|
|
849
853
|
readonly "filterPanel.orderBy.score": "Score";
|
|
850
854
|
readonly "filterPanel.orderBy.created": "Created";
|
|
851
855
|
readonly "filterPanel.orderBy.updated": "Updated";
|
|
852
856
|
readonly "filterPanel.orderBy.answers": "Answers";
|
|
857
|
+
readonly "filterPanel.orderBy.label": "Order by";
|
|
858
|
+
readonly "filterPanel.orderBy.title": "Title";
|
|
853
859
|
readonly "filterPanel.orderBy.views": "Views";
|
|
854
860
|
readonly "filterPanel.orderBy.rank": "Rank";
|
|
855
861
|
readonly "filterPanel.orderBy.trend": "Trend";
|
|
856
862
|
readonly "filterPanel.order.label": "Order";
|
|
857
863
|
readonly "filterPanel.order.desc": "Descending";
|
|
858
864
|
readonly "filterPanel.order.asc": "Ascending";
|
|
859
|
-
readonly "filterPanel.filters.label": "Filters";
|
|
860
865
|
readonly "filterPanel.filters.tag.label": "Tag";
|
|
861
866
|
readonly "filterPanel.filters.tag.placeholder": "Type or select tag";
|
|
867
|
+
readonly "filterPanel.filters.label": "Filters";
|
|
862
868
|
readonly "filterPanel.filters.entity.label": "Entity";
|
|
863
869
|
readonly "filterPanel.filters.entity.placeholder": "Type or select entity";
|
|
864
870
|
readonly "postsList.errorLoading": "Could not load {{itemType}}s";
|
|
@@ -875,10 +881,10 @@ declare const qetaTranslationRef: _backstage_core_plugin_api_alpha.TranslationRe
|
|
|
875
881
|
readonly "postsTable.errorLoading": "Could not load questions";
|
|
876
882
|
readonly "postsTable.latest": "Latest";
|
|
877
883
|
readonly "postsTable.mostViewed": "Most viewed";
|
|
878
|
-
readonly "postsTable.cells.title": "Title";
|
|
879
884
|
readonly "postsTable.cells.author": "Author";
|
|
880
885
|
readonly "postsTable.cells.type": "Type";
|
|
881
886
|
readonly "postsTable.cells.updated": "Last updated";
|
|
887
|
+
readonly "postsTable.cells.title": "Title";
|
|
882
888
|
readonly "postsTable.cells.asked": "Asked";
|
|
883
889
|
readonly "tagPage.search.label": "Search tag";
|
|
884
890
|
readonly "tagPage.search.placeholder": "Search...";
|
|
@@ -895,8 +901,8 @@ declare const qetaTranslationRef: _backstage_core_plugin_api_alpha.TranslationRe
|
|
|
895
901
|
readonly "entitiesPage.entities_one": "{{count}} entity";
|
|
896
902
|
readonly "entitiesPage.entities_other": "{{count}} entities";
|
|
897
903
|
readonly "entitiesPage.defaultTitle": "Entities";
|
|
898
|
-
readonly "aiAnswerCard.summary": "Summary by {{name}}";
|
|
899
904
|
readonly "aiAnswerCard.answer": "Answer from {{name}}";
|
|
905
|
+
readonly "aiAnswerCard.summary": "Summary by {{name}}";
|
|
900
906
|
readonly "aiAnswerCard.loading": "Thinking...";
|
|
901
907
|
readonly "aiAnswerCard.regenerate": "Regenerate this answer";
|
|
902
908
|
readonly "aiAnswerCard.show": "Show";
|
|
@@ -994,4 +1000,4 @@ type QetaOverrides = Overrides & {
|
|
|
994
1000
|
[Name in keyof QetaComponentsNameToClassKey]?: Partial<StyleRules<QetaComponentsNameToClassKey[Name]>>;
|
|
995
1001
|
};
|
|
996
1002
|
|
|
997
|
-
export { AIAnswerCard, AddToCollectionButton, AnswerCard, AnswerForm, AnswerList, AnswerListItem, AnswersContainer, ArticleContent, AskQuestionButton, AuthorLink, ButtonContainer, CollectionCard, CollectionFollowButton, CollectionForm, CollectionsGrid, CreateCollectionButton, DeleteModal, DeletedBanner, DraftBanner, EntitiesGrid, EntityFollowButton, FilterPanel, FollowedCollectionsList, FollowedEntitiesList, FollowedTagsList, FollowedUsersList, ImpactCard, LeftMenu, LeftMenuButton, MarkdownRenderer, PostForm, PostHighlightList, PostList, PostListItem, PostsCard, PostsContainer, PostsGrid, PostsTable, type QetaOverrides, QuestionCard, QuestionsTable, RelativeTimeWithTooltip, SelectTemplateList, StatsChart, StatusChip, SuggestionsCard, SummaryStatsGrid, TagFollowButton, TagsGrid, TemplateList, TopRankingUsers, TrophyIcon, UpdatedByLink, UserFollowButton, UserLink, UsersGrid, ViewToggle, type ViewType, WriteArticleButton, articleRouteRef, articlesRouteRef, askRouteRef, collectionCreateRouteRef, collectionEditRouteRef, collectionRouteRef, collectionsRouteRef, editArticleRouteRef, editQuestionRouteRef, entitiesRouteRef, entityRouteRef, favoriteQuestionsRouteRef, moderatorRouteRef, qetaApiRef, qetaRouteRef, qetaTranslationRef, qetaTranslations, questionRouteRef, questionsRouteRef, statisticsRouteRef, tagRouteRef, tagsRouteRef, useAI, useCollectionsFollow, useEntityAuthor, useEntityFollow, useIdentityApi, useIsModerator, useQetaApi, useTagsFollow, useUserFollow, useUserInfo, userRouteRef, usersRouteRef, writeRouteRef };
|
|
1003
|
+
export { AIAnswerCard, AddToCollectionButton, AnswerCard, AnswerForm, AnswerList, AnswerListItem, AnswersContainer, ArticleContent, AskQuestionButton, AuthorLink, ButtonContainer, CollectionCard, CollectionFollowButton, CollectionForm, CollectionsGrid, CreateCollectionButton, DeleteModal, DeletedBanner, DraftBanner, EntitiesGrid, EntityFollowButton, FilterPanel, FollowedCollectionsList, FollowedEntitiesList, FollowedTagsList, FollowedUsersList, ImpactCard, LeftMenu, LeftMenuButton, MarkdownRenderer, PostForm, type PostGridProps, PostHighlightList, PostList, PostListItem, PostsCard, PostsContainer, type PostsContainerProps, PostsGrid, PostsTable, type QetaOverrides, QuestionCard, QuestionsTable, RelativeTimeWithTooltip, SelectTemplateList, StatsChart, StatusChip, SuggestionsCard, SummaryStatsGrid, TagFollowButton, TagsGrid, TemplateList, TopRankingUsers, TrophyIcon, UpdatedByLink, UserFollowButton, UserLink, UsersGrid, ViewToggle, type ViewType, WriteArticleButton, articleRouteRef, articlesRouteRef, askRouteRef, collectionCreateRouteRef, collectionEditRouteRef, collectionRouteRef, collectionsRouteRef, editArticleRouteRef, editQuestionRouteRef, entitiesRouteRef, entityRouteRef, favoriteQuestionsRouteRef, moderatorRouteRef, qetaApiRef, qetaRouteRef, qetaTranslationRef, qetaTranslations, questionRouteRef, questionsRouteRef, statisticsRouteRef, tagRouteRef, tagsRouteRef, useAI, useCollectionsFollow, useEntityAuthor, useEntityFollow, useIdentityApi, useIsModerator, useQetaApi, useTagsFollow, useUserFollow, useUserInfo, userRouteRef, usersRouteRef, writeRouteRef };
|
package/dist/translation.esm.js
CHANGED
|
@@ -55,6 +55,12 @@ const qetaTranslationRef = createTranslationRef({
|
|
|
55
55
|
draft: "Draft",
|
|
56
56
|
deleted: "Deleted"
|
|
57
57
|
},
|
|
58
|
+
markdownEditor: {
|
|
59
|
+
write: "Write",
|
|
60
|
+
preview: "Preview",
|
|
61
|
+
uploadingImage: "Uploading image...",
|
|
62
|
+
pasteDropSelect: "Paste, drop or select an image"
|
|
63
|
+
},
|
|
58
64
|
answer: {
|
|
59
65
|
questionTitle: "Q: {{question}}",
|
|
60
66
|
answeredTime: "answered"
|
|
@@ -251,6 +257,7 @@ const qetaTranslationRef = createTranslationRef({
|
|
|
251
257
|
tag: "Are you sure you want to delete this tag?"
|
|
252
258
|
},
|
|
253
259
|
errorDeleting: "Failed to delete",
|
|
260
|
+
reason: "Reason for deletion",
|
|
254
261
|
deleteButton: "Delete",
|
|
255
262
|
cancelButton: "Cancel",
|
|
256
263
|
tagDeleted: "Tag deleted",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"translation.esm.js","sources":["../src/translation.ts"],"sourcesContent":["import {\n createTranslationRef,\n createTranslationResource,\n} from '@backstage/core-plugin-api/alpha';\n\n/** @alpha */\nexport const qetaTranslationRef = createTranslationRef({\n id: 'qeta',\n messages: {\n pluginName: 'Q&A',\n answerList: {\n errorLoading: 'Could not load answers',\n noAnswers: 'No answers',\n limitSelect: 'Answers per page',\n },\n common: {\n post: 'post',\n experts: 'Experts',\n tagExpert: 'This user is an expert in this area',\n question: 'question',\n article: 'article',\n collection: 'collection',\n score: '{{score}} score',\n comments: 'Comments',\n answers: 'answers',\n votes: 'votes',\n views: 'views',\n postStats: 'Post stats',\n anonymousAuthor: 'Anonymous',\n search: 'Search',\n readMore: 'Read more',\n clear: 'Clear search',\n answersCount_zero: 'No answers',\n answersCount_one: '{{count}} answer',\n answersCount_other: '{{count}} answers',\n viewsCount_zero: 'Viewed {{count}} times',\n viewsCount_one: 'Viewed {{count}} time',\n viewsCount_other: 'Viewed {{count}} times',\n viewsShort_zero: '0 views',\n viewsShort_one: '{{count}} view',\n viewsShort_other: '{{count}} views',\n votesCount_zero: '0 votes',\n votesCount_one: '{{count}} vote',\n votesCount_other: '{{count}} votes',\n posts_zero: 'No {{itemType}}s',\n posts_one: '{{count}} {{itemType}}',\n posts_other: '{{count}} {{itemType}}s',\n collections_zero: 'No collections',\n collections_one: '{{count}} collection',\n collections_other: '{{count}} collections',\n entities_zero: 'No entities',\n entities_one: '{{count}} entity',\n entities_other: '{{count}} entities',\n followers_zero: 'No followers',\n followers_one: '{{count}} follower',\n followers_other: '{{count}} followers',\n unsaved_changes:\n 'You have unsaved changes. Are you sure you want to leave?',\n loading: 'Loading...',\n draft: 'Draft',\n deleted: 'Deleted',\n },\n answer: {\n questionTitle: 'Q: {{question}}',\n answeredTime: 'answered',\n },\n answerContainer: {\n title: {\n answersBy: 'Answers by',\n answersAbout: 'Answers about',\n answersTagged: `Answers tagged with {{tags}}`,\n },\n search: {\n label: 'Search answer',\n placeholder: 'Search...',\n },\n },\n anonymousCheckbox: {\n tooltip:\n \"By enabling this, other users won't be able to see you as an author\",\n answerAnonymously: 'Answer anonymously',\n postAnonymously: 'Post anonymously',\n info: 'Your name will not be shown to others.',\n },\n fileInput: {\n label: 'Header image',\n helperText: 'URL of the header image to be used',\n uploadHeaderImage: 'Upload image',\n preview: 'Preview image',\n dropHere: 'Drop your image here',\n dragAndDrop: 'Drag and drop an image here',\n supportedFormats: 'Supported formats: {{formats}}',\n selectFile: 'Select File',\n imageLoadError: 'Could not load image. Please check the URL.',\n },\n collectionForm: {\n errorPosting: 'Could not post collection',\n titleInput: {\n label: 'Title',\n helperText: 'Title of the collection',\n placeholder: 'e.g. Questions about Backstage',\n },\n descriptionInput: {\n label: 'Description',\n placeholder:\n 'Describe your collection in detail. What topics does it cover?',\n markdownHelp: 'Markdown help',\n },\n submit: {\n existingCollection: 'Save',\n newCollection: 'Create Collection',\n },\n submitting: 'Creating...',\n tips_1:\n \"Choose a clear and descriptive title that reflects the collection's purpose\",\n tips_2:\n 'Provide a detailed description of what topics or questions the collection will contain',\n tips_3:\n 'Use markdown formatting to describe your collection with headings, lists, and links',\n },\n postForm: {\n errorPosting: 'Could not post {{type}}',\n errorLoading: 'Could not load {{type}}',\n uploadHeaderImage: 'Upload header image',\n titleInput: {\n label: 'Title',\n helperText:\n 'Write good title for your {{type}} that people can understand',\n placeholder: 'e.g. How do I deploy a Backstage plugin?',\n },\n contentInput: {\n label: 'Your {{type}}',\n placeholder_question:\n 'Describe your problem in detail. What have you tried? What did you expect to happen?',\n placeholder_article:\n 'Write your article content here. Use headings, lists, and images to organize your information.',\n markdownHelp: 'Markdown help',\n },\n submit: {\n existingPost: 'Save',\n publish: 'Publish',\n },\n successPosting: 'Your {{type}} was posted successfully!',\n submitting: 'Posting...',\n savingDraft: 'Saving draft...',\n saveDraft: 'Save as draft',\n updateDraft: 'Save draft',\n draftSaved: 'Draft saved',\n tips_question_1: 'Describe your problem in detail.',\n tips_question_2:\n 'Include what you have tried and what you expected to happen.',\n tips_question_3:\n 'Share error messages, logs, or screenshots if possible.',\n tips_question_4: 'Use code blocks for code or configuration.',\n tips_article_1: 'Write a clear and engaging introduction.',\n tips_article_2: 'Organize your content with headings and lists.',\n tips_article_3: 'Add images or diagrams to illustrate your points.',\n tips_article_4: 'Cite sources or link to relevant documentation.',\n autoSaveDraft: 'Auto-save',\n autoSaveDraftTooltip:\n 'Automatically save your post every 3 seconds when changes are made',\n autoSaveSuccess: 'Saved automatically',\n },\n answerForm: {\n errorPosting: 'Could not post answer',\n contentInput: {\n placeholder: 'Your answer',\n },\n submit: {\n existingAnswer: 'Save',\n newAnswer: 'Post',\n },\n },\n entitiesInput: {\n label: 'Entities',\n placeholder: 'Type or select entities',\n helperText: 'Add up to {{max}} entities',\n minimumError: 'Please add at least {{min}} entities',\n },\n tagsInput: {\n label: 'Tags',\n placeholder: 'Type or select tags',\n helperText: 'Add up to {{max}} tags',\n allowAddHelperText:\n 'You can create new tags by typing the tag and pressing enter',\n minimumError: 'Please add at least {{min}} tags',\n suggestedTags: 'Suggested tags',\n },\n askPage: {\n title: {\n existingQuestion: 'Edit question',\n entityQuestion: 'Ask a question about {{entity}}',\n newQuestion: 'Ask a question',\n },\n templateSelection: 'Select a template for your question',\n questionForm: 'Ask a question',\n selectTemplate: 'Select a template for your question',\n },\n writePage: {\n title: {\n existingArticle: 'Edit article',\n entityArticle: 'Write an article about {{entity}}',\n newArticle: 'New article',\n },\n },\n collectionCreatePage: {\n title: {\n existingCollection: 'Edit collection',\n newCollection: 'New collection',\n },\n },\n askQuestionButton: {\n title: 'Ask a question',\n },\n addToCollectionButton: {\n title: 'Collections',\n manage: 'Add or remove this post from collections',\n close: 'Close',\n removed: 'Removed from collection {{collection}}',\n added: 'Added to collection {{collection}}',\n },\n writeArticleButton: {\n title: 'Write an article',\n },\n createCollectionButton: {\n title: 'Create a collection',\n },\n commentList: {\n save: 'Save',\n editLink: 'edit',\n deleteLink: 'delete',\n },\n markdown: {\n toc: 'Table of contents',\n },\n commentSection: {\n input: {\n placeholder: 'Your comment',\n },\n addComment: 'Add a comment',\n post: 'Post',\n },\n tagChip: {\n nonExistingTag: 'This tag does not yet exist',\n },\n editTagModal: {\n title: 'Edit tag {{tag}}',\n description: 'Tag description',\n errorPosting: 'Failed to edit',\n expertsLabel: 'Experts',\n expertsPlaceholder: 'Tag experts',\n saveButton: 'Save',\n cancelButton: 'Cancel',\n },\n createTagModal: {\n title: 'Create a new tag',\n tagInput: 'Tag',\n description: 'Tag description',\n errorPosting: 'Failed to create',\n createButton: 'Create',\n cancelButton: 'Cancel',\n },\n deleteModal: {\n title: {\n question: 'Are you sure you want to delete this post?',\n answer: 'Are you sure you want to delete this answer?',\n collection: 'Are you sure you want to delete this collection?',\n tag: 'Are you sure you want to delete this tag?',\n },\n errorDeleting: 'Failed to delete',\n deleteButton: 'Delete',\n cancelButton: 'Cancel',\n tagDeleted: 'Tag deleted',\n collectionDeleted: 'Collection deleted',\n questionDeleted: 'Question deleted',\n articleDeleted: 'Article deleted',\n answerDeleted: 'Answer deleted',\n },\n favoritePage: {\n title: 'Favorited posts',\n },\n leftMenu: {\n buttonLabel: 'Menu',\n home: 'Home',\n questions: 'Questions',\n articles: 'Articles',\n profile: 'Profile',\n tags: 'Tags',\n entities: 'Entities',\n favoriteQuestions: 'Favorites',\n statistics: 'Statistics',\n collections: 'Collections',\n content: 'Content',\n community: 'Community',\n users: 'Users',\n manage: 'Manage',\n moderate: 'Moderate',\n },\n moderatorPage: {\n title: 'Moderate',\n tools: 'Tools',\n templates: 'Templates',\n templatesInfo:\n 'Templates can be used to prefill question content for the user',\n deletedPosts: 'Deleted posts',\n },\n suggestionsCard: {\n title: 'Suggestions',\n noSuggestions: 'No suggestions',\n noCorrectAnswer:\n 'Your question \"{{title}}\" does not have a correct answer',\n newQuestion: 'Do you have an answer for \"{{title}}\"?',\n newArticle: 'You might like to read \"{{title}}\"',\n draftPost: 'Ready to finalize draft post \"{{title}}\"?',\n },\n homePage: {\n title: 'Home',\n },\n impactCard: {\n title: 'Your impact',\n views: 'views',\n error: 'Failed to load impact data',\n contributions: 'Your contributions helped {{lastWeek}} people this week',\n },\n rightMenu: {\n followedEntities: 'Followed entities',\n followedTags: 'Followed tags',\n followedCollections: 'Followed collections',\n followedUsers: 'Followed users',\n },\n highlights: {\n loadError: 'Failed to load questions',\n own: {\n title: 'Your latest questions',\n noQuestionsLabel: 'No questions',\n },\n hotQuestions: {\n title: 'Hot questions',\n noQuestionsLabel: 'No questions',\n },\n hotArticles: {\n title: 'Hot articles',\n noArticlesLabel: 'No articles',\n },\n unanswered: {\n title: 'Unanswered questions',\n noQuestionsLabel: 'No unanswered questions',\n },\n incorrect: {\n title: 'Questions without correct answer',\n noQuestionsLabel: 'No questions without correct answers',\n },\n },\n questionsPage: {\n title: 'All questions',\n },\n articlesPage: {\n title: 'All articles',\n },\n userLink: {\n anonymous: 'Anonymous',\n you: 'You',\n },\n articlePage: {\n notFound: 'Could not find the article',\n errorLoading: 'Could not load article',\n editButton: 'Edit this article',\n restoreButton: 'Restore this article',\n deleteButton: 'Delete this article',\n },\n templateList: {\n errorLoading: 'Could not load templates',\n editButton: 'Edit',\n deleteButton: 'Delete',\n createButton: 'Create',\n errorPosting: 'Could not post template',\n noTemplates: 'No templates',\n noTemplatesDescription: 'Create a new template to get started',\n titleInput: {\n label: 'Title',\n helperText: 'Name of the template',\n },\n descriptionInput: {\n label: 'Description',\n helperText: 'Template description, what is it used for?',\n },\n questionTitleInput: {\n label: 'Default question title',\n helperText:\n 'Question title to be used when creating a question with this template',\n },\n questionContentInput: {\n placeholder:\n 'Question content to be used when creating a question with this template',\n },\n submit: {\n existingTemplate: 'Save',\n newTemplate: 'Create',\n },\n },\n templateSelectList: {\n selectButton: 'Choose',\n title: 'Create a question from template',\n genericQuestion: 'Generic question',\n genericQuestionDescription: 'Create a generic question',\n },\n pagination: {\n defaultTooltip: 'Number of items',\n },\n collectionsPage: {\n title: 'Collections',\n search: {\n label: 'Search collection',\n placeholder: 'Search...',\n },\n },\n collectionPage: {\n description: 'Description',\n info: 'You can add questions and articles to the collection from question and article pages',\n },\n searchResult: {\n created: 'Created',\n },\n questionPage: {\n errorLoading: 'Could not load question',\n editButton: 'Edit',\n restoreButton: 'Restore',\n notFound: 'Could not find the question',\n draftStatus:\n 'This is a draft post. Please edit and publish it to make it visible to others.',\n deletedStatus:\n 'This post has been deleted. You can delete it permanently or restore it.',\n sortAnswers: {\n label: 'Sort answers',\n menuLabel: 'Sort answers menu',\n default: 'Default',\n createdDesc: 'Created (desc)',\n createdAsc: 'Created (asc)',\n scoreDesc: 'Score (desc)',\n scoreAsc: 'Score (asc)',\n commentsDesc: 'Comments (desc)',\n commentsAsc: 'Comments (asc)',\n authorDesc: 'Author (desc)',\n authorAsc: 'Author (asc)',\n updatedDesc: 'Updated (desc)',\n updatedAsc: 'Updated (asc)',\n },\n },\n authorBox: {\n postedAtTime: 'Posted',\n updatedAtTime: 'Updated',\n updatedBy: 'by',\n answeredAtTime: 'Answered',\n },\n favorite: {\n remove: 'Remove this post from favorites',\n add: 'Mark this post as favorite',\n },\n link: {\n post: 'Copy link to this post to clipboard',\n answer: 'Copy link to this answer to clipboard',\n aria: 'Copy link to clipboard',\n copied: 'Link copied to clipboard',\n },\n code: {\n aria: 'Copy code to clipboard',\n copied: 'Code copied to clipboard',\n },\n voteButtons: {\n answer: {\n markCorrect: 'Mark this answer correct',\n markIncorrect: 'Mark this answer incorrect',\n marked: 'This answer has been marked as correct',\n good: 'This answer is good',\n bad: 'This answer is not good',\n own: 'You cannot vote your own answer',\n },\n post: {\n good: 'This {{type}} is good',\n bad: 'This {{type}} is not good',\n own: 'You cannot vote your own {{type}}',\n },\n },\n datePicker: {\n from: 'From date',\n to: 'To date',\n invalidRange:\n \"Date range invalid, 'To date' should be greater than 'From date'\",\n range: {\n label: 'Posted',\n default: 'Select',\n last7days: 'Last 7 days',\n last30days: 'Last 30 days',\n custom: 'Custom',\n },\n },\n ranking: {\n top: 'Rank this question to the top in this collection',\n bottom: 'Rank this question to the bottom in this collection',\n up: 'Rank this question up in this collection',\n down: 'Rank this question down in this collection',\n },\n filterPanel: {\n filterButton: 'Filter',\n noAnswers: {\n label: 'No answers',\n },\n drafts: {\n label: 'My drafts',\n },\n noCorrectAnswers: {\n label: 'No correct answers',\n },\n noVotes: {\n label: 'No votes',\n },\n quickFilters: {\n label: 'Quick filters',\n },\n starredEntities: {\n label: 'Starred entities',\n },\n ownedEntities: {\n label: 'Owned entities',\n },\n entitiesRelation: {\n label: 'Entities relation',\n },\n toggleEntityRelation: {\n and: 'Change to only with all selected entities (AND)',\n or: 'Change to with any selected entities (OR)',\n },\n toggleTagRelation: {\n and: 'Change to only with all selected tags (AND)',\n or: 'Change to with any selected tags (OR)',\n },\n orderBy: {\n rank: 'Rank',\n label: 'Order by',\n title: 'Title',\n created: 'Created',\n views: 'Views',\n score: 'Score',\n trend: 'Trend',\n answers: 'Answers',\n updated: 'Updated',\n },\n order: {\n label: 'Order',\n asc: 'Ascending',\n desc: 'Descending',\n },\n filters: {\n label: 'Filters',\n entity: {\n label: 'Entity',\n placeholder: 'Type or select entity',\n },\n tag: {\n label: 'Tag',\n placeholder: 'Type or select tag',\n },\n },\n },\n postsList: {\n errorLoading: 'Could not load {{itemType}}s',\n postsPerPage: '{{itemType}}s per page',\n },\n postsContainer: {\n title: {\n by: `{{itemType}}s by`,\n about: '{{itemType}}s about',\n tagged: `{{itemType}} tagged with {{tags}}`,\n favorite: 'Your favorite {{itemType}}s',\n },\n search: {\n label: 'Search {{itemType}}',\n placeholder: 'Search...',\n },\n noItems: 'No {{itemType}}s',\n createButton: 'Go ahead and create one!',\n },\n postsTable: {\n errorLoading: 'Could not load questions',\n latest: 'Latest',\n mostViewed: 'Most viewed',\n favorites: 'Favorites',\n cells: {\n title: 'Title',\n type: 'Type',\n author: 'Author',\n asked: 'Asked',\n updated: 'Last updated',\n },\n },\n statistics: {\n errorLoading: 'Could not load statistics',\n notAvailable: 'Statistics are unavailable',\n ranking: 'User ranking 🏆',\n mostQuestions: {\n title: 'Most questions',\n description: 'People who have posted most questions',\n },\n mostAnswers: {\n title: 'Most answers',\n description: 'People who have posted most answers',\n },\n topVotedQuestions: {\n title: 'Top voted questions',\n description: 'People who have the highest rated questions',\n },\n topVotedAnswers: {\n title: 'Top voted answers',\n description: 'People who have the highest rated answers',\n },\n topVotedCorrectAnswers: {\n title: 'Top voted correct answers',\n description: 'People who have the highest rated correct answers',\n },\n },\n tagPage: {\n errorLoading: 'Could not load tags',\n defaultTitle: 'Tags',\n createTag: 'Create tag',\n search: {\n label: 'Search tag',\n placeholder: 'Search...',\n },\n tags_zero: 'No tags',\n tags_one: '{{count}} tag',\n tags_other: '{{count}} tags',\n },\n entitiesPage: {\n errorLoading: 'Could not load entities',\n defaultTitle: 'Entities',\n search: {\n label: 'Search entity',\n placeholder: 'Search...',\n },\n entities_zero: 'No entities',\n entities_one: '{{count}} entity',\n entities_other: '{{count}} entities',\n },\n aiAnswerCard: {\n regenerate: 'Regenerate this answer',\n answer: 'Answer from {{name}}',\n summary: 'Summary by {{name}}',\n show: 'Show',\n hide: 'Hide',\n loading: 'Thinking...',\n },\n usersPage: {\n title: 'Users',\n errorLoading: 'Could not load users',\n defaultTitle: 'users',\n search: {\n label: 'Search user',\n placeholder: 'Search...',\n },\n users_zero: 'No users',\n users_one: '{{count}} user',\n users_other: '{{count}} users',\n },\n userPage: {\n profileTab: 'Profile',\n statistics: 'Statistics',\n questions: 'Questions',\n answers: 'Answers',\n collections: 'Collections',\n articles: 'Articles',\n followUser: 'Follow {{name}}',\n profilePicture: 'Profile picture of {{name}}',\n profileHeader: 'User profile',\n },\n stats: {\n noStats: 'No statistics available. Check back later!',\n questions: 'Questions',\n answers: 'Answers',\n comments: 'Comments',\n votes: 'Votes',\n views: 'Views',\n articles: 'Articles',\n followers: 'Followers',\n users: 'Users',\n tags: 'Tags',\n barChart: 'Bar Chart',\n lineChart: 'Line Chart',\n chartType: 'Chart Type',\n tooltip: 'Chart Tooltip',\n dateAxis: 'Date Axis',\n valueAxis: 'Value Axis',\n totalViews: 'Total views',\n totalQuestions: 'Total questions',\n totalAnswers: 'Total answers',\n totalComments: 'Total comments',\n totalVotes: 'Total votes',\n totalUsers: 'Total users',\n totalTags: 'Total tags',\n totalArticles: 'Total articles',\n totalFollowers: 'Total followers',\n },\n collectionButton: {\n follow: 'Follow',\n unfollow: 'Unfollow',\n tooltip:\n 'By following a collection, you will get notified when ever a new post is added to the collection',\n },\n tagButton: {\n follow: 'Follow',\n unfollow: 'Unfollow',\n edit: 'Edit',\n delete: 'Delete',\n tooltip:\n 'By following a tag, you will get notified when ever a new post with that tag is posted',\n },\n entityButton: {\n follow: 'Follow',\n unfollow: 'Unfollow',\n tooltip:\n 'By following an entity, you will get notified when ever a new post for that entity is posted',\n },\n userButton: {\n follow: 'Follow',\n unfollow: 'Unfollow',\n tooltip:\n 'By following a user, you will get notified when ever a new post by that user is posted',\n },\n viewToggle: {\n listView: 'List View',\n gridView: 'Grid View',\n },\n },\n});\n\nexport const qetaTranslations = createTranslationResource({\n ref: qetaTranslationRef,\n translations: {},\n});\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"translation.esm.js","sources":["../src/translation.ts"],"sourcesContent":["import {\n createTranslationRef,\n createTranslationResource,\n} from '@backstage/core-plugin-api/alpha';\n\n/** @alpha */\nexport const qetaTranslationRef = createTranslationRef({\n id: 'qeta',\n messages: {\n pluginName: 'Q&A',\n answerList: {\n errorLoading: 'Could not load answers',\n noAnswers: 'No answers',\n limitSelect: 'Answers per page',\n },\n common: {\n post: 'post',\n experts: 'Experts',\n tagExpert: 'This user is an expert in this area',\n question: 'question',\n article: 'article',\n collection: 'collection',\n score: '{{score}} score',\n comments: 'Comments',\n answers: 'answers',\n votes: 'votes',\n views: 'views',\n postStats: 'Post stats',\n anonymousAuthor: 'Anonymous',\n search: 'Search',\n readMore: 'Read more',\n clear: 'Clear search',\n answersCount_zero: 'No answers',\n answersCount_one: '{{count}} answer',\n answersCount_other: '{{count}} answers',\n viewsCount_zero: 'Viewed {{count}} times',\n viewsCount_one: 'Viewed {{count}} time',\n viewsCount_other: 'Viewed {{count}} times',\n viewsShort_zero: '0 views',\n viewsShort_one: '{{count}} view',\n viewsShort_other: '{{count}} views',\n votesCount_zero: '0 votes',\n votesCount_one: '{{count}} vote',\n votesCount_other: '{{count}} votes',\n posts_zero: 'No {{itemType}}s',\n posts_one: '{{count}} {{itemType}}',\n posts_other: '{{count}} {{itemType}}s',\n collections_zero: 'No collections',\n collections_one: '{{count}} collection',\n collections_other: '{{count}} collections',\n entities_zero: 'No entities',\n entities_one: '{{count}} entity',\n entities_other: '{{count}} entities',\n followers_zero: 'No followers',\n followers_one: '{{count}} follower',\n followers_other: '{{count}} followers',\n unsaved_changes:\n 'You have unsaved changes. Are you sure you want to leave?',\n loading: 'Loading...',\n draft: 'Draft',\n deleted: 'Deleted',\n },\n markdownEditor: {\n write: 'Write',\n preview: 'Preview',\n uploadingImage: 'Uploading image...',\n pasteDropSelect: 'Paste, drop or select an image',\n },\n answer: {\n questionTitle: 'Q: {{question}}',\n answeredTime: 'answered',\n },\n answerContainer: {\n title: {\n answersBy: 'Answers by',\n answersAbout: 'Answers about',\n answersTagged: `Answers tagged with {{tags}}`,\n },\n search: {\n label: 'Search answer',\n placeholder: 'Search...',\n },\n },\n anonymousCheckbox: {\n tooltip:\n \"By enabling this, other users won't be able to see you as an author\",\n answerAnonymously: 'Answer anonymously',\n postAnonymously: 'Post anonymously',\n info: 'Your name will not be shown to others.',\n },\n fileInput: {\n label: 'Header image',\n helperText: 'URL of the header image to be used',\n uploadHeaderImage: 'Upload image',\n preview: 'Preview image',\n dropHere: 'Drop your image here',\n dragAndDrop: 'Drag and drop an image here',\n supportedFormats: 'Supported formats: {{formats}}',\n selectFile: 'Select File',\n imageLoadError: 'Could not load image. Please check the URL.',\n },\n collectionForm: {\n errorPosting: 'Could not post collection',\n titleInput: {\n label: 'Title',\n helperText: 'Title of the collection',\n placeholder: 'e.g. Questions about Backstage',\n },\n descriptionInput: {\n label: 'Description',\n placeholder:\n 'Describe your collection in detail. What topics does it cover?',\n markdownHelp: 'Markdown help',\n },\n submit: {\n existingCollection: 'Save',\n newCollection: 'Create Collection',\n },\n submitting: 'Creating...',\n tips_1:\n \"Choose a clear and descriptive title that reflects the collection's purpose\",\n tips_2:\n 'Provide a detailed description of what topics or questions the collection will contain',\n tips_3:\n 'Use markdown formatting to describe your collection with headings, lists, and links',\n },\n postForm: {\n errorPosting: 'Could not post {{type}}',\n errorLoading: 'Could not load {{type}}',\n uploadHeaderImage: 'Upload header image',\n titleInput: {\n label: 'Title',\n helperText:\n 'Write good title for your {{type}} that people can understand',\n placeholder: 'e.g. How do I deploy a Backstage plugin?',\n },\n contentInput: {\n label: 'Your {{type}}',\n placeholder_question:\n 'Describe your problem in detail. What have you tried? What did you expect to happen?',\n placeholder_article:\n 'Write your article content here. Use headings, lists, and images to organize your information.',\n markdownHelp: 'Markdown help',\n },\n submit: {\n existingPost: 'Save',\n publish: 'Publish',\n },\n successPosting: 'Your {{type}} was posted successfully!',\n submitting: 'Posting...',\n savingDraft: 'Saving draft...',\n saveDraft: 'Save as draft',\n updateDraft: 'Save draft',\n draftSaved: 'Draft saved',\n tips_question_1: 'Describe your problem in detail.',\n tips_question_2:\n 'Include what you have tried and what you expected to happen.',\n tips_question_3:\n 'Share error messages, logs, or screenshots if possible.',\n tips_question_4: 'Use code blocks for code or configuration.',\n tips_article_1: 'Write a clear and engaging introduction.',\n tips_article_2: 'Organize your content with headings and lists.',\n tips_article_3: 'Add images or diagrams to illustrate your points.',\n tips_article_4: 'Cite sources or link to relevant documentation.',\n autoSaveDraft: 'Auto-save',\n autoSaveDraftTooltip:\n 'Automatically save your post every 3 seconds when changes are made',\n autoSaveSuccess: 'Saved automatically',\n },\n answerForm: {\n errorPosting: 'Could not post answer',\n contentInput: {\n placeholder: 'Your answer',\n },\n submit: {\n existingAnswer: 'Save',\n newAnswer: 'Post',\n },\n },\n entitiesInput: {\n label: 'Entities',\n placeholder: 'Type or select entities',\n helperText: 'Add up to {{max}} entities',\n minimumError: 'Please add at least {{min}} entities',\n },\n tagsInput: {\n label: 'Tags',\n placeholder: 'Type or select tags',\n helperText: 'Add up to {{max}} tags',\n allowAddHelperText:\n 'You can create new tags by typing the tag and pressing enter',\n minimumError: 'Please add at least {{min}} tags',\n suggestedTags: 'Suggested tags',\n },\n askPage: {\n title: {\n existingQuestion: 'Edit question',\n entityQuestion: 'Ask a question about {{entity}}',\n newQuestion: 'Ask a question',\n },\n templateSelection: 'Select a template for your question',\n questionForm: 'Ask a question',\n selectTemplate: 'Select a template for your question',\n },\n writePage: {\n title: {\n existingArticle: 'Edit article',\n entityArticle: 'Write an article about {{entity}}',\n newArticle: 'New article',\n },\n },\n collectionCreatePage: {\n title: {\n existingCollection: 'Edit collection',\n newCollection: 'New collection',\n },\n },\n askQuestionButton: {\n title: 'Ask a question',\n },\n addToCollectionButton: {\n title: 'Collections',\n manage: 'Add or remove this post from collections',\n close: 'Close',\n removed: 'Removed from collection {{collection}}',\n added: 'Added to collection {{collection}}',\n },\n writeArticleButton: {\n title: 'Write an article',\n },\n createCollectionButton: {\n title: 'Create a collection',\n },\n commentList: {\n save: 'Save',\n editLink: 'edit',\n deleteLink: 'delete',\n },\n markdown: {\n toc: 'Table of contents',\n },\n commentSection: {\n input: {\n placeholder: 'Your comment',\n },\n addComment: 'Add a comment',\n post: 'Post',\n },\n tagChip: {\n nonExistingTag: 'This tag does not yet exist',\n },\n editTagModal: {\n title: 'Edit tag {{tag}}',\n description: 'Tag description',\n errorPosting: 'Failed to edit',\n expertsLabel: 'Experts',\n expertsPlaceholder: 'Tag experts',\n saveButton: 'Save',\n cancelButton: 'Cancel',\n },\n createTagModal: {\n title: 'Create a new tag',\n tagInput: 'Tag',\n description: 'Tag description',\n errorPosting: 'Failed to create',\n createButton: 'Create',\n cancelButton: 'Cancel',\n },\n deleteModal: {\n title: {\n question: 'Are you sure you want to delete this post?',\n answer: 'Are you sure you want to delete this answer?',\n collection: 'Are you sure you want to delete this collection?',\n tag: 'Are you sure you want to delete this tag?',\n },\n errorDeleting: 'Failed to delete',\n reason: 'Reason for deletion',\n deleteButton: 'Delete',\n cancelButton: 'Cancel',\n tagDeleted: 'Tag deleted',\n collectionDeleted: 'Collection deleted',\n questionDeleted: 'Question deleted',\n articleDeleted: 'Article deleted',\n answerDeleted: 'Answer deleted',\n },\n favoritePage: {\n title: 'Favorited posts',\n },\n leftMenu: {\n buttonLabel: 'Menu',\n home: 'Home',\n questions: 'Questions',\n articles: 'Articles',\n profile: 'Profile',\n tags: 'Tags',\n entities: 'Entities',\n favoriteQuestions: 'Favorites',\n statistics: 'Statistics',\n collections: 'Collections',\n content: 'Content',\n community: 'Community',\n users: 'Users',\n manage: 'Manage',\n moderate: 'Moderate',\n },\n moderatorPage: {\n title: 'Moderate',\n tools: 'Tools',\n templates: 'Templates',\n templatesInfo:\n 'Templates can be used to prefill question content for the user',\n deletedPosts: 'Deleted posts',\n },\n suggestionsCard: {\n title: 'Suggestions',\n noSuggestions: 'No suggestions',\n noCorrectAnswer:\n 'Your question \"{{title}}\" does not have a correct answer',\n newQuestion: 'Do you have an answer for \"{{title}}\"?',\n newArticle: 'You might like to read \"{{title}}\"',\n draftPost: 'Ready to finalize draft post \"{{title}}\"?',\n },\n homePage: {\n title: 'Home',\n },\n impactCard: {\n title: 'Your impact',\n views: 'views',\n error: 'Failed to load impact data',\n contributions: 'Your contributions helped {{lastWeek}} people this week',\n },\n rightMenu: {\n followedEntities: 'Followed entities',\n followedTags: 'Followed tags',\n followedCollections: 'Followed collections',\n followedUsers: 'Followed users',\n },\n highlights: {\n loadError: 'Failed to load questions',\n own: {\n title: 'Your latest questions',\n noQuestionsLabel: 'No questions',\n },\n hotQuestions: {\n title: 'Hot questions',\n noQuestionsLabel: 'No questions',\n },\n hotArticles: {\n title: 'Hot articles',\n noArticlesLabel: 'No articles',\n },\n unanswered: {\n title: 'Unanswered questions',\n noQuestionsLabel: 'No unanswered questions',\n },\n incorrect: {\n title: 'Questions without correct answer',\n noQuestionsLabel: 'No questions without correct answers',\n },\n },\n questionsPage: {\n title: 'All questions',\n },\n articlesPage: {\n title: 'All articles',\n },\n userLink: {\n anonymous: 'Anonymous',\n you: 'You',\n },\n articlePage: {\n notFound: 'Could not find the article',\n errorLoading: 'Could not load article',\n editButton: 'Edit this article',\n restoreButton: 'Restore this article',\n deleteButton: 'Delete this article',\n },\n templateList: {\n errorLoading: 'Could not load templates',\n editButton: 'Edit',\n deleteButton: 'Delete',\n createButton: 'Create',\n errorPosting: 'Could not post template',\n noTemplates: 'No templates',\n noTemplatesDescription: 'Create a new template to get started',\n titleInput: {\n label: 'Title',\n helperText: 'Name of the template',\n },\n descriptionInput: {\n label: 'Description',\n helperText: 'Template description, what is it used for?',\n },\n questionTitleInput: {\n label: 'Default question title',\n helperText:\n 'Question title to be used when creating a question with this template',\n },\n questionContentInput: {\n placeholder:\n 'Question content to be used when creating a question with this template',\n },\n submit: {\n existingTemplate: 'Save',\n newTemplate: 'Create',\n },\n },\n templateSelectList: {\n selectButton: 'Choose',\n title: 'Create a question from template',\n genericQuestion: 'Generic question',\n genericQuestionDescription: 'Create a generic question',\n },\n pagination: {\n defaultTooltip: 'Number of items',\n },\n collectionsPage: {\n title: 'Collections',\n search: {\n label: 'Search collection',\n placeholder: 'Search...',\n },\n },\n collectionPage: {\n description: 'Description',\n info: 'You can add questions and articles to the collection from question and article pages',\n },\n searchResult: {\n created: 'Created',\n },\n questionPage: {\n errorLoading: 'Could not load question',\n editButton: 'Edit',\n restoreButton: 'Restore',\n notFound: 'Could not find the question',\n draftStatus:\n 'This is a draft post. Please edit and publish it to make it visible to others.',\n deletedStatus:\n 'This post has been deleted. You can delete it permanently or restore it.',\n sortAnswers: {\n label: 'Sort answers',\n menuLabel: 'Sort answers menu',\n default: 'Default',\n createdDesc: 'Created (desc)',\n createdAsc: 'Created (asc)',\n scoreDesc: 'Score (desc)',\n scoreAsc: 'Score (asc)',\n commentsDesc: 'Comments (desc)',\n commentsAsc: 'Comments (asc)',\n authorDesc: 'Author (desc)',\n authorAsc: 'Author (asc)',\n updatedDesc: 'Updated (desc)',\n updatedAsc: 'Updated (asc)',\n },\n },\n authorBox: {\n postedAtTime: 'Posted',\n updatedAtTime: 'Updated',\n updatedBy: 'by',\n answeredAtTime: 'Answered',\n },\n favorite: {\n remove: 'Remove this post from favorites',\n add: 'Mark this post as favorite',\n },\n link: {\n post: 'Copy link to this post to clipboard',\n answer: 'Copy link to this answer to clipboard',\n aria: 'Copy link to clipboard',\n copied: 'Link copied to clipboard',\n },\n code: {\n aria: 'Copy code to clipboard',\n copied: 'Code copied to clipboard',\n },\n voteButtons: {\n answer: {\n markCorrect: 'Mark this answer correct',\n markIncorrect: 'Mark this answer incorrect',\n marked: 'This answer has been marked as correct',\n good: 'This answer is good',\n bad: 'This answer is not good',\n own: 'You cannot vote your own answer',\n },\n post: {\n good: 'This {{type}} is good',\n bad: 'This {{type}} is not good',\n own: 'You cannot vote your own {{type}}',\n },\n },\n datePicker: {\n from: 'From date',\n to: 'To date',\n invalidRange:\n \"Date range invalid, 'To date' should be greater than 'From date'\",\n range: {\n label: 'Posted',\n default: 'Select',\n last7days: 'Last 7 days',\n last30days: 'Last 30 days',\n custom: 'Custom',\n },\n },\n ranking: {\n top: 'Rank this question to the top in this collection',\n bottom: 'Rank this question to the bottom in this collection',\n up: 'Rank this question up in this collection',\n down: 'Rank this question down in this collection',\n },\n filterPanel: {\n filterButton: 'Filter',\n noAnswers: {\n label: 'No answers',\n },\n drafts: {\n label: 'My drafts',\n },\n noCorrectAnswers: {\n label: 'No correct answers',\n },\n noVotes: {\n label: 'No votes',\n },\n quickFilters: {\n label: 'Quick filters',\n },\n starredEntities: {\n label: 'Starred entities',\n },\n ownedEntities: {\n label: 'Owned entities',\n },\n entitiesRelation: {\n label: 'Entities relation',\n },\n toggleEntityRelation: {\n and: 'Change to only with all selected entities (AND)',\n or: 'Change to with any selected entities (OR)',\n },\n toggleTagRelation: {\n and: 'Change to only with all selected tags (AND)',\n or: 'Change to with any selected tags (OR)',\n },\n orderBy: {\n rank: 'Rank',\n label: 'Order by',\n title: 'Title',\n created: 'Created',\n views: 'Views',\n score: 'Score',\n trend: 'Trend',\n answers: 'Answers',\n updated: 'Updated',\n },\n order: {\n label: 'Order',\n asc: 'Ascending',\n desc: 'Descending',\n },\n filters: {\n label: 'Filters',\n entity: {\n label: 'Entity',\n placeholder: 'Type or select entity',\n },\n tag: {\n label: 'Tag',\n placeholder: 'Type or select tag',\n },\n },\n },\n postsList: {\n errorLoading: 'Could not load {{itemType}}s',\n postsPerPage: '{{itemType}}s per page',\n },\n postsContainer: {\n title: {\n by: `{{itemType}}s by`,\n about: '{{itemType}}s about',\n tagged: `{{itemType}} tagged with {{tags}}`,\n favorite: 'Your favorite {{itemType}}s',\n },\n search: {\n label: 'Search {{itemType}}',\n placeholder: 'Search...',\n },\n noItems: 'No {{itemType}}s',\n createButton: 'Go ahead and create one!',\n },\n postsTable: {\n errorLoading: 'Could not load questions',\n latest: 'Latest',\n mostViewed: 'Most viewed',\n favorites: 'Favorites',\n cells: {\n title: 'Title',\n type: 'Type',\n author: 'Author',\n asked: 'Asked',\n updated: 'Last updated',\n },\n },\n statistics: {\n errorLoading: 'Could not load statistics',\n notAvailable: 'Statistics are unavailable',\n ranking: 'User ranking 🏆',\n mostQuestions: {\n title: 'Most questions',\n description: 'People who have posted most questions',\n },\n mostAnswers: {\n title: 'Most answers',\n description: 'People who have posted most answers',\n },\n topVotedQuestions: {\n title: 'Top voted questions',\n description: 'People who have the highest rated questions',\n },\n topVotedAnswers: {\n title: 'Top voted answers',\n description: 'People who have the highest rated answers',\n },\n topVotedCorrectAnswers: {\n title: 'Top voted correct answers',\n description: 'People who have the highest rated correct answers',\n },\n },\n tagPage: {\n errorLoading: 'Could not load tags',\n defaultTitle: 'Tags',\n createTag: 'Create tag',\n search: {\n label: 'Search tag',\n placeholder: 'Search...',\n },\n tags_zero: 'No tags',\n tags_one: '{{count}} tag',\n tags_other: '{{count}} tags',\n },\n entitiesPage: {\n errorLoading: 'Could not load entities',\n defaultTitle: 'Entities',\n search: {\n label: 'Search entity',\n placeholder: 'Search...',\n },\n entities_zero: 'No entities',\n entities_one: '{{count}} entity',\n entities_other: '{{count}} entities',\n },\n aiAnswerCard: {\n regenerate: 'Regenerate this answer',\n answer: 'Answer from {{name}}',\n summary: 'Summary by {{name}}',\n show: 'Show',\n hide: 'Hide',\n loading: 'Thinking...',\n },\n usersPage: {\n title: 'Users',\n errorLoading: 'Could not load users',\n defaultTitle: 'users',\n search: {\n label: 'Search user',\n placeholder: 'Search...',\n },\n users_zero: 'No users',\n users_one: '{{count}} user',\n users_other: '{{count}} users',\n },\n userPage: {\n profileTab: 'Profile',\n statistics: 'Statistics',\n questions: 'Questions',\n answers: 'Answers',\n collections: 'Collections',\n articles: 'Articles',\n followUser: 'Follow {{name}}',\n profilePicture: 'Profile picture of {{name}}',\n profileHeader: 'User profile',\n },\n stats: {\n noStats: 'No statistics available. Check back later!',\n questions: 'Questions',\n answers: 'Answers',\n comments: 'Comments',\n votes: 'Votes',\n views: 'Views',\n articles: 'Articles',\n followers: 'Followers',\n users: 'Users',\n tags: 'Tags',\n barChart: 'Bar Chart',\n lineChart: 'Line Chart',\n chartType: 'Chart Type',\n tooltip: 'Chart Tooltip',\n dateAxis: 'Date Axis',\n valueAxis: 'Value Axis',\n totalViews: 'Total views',\n totalQuestions: 'Total questions',\n totalAnswers: 'Total answers',\n totalComments: 'Total comments',\n totalVotes: 'Total votes',\n totalUsers: 'Total users',\n totalTags: 'Total tags',\n totalArticles: 'Total articles',\n totalFollowers: 'Total followers',\n },\n collectionButton: {\n follow: 'Follow',\n unfollow: 'Unfollow',\n tooltip:\n 'By following a collection, you will get notified when ever a new post is added to the collection',\n },\n tagButton: {\n follow: 'Follow',\n unfollow: 'Unfollow',\n edit: 'Edit',\n delete: 'Delete',\n tooltip:\n 'By following a tag, you will get notified when ever a new post with that tag is posted',\n },\n entityButton: {\n follow: 'Follow',\n unfollow: 'Unfollow',\n tooltip:\n 'By following an entity, you will get notified when ever a new post for that entity is posted',\n },\n userButton: {\n follow: 'Follow',\n unfollow: 'Unfollow',\n tooltip:\n 'By following a user, you will get notified when ever a new post by that user is posted',\n },\n viewToggle: {\n listView: 'List View',\n gridView: 'Grid View',\n },\n },\n});\n\nexport const qetaTranslations = createTranslationResource({\n ref: qetaTranslationRef,\n translations: {},\n});\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"frontend",
|
|
8
8
|
"backstage.io"
|
|
9
9
|
],
|
|
10
|
-
"version": "3.
|
|
10
|
+
"version": "3.33.1",
|
|
11
11
|
"main": "dist/index.esm.js",
|
|
12
12
|
"types": "dist/index.d.ts",
|
|
13
13
|
"prepublishOnly": "yarn tsc && yarn build",
|
|
@@ -48,16 +48,16 @@
|
|
|
48
48
|
"tsc": "tsc"
|
|
49
49
|
},
|
|
50
50
|
"dependencies": {
|
|
51
|
-
"@backstage/catalog-client": "^1.
|
|
51
|
+
"@backstage/catalog-client": "^1.11.0",
|
|
52
52
|
"@backstage/catalog-model": "^1.7.5",
|
|
53
53
|
"@backstage/config": "^1.3.3",
|
|
54
|
-
"@backstage/core-components": "^0.17.
|
|
54
|
+
"@backstage/core-components": "^0.17.5",
|
|
55
55
|
"@backstage/core-plugin-api": "^1.10.9",
|
|
56
|
-
"@backstage/plugin-catalog-react": "^1.
|
|
56
|
+
"@backstage/plugin-catalog-react": "^1.20.0",
|
|
57
57
|
"@backstage/plugin-permission-common": "^0.9.1",
|
|
58
58
|
"@backstage/plugin-permission-react": "^0.4.36",
|
|
59
59
|
"@backstage/plugin-signals-react": "^0.0.15",
|
|
60
|
-
"@drodil/backstage-plugin-qeta-common": "^3.
|
|
60
|
+
"@drodil/backstage-plugin-qeta-common": "^3.33.1",
|
|
61
61
|
"@jsdevtools/rehype-toc": "^3.0.2",
|
|
62
62
|
"@material-ui/core": "^4.12.2",
|
|
63
63
|
"@material-ui/icons": "^4.11.3",
|
|
@@ -87,8 +87,8 @@
|
|
|
87
87
|
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
|
|
88
88
|
},
|
|
89
89
|
"devDependencies": {
|
|
90
|
-
"@backstage/cli": "^0.
|
|
91
|
-
"@backstage/test-utils": "^1.7.
|
|
90
|
+
"@backstage/cli": "^0.34.0",
|
|
91
|
+
"@backstage/test-utils": "^1.7.11",
|
|
92
92
|
"@testing-library/dom": "^10.4.0",
|
|
93
93
|
"@testing-library/jest-dom": "^5.10.1",
|
|
94
94
|
"@testing-library/react": "^16.0.1",
|