@drodil/backstage-plugin-qeta-react 3.12.3 → 3.12.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 (156) hide show
  1. package/dist/api.esm.js.map +1 -1
  2. package/dist/components/AIAnswerCard/AIAnswerCard.esm.js +2 -2
  3. package/dist/components/AIAnswerCard/AIAnswerCard.esm.js.map +1 -1
  4. package/dist/components/AnswerCard/AnswerCard.esm.js +1 -1
  5. package/dist/components/AnswerCard/AnswerCard.esm.js.map +1 -1
  6. package/dist/components/AnswerForm/AnswerForm.esm.js.map +1 -1
  7. package/dist/components/AnswersContainer/AnswerList.esm.js +2 -2
  8. package/dist/components/AnswersContainer/AnswerList.esm.js.map +1 -1
  9. package/dist/components/AnswersContainer/AnswerListItem.esm.js.map +1 -1
  10. package/dist/components/AnswersContainer/AnswersContainer.esm.js +1 -1
  11. package/dist/components/AnswersContainer/AnswersContainer.esm.js.map +1 -1
  12. package/dist/components/ArticleContent/ArticleButtons.esm.js +6 -4
  13. package/dist/components/ArticleContent/ArticleButtons.esm.js.map +1 -1
  14. package/dist/components/ArticleContent/ArticleContent.esm.js +12 -10
  15. package/dist/components/ArticleContent/ArticleContent.esm.js.map +1 -1
  16. package/dist/components/AuthorBox/AuthorBox.esm.js +3 -3
  17. package/dist/components/AuthorBox/AuthorBox.esm.js.map +1 -1
  18. package/dist/components/Buttons/AddToCollectionButton.esm.js.map +1 -1
  19. package/dist/components/Buttons/AskQuestionButton.esm.js.map +1 -1
  20. package/dist/components/Buttons/CollectionFollowButton.esm.js.map +1 -1
  21. package/dist/components/Buttons/CreateCollectionButton.esm.js.map +1 -1
  22. package/dist/components/Buttons/EntityFollowButton.esm.js.map +1 -1
  23. package/dist/components/Buttons/FavoriteButton.esm.js.map +1 -1
  24. package/dist/components/Buttons/LinkButton.esm.js.map +1 -1
  25. package/dist/components/Buttons/TagFollowButton.esm.js.map +1 -1
  26. package/dist/components/Buttons/UserFollowButton.esm.js.map +1 -1
  27. package/dist/components/Buttons/VoteButtons.esm.js.map +1 -1
  28. package/dist/components/Buttons/WriteArticleButton.esm.js.map +1 -1
  29. package/dist/components/CollectionCard/CollectionCard.esm.js.map +1 -1
  30. package/dist/components/CollectionForm/CollectionForm.esm.js +1 -1
  31. package/dist/components/CollectionForm/CollectionForm.esm.js.map +1 -1
  32. package/dist/components/CollectionsGrid/CollectionsGrid.esm.js.map +1 -1
  33. package/dist/components/CollectionsGrid/CollectionsGridContent.esm.js +1 -1
  34. package/dist/components/CollectionsGrid/CollectionsGridContent.esm.js.map +1 -1
  35. package/dist/components/CollectionsGrid/CollectionsGridItem.esm.js +1 -1
  36. package/dist/components/CollectionsGrid/CollectionsGridItem.esm.js.map +1 -1
  37. package/dist/components/CollectionsGrid/NoCollectionsCard.esm.js +1 -1
  38. package/dist/components/CollectionsGrid/NoCollectionsCard.esm.js.map +1 -1
  39. package/dist/components/CommentSection/CommentList.esm.js +2 -2
  40. package/dist/components/CommentSection/CommentList.esm.js.map +1 -1
  41. package/dist/components/CommentSection/CommentSection.esm.js.map +1 -1
  42. package/dist/components/DeleteModal/DeleteModal.esm.js.map +1 -1
  43. package/dist/components/EntitiesGrid/EntitiesGrid.esm.js.map +1 -1
  44. package/dist/components/EntitiesGrid/EntitiesGridContent.esm.js.map +1 -1
  45. package/dist/components/EntitiesGrid/EntitiesGridItem.esm.js.map +1 -1
  46. package/dist/components/EntitiesGrid/NoEntitiesCard.esm.js +1 -1
  47. package/dist/components/EntitiesGrid/NoEntitiesCard.esm.js.map +1 -1
  48. package/dist/components/FilterPanel/DateRangeFilter.esm.js.map +1 -1
  49. package/dist/components/FilterPanel/FilterPanel.esm.js +1 -1
  50. package/dist/components/FilterPanel/FilterPanel.esm.js.map +1 -1
  51. package/dist/components/FollowedLists/FollowedCollectionsList.esm.js.map +1 -1
  52. package/dist/components/FollowedLists/FollowedEntitiesList.esm.js.map +1 -1
  53. package/dist/components/FollowedLists/FollowedTagsList.esm.js.map +1 -1
  54. package/dist/components/FollowedLists/FollowedUsersList.esm.js.map +1 -1
  55. package/dist/components/HeaderImageInput/HeaderImageInput.esm.js +10 -8
  56. package/dist/components/HeaderImageInput/HeaderImageInput.esm.js.map +1 -1
  57. package/dist/components/HomePageCards/ImpactCard.esm.js +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/LeftMenu/LeftMenu.esm.js +17 -19
  61. package/dist/components/LeftMenu/LeftMenu.esm.js.map +1 -1
  62. package/dist/components/LeftMenu/LeftMenuButton.esm.js +1 -1
  63. package/dist/components/LeftMenu/LeftMenuButton.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 +4 -2
  67. package/dist/components/MarkdownEditor/MarkdownEditor.esm.js.map +1 -1
  68. package/dist/components/MarkdownRenderer/MarkdownRenderer.esm.js +11 -9
  69. package/dist/components/MarkdownRenderer/MarkdownRenderer.esm.js.map +1 -1
  70. package/dist/components/PostAnonymouslyCheckbox/PostAnonymouslyCheckbox.esm.js +1 -1
  71. package/dist/components/PostAnonymouslyCheckbox/PostAnonymouslyCheckbox.esm.js.map +1 -1
  72. package/dist/components/PostForm/EntitiesInput.esm.js.map +1 -1
  73. package/dist/components/PostForm/PostForm.esm.js.map +1 -1
  74. package/dist/components/PostForm/TagInput.esm.js.map +1 -1
  75. package/dist/components/PostHighlightList/PostHighlightList.esm.js.map +1 -1
  76. package/dist/components/PostsContainer/NoPostsCard.esm.js +1 -1
  77. package/dist/components/PostsContainer/NoPostsCard.esm.js.map +1 -1
  78. package/dist/components/PostsContainer/PostList.esm.js +2 -2
  79. package/dist/components/PostsContainer/PostList.esm.js.map +1 -1
  80. package/dist/components/PostsContainer/PostListItem.esm.js +87 -80
  81. package/dist/components/PostsContainer/PostListItem.esm.js.map +1 -1
  82. package/dist/components/PostsContainer/PostsContainer.esm.js +1 -1
  83. package/dist/components/PostsContainer/PostsContainer.esm.js.map +1 -1
  84. package/dist/components/PostsGrid/PostsGrid.esm.js +1 -1
  85. package/dist/components/PostsGrid/PostsGrid.esm.js.map +1 -1
  86. package/dist/components/PostsGrid/PostsGridContent.esm.js +1 -1
  87. package/dist/components/PostsGrid/PostsGridContent.esm.js.map +1 -1
  88. package/dist/components/PostsGrid/PostsGridItem.esm.js +8 -8
  89. package/dist/components/PostsGrid/PostsGridItem.esm.js.map +1 -1
  90. package/dist/components/QetaPagination/QetaPagination.esm.js.map +1 -1
  91. package/dist/components/QuestionCard/QuestionCard.esm.js +1 -1
  92. package/dist/components/QuestionCard/QuestionCard.esm.js.map +1 -1
  93. package/dist/components/QuestionsTable/QuestionTableRow.esm.js.map +1 -1
  94. package/dist/components/QuestionsTable/QuestionsTable.esm.js.map +1 -1
  95. package/dist/components/RelativeTimeWithTooltip/RelativeTimeWithTooltip.esm.js.map +1 -1
  96. package/dist/components/SearchBar/SearchBar.esm.js +1 -1
  97. package/dist/components/SearchBar/SearchBar.esm.js.map +1 -1
  98. package/dist/components/SelectTemplateList/SelectTemplateList.esm.js.map +1 -1
  99. package/dist/components/StatsChart/StatsChart.esm.js.map +1 -1
  100. package/dist/components/StatsChart/util.esm.js.map +1 -1
  101. package/dist/components/Styled/CardActionContainer.esm.js +3 -1
  102. package/dist/components/Styled/CardActionContainer.esm.js.map +1 -1
  103. package/dist/components/Styled/ModalContent.esm.js +17 -15
  104. package/dist/components/Styled/ModalContent.esm.js.map +1 -1
  105. package/dist/components/Styled/RightList.esm.js.map +1 -1
  106. package/dist/components/Styled/VoteButtonContainer.esm.js +3 -1
  107. package/dist/components/Styled/VoteButtonContainer.esm.js.map +1 -1
  108. package/dist/components/SuggestionsCard/SuggestionsCard.esm.js.map +1 -1
  109. package/dist/components/SummaryStatsGrid/SummaryStatsGrid.esm.js +1 -1
  110. package/dist/components/SummaryStatsGrid/SummaryStatsGrid.esm.js.map +1 -1
  111. package/dist/components/TagsAndEntities/CollectionChip.esm.js +1 -1
  112. package/dist/components/TagsAndEntities/CollectionChip.esm.js.map +1 -1
  113. package/dist/components/TagsAndEntities/EntityChip.esm.js +1 -1
  114. package/dist/components/TagsAndEntities/EntityChip.esm.js.map +1 -1
  115. package/dist/components/TagsAndEntities/TagChip.esm.js +1 -1
  116. package/dist/components/TagsAndEntities/TagChip.esm.js.map +1 -1
  117. package/dist/components/TagsAndEntities/TagsAndEntities.esm.js.map +1 -1
  118. package/dist/components/TagsAndEntities/UserChip.esm.js +1 -1
  119. package/dist/components/TagsAndEntities/UserChip.esm.js.map +1 -1
  120. package/dist/components/TagsGrid/EditTagModal.esm.js.map +1 -1
  121. package/dist/components/TagsGrid/NoTagsCard.esm.js +1 -1
  122. package/dist/components/TagsGrid/NoTagsCard.esm.js.map +1 -1
  123. package/dist/components/TagsGrid/TagGridItem.esm.js.map +1 -1
  124. package/dist/components/TagsGrid/TagsGrid.esm.js.map +1 -1
  125. package/dist/components/TagsGrid/TagsGridContent.esm.js.map +1 -1
  126. package/dist/components/TemplateList/TemplateForm.esm.js.map +1 -1
  127. package/dist/components/TemplateList/TemplateList.esm.js +1 -1
  128. package/dist/components/TemplateList/TemplateList.esm.js.map +1 -1
  129. package/dist/components/TopRankingUsersCard/TopRankingUsersCard.esm.js +4 -7
  130. package/dist/components/TopRankingUsersCard/TopRankingUsersCard.esm.js.map +1 -1
  131. package/dist/components/TopRankingUsersCard/TrophyIcon.esm.js.map +1 -1
  132. package/dist/components/UsersGrid/NoUsersCard.esm.js +1 -1
  133. package/dist/components/UsersGrid/NoUsersCard.esm.js.map +1 -1
  134. package/dist/components/UsersGrid/UsersGrid.esm.js.map +1 -1
  135. package/dist/components/UsersGrid/UsersGridContent.esm.js.map +1 -1
  136. package/dist/components/UsersGrid/UsersGridItem.esm.js.map +1 -1
  137. package/dist/hooks/useAI.esm.js.map +1 -1
  138. package/dist/hooks/useBasePath.esm.js.map +1 -1
  139. package/dist/hooks/useBaseUrl.esm.js.map +1 -1
  140. package/dist/hooks/useCollectionsFollow.esm.js.map +1 -1
  141. package/dist/hooks/useEntityAuthor.esm.js.map +1 -1
  142. package/dist/hooks/useEntityFollow.esm.js.map +1 -1
  143. package/dist/hooks/useEntityQueryParameter.esm.js.map +1 -1
  144. package/dist/hooks/useIdentityApi.esm.js.map +1 -1
  145. package/dist/hooks/useIsDarkTheme.esm.js.map +1 -1
  146. package/dist/hooks/useIsModerator.esm.js.map +1 -1
  147. package/dist/hooks/usePaginatedPosts.esm.js.map +1 -1
  148. package/dist/hooks/useQetaApi.esm.js.map +1 -1
  149. package/dist/hooks/useTagsFollow.esm.js.map +1 -1
  150. package/dist/hooks/useTranslation.esm.js.map +1 -1
  151. package/dist/hooks/useUserFollow.esm.js.map +1 -1
  152. package/dist/hooks/useVoting.esm.js.map +1 -1
  153. package/dist/routes.esm.js.map +1 -1
  154. package/dist/translation.esm.js.map +1 -1
  155. package/dist/utils/utils.esm.js.map +1 -1
  156. package/package.json +6 -6
@@ -1 +1 @@
1
- {"version":3,"file":"utils.esm.js","sources":["../../src/utils/utils.ts"],"sourcesContent":["import { Entity, stringifyEntityRef } from '@backstage/catalog-model';\nimport { Filters } from '../components/FilterPanel/FilterPanel';\nimport FileType from 'file-type';\nimport { ErrorApi } from '@backstage/core-plugin-api';\nimport { QetaApi } from '@drodil/backstage-plugin-qeta-common';\n\nexport const imageUpload = (opts: {\n qetaApi: QetaApi;\n errorApi: ErrorApi;\n onImageUpload?: (id: number) => void;\n postId?: number;\n answerId?: number;\n collectionId?: number;\n}) => {\n const { qetaApi, errorApi, onImageUpload, postId, answerId, collectionId } =\n opts;\n // eslint-disable-next-line func-names\n return async function* (data: ArrayBuffer) {\n const fileType = await FileType.fromBuffer(data);\n\n const mimeType = fileType ? fileType.mime : 'text/plain';\n const attachment = await qetaApi.postAttachment(\n new Blob([data], { type: mimeType }),\n { postId, answerId, collectionId },\n );\n if ('errors' in attachment) {\n errorApi.post({\n name: 'Upload failed',\n message: attachment.errors?.map(e => e.message).join(', ') ?? '',\n });\n return false;\n }\n onImageUpload?.(attachment.id);\n yield attachment.locationUri;\n return true;\n };\n};\n\nexport const formatEntityName = (username?: string) => {\n if (!username) {\n return '';\n }\n const plainName = username.split(/[/:]+/).pop();\n return plainName\n ?.split(/[_.-]+/)\n .map(a => a.charAt(0).toUpperCase() + a.slice(1))\n .join(' ');\n};\n\nexport const getEntityTitle = (entity: Entity): string => {\n const stringified = stringifyEntityRef(entity);\n return formatEntityName(entity.metadata.title ?? stringified) ?? stringified;\n};\n\nexport const formatDate = (localDate: Date) => {\n let date: any = localDate.getDate();\n let month: any = localDate.getMonth() + 1;\n if (date < 10) {\n date = `0${date}`;\n }\n\n if (month < 10) {\n month = `0${month}`;\n }\n return `${localDate.getFullYear()}-${month}-${date}`;\n};\n\nexport type FiltersWithDateRange = Filters & {\n fromDate: string;\n toDate: string;\n};\n\nexport const getFiltersWithDateRange = (filters: Filters) => {\n let filtersWithDateRange: FiltersWithDateRange;\n const to = new Date();\n const from = new Date(to);\n if (filters.dateRange) {\n let fromDate = '';\n let toDate = '';\n\n switch (filters.dateRange) {\n case '7-days':\n toDate = formatDate(to);\n from.setDate(to.getDate() - 6);\n fromDate = formatDate(from);\n break;\n\n case '30-days':\n toDate = formatDate(to);\n from.setDate(to.getDate() - 29);\n fromDate = formatDate(from);\n break;\n default:\n if (filters.dateRange.indexOf('--') > 0) {\n fromDate = filters.dateRange.split('--')[0];\n toDate = filters.dateRange.split('--')[1];\n }\n break;\n }\n if (fromDate && toDate) {\n filtersWithDateRange = { ...filters, fromDate, toDate };\n delete filtersWithDateRange.dateRange;\n return filtersWithDateRange;\n }\n }\n\n if ('dateRange' in filters) {\n delete filters.dateRange;\n }\n\n return filters;\n};\n\nexport const confirmNavigationIfEdited = (edited: boolean) => {\n const handleBeforeUnload = (event: BeforeUnloadEvent) => {\n if (edited) {\n event.preventDefault();\n event.returnValue = ''; // Included for legacy support, e.g. Chrome/Edge < 119\n }\n };\n\n window.addEventListener('beforeunload', handleBeforeUnload);\n\n return () => {\n window.removeEventListener('beforeunload', handleBeforeUnload);\n };\n};\n"],"names":[],"mappings":";;;AAMa,MAAA,WAAA,GAAc,CAAC,IAOtB,KAAA;AACJ,EAAA,MAAM,EAAE,OAAS,EAAA,QAAA,EAAU,eAAe,MAAQ,EAAA,QAAA,EAAU,cAC1D,GAAA,IAAA,CAAA;AAEF,EAAA,OAAO,iBAAiB,IAAmB,EAAA;AACzC,IAAA,MAAM,QAAW,GAAA,MAAM,QAAS,CAAA,UAAA,CAAW,IAAI,CAAA,CAAA;AAE/C,IAAM,MAAA,QAAA,GAAW,QAAW,GAAA,QAAA,CAAS,IAAO,GAAA,YAAA,CAAA;AAC5C,IAAM,MAAA,UAAA,GAAa,MAAM,OAAQ,CAAA,cAAA;AAAA,MAC/B,IAAI,KAAK,CAAC,IAAI,GAAG,EAAE,IAAA,EAAM,UAAU,CAAA;AAAA,MACnC,EAAE,MAAQ,EAAA,QAAA,EAAU,YAAa,EAAA;AAAA,KACnC,CAAA;AACA,IAAA,IAAI,YAAY,UAAY,EAAA;AAC1B,MAAA,QAAA,CAAS,IAAK,CAAA;AAAA,QACZ,IAAM,EAAA,eAAA;AAAA,QACN,OAAA,EAAS,UAAW,CAAA,MAAA,EAAQ,GAAI,CAAA,CAAA,CAAA,KAAK,EAAE,OAAO,CAAA,CAAE,IAAK,CAAA,IAAI,CAAK,IAAA,EAAA;AAAA,OAC/D,CAAA,CAAA;AACD,MAAO,OAAA,KAAA,CAAA;AAAA,KACT;AACA,IAAA,aAAA,GAAgB,WAAW,EAAE,CAAA,CAAA;AAC7B,IAAA,MAAM,UAAW,CAAA,WAAA,CAAA;AACjB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT,CAAA;AACF,EAAA;AAEa,MAAA,gBAAA,GAAmB,CAAC,QAAsB,KAAA;AACrD,EAAA,IAAI,CAAC,QAAU,EAAA;AACb,IAAO,OAAA,EAAA,CAAA;AAAA,GACT;AACA,EAAA,MAAM,SAAY,GAAA,QAAA,CAAS,KAAM,CAAA,OAAO,EAAE,GAAI,EAAA,CAAA;AAC9C,EAAA,OAAO,WACH,KAAM,CAAA,QAAQ,EACf,GAAI,CAAA,CAAA,CAAA,KAAK,EAAE,MAAO,CAAA,CAAC,CAAE,CAAA,WAAA,KAAgB,CAAE,CAAA,KAAA,CAAM,CAAC,CAAC,CAAA,CAC/C,KAAK,GAAG,CAAA,CAAA;AACb,EAAA;AAEa,MAAA,cAAA,GAAiB,CAAC,MAA2B,KAAA;AACxD,EAAM,MAAA,WAAA,GAAc,mBAAmB,MAAM,CAAA,CAAA;AAC7C,EAAA,OAAO,gBAAiB,CAAA,MAAA,CAAO,QAAS,CAAA,KAAA,IAAS,WAAW,CAAK,IAAA,WAAA,CAAA;AACnE,EAAA;AAEa,MAAA,UAAA,GAAa,CAAC,SAAoB,KAAA;AAC7C,EAAI,IAAA,IAAA,GAAY,UAAU,OAAQ,EAAA,CAAA;AAClC,EAAI,IAAA,KAAA,GAAa,SAAU,CAAA,QAAA,EAAa,GAAA,CAAA,CAAA;AACxC,EAAA,IAAI,OAAO,EAAI,EAAA;AACb,IAAA,IAAA,GAAO,IAAI,IAAI,CAAA,CAAA,CAAA;AAAA,GACjB;AAEA,EAAA,IAAI,QAAQ,EAAI,EAAA;AACd,IAAA,KAAA,GAAQ,IAAI,KAAK,CAAA,CAAA,CAAA;AAAA,GACnB;AACA,EAAA,OAAO,GAAG,SAAU,CAAA,WAAA,EAAa,CAAI,CAAA,EAAA,KAAK,IAAI,IAAI,CAAA,CAAA,CAAA;AACpD,EAAA;AAOa,MAAA,uBAAA,GAA0B,CAAC,OAAqB,KAAA;AAC3D,EAAI,IAAA,oBAAA,CAAA;AACJ,EAAM,MAAA,EAAA,uBAAS,IAAK,EAAA,CAAA;AACpB,EAAM,MAAA,IAAA,GAAO,IAAI,IAAA,CAAK,EAAE,CAAA,CAAA;AACxB,EAAA,IAAI,QAAQ,SAAW,EAAA;AACrB,IAAA,IAAI,QAAW,GAAA,EAAA,CAAA;AACf,IAAA,IAAI,MAAS,GAAA,EAAA,CAAA;AAEb,IAAA,QAAQ,QAAQ,SAAW;AAAA,MACzB,KAAK,QAAA;AACH,QAAA,MAAA,GAAS,WAAW,EAAE,CAAA,CAAA;AACtB,QAAA,IAAA,CAAK,OAAQ,CAAA,EAAA,CAAG,OAAQ,EAAA,GAAI,CAAC,CAAA,CAAA;AAC7B,QAAA,QAAA,GAAW,WAAW,IAAI,CAAA,CAAA;AAC1B,QAAA,MAAA;AAAA,MAEF,KAAK,SAAA;AACH,QAAA,MAAA,GAAS,WAAW,EAAE,CAAA,CAAA;AACtB,QAAA,IAAA,CAAK,OAAQ,CAAA,EAAA,CAAG,OAAQ,EAAA,GAAI,EAAE,CAAA,CAAA;AAC9B,QAAA,QAAA,GAAW,WAAW,IAAI,CAAA,CAAA;AAC1B,QAAA,MAAA;AAAA,MACF;AACE,QAAA,IAAI,OAAQ,CAAA,SAAA,CAAU,OAAQ,CAAA,IAAI,IAAI,CAAG,EAAA;AACvC,UAAA,QAAA,GAAW,OAAQ,CAAA,SAAA,CAAU,KAAM,CAAA,IAAI,EAAE,CAAC,CAAA,CAAA;AAC1C,UAAA,MAAA,GAAS,OAAQ,CAAA,SAAA,CAAU,KAAM,CAAA,IAAI,EAAE,CAAC,CAAA,CAAA;AAAA,SAC1C;AACA,QAAA,MAAA;AAAA,KACJ;AACA,IAAA,IAAI,YAAY,MAAQ,EAAA;AACtB,MAAA,oBAAA,GAAuB,EAAE,GAAG,OAAS,EAAA,QAAA,EAAU,MAAO,EAAA,CAAA;AACtD,MAAA,OAAO,oBAAqB,CAAA,SAAA,CAAA;AAC5B,MAAO,OAAA,oBAAA,CAAA;AAAA,KACT;AAAA,GACF;AAEA,EAAA,IAAI,eAAe,OAAS,EAAA;AAC1B,IAAA,OAAO,OAAQ,CAAA,SAAA,CAAA;AAAA,GACjB;AAEA,EAAO,OAAA,OAAA,CAAA;AACT,EAAA;AAEa,MAAA,yBAAA,GAA4B,CAAC,MAAoB,KAAA;AAC5D,EAAM,MAAA,kBAAA,GAAqB,CAAC,KAA6B,KAAA;AACvD,IAAA,IAAI,MAAQ,EAAA;AACV,MAAA,KAAA,CAAM,cAAe,EAAA,CAAA;AACrB,MAAA,KAAA,CAAM,WAAc,GAAA,EAAA,CAAA;AAAA,KACtB;AAAA,GACF,CAAA;AAEA,EAAO,MAAA,CAAA,gBAAA,CAAiB,gBAAgB,kBAAkB,CAAA,CAAA;AAE1D,EAAA,OAAO,MAAM;AACX,IAAO,MAAA,CAAA,mBAAA,CAAoB,gBAAgB,kBAAkB,CAAA,CAAA;AAAA,GAC/D,CAAA;AACF;;;;"}
1
+ {"version":3,"file":"utils.esm.js","sources":["../../src/utils/utils.ts"],"sourcesContent":["import { Entity, stringifyEntityRef } from '@backstage/catalog-model';\nimport { Filters } from '../components/FilterPanel/FilterPanel';\nimport FileType from 'file-type';\nimport { ErrorApi } from '@backstage/core-plugin-api';\nimport { QetaApi } from '@drodil/backstage-plugin-qeta-common';\n\nexport const imageUpload = (opts: {\n qetaApi: QetaApi;\n errorApi: ErrorApi;\n onImageUpload?: (id: number) => void;\n postId?: number;\n answerId?: number;\n collectionId?: number;\n}) => {\n const { qetaApi, errorApi, onImageUpload, postId, answerId, collectionId } =\n opts;\n // eslint-disable-next-line func-names\n return async function* (data: ArrayBuffer) {\n const fileType = await FileType.fromBuffer(data);\n\n const mimeType = fileType ? fileType.mime : 'text/plain';\n const attachment = await qetaApi.postAttachment(\n new Blob([data], { type: mimeType }),\n { postId, answerId, collectionId },\n );\n if ('errors' in attachment) {\n errorApi.post({\n name: 'Upload failed',\n message: attachment.errors?.map(e => e.message).join(', ') ?? '',\n });\n return false;\n }\n onImageUpload?.(attachment.id);\n yield attachment.locationUri;\n return true;\n };\n};\n\nexport const formatEntityName = (username?: string) => {\n if (!username) {\n return '';\n }\n const plainName = username.split(/[/:]+/).pop();\n return plainName\n ?.split(/[_.-]+/)\n .map(a => a.charAt(0).toUpperCase() + a.slice(1))\n .join(' ');\n};\n\nexport const getEntityTitle = (entity: Entity): string => {\n const stringified = stringifyEntityRef(entity);\n return formatEntityName(entity.metadata.title ?? stringified) ?? stringified;\n};\n\nexport const formatDate = (localDate: Date) => {\n let date: any = localDate.getDate();\n let month: any = localDate.getMonth() + 1;\n if (date < 10) {\n date = `0${date}`;\n }\n\n if (month < 10) {\n month = `0${month}`;\n }\n return `${localDate.getFullYear()}-${month}-${date}`;\n};\n\nexport type FiltersWithDateRange = Filters & {\n fromDate: string;\n toDate: string;\n};\n\nexport const getFiltersWithDateRange = (filters: Filters) => {\n let filtersWithDateRange: FiltersWithDateRange;\n const to = new Date();\n const from = new Date(to);\n if (filters.dateRange) {\n let fromDate = '';\n let toDate = '';\n\n switch (filters.dateRange) {\n case '7-days':\n toDate = formatDate(to);\n from.setDate(to.getDate() - 6);\n fromDate = formatDate(from);\n break;\n\n case '30-days':\n toDate = formatDate(to);\n from.setDate(to.getDate() - 29);\n fromDate = formatDate(from);\n break;\n default:\n if (filters.dateRange.indexOf('--') > 0) {\n fromDate = filters.dateRange.split('--')[0];\n toDate = filters.dateRange.split('--')[1];\n }\n break;\n }\n if (fromDate && toDate) {\n filtersWithDateRange = { ...filters, fromDate, toDate };\n delete filtersWithDateRange.dateRange;\n return filtersWithDateRange;\n }\n }\n\n if ('dateRange' in filters) {\n delete filters.dateRange;\n }\n\n return filters;\n};\n\nexport const confirmNavigationIfEdited = (edited: boolean) => {\n const handleBeforeUnload = (event: BeforeUnloadEvent) => {\n if (edited) {\n event.preventDefault();\n event.returnValue = ''; // Included for legacy support, e.g. Chrome/Edge < 119\n }\n };\n\n window.addEventListener('beforeunload', handleBeforeUnload);\n\n return () => {\n window.removeEventListener('beforeunload', handleBeforeUnload);\n };\n};\n"],"names":[],"mappings":";;;AAMa,MAAA,WAAA,GAAc,CAAC,IAOtB,KAAA;AACJ,EAAA,MAAM,EAAE,OAAS,EAAA,QAAA,EAAU,eAAe,MAAQ,EAAA,QAAA,EAAU,cAC1D,GAAA,IAAA;AAEF,EAAA,OAAO,iBAAiB,IAAmB,EAAA;AACzC,IAAA,MAAM,QAAW,GAAA,MAAM,QAAS,CAAA,UAAA,CAAW,IAAI,CAAA;AAE/C,IAAM,MAAA,QAAA,GAAW,QAAW,GAAA,QAAA,CAAS,IAAO,GAAA,YAAA;AAC5C,IAAM,MAAA,UAAA,GAAa,MAAM,OAAQ,CAAA,cAAA;AAAA,MAC/B,IAAI,KAAK,CAAC,IAAI,GAAG,EAAE,IAAA,EAAM,UAAU,CAAA;AAAA,MACnC,EAAE,MAAQ,EAAA,QAAA,EAAU,YAAa;AAAA,KACnC;AACA,IAAA,IAAI,YAAY,UAAY,EAAA;AAC1B,MAAA,QAAA,CAAS,IAAK,CAAA;AAAA,QACZ,IAAM,EAAA,eAAA;AAAA,QACN,OAAA,EAAS,UAAW,CAAA,MAAA,EAAQ,GAAI,CAAA,CAAA,CAAA,KAAK,EAAE,OAAO,CAAA,CAAE,IAAK,CAAA,IAAI,CAAK,IAAA;AAAA,OAC/D,CAAA;AACD,MAAO,OAAA,KAAA;AAAA;AAET,IAAA,aAAA,GAAgB,WAAW,EAAE,CAAA;AAC7B,IAAA,MAAM,UAAW,CAAA,WAAA;AACjB,IAAO,OAAA,IAAA;AAAA,GACT;AACF;AAEa,MAAA,gBAAA,GAAmB,CAAC,QAAsB,KAAA;AACrD,EAAA,IAAI,CAAC,QAAU,EAAA;AACb,IAAO,OAAA,EAAA;AAAA;AAET,EAAA,MAAM,SAAY,GAAA,QAAA,CAAS,KAAM,CAAA,OAAO,EAAE,GAAI,EAAA;AAC9C,EAAA,OAAO,WACH,KAAM,CAAA,QAAQ,EACf,GAAI,CAAA,CAAA,CAAA,KAAK,EAAE,MAAO,CAAA,CAAC,CAAE,CAAA,WAAA,KAAgB,CAAE,CAAA,KAAA,CAAM,CAAC,CAAC,CAAA,CAC/C,KAAK,GAAG,CAAA;AACb;AAEa,MAAA,cAAA,GAAiB,CAAC,MAA2B,KAAA;AACxD,EAAM,MAAA,WAAA,GAAc,mBAAmB,MAAM,CAAA;AAC7C,EAAA,OAAO,gBAAiB,CAAA,MAAA,CAAO,QAAS,CAAA,KAAA,IAAS,WAAW,CAAK,IAAA,WAAA;AACnE;AAEa,MAAA,UAAA,GAAa,CAAC,SAAoB,KAAA;AAC7C,EAAI,IAAA,IAAA,GAAY,UAAU,OAAQ,EAAA;AAClC,EAAI,IAAA,KAAA,GAAa,SAAU,CAAA,QAAA,EAAa,GAAA,CAAA;AACxC,EAAA,IAAI,OAAO,EAAI,EAAA;AACb,IAAA,IAAA,GAAO,IAAI,IAAI,CAAA,CAAA;AAAA;AAGjB,EAAA,IAAI,QAAQ,EAAI,EAAA;AACd,IAAA,KAAA,GAAQ,IAAI,KAAK,CAAA,CAAA;AAAA;AAEnB,EAAA,OAAO,GAAG,SAAU,CAAA,WAAA,EAAa,CAAI,CAAA,EAAA,KAAK,IAAI,IAAI,CAAA,CAAA;AACpD;AAOa,MAAA,uBAAA,GAA0B,CAAC,OAAqB,KAAA;AAC3D,EAAI,IAAA,oBAAA;AACJ,EAAM,MAAA,EAAA,uBAAS,IAAK,EAAA;AACpB,EAAM,MAAA,IAAA,GAAO,IAAI,IAAA,CAAK,EAAE,CAAA;AACxB,EAAA,IAAI,QAAQ,SAAW,EAAA;AACrB,IAAA,IAAI,QAAW,GAAA,EAAA;AACf,IAAA,IAAI,MAAS,GAAA,EAAA;AAEb,IAAA,QAAQ,QAAQ,SAAW;AAAA,MACzB,KAAK,QAAA;AACH,QAAA,MAAA,GAAS,WAAW,EAAE,CAAA;AACtB,QAAA,IAAA,CAAK,OAAQ,CAAA,EAAA,CAAG,OAAQ,EAAA,GAAI,CAAC,CAAA;AAC7B,QAAA,QAAA,GAAW,WAAW,IAAI,CAAA;AAC1B,QAAA;AAAA,MAEF,KAAK,SAAA;AACH,QAAA,MAAA,GAAS,WAAW,EAAE,CAAA;AACtB,QAAA,IAAA,CAAK,OAAQ,CAAA,EAAA,CAAG,OAAQ,EAAA,GAAI,EAAE,CAAA;AAC9B,QAAA,QAAA,GAAW,WAAW,IAAI,CAAA;AAC1B,QAAA;AAAA,MACF;AACE,QAAA,IAAI,OAAQ,CAAA,SAAA,CAAU,OAAQ,CAAA,IAAI,IAAI,CAAG,EAAA;AACvC,UAAA,QAAA,GAAW,OAAQ,CAAA,SAAA,CAAU,KAAM,CAAA,IAAI,EAAE,CAAC,CAAA;AAC1C,UAAA,MAAA,GAAS,OAAQ,CAAA,SAAA,CAAU,KAAM,CAAA,IAAI,EAAE,CAAC,CAAA;AAAA;AAE1C,QAAA;AAAA;AAEJ,IAAA,IAAI,YAAY,MAAQ,EAAA;AACtB,MAAA,oBAAA,GAAuB,EAAE,GAAG,OAAS,EAAA,QAAA,EAAU,MAAO,EAAA;AACtD,MAAA,OAAO,oBAAqB,CAAA,SAAA;AAC5B,MAAO,OAAA,oBAAA;AAAA;AACT;AAGF,EAAA,IAAI,eAAe,OAAS,EAAA;AAC1B,IAAA,OAAO,OAAQ,CAAA,SAAA;AAAA;AAGjB,EAAO,OAAA,OAAA;AACT;AAEa,MAAA,yBAAA,GAA4B,CAAC,MAAoB,KAAA;AAC5D,EAAM,MAAA,kBAAA,GAAqB,CAAC,KAA6B,KAAA;AACvD,IAAA,IAAI,MAAQ,EAAA;AACV,MAAA,KAAA,CAAM,cAAe,EAAA;AACrB,MAAA,KAAA,CAAM,WAAc,GAAA,EAAA;AAAA;AACtB,GACF;AAEA,EAAO,MAAA,CAAA,gBAAA,CAAiB,gBAAgB,kBAAkB,CAAA;AAE1D,EAAA,OAAO,MAAM;AACX,IAAO,MAAA,CAAA,mBAAA,CAAoB,gBAAgB,kBAAkB,CAAA;AAAA,GAC/D;AACF;;;;"}
package/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  "frontend",
8
8
  "backstage.io"
9
9
  ],
10
- "version": "3.12.3",
10
+ "version": "3.12.5",
11
11
  "main": "dist/index.esm.js",
12
12
  "types": "dist/index.d.ts",
13
13
  "prepublishOnly": "yarn tsc && yarn build",
@@ -51,12 +51,12 @@
51
51
  "@backstage/catalog-client": "^1.8.0",
52
52
  "@backstage/catalog-model": "^1.7.1",
53
53
  "@backstage/config": "^1.3.0",
54
- "@backstage/core-components": "^0.16.0",
54
+ "@backstage/core-components": "^0.16.1",
55
55
  "@backstage/core-plugin-api": "^1.10.1",
56
- "@backstage/plugin-catalog-react": "^1.14.1",
56
+ "@backstage/plugin-catalog-react": "^1.14.2",
57
57
  "@backstage/plugin-permission-react": "^0.4.28",
58
58
  "@backstage/plugin-signals-react": "^0.0.7",
59
- "@drodil/backstage-plugin-qeta-common": "^3.12.3",
59
+ "@drodil/backstage-plugin-qeta-common": "^3.12.5",
60
60
  "@mui/icons-material": "^5.16.7",
61
61
  "@mui/lab": "^5.0.0-alpha.169",
62
62
  "@mui/material": "^5.16.7",
@@ -82,8 +82,8 @@
82
82
  "react-router-dom": "6.0.0-beta.0 || ^6.3.0"
83
83
  },
84
84
  "devDependencies": {
85
- "@backstage/cli": "^0.29.1",
86
- "@backstage/test-utils": "^1.7.1",
85
+ "@backstage/cli": "^0.29.2",
86
+ "@backstage/test-utils": "^1.7.2",
87
87
  "@testing-library/dom": "^10.4.0",
88
88
  "@testing-library/jest-dom": "^5.10.1",
89
89
  "@testing-library/react": "^16.0.1",