@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.
@@ -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] = React.useState(false);
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 * as React from 'react';\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] = React.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
+ {"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] = React.useState(false);
57
+ const [posting, setPosting] = useState(false);
59
58
  const [formVisible, setFormVisible] = useState(false);
60
- const [edited, setEdited] = React.useState(false);
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 * as React from 'react';\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] = React.useState(false);\n const [formVisible, setFormVisible] = useState(false);\n const [edited, setEdited] = React.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":"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"}
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":"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"}
@@ -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 enabledMentionTypes = config.getOptionalStringArray(
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: enabledKinds },
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((t) => t.slice(1)));
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 React from 'react';\nimport { Grid, Typography, Box } 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":";;;;AAYO,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
+ {"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] = React.useState(
14
- resp
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 * as React from 'react';\nimport { 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] = React.useState<PostResponse | AnswerResponse>(\n resp,\n );\n const [ownVote, setOwnVote] = React.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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"}
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
- declare const PostsContainer: (props: PaginatedPostsProps & {
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
- }) => react_jsx_runtime.JSX.Element;
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 };
@@ -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.32.1",
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.10.2",
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.4",
54
+ "@backstage/core-components": "^0.17.5",
55
55
  "@backstage/core-plugin-api": "^1.10.9",
56
- "@backstage/plugin-catalog-react": "^1.19.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.32.1",
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.33.1",
91
- "@backstage/test-utils": "^1.7.10",
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",