@drodil/backstage-plugin-qeta-react 3.59.1 → 3.59.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. package/dist/alpha.esm.js.map +1 -1
  2. package/dist/api.esm.js.map +1 -1
  3. package/dist/components/AIAnswerCard/AIAnswerCard.esm.js +1 -1
  4. package/dist/components/AIAnswerCard/AIAnswerCard.esm.js.map +1 -1
  5. package/dist/components/AnswerCard/AnswerCard.esm.js.map +1 -1
  6. package/dist/components/AnswerForm/AnswerForm.esm.js +1 -1
  7. package/dist/components/AnswerForm/AnswerForm.esm.js.map +1 -1
  8. package/dist/components/AnswersContainer/AnswerListItem.esm.js.map +1 -1
  9. package/dist/components/AnswersContainer/AnswersContainer.esm.js.map +1 -1
  10. package/dist/components/AnswersContainer/AnswersGridItem.esm.js.map +1 -1
  11. package/dist/components/ArticleContent/ArticleButtons.esm.js.map +1 -1
  12. package/dist/components/ArticleContent/ArticleContent.esm.js.map +1 -1
  13. package/dist/components/AuthorBox/AuthorBox.esm.js.map +1 -1
  14. package/dist/components/AuthorBox/AuthorBoxes.esm.js.map +1 -1
  15. package/dist/components/Badges/BadgeChip.esm.js.map +1 -1
  16. package/dist/components/Badges/UserBadges.esm.js.map +1 -1
  17. package/dist/components/Buttons/AddToCollectionButton.esm.js.map +1 -1
  18. package/dist/components/Buttons/AskQuestionButton.esm.js.map +1 -1
  19. package/dist/components/Buttons/ButtonContainer.esm.js.map +1 -1
  20. package/dist/components/Buttons/CollectionFollowButton.esm.js.map +1 -1
  21. package/dist/components/Buttons/ContentHeaderButton.esm.js.map +1 -1
  22. package/dist/components/Buttons/CreateCollectionButton.esm.js.map +1 -1
  23. package/dist/components/Buttons/CreateLinkButton.esm.js.map +1 -1
  24. package/dist/components/Buttons/EntityFollowButton.esm.js.map +1 -1
  25. package/dist/components/Buttons/FavoriteButton.esm.js.map +1 -1
  26. package/dist/components/Buttons/FollowPostButton.esm.js.map +1 -1
  27. package/dist/components/Buttons/LinkButton.esm.js.map +1 -1
  28. package/dist/components/Buttons/OpenLinkButton.esm.js.map +1 -1
  29. package/dist/components/Buttons/RankingButtons.esm.js.map +1 -1
  30. package/dist/components/Buttons/TagFollowButton.esm.js.map +1 -1
  31. package/dist/components/Buttons/UserFollowButton.esm.js.map +1 -1
  32. package/dist/components/Buttons/VoteButtons.esm.js.map +1 -1
  33. package/dist/components/Buttons/WriteArticleButton.esm.js.map +1 -1
  34. package/dist/components/CollectionForm/CollectionForm.esm.js.map +1 -1
  35. package/dist/components/CollectionsContainer/CollectionListItem.esm.js.map +1 -1
  36. package/dist/components/CollectionsContainer/CollectionsContainer.esm.js.map +1 -1
  37. package/dist/components/CollectionsContainer/CollectionsGridItem.esm.js.map +1 -1
  38. package/dist/components/CommentSection/CommentForm.esm.js.map +1 -1
  39. package/dist/components/CommentSection/CommentList.esm.js.map +1 -1
  40. package/dist/components/CommentSection/CommentListItem.esm.js.map +1 -1
  41. package/dist/components/CommentSection/CommentSection.esm.js.map +1 -1
  42. package/dist/components/ContentHeader/ContentHeader.esm.js.map +1 -1
  43. package/dist/components/ContentHeaderCard/ContentHeaderCard.esm.js.map +1 -1
  44. package/dist/components/EntitiesContainer/EntitiesContainer.esm.js.map +1 -1
  45. package/dist/components/EntitiesContainer/EntitiesGridItem.esm.js.map +1 -1
  46. package/dist/components/EntitiesContainer/EntityListItem.esm.js.map +1 -1
  47. package/dist/components/FaviconItem/FaviconItem.esm.js.map +1 -1
  48. package/dist/components/FilterPanel/DateRangeFilter.esm.js.map +1 -1
  49. package/dist/components/FilterPanel/FilterPanel.esm.js.map +1 -1
  50. package/dist/components/FollowedLists/FollowedCollectionsList.esm.js.map +1 -1
  51. package/dist/components/FollowedLists/FollowedEntitiesList.esm.js.map +1 -1
  52. package/dist/components/FollowedLists/FollowedTagsList.esm.js.map +1 -1
  53. package/dist/components/FollowedLists/FollowedUsersList.esm.js.map +1 -1
  54. package/dist/components/GridItemStyles/useGridItemStyles.esm.js.map +1 -1
  55. package/dist/components/HeaderImageInput/HeaderImageInput.esm.js.map +1 -1
  56. package/dist/components/HomePageCards/CommunityActivityCard.esm.js.map +1 -1
  57. package/dist/components/HomePageCards/FollowedItemsCard.esm.js.map +1 -1
  58. package/dist/components/HomePageCards/ImpactCard.esm.js.map +1 -1
  59. package/dist/components/HomePageCards/PostsCard.esm.js.map +1 -1
  60. package/dist/components/Icons/ExpertIcon.esm.js.map +1 -1
  61. package/dist/components/LeftMenu/LeftMenu.esm.js.map +1 -1
  62. package/dist/components/LeftMenu/LeftMenuButton.esm.js.map +1 -1
  63. package/dist/components/LinkCard/LinkCard.esm.js.map +1 -1
  64. package/dist/components/Links/Links.esm.js.map +1 -1
  65. package/dist/components/LoadingGrid/LoadingGrid.esm.js.map +1 -1
  66. package/dist/components/MarkdownEditor/MarkdownEditor.esm.js.map +1 -1
  67. package/dist/components/MarkdownRenderer/MarkdownRenderer.esm.js.map +1 -1
  68. package/dist/components/Modals/DeleteModal.esm.js.map +1 -1
  69. package/dist/components/Modals/ObsoleteModal.esm.js.map +1 -1
  70. package/dist/components/Modals/ValidReviewModal.esm.js.map +1 -1
  71. package/dist/components/PostAnonymouslyCheckbox/PostAnonymouslyCheckbox.esm.js.map +1 -1
  72. package/dist/components/PostForm/AutocompleteListComponent.esm.js +1 -1
  73. package/dist/components/PostForm/AutocompleteListComponent.esm.js.map +1 -1
  74. package/dist/components/PostForm/EntitiesInput.esm.js +3 -6
  75. package/dist/components/PostForm/EntitiesInput.esm.js.map +1 -1
  76. package/dist/components/PostForm/PostForm.esm.js.map +1 -1
  77. package/dist/components/PostForm/TagInput.esm.js +1 -1
  78. package/dist/components/PostForm/TagInput.esm.js.map +1 -1
  79. package/dist/components/PostHighlightList/PostHighlightList.esm.js.map +1 -1
  80. package/dist/components/PostHighlightList/PostHighlightListContainer.esm.js.map +1 -1
  81. package/dist/components/PostHistory/PostHistory.esm.js.map +1 -1
  82. package/dist/components/PostHistoryButton/PostHistoryButton.esm.js +4 -5
  83. package/dist/components/PostHistoryButton/PostHistoryButton.esm.js.map +1 -1
  84. package/dist/components/PostsContainer/NoPostsCard.esm.js.map +1 -1
  85. package/dist/components/PostsContainer/PostListItem.esm.js.map +1 -1
  86. package/dist/components/PostsContainer/PostsContainer.esm.js.map +1 -1
  87. package/dist/components/PostsContainer/PostsGridItem.esm.js.map +1 -1
  88. package/dist/components/PostsTable/PostsTable.esm.js.map +1 -1
  89. package/dist/components/PostsTable/PostsTableRow.esm.js.map +1 -1
  90. package/dist/components/QetaContext/QetaContext.esm.js +1 -1
  91. package/dist/components/QetaContext/QetaContext.esm.js.map +1 -1
  92. package/dist/components/QetaEntityContainer/QetaEntityContainer.esm.js.map +1 -1
  93. package/dist/components/QuestionCard/QuestionCard.esm.js.map +1 -1
  94. package/dist/components/RelativeTimeWithTooltip/RelativeTimeWithTooltip.esm.js.map +1 -1
  95. package/dist/components/SearchBar/SearchBar.esm.js.map +1 -1
  96. package/dist/components/SelectTemplateList/SelectTemplateList.esm.js.map +1 -1
  97. package/dist/components/StatsChart/StatsChart.esm.js +1 -1
  98. package/dist/components/StatsChart/StatsChart.esm.js.map +1 -1
  99. package/dist/components/StatsChart/util.esm.js.map +1 -1
  100. package/dist/components/SuggestionsCard/SuggestionsCard.esm.js.map +1 -1
  101. package/dist/components/TagsAndEntities/EntityChip.esm.js.map +1 -1
  102. package/dist/components/TagsAndEntities/TagChip.esm.js.map +1 -1
  103. package/dist/components/TagsAndEntities/TagsAndEntities.esm.js.map +1 -1
  104. package/dist/components/TagsContainer/CreateTagModal.esm.js.map +1 -1
  105. package/dist/components/TagsContainer/EditTagModal.esm.js.map +1 -1
  106. package/dist/components/TagsContainer/TagGridItem.esm.js.map +1 -1
  107. package/dist/components/TagsContainer/TagListItem.esm.js.map +1 -1
  108. package/dist/components/TagsContainer/TagsContainer.esm.js.map +1 -1
  109. package/dist/components/TemplateList/TemplateForm.esm.js.map +1 -1
  110. package/dist/components/TemplateList/TemplateList.esm.js.map +1 -1
  111. package/dist/components/Timeline/Timeline.esm.js.map +1 -1
  112. package/dist/components/Timeline/TimelineItem.esm.js.map +1 -1
  113. package/dist/components/Tooltips/CollectionTooltip.esm.js.map +1 -1
  114. package/dist/components/Tooltips/EntityTooltip.esm.js.map +1 -1
  115. package/dist/components/Tooltips/PostTooltip.esm.js.map +1 -1
  116. package/dist/components/Tooltips/TagTooltip.esm.js.map +1 -1
  117. package/dist/components/Tooltips/UserTooltip.esm.js.map +1 -1
  118. package/dist/components/TopRankingUsersCard/TopRankingUsersCard.esm.js.map +1 -1
  119. package/dist/components/TopRankingUsersCard/TrophyIcon.esm.js.map +1 -1
  120. package/dist/components/UsersContainer/UserListItem.esm.js.map +1 -1
  121. package/dist/components/UsersContainer/UsersContainer.esm.js.map +1 -1
  122. package/dist/components/UsersContainer/UsersGridItem.esm.js.map +1 -1
  123. package/dist/components/Utility/ClickableLink.esm.js.map +1 -1
  124. package/dist/components/Utility/DeletedBanner.esm.js.map +1 -1
  125. package/dist/components/Utility/DraftBanner.esm.js.map +1 -1
  126. package/dist/components/Utility/ModalContent.esm.js.map +1 -1
  127. package/dist/components/Utility/ObsoleteBanner.esm.js.map +1 -1
  128. package/dist/components/Utility/OptionalRequirePermission.esm.js.map +1 -1
  129. package/dist/components/Utility/QetaGridHeader.esm.js.map +1 -1
  130. package/dist/components/Utility/QetaPagination.esm.js.map +1 -1
  131. package/dist/components/Utility/RightList.esm.js +1 -1
  132. package/dist/components/Utility/RightList.esm.js.map +1 -1
  133. package/dist/components/Utility/StatusChip.esm.js.map +1 -1
  134. package/dist/components/Utility/VoteButtonContainer.esm.js.map +1 -1
  135. package/dist/components/ViewToggle/ViewToggle.esm.js.map +1 -1
  136. package/dist/hooks/useAI.esm.js.map +1 -1
  137. package/dist/hooks/useCanReview.esm.js.map +1 -1
  138. package/dist/hooks/useCollectionsFollow.esm.js.map +1 -1
  139. package/dist/hooks/useEntityAuthor.esm.js.map +1 -1
  140. package/dist/hooks/useEntityFollow.esm.js.map +1 -1
  141. package/dist/hooks/useEntityQueryParameter.esm.js.map +1 -1
  142. package/dist/hooks/useFavicon.esm.js.map +1 -1
  143. package/dist/hooks/useFollow.esm.js.map +1 -1
  144. package/dist/hooks/useGridPageSize.esm.js.map +1 -1
  145. package/dist/hooks/useHistoryEnabled.esm.js.map +1 -1
  146. package/dist/hooks/useIdentityApi.esm.js.map +1 -1
  147. package/dist/hooks/useIsDarkTheme.esm.js.map +1 -1
  148. package/dist/hooks/useIsModerator.esm.js.map +1 -1
  149. package/dist/hooks/useListItemStyles.esm.js.map +1 -1
  150. package/dist/hooks/useQetaApi.esm.js.map +1 -1
  151. package/dist/hooks/useQetaEntities.esm.js.map +1 -1
  152. package/dist/hooks/useTagsFollow.esm.js.map +1 -1
  153. package/dist/hooks/useTooltipStyles.esm.js.map +1 -1
  154. package/dist/hooks/useUserFollow.esm.js.map +1 -1
  155. package/dist/hooks/useUserSettings.esm.js.map +1 -1
  156. package/dist/hooks/useVoting.esm.js.map +1 -1
  157. package/dist/index.d.ts +1 -1
  158. package/dist/routes.esm.js.map +1 -1
  159. package/dist/translation.esm.js.map +1 -1
  160. package/dist/utils/utils.esm.js.map +1 -1
  161. package/package.json +13 -13
@@ -1 +1 @@
1
- {"version":3,"file":"CollectionForm.esm.js","sources":["../../../src/components/CollectionForm/CollectionForm.tsx"],"sourcesContent":["import {\n alertApiRef,\n useAnalytics,\n useApi,\n useRouteRef,\n} from '@backstage/core-plugin-api';\nimport {\n Box,\n Button,\n Collapse,\n IconButton,\n Link,\n TextField,\n Tooltip,\n Typography,\n} from '@material-ui/core';\nimport { Alert } from '@material-ui/lab';\nimport { useCallback, useEffect, useState } from 'react';\nimport { Controller, useForm } from 'react-hook-form';\nimport { useNavigate } from 'react-router-dom';\nimport {\n CollectionRequest,\n CollectionResponse,\n QetaApi,\n} from '@drodil/backstage-plugin-qeta-common';\nimport { MarkdownEditor } from '../MarkdownEditor/MarkdownEditor';\nimport { collectionRouteRef } from '../../routes';\nimport { useConfirmNavigationIfEdited } from '../../utils/utils';\nimport { qetaApiRef } from '../../api';\nimport { CollectionFormData } from './types';\nimport { HeaderImageInput } from '../HeaderImageInput/HeaderImageInput';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { qetaTranslationRef } from '../../translation.ts';\nimport { TagInput } from '../PostForm/TagInput';\nimport { EntitiesInput } from '../PostForm/EntitiesInput';\nimport { catalogApiRef } from '@backstage/plugin-catalog-react';\nimport { stringifyEntityRef } from '@backstage/catalog-model';\nimport { CatalogApi } from '@backstage/catalog-client';\nimport { compact } from 'lodash';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport ExpandLessIcon from '@material-ui/icons/ExpandLess';\nimport HelpIcon from '@material-ui/icons/Help';\n\nconst formToRequest = (\n form: CollectionFormData,\n images: number[],\n): CollectionRequest => {\n return {\n ...form,\n images,\n entities: form.entities?.map(stringifyEntityRef),\n users: form.users?.map(stringifyEntityRef),\n };\n};\n\nexport type CollectionFormProps = {\n id?: string;\n onPost?: (collection: CollectionResponse) => void;\n};\n\nconst getDefaultValues = (): CollectionFormData => {\n return {\n title: '',\n images: [],\n tags: [],\n entities: [],\n users: [],\n };\n};\n\nconst getValues = async (\n api: QetaApi,\n catalogApi: CatalogApi,\n id?: string,\n): Promise<{ form: CollectionFormData; collection?: CollectionResponse }> => {\n if (!id) {\n return { form: getDefaultValues() };\n }\n\n const collection = await api.getCollection(id);\n\n const entities =\n collection.entities && collection.entities.length > 0\n ? await catalogApi.getEntitiesByRefs({\n entityRefs: collection.entities,\n fields: [\n 'kind',\n 'metadata.name',\n 'metadata.namespace',\n 'metadata.title',\n 'metadata.description',\n 'spec.profile.displayName',\n 'spec.type',\n ],\n })\n : [];\n\n const users =\n collection.users && collection.users.length > 0\n ? await catalogApi.getEntitiesByRefs({\n entityRefs: collection.users,\n fields: [\n 'kind',\n 'metadata.name',\n 'metadata.namespace',\n 'metadata.title',\n 'metadata.description',\n 'spec.profile.displayName',\n 'spec.type',\n ],\n })\n : [];\n\n return {\n form: {\n title: collection.title,\n description: collection.description,\n headerImage: collection.headerImage,\n images: collection.images,\n tags: collection.tags || [],\n entities: 'items' in entities ? compact(entities.items) : [],\n users: 'items' in users ? compact(users.items) : [],\n },\n collection,\n };\n};\n\nexport const CollectionForm = (props: CollectionFormProps) => {\n const { id, onPost } = props;\n const collectionRoute = useRouteRef(collectionRouteRef);\n const navigate = useNavigate();\n const analytics = useAnalytics();\n const [posting, setPosting] = useState(false);\n const [values, setValues] = useState(getDefaultValues());\n const [error, setError] = useState(false);\n const [edited, setEdited] = useState(false);\n const [images, setImages] = useState<number[]>([]);\n const [showTips, setShowTips] = useState(false);\n const [titleCharCount, setTitleCharCount] = useState(values.title.length);\n const { t } = useTranslationRef(qetaTranslationRef);\n const alertApi = useApi(alertApiRef);\n\n const qetaApi = useApi(qetaApiRef);\n const catalogApi = useApi(catalogApiRef);\n const {\n handleSubmit,\n control,\n reset,\n setValue,\n watch,\n formState: { errors, isSubmitting },\n } = useForm<CollectionFormData>({\n values,\n defaultValues: getDefaultValues(),\n });\n\n const postQuestion = (data: CollectionFormData) => {\n setPosting(true);\n\n if (id) {\n qetaApi\n .updateCollection(Number(id), formToRequest(data, images))\n .then(q => {\n if (!q || !q.id) {\n setError(true);\n return;\n }\n setEdited(false);\n reset();\n analytics.captureEvent('edit', 'collection');\n if (onPost) {\n onPost(q);\n } else {\n navigate(collectionRoute({ id: q.id.toString(10) }));\n }\n })\n .catch(_e => {\n setError(true);\n alertApi.post({\n message: t('collectionForm.errorPosting'),\n severity: 'error',\n display: 'transient',\n });\n })\n .finally(() => setPosting(false));\n return;\n }\n qetaApi\n .createCollection(formToRequest(data, images))\n .then(q => {\n if (!q || !q.id) {\n setError(true);\n return;\n }\n setEdited(false);\n analytics.captureEvent('post', 'collection');\n reset();\n navigate(collectionRoute({ id: q.id.toString(10) }));\n })\n .catch(_e => {\n setError(true);\n alertApi.post({\n message: t('collectionForm.errorPosting'),\n severity: 'error',\n display: 'transient',\n });\n })\n .finally(() => setPosting(false));\n };\n\n useEffect(() => {\n if (id) {\n getValues(qetaApi, catalogApi, id)\n .catch(e =>\n alertApi.post({\n message: e.message,\n severity: 'error',\n display: 'transient',\n }),\n )\n .then(data => {\n if (data) {\n setValues(data.form);\n setImages(data.form.images);\n }\n });\n }\n }, [qetaApi, id, alertApi, catalogApi]);\n\n useEffect(() => {\n reset(values);\n }, [values, reset]);\n\n useConfirmNavigationIfEdited(edited && !posting);\n\n const onImageUpload = useCallback(\n (imageId: number) => {\n setImages(prevImages => [...prevImages, imageId]);\n },\n [setImages],\n );\n\n const handleTitleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setTitleCharCount(e.target.value.length);\n setValue('title', e.target.value, { shouldValidate: true });\n };\n\n return (\n <form\n onSubmit={handleSubmit(postQuestion)}\n onChange={() => {\n setEdited(true);\n }}\n >\n {error && (\n <Alert severity=\"error\">{t('collectionForm.errorPosting')}</Alert>\n )}\n <Controller\n control={control}\n render={({ field: { onChange, value } }) => (\n <HeaderImageInput\n onChange={onChange}\n onImageUpload={onImageUpload}\n url={value}\n collectionId={id ? Number(id) : undefined}\n />\n )}\n name=\"headerImage\"\n />\n <Box mb={2}>\n <TextField\n label={t('collectionForm.titleInput.label')}\n className=\"qetaCollectionFormTitle\"\n required\n fullWidth\n error={'title' in errors}\n margin=\"normal\"\n name=\"title\"\n variant=\"outlined\"\n helperText={\n <span>\n {t('collectionForm.titleInput.helperText')}{' '}\n <span style={{ float: 'right' }}>{titleCharCount}/255</span>\n </span>\n }\n FormHelperTextProps={{\n style: { marginLeft: '0.2em' },\n }}\n value={control._formValues.title}\n onChange={handleTitleChange}\n inputProps={{ maxLength: 255 }}\n />\n </Box>\n <Box\n mb={1}\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n >\n <Typography variant=\"subtitle1\" style={{ fontWeight: 500 }}>\n {t('collectionForm.descriptionInput.label')}\n <Tooltip title=\"Tips for a good collection\">\n <IconButton size=\"small\" onClick={() => setShowTips(v => !v)}>\n {showTips ? <ExpandLessIcon /> : <ExpandMoreIcon />}\n </IconButton>\n </Tooltip>\n </Typography>\n <Box>\n <Link\n href=\"https://www.markdownguide.org/cheat-sheet/\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n color=\"inherit\"\n style={{ fontSize: 12 }}\n >\n {t('collectionForm.descriptionInput.markdownHelp')}\n <HelpIcon\n style={{ fontSize: 12, marginLeft: 4, verticalAlign: 'middle' }}\n />\n </Link>\n </Box>\n </Box>\n <Collapse in={showTips}>\n <Box mb={2} p={2}>\n <Typography variant=\"body2\">\n <ul style={{ margin: 0, paddingLeft: 20 }}>\n <li>{t('collectionForm.tips_1')}</li>\n <li>{t('collectionForm.tips_2')}</li>\n <li>{t('collectionForm.tips_3')}</li>\n </ul>\n </Typography>\n </Box>\n </Collapse>\n <Controller\n control={control}\n rules={{\n required: true,\n }}\n render={({ field: { onChange, value } }) => (\n <MarkdownEditor\n value={value ?? ''}\n onChange={onChange}\n height={400}\n name=\"description\"\n error={'description' in errors}\n placeholder={t('collectionForm.descriptionInput.placeholder')}\n onImageUpload={onImageUpload}\n collectionId={id ? Number(id) : undefined}\n />\n )}\n name=\"description\"\n />\n <Box mt={3} mb={1}>\n <Typography variant=\"h6\">\n {t('collectionForm.automaticRules.title')}\n </Typography>\n <Typography variant=\"body2\" color=\"textSecondary\">\n {t('collectionForm.automaticRules.description')}\n </Typography>\n </Box>\n <Box mt={1} mb={1}>\n <Controller\n control={control}\n render={({ field, fieldState: { error: entityError } }) => (\n <EntitiesInput\n {...field}\n error={entityError}\n tags={watch('tags')}\n label={t('collectionForm.automaticEntitiesInput.label')}\n />\n )}\n name=\"entities\"\n />\n </Box>\n <Box mt={1} mb={1}>\n <Controller\n control={control}\n render={({ field, fieldState: { error: tagError } }) => {\n return (\n <TagInput\n {...field}\n error={tagError}\n entities={watch('entities')?.map(stringifyEntityRef)}\n label={t('collectionForm.automaticTagsInput.label')}\n />\n );\n }}\n name=\"tags\"\n />\n </Box>\n <Box mt={1} mb={1}>\n <Controller\n control={control}\n render={({ field, fieldState: { error: userError } }) => (\n <EntitiesInput\n {...field}\n error={userError}\n label={t('collectionForm.automaticUsersInput.label')}\n kind={['User']}\n />\n )}\n name=\"users\"\n />\n </Box>\n <Box mt={3}>\n <Button\n color=\"primary\"\n type=\"submit\"\n variant=\"contained\"\n disabled={posting || isSubmitting}\n size=\"large\"\n >\n {posting ? (\n <span>\n {t('collectionForm.submitting')}{' '}\n <span className=\"spinner-border spinner-border-sm\" />\n </span>\n ) : (\n t(\n id\n ? 'collectionForm.submit.existingCollection'\n : 'collectionForm.submit.newCollection',\n )\n )}\n </Button>\n </Box>\n </form>\n );\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CollectionForm.esm.js","sources":["../../../src/components/CollectionForm/CollectionForm.tsx"],"sourcesContent":["import {\n alertApiRef,\n useAnalytics,\n useApi,\n useRouteRef,\n} from '@backstage/core-plugin-api';\nimport {\n Box,\n Button,\n Collapse,\n IconButton,\n Link,\n TextField,\n Tooltip,\n Typography,\n} from '@material-ui/core';\nimport { Alert } from '@material-ui/lab';\nimport { useCallback, useEffect, useState } from 'react';\nimport { Controller, useForm } from 'react-hook-form';\nimport { useNavigate } from 'react-router-dom';\nimport {\n CollectionRequest,\n CollectionResponse,\n QetaApi,\n} from '@drodil/backstage-plugin-qeta-common';\nimport { MarkdownEditor } from '../MarkdownEditor/MarkdownEditor';\nimport { collectionRouteRef } from '../../routes';\nimport { useConfirmNavigationIfEdited } from '../../utils/utils';\nimport { qetaApiRef } from '../../api';\nimport { CollectionFormData } from './types';\nimport { HeaderImageInput } from '../HeaderImageInput/HeaderImageInput';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { qetaTranslationRef } from '../../translation.ts';\nimport { TagInput } from '../PostForm/TagInput';\nimport { EntitiesInput } from '../PostForm/EntitiesInput';\nimport { catalogApiRef } from '@backstage/plugin-catalog-react';\nimport { stringifyEntityRef } from '@backstage/catalog-model';\nimport { CatalogApi } from '@backstage/catalog-client';\nimport { compact } from 'lodash';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport ExpandLessIcon from '@material-ui/icons/ExpandLess';\nimport HelpIcon from '@material-ui/icons/Help';\n\nconst formToRequest = (\n form: CollectionFormData,\n images: number[],\n): CollectionRequest => {\n return {\n ...form,\n images,\n entities: form.entities?.map(stringifyEntityRef),\n users: form.users?.map(stringifyEntityRef),\n };\n};\n\nexport type CollectionFormProps = {\n id?: string;\n onPost?: (collection: CollectionResponse) => void;\n};\n\nconst getDefaultValues = (): CollectionFormData => {\n return {\n title: '',\n images: [],\n tags: [],\n entities: [],\n users: [],\n };\n};\n\nconst getValues = async (\n api: QetaApi,\n catalogApi: CatalogApi,\n id?: string,\n): Promise<{ form: CollectionFormData; collection?: CollectionResponse }> => {\n if (!id) {\n return { form: getDefaultValues() };\n }\n\n const collection = await api.getCollection(id);\n\n const entities =\n collection.entities && collection.entities.length > 0\n ? await catalogApi.getEntitiesByRefs({\n entityRefs: collection.entities,\n fields: [\n 'kind',\n 'metadata.name',\n 'metadata.namespace',\n 'metadata.title',\n 'metadata.description',\n 'spec.profile.displayName',\n 'spec.type',\n ],\n })\n : [];\n\n const users =\n collection.users && collection.users.length > 0\n ? await catalogApi.getEntitiesByRefs({\n entityRefs: collection.users,\n fields: [\n 'kind',\n 'metadata.name',\n 'metadata.namespace',\n 'metadata.title',\n 'metadata.description',\n 'spec.profile.displayName',\n 'spec.type',\n ],\n })\n : [];\n\n return {\n form: {\n title: collection.title,\n description: collection.description,\n headerImage: collection.headerImage,\n images: collection.images,\n tags: collection.tags || [],\n entities: 'items' in entities ? compact(entities.items) : [],\n users: 'items' in users ? compact(users.items) : [],\n },\n collection,\n };\n};\n\nexport const CollectionForm = (props: CollectionFormProps) => {\n const { id, onPost } = props;\n const collectionRoute = useRouteRef(collectionRouteRef);\n const navigate = useNavigate();\n const analytics = useAnalytics();\n const [posting, setPosting] = useState(false);\n const [values, setValues] = useState(getDefaultValues());\n const [error, setError] = useState(false);\n const [edited, setEdited] = useState(false);\n const [images, setImages] = useState<number[]>([]);\n const [showTips, setShowTips] = useState(false);\n const [titleCharCount, setTitleCharCount] = useState(values.title.length);\n const { t } = useTranslationRef(qetaTranslationRef);\n const alertApi = useApi(alertApiRef);\n\n const qetaApi = useApi(qetaApiRef);\n const catalogApi = useApi(catalogApiRef);\n const {\n handleSubmit,\n control,\n reset,\n setValue,\n watch,\n formState: { errors, isSubmitting },\n } = useForm<CollectionFormData>({\n values,\n defaultValues: getDefaultValues(),\n });\n\n const postQuestion = (data: CollectionFormData) => {\n setPosting(true);\n\n if (id) {\n qetaApi\n .updateCollection(Number(id), formToRequest(data, images))\n .then(q => {\n if (!q || !q.id) {\n setError(true);\n return;\n }\n setEdited(false);\n reset();\n analytics.captureEvent('edit', 'collection');\n if (onPost) {\n onPost(q);\n } else {\n navigate(collectionRoute({ id: q.id.toString(10) }));\n }\n })\n .catch(_e => {\n setError(true);\n alertApi.post({\n message: t('collectionForm.errorPosting'),\n severity: 'error',\n display: 'transient',\n });\n })\n .finally(() => setPosting(false));\n return;\n }\n qetaApi\n .createCollection(formToRequest(data, images))\n .then(q => {\n if (!q || !q.id) {\n setError(true);\n return;\n }\n setEdited(false);\n analytics.captureEvent('post', 'collection');\n reset();\n navigate(collectionRoute({ id: q.id.toString(10) }));\n })\n .catch(_e => {\n setError(true);\n alertApi.post({\n message: t('collectionForm.errorPosting'),\n severity: 'error',\n display: 'transient',\n });\n })\n .finally(() => setPosting(false));\n };\n\n useEffect(() => {\n if (id) {\n getValues(qetaApi, catalogApi, id)\n .catch(e =>\n alertApi.post({\n message: e.message,\n severity: 'error',\n display: 'transient',\n }),\n )\n .then(data => {\n if (data) {\n setValues(data.form);\n setImages(data.form.images);\n }\n });\n }\n }, [qetaApi, id, alertApi, catalogApi]);\n\n useEffect(() => {\n reset(values);\n }, [values, reset]);\n\n useConfirmNavigationIfEdited(edited && !posting);\n\n const onImageUpload = useCallback(\n (imageId: number) => {\n setImages(prevImages => [...prevImages, imageId]);\n },\n [setImages],\n );\n\n const handleTitleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setTitleCharCount(e.target.value.length);\n setValue('title', e.target.value, { shouldValidate: true });\n };\n\n return (\n <form\n onSubmit={handleSubmit(postQuestion)}\n onChange={() => {\n setEdited(true);\n }}\n >\n {error && (\n <Alert severity=\"error\">{t('collectionForm.errorPosting')}</Alert>\n )}\n <Controller\n control={control}\n render={({ field: { onChange, value } }) => (\n <HeaderImageInput\n onChange={onChange}\n onImageUpload={onImageUpload}\n url={value}\n collectionId={id ? Number(id) : undefined}\n />\n )}\n name=\"headerImage\"\n />\n <Box mb={2}>\n <TextField\n label={t('collectionForm.titleInput.label')}\n className=\"qetaCollectionFormTitle\"\n required\n fullWidth\n error={'title' in errors}\n margin=\"normal\"\n name=\"title\"\n variant=\"outlined\"\n helperText={\n <span>\n {t('collectionForm.titleInput.helperText')}{' '}\n <span style={{ float: 'right' }}>{titleCharCount}/255</span>\n </span>\n }\n FormHelperTextProps={{\n style: { marginLeft: '0.2em' },\n }}\n value={control._formValues.title}\n onChange={handleTitleChange}\n inputProps={{ maxLength: 255 }}\n />\n </Box>\n <Box\n mb={1}\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n >\n <Typography variant=\"subtitle1\" style={{ fontWeight: 500 }}>\n {t('collectionForm.descriptionInput.label')}\n <Tooltip title=\"Tips for a good collection\">\n <IconButton size=\"small\" onClick={() => setShowTips(v => !v)}>\n {showTips ? <ExpandLessIcon /> : <ExpandMoreIcon />}\n </IconButton>\n </Tooltip>\n </Typography>\n <Box>\n <Link\n href=\"https://www.markdownguide.org/cheat-sheet/\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n color=\"inherit\"\n style={{ fontSize: 12 }}\n >\n {t('collectionForm.descriptionInput.markdownHelp')}\n <HelpIcon\n style={{ fontSize: 12, marginLeft: 4, verticalAlign: 'middle' }}\n />\n </Link>\n </Box>\n </Box>\n <Collapse in={showTips}>\n <Box mb={2} p={2}>\n <Typography variant=\"body2\">\n <ul style={{ margin: 0, paddingLeft: 20 }}>\n <li>{t('collectionForm.tips_1')}</li>\n <li>{t('collectionForm.tips_2')}</li>\n <li>{t('collectionForm.tips_3')}</li>\n </ul>\n </Typography>\n </Box>\n </Collapse>\n <Controller\n control={control}\n rules={{\n required: true,\n }}\n render={({ field: { onChange, value } }) => (\n <MarkdownEditor\n value={value ?? ''}\n onChange={onChange}\n height={400}\n name=\"description\"\n error={'description' in errors}\n placeholder={t('collectionForm.descriptionInput.placeholder')}\n onImageUpload={onImageUpload}\n collectionId={id ? Number(id) : undefined}\n />\n )}\n name=\"description\"\n />\n <Box mt={3} mb={1}>\n <Typography variant=\"h6\">\n {t('collectionForm.automaticRules.title')}\n </Typography>\n <Typography variant=\"body2\" color=\"textSecondary\">\n {t('collectionForm.automaticRules.description')}\n </Typography>\n </Box>\n <Box mt={1} mb={1}>\n <Controller\n control={control}\n render={({ field, fieldState: { error: entityError } }) => (\n <EntitiesInput\n {...field}\n error={entityError}\n tags={watch('tags')}\n label={t('collectionForm.automaticEntitiesInput.label')}\n />\n )}\n name=\"entities\"\n />\n </Box>\n <Box mt={1} mb={1}>\n <Controller\n control={control}\n render={({ field, fieldState: { error: tagError } }) => {\n return (\n <TagInput\n {...field}\n error={tagError}\n entities={watch('entities')?.map(stringifyEntityRef)}\n label={t('collectionForm.automaticTagsInput.label')}\n />\n );\n }}\n name=\"tags\"\n />\n </Box>\n <Box mt={1} mb={1}>\n <Controller\n control={control}\n render={({ field, fieldState: { error: userError } }) => (\n <EntitiesInput\n {...field}\n error={userError}\n label={t('collectionForm.automaticUsersInput.label')}\n kind={['User']}\n />\n )}\n name=\"users\"\n />\n </Box>\n <Box mt={3}>\n <Button\n color=\"primary\"\n type=\"submit\"\n variant=\"contained\"\n disabled={posting || isSubmitting}\n size=\"large\"\n >\n {posting ? (\n <span>\n {t('collectionForm.submitting')}{' '}\n <span className=\"spinner-border spinner-border-sm\" />\n </span>\n ) : (\n t(\n id\n ? 'collectionForm.submit.existingCollection'\n : 'collectionForm.submit.newCollection',\n )\n )}\n </Button>\n </Box>\n </form>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"CollectionListItem.esm.js","sources":["../../../src/components/CollectionsContainer/CollectionListItem.tsx"],"sourcesContent":["import {\n Collection,\n removeMarkdownFormatting,\n truncate,\n} from '@drodil/backstage-plugin-qeta-common';\nimport { useRouteRef } from '@backstage/core-plugin-api';\nimport { collectionRouteRef } from '../../routes';\nimport {\n Box,\n ListItemAvatar,\n makeStyles,\n Tooltip,\n Typography,\n} from '@material-ui/core';\nimport DOMPurify from 'dompurify';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { qetaTranslationRef } from '../../translation';\nimport { CollectionFollowButton } from '../Buttons/CollectionFollowButton';\nimport PlaylistPlayIcon from '@material-ui/icons/PlaylistPlay';\nimport QuestionAnswerIcon from '@material-ui/icons/QuestionAnswer';\nimport PeopleIcon from '@material-ui/icons/People';\nimport LinkIcon from '@material-ui/icons/Link';\nimport DescriptionIcon from '@material-ui/icons/Description';\nimport { Link } from 'react-router-dom';\n\nimport { useListItemStyles } from '../../hooks';\n\nconst useStyles = makeStyles(theme => ({\n content: {\n flex: 1,\n minWidth: 0,\n display: 'flex',\n flexDirection: 'column',\n marginLeft: theme.spacing(2),\n },\n title: {\n fontWeight: 600,\n },\n description: {\n color: theme.palette.text.secondary,\n fontSize: '0.875rem',\n marginTop: theme.spacing(0.5),\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n },\n statsWrapper: {\n display: 'flex',\n gap: theme.spacing(3),\n marginLeft: theme.spacing(2),\n alignItems: 'center',\n [theme.breakpoints.down('sm')]: {\n display: 'none',\n },\n },\n statItem: {\n display: 'flex',\n alignItems: 'center',\n gap: theme.spacing(0.5),\n color: theme.palette.text.secondary,\n },\n actions: {\n marginLeft: theme.spacing(2),\n },\n avatar: {\n width: 50,\n height: 50,\n borderRadius: theme.shape.borderRadius,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor:\n theme.palette.type === 'dark'\n ? theme.palette.grey[800]\n : theme.palette.grey[200],\n color: theme.palette.text.secondary,\n },\n image: {\n objectFit: 'cover',\n width: '100%',\n height: '100%',\n borderRadius: theme.shape.borderRadius,\n },\n}));\n\nexport const CollectionListItem = (props: { collection: Collection }) => {\n const { collection } = props;\n const classes = useStyles();\n const listItemClasses = useListItemStyles();\n const { t } = useTranslationRef(qetaTranslationRef);\n\n const collectionRoute = useRouteRef(collectionRouteRef);\n const href = collectionRoute({ id: collection.id.toString(10) });\n\n return (\n <Link to={href} className={listItemClasses.root}>\n <ListItemAvatar className={classes.avatar}>\n {collection.headerImage ? (\n <img\n src={collection.headerImage}\n alt={collection.title}\n className={classes.image}\n onError={e => {\n (e.currentTarget as HTMLImageElement).style.display = 'none';\n (e.currentTarget.parentElement as HTMLElement).innerHTML = '';\n }}\n />\n ) : (\n <PlaylistPlayIcon />\n )}\n </ListItemAvatar>\n <Box className={classes.content}>\n <Typography className={classes.title} noWrap>\n {collection.title}\n </Typography>\n {collection.description && (\n <Typography className={classes.description}>\n {DOMPurify.sanitize(\n truncate(removeMarkdownFormatting(collection.description), 100),\n )}\n </Typography>\n )}\n </Box>\n\n <Box className={classes.statsWrapper}>\n <Tooltip title={t('common.questions')} arrow>\n <div className={classes.statItem}>\n <QuestionAnswerIcon fontSize=\"small\" />\n <Typography variant=\"body2\">{collection.questionsCount}</Typography>\n </div>\n </Tooltip>\n <Tooltip title={t('common.articles')} arrow>\n <div className={classes.statItem}>\n <DescriptionIcon fontSize=\"small\" />\n <Typography variant=\"body2\">{collection.articlesCount}</Typography>\n </div>\n </Tooltip>\n <Tooltip title={t('common.links')} arrow>\n <div className={classes.statItem}>\n <LinkIcon fontSize=\"small\" />\n <Typography variant=\"body2\">{collection.linksCount}</Typography>\n </div>\n </Tooltip>\n <Tooltip title={t('common.followersPlain')} arrow>\n <div className={classes.statItem}>\n <PeopleIcon fontSize=\"small\" />\n <Typography variant=\"body2\">{collection.followers}</Typography>\n </div>\n </Tooltip>\n </Box>\n\n <Box\n className={classes.actions}\n onClick={e => {\n e.preventDefault();\n e.stopPropagation();\n }}\n >\n <CollectionFollowButton collection={collection} />\n </Box>\n </Link>\n );\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CollectionListItem.esm.js","sources":["../../../src/components/CollectionsContainer/CollectionListItem.tsx"],"sourcesContent":["import {\n Collection,\n removeMarkdownFormatting,\n truncate,\n} from '@drodil/backstage-plugin-qeta-common';\nimport { useRouteRef } from '@backstage/core-plugin-api';\nimport { collectionRouteRef } from '../../routes';\nimport {\n Box,\n ListItemAvatar,\n makeStyles,\n Tooltip,\n Typography,\n} from '@material-ui/core';\nimport DOMPurify from 'dompurify';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { qetaTranslationRef } from '../../translation';\nimport { CollectionFollowButton } from '../Buttons/CollectionFollowButton';\nimport PlaylistPlayIcon from '@material-ui/icons/PlaylistPlay';\nimport QuestionAnswerIcon from '@material-ui/icons/QuestionAnswer';\nimport PeopleIcon from '@material-ui/icons/People';\nimport LinkIcon from '@material-ui/icons/Link';\nimport DescriptionIcon from '@material-ui/icons/Description';\nimport { Link } from 'react-router-dom';\n\nimport { useListItemStyles } from '../../hooks';\n\nconst useStyles = makeStyles(theme => ({\n content: {\n flex: 1,\n minWidth: 0,\n display: 'flex',\n flexDirection: 'column',\n marginLeft: theme.spacing(2),\n },\n title: {\n fontWeight: 600,\n },\n description: {\n color: theme.palette.text.secondary,\n fontSize: '0.875rem',\n marginTop: theme.spacing(0.5),\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n },\n statsWrapper: {\n display: 'flex',\n gap: theme.spacing(3),\n marginLeft: theme.spacing(2),\n alignItems: 'center',\n [theme.breakpoints.down('sm')]: {\n display: 'none',\n },\n },\n statItem: {\n display: 'flex',\n alignItems: 'center',\n gap: theme.spacing(0.5),\n color: theme.palette.text.secondary,\n },\n actions: {\n marginLeft: theme.spacing(2),\n },\n avatar: {\n width: 50,\n height: 50,\n borderRadius: theme.shape.borderRadius,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor:\n theme.palette.type === 'dark'\n ? theme.palette.grey[800]\n : theme.palette.grey[200],\n color: theme.palette.text.secondary,\n },\n image: {\n objectFit: 'cover',\n width: '100%',\n height: '100%',\n borderRadius: theme.shape.borderRadius,\n },\n}));\n\nexport const CollectionListItem = (props: { collection: Collection }) => {\n const { collection } = props;\n const classes = useStyles();\n const listItemClasses = useListItemStyles();\n const { t } = useTranslationRef(qetaTranslationRef);\n\n const collectionRoute = useRouteRef(collectionRouteRef);\n const href = collectionRoute({ id: collection.id.toString(10) });\n\n return (\n <Link to={href} className={listItemClasses.root}>\n <ListItemAvatar className={classes.avatar}>\n {collection.headerImage ? (\n <img\n src={collection.headerImage}\n alt={collection.title}\n className={classes.image}\n onError={e => {\n (e.currentTarget as HTMLImageElement).style.display = 'none';\n (e.currentTarget.parentElement as HTMLElement).innerHTML = '';\n }}\n />\n ) : (\n <PlaylistPlayIcon />\n )}\n </ListItemAvatar>\n <Box className={classes.content}>\n <Typography className={classes.title} noWrap>\n {collection.title}\n </Typography>\n {collection.description && (\n <Typography className={classes.description}>\n {DOMPurify.sanitize(\n truncate(removeMarkdownFormatting(collection.description), 100),\n )}\n </Typography>\n )}\n </Box>\n\n <Box className={classes.statsWrapper}>\n <Tooltip title={t('common.questions')} arrow>\n <div className={classes.statItem}>\n <QuestionAnswerIcon fontSize=\"small\" />\n <Typography variant=\"body2\">{collection.questionsCount}</Typography>\n </div>\n </Tooltip>\n <Tooltip title={t('common.articles')} arrow>\n <div className={classes.statItem}>\n <DescriptionIcon fontSize=\"small\" />\n <Typography variant=\"body2\">{collection.articlesCount}</Typography>\n </div>\n </Tooltip>\n <Tooltip title={t('common.links')} arrow>\n <div className={classes.statItem}>\n <LinkIcon fontSize=\"small\" />\n <Typography variant=\"body2\">{collection.linksCount}</Typography>\n </div>\n </Tooltip>\n <Tooltip title={t('common.followersPlain')} arrow>\n <div className={classes.statItem}>\n <PeopleIcon fontSize=\"small\" />\n <Typography variant=\"body2\">{collection.followers}</Typography>\n </div>\n </Tooltip>\n </Box>\n\n <Box\n className={classes.actions}\n onClick={e => {\n e.preventDefault();\n e.stopPropagation();\n }}\n >\n <CollectionFollowButton collection={collection} />\n </Box>\n </Link>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"CollectionsContainer.esm.js","sources":["../../../src/components/CollectionsContainer/CollectionsContainer.tsx"],"sourcesContent":["import { CollectionResponse } from '@drodil/backstage-plugin-qeta-common';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { qetaTranslationRef } from '../../translation';\nimport { CommonFilterPanelProps } from '../FilterPanel/FilterPanel';\nimport { CollectionsGridItem } from './CollectionsGridItem';\nimport { CollectionListItem } from './CollectionListItem';\nimport { QetaEntityContainer } from '../QetaEntityContainer/QetaEntityContainer';\nimport { ViewType } from '../ViewToggle/ViewToggle';\n\nexport const CollectionsContainer = (props: {\n filterPanelProps?: CommonFilterPanelProps;\n defaultView?: ViewType;\n owner?: string;\n prefix?: string;\n}) => {\n const { filterPanelProps, defaultView, owner, prefix } = props;\n const { t } = useTranslationRef(qetaTranslationRef);\n\n return (\n <QetaEntityContainer<CollectionResponse, any>\n prefix={prefix ?? 'collections'}\n defaultPageSize={24}\n defaultView={defaultView}\n initialFilters={{\n order: 'desc',\n searchQuery: '',\n orderBy: 'created',\n }}\n fetch={(api, limit, offset, filters) => {\n return api\n .getCollections({\n limit,\n offset,\n searchQuery: filters.searchQuery,\n order: filters.order,\n orderBy: filters.orderBy,\n entities: filters.entities,\n tags: filters.tags,\n fromDate: filters.fromDate,\n toDate: filters.toDate,\n owner,\n includePosts: false,\n })\n .then(res => ({ items: res.collections, total: res.total }));\n }}\n filterPanelProps={{\n ...filterPanelProps,\n mode: 'collections',\n }}\n renderListItem={collection => (\n <CollectionListItem collection={collection} />\n )}\n renderGridItem={collection => (\n <CollectionsGridItem collection={collection} />\n )}\n title={total => t('common.collections', { count: total })}\n searchPlaceholder={t('collectionsPage.search.label')}\n emptyMessage={t('common.collections', { count: 0 })}\n getKey={collection => collection.id}\n />\n );\n};\n"],"names":[],"mappings":";;;;;;;AASa,MAAA,oBAAA,GAAuB,CAAC,KAK/B,KAAA;AACJ,EAAA,MAAM,EAAE,gBAAA,EAAkB,WAAa,EAAA,KAAA,EAAO,QAAW,GAAA,KAAA;AACzD,EAAA,MAAM,EAAE,CAAA,EAAM,GAAA,iBAAA,CAAkB,kBAAkB,CAAA;AAElD,EACE,uBAAA,GAAA;AAAA,IAAC,mBAAA;AAAA,IAAA;AAAA,MACC,QAAQ,MAAU,IAAA,aAAA;AAAA,MAClB,eAAiB,EAAA,EAAA;AAAA,MACjB,WAAA;AAAA,MACA,cAAgB,EAAA;AAAA,QACd,KAAO,EAAA,MAAA;AAAA,QACP,WAAa,EAAA,EAAA;AAAA,QACb,OAAS,EAAA;AAAA,OACX;AAAA,MACA,KAAO,EAAA,CAAC,GAAK,EAAA,KAAA,EAAO,QAAQ,OAAY,KAAA;AACtC,QAAA,OAAO,IACJ,cAAe,CAAA;AAAA,UACd,KAAA;AAAA,UACA,MAAA;AAAA,UACA,aAAa,OAAQ,CAAA,WAAA;AAAA,UACrB,OAAO,OAAQ,CAAA,KAAA;AAAA,UACf,SAAS,OAAQ,CAAA,OAAA;AAAA,UACjB,UAAU,OAAQ,CAAA,QAAA;AAAA,UAClB,MAAM,OAAQ,CAAA,IAAA;AAAA,UACd,UAAU,OAAQ,CAAA,QAAA;AAAA,UAClB,QAAQ,OAAQ,CAAA,MAAA;AAAA,UAChB,KAAA;AAAA,UACA,YAAc,EAAA;AAAA,SACf,CACA,CAAA,IAAA,CAAK,CAAQ,GAAA,MAAA,EAAE,KAAO,EAAA,GAAA,CAAI,WAAa,EAAA,KAAA,EAAO,GAAI,CAAA,KAAA,EAAQ,CAAA,CAAA;AAAA,OAC/D;AAAA,MACA,gBAAkB,EAAA;AAAA,QAChB,GAAG,gBAAA;AAAA,QACH,IAAM,EAAA;AAAA,OACR;AAAA,MACA,cAAgB,EAAA,CAAA,UAAA,qBACb,GAAA,CAAA,kBAAA,EAAA,EAAmB,UAAwB,EAAA,CAAA;AAAA,MAE9C,cAAgB,EAAA,CAAA,UAAA,qBACb,GAAA,CAAA,mBAAA,EAAA,EAAoB,UAAwB,EAAA,CAAA;AAAA,MAE/C,OAAO,CAAS,KAAA,KAAA,CAAA,CAAE,sBAAsB,EAAE,KAAA,EAAO,OAAO,CAAA;AAAA,MACxD,iBAAA,EAAmB,EAAE,8BAA8B,CAAA;AAAA,MACnD,cAAc,CAAE,CAAA,oBAAA,EAAsB,EAAE,KAAA,EAAO,GAAG,CAAA;AAAA,MAClD,MAAA,EAAQ,gBAAc,UAAW,CAAA;AAAA;AAAA,GACnC;AAEJ;;;;"}
1
+ {"version":3,"file":"CollectionsContainer.esm.js","sources":["../../../src/components/CollectionsContainer/CollectionsContainer.tsx"],"sourcesContent":["import { CollectionResponse } from '@drodil/backstage-plugin-qeta-common';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { qetaTranslationRef } from '../../translation';\nimport { CommonFilterPanelProps } from '../FilterPanel/FilterPanel';\nimport { CollectionsGridItem } from './CollectionsGridItem';\nimport { CollectionListItem } from './CollectionListItem';\nimport { QetaEntityContainer } from '../QetaEntityContainer/QetaEntityContainer';\nimport { ViewType } from '../ViewToggle/ViewToggle';\n\nexport const CollectionsContainer = (props: {\n filterPanelProps?: CommonFilterPanelProps;\n defaultView?: ViewType;\n owner?: string;\n prefix?: string;\n}) => {\n const { filterPanelProps, defaultView, owner, prefix } = props;\n const { t } = useTranslationRef(qetaTranslationRef);\n\n return (\n <QetaEntityContainer<CollectionResponse, any>\n prefix={prefix ?? 'collections'}\n defaultPageSize={24}\n defaultView={defaultView}\n initialFilters={{\n order: 'desc',\n searchQuery: '',\n orderBy: 'created',\n }}\n fetch={(api, limit, offset, filters) => {\n return api\n .getCollections({\n limit,\n offset,\n searchQuery: filters.searchQuery,\n order: filters.order,\n orderBy: filters.orderBy,\n entities: filters.entities,\n tags: filters.tags,\n fromDate: filters.fromDate,\n toDate: filters.toDate,\n owner,\n includePosts: false,\n })\n .then(res => ({ items: res.collections, total: res.total }));\n }}\n filterPanelProps={{\n ...filterPanelProps,\n mode: 'collections',\n }}\n renderListItem={collection => (\n <CollectionListItem collection={collection} />\n )}\n renderGridItem={collection => (\n <CollectionsGridItem collection={collection} />\n )}\n title={total => t('common.collections', { count: total })}\n searchPlaceholder={t('collectionsPage.search.label')}\n emptyMessage={t('common.collections', { count: 0 })}\n getKey={collection => collection.id}\n />\n );\n};\n"],"names":[],"mappings":";;;;;;;AASO,MAAM,oBAAA,GAAuB,CAAC,KAAA,KAK/B;AACJ,EAAA,MAAM,EAAE,gBAAA,EAAkB,WAAA,EAAa,KAAA,EAAO,QAAO,GAAI,KAAA;AACzD,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,kBAAkB,CAAA;AAElD,EAAA,uBACE,GAAA;AAAA,IAAC,mBAAA;AAAA,IAAA;AAAA,MACC,QAAQ,MAAA,IAAU,aAAA;AAAA,MAClB,eAAA,EAAiB,EAAA;AAAA,MACjB,WAAA;AAAA,MACA,cAAA,EAAgB;AAAA,QACd,KAAA,EAAO,MAAA;AAAA,QACP,WAAA,EAAa,EAAA;AAAA,QACb,OAAA,EAAS;AAAA,OACX;AAAA,MACA,KAAA,EAAO,CAAC,GAAA,EAAK,KAAA,EAAO,QAAQ,OAAA,KAAY;AACtC,QAAA,OAAO,IACJ,cAAA,CAAe;AAAA,UACd,KAAA;AAAA,UACA,MAAA;AAAA,UACA,aAAa,OAAA,CAAQ,WAAA;AAAA,UACrB,OAAO,OAAA,CAAQ,KAAA;AAAA,UACf,SAAS,OAAA,CAAQ,OAAA;AAAA,UACjB,UAAU,OAAA,CAAQ,QAAA;AAAA,UAClB,MAAM,OAAA,CAAQ,IAAA;AAAA,UACd,UAAU,OAAA,CAAQ,QAAA;AAAA,UAClB,QAAQ,OAAA,CAAQ,MAAA;AAAA,UAChB,KAAA;AAAA,UACA,YAAA,EAAc;AAAA,SACf,CAAA,CACA,IAAA,CAAK,CAAA,GAAA,MAAQ,EAAE,KAAA,EAAO,GAAA,CAAI,WAAA,EAAa,KAAA,EAAO,GAAA,CAAI,KAAA,EAAM,CAAE,CAAA;AAAA,MAC/D,CAAA;AAAA,MACA,gBAAA,EAAkB;AAAA,QAChB,GAAG,gBAAA;AAAA,QACH,IAAA,EAAM;AAAA,OACR;AAAA,MACA,cAAA,EAAgB,CAAA,UAAA,qBACd,GAAA,CAAC,kBAAA,EAAA,EAAmB,UAAA,EAAwB,CAAA;AAAA,MAE9C,cAAA,EAAgB,CAAA,UAAA,qBACd,GAAA,CAAC,mBAAA,EAAA,EAAoB,UAAA,EAAwB,CAAA;AAAA,MAE/C,OAAO,CAAA,KAAA,KAAS,CAAA,CAAE,sBAAsB,EAAE,KAAA,EAAO,OAAO,CAAA;AAAA,MACxD,iBAAA,EAAmB,EAAE,8BAA8B,CAAA;AAAA,MACnD,cAAc,CAAA,CAAE,oBAAA,EAAsB,EAAE,KAAA,EAAO,GAAG,CAAA;AAAA,MAClD,MAAA,EAAQ,gBAAc,UAAA,CAAW;AAAA;AAAA,GACnC;AAEJ;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"CollectionsGridItem.esm.js","sources":["../../../src/components/CollectionsContainer/CollectionsGridItem.tsx"],"sourcesContent":["import {\n Collection,\n removeMarkdownFormatting,\n truncate,\n} from '@drodil/backstage-plugin-qeta-common';\nimport { useRouteRef } from '@backstage/core-plugin-api';\nimport { collectionRouteRef } from '../../routes';\nimport {\n Box,\n Card,\n CardContent,\n CardMedia,\n Grid,\n makeStyles,\n Typography,\n} from '@material-ui/core';\nimport DOMPurify from 'dompurify';\nimport { TagsAndEntities } from '../TagsAndEntities/TagsAndEntities';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { qetaTranslationRef } from '../../translation.ts';\nimport { CollectionFollowButton } from '../Buttons/CollectionFollowButton';\nimport { ClickableLink } from '../Utility/ClickableLink';\nimport PlaylistPlayIcon from '@material-ui/icons/PlaylistPlay';\nimport QuestionAnswerIcon from '@material-ui/icons/QuestionAnswer';\nimport PeopleIcon from '@material-ui/icons/People';\nimport LinkIcon from '@material-ui/icons/Link';\nimport DescriptionIcon from '@material-ui/icons/Description';\n\nexport interface PostsGridItemProps {\n collection: Collection;\n}\n\nconst useStyles = makeStyles(theme => ({\n placeholderImage: {\n height: 140,\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n background:\n theme.palette.type === 'dark'\n ? `linear-gradient(135deg, ${theme.palette.grey[800]} 0%, ${theme.palette.grey[900]} 100%)`\n : `linear-gradient(135deg, ${theme.palette.grey[200]} 0%, ${theme.palette.grey[300]} 100%)`,\n color: theme.palette.text.secondary,\n opacity: 0.8,\n },\n card: {\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n cursor: 'pointer',\n position: 'relative',\n '&:hover::after': {\n content: '\"\"',\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'currentColor',\n opacity: theme.palette.action.hoverOpacity || 0.04,\n borderRadius: theme.shape.borderRadius,\n pointerEvents: 'none',\n },\n },\n statsGrid: {\n marginTop: 'auto',\n },\n statItem: {\n padding: theme.spacing(1),\n borderRadius: theme.shape.borderRadius,\n width: '100%',\n height: '100%',\n justifyContent: 'center',\n },\n}));\n\nexport const CollectionsGridItem = (props: PostsGridItemProps) => {\n const { collection } = props;\n const classes = useStyles();\n const { t } = useTranslationRef(qetaTranslationRef);\n\n const collectionRoute = useRouteRef(collectionRouteRef);\n const href = collectionRoute({ id: collection.id.toString(10) });\n\n return (\n <Card className={classes.card}>\n <ClickableLink href={href} ariaLabel={collection.title}>\n {collection.headerImage ? (\n <CardMedia\n component=\"img\"\n height=\"140\"\n onError={e => (e.currentTarget.style.display = 'none')}\n image={collection.headerImage}\n alt={collection.title}\n style={{ objectFit: 'cover' }}\n />\n ) : (\n <Box className={classes.placeholderImage}>\n <PlaylistPlayIcon style={{ fontSize: 60 }} />\n </Box>\n )}\n <CardContent\n style={{\n paddingBottom: '0.5rem',\n flexGrow: 1,\n display: 'flex',\n flexDirection: 'column',\n }}\n >\n <Box\n display=\"flex\"\n justifyContent=\"space-between\"\n alignItems=\"flex-start\"\n >\n <Typography gutterBottom variant=\"h6\" component=\"div\">\n {collection.title}\n </Typography>\n <Box\n onClick={e => {\n e.preventDefault();\n e.stopPropagation();\n }}\n >\n <CollectionFollowButton collection={collection} />\n </Box>\n </Box>\n {collection.description && (\n <Typography variant=\"body2\" color=\"textSecondary\" gutterBottom>\n {DOMPurify.sanitize(\n truncate(removeMarkdownFormatting(collection.description), 200),\n )}\n </Typography>\n )}\n <Box mt={2}>\n <TagsAndEntities\n entity={collection}\n tagsLimit={5}\n entitiesLimit={5}\n />\n </Box>\n <Grid container spacing={1} className={classes.statsGrid}>\n <Grid item xs={3}>\n <Box\n display=\"flex\"\n flexDirection=\"column\"\n alignItems=\"center\"\n className={classes.statItem}\n >\n <QuestionAnswerIcon fontSize=\"small\" color=\"disabled\" />\n <Typography variant=\"body2\" style={{ fontWeight: 600 }}>\n {collection.questionsCount}\n </Typography>\n <Typography variant=\"caption\" color=\"textSecondary\">\n {t('common.questions')}\n </Typography>\n </Box>\n </Grid>\n <Grid item xs={3}>\n <Box\n display=\"flex\"\n flexDirection=\"column\"\n alignItems=\"center\"\n className={classes.statItem}\n >\n <DescriptionIcon fontSize=\"small\" color=\"disabled\" />\n <Typography variant=\"body2\" style={{ fontWeight: 600 }}>\n {collection.articlesCount}\n </Typography>\n <Typography variant=\"caption\" color=\"textSecondary\">\n {t('common.articles')}\n </Typography>\n </Box>\n </Grid>\n <Grid item xs={3}>\n <Box\n display=\"flex\"\n flexDirection=\"column\"\n alignItems=\"center\"\n className={classes.statItem}\n >\n <LinkIcon fontSize=\"small\" color=\"disabled\" />\n <Typography variant=\"body2\" style={{ fontWeight: 600 }}>\n {collection.linksCount}\n </Typography>\n <Typography variant=\"caption\" color=\"textSecondary\">\n {t('common.links')}\n </Typography>\n </Box>\n </Grid>\n <Grid item xs={3}>\n <Box\n display=\"flex\"\n flexDirection=\"column\"\n alignItems=\"center\"\n className={classes.statItem}\n >\n <PeopleIcon fontSize=\"small\" color=\"disabled\" />\n <Typography variant=\"body2\" style={{ fontWeight: 600 }}>\n {collection.followers}\n </Typography>\n <Typography variant=\"caption\" color=\"textSecondary\">\n {t('common.followersPlain')}\n </Typography>\n </Box>\n </Grid>\n </Grid>\n </CardContent>\n </ClickableLink>\n </Card>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAgCA,MAAM,SAAA,GAAY,WAAW,CAAU,KAAA,MAAA;AAAA,EACrC,gBAAkB,EAAA;AAAA,IAChB,MAAQ,EAAA,GAAA;AAAA,IACR,KAAO,EAAA,MAAA;AAAA,IACP,OAAS,EAAA,MAAA;AAAA,IACT,UAAY,EAAA,QAAA;AAAA,IACZ,cAAgB,EAAA,QAAA;AAAA,IAChB,UACE,EAAA,KAAA,CAAM,OAAQ,CAAA,IAAA,KAAS,MACnB,GAAA,CAAA,wBAAA,EAA2B,KAAM,CAAA,OAAA,CAAQ,IAAK,CAAA,GAAG,CAAC,CAAA,KAAA,EAAQ,KAAM,CAAA,OAAA,CAAQ,IAAK,CAAA,GAAG,CAAC,CAAA,MAAA,CAAA,GACjF,CAA2B,wBAAA,EAAA,KAAA,CAAM,OAAQ,CAAA,IAAA,CAAK,GAAG,CAAC,CAAQ,KAAA,EAAA,KAAA,CAAM,OAAQ,CAAA,IAAA,CAAK,GAAG,CAAC,CAAA,MAAA,CAAA;AAAA,IACvF,KAAA,EAAO,KAAM,CAAA,OAAA,CAAQ,IAAK,CAAA,SAAA;AAAA,IAC1B,OAAS,EAAA;AAAA,GACX;AAAA,EACA,IAAM,EAAA;AAAA,IACJ,MAAQ,EAAA,MAAA;AAAA,IACR,OAAS,EAAA,MAAA;AAAA,IACT,aAAe,EAAA,QAAA;AAAA,IACf,MAAQ,EAAA,SAAA;AAAA,IACR,QAAU,EAAA,UAAA;AAAA,IACV,gBAAkB,EAAA;AAAA,MAChB,OAAS,EAAA,IAAA;AAAA,MACT,QAAU,EAAA,UAAA;AAAA,MACV,GAAK,EAAA,CAAA;AAAA,MACL,IAAM,EAAA,CAAA;AAAA,MACN,KAAO,EAAA,CAAA;AAAA,MACP,MAAQ,EAAA,CAAA;AAAA,MACR,eAAiB,EAAA,cAAA;AAAA,MACjB,OAAS,EAAA,KAAA,CAAM,OAAQ,CAAA,MAAA,CAAO,YAAgB,IAAA,IAAA;AAAA,MAC9C,YAAA,EAAc,MAAM,KAAM,CAAA,YAAA;AAAA,MAC1B,aAAe,EAAA;AAAA;AACjB,GACF;AAAA,EACA,SAAW,EAAA;AAAA,IACT,SAAW,EAAA;AAAA,GACb;AAAA,EACA,QAAU,EAAA;AAAA,IACR,OAAA,EAAS,KAAM,CAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,IACxB,YAAA,EAAc,MAAM,KAAM,CAAA,YAAA;AAAA,IAC1B,KAAO,EAAA,MAAA;AAAA,IACP,MAAQ,EAAA,MAAA;AAAA,IACR,cAAgB,EAAA;AAAA;AAEpB,CAAE,CAAA,CAAA;AAEW,MAAA,mBAAA,GAAsB,CAAC,KAA8B,KAAA;AAChE,EAAM,MAAA,EAAE,YAAe,GAAA,KAAA;AACvB,EAAA,MAAM,UAAU,SAAU,EAAA;AAC1B,EAAA,MAAM,EAAE,CAAA,EAAM,GAAA,iBAAA,CAAkB,kBAAkB,CAAA;AAElD,EAAM,MAAA,eAAA,GAAkB,YAAY,kBAAkB,CAAA;AACtD,EAAM,MAAA,IAAA,GAAO,gBAAgB,EAAE,EAAA,EAAI,WAAW,EAAG,CAAA,QAAA,CAAS,EAAE,CAAA,EAAG,CAAA;AAE/D,EACE,uBAAA,GAAA,CAAC,IAAK,EAAA,EAAA,SAAA,EAAW,OAAQ,CAAA,IAAA,EACvB,+BAAC,aAAc,EAAA,EAAA,IAAA,EAAY,SAAW,EAAA,UAAA,CAAW,KAC9C,EAAA,QAAA,EAAA;AAAA,IAAA,UAAA,CAAW,WACV,mBAAA,GAAA;AAAA,MAAC,SAAA;AAAA,MAAA;AAAA,QACC,SAAU,EAAA,KAAA;AAAA,QACV,MAAO,EAAA,KAAA;AAAA,QACP,OAAS,EAAA,CAAA,CAAA,KAAM,CAAE,CAAA,aAAA,CAAc,MAAM,OAAU,GAAA,MAAA;AAAA,QAC/C,OAAO,UAAW,CAAA,WAAA;AAAA,QAClB,KAAK,UAAW,CAAA,KAAA;AAAA,QAChB,KAAA,EAAO,EAAE,SAAA,EAAW,OAAQ;AAAA;AAAA,KAG9B,mBAAA,GAAA,CAAC,GAAI,EAAA,EAAA,SAAA,EAAW,OAAQ,CAAA,gBAAA,EACtB,QAAC,kBAAA,GAAA,CAAA,gBAAA,EAAA,EAAiB,KAAO,EAAA,EAAE,QAAU,EAAA,EAAA,IAAM,CAC7C,EAAA,CAAA;AAAA,oBAEF,IAAA;AAAA,MAAC,WAAA;AAAA,MAAA;AAAA,QACC,KAAO,EAAA;AAAA,UACL,aAAe,EAAA,QAAA;AAAA,UACf,QAAU,EAAA,CAAA;AAAA,UACV,OAAS,EAAA,MAAA;AAAA,UACT,aAAe,EAAA;AAAA,SACjB;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAA,IAAA;AAAA,YAAC,GAAA;AAAA,YAAA;AAAA,cACC,OAAQ,EAAA,MAAA;AAAA,cACR,cAAe,EAAA,eAAA;AAAA,cACf,UAAW,EAAA,YAAA;AAAA,cAEX,QAAA,EAAA;AAAA,gCAAC,GAAA,CAAA,UAAA,EAAA,EAAW,cAAY,IAAC,EAAA,OAAA,EAAQ,MAAK,SAAU,EAAA,KAAA,EAC7C,qBAAW,KACd,EAAA,CAAA;AAAA,gCACA,GAAA;AAAA,kBAAC,GAAA;AAAA,kBAAA;AAAA,oBACC,SAAS,CAAK,CAAA,KAAA;AACZ,sBAAA,CAAA,CAAE,cAAe,EAAA;AACjB,sBAAA,CAAA,CAAE,eAAgB,EAAA;AAAA,qBACpB;AAAA,oBAEA,QAAA,kBAAA,GAAA,CAAC,0BAAuB,UAAwB,EAAA;AAAA;AAAA;AAClD;AAAA;AAAA,WACF;AAAA,UACC,UAAA,CAAW,WACV,oBAAA,GAAA,CAAC,UAAW,EAAA,EAAA,OAAA,EAAQ,SAAQ,KAAM,EAAA,eAAA,EAAgB,YAAY,EAAA,IAAA,EAC3D,QAAU,EAAA,SAAA,CAAA,QAAA;AAAA,YACT,QAAS,CAAA,wBAAA,CAAyB,UAAW,CAAA,WAAW,GAAG,GAAG;AAAA,WAElE,EAAA,CAAA;AAAA,0BAEF,GAAA,CAAC,GAAI,EAAA,EAAA,EAAA,EAAI,CACP,EAAA,QAAA,kBAAA,GAAA;AAAA,YAAC,eAAA;AAAA,YAAA;AAAA,cACC,MAAQ,EAAA,UAAA;AAAA,cACR,SAAW,EAAA,CAAA;AAAA,cACX,aAAe,EAAA;AAAA;AAAA,WAEnB,EAAA,CAAA;AAAA,0BACA,IAAA,CAAC,QAAK,SAAS,EAAA,IAAA,EAAC,SAAS,CAAG,EAAA,SAAA,EAAW,QAAQ,SAC7C,EAAA,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,IAAK,EAAA,EAAA,IAAA,EAAI,IAAC,EAAA,EAAA,EAAI,CACb,EAAA,QAAA,kBAAA,IAAA;AAAA,cAAC,GAAA;AAAA,cAAA;AAAA,gBACC,OAAQ,EAAA,MAAA;AAAA,gBACR,aAAc,EAAA,QAAA;AAAA,gBACd,UAAW,EAAA,QAAA;AAAA,gBACX,WAAW,OAAQ,CAAA,QAAA;AAAA,gBAEnB,QAAA,EAAA;AAAA,kCAAA,GAAA,CAAC,kBAAmB,EAAA,EAAA,QAAA,EAAS,OAAQ,EAAA,KAAA,EAAM,UAAW,EAAA,CAAA;AAAA,kCACtD,GAAA,CAAC,UAAW,EAAA,EAAA,OAAA,EAAQ,OAAQ,EAAA,KAAA,EAAO,EAAE,UAAY,EAAA,GAAA,EAC9C,EAAA,QAAA,EAAA,UAAA,CAAW,cACd,EAAA,CAAA;AAAA,kCACA,GAAA,CAAC,cAAW,OAAQ,EAAA,SAAA,EAAU,OAAM,eACjC,EAAA,QAAA,EAAA,CAAA,CAAE,kBAAkB,CACvB,EAAA;AAAA;AAAA;AAAA,aAEJ,EAAA,CAAA;AAAA,4BACC,GAAA,CAAA,IAAA,EAAA,EAAK,IAAI,EAAA,IAAA,EAAC,IAAI,CACb,EAAA,QAAA,kBAAA,IAAA;AAAA,cAAC,GAAA;AAAA,cAAA;AAAA,gBACC,OAAQ,EAAA,MAAA;AAAA,gBACR,aAAc,EAAA,QAAA;AAAA,gBACd,UAAW,EAAA,QAAA;AAAA,gBACX,WAAW,OAAQ,CAAA,QAAA;AAAA,gBAEnB,QAAA,EAAA;AAAA,kCAAA,GAAA,CAAC,eAAgB,EAAA,EAAA,QAAA,EAAS,OAAQ,EAAA,KAAA,EAAM,UAAW,EAAA,CAAA;AAAA,kCACnD,GAAA,CAAC,UAAW,EAAA,EAAA,OAAA,EAAQ,OAAQ,EAAA,KAAA,EAAO,EAAE,UAAY,EAAA,GAAA,EAC9C,EAAA,QAAA,EAAA,UAAA,CAAW,aACd,EAAA,CAAA;AAAA,kCACA,GAAA,CAAC,cAAW,OAAQ,EAAA,SAAA,EAAU,OAAM,eACjC,EAAA,QAAA,EAAA,CAAA,CAAE,iBAAiB,CACtB,EAAA;AAAA;AAAA;AAAA,aAEJ,EAAA,CAAA;AAAA,4BACC,GAAA,CAAA,IAAA,EAAA,EAAK,IAAI,EAAA,IAAA,EAAC,IAAI,CACb,EAAA,QAAA,kBAAA,IAAA;AAAA,cAAC,GAAA;AAAA,cAAA;AAAA,gBACC,OAAQ,EAAA,MAAA;AAAA,gBACR,aAAc,EAAA,QAAA;AAAA,gBACd,UAAW,EAAA,QAAA;AAAA,gBACX,WAAW,OAAQ,CAAA,QAAA;AAAA,gBAEnB,QAAA,EAAA;AAAA,kCAAA,GAAA,CAAC,QAAS,EAAA,EAAA,QAAA,EAAS,OAAQ,EAAA,KAAA,EAAM,UAAW,EAAA,CAAA;AAAA,kCAC5C,GAAA,CAAC,UAAW,EAAA,EAAA,OAAA,EAAQ,OAAQ,EAAA,KAAA,EAAO,EAAE,UAAY,EAAA,GAAA,EAC9C,EAAA,QAAA,EAAA,UAAA,CAAW,UACd,EAAA,CAAA;AAAA,kCACA,GAAA,CAAC,cAAW,OAAQ,EAAA,SAAA,EAAU,OAAM,eACjC,EAAA,QAAA,EAAA,CAAA,CAAE,cAAc,CACnB,EAAA;AAAA;AAAA;AAAA,aAEJ,EAAA,CAAA;AAAA,4BACC,GAAA,CAAA,IAAA,EAAA,EAAK,IAAI,EAAA,IAAA,EAAC,IAAI,CACb,EAAA,QAAA,kBAAA,IAAA;AAAA,cAAC,GAAA;AAAA,cAAA;AAAA,gBACC,OAAQ,EAAA,MAAA;AAAA,gBACR,aAAc,EAAA,QAAA;AAAA,gBACd,UAAW,EAAA,QAAA;AAAA,gBACX,WAAW,OAAQ,CAAA,QAAA;AAAA,gBAEnB,QAAA,EAAA;AAAA,kCAAA,GAAA,CAAC,UAAW,EAAA,EAAA,QAAA,EAAS,OAAQ,EAAA,KAAA,EAAM,UAAW,EAAA,CAAA;AAAA,kCAC9C,GAAA,CAAC,UAAW,EAAA,EAAA,OAAA,EAAQ,OAAQ,EAAA,KAAA,EAAO,EAAE,UAAY,EAAA,GAAA,EAC9C,EAAA,QAAA,EAAA,UAAA,CAAW,SACd,EAAA,CAAA;AAAA,kCACA,GAAA,CAAC,cAAW,OAAQ,EAAA,SAAA,EAAU,OAAM,eACjC,EAAA,QAAA,EAAA,CAAA,CAAE,uBAAuB,CAC5B,EAAA;AAAA;AAAA;AAAA,aAEJ,EAAA;AAAA,WACF,EAAA;AAAA;AAAA;AAAA;AACF,GAAA,EACF,CACF,EAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"CollectionsGridItem.esm.js","sources":["../../../src/components/CollectionsContainer/CollectionsGridItem.tsx"],"sourcesContent":["import {\n Collection,\n removeMarkdownFormatting,\n truncate,\n} from '@drodil/backstage-plugin-qeta-common';\nimport { useRouteRef } from '@backstage/core-plugin-api';\nimport { collectionRouteRef } from '../../routes';\nimport {\n Box,\n Card,\n CardContent,\n CardMedia,\n Grid,\n makeStyles,\n Typography,\n} from '@material-ui/core';\nimport DOMPurify from 'dompurify';\nimport { TagsAndEntities } from '../TagsAndEntities/TagsAndEntities';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { qetaTranslationRef } from '../../translation.ts';\nimport { CollectionFollowButton } from '../Buttons/CollectionFollowButton';\nimport { ClickableLink } from '../Utility/ClickableLink';\nimport PlaylistPlayIcon from '@material-ui/icons/PlaylistPlay';\nimport QuestionAnswerIcon from '@material-ui/icons/QuestionAnswer';\nimport PeopleIcon from '@material-ui/icons/People';\nimport LinkIcon from '@material-ui/icons/Link';\nimport DescriptionIcon from '@material-ui/icons/Description';\n\nexport interface PostsGridItemProps {\n collection: Collection;\n}\n\nconst useStyles = makeStyles(theme => ({\n placeholderImage: {\n height: 140,\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n background:\n theme.palette.type === 'dark'\n ? `linear-gradient(135deg, ${theme.palette.grey[800]} 0%, ${theme.palette.grey[900]} 100%)`\n : `linear-gradient(135deg, ${theme.palette.grey[200]} 0%, ${theme.palette.grey[300]} 100%)`,\n color: theme.palette.text.secondary,\n opacity: 0.8,\n },\n card: {\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n cursor: 'pointer',\n position: 'relative',\n '&:hover::after': {\n content: '\"\"',\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'currentColor',\n opacity: theme.palette.action.hoverOpacity || 0.04,\n borderRadius: theme.shape.borderRadius,\n pointerEvents: 'none',\n },\n },\n statsGrid: {\n marginTop: 'auto',\n },\n statItem: {\n padding: theme.spacing(1),\n borderRadius: theme.shape.borderRadius,\n width: '100%',\n height: '100%',\n justifyContent: 'center',\n },\n}));\n\nexport const CollectionsGridItem = (props: PostsGridItemProps) => {\n const { collection } = props;\n const classes = useStyles();\n const { t } = useTranslationRef(qetaTranslationRef);\n\n const collectionRoute = useRouteRef(collectionRouteRef);\n const href = collectionRoute({ id: collection.id.toString(10) });\n\n return (\n <Card className={classes.card}>\n <ClickableLink href={href} ariaLabel={collection.title}>\n {collection.headerImage ? (\n <CardMedia\n component=\"img\"\n height=\"140\"\n onError={e => (e.currentTarget.style.display = 'none')}\n image={collection.headerImage}\n alt={collection.title}\n style={{ objectFit: 'cover' }}\n />\n ) : (\n <Box className={classes.placeholderImage}>\n <PlaylistPlayIcon style={{ fontSize: 60 }} />\n </Box>\n )}\n <CardContent\n style={{\n paddingBottom: '0.5rem',\n flexGrow: 1,\n display: 'flex',\n flexDirection: 'column',\n }}\n >\n <Box\n display=\"flex\"\n justifyContent=\"space-between\"\n alignItems=\"flex-start\"\n >\n <Typography gutterBottom variant=\"h6\" component=\"div\">\n {collection.title}\n </Typography>\n <Box\n onClick={e => {\n e.preventDefault();\n e.stopPropagation();\n }}\n >\n <CollectionFollowButton collection={collection} />\n </Box>\n </Box>\n {collection.description && (\n <Typography variant=\"body2\" color=\"textSecondary\" gutterBottom>\n {DOMPurify.sanitize(\n truncate(removeMarkdownFormatting(collection.description), 200),\n )}\n </Typography>\n )}\n <Box mt={2}>\n <TagsAndEntities\n entity={collection}\n tagsLimit={5}\n entitiesLimit={5}\n />\n </Box>\n <Grid container spacing={1} className={classes.statsGrid}>\n <Grid item xs={3}>\n <Box\n display=\"flex\"\n flexDirection=\"column\"\n alignItems=\"center\"\n className={classes.statItem}\n >\n <QuestionAnswerIcon fontSize=\"small\" color=\"disabled\" />\n <Typography variant=\"body2\" style={{ fontWeight: 600 }}>\n {collection.questionsCount}\n </Typography>\n <Typography variant=\"caption\" color=\"textSecondary\">\n {t('common.questions')}\n </Typography>\n </Box>\n </Grid>\n <Grid item xs={3}>\n <Box\n display=\"flex\"\n flexDirection=\"column\"\n alignItems=\"center\"\n className={classes.statItem}\n >\n <DescriptionIcon fontSize=\"small\" color=\"disabled\" />\n <Typography variant=\"body2\" style={{ fontWeight: 600 }}>\n {collection.articlesCount}\n </Typography>\n <Typography variant=\"caption\" color=\"textSecondary\">\n {t('common.articles')}\n </Typography>\n </Box>\n </Grid>\n <Grid item xs={3}>\n <Box\n display=\"flex\"\n flexDirection=\"column\"\n alignItems=\"center\"\n className={classes.statItem}\n >\n <LinkIcon fontSize=\"small\" color=\"disabled\" />\n <Typography variant=\"body2\" style={{ fontWeight: 600 }}>\n {collection.linksCount}\n </Typography>\n <Typography variant=\"caption\" color=\"textSecondary\">\n {t('common.links')}\n </Typography>\n </Box>\n </Grid>\n <Grid item xs={3}>\n <Box\n display=\"flex\"\n flexDirection=\"column\"\n alignItems=\"center\"\n className={classes.statItem}\n >\n <PeopleIcon fontSize=\"small\" color=\"disabled\" />\n <Typography variant=\"body2\" style={{ fontWeight: 600 }}>\n {collection.followers}\n </Typography>\n <Typography variant=\"caption\" color=\"textSecondary\">\n {t('common.followersPlain')}\n </Typography>\n </Box>\n </Grid>\n </Grid>\n </CardContent>\n </ClickableLink>\n </Card>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"CommentForm.esm.js","sources":["../../../src/components/CommentSection/CommentForm.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/no-autofocus */\n/* eslint-disable jsx-a11y/no-autofocus */\nimport { useState } from 'react';\nimport { Button } from '@material-ui/core';\nimport { Controller, useForm } from 'react-hook-form';\nimport { MarkdownEditor } from '../MarkdownEditor/MarkdownEditor.tsx';\nimport { useConfirmNavigationIfEdited } from '../../utils';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { qetaTranslationRef } from '../../translation.ts';\n\nexport const CommentForm = (props: {\n submit: (data: { content: string }) => void;\n disabled?: boolean;\n defaultValues?: { content: string };\n saveButtonTitle: string;\n onDiscard?: () => void;\n}) => {\n const { submit, disabled, saveButtonTitle, defaultValues, onDiscard } = props;\n const { t } = useTranslationRef(qetaTranslationRef);\n const { handleSubmit, control, reset } = useForm<{ content: string }>({\n defaultValues,\n });\n const [edited, setEdited] = useState(false);\n useConfirmNavigationIfEdited(edited);\n\n return (\n <form\n onSubmit={handleSubmit(submit)}\n onChange={() => {\n setEdited(true);\n }}\n className=\"qetaCommentForm\"\n >\n <Controller\n control={control}\n defaultValue=\"\"\n rules={{\n required: true,\n }}\n render={({ field: { onChange, value } }) => (\n <MarkdownEditor\n autoFocus\n value={value}\n onChange={onChange}\n height={100}\n disablePreview\n disableAttachments\n disableToolbar\n disabled={disabled}\n />\n )}\n name=\"content\"\n />\n <div\n style={{\n display: 'flex',\n justifyContent: 'flex-end',\n marginTop: '0.5rem',\n }}\n >\n {onDiscard && (\n <Button\n variant=\"text\"\n size=\"small\"\n color=\"primary\"\n onClick={() => {\n setEdited(false);\n onDiscard();\n reset();\n }}\n style={{ marginRight: '0.5rem' }}\n >\n {t('common.cancel')}\n </Button>\n )}\n <Button\n variant=\"contained\"\n size=\"small\"\n className=\"qetaCommentBtn\"\n type=\"submit\"\n color=\"primary\"\n disabled={disabled}\n >\n {saveButtonTitle}\n </Button>\n </div>\n </form>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;AAUa,MAAA,WAAA,GAAc,CAAC,KAMtB,KAAA;AACJ,EAAA,MAAM,EAAE,MAAQ,EAAA,QAAA,EAAU,eAAiB,EAAA,aAAA,EAAe,WAAc,GAAA,KAAA;AACxE,EAAA,MAAM,EAAE,CAAA,EAAM,GAAA,iBAAA,CAAkB,kBAAkB,CAAA;AAClD,EAAA,MAAM,EAAE,YAAA,EAAc,OAAS,EAAA,KAAA,KAAU,OAA6B,CAAA;AAAA,IACpE;AAAA,GACD,CAAA;AACD,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAI,SAAS,KAAK,CAAA;AAC1C,EAAA,4BAAA,CAA6B,MAAM,CAAA;AAEnC,EACE,uBAAA,IAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAU,aAAa,MAAM,CAAA;AAAA,MAC7B,UAAU,MAAM;AACd,QAAA,SAAA,CAAU,IAAI,CAAA;AAAA,OAChB;AAAA,MACA,SAAU,EAAA,iBAAA;AAAA,MAEV,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACC,OAAA;AAAA,YACA,YAAa,EAAA,EAAA;AAAA,YACb,KAAO,EAAA;AAAA,cACL,QAAU,EAAA;AAAA,aACZ;AAAA,YACA,MAAA,EAAQ,CAAC,EAAE,KAAA,EAAO,EAAE,QAAU,EAAA,KAAA,IAC5B,qBAAA,GAAA;AAAA,cAAC,cAAA;AAAA,cAAA;AAAA,gBACC,SAAS,EAAA,IAAA;AAAA,gBACT,KAAA;AAAA,gBACA,QAAA;AAAA,gBACA,MAAQ,EAAA,GAAA;AAAA,gBACR,cAAc,EAAA,IAAA;AAAA,gBACd,kBAAkB,EAAA,IAAA;AAAA,gBAClB,cAAc,EAAA,IAAA;AAAA,gBACd;AAAA;AAAA,aACF;AAAA,YAEF,IAAK,EAAA;AAAA;AAAA,SACP;AAAA,wBACA,IAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAO,EAAA;AAAA,cACL,OAAS,EAAA,MAAA;AAAA,cACT,cAAgB,EAAA,UAAA;AAAA,cAChB,SAAW,EAAA;AAAA,aACb;AAAA,YAEC,QAAA,EAAA;AAAA,cACC,SAAA,oBAAA,GAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,OAAQ,EAAA,MAAA;AAAA,kBACR,IAAK,EAAA,OAAA;AAAA,kBACL,KAAM,EAAA,SAAA;AAAA,kBACN,SAAS,MAAM;AACb,oBAAA,SAAA,CAAU,KAAK,CAAA;AACf,oBAAU,SAAA,EAAA;AACV,oBAAM,KAAA,EAAA;AAAA,mBACR;AAAA,kBACA,KAAA,EAAO,EAAE,WAAA,EAAa,QAAS,EAAA;AAAA,kBAE9B,YAAE,eAAe;AAAA;AAAA,eACpB;AAAA,8BAEF,GAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,OAAQ,EAAA,WAAA;AAAA,kBACR,IAAK,EAAA,OAAA;AAAA,kBACL,SAAU,EAAA,gBAAA;AAAA,kBACV,IAAK,EAAA,QAAA;AAAA,kBACL,KAAM,EAAA,SAAA;AAAA,kBACN,QAAA;AAAA,kBAEC,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AAAA;AACF;AAAA;AAAA,GACF;AAEJ;;;;"}
1
+ {"version":3,"file":"CommentForm.esm.js","sources":["../../../src/components/CommentSection/CommentForm.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/no-autofocus */\n/* eslint-disable jsx-a11y/no-autofocus */\nimport { useState } from 'react';\nimport { Button } from '@material-ui/core';\nimport { Controller, useForm } from 'react-hook-form';\nimport { MarkdownEditor } from '../MarkdownEditor/MarkdownEditor.tsx';\nimport { useConfirmNavigationIfEdited } from '../../utils';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { qetaTranslationRef } from '../../translation.ts';\n\nexport const CommentForm = (props: {\n submit: (data: { content: string }) => void;\n disabled?: boolean;\n defaultValues?: { content: string };\n saveButtonTitle: string;\n onDiscard?: () => void;\n}) => {\n const { submit, disabled, saveButtonTitle, defaultValues, onDiscard } = props;\n const { t } = useTranslationRef(qetaTranslationRef);\n const { handleSubmit, control, reset } = useForm<{ content: string }>({\n defaultValues,\n });\n const [edited, setEdited] = useState(false);\n useConfirmNavigationIfEdited(edited);\n\n return (\n <form\n onSubmit={handleSubmit(submit)}\n onChange={() => {\n setEdited(true);\n }}\n className=\"qetaCommentForm\"\n >\n <Controller\n control={control}\n defaultValue=\"\"\n rules={{\n required: true,\n }}\n render={({ field: { onChange, value } }) => (\n <MarkdownEditor\n autoFocus\n value={value}\n onChange={onChange}\n height={100}\n disablePreview\n disableAttachments\n disableToolbar\n disabled={disabled}\n />\n )}\n name=\"content\"\n />\n <div\n style={{\n display: 'flex',\n justifyContent: 'flex-end',\n marginTop: '0.5rem',\n }}\n >\n {onDiscard && (\n <Button\n variant=\"text\"\n size=\"small\"\n color=\"primary\"\n onClick={() => {\n setEdited(false);\n onDiscard();\n reset();\n }}\n style={{ marginRight: '0.5rem' }}\n >\n {t('common.cancel')}\n </Button>\n )}\n <Button\n variant=\"contained\"\n size=\"small\"\n className=\"qetaCommentBtn\"\n type=\"submit\"\n color=\"primary\"\n disabled={disabled}\n >\n {saveButtonTitle}\n </Button>\n </div>\n </form>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;AAUO,MAAM,WAAA,GAAc,CAAC,KAAA,KAMtB;AACJ,EAAA,MAAM,EAAE,MAAA,EAAQ,QAAA,EAAU,eAAA,EAAiB,aAAA,EAAe,WAAU,GAAI,KAAA;AACxE,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,kBAAkB,CAAA;AAClD,EAAA,MAAM,EAAE,YAAA,EAAc,OAAA,EAAS,KAAA,KAAU,OAAA,CAA6B;AAAA,IACpE;AAAA,GACD,CAAA;AACD,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAI,SAAS,KAAK,CAAA;AAC1C,EAAA,4BAAA,CAA6B,MAAM,CAAA;AAEnC,EAAA,uBACE,IAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAU,aAAa,MAAM,CAAA;AAAA,MAC7B,UAAU,MAAM;AACd,QAAA,SAAA,CAAU,IAAI,CAAA;AAAA,MAChB,CAAA;AAAA,MACA,SAAA,EAAU,iBAAA;AAAA,MAEV,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACC,OAAA;AAAA,YACA,YAAA,EAAa,EAAA;AAAA,YACb,KAAA,EAAO;AAAA,cACL,QAAA,EAAU;AAAA,aACZ;AAAA,YACA,MAAA,EAAQ,CAAC,EAAE,KAAA,EAAO,EAAE,QAAA,EAAU,KAAA,IAAQ,qBACpC,GAAA;AAAA,cAAC,cAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAS,IAAA;AAAA,gBACT,KAAA;AAAA,gBACA,QAAA;AAAA,gBACA,MAAA,EAAQ,GAAA;AAAA,gBACR,cAAA,EAAc,IAAA;AAAA,gBACd,kBAAA,EAAkB,IAAA;AAAA,gBAClB,cAAA,EAAc,IAAA;AAAA,gBACd;AAAA;AAAA,aACF;AAAA,YAEF,IAAA,EAAK;AAAA;AAAA,SACP;AAAA,wBACA,IAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO;AAAA,cACL,OAAA,EAAS,MAAA;AAAA,cACT,cAAA,EAAgB,UAAA;AAAA,cAChB,SAAA,EAAW;AAAA,aACb;AAAA,YAEC,QAAA,EAAA;AAAA,cAAA,SAAA,oBACC,GAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,OAAA,EAAQ,MAAA;AAAA,kBACR,IAAA,EAAK,OAAA;AAAA,kBACL,KAAA,EAAM,SAAA;AAAA,kBACN,SAAS,MAAM;AACb,oBAAA,SAAA,CAAU,KAAK,CAAA;AACf,oBAAA,SAAA,EAAU;AACV,oBAAA,KAAA,EAAM;AAAA,kBACR,CAAA;AAAA,kBACA,KAAA,EAAO,EAAE,WAAA,EAAa,QAAA,EAAS;AAAA,kBAE9B,YAAE,eAAe;AAAA;AAAA,eACpB;AAAA,8BAEF,GAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,OAAA,EAAQ,WAAA;AAAA,kBACR,IAAA,EAAK,OAAA;AAAA,kBACL,SAAA,EAAU,gBAAA;AAAA,kBACV,IAAA,EAAK,QAAA;AAAA,kBACL,KAAA,EAAM,SAAA;AAAA,kBACN,QAAA;AAAA,kBAEC,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AAAA;AACF;AAAA;AAAA,GACF;AAEJ;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"CommentList.esm.js","sources":["../../../src/components/CommentSection/CommentList.tsx"],"sourcesContent":["import {\n AnswerResponse,\n PostResponse,\n} from '@drodil/backstage-plugin-qeta-common';\nimport { Box, Divider } from '@material-ui/core';\nimport { CommentListItem } from './CommentListItem.tsx';\n\nexport type QetaCommentListClassKey = 'content' | 'root' | 'box';\n\nexport const CommentList = (props: {\n onCommentAction: (question: PostResponse, answer?: AnswerResponse) => void;\n post: PostResponse;\n answer?: AnswerResponse;\n}) => {\n const { post, answer, onCommentAction } = props;\n const entity = answer ?? post;\n\n if (!entity.comments || entity.comments.length === 0) {\n return null;\n }\n\n return (\n <Box>\n {entity.comments?.map((c, i) => {\n return (\n <div key={c.id}>\n {i > 0 && <Divider />}\n <CommentListItem\n comment={c}\n onCommentAction={onCommentAction}\n post={post}\n answer={answer}\n />\n </div>\n );\n })}\n </Box>\n );\n};\n"],"names":[],"mappings":";;;;AASa,MAAA,WAAA,GAAc,CAAC,KAItB,KAAA;AACJ,EAAA,MAAM,EAAE,IAAA,EAAM,MAAQ,EAAA,eAAA,EAAoB,GAAA,KAAA;AAC1C,EAAA,MAAM,SAAS,MAAU,IAAA,IAAA;AAEzB,EAAA,IAAI,CAAC,MAAO,CAAA,QAAA,IAAY,MAAO,CAAA,QAAA,CAAS,WAAW,CAAG,EAAA;AACpD,IAAO,OAAA,IAAA;AAAA;AAGT,EAAA,2BACG,GACE,EAAA,EAAA,QAAA,EAAA,MAAA,CAAO,UAAU,GAAI,CAAA,CAAC,GAAG,CAAM,KAAA;AAC9B,IAAA,4BACG,KACE,EAAA,EAAA,QAAA,EAAA;AAAA,MAAI,CAAA,GAAA,CAAA,wBAAM,OAAQ,EAAA,EAAA,CAAA;AAAA,sBACnB,GAAA;AAAA,QAAC,eAAA;AAAA,QAAA;AAAA,UACC,OAAS,EAAA,CAAA;AAAA,UACT,eAAA;AAAA,UACA,IAAA;AAAA,UACA;AAAA;AAAA;AACF,KAAA,EAAA,EAPQ,EAAE,EAQZ,CAAA;AAAA,GAEH,CACH,EAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"CommentList.esm.js","sources":["../../../src/components/CommentSection/CommentList.tsx"],"sourcesContent":["import {\n AnswerResponse,\n PostResponse,\n} from '@drodil/backstage-plugin-qeta-common';\nimport { Box, Divider } from '@material-ui/core';\nimport { CommentListItem } from './CommentListItem.tsx';\n\nexport type QetaCommentListClassKey = 'content' | 'root' | 'box';\n\nexport const CommentList = (props: {\n onCommentAction: (question: PostResponse, answer?: AnswerResponse) => void;\n post: PostResponse;\n answer?: AnswerResponse;\n}) => {\n const { post, answer, onCommentAction } = props;\n const entity = answer ?? post;\n\n if (!entity.comments || entity.comments.length === 0) {\n return null;\n }\n\n return (\n <Box>\n {entity.comments?.map((c, i) => {\n return (\n <div key={c.id}>\n {i > 0 && <Divider />}\n <CommentListItem\n comment={c}\n onCommentAction={onCommentAction}\n post={post}\n answer={answer}\n />\n </div>\n );\n })}\n </Box>\n );\n};\n"],"names":[],"mappings":";;;;AASO,MAAM,WAAA,GAAc,CAAC,KAAA,KAItB;AACJ,EAAA,MAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,eAAA,EAAgB,GAAI,KAAA;AAC1C,EAAA,MAAM,SAAS,MAAA,IAAU,IAAA;AAEzB,EAAA,IAAI,CAAC,MAAA,CAAO,QAAA,IAAY,MAAA,CAAO,QAAA,CAAS,WAAW,CAAA,EAAG;AACpD,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,2BACG,GAAA,EAAA,EACE,QAAA,EAAA,MAAA,CAAO,UAAU,GAAA,CAAI,CAAC,GAAG,CAAA,KAAM;AAC9B,IAAA,4BACG,KAAA,EAAA,EACE,QAAA,EAAA;AAAA,MAAA,CAAA,GAAI,CAAA,wBAAM,OAAA,EAAA,EAAQ,CAAA;AAAA,sBACnB,GAAA;AAAA,QAAC,eAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAS,CAAA;AAAA,UACT,eAAA;AAAA,UACA,IAAA;AAAA,UACA;AAAA;AAAA;AACF,KAAA,EAAA,EAPQ,EAAE,EAQZ,CAAA;AAAA,EAEJ,CAAC,CAAA,EACH,CAAA;AAEJ;;;;"}
@@ -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 { 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 { alertApiRef, 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:not(ul,ol,blockquote)': {\n display: 'inline',\n },\n lineHeight: 1.5,\n },\n metadata: {\n color: theme.palette.text.secondary,\n marginTop: theme.spacing(0.5),\n display: 'flex',\n alignItems: 'center',\n gap: theme.spacing(0.5),\n '& a': {\n color: theme.palette.text.secondary,\n transition: 'all 0.2s ease-in-out',\n textDecoration: 'none',\n '&:hover': {\n color: theme.palette.primary.main,\n textDecoration: 'underline',\n },\n },\n '& .actionBtn': {\n marginLeft: theme.spacing(1),\n fontSize: '0.75rem',\n opacity: 0.7,\n '&:hover': {\n opacity: 1,\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 const alertApi = useApi(alertApiRef);\n\n const deleteComment = (id: number) => {\n if (answer) {\n qetaApi\n .deleteAnswerComment(post.id, answer.id, id)\n .catch(e =>\n alertApi.post({\n message: e.message,\n display: 'transient',\n severity: 'error',\n }),\n )\n .then(a => {\n if (a) {\n onCommentAction(post, a);\n }\n });\n return;\n }\n qetaApi\n .deletePostComment(post.id, id)\n .catch(e =>\n alertApi.post({\n message: e.message,\n display: 'transient',\n severity: 'error',\n }),\n )\n .then(q => {\n if (q) {\n onCommentAction(q);\n }\n });\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 .catch(e =>\n alertApi.post({\n message: e.message,\n display: 'transient',\n severity: 'error',\n }),\n )\n .then(a => {\n if (a) {\n onCommentAction(post, a);\n }\n })\n .finally(() => {\n setEditing(false);\n setPosting(false);\n });\n return;\n }\n qetaApi\n .updatePostComment(post.id, comment.id, data.content)\n .catch(e =>\n alertApi.post({\n message: e.message,\n display: 'transient',\n severity: 'error',\n }),\n )\n .then(q => {\n if (q) {\n onCommentAction(q);\n }\n })\n .finally(() => {\n setEditing(false);\n setPosting(false);\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 onDiscard={() => setEditing(false)}\n />\n </>\n ) : (\n <>\n <MarkdownRenderer\n content={comment.content}\n className={styles.content}\n />\n <Typography variant=\"caption\" className={styles.metadata}>\n <AuthorLink entity={comment} />\n {comment.expert && <ExpertIcon />}\n {' • '}\n <RelativeTimeWithTooltip value={comment.created} />\n {comment.canEdit && post.status !== 'obsolete' && (\n <Link\n underline=\"none\"\n to=\"#\"\n className=\"actionBtn qetaCommentEditBtn\"\n onClick={() => setEditing(true)}\n >\n {t('commentList.editLink')}\n </Link>\n )}\n {comment.canDelete && post.status !== 'obsolete' && (\n <Link\n underline=\"none\"\n to=\"#\"\n className=\"actionBtn qetaCommentDeleteBtn\"\n onClick={() => deleteComment(comment.id)}\n >\n {t('commentList.deleteLink')}\n </Link>\n )}\n </Typography>\n </>\n )}\n </Box>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAkBA,MAAM,SAAY,GAAA,UAAA;AAAA,EAChB,CAAU,KAAA,MAAA;AAAA,IACR,MAAM,EAAC;AAAA,IACP,GAAK,EAAA;AAAA,MACH,OAAA,EAAS,KAAM,CAAA,OAAA,CAAQ,GAAG,CAAA;AAAA,MAC1B,UAAY,EAAA,sBAAA;AAAA,MACZ,SAAW,EAAA;AAAA,QACT,eAAA,EAAiB,KAAM,CAAA,OAAA,CAAQ,MAAO,CAAA;AAAA;AACxC,KACF;AAAA,IACA,OAAS,EAAA;AAAA,MACP,OAAS,EAAA,QAAA;AAAA,MACT,sCAAwC,EAAA;AAAA,QACtC,OAAS,EAAA;AAAA,OACX;AAAA,MACA,UAAY,EAAA;AAAA,KACd;AAAA,IACA,QAAU,EAAA;AAAA,MACR,KAAA,EAAO,KAAM,CAAA,OAAA,CAAQ,IAAK,CAAA,SAAA;AAAA,MAC1B,SAAA,EAAW,KAAM,CAAA,OAAA,CAAQ,GAAG,CAAA;AAAA,MAC5B,OAAS,EAAA,MAAA;AAAA,MACT,UAAY,EAAA,QAAA;AAAA,MACZ,GAAA,EAAK,KAAM,CAAA,OAAA,CAAQ,GAAG,CAAA;AAAA,MACtB,KAAO,EAAA;AAAA,QACL,KAAA,EAAO,KAAM,CAAA,OAAA,CAAQ,IAAK,CAAA,SAAA;AAAA,QAC1B,UAAY,EAAA,sBAAA;AAAA,QACZ,cAAgB,EAAA,MAAA;AAAA,QAChB,SAAW,EAAA;AAAA,UACT,KAAA,EAAO,KAAM,CAAA,OAAA,CAAQ,OAAQ,CAAA,IAAA;AAAA,UAC7B,cAAgB,EAAA;AAAA;AAClB,OACF;AAAA,MACA,cAAgB,EAAA;AAAA,QACd,UAAA,EAAY,KAAM,CAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,QAC3B,QAAU,EAAA,SAAA;AAAA,QACV,OAAS,EAAA,GAAA;AAAA,QACT,SAAW,EAAA;AAAA,UACT,OAAS,EAAA;AAAA;AACX;AACF;AACF,GACF,CAAA;AAAA,EACA,EAAE,MAAM,iBAAkB;AAC5B,CAAA;AAEa,MAAA,eAAA,GAAkB,CAAC,KAK1B,KAAA;AACJ,EAAA,MAAM,EAAE,CAAA,EAAM,GAAA,iBAAA,CAAkB,kBAAkB,CAAA;AAClD,EAAA,MAAM,EAAE,OAAA,EAAS,eAAiB,EAAA,IAAA,EAAM,QAAW,GAAA,KAAA;AACnD,EAAM,MAAA,OAAA,GAAU,OAAO,UAAU,CAAA;AACjC,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,SAAS,SAAU,EAAA;AACzB,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,KAAK,CAAA;AAC5C,EAAM,MAAA,QAAA,GAAW,OAAO,WAAW,CAAA;AAEnC,EAAM,MAAA,aAAA,GAAgB,CAAC,EAAe,KAAA;AACpC,IAAA,IAAI,MAAQ,EAAA;AACV,MAAA,OAAA,CACG,oBAAoB,IAAK,CAAA,EAAA,EAAI,MAAO,CAAA,EAAA,EAAI,EAAE,CAC1C,CAAA,KAAA;AAAA,QAAM,CAAA,CAAA,KACL,SAAS,IAAK,CAAA;AAAA,UACZ,SAAS,CAAE,CAAA,OAAA;AAAA,UACX,OAAS,EAAA,WAAA;AAAA,UACT,QAAU,EAAA;AAAA,SACX;AAAA,OACH,CACC,KAAK,CAAK,CAAA,KAAA;AACT,QAAA,IAAI,CAAG,EAAA;AACL,UAAA,eAAA,CAAgB,MAAM,CAAC,CAAA;AAAA;AACzB,OACD,CAAA;AACH,MAAA;AAAA;AAEF,IAAA,OAAA,CACG,iBAAkB,CAAA,IAAA,CAAK,EAAI,EAAA,EAAE,CAC7B,CAAA,KAAA;AAAA,MAAM,CAAA,CAAA,KACL,SAAS,IAAK,CAAA;AAAA,QACZ,SAAS,CAAE,CAAA,OAAA;AAAA,QACX,OAAS,EAAA,WAAA;AAAA,QACT,QAAU,EAAA;AAAA,OACX;AAAA,KACH,CACC,KAAK,CAAK,CAAA,KAAA;AACT,MAAA,IAAI,CAAG,EAAA;AACL,QAAA,eAAA,CAAgB,CAAC,CAAA;AAAA;AACnB,KACD,CAAA;AAAA,GACL;AAEA,EAAM,MAAA,WAAA,GAAc,CAAC,IAA8B,KAAA;AACjD,IAAA,UAAA,CAAW,IAAI,CAAA;AACf,IAAA,IAAI,MAAQ,EAAA;AACV,MACG,OAAA,CAAA,mBAAA,CAAoB,KAAK,EAAI,EAAA,MAAA,CAAO,IAAI,OAAQ,CAAA,EAAA,EAAI,IAAK,CAAA,OAAO,CAChE,CAAA,KAAA;AAAA,QAAM,CAAA,CAAA,KACL,SAAS,IAAK,CAAA;AAAA,UACZ,SAAS,CAAE,CAAA,OAAA;AAAA,UACX,OAAS,EAAA,WAAA;AAAA,UACT,QAAU,EAAA;AAAA,SACX;AAAA,OACH,CACC,KAAK,CAAK,CAAA,KAAA;AACT,QAAA,IAAI,CAAG,EAAA;AACL,UAAA,eAAA,CAAgB,MAAM,CAAC,CAAA;AAAA;AACzB,OACD,CACA,CAAA,OAAA,CAAQ,MAAM;AACb,QAAA,UAAA,CAAW,KAAK,CAAA;AAChB,QAAA,UAAA,CAAW,KAAK,CAAA;AAAA,OACjB,CAAA;AACH,MAAA;AAAA;AAEF,IAAA,OAAA,CACG,kBAAkB,IAAK,CAAA,EAAA,EAAI,QAAQ,EAAI,EAAA,IAAA,CAAK,OAAO,CACnD,CAAA,KAAA;AAAA,MAAM,CAAA,CAAA,KACL,SAAS,IAAK,CAAA;AAAA,QACZ,SAAS,CAAE,CAAA,OAAA;AAAA,QACX,OAAS,EAAA,WAAA;AAAA,QACT,QAAU,EAAA;AAAA,OACX;AAAA,KACH,CACC,KAAK,CAAK,CAAA,KAAA;AACT,MAAA,IAAI,CAAG,EAAA;AACL,QAAA,eAAA,CAAgB,CAAC,CAAA;AAAA;AACnB,KACD,CACA,CAAA,OAAA,CAAQ,MAAM;AACb,MAAA,UAAA,CAAW,KAAK,CAAA;AAChB,MAAA,UAAA,CAAW,KAAK,CAAA;AAAA,KACjB,CAAA;AAAA,GACL;AAEA,EAAA,2BACG,GAAI,EAAA,EAAA,SAAA,EAAW,MAAO,CAAA,GAAA,EACpB,oCAEG,GAAA,CAAA,QAAA,EAAA,EAAA,QAAA,kBAAA,GAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACC,MAAQ,EAAA,WAAA;AAAA,MACR,eAAA,EAAiB,EAAE,kBAAkB,CAAA;AAAA,MACrC,aAAe,EAAA,EAAE,OAAS,EAAA,OAAA,CAAQ,OAAQ,EAAA;AAAA,MAC1C,QAAU,EAAA,OAAA;AAAA,MACV,SAAA,EAAW,MAAM,UAAA,CAAW,KAAK;AAAA;AAAA,GACnC,EACF,oBAGE,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,gBAAA;AAAA,MAAA;AAAA,QACC,SAAS,OAAQ,CAAA,OAAA;AAAA,QACjB,WAAW,MAAO,CAAA;AAAA;AAAA,KACpB;AAAA,yBACC,UAAW,EAAA,EAAA,OAAA,EAAQ,SAAU,EAAA,SAAA,EAAW,OAAO,QAC9C,EAAA,QAAA,EAAA;AAAA,sBAAC,GAAA,CAAA,UAAA,EAAA,EAAW,QAAQ,OAAS,EAAA,CAAA;AAAA,MAC5B,OAAA,CAAQ,MAAU,oBAAA,GAAA,CAAC,UAAW,EAAA,EAAA,CAAA;AAAA,MAC9B,UAAA;AAAA,sBACA,GAAA,CAAA,uBAAA,EAAA,EAAwB,KAAO,EAAA,OAAA,CAAQ,OAAS,EAAA,CAAA;AAAA,MAChD,OAAQ,CAAA,OAAA,IAAW,IAAK,CAAA,MAAA,KAAW,UAClC,oBAAA,GAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,SAAU,EAAA,MAAA;AAAA,UACV,EAAG,EAAA,GAAA;AAAA,UACH,SAAU,EAAA,8BAAA;AAAA,UACV,OAAA,EAAS,MAAM,UAAA,CAAW,IAAI,CAAA;AAAA,UAE7B,YAAE,sBAAsB;AAAA;AAAA,OAC3B;AAAA,MAED,OAAQ,CAAA,SAAA,IAAa,IAAK,CAAA,MAAA,KAAW,UACpC,oBAAA,GAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,SAAU,EAAA,MAAA;AAAA,UACV,EAAG,EAAA,GAAA;AAAA,UACH,SAAU,EAAA,gCAAA;AAAA,UACV,OAAS,EAAA,MAAM,aAAc,CAAA,OAAA,CAAQ,EAAE,CAAA;AAAA,UAEtC,YAAE,wBAAwB;AAAA;AAAA;AAC7B,KAEJ,EAAA;AAAA,GAAA,EACF,CAEJ,EAAA,CAAA;AAEJ;;;;"}
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 { alertApiRef, 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:not(ul,ol,blockquote)': {\n display: 'inline',\n },\n lineHeight: 1.5,\n },\n metadata: {\n color: theme.palette.text.secondary,\n marginTop: theme.spacing(0.5),\n display: 'flex',\n alignItems: 'center',\n gap: theme.spacing(0.5),\n '& a': {\n color: theme.palette.text.secondary,\n transition: 'all 0.2s ease-in-out',\n textDecoration: 'none',\n '&:hover': {\n color: theme.palette.primary.main,\n textDecoration: 'underline',\n },\n },\n '& .actionBtn': {\n marginLeft: theme.spacing(1),\n fontSize: '0.75rem',\n opacity: 0.7,\n '&:hover': {\n opacity: 1,\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 const alertApi = useApi(alertApiRef);\n\n const deleteComment = (id: number) => {\n if (answer) {\n qetaApi\n .deleteAnswerComment(post.id, answer.id, id)\n .catch(e =>\n alertApi.post({\n message: e.message,\n display: 'transient',\n severity: 'error',\n }),\n )\n .then(a => {\n if (a) {\n onCommentAction(post, a);\n }\n });\n return;\n }\n qetaApi\n .deletePostComment(post.id, id)\n .catch(e =>\n alertApi.post({\n message: e.message,\n display: 'transient',\n severity: 'error',\n }),\n )\n .then(q => {\n if (q) {\n onCommentAction(q);\n }\n });\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 .catch(e =>\n alertApi.post({\n message: e.message,\n display: 'transient',\n severity: 'error',\n }),\n )\n .then(a => {\n if (a) {\n onCommentAction(post, a);\n }\n })\n .finally(() => {\n setEditing(false);\n setPosting(false);\n });\n return;\n }\n qetaApi\n .updatePostComment(post.id, comment.id, data.content)\n .catch(e =>\n alertApi.post({\n message: e.message,\n display: 'transient',\n severity: 'error',\n }),\n )\n .then(q => {\n if (q) {\n onCommentAction(q);\n }\n })\n .finally(() => {\n setEditing(false);\n setPosting(false);\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 onDiscard={() => setEditing(false)}\n />\n </>\n ) : (\n <>\n <MarkdownRenderer\n content={comment.content}\n className={styles.content}\n />\n <Typography variant=\"caption\" className={styles.metadata}>\n <AuthorLink entity={comment} />\n {comment.expert && <ExpertIcon />}\n {' • '}\n <RelativeTimeWithTooltip value={comment.created} />\n {comment.canEdit && post.status !== 'obsolete' && (\n <Link\n underline=\"none\"\n to=\"#\"\n className=\"actionBtn qetaCommentEditBtn\"\n onClick={() => setEditing(true)}\n >\n {t('commentList.editLink')}\n </Link>\n )}\n {comment.canDelete && post.status !== 'obsolete' && (\n <Link\n underline=\"none\"\n to=\"#\"\n className=\"actionBtn qetaCommentDeleteBtn\"\n onClick={() => deleteComment(comment.id)}\n >\n {t('commentList.deleteLink')}\n </Link>\n )}\n </Typography>\n </>\n )}\n </Box>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
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 { alertApiRef, 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 | 'prominentButton';\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 prominentButton: {\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(2),\n marginLeft: theme.spacing(1),\n padding: theme.spacing(1, 2.5),\n textTransform: 'none',\n fontSize: '1rem',\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 showProminentButton?: boolean;\n}) => {\n const { answer, post, onCommentAction, showProminentButton = false } = 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 const alertApi = useApi(alertApiRef);\n\n const postComment = (data: { content: string }) => {\n setPosting(true);\n if (answer) {\n qetaApi\n .commentAnswer(post.id, answer.id, data.content)\n .catch(e =>\n alertApi.post({\n message: e.message,\n severity: 'error',\n display: 'transient',\n }),\n )\n .then(a => {\n setFormVisible(false);\n analytics.captureEvent('comment', 'answer');\n setEdited(false);\n if (a) {\n onCommentAction(post, a);\n }\n })\n .finally(() => setPosting(false));\n } else {\n qetaApi\n .commentPost(post.id, data.content)\n .catch(e =>\n alertApi.post({\n message: e.message,\n severity: 'error',\n display: 'transient',\n }),\n )\n .then(q => {\n setFormVisible(false);\n analytics.captureEvent('comment', 'question');\n setEdited(false);\n if (q) {\n onCommentAction(q);\n }\n })\n .finally(() => setPosting(false));\n }\n };\n\n useConfirmNavigationIfEdited(edited);\n\n if (post.status !== 'active' && post.status !== 'obsolete') {\n return null;\n }\n\n const isObsolete = post.status === 'obsolete';\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 {!isObsolete && (\n <OptionalRequirePermission\n permission={qetaCreateCommentPermission}\n errorPage={<></>}\n >\n {!formVisible && showProminentButton && (\n <Grid container justifyContent=\"flex-start\">\n <Grid item>\n <Button\n variant=\"contained\"\n color=\"primary\"\n size=\"large\"\n startIcon={<AddCommentIcon />}\n onClick={() => setFormVisible(true)}\n className={styles.prominentButton}\n >\n {t('commentSection.leaveComment')}\n </Button>\n </Grid>\n </Grid>\n )}\n {!formVisible && !showProminentButton && (\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 onDiscard={() => setFormVisible(false)}\n />\n </Box>\n )}\n </OptionalRequirePermission>\n )}\n </Box>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;AA2BA,MAAM,SAAY,GAAA,UAAA;AAAA,EAChB,CAAU,KAAA,MAAA;AAAA,IACR,MAAM,EAAC;AAAA,IACP,cAAgB,EAAA;AAAA,MACd,QAAU,EAAA,UAAA;AAAA,MACV,UAAA,EAAY,KAAM,CAAA,OAAA,CAAQ,GAAG,CAAA;AAAA,MAC7B,WAAa,EAAA;AAAA,QACX,OAAS,EAAA,IAAA;AAAA,QACT,QAAU,EAAA,UAAA;AAAA,QACV,IAAA,EAAM,KAAM,CAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,QACrB,MAAQ,EAAA,mBAAA;AAAA,QACR,KAAO,EAAA,KAAA;AAAA,QACP,eAAA,EAAiB,MAAM,OAAQ,CAAA,OAAA;AAAA,QAC/B,OAAS,EAAA,GAAA;AAAA,QACT,UAAY,EAAA,sBAAA;AAAA,QACZ,MAAQ,EAAA;AAAA;AACV,KACF;AAAA,IACA,gBAAkB,EAAA;AAAA,MAChB,aAAe,EAAA,MAAA;AAAA,MACf,eAAiB,EAAA,aAAA;AAAA,MACjB,MAAQ,EAAA,MAAA;AAAA,MACR,KAAA,EAAO,KAAM,CAAA,OAAA,CAAQ,IAAK,CAAA,SAAA;AAAA,MAC1B,SAAW,EAAA,KAAA;AAAA,MACX,SAAW,EAAA;AAAA,QACT,eAAiB,EAAA,aAAA;AAAA,QACjB,KAAA,EAAO,KAAM,CAAA,OAAA,CAAQ,OAAQ,CAAA;AAAA;AAC/B,KACF;AAAA,IACA,WAAa,EAAA;AAAA,MACX,UAAA,EAAY,KAAM,CAAA,OAAA,CAAQ,GAAG,CAAA;AAAA,MAC7B,SAAA,EAAW,KAAM,CAAA,OAAA,CAAQ,CAAC;AAAA,KAC5B;AAAA,IACA,eAAiB,EAAA;AAAA,MACf,SAAA,EAAW,KAAM,CAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,MAC1B,YAAA,EAAc,KAAM,CAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,MAC7B,UAAA,EAAY,KAAM,CAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,MAC3B,OAAS,EAAA,KAAA,CAAM,OAAQ,CAAA,CAAA,EAAG,GAAG,CAAA;AAAA,MAC7B,aAAe,EAAA,MAAA;AAAA,MACf,QAAU,EAAA;AAAA;AACZ,GACF,CAAA;AAAA,EACA,EAAE,MAAM,oBAAqB;AAC/B,CAAA;AAEa,MAAA,cAAA,GAAiB,CAAC,KAMzB,KAAA;AACJ,EAAA,MAAM,EAAE,MAAQ,EAAA,IAAA,EAAM,eAAiB,EAAA,mBAAA,GAAsB,OAAU,GAAA,KAAA;AACvE,EAAA,MAAM,YAAY,YAAa,EAAA;AAC/B,EAAM,MAAA,OAAA,GAAU,OAAO,UAAU,CAAA;AACjC,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,SAAS,KAAK,CAAA;AACpD,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAI,SAAS,KAAK,CAAA;AAC1C,EAAA,MAAM,EAAE,CAAA,EAAM,GAAA,iBAAA,CAAkB,kBAAkB,CAAA;AAClD,EAAA,MAAM,SAAS,SAAU,EAAA;AAGzB,EAAA,MAAM,SAAS,MAAU,IAAA,IAAA;AACzB,EAAM,MAAA,aAAA,GAAgB,MAAO,CAAA,QAAA,EAAU,MAAU,IAAA,CAAA;AACjD,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAI,SAAS,IAAI,CAAA;AAC3D,EAAM,MAAA,QAAA,GAAW,OAAO,WAAW,CAAA;AAEnC,EAAM,MAAA,WAAA,GAAc,CAAC,IAA8B,KAAA;AACjD,IAAA,UAAA,CAAW,IAAI,CAAA;AACf,IAAA,IAAI,MAAQ,EAAA;AACV,MAAA,OAAA,CACG,cAAc,IAAK,CAAA,EAAA,EAAI,OAAO,EAAI,EAAA,IAAA,CAAK,OAAO,CAC9C,CAAA,KAAA;AAAA,QAAM,CAAA,CAAA,KACL,SAAS,IAAK,CAAA;AAAA,UACZ,SAAS,CAAE,CAAA,OAAA;AAAA,UACX,QAAU,EAAA,OAAA;AAAA,UACV,OAAS,EAAA;AAAA,SACV;AAAA,OACH,CACC,KAAK,CAAK,CAAA,KAAA;AACT,QAAA,cAAA,CAAe,KAAK,CAAA;AACpB,QAAU,SAAA,CAAA,YAAA,CAAa,WAAW,QAAQ,CAAA;AAC1C,QAAA,SAAA,CAAU,KAAK,CAAA;AACf,QAAA,IAAI,CAAG,EAAA;AACL,UAAA,eAAA,CAAgB,MAAM,CAAC,CAAA;AAAA;AACzB,OACD,CACA,CAAA,OAAA,CAAQ,MAAM,UAAA,CAAW,KAAK,CAAC,CAAA;AAAA,KAC7B,MAAA;AACL,MAAA,OAAA,CACG,WAAY,CAAA,IAAA,CAAK,EAAI,EAAA,IAAA,CAAK,OAAO,CACjC,CAAA,KAAA;AAAA,QAAM,CAAA,CAAA,KACL,SAAS,IAAK,CAAA;AAAA,UACZ,SAAS,CAAE,CAAA,OAAA;AAAA,UACX,QAAU,EAAA,OAAA;AAAA,UACV,OAAS,EAAA;AAAA,SACV;AAAA,OACH,CACC,KAAK,CAAK,CAAA,KAAA;AACT,QAAA,cAAA,CAAe,KAAK,CAAA;AACpB,QAAU,SAAA,CAAA,YAAA,CAAa,WAAW,UAAU,CAAA;AAC5C,QAAA,SAAA,CAAU,KAAK,CAAA;AACf,QAAA,IAAI,CAAG,EAAA;AACL,UAAA,eAAA,CAAgB,CAAC,CAAA;AAAA;AACnB,OACD,CACA,CAAA,OAAA,CAAQ,MAAM,UAAA,CAAW,KAAK,CAAC,CAAA;AAAA;AACpC,GACF;AAEA,EAAA,4BAAA,CAA6B,MAAM,CAAA;AAEnC,EAAA,IAAI,IAAK,CAAA,MAAA,KAAW,QAAY,IAAA,IAAA,CAAK,WAAW,UAAY,EAAA;AAC1D,IAAO,OAAA,IAAA;AAAA;AAGT,EAAM,MAAA,UAAA,GAAa,KAAK,MAAW,KAAA,UAAA;AAEnC,EACE,uBAAA,IAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,GAAG,MAAO,CAAA,IAAI,IAAI,MAAO,CAAA,cAAc,CAAI,CAAA,EAAA,KAAA,CAAM,SAAS,CAAA,mBAAA,CAAA;AAAA,MAEpE,QAAA,EAAA;AAAA,QAAgB,aAAA,GAAA,CAAA,wBACd,GAAI,EAAA,EAAA,OAAA,EAAQ,QAAO,UAAW,EAAA,QAAA,EAAS,IAAI,CAC1C,EAAA,QAAA,kBAAA,GAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,IAAK,EAAA,OAAA;AAAA,YACL,OAAQ,EAAA,MAAA;AAAA,YACR,OAAS,EAAA,MAAM,kBAAmB,CAAA,CAAA,CAAA,KAAK,CAAC,CAAC,CAAA;AAAA,YACzC,KAAO,EAAA;AAAA,cACL,aAAe,EAAA,MAAA;AAAA,cACf,OAAS,EAAA,eAAA;AAAA,cACT,MAAQ,EAAA,MAAA;AAAA,cACR,eAAiB,EAAA;AAAA,aACnB;AAAA,YACA,OAAA,EACE,eACE,mBAAA,GAAA,CAAC,cAAe,EAAA,EAAA,QAAA,EAAS,SAAQ,CAEjC,mBAAA,GAAA,CAAC,cAAe,EAAA,EAAA,QAAA,EAAS,OAAQ,EAAA,CAAA;AAAA,YAIpC,QAAG,EAAA,CAAA,EAAA,aAAa,CAAI,CAAA,EAAA,CAAA,CAAE,iBAAiB,CAAC,CAAA;AAAA;AAAA,SAE7C,EAAA,CAAA;AAAA,QAED,eACC,oBAAA,GAAA,CAAC,GAAI,EAAA,EAAA,EAAA,EAAI,CACP,EAAA,QAAA,kBAAA,GAAA;AAAA,UAAC,WAAA;AAAA,UAAA;AAAA,YACC,IAAA;AAAA,YACA,MAAA;AAAA,YACA;AAAA;AAAA,SAEJ,EAAA,CAAA;AAAA,QAED,CAAC,UACA,oBAAA,IAAA;AAAA,UAAC,yBAAA;AAAA,UAAA;AAAA,YACC,UAAY,EAAA,2BAAA;AAAA,YACZ,2BAAa,GAAA,CAAA,QAAA,EAAA,EAAA,CAAA;AAAA,YAEZ,QAAA,EAAA;AAAA,cAAC,CAAA,WAAA,IAAe,mBACf,oBAAA,GAAA,CAAC,IAAK,EAAA,EAAA,SAAA,EAAS,IAAC,EAAA,cAAA,EAAe,YAC7B,EAAA,QAAA,kBAAA,GAAA,CAAC,IAAK,EAAA,EAAA,IAAA,EAAI,IACR,EAAA,QAAA,kBAAA,GAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,OAAQ,EAAA,WAAA;AAAA,kBACR,KAAM,EAAA,SAAA;AAAA,kBACN,IAAK,EAAA,OAAA;AAAA,kBACL,SAAA,sBAAY,cAAe,EAAA,EAAA,CAAA;AAAA,kBAC3B,OAAA,EAAS,MAAM,cAAA,CAAe,IAAI,CAAA;AAAA,kBAClC,WAAW,MAAO,CAAA,eAAA;AAAA,kBAEjB,YAAE,6BAA6B;AAAA;AAAA,iBAEpC,CACF,EAAA,CAAA;AAAA,cAED,CAAC,WAAA,IAAe,CAAC,mBAAA,oBACf,GAAA,CAAA,IAAA,EAAA,EAAK,SAAS,EAAA,IAAA,EAAC,cAAe,EAAA,UAAA,EAC7B,QAAC,kBAAA,GAAA,CAAA,IAAA,EAAA,EAAK,MAAI,IACR,EAAA,QAAA,kBAAA,GAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,IAAK,EAAA,OAAA;AAAA,kBACL,SAAW,kBAAA,GAAA,CAAC,cAAe,EAAA,EAAA,QAAA,EAAS,OAAQ,EAAA,CAAA;AAAA,kBAC5C,OAAA,EAAS,MAAM,cAAA,CAAe,IAAI,CAAA;AAAA,kBAClC,WAAW,MAAO,CAAA,gBAAA;AAAA,kBAEjB,YAAE,2BAA2B;AAAA;AAAA,iBAElC,CACF,EAAA,CAAA;AAAA,cAED,WACC,oBAAA,GAAA,CAAC,GAAI,EAAA,EAAA,SAAA,EAAW,OAAO,WACrB,EAAA,QAAA,kBAAA,GAAA;AAAA,gBAAC,WAAA;AAAA,gBAAA;AAAA,kBACC,MAAQ,EAAA,WAAA;AAAA,kBACR,eAAA,EAAiB,EAAE,qBAAqB,CAAA;AAAA,kBACxC,QAAU,EAAA,OAAA;AAAA,kBACV,SAAA,EAAW,MAAM,cAAA,CAAe,KAAK;AAAA;AAAA,eAEzC,EAAA;AAAA;AAAA;AAAA;AAEJ;AAAA;AAAA,GAEJ;AAEJ;;;;"}
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 { alertApiRef, 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 | 'prominentButton';\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 prominentButton: {\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(2),\n marginLeft: theme.spacing(1),\n padding: theme.spacing(1, 2.5),\n textTransform: 'none',\n fontSize: '1rem',\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 showProminentButton?: boolean;\n}) => {\n const { answer, post, onCommentAction, showProminentButton = false } = 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 const alertApi = useApi(alertApiRef);\n\n const postComment = (data: { content: string }) => {\n setPosting(true);\n if (answer) {\n qetaApi\n .commentAnswer(post.id, answer.id, data.content)\n .catch(e =>\n alertApi.post({\n message: e.message,\n severity: 'error',\n display: 'transient',\n }),\n )\n .then(a => {\n setFormVisible(false);\n analytics.captureEvent('comment', 'answer');\n setEdited(false);\n if (a) {\n onCommentAction(post, a);\n }\n })\n .finally(() => setPosting(false));\n } else {\n qetaApi\n .commentPost(post.id, data.content)\n .catch(e =>\n alertApi.post({\n message: e.message,\n severity: 'error',\n display: 'transient',\n }),\n )\n .then(q => {\n setFormVisible(false);\n analytics.captureEvent('comment', 'question');\n setEdited(false);\n if (q) {\n onCommentAction(q);\n }\n })\n .finally(() => setPosting(false));\n }\n };\n\n useConfirmNavigationIfEdited(edited);\n\n if (post.status !== 'active' && post.status !== 'obsolete') {\n return null;\n }\n\n const isObsolete = post.status === 'obsolete';\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 {!isObsolete && (\n <OptionalRequirePermission\n permission={qetaCreateCommentPermission}\n errorPage={<></>}\n >\n {!formVisible && showProminentButton && (\n <Grid container justifyContent=\"flex-start\">\n <Grid item>\n <Button\n variant=\"contained\"\n color=\"primary\"\n size=\"large\"\n startIcon={<AddCommentIcon />}\n onClick={() => setFormVisible(true)}\n className={styles.prominentButton}\n >\n {t('commentSection.leaveComment')}\n </Button>\n </Grid>\n </Grid>\n )}\n {!formVisible && !showProminentButton && (\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 onDiscard={() => setFormVisible(false)}\n />\n </Box>\n )}\n </OptionalRequirePermission>\n )}\n </Box>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ContentHeader.esm.js","sources":["../../../src/components/ContentHeader/ContentHeader.tsx"],"sourcesContent":["import { ReactNode } from 'react';\nimport { Box, makeStyles, Typography } from '@material-ui/core';\nimport { ButtonContainer } from '../Buttons';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n marginBottom: theme.spacing(3),\n display: 'flex',\n flexWrap: 'wrap',\n justifyContent: 'space-between',\n alignItems: 'center',\n gap: theme.spacing(2),\n },\n title: {\n fontWeight: 700,\n marginBottom: 0,\n },\n titleIcon: {\n marginRight: theme.spacing(1),\n display: 'flex',\n alignItems: 'center',\n },\n description: {\n color: theme.palette.text.secondary,\n },\n}));\n\nexport interface ContentHeaderProps {\n title?: ReactNode;\n titleIcon?: ReactNode;\n description?: ReactNode;\n children?: ReactNode;\n titleComponent?: ReactNode;\n}\n\nexport const ContentHeader = (props: ContentHeaderProps) => {\n const { title, titleIcon, description, children, titleComponent } = props;\n const classes = useStyles();\n\n return (\n <Box className={classes.root}>\n <Box flex=\"1 1 auto\" mr={2}>\n <Box display=\"flex\" alignItems=\"center\" mb={1}>\n {titleComponent ? (\n <>{titleComponent}</>\n ) : (\n <>\n {titleIcon && (\n <Box className={classes.titleIcon}>{titleIcon}</Box>\n )}\n {title && (\n <Typography\n variant=\"h4\"\n component=\"h1\"\n className={classes.title}\n >\n {title}\n </Typography>\n )}\n </>\n )}\n </Box>\n <Typography\n variant=\"body2\"\n className={classes.description}\n component=\"div\"\n >\n {description}\n </Typography>\n </Box>\n <Box flex=\"0 0 auto\">\n <ButtonContainer>{children}</ButtonContainer>\n </Box>\n </Box>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,MAAM,SAAA,GAAY,WAAW,CAAU,KAAA,MAAA;AAAA,EACrC,IAAM,EAAA;AAAA,IACJ,YAAA,EAAc,KAAM,CAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,IAC7B,OAAS,EAAA,MAAA;AAAA,IACT,QAAU,EAAA,MAAA;AAAA,IACV,cAAgB,EAAA,eAAA;AAAA,IAChB,UAAY,EAAA,QAAA;AAAA,IACZ,GAAA,EAAK,KAAM,CAAA,OAAA,CAAQ,CAAC;AAAA,GACtB;AAAA,EACA,KAAO,EAAA;AAAA,IACL,UAAY,EAAA,GAAA;AAAA,IACZ,YAAc,EAAA;AAAA,GAChB;AAAA,EACA,SAAW,EAAA;AAAA,IACT,WAAA,EAAa,KAAM,CAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,IAC5B,OAAS,EAAA,MAAA;AAAA,IACT,UAAY,EAAA;AAAA,GACd;AAAA,EACA,WAAa,EAAA;AAAA,IACX,KAAA,EAAO,KAAM,CAAA,OAAA,CAAQ,IAAK,CAAA;AAAA;AAE9B,CAAE,CAAA,CAAA;AAUW,MAAA,aAAA,GAAgB,CAAC,KAA8B,KAAA;AAC1D,EAAA,MAAM,EAAE,KAAO,EAAA,SAAA,EAAW,WAAa,EAAA,QAAA,EAAU,gBAAmB,GAAA,KAAA;AACpE,EAAA,MAAM,UAAU,SAAU,EAAA;AAE1B,EAAA,uBACG,IAAA,CAAA,GAAA,EAAA,EAAI,SAAW,EAAA,OAAA,CAAQ,IACtB,EAAA,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,GAAI,EAAA,EAAA,IAAA,EAAK,UAAW,EAAA,EAAA,EAAI,CACvB,EAAA,QAAA,EAAA;AAAA,sBAAC,GAAA,CAAA,GAAA,EAAA,EAAI,OAAQ,EAAA,MAAA,EAAO,UAAW,EAAA,QAAA,EAAS,EAAI,EAAA,CAAA,EACzC,QACC,EAAA,cAAA,mBAAA,GAAA,CAAA,QAAA,EAAA,EAAG,QAAe,EAAA,cAAA,EAAA,CAAA,mBAGf,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,QAAA,SAAA,oBACE,GAAA,CAAA,GAAA,EAAA,EAAI,SAAW,EAAA,OAAA,CAAQ,WAAY,QAAU,EAAA,SAAA,EAAA,CAAA;AAAA,QAE/C,KACC,oBAAA,GAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACC,OAAQ,EAAA,IAAA;AAAA,YACR,SAAU,EAAA,IAAA;AAAA,YACV,WAAW,OAAQ,CAAA,KAAA;AAAA,YAElB,QAAA,EAAA;AAAA;AAAA;AACH,OAAA,EAEJ,CAEJ,EAAA,CAAA;AAAA,sBACA,GAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UACC,OAAQ,EAAA,OAAA;AAAA,UACR,WAAW,OAAQ,CAAA,WAAA;AAAA,UACnB,SAAU,EAAA,KAAA;AAAA,UAET,QAAA,EAAA;AAAA;AAAA;AACH,KACF,EAAA,CAAA;AAAA,wBACC,GAAI,EAAA,EAAA,IAAA,EAAK,YACR,QAAC,kBAAA,GAAA,CAAA,eAAA,EAAA,EAAiB,UAAS,CAC7B,EAAA;AAAA,GACF,EAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"ContentHeader.esm.js","sources":["../../../src/components/ContentHeader/ContentHeader.tsx"],"sourcesContent":["import { ReactNode } from 'react';\nimport { Box, makeStyles, Typography } from '@material-ui/core';\nimport { ButtonContainer } from '../Buttons';\n\nconst useStyles = makeStyles(theme => ({\n root: {\n marginBottom: theme.spacing(3),\n display: 'flex',\n flexWrap: 'wrap',\n justifyContent: 'space-between',\n alignItems: 'center',\n gap: theme.spacing(2),\n },\n title: {\n fontWeight: 700,\n marginBottom: 0,\n },\n titleIcon: {\n marginRight: theme.spacing(1),\n display: 'flex',\n alignItems: 'center',\n },\n description: {\n color: theme.palette.text.secondary,\n },\n}));\n\nexport interface ContentHeaderProps {\n title?: ReactNode;\n titleIcon?: ReactNode;\n description?: ReactNode;\n children?: ReactNode;\n titleComponent?: ReactNode;\n}\n\nexport const ContentHeader = (props: ContentHeaderProps) => {\n const { title, titleIcon, description, children, titleComponent } = props;\n const classes = useStyles();\n\n return (\n <Box className={classes.root}>\n <Box flex=\"1 1 auto\" mr={2}>\n <Box display=\"flex\" alignItems=\"center\" mb={1}>\n {titleComponent ? (\n <>{titleComponent}</>\n ) : (\n <>\n {titleIcon && (\n <Box className={classes.titleIcon}>{titleIcon}</Box>\n )}\n {title && (\n <Typography\n variant=\"h4\"\n component=\"h1\"\n className={classes.title}\n >\n {title}\n </Typography>\n )}\n </>\n )}\n </Box>\n <Typography\n variant=\"body2\"\n className={classes.description}\n component=\"div\"\n >\n {description}\n </Typography>\n </Box>\n <Box flex=\"0 0 auto\">\n <ButtonContainer>{children}</ButtonContainer>\n </Box>\n </Box>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,MAAM,SAAA,GAAY,WAAW,CAAA,KAAA,MAAU;AAAA,EACrC,IAAA,EAAM;AAAA,IACJ,YAAA,EAAc,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA;AAAA,IAC7B,OAAA,EAAS,MAAA;AAAA,IACT,QAAA,EAAU,MAAA;AAAA,IACV,cAAA,EAAgB,eAAA;AAAA,IAChB,UAAA,EAAY,QAAA;AAAA,IACZ,GAAA,EAAK,KAAA,CAAM,OAAA,CAAQ,CAAC;AAAA,GACtB;AAAA,EACA,KAAA,EAAO;AAAA,IACL,UAAA,EAAY,GAAA;AAAA,IACZ,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,SAAA,EAAW;AAAA,IACT,WAAA,EAAa,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA;AAAA,IAC5B,OAAA,EAAS,MAAA;AAAA,IACT,UAAA,EAAY;AAAA,GACd;AAAA,EACA,WAAA,EAAa;AAAA,IACX,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK;AAAA;AAE9B,CAAA,CAAE,CAAA;AAUK,MAAM,aAAA,GAAgB,CAAC,KAAA,KAA8B;AAC1D,EAAA,MAAM,EAAE,KAAA,EAAO,SAAA,EAAW,WAAA,EAAa,QAAA,EAAU,gBAAe,GAAI,KAAA;AACpE,EAAA,MAAM,UAAU,SAAA,EAAU;AAE1B,EAAA,uBACE,IAAA,CAAC,GAAA,EAAA,EAAI,SAAA,EAAW,OAAA,CAAQ,IAAA,EACtB,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,GAAA,EAAA,EAAI,IAAA,EAAK,UAAA,EAAW,EAAA,EAAI,CAAA,EACvB,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,GAAA,EAAA,EAAI,OAAA,EAAQ,MAAA,EAAO,UAAA,EAAW,QAAA,EAAS,EAAA,EAAI,CAAA,EACzC,QAAA,EAAA,cAAA,mBACC,GAAA,CAAA,QAAA,EAAA,EAAG,QAAA,EAAA,cAAA,EAAe,CAAA,mBAElB,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,QAAA,SAAA,oBACC,GAAA,CAAC,GAAA,EAAA,EAAI,SAAA,EAAW,OAAA,CAAQ,WAAY,QAAA,EAAA,SAAA,EAAU,CAAA;AAAA,QAE/C,KAAA,oBACC,GAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAQ,IAAA;AAAA,YACR,SAAA,EAAU,IAAA;AAAA,YACV,WAAW,OAAA,CAAQ,KAAA;AAAA,YAElB,QAAA,EAAA;AAAA;AAAA;AACH,OAAA,EAEJ,CAAA,EAEJ,CAAA;AAAA,sBACA,GAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAQ,OAAA;AAAA,UACR,WAAW,OAAA,CAAQ,WAAA;AAAA,UACnB,SAAA,EAAU,KAAA;AAAA,UAET,QAAA,EAAA;AAAA;AAAA;AACH,KAAA,EACF,CAAA;AAAA,wBACC,GAAA,EAAA,EAAI,IAAA,EAAK,YACR,QAAA,kBAAA,GAAA,CAAC,eAAA,EAAA,EAAiB,UAAS,CAAA,EAC7B;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ContentHeaderCard.esm.js","sources":["../../../src/components/ContentHeaderCard/ContentHeaderCard.tsx"],"sourcesContent":["import { ReactNode } from 'react';\nimport {\n Box,\n Card,\n CardContent,\n CardMedia,\n Grid,\n makeStyles,\n Tooltip,\n Typography,\n} from '@material-ui/core';\nimport { MarkdownRenderer } from '../MarkdownRenderer';\nimport { TagsAndEntities } from '../TagsAndEntities/TagsAndEntities';\nimport { Collection } from '@drodil/backstage-plugin-qeta-common';\n\nconst useStyles = makeStyles(theme => ({\n card: {\n marginBottom: theme.spacing(3),\n backgroundColor: theme.palette.background.paper,\n borderLeft: `4px solid ${theme.palette.primary.main}`,\n },\n content: {\n padding: theme.spacing(3),\n '&:last-child': {\n paddingBottom: theme.spacing(3),\n },\n },\n headerContent: {\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n justifyContent: 'center',\n },\n statsRow: {\n display: 'flex',\n gap: theme.spacing(4),\n marginTop: theme.spacing(2),\n flexWrap: 'wrap',\n },\n statItem: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n },\n statValue: {\n fontWeight: 'bold',\n fontSize: '1.2rem',\n display: 'flex',\n alignItems: 'center',\n gap: theme.spacing(1),\n },\n statLabel: {\n color: theme.palette.text.secondary,\n textTransform: 'uppercase',\n fontSize: '0.75rem',\n letterSpacing: '0.05em',\n },\n description: {\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n color: theme.palette.text.secondary,\n },\n media: {\n height: 180,\n width: 180,\n borderRadius: theme.shape.borderRadius,\n objectFit: 'cover',\n objectPosition: '50% 50%',\n boxShadow: theme.shadows[2],\n },\n mediaContainer: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n paddingRight: theme.spacing(3),\n [theme.breakpoints.down('xs')]: {\n paddingRight: 0,\n marginBottom: theme.spacing(2),\n },\n },\n}));\n\nexport interface ContentHeaderCardProps {\n title?: ReactNode;\n description?: string;\n image?: string;\n imageIcon?: ReactNode;\n tagsAndEntities?: {\n entity?: Collection;\n tags?: string[];\n entities?: string[];\n };\n stats?: {\n label: string;\n value: ReactNode;\n icon?: ReactNode;\n }[];\n actions?: ReactNode;\n children?: ReactNode;\n}\n\nexport const ContentHeaderCard = (props: ContentHeaderCardProps) => {\n const {\n title,\n description,\n image,\n imageIcon,\n stats,\n tagsAndEntities,\n actions,\n children,\n } = props;\n const classes = useStyles();\n\n return (\n <Card className={classes.card} variant=\"outlined\">\n <CardContent className={classes.content}>\n <Grid container>\n {(image || imageIcon) && (\n <Grid item>\n <Box className={classes.mediaContainer}>\n {image ? (\n <CardMedia\n className={classes.media}\n image={image}\n component=\"img\"\n />\n ) : (\n <Box\n className={classes.media}\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n bgcolor=\"background.default\"\n color=\"primary.main\"\n >\n {imageIcon}\n </Box>\n )}\n </Box>\n </Grid>\n )}\n\n <Grid item xs container className={classes.headerContent}>\n <Box\n display=\"flex\"\n justifyContent=\"space-between\"\n alignItems=\"flex-start\"\n width=\"100%\"\n >\n <Box>\n {title && (\n <Typography\n variant=\"h4\"\n component=\"h1\"\n gutterBottom\n style={{ fontWeight: 'bold' }}\n >\n {title}\n </Typography>\n )}\n </Box>\n {actions && <Box>{actions}</Box>}\n </Box>\n\n {description && (\n <Box className={classes.description}>\n <MarkdownRenderer content={description} />\n </Box>\n )}\n\n {tagsAndEntities &&\n (tagsAndEntities.entity ||\n (tagsAndEntities.tags && tagsAndEntities.tags.length > 0) ||\n (tagsAndEntities.entities &&\n tagsAndEntities.entities.length > 0)) && (\n <Box mb={2}>\n <TagsAndEntities\n entity={\n tagsAndEntities.entity ||\n ({\n tags: tagsAndEntities.tags,\n entities: tagsAndEntities.entities,\n } as any)\n }\n />\n </Box>\n )}\n\n {stats && stats.length > 0 && (\n <Box className={classes.statsRow}>\n {stats.map((stat, index) => (\n <Tooltip key={index} title={stat.label}>\n <Box className={classes.statItem}>\n <Typography className={classes.statValue} color=\"primary\">\n {stat.icon} {stat.value}\n </Typography>\n <Typography className={classes.statLabel}>\n {stat.label}\n </Typography>\n </Box>\n </Tooltip>\n ))}\n </Box>\n )}\n {children && <Box mt={2}>{children}</Box>}\n </Grid>\n </Grid>\n </CardContent>\n </Card>\n );\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ContentHeaderCard.esm.js","sources":["../../../src/components/ContentHeaderCard/ContentHeaderCard.tsx"],"sourcesContent":["import { ReactNode } from 'react';\nimport {\n Box,\n Card,\n CardContent,\n CardMedia,\n Grid,\n makeStyles,\n Tooltip,\n Typography,\n} from '@material-ui/core';\nimport { MarkdownRenderer } from '../MarkdownRenderer';\nimport { TagsAndEntities } from '../TagsAndEntities/TagsAndEntities';\nimport { Collection } from '@drodil/backstage-plugin-qeta-common';\n\nconst useStyles = makeStyles(theme => ({\n card: {\n marginBottom: theme.spacing(3),\n backgroundColor: theme.palette.background.paper,\n borderLeft: `4px solid ${theme.palette.primary.main}`,\n },\n content: {\n padding: theme.spacing(3),\n '&:last-child': {\n paddingBottom: theme.spacing(3),\n },\n },\n headerContent: {\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n justifyContent: 'center',\n },\n statsRow: {\n display: 'flex',\n gap: theme.spacing(4),\n marginTop: theme.spacing(2),\n flexWrap: 'wrap',\n },\n statItem: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n },\n statValue: {\n fontWeight: 'bold',\n fontSize: '1.2rem',\n display: 'flex',\n alignItems: 'center',\n gap: theme.spacing(1),\n },\n statLabel: {\n color: theme.palette.text.secondary,\n textTransform: 'uppercase',\n fontSize: '0.75rem',\n letterSpacing: '0.05em',\n },\n description: {\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n color: theme.palette.text.secondary,\n },\n media: {\n height: 180,\n width: 180,\n borderRadius: theme.shape.borderRadius,\n objectFit: 'cover',\n objectPosition: '50% 50%',\n boxShadow: theme.shadows[2],\n },\n mediaContainer: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n paddingRight: theme.spacing(3),\n [theme.breakpoints.down('xs')]: {\n paddingRight: 0,\n marginBottom: theme.spacing(2),\n },\n },\n}));\n\nexport interface ContentHeaderCardProps {\n title?: ReactNode;\n description?: string;\n image?: string;\n imageIcon?: ReactNode;\n tagsAndEntities?: {\n entity?: Collection;\n tags?: string[];\n entities?: string[];\n };\n stats?: {\n label: string;\n value: ReactNode;\n icon?: ReactNode;\n }[];\n actions?: ReactNode;\n children?: ReactNode;\n}\n\nexport const ContentHeaderCard = (props: ContentHeaderCardProps) => {\n const {\n title,\n description,\n image,\n imageIcon,\n stats,\n tagsAndEntities,\n actions,\n children,\n } = props;\n const classes = useStyles();\n\n return (\n <Card className={classes.card} variant=\"outlined\">\n <CardContent className={classes.content}>\n <Grid container>\n {(image || imageIcon) && (\n <Grid item>\n <Box className={classes.mediaContainer}>\n {image ? (\n <CardMedia\n className={classes.media}\n image={image}\n component=\"img\"\n />\n ) : (\n <Box\n className={classes.media}\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n bgcolor=\"background.default\"\n color=\"primary.main\"\n >\n {imageIcon}\n </Box>\n )}\n </Box>\n </Grid>\n )}\n\n <Grid item xs container className={classes.headerContent}>\n <Box\n display=\"flex\"\n justifyContent=\"space-between\"\n alignItems=\"flex-start\"\n width=\"100%\"\n >\n <Box>\n {title && (\n <Typography\n variant=\"h4\"\n component=\"h1\"\n gutterBottom\n style={{ fontWeight: 'bold' }}\n >\n {title}\n </Typography>\n )}\n </Box>\n {actions && <Box>{actions}</Box>}\n </Box>\n\n {description && (\n <Box className={classes.description}>\n <MarkdownRenderer content={description} />\n </Box>\n )}\n\n {tagsAndEntities &&\n (tagsAndEntities.entity ||\n (tagsAndEntities.tags && tagsAndEntities.tags.length > 0) ||\n (tagsAndEntities.entities &&\n tagsAndEntities.entities.length > 0)) && (\n <Box mb={2}>\n <TagsAndEntities\n entity={\n tagsAndEntities.entity ||\n ({\n tags: tagsAndEntities.tags,\n entities: tagsAndEntities.entities,\n } as any)\n }\n />\n </Box>\n )}\n\n {stats && stats.length > 0 && (\n <Box className={classes.statsRow}>\n {stats.map((stat, index) => (\n <Tooltip key={index} title={stat.label}>\n <Box className={classes.statItem}>\n <Typography className={classes.statValue} color=\"primary\">\n {stat.icon} {stat.value}\n </Typography>\n <Typography className={classes.statLabel}>\n {stat.label}\n </Typography>\n </Box>\n </Tooltip>\n ))}\n </Box>\n )}\n {children && <Box mt={2}>{children}</Box>}\n </Grid>\n </Grid>\n </CardContent>\n </Card>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"EntitiesContainer.esm.js","sources":["../../../src/components/EntitiesContainer/EntitiesContainer.tsx"],"sourcesContent":["import { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { QetaEntityContainer } from '../QetaEntityContainer/QetaEntityContainer';\nimport { EntityListItem } from './EntityListItem';\nimport { EntitiesGridItem } from './EntitiesGridItem';\nimport { EntityResponse } from '@drodil/backstage-plugin-qeta-common';\nimport {\n CommonFilterPanelProps,\n EntityFilters,\n} from '../FilterPanel/FilterPanel';\nimport { qetaTranslationRef } from '../../translation';\nimport { ViewType } from '../ViewToggle/ViewToggle';\n\nexport const EntitiesContainer = (props: {\n filterPanelProps?: CommonFilterPanelProps;\n defaultView?: ViewType;\n}) => {\n const { filterPanelProps, defaultView } = props;\n const { t } = useTranslationRef(qetaTranslationRef);\n\n return (\n <QetaEntityContainer<EntityResponse, EntityFilters>\n prefix=\"entities\"\n defaultPageSize={24}\n defaultView={defaultView}\n initialFilters={{\n order: 'desc',\n orderBy: 'postsCount',\n searchQuery: '',\n }}\n fetch={(api, limit, offset, filters) => {\n return api\n .getEntities({\n limit,\n offset,\n searchQuery: filters.searchQuery,\n order: filters.order,\n orderBy: filters.orderBy,\n })\n .then(res => ({ items: res.entities, total: res.total }));\n }}\n filterPanelProps={{\n ...filterPanelProps,\n mode: 'entities',\n }}\n renderListItem={entity => <EntityListItem entity={entity} />}\n renderGridItem={entity => <EntitiesGridItem entity={entity} />}\n title={total => t('entitiesPage.entities', { count: total })}\n searchPlaceholder={t('entitiesPage.search.label')}\n emptyMessage={t('entitiesPage.entities', { count: 0 })}\n getKey={item => item.id}\n />\n );\n};\n"],"names":[],"mappings":";;;;;;;AAYa,MAAA,iBAAA,GAAoB,CAAC,KAG5B,KAAA;AACJ,EAAM,MAAA,EAAE,gBAAkB,EAAA,WAAA,EAAgB,GAAA,KAAA;AAC1C,EAAA,MAAM,EAAE,CAAA,EAAM,GAAA,iBAAA,CAAkB,kBAAkB,CAAA;AAElD,EACE,uBAAA,GAAA;AAAA,IAAC,mBAAA;AAAA,IAAA;AAAA,MACC,MAAO,EAAA,UAAA;AAAA,MACP,eAAiB,EAAA,EAAA;AAAA,MACjB,WAAA;AAAA,MACA,cAAgB,EAAA;AAAA,QACd,KAAO,EAAA,MAAA;AAAA,QACP,OAAS,EAAA,YAAA;AAAA,QACT,WAAa,EAAA;AAAA,OACf;AAAA,MACA,KAAO,EAAA,CAAC,GAAK,EAAA,KAAA,EAAO,QAAQ,OAAY,KAAA;AACtC,QAAA,OAAO,IACJ,WAAY,CAAA;AAAA,UACX,KAAA;AAAA,UACA,MAAA;AAAA,UACA,aAAa,OAAQ,CAAA,WAAA;AAAA,UACrB,OAAO,OAAQ,CAAA,KAAA;AAAA,UACf,SAAS,OAAQ,CAAA;AAAA,SAClB,CACA,CAAA,IAAA,CAAK,CAAQ,GAAA,MAAA,EAAE,KAAO,EAAA,GAAA,CAAI,QAAU,EAAA,KAAA,EAAO,GAAI,CAAA,KAAA,EAAQ,CAAA,CAAA;AAAA,OAC5D;AAAA,MACA,gBAAkB,EAAA;AAAA,QAChB,GAAG,gBAAA;AAAA,QACH,IAAM,EAAA;AAAA,OACR;AAAA,MACA,cAAgB,EAAA,CAAA,MAAA,qBAAW,GAAA,CAAA,cAAA,EAAA,EAAe,MAAgB,EAAA,CAAA;AAAA,MAC1D,cAAgB,EAAA,CAAA,MAAA,qBAAW,GAAA,CAAA,gBAAA,EAAA,EAAiB,MAAgB,EAAA,CAAA;AAAA,MAC5D,OAAO,CAAS,KAAA,KAAA,CAAA,CAAE,yBAAyB,EAAE,KAAA,EAAO,OAAO,CAAA;AAAA,MAC3D,iBAAA,EAAmB,EAAE,2BAA2B,CAAA;AAAA,MAChD,cAAc,CAAE,CAAA,uBAAA,EAAyB,EAAE,KAAA,EAAO,GAAG,CAAA;AAAA,MACrD,MAAA,EAAQ,UAAQ,IAAK,CAAA;AAAA;AAAA,GACvB;AAEJ;;;;"}
1
+ {"version":3,"file":"EntitiesContainer.esm.js","sources":["../../../src/components/EntitiesContainer/EntitiesContainer.tsx"],"sourcesContent":["import { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { QetaEntityContainer } from '../QetaEntityContainer/QetaEntityContainer';\nimport { EntityListItem } from './EntityListItem';\nimport { EntitiesGridItem } from './EntitiesGridItem';\nimport { EntityResponse } from '@drodil/backstage-plugin-qeta-common';\nimport {\n CommonFilterPanelProps,\n EntityFilters,\n} from '../FilterPanel/FilterPanel';\nimport { qetaTranslationRef } from '../../translation';\nimport { ViewType } from '../ViewToggle/ViewToggle';\n\nexport const EntitiesContainer = (props: {\n filterPanelProps?: CommonFilterPanelProps;\n defaultView?: ViewType;\n}) => {\n const { filterPanelProps, defaultView } = props;\n const { t } = useTranslationRef(qetaTranslationRef);\n\n return (\n <QetaEntityContainer<EntityResponse, EntityFilters>\n prefix=\"entities\"\n defaultPageSize={24}\n defaultView={defaultView}\n initialFilters={{\n order: 'desc',\n orderBy: 'postsCount',\n searchQuery: '',\n }}\n fetch={(api, limit, offset, filters) => {\n return api\n .getEntities({\n limit,\n offset,\n searchQuery: filters.searchQuery,\n order: filters.order,\n orderBy: filters.orderBy,\n })\n .then(res => ({ items: res.entities, total: res.total }));\n }}\n filterPanelProps={{\n ...filterPanelProps,\n mode: 'entities',\n }}\n renderListItem={entity => <EntityListItem entity={entity} />}\n renderGridItem={entity => <EntitiesGridItem entity={entity} />}\n title={total => t('entitiesPage.entities', { count: total })}\n searchPlaceholder={t('entitiesPage.search.label')}\n emptyMessage={t('entitiesPage.entities', { count: 0 })}\n getKey={item => item.id}\n />\n );\n};\n"],"names":[],"mappings":";;;;;;;AAYO,MAAM,iBAAA,GAAoB,CAAC,KAAA,KAG5B;AACJ,EAAA,MAAM,EAAE,gBAAA,EAAkB,WAAA,EAAY,GAAI,KAAA;AAC1C,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,kBAAkB,CAAA;AAElD,EAAA,uBACE,GAAA;AAAA,IAAC,mBAAA;AAAA,IAAA;AAAA,MACC,MAAA,EAAO,UAAA;AAAA,MACP,eAAA,EAAiB,EAAA;AAAA,MACjB,WAAA;AAAA,MACA,cAAA,EAAgB;AAAA,QACd,KAAA,EAAO,MAAA;AAAA,QACP,OAAA,EAAS,YAAA;AAAA,QACT,WAAA,EAAa;AAAA,OACf;AAAA,MACA,KAAA,EAAO,CAAC,GAAA,EAAK,KAAA,EAAO,QAAQ,OAAA,KAAY;AACtC,QAAA,OAAO,IACJ,WAAA,CAAY;AAAA,UACX,KAAA;AAAA,UACA,MAAA;AAAA,UACA,aAAa,OAAA,CAAQ,WAAA;AAAA,UACrB,OAAO,OAAA,CAAQ,KAAA;AAAA,UACf,SAAS,OAAA,CAAQ;AAAA,SAClB,CAAA,CACA,IAAA,CAAK,CAAA,GAAA,MAAQ,EAAE,KAAA,EAAO,GAAA,CAAI,QAAA,EAAU,KAAA,EAAO,GAAA,CAAI,KAAA,EAAM,CAAE,CAAA;AAAA,MAC5D,CAAA;AAAA,MACA,gBAAA,EAAkB;AAAA,QAChB,GAAG,gBAAA;AAAA,QACH,IAAA,EAAM;AAAA,OACR;AAAA,MACA,cAAA,EAAgB,CAAA,MAAA,qBAAU,GAAA,CAAC,cAAA,EAAA,EAAe,MAAA,EAAgB,CAAA;AAAA,MAC1D,cAAA,EAAgB,CAAA,MAAA,qBAAU,GAAA,CAAC,gBAAA,EAAA,EAAiB,MAAA,EAAgB,CAAA;AAAA,MAC5D,OAAO,CAAA,KAAA,KAAS,CAAA,CAAE,yBAAyB,EAAE,KAAA,EAAO,OAAO,CAAA;AAAA,MAC3D,iBAAA,EAAmB,EAAE,2BAA2B,CAAA;AAAA,MAChD,cAAc,CAAA,CAAE,uBAAA,EAAyB,EAAE,KAAA,EAAO,GAAG,CAAA;AAAA,MACrD,MAAA,EAAQ,UAAQ,IAAA,CAAK;AAAA;AAAA,GACvB;AAEJ;;;;"}