@drodil/backstage-plugin-qeta 1.12.0 → 1.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/configSchema.d.ts CHANGED
@@ -5,8 +5,55 @@ export interface Config {
5
5
  * For example [System, Component, API, Location, Template]. Default is [Component, System].
6
6
  *
7
7
  * @visibility frontend
8
+ * @deprecated use `entities` config instead
8
9
  */
9
10
  entityKinds?: string[];
11
+ /**
12
+ * Entities configuration for questions.
13
+ *
14
+ * @visibility frontend
15
+ */
16
+ entities?: {
17
+ /**
18
+ * Determine what kind of entities can be attached to questions.
19
+ * For example [System, Component, API, Location, Template]. Default is [Component, System].
20
+ *
21
+ * @visibility frontend
22
+ */
23
+ kinds?: string[];
24
+ /**
25
+ * Maximum entities to attach to questions.
26
+ *
27
+ * @visibility frontend
28
+ */
29
+ max?: number;
30
+ };
31
+ /**
32
+ * Question tags specific configuration
33
+ *
34
+ * @visibility frontend
35
+ */
36
+ tags?: {
37
+ /**
38
+ * Allow creation of new tags. Default: true
39
+ *
40
+ * @visibility frontend
41
+ */
42
+ allowCreation?: boolean;
43
+ /**
44
+ * Allowed tags to be used with questions.
45
+ * Only valid if allowCreation is false.
46
+ *
47
+ * @visibility frontend
48
+ */
49
+ allowedTags?: string[];
50
+ /**
51
+ * Maximum number of tags per question. Default: 5
52
+ *
53
+ * @visibility frontend
54
+ */
55
+ max?: number;
56
+ };
10
57
  /**
11
58
  * If desire to disable image upload.
12
59
  * @visibility frontend
@@ -2,7 +2,7 @@ import React, { useEffect, useState } from 'react';
2
2
  import { Grid, useTheme, Tooltip, IconButton, Typography, Box, Modal, Backdrop, Button, Avatar, Divider, TextField, Card, CardContent, Container, Chip, List, ListSubheader, ListItem, ListItemText, Menu, MenuItem, ListItemIcon } from '@material-ui/core';
3
3
  import { Content, ContentHeader, InfoCard, Link, MarkdownContent, WarningPanel, Progress, Page, Header } from '@backstage/core-components';
4
4
  import { useParams, useNavigate, Routes, Route } from 'react-router-dom';
5
- import { B as BackToQuestionsButton, A as AskForm, q as qetaApiRef, u as useBasePath, a as useStyles, f as formatEntityName, T as TagsAndEntities, M as MarkdownEditor, b as useQetaApi, c as AskQuestionButton, Q as QuestionsContainer, S as StatisticsPage, d as useIdentityApi, e as TrophyIcon } from './index-d0c348c4.esm.js';
5
+ import { B as BackToQuestionsButton, A as AskForm, q as qetaApiRef, u as useBasePath, a as useStyles, f as formatEntityName, T as TagsAndEntities, M as MarkdownEditor, b as useQetaApi, c as AskQuestionButton, Q as QuestionsContainer, S as StatisticsPage, d as useIdentityApi, e as TrophyIcon } from './index-f3455bc5.esm.js';
6
6
  import ArrowDownward from '@material-ui/icons/ArrowDownward';
7
7
  import ArrowUpward from '@material-ui/icons/ArrowUpward';
8
8
  import Check from '@material-ui/icons/Check';
@@ -41,8 +41,11 @@ import '@material-ui/icons/Refresh';
41
41
  import '@material-ui/icons/HomeOutlined';
42
42
 
43
43
  const AskPage = () => {
44
+ var _a;
44
45
  const { id } = useParams();
45
- return /* @__PURE__ */ React.createElement(Content, { className: "qetaAskPage" }, /* @__PURE__ */ React.createElement(ContentHeader, { title: id ? "Edit question" : "Ask question" }, /* @__PURE__ */ React.createElement(BackToQuestionsButton, null)), /* @__PURE__ */ React.createElement(Grid, { container: true, spacing: 3, direction: "column" }, /* @__PURE__ */ React.createElement(Grid, { item: true }, /* @__PURE__ */ React.createElement(InfoCard, null, /* @__PURE__ */ React.createElement(AskForm, { id })))));
46
+ const params = new URLSearchParams(window.location.search);
47
+ const entity = (_a = params.get("entity")) != null ? _a : void 0;
48
+ return /* @__PURE__ */ React.createElement(Content, { className: "qetaAskPage" }, /* @__PURE__ */ React.createElement(ContentHeader, { title: id ? "Edit question" : "Ask question" }, /* @__PURE__ */ React.createElement(BackToQuestionsButton, null)), /* @__PURE__ */ React.createElement(Grid, { container: true, spacing: 3, direction: "column" }, /* @__PURE__ */ React.createElement(Grid, { item: true }, /* @__PURE__ */ React.createElement(InfoCard, null, /* @__PURE__ */ React.createElement(AskForm, { id, entity })))));
46
49
  };
47
50
 
48
51
  const VoteButtons = (props) => {
@@ -876,4 +879,4 @@ const HomePage = (props) => {
876
879
  };
877
880
 
878
881
  export { HomePage };
879
- //# sourceMappingURL=index-600a4b78.esm.js.map
882
+ //# sourceMappingURL=index-3a7b40c3.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-3a7b40c3.esm.js","sources":["../../src/components/AskPage/AskPage.tsx","../../src/components/QuestionPage/VoteButtons.tsx","../../src/components/DeleteModal/DeleteModal.tsx","../../src/components/QuestionPage/FavoriteButton.tsx","../../src/components/QuestionPage/AuthorBox.tsx","../../src/components/CommentSection/CommentList.tsx","../../src/components/CommentSection/CommentSection.tsx","../../src/components/QuestionPage/QuestionCard.tsx","../../src/components/QuestionPage/AnswerForm.tsx","../../src/components/QuestionPage/AnswerCard.tsx","../../src/components/QuestionPage/QuestionPage.tsx","../../src/components/TagPage/TagsContainer.tsx","../../src/components/TagPage/TagPage.tsx","../../src/components/UserPage/UserPage.tsx","../../src/components/QuestionHighlightList/QuestionHighlightList.tsx","../../src/components/FavoritePage/FavoritePage.tsx","../../src/components/HomePage/HomePage.tsx"],"sourcesContent":["import { Content, ContentHeader, InfoCard } from '@backstage/core-components';\nimport { Grid } from '@material-ui/core';\nimport React from 'react';\n\nimport { AskForm } from '../AskForm/AskForm';\nimport { useParams } from 'react-router-dom';\nimport { BackToQuestionsButton } from '../Buttons/BackToQuestionsButton';\n\nexport const AskPage = () => {\n const { id } = useParams();\n const params = new URLSearchParams(window.location.search);\n const entity = params.get('entity') ?? undefined;\n return (\n <Content className=\"qetaAskPage\">\n <ContentHeader title={id ? 'Edit question' : 'Ask question'}>\n <BackToQuestionsButton />\n </ContentHeader>\n <Grid container spacing={3} direction=\"column\">\n <Grid item>\n <InfoCard>\n <AskForm id={id} entity={entity} />\n </InfoCard>\n </Grid>\n </Grid>\n </Content>\n );\n};\n","import { AnswerResponse, qetaApiRef, QuestionResponse } from '../../api';\nimport {\n Box,\n IconButton,\n Tooltip,\n Typography,\n useTheme,\n} from '@material-ui/core';\nimport ArrowDownward from '@material-ui/icons/ArrowDownward';\nimport ArrowUpward from '@material-ui/icons/ArrowUpward';\nimport Check from '@material-ui/icons/Check';\nimport React from 'react';\nimport { useAnalytics, useApi } from '@backstage/core-plugin-api';\n\nexport const VoteButtons = (props: {\n entity: QuestionResponse | AnswerResponse;\n question?: QuestionResponse;\n}) => {\n const [ownVote, setOwnVote] = React.useState(props.entity.ownVote ?? 0);\n const analytics = useAnalytics();\n const isCorrectAnswer =\n 'questionId' in props.entity ? props.entity.correct : false;\n const [correct, setCorrect] = React.useState(isCorrectAnswer);\n const [entity, setEntity] = React.useState<QuestionResponse | AnswerResponse>(\n props.entity,\n );\n const qetaApi = useApi(qetaApiRef);\n const theme = useTheme();\n const isQuestion = 'title' in entity;\n const own = props.entity.own ?? false;\n\n const voteUp = () => {\n if (isQuestion) {\n qetaApi.voteQuestionUp(entity.id).then(response => {\n setOwnVote(1);\n analytics.captureEvent('vote', 'question', { value: 1 });\n setEntity(response);\n });\n } else if ('questionId' in entity) {\n qetaApi.voteAnswerUp(entity.questionId, 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 (isQuestion) {\n qetaApi.voteQuestionDown(entity.id).then(response => {\n setOwnVote(-1);\n analytics.captureEvent('vote', 'question', { value: -1 });\n setEntity(response);\n });\n } else if ('questionId' in entity) {\n qetaApi.voteAnswerDown(entity.questionId, entity.id).then(response => {\n setOwnVote(-1);\n analytics.captureEvent('vote', 'answer', { value: -1 });\n setEntity(response);\n });\n }\n };\n\n let correctTooltip = correct\n ? 'Mark answer as incorrect'\n : 'Mark answer as correct';\n if (!props.question?.own) {\n correctTooltip = correct ? 'This answer has been marked as correct' : '';\n }\n\n let voteUpTooltip = isQuestion\n ? 'This question is good'\n : 'This answer is good';\n if (own) {\n voteUpTooltip = isQuestion\n ? 'You cannot vote your own question'\n : 'You cannot vote your own answer';\n }\n\n let voteDownTooltip = isQuestion\n ? 'This question is not good'\n : 'This answer is not good';\n if (own) {\n voteDownTooltip = voteUpTooltip;\n }\n\n const toggleCorrectAnswer = () => {\n if (!('questionId' in entity)) {\n return;\n }\n if (correct) {\n qetaApi\n .markAnswerIncorrect(entity.questionId, entity.id)\n .then(response => {\n if (response) {\n setCorrect(false);\n }\n });\n } else {\n qetaApi.markAnswerCorrect(entity.questionId, entity.id).then(response => {\n setCorrect(response);\n });\n }\n };\n\n return (\n <React.Fragment>\n <Tooltip title={voteUpTooltip}>\n <span>\n <IconButton\n aria-label=\"vote up\"\n color={ownVote > 0 ? 'primary' : 'default'}\n className={ownVote > 0 ? 'qetaVoteUpSelected' : 'qetaVoteUp'}\n disabled={own}\n size=\"small\"\n onClick={voteUp}\n >\n <ArrowUpward />\n </IconButton>\n </span>\n </Tooltip>\n <Typography variant=\"h6\">{entity.score}</Typography>\n <Tooltip title={voteDownTooltip}>\n <span>\n <IconButton\n aria-label=\"vote down\"\n color={ownVote < 0 ? 'primary' : 'default'}\n className={ownVote < 0 ? 'qetaVoteDownSelected' : 'qetaVoteDown'}\n disabled={own}\n size=\"small\"\n onClick={voteDown}\n >\n <ArrowDownward />\n </IconButton>\n </span>\n </Tooltip>\n {'correct' in props.entity && (props.question?.own || correct) && (\n <Box>\n <Tooltip title={correctTooltip}>\n <span>\n <IconButton\n aria-label=\"mark correct\"\n size=\"small\"\n onClick={props.question?.own ? toggleCorrectAnswer : undefined}\n >\n <Check\n className={\n correct ? 'qetaCorrectAnswerSelected' : 'qetaCorrectAnswer'\n }\n style={{\n color: correct ? theme.palette.success.main : undefined,\n }}\n />\n </IconButton>\n </span>\n </Tooltip>\n </Box>\n )}\n </React.Fragment>\n );\n};\n","import { AnswerResponse, qetaApiRef, QuestionResponse } from '../../api';\nimport { Backdrop, Box, Button, Modal, Typography } from '@material-ui/core';\nimport { Alert } from '@material-ui/lab';\nimport Delete from '@material-ui/icons/Delete';\nimport React from 'react';\nimport { useBasePath, useStyles } from '../../utils/hooks';\nimport { useApi } from '@backstage/core-plugin-api';\nimport { useNavigate } from 'react-router-dom';\n\nexport const DeleteModal = (props: {\n entity: QuestionResponse | AnswerResponse;\n open: boolean;\n onClose: () => void;\n question?: QuestionResponse;\n}) => {\n const qetaApi = useApi(qetaApiRef);\n const base_path = useBasePath();\n const navigate = useNavigate();\n const { entity, open, question, onClose } = props;\n const styles = useStyles();\n const [error, setError] = React.useState(false);\n const isQuestion = 'title' in entity;\n\n const title = isQuestion\n ? 'Are you sure you want to delete this question?'\n : 'Are you sure you want to delete this answer?';\n\n const handleDelete = () => {\n if (isQuestion) {\n qetaApi\n .deleteQuestion(entity.id)\n .catch(_ => setError(true))\n .then(ret => {\n if (ret) {\n onClose();\n navigate(`${base_path}/qeta`);\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 window.location.reload();\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 <Box className={`qetaDeleteModalContent ${styles.deleteModal}`}>\n {error && <Alert severity=\"error\">Failed to delete</Alert>}\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 Delete\n </Button>\n <Button onClick={onClose} className=\"qetaDeleteModalCancelBtn\">\n Cancel\n </Button>\n </Box>\n </Modal>\n );\n};\n","import { qetaApiRef, QuestionResponse } from '../../api';\nimport { IconButton, Tooltip } from '@material-ui/core';\nimport React from 'react';\nimport { useApi } from '@backstage/core-plugin-api';\nimport StarIcon from '@material-ui/icons/Star';\nimport StarOutlineIcon from '@material-ui/icons/StarOutline';\n\nexport const FavoriteButton = (props: { entity: QuestionResponse }) => {\n const [entity, setEntity] = React.useState<QuestionResponse>(props.entity);\n const qetaApi = useApi(qetaApiRef);\n\n const favoriteQuestion = () => {\n qetaApi.favoriteQuestion(entity.id).then(response => {\n setEntity(response);\n });\n };\n\n const unfavoriteQuestion = () => {\n qetaApi.unfavoriteQuestion(entity.id).then(response => {\n setEntity(response);\n });\n };\n\n return (\n <React.Fragment>\n {entity.favorite ? (\n <Tooltip title=\"Remove this question from favorites\">\n <IconButton\n aria-label=\"unfavorite\"\n size=\"small\"\n onClick={unfavoriteQuestion}\n className=\"qetaUnfavoriteBtn\"\n >\n <StarIcon />\n </IconButton>\n </Tooltip>\n ) : (\n <Tooltip title=\"Mark this question as favorite\">\n <IconButton\n aria-label=\"favorite\"\n size=\"small\"\n onClick={favoriteQuestion}\n className=\"qetaFavoriteBtn\"\n >\n <StarOutlineIcon />\n </IconButton>\n </Tooltip>\n )}\n </React.Fragment>\n );\n};\n","import { Avatar, Box, Grid, Typography } from '@material-ui/core';\nimport { Link } from '@backstage/core-components';\nimport { formatEntityName } from '../../utils/utils';\nimport React, { useEffect } from 'react';\nimport { useStyles } from '../../utils/hooks';\n// @ts-ignore\nimport RelativeTime from 'react-relative-time';\nimport { AnswerResponse, QuestionResponse } from '../../api';\nimport { useApi } from '@backstage/core-plugin-api';\nimport { catalogApiRef } from '@backstage/plugin-catalog-react';\nimport { UserEntity } from '@backstage/catalog-model';\n\nexport const AuthorBox = (props: {\n entity: QuestionResponse | AnswerResponse;\n}) => {\n const { entity } = props;\n const catalogApi = useApi(catalogApiRef);\n const [user, setUser] = React.useState<UserEntity | null>(null);\n const styles = useStyles();\n useEffect(() => {\n catalogApi\n .getEntityByRef(entity.author)\n .catch(_ => setUser(null))\n .then(data => (data ? setUser(data as UserEntity) : setUser(null)));\n }, [catalogApi, entity]);\n\n const name = formatEntityName(entity.author);\n const initials = (name ?? '')\n .split(' ')\n .map(p => p[0])\n .join('')\n .substring(0, 2)\n .toUpperCase();\n\n return (\n <Box className={`qetaAuthorBox ${styles.questionCardAuthor}`}>\n <Grid container alignItems=\"center\">\n <Grid item xs={12} style={{ paddingBottom: 0 }}>\n <Typography className=\"qetaAuthorBoxCreated\" variant=\"caption\">\n Posted <RelativeTime value={entity.created} />\n </Typography>\n </Grid>\n {entity.updated && (\n <Grid item xs={12} style={{ paddingBottom: 0, paddingTop: 0 }}>\n <Typography className=\"qetaAuthorBoxUpdated\" variant=\"caption\">\n Updated <RelativeTime value={entity.updated} />\n </Typography>\n </Grid>\n )}\n <Grid item xs={2}>\n <Avatar\n src={user?.spec.profile?.picture}\n className=\"qetaAuthorBoxAvatar avatar\"\n alt={name}\n variant=\"rounded\"\n >\n {initials}\n </Avatar>\n </Grid>\n <Grid item xs={10} className={styles.authorLink}>\n <Link className=\"qetaUserBtn\" to={`/qeta/users/${entity.author}`}>\n {name}\n </Link>\n </Grid>\n </Grid>\n </Box>\n );\n};\n","import { AnswerResponse, qetaApiRef, QuestionResponse } from '../../api';\nimport { Box, Divider, Typography } from '@material-ui/core';\nimport React from 'react';\nimport { Link, MarkdownContent } from '@backstage/core-components';\nimport { formatEntityName } from '../../utils/utils';\nimport { useStyles } from '../../utils/hooks';\n// @ts-ignore\nimport RelativeTime from 'react-relative-time';\nimport { useApi } from '@backstage/core-plugin-api';\n\nexport const CommentList = (props: {\n onCommentDelete: (\n question: QuestionResponse,\n answer?: AnswerResponse,\n ) => void;\n question: QuestionResponse;\n answer?: AnswerResponse;\n}) => {\n const { question, answer, onCommentDelete } = props;\n const entity = answer ?? question;\n const styles = useStyles();\n const qetaApi = useApi(qetaApiRef);\n\n const deleteComment = (id: number) => {\n if (answer) {\n qetaApi.deleteAnswerComment(question.id, answer.id, id).then(a => {\n onCommentDelete(question, a);\n return;\n });\n }\n qetaApi\n .deleteQuestionComment(question.id, id)\n .then(q => onCommentDelete(q));\n };\n\n return (\n <>\n {entity.comments?.map(c => {\n const name = formatEntityName(c.author);\n return (\n <>\n <Box key={c.id} className=\"qetaCommentBox\">\n <MarkdownContent\n dialect=\"gfm\"\n content={c.content}\n className={`${styles.markdownContent} inline`}\n />\n {' – '}\n <Link to={`/qeta/users/${c.author}`} className=\"qetaUserBtn\">\n {name}\n </Link>{' '}\n <Typography variant=\"caption\" className=\"qetaCommentTime\">\n <RelativeTime value={c.created} />\n </Typography>\n {c.own && (\n <>\n {' / '}\n <Link\n underline=\"none\"\n to=\"#\"\n className=\"qetaCommentDeleteBtn\"\n onClick={() => deleteComment(c.id)}\n >\n delete\n </Link>\n </>\n )}\n </Box>\n <Divider />\n </>\n );\n })}\n </>\n );\n};\n","import React, { useState } from 'react';\nimport { Box, Button, Grid, TextField } from '@material-ui/core';\nimport { Link } from '@backstage/core-components';\nimport { AnswerResponse, qetaApiRef, QuestionResponse } from '../../api';\nimport { Controller, useForm } from 'react-hook-form';\nimport { useAnalytics, useApi } from '@backstage/core-plugin-api';\nimport { CommentList } from './CommentList';\n\nexport const CommentSection = (props: {\n onCommentPost: (question: QuestionResponse, answer?: AnswerResponse) => void;\n onCommentDelete: (\n question: QuestionResponse,\n answer?: AnswerResponse,\n ) => void;\n question: QuestionResponse;\n answer?: AnswerResponse;\n}) => {\n const { answer, question, onCommentPost, onCommentDelete } = props;\n const analytics = useAnalytics();\n const qetaApi = useApi(qetaApiRef);\n const [formVisible, setFormVisible] = useState(false);\n const {\n handleSubmit,\n control,\n formState: { errors },\n reset,\n } = useForm<{ content: string }>({});\n\n const postComment = (data: { content: string }) => {\n if (answer) {\n qetaApi.commentAnswer(question.id, answer.id, data.content).then(a => {\n setFormVisible(false);\n analytics.captureEvent('comment', 'answer');\n reset();\n onCommentPost(question, a);\n });\n return;\n }\n\n qetaApi.commentQuestion(question.id, data.content).then(q => {\n setFormVisible(false);\n analytics.captureEvent('comment', 'question');\n reset();\n onCommentPost(q);\n });\n };\n\n return (\n <Box marginLeft={9} className=\"qetaCommentSection\">\n <CommentList\n question={question}\n answer={answer}\n onCommentDelete={onCommentDelete}\n />\n {!formVisible && (\n <Link\n underline=\"none\"\n to=\"#\"\n className=\"qetaAddCommentBtn\"\n onClick={() => setFormVisible(true)}\n >\n Add comment\n </Link>\n )}\n {formVisible && (\n <form onSubmit={handleSubmit(postComment)} className=\"qetaCommentForm\">\n <Grid container>\n <Grid item xs={11}>\n <Controller\n control={control}\n defaultValue=\"\"\n rules={{\n required: true,\n }}\n render={({ field: { onChange, value } }) => (\n <TextField\n id=\"comment\"\n multiline\n minRows={2}\n fullWidth\n className=\"qetaCommentInput\"\n value={value}\n placeholder=\"Your commment\"\n onChange={onChange}\n variant=\"outlined\"\n error={'content' in errors}\n />\n )}\n name=\"content\"\n />\n </Grid>\n <Grid item xs={1}>\n <Button\n variant=\"contained\"\n size=\"small\"\n className=\"qetaCommentBtn\"\n type=\"submit\"\n color=\"primary\"\n >\n Post\n </Button>\n </Grid>\n </Grid>\n </form>\n )}\n </Box>\n );\n};\n","import { AnswerResponse, QuestionResponse } from '../../api';\nimport { Box, Card, CardContent, Grid, Typography } from '@material-ui/core';\nimport { Link, MarkdownContent } from '@backstage/core-components';\nimport React from 'react';\nimport { VoteButtons } from './VoteButtons';\nimport { useStyles } from '../../utils/hooks';\n// @ts-ignore\nimport RelativeTime from 'react-relative-time';\nimport { DeleteModal } from '../DeleteModal/DeleteModal';\nimport { FavoriteButton } from './FavoriteButton';\nimport { AuthorBox } from './AuthorBox';\nimport { TagsAndEntities } from './TagsAndEntities';\nimport 'react-mde/lib/styles/css/react-mde-preview.css';\nimport { CommentSection } from '../CommentSection/CommentSection';\n\nexport const QuestionCard = (props: { question: QuestionResponse }) => {\n const { question } = props;\n const styles = useStyles();\n const [deleteModalOpen, setDeleteModalOpen] = React.useState(false);\n const [questionEntity, setQuestionEntity] = React.useState(question);\n const handleDeleteModalOpen = () => setDeleteModalOpen(true);\n const handleDeleteModalClose = () => setDeleteModalOpen(false);\n const onCommentAction = (q: QuestionResponse, _?: AnswerResponse) => {\n setQuestionEntity(q);\n };\n\n return (\n <>\n <Card\n variant=\"outlined\"\n className={`qetaQuestionCard ${styles.questionCard}`}\n >\n <CardContent>\n <div className={styles.questionCardVote}>\n <VoteButtons entity={questionEntity} />\n <FavoriteButton entity={questionEntity} />\n </div>\n <div className={styles.questionCardContent}>\n <Typography variant=\"body1\" gutterBottom>\n <MarkdownContent\n content={questionEntity.content}\n dialect=\"gfm\"\n className={styles.markdownContent}\n />\n </Typography>\n <Box className={styles.questionCardMetadata}>\n <Grid container spacing={0}>\n <Grid item>\n <TagsAndEntities question={questionEntity} />\n </Grid>\n </Grid>\n <Grid container justifyContent=\"space-around\">\n <Grid item xs={9}>\n {question.own && (\n <Box className={styles.questionCardActions}>\n <Link\n underline=\"none\"\n to=\"#\"\n onClick={handleDeleteModalOpen}\n className=\"qetaQuestionCardDeleteBtn\"\n >\n Delete\n </Link>\n <Link\n underline=\"none\"\n to={`/qeta/questions/${questionEntity.id}/edit`}\n className=\"qetaQuestionCardEditBtn\"\n >\n Edit\n </Link>\n <DeleteModal\n open={deleteModalOpen}\n onClose={handleDeleteModalClose}\n entity={questionEntity}\n />\n </Box>\n )}\n </Grid>\n <Grid item xs={3}>\n <AuthorBox entity={questionEntity} />\n </Grid>\n </Grid>\n </Box>\n </div>\n </CardContent>\n </Card>\n <CommentSection\n question={questionEntity}\n onCommentDelete={onCommentAction}\n onCommentPost={onCommentAction}\n />\n </>\n );\n};\n","import { WarningPanel } from '@backstage/core-components';\nimport { Button, Typography } from '@material-ui/core';\nimport React, { useEffect } from 'react';\nimport { configApiRef, useAnalytics, useApi } from '@backstage/core-plugin-api';\nimport {\n AnswerRequest,\n AnswerResponse,\n qetaApiRef,\n QuestionResponse,\n} from '../../api';\nimport { useStyles } from '../../utils/hooks';\nimport { Controller, useForm } from 'react-hook-form';\nimport { MarkdownEditor } from '../MarkdownEditor/MarkdownEditor';\nimport { RequirePermission } from '@backstage/plugin-permission-react';\nimport { qetaCreateAnswerPermission } from '@drodil/backstage-plugin-qeta-common';\n\nconst getDefaultValues = (questionId: number) => {\n return { questionId, answer: '' };\n};\n\nexport const AnswerForm = (props: {\n question: QuestionResponse;\n onPost: (answer: AnswerResponse) => void;\n id?: number;\n}) => {\n const { question, onPost, id } = props;\n const [values, setValues] = React.useState(getDefaultValues(question.id));\n const analytics = useAnalytics();\n const [error, setError] = React.useState(false);\n const [images, setImages] = React.useState<number[]>([]);\n const qetaApi = useApi(qetaApiRef);\n const styles = useStyles();\n const configApi = useApi(configApiRef);\n\n const {\n handleSubmit,\n control,\n formState: { errors },\n reset,\n } = useForm<AnswerRequest>({\n values,\n defaultValues: getDefaultValues(question.id),\n });\n\n const postAnswer = (data: AnswerRequest) => {\n if (id) {\n qetaApi\n .updateAnswer(id, {\n questionId: question.id,\n answer: data.answer,\n images,\n })\n .then(a => {\n if (!a || !('id' in a)) {\n setError(true);\n return;\n }\n analytics.captureEvent('edit', 'answer');\n reset();\n onPost(a);\n })\n .catch(_e => setError(true));\n return;\n }\n // http://localhost:7007/api/qeta/attachments/36e551b1-3be7-479a-8942-b7018434e710\n qetaApi\n .postAnswer({ questionId: question.id, answer: data.answer, images })\n .then(a => {\n if (!a || !('id' in a)) {\n setError(true);\n return;\n }\n analytics.captureEvent('post', 'answer');\n reset();\n onPost(a);\n })\n .catch(_e => setError(true));\n };\n\n useEffect(() => {\n if (id) {\n qetaApi.getAnswer(question.id, id).then(a => {\n if ('content' in a) {\n setValues({ questionId: question.id, answer: a.content });\n } else {\n setError(true);\n }\n });\n }\n }, [id, question, qetaApi]);\n\n useEffect(() => {\n reset(values);\n }, [values, reset]);\n\n return (\n <RequirePermission\n permission={qetaCreateAnswerPermission}\n errorPage={<></>}\n >\n <form onSubmit={handleSubmit(postAnswer)} className=\"qetaAnswerForm\">\n <Typography variant=\"h6\">Your answer</Typography>\n {error && (\n <WarningPanel severity=\"error\" title=\"Could not post answer\" />\n )}\n <Controller\n control={control}\n defaultValue=\"\"\n rules={{\n required: true,\n }}\n render={({ field: { onChange, value } }) => (\n <MarkdownEditor\n value={value}\n onChange={onChange}\n height={200}\n error={'answer' in errors}\n config={configApi}\n onImageUpload={(imageId: number) => {\n setImages(prevImages => [...prevImages, imageId]);\n }}\n />\n )}\n name=\"answer\"\n />\n <Button\n variant=\"outlined\"\n type=\"submit\"\n color=\"primary\"\n className={`qetaAnswerFormPostBtn ${styles.postButton}`}\n >\n {id ? 'Save' : 'Post'}\n </Button>\n </form>\n </RequirePermission>\n );\n};\n","import { AnswerResponse, QuestionResponse } from '../../api';\nimport { Box, Card, CardContent, Grid, Typography } from '@material-ui/core';\nimport { Link, MarkdownContent } from '@backstage/core-components';\nimport React from 'react';\nimport { VoteButtons } from './VoteButtons';\nimport { useStyles } from '../../utils/hooks';\nimport { DeleteModal } from '../DeleteModal/DeleteModal';\nimport { AnswerForm } from './AnswerForm';\n// @ts-ignore\nimport RelativeTime from 'react-relative-time';\nimport { AuthorBox } from './AuthorBox';\nimport { CommentSection } from '../CommentSection/CommentSection';\n\nexport const AnswerCard = (props: {\n answer: AnswerResponse;\n question: QuestionResponse;\n}) => {\n const { answer, question } = props;\n const styles = useStyles();\n\n const [editMode, setEditMode] = React.useState(false);\n const [answerEntity, setAnswerEntity] = React.useState(answer);\n\n const [deleteModalOpen, setDeleteModalOpen] = React.useState(false);\n const handleDeleteModalOpen = () => setDeleteModalOpen(true);\n const handleDeleteModalClose = () => setDeleteModalOpen(false);\n\n const onAnswerEdit = (a: AnswerResponse) => {\n setEditMode(false);\n setAnswerEntity(a);\n };\n\n const onCommentAction = (_: QuestionResponse, a?: AnswerResponse) => {\n if (a) {\n setAnswerEntity(a);\n }\n };\n\n return (\n <>\n <Card\n id={`a${answer.id}`}\n className={`qetaAnswerCard ${styles.questionCard}`}\n >\n <CardContent>\n <div className={styles.questionCardVote}>\n <VoteButtons entity={answerEntity} question={question} />\n </div>\n <div className={styles.questionCardContent}>\n {editMode ? (\n <AnswerForm\n question={question}\n onPost={onAnswerEdit}\n id={answerEntity.id}\n />\n ) : (\n <>\n <Typography variant=\"body1\" gutterBottom>\n <MarkdownContent\n className={`qetaAndswerCardAnswerContent ${styles.markdownContent}`}\n content={answerEntity.content}\n dialect=\"gfm\"\n />\n </Typography>\n <Grid container justifyContent=\"space-around\">\n <Grid item xs={9}>\n {answerEntity.own && (\n <Box\n className={`qetaAnswerCardActions ${styles.questionCardActions}`}\n >\n {!answerEntity.correct && (\n <Link\n underline=\"none\"\n to=\"#\"\n onClick={handleDeleteModalOpen}\n className=\"qetaAnswerCardDeleteBtn\"\n >\n Delete\n </Link>\n )}\n <Link\n underline=\"none\"\n to=\"#\"\n onClick={() => setEditMode(true)}\n className=\"qetaAnswerCardEditBtn\"\n >\n Edit\n </Link>\n <DeleteModal\n open={deleteModalOpen}\n onClose={handleDeleteModalClose}\n entity={answerEntity}\n question={question}\n />\n </Box>\n )}\n </Grid>\n <Grid item xs={3}>\n <AuthorBox entity={answerEntity} />\n </Grid>\n </Grid>\n </>\n )}\n </div>\n </CardContent>\n </Card>\n <CommentSection\n question={question}\n answer={answerEntity}\n onCommentPost={onCommentAction}\n onCommentDelete={onCommentAction}\n />\n </>\n );\n};\n","import React from 'react';\nimport { Box, Container, Divider, Typography } from '@material-ui/core';\nimport {\n Content,\n ContentHeader,\n WarningPanel,\n} from '@backstage/core-components';\nimport { useParams } from 'react-router-dom';\nimport { useQetaApi, useStyles } from '../../utils/hooks';\nimport { QuestionCard } from './QuestionCard';\nimport { AnswerResponse, QuestionResponse } from '../../api';\n// @ts-ignore\nimport RelativeTime from 'react-relative-time';\nimport { AnswerForm } from './AnswerForm';\nimport { AnswerCard } from './AnswerCard';\nimport { Skeleton } from '@material-ui/lab';\nimport { AskQuestionButton } from '../Buttons/AskQuestionButton';\nimport { BackToQuestionsButton } from '../Buttons/BackToQuestionsButton';\n\nexport const QuestionPage = () => {\n const { id } = useParams();\n const styles = useStyles();\n const [newAnswers, setNewAnswers] = React.useState<AnswerResponse[]>([]);\n\n const {\n value: question,\n loading,\n error,\n } = useQetaApi(api => api.getQuestion(id), [id]);\n\n const onAnswerPost = (answer: AnswerResponse) => {\n setNewAnswers(newAnswers.concat([answer]));\n };\n\n const getDescription = (q: QuestionResponse) => {\n return (\n <span>\n Asked{' '}\n <Box fontWeight=\"fontWeightMedium\" display=\"inline\" sx={{ mr: 2 }}>\n <RelativeTime value={q.created} />\n </Box>\n {q.updated && (\n <React.Fragment>\n Updated{' '}\n <Box fontWeight=\"fontWeightMedium\" display=\"inline\" sx={{ mr: 2 }}>\n <RelativeTime value={q.updated} />\n </Box>\n </React.Fragment>\n )}\n Viewed{' '}\n <Box fontWeight=\"fontWeightMedium\" display=\"inline\">\n {q.views} times\n </Box>\n </span>\n );\n };\n\n if (loading) {\n return <Skeleton variant=\"rect\" height={200} />;\n }\n\n if (error || question === undefined) {\n return (\n <WarningPanel severity=\"error\" title=\"Could not load question.\">\n {error?.message}\n </WarningPanel>\n );\n }\n\n return (\n <Content>\n <Container maxWidth=\"lg\">\n <ContentHeader\n title={question.title}\n // @ts-ignore\n description={getDescription(question)}\n >\n <AskQuestionButton />\n <BackToQuestionsButton />\n </ContentHeader>\n <QuestionCard question={question} />\n <Box sx={{ mt: 3, mb: 2 }}>\n <Typography variant=\"h6\">\n {question.answersCount + newAnswers.length} answers\n </Typography>\n </Box>\n {(question.answers ?? []).concat(newAnswers).map(a => {\n return (\n <>\n <Divider className={styles.questionDivider} />\n <Box key={a.id} sx={{ mb: 1 }}>\n <AnswerCard answer={a} question={question} />\n </Box>\n </>\n );\n })}\n <Divider className={styles.questionDivider} />\n <AnswerForm question={question} onPost={onAnswerPost} />\n </Container>\n </Content>\n );\n};\n","import {\n Avatar,\n Chip,\n Grid,\n IconButton,\n TextField,\n Typography,\n} from '@material-ui/core';\nimport React from 'react';\nimport { useQetaApi } from '../../utils/hooks';\nimport { Progress, WarningPanel } from '@backstage/core-components';\nimport { TagResponse } from '../../api';\n\nexport const TagsContainer = () => {\n const [searchQuery, setSearchQuery] = React.useState('');\n const {\n value: response,\n loading,\n error,\n } = useQetaApi(api => api.getTags(), []);\n\n if (loading) {\n return <Progress />;\n }\n\n if (error || response === undefined) {\n return (\n <WarningPanel severity=\"error\" title=\"Could not load tags.\">\n {error?.message}\n </WarningPanel>\n );\n }\n\n const filterData = (query: string, data: TagResponse[]) => {\n if (!query) {\n return data;\n }\n return data.filter(t => t.tag.toLowerCase().includes(query));\n };\n\n const tags = filterData(searchQuery, response);\n\n return (\n <Grid container className=\"qetaTagsContainer\">\n <Grid item xs={12}>\n <TextField\n id=\"search-bar\"\n className=\"text qetaTagsContainerSearchInput\"\n onChange={(\n event: React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>,\n ) => setSearchQuery(event.target.value)}\n label=\"Search tag\"\n variant=\"outlined\"\n placeholder=\"Search...\"\n size=\"small\"\n />\n <IconButton type=\"submit\" aria-label=\"search\" />\n </Grid>\n <Grid item xs={12}>\n <Typography\n variant=\"h6\"\n className=\"qetaTagsContainerTitle\"\n >{`Showing ${tags.length} tags`}</Typography>\n </Grid>\n <Grid item>\n {tags.map(tag => (\n <Chip\n key={tag.tag}\n variant=\"outlined\"\n avatar={<Avatar>{tag.questionsCount}</Avatar>}\n label={tag.tag}\n className=\"qetaTagsContainerChip\"\n component=\"a\"\n clickable\n href={`/qeta/tags/${tag.tag}`}\n />\n ))}\n </Grid>\n </Grid>\n );\n};\n","import React from 'react';\nimport { Content, ContentHeader } from '@backstage/core-components';\nimport { useParams } from 'react-router-dom';\n// @ts-ignore\nimport RelativeTime from 'react-relative-time';\nimport { QuestionsContainer } from '../QuestionsContainer/QuestionsContainer';\nimport { TagsContainer } from './TagsContainer';\nimport { AskQuestionButton } from '../Buttons/AskQuestionButton';\nimport { Container } from '@material-ui/core';\nimport { BackToQuestionsButton } from '../Buttons/BackToQuestionsButton';\n\nexport const TagPage = () => {\n const { tag } = useParams();\n return (\n <Content>\n <Container maxWidth=\"lg\">\n <ContentHeader title={tag ? `Questions tagged [${tag}]` : 'Tags'}>\n <BackToQuestionsButton />\n <AskQuestionButton />\n </ContentHeader>\n {tag ? <QuestionsContainer tags={[tag ?? '']} /> : <TagsContainer />}\n </Container>\n </Content>\n );\n};\n","import React from 'react';\nimport { Content, ContentHeader } from '@backstage/core-components';\nimport { useParams } from 'react-router-dom';\n// @ts-ignore\nimport RelativeTime from 'react-relative-time';\nimport { QuestionsContainer } from '../QuestionsContainer/QuestionsContainer';\nimport { formatEntityName } from '../../utils/utils';\nimport { AskQuestionButton } from '../Buttons/AskQuestionButton';\nimport { Container } from '@material-ui/core';\nimport { BackToQuestionsButton } from '../Buttons/BackToQuestionsButton';\n\nexport const UserPage = () => {\n const identity = useParams()['*'] ?? 'unknown';\n return (\n <Content>\n <Container maxWidth=\"lg\">\n <ContentHeader title={`Questions by ${formatEntityName(identity)}`}>\n <BackToQuestionsButton />\n <AskQuestionButton />\n </ContentHeader>\n <QuestionsContainer author={identity ?? ''} />\n </Container>\n </Content>\n );\n};\n","import {\n Box,\n Divider,\n List,\n ListItem,\n ListItemText,\n ListSubheader,\n} from '@material-ui/core';\nimport React from 'react';\nimport { useQetaApi, useStyles } from '../../utils/hooks';\nimport { Skeleton } from '@material-ui/lab';\n\nexport const QuestionHighlightList = (props: {\n type: string;\n title: string;\n noQuestionsLabel: string;\n icon?: JSX.Element;\n}) => {\n const {\n value: response,\n loading,\n error,\n } = useQetaApi(api => api.getQuestionsList(props.type), []);\n const classes = useStyles();\n\n const questions = response?.questions ?? [];\n\n return (\n <Box\n className={`qetaQuestionHighlightList ${classes.questionHighlightList}`}\n display={{ md: 'none', lg: 'block' }}\n >\n <List\n component=\"nav\"\n aria-labelledby=\"nested-list-subheader\"\n className=\"qetaQuestionHighlightListList\"\n subheader={\n <ListSubheader\n component=\"div\"\n id=\"nested-list-subheader\"\n color=\"primary\"\n >\n {props.title}\n {props.icon}\n </ListSubheader>\n }\n >\n {loading && (\n <ListItem>\n <Skeleton variant=\"rect\" />\n </ListItem>\n )}\n {error && (\n <ListItem>\n <ListItemText>Failed to load questions</ListItemText>\n </ListItem>\n )}\n {!error && questions.length === 0 && (\n <ListItem>\n <ListItemText>{props.noQuestionsLabel}</ListItemText>\n </ListItem>\n )}\n {!error &&\n questions.map(q => (\n <React.Fragment key={q.id}>\n <Divider />\n <ListItem\n className=\"qetaQuestionHighlightListListItem\"\n button\n dense\n component=\"a\"\n href={`/qeta/questions/${q.id}`}\n >\n <ListItemText>{q.title}</ListItemText>\n </ListItem>\n </React.Fragment>\n ))}\n </List>\n </Box>\n );\n};\n","import React from 'react';\nimport { Content, ContentHeader } from '@backstage/core-components';\n// @ts-ignore\nimport RelativeTime from 'react-relative-time';\nimport { QuestionsContainer } from '../QuestionsContainer/QuestionsContainer';\nimport { AskQuestionButton } from '../Buttons/AskQuestionButton';\nimport { Container } from '@material-ui/core';\nimport { BackToQuestionsButton } from '../Buttons/BackToQuestionsButton';\n\nexport const FavoritePage = () => {\n return (\n <Content className=\"qetaFavoritePage\">\n <Container maxWidth=\"lg\">\n <ContentHeader title=\"Your favorite questions\">\n <BackToQuestionsButton />\n <AskQuestionButton />\n </ContentHeader>\n <QuestionsContainer favorite />\n </Container>\n </Content>\n );\n};\n","import React from 'react';\nimport {\n Container,\n Grid,\n IconButton,\n ListItemIcon,\n Menu,\n MenuItem,\n Tooltip,\n} from '@material-ui/core';\nimport {\n Content,\n ContentHeader,\n Header,\n Page,\n} from '@backstage/core-components';\nimport { Route, Routes } from 'react-router-dom';\nimport { AskPage } from '../AskPage';\nimport { QuestionPage } from '../QuestionPage/QuestionPage';\nimport { QuestionsContainer } from '../QuestionsContainer/QuestionsContainer';\nimport { TagPage } from '../TagPage/TagPage';\nimport { UserPage } from '../UserPage/UserPage';\nimport LoyaltyOutlined from '@material-ui/icons/LoyaltyOutlined';\nimport { QuestionHighlightList } from '../QuestionHighlightList/QuestionHighlightList';\nimport { useIdentityApi, useStyles } from '../../utils/hooks';\nimport Whatshot from '@material-ui/icons/Whatshot';\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\nimport StarIcon from '@material-ui/icons/Star';\nimport AccountBox from '@material-ui/icons/AccountBox';\nimport { FavoritePage } from '../FavoritePage/FavoritePage';\nimport { AskQuestionButton } from '../Buttons/AskQuestionButton';\nimport { StatisticsPage, TrophyIcon } from '../Statistics';\n\nconst MoreMenu = () => {\n const [anchorEl, setAnchorEl] = React.useState(null);\n const open = Boolean(anchorEl);\n const styles = useStyles();\n const {\n value: user,\n loading: loadingUser,\n error: userError,\n } = useIdentityApi(api => api.getBackstageIdentity(), []);\n\n const handleMenuOpen = (event: any) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleMenuClose = () => {\n setAnchorEl(null);\n };\n\n return (\n <>\n <Tooltip arrow title=\"More\">\n <IconButton\n aria-label=\"more\"\n aria-controls=\"long-menu\"\n aria-haspopup=\"true\"\n onClick={handleMenuOpen}\n >\n <MoreVertIcon />\n </IconButton>\n </Tooltip>\n <Menu\n id=\"long-menu\"\n anchorEl={anchorEl}\n keepMounted\n open={open}\n getContentAnchorEl={null}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'center',\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'center',\n }}\n onClose={handleMenuClose}\n >\n <MenuItem component=\"a\" href=\"/qeta/tags\">\n <ListItemIcon className={styles.menuIcon}>\n <LoyaltyOutlined fontSize=\"small\" />\n </ListItemIcon>\n Tags\n </MenuItem>\n {user && !loadingUser && !userError && (\n <MenuItem component=\"a\" href={`/qeta/users/${user?.userEntityRef}`}>\n <ListItemIcon className={styles.menuIcon}>\n <AccountBox fontSize=\"small\" />\n </ListItemIcon>\n My questions\n </MenuItem>\n )}\n <MenuItem component=\"a\" href=\"/qeta/questions/favorite\">\n <ListItemIcon className={styles.menuIcon}>\n <StarIcon fontSize=\"small\" />\n </ListItemIcon>\n Favorite questions\n </MenuItem>\n <MenuItem component=\"a\" href=\"/qeta/statistics\">\n <ListItemIcon className={styles.menuIcon}>\n <TrophyIcon />\n </ListItemIcon>\n Statistics\n </MenuItem>\n </Menu>\n </>\n );\n};\n\nexport const HomePageContent = () => {\n return (\n <Content className=\"qetaHomePage\">\n <Container maxWidth=\"lg\">\n <Grid container spacing={3}>\n <Grid item xs={12} lg={9} xl={10}>\n <ContentHeader title=\"All questions\">\n <MoreMenu />\n <AskQuestionButton />\n </ContentHeader>\n <QuestionsContainer />\n </Grid>\n <Grid item lg={3} xl={2}>\n <QuestionHighlightList\n type=\"hot\"\n title=\"Hot questions\"\n noQuestionsLabel=\"No questions\"\n icon={<Whatshot fontSize=\"small\" />}\n />\n <QuestionHighlightList\n type=\"unanswered\"\n title=\"Unanswered questions\"\n noQuestionsLabel=\"No unanswered questions\"\n />\n <QuestionHighlightList\n type=\"incorrect\"\n title=\"Questions without correct answer\"\n noQuestionsLabel=\"No questions without correct answers\"\n />\n </Grid>\n </Grid>\n </Container>\n </Content>\n );\n};\n\ntype Props = {\n title?: string;\n subtitle?: string;\n headerElements?: JSX.Element[];\n};\n\nexport const HomePage = (props: Props) => (\n <Page themeId=\"tool\">\n <Header title={props.title ?? 'Q&A'} subtitle={props.subtitle}>\n {props.headerElements}\n </Header>\n <Routes>\n <Route path=\"/\" element={<HomePageContent />} />\n <Route path=\"/ask\" element={<AskPage />} />\n <Route path=\"/questions/favorite\" element={<FavoritePage />} />\n <Route path=\"/questions/:id/edit\" element={<AskPage />} />\n <Route path=\"/questions/:id\" element={<QuestionPage />} />\n <Route path=\"/tags\" element={<TagPage />} />\n <Route path=\"/tags/:tag\" element={<TagPage />} />\n <Route path=\"/users/*\" element={<UserPage />} />\n <Route path=\"/statistics\" element={<StatisticsPage />} />\n </Routes>\n </Page>\n);\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export { C as Content, g as QuestionsTable } from './index-d0c348c4.esm.js';
1
+ export { C as Content, g as QuestionsTable } from './index-f3455bc5.esm.js';
2
2
  import '@backstage/core-plugin-api';
3
3
  import '@backstage/plugin-home';
4
4
  import '@backstage/errors';
@@ -18,6 +18,8 @@ import '@material-ui/lab';
18
18
  import '@material-ui/icons/HelpOutline';
19
19
  import '@material-ui/icons/FilterList';
20
20
  import 'react-router-dom';
21
+ import '@backstage/plugin-permission-react';
22
+ import '@drodil/backstage-plugin-qeta-common';
21
23
  import 'react-hook-form';
22
24
  import 'react-mde';
23
25
  import 'react-mde/lib/styles/css/react-mde.css';
@@ -25,7 +27,5 @@ import 'react-mde/lib/styles/css/react-mde-editor.css';
25
27
  import 'react-mde/lib/styles/css/react-mde-toolbar.css';
26
28
  import 'file-type';
27
29
  import '@material-ui/icons/Refresh';
28
- import '@backstage/plugin-permission-react';
29
- import '@drodil/backstage-plugin-qeta-common';
30
30
  import '@material-ui/icons/HomeOutlined';
31
- //# sourceMappingURL=index-44c96bf9.esm.js.map
31
+ //# sourceMappingURL=index-8eedc9e7.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-8eedc9e7.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}