@drodil/backstage-plugin-qeta-react 3.9.3 → 3.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (206) hide show
  1. package/dist/components/AIAnswerCard/AIAnswerCard.esm.js +62 -61
  2. package/dist/components/AIAnswerCard/AIAnswerCard.esm.js.map +1 -1
  3. package/dist/components/AnswerCard/AnswerCard.esm.js +58 -48
  4. package/dist/components/AnswerCard/AnswerCard.esm.js.map +1 -1
  5. package/dist/components/AnswerForm/AnswerForm.esm.js +16 -16
  6. package/dist/components/AnswerForm/AnswerForm.esm.js.map +1 -1
  7. package/dist/components/AnswersContainer/AnswerList.esm.js +14 -10
  8. package/dist/components/AnswersContainer/AnswerList.esm.js.map +1 -1
  9. package/dist/components/AnswersContainer/AnswerListItem.esm.js +41 -62
  10. package/dist/components/AnswersContainer/AnswerListItem.esm.js.map +1 -1
  11. package/dist/components/AnswersContainer/AnswersContainer.esm.js +28 -31
  12. package/dist/components/AnswersContainer/AnswersContainer.esm.js.map +1 -1
  13. package/dist/components/ArticleContent/ArticleButtons.esm.js +31 -43
  14. package/dist/components/ArticleContent/ArticleButtons.esm.js.map +1 -1
  15. package/dist/components/ArticleContent/ArticleContent.esm.js +47 -50
  16. package/dist/components/ArticleContent/ArticleContent.esm.js.map +1 -1
  17. package/dist/components/AuthorBox/AuthorBox.esm.js +55 -33
  18. package/dist/components/AuthorBox/AuthorBox.esm.js.map +1 -1
  19. package/dist/components/Buttons/AddToCollectionButton.esm.js +18 -15
  20. package/dist/components/Buttons/AddToCollectionButton.esm.js.map +1 -1
  21. package/dist/components/Buttons/AskQuestionButton.esm.js +6 -8
  22. package/dist/components/Buttons/AskQuestionButton.esm.js.map +1 -1
  23. package/dist/components/Buttons/CollectionFollowButton.esm.js +8 -9
  24. package/dist/components/Buttons/CollectionFollowButton.esm.js.map +1 -1
  25. package/dist/components/Buttons/CreateCollectionButton.esm.js +6 -8
  26. package/dist/components/Buttons/CreateCollectionButton.esm.js.map +1 -1
  27. package/dist/components/Buttons/EntityFollowButton.esm.js +8 -9
  28. package/dist/components/Buttons/EntityFollowButton.esm.js.map +1 -1
  29. package/dist/components/Buttons/FavoriteButton.esm.js +10 -10
  30. package/dist/components/Buttons/FavoriteButton.esm.js.map +1 -1
  31. package/dist/components/Buttons/LinkButton.esm.js +6 -6
  32. package/dist/components/Buttons/LinkButton.esm.js.map +1 -1
  33. package/dist/components/Buttons/TagFollowButton.esm.js +8 -9
  34. package/dist/components/Buttons/TagFollowButton.esm.js.map +1 -1
  35. package/dist/components/Buttons/UserFollowButton.esm.js +8 -9
  36. package/dist/components/Buttons/UserFollowButton.esm.js.map +1 -1
  37. package/dist/components/Buttons/VoteButtons.esm.js +17 -28
  38. package/dist/components/Buttons/VoteButtons.esm.js.map +1 -1
  39. package/dist/components/Buttons/WriteArticleButton.esm.js +6 -8
  40. package/dist/components/Buttons/WriteArticleButton.esm.js.map +1 -1
  41. package/dist/components/CollectionCard/CollectionCard.esm.js +15 -16
  42. package/dist/components/CollectionCard/CollectionCard.esm.js.map +1 -1
  43. package/dist/components/CollectionForm/CollectionForm.esm.js +26 -21
  44. package/dist/components/CollectionForm/CollectionForm.esm.js.map +1 -1
  45. package/dist/components/CollectionsGrid/CollectionsGrid.esm.js +23 -24
  46. package/dist/components/CollectionsGrid/CollectionsGrid.esm.js.map +1 -1
  47. package/dist/components/CollectionsGrid/CollectionsGridContent.esm.js +8 -15
  48. package/dist/components/CollectionsGrid/CollectionsGridContent.esm.js.map +1 -1
  49. package/dist/components/CollectionsGrid/CollectionsGridItem.esm.js +13 -7
  50. package/dist/components/CollectionsGrid/CollectionsGridItem.esm.js.map +1 -1
  51. package/dist/components/CollectionsGrid/NoCollectionsCard.esm.js +7 -5
  52. package/dist/components/CollectionsGrid/NoCollectionsCard.esm.js.map +1 -1
  53. package/dist/components/CommentSection/CommentList.esm.js +18 -32
  54. package/dist/components/CommentSection/CommentList.esm.js.map +1 -1
  55. package/dist/components/CommentSection/CommentSection.esm.js +16 -17
  56. package/dist/components/CommentSection/CommentSection.esm.js.map +1 -1
  57. package/dist/components/DeleteModal/DeleteModal.esm.js +15 -16
  58. package/dist/components/DeleteModal/DeleteModal.esm.js.map +1 -1
  59. package/dist/components/EntitiesGrid/EntitiesGrid.esm.js +16 -20
  60. package/dist/components/EntitiesGrid/EntitiesGrid.esm.js.map +1 -1
  61. package/dist/components/EntitiesGrid/EntitiesGridContent.esm.js +6 -16
  62. package/dist/components/EntitiesGrid/EntitiesGridContent.esm.js.map +1 -1
  63. package/dist/components/EntitiesGrid/EntitiesGridItem.esm.js +17 -9
  64. package/dist/components/EntitiesGrid/EntitiesGridItem.esm.js.map +1 -1
  65. package/dist/components/EntitiesGrid/NoEntitiesCard.esm.js +7 -5
  66. package/dist/components/EntitiesGrid/NoEntitiesCard.esm.js.map +1 -1
  67. package/dist/components/FilterPanel/DateRangeFilter.esm.js +43 -51
  68. package/dist/components/FilterPanel/DateRangeFilter.esm.js.map +1 -1
  69. package/dist/components/FilterPanel/FilterPanel.esm.js +205 -181
  70. package/dist/components/FilterPanel/FilterPanel.esm.js.map +1 -1
  71. package/dist/components/FollowedLists/FollowedCollectionsList.esm.js +23 -29
  72. package/dist/components/FollowedLists/FollowedCollectionsList.esm.js.map +1 -1
  73. package/dist/components/FollowedLists/FollowedEntitiesList.esm.js +23 -29
  74. package/dist/components/FollowedLists/FollowedEntitiesList.esm.js.map +1 -1
  75. package/dist/components/FollowedLists/FollowedTagsList.esm.js +23 -29
  76. package/dist/components/FollowedLists/FollowedTagsList.esm.js.map +1 -1
  77. package/dist/components/HeaderImageInput/HeaderImageInput.esm.js +8 -6
  78. package/dist/components/HeaderImageInput/HeaderImageInput.esm.js.map +1 -1
  79. package/dist/components/HomePageCards/ImpactCard.esm.js +6 -4
  80. package/dist/components/HomePageCards/ImpactCard.esm.js.map +1 -1
  81. package/dist/components/HomePageCards/PostsCard.esm.js +45 -16
  82. package/dist/components/HomePageCards/PostsCard.esm.js.map +1 -1
  83. package/dist/components/LeftMenu/LeftMenu.esm.js +65 -70
  84. package/dist/components/LeftMenu/LeftMenu.esm.js.map +1 -1
  85. package/dist/components/LeftMenu/LeftMenuButton.esm.js +16 -12
  86. package/dist/components/LeftMenu/LeftMenuButton.esm.js.map +1 -1
  87. package/dist/components/Links/Links.esm.js +5 -6
  88. package/dist/components/Links/Links.esm.js.map +1 -1
  89. package/dist/components/LoadingGrid/LoadingGrid.esm.js +5 -4
  90. package/dist/components/LoadingGrid/LoadingGrid.esm.js.map +1 -1
  91. package/dist/components/MarkdownEditor/MarkdownEditor.esm.js +101 -98
  92. package/dist/components/MarkdownEditor/MarkdownEditor.esm.js.map +1 -1
  93. package/dist/components/MarkdownRenderer/MarkdownRenderer.esm.js +116 -54
  94. package/dist/components/MarkdownRenderer/MarkdownRenderer.esm.js.map +1 -1
  95. package/dist/components/PostAnonymouslyCheckbox/PostAnonymouslyCheckbox.esm.js +8 -6
  96. package/dist/components/PostAnonymouslyCheckbox/PostAnonymouslyCheckbox.esm.js.map +1 -1
  97. package/dist/components/PostForm/EntitiesInput.esm.js +10 -10
  98. package/dist/components/PostForm/EntitiesInput.esm.js.map +1 -1
  99. package/dist/components/PostForm/PostForm.esm.js +22 -22
  100. package/dist/components/PostForm/PostForm.esm.js.map +1 -1
  101. package/dist/components/PostForm/TagInput.esm.js +11 -11
  102. package/dist/components/PostForm/TagInput.esm.js.map +1 -1
  103. package/dist/components/PostHighlightList/PostHighlightList.esm.js +35 -22
  104. package/dist/components/PostHighlightList/PostHighlightList.esm.js.map +1 -1
  105. package/dist/components/PostsContainer/NoPostsCard.esm.js +11 -9
  106. package/dist/components/PostsContainer/NoPostsCard.esm.js.map +1 -1
  107. package/dist/components/PostsContainer/PostList.esm.js +11 -18
  108. package/dist/components/PostsContainer/PostList.esm.js.map +1 -1
  109. package/dist/components/PostsContainer/PostListItem.esm.js +45 -40
  110. package/dist/components/PostsContainer/PostListItem.esm.js.map +1 -1
  111. package/dist/components/PostsContainer/PostsContainer.esm.js +37 -32
  112. package/dist/components/PostsContainer/PostsContainer.esm.js.map +1 -1
  113. package/dist/components/PostsGrid/PostsGrid.esm.js +37 -32
  114. package/dist/components/PostsGrid/PostsGrid.esm.js.map +1 -1
  115. package/dist/components/PostsGrid/PostsGridContent.esm.js +9 -18
  116. package/dist/components/PostsGrid/PostsGridContent.esm.js.map +1 -1
  117. package/dist/components/PostsGrid/PostsGridItem.esm.js +34 -19
  118. package/dist/components/PostsGrid/PostsGridItem.esm.js.map +1 -1
  119. package/dist/components/QetaPagination/QetaPagination.esm.js +20 -17
  120. package/dist/components/QetaPagination/QetaPagination.esm.js.map +1 -1
  121. package/dist/components/QuestionCard/QuestionCard.esm.js +58 -61
  122. package/dist/components/QuestionCard/QuestionCard.esm.js.map +1 -1
  123. package/dist/components/QuestionsTable/QuestionTableRow.esm.js +4 -3
  124. package/dist/components/QuestionsTable/QuestionTableRow.esm.js.map +1 -1
  125. package/dist/components/QuestionsTable/QuestionsTable.esm.js +27 -18
  126. package/dist/components/QuestionsTable/QuestionsTable.esm.js.map +1 -1
  127. package/dist/components/RelativeTimeWithTooltip/RelativeTimeWithTooltip.esm.js +4 -4
  128. package/dist/components/RelativeTimeWithTooltip/RelativeTimeWithTooltip.esm.js.map +1 -1
  129. package/dist/components/SearchBar/SearchBar.esm.js +58 -0
  130. package/dist/components/SearchBar/SearchBar.esm.js.map +1 -0
  131. package/dist/components/SelectTemplateList/SelectTemplateList.esm.js +13 -7
  132. package/dist/components/SelectTemplateList/SelectTemplateList.esm.js.map +1 -1
  133. package/dist/components/StatsChart/StatsChart.esm.js +125 -157
  134. package/dist/components/StatsChart/StatsChart.esm.js.map +1 -1
  135. package/dist/components/Styled/CardActionContainer.esm.js +11 -0
  136. package/dist/components/Styled/CardActionContainer.esm.js.map +1 -0
  137. package/dist/components/Styled/ModalContent.esm.js +20 -0
  138. package/dist/components/Styled/ModalContent.esm.js.map +1 -0
  139. package/dist/components/Styled/VoteButtonContainer.esm.js +12 -0
  140. package/dist/components/Styled/VoteButtonContainer.esm.js.map +1 -0
  141. package/dist/components/SummaryStatsGrid/SummaryStatsGrid.esm.js +15 -13
  142. package/dist/components/SummaryStatsGrid/SummaryStatsGrid.esm.js.map +1 -1
  143. package/dist/components/TagsAndEntities/CollectionChip.esm.js +12 -10
  144. package/dist/components/TagsAndEntities/CollectionChip.esm.js.map +1 -1
  145. package/dist/components/TagsAndEntities/EntityChip.esm.js +20 -26
  146. package/dist/components/TagsAndEntities/EntityChip.esm.js.map +1 -1
  147. package/dist/components/TagsAndEntities/TagChip.esm.js +20 -26
  148. package/dist/components/TagsAndEntities/TagChip.esm.js.map +1 -1
  149. package/dist/components/TagsAndEntities/TagsAndEntities.esm.js +3 -3
  150. package/dist/components/TagsAndEntities/TagsAndEntities.esm.js.map +1 -1
  151. package/dist/components/TagsGrid/EditTagModal.esm.js +17 -16
  152. package/dist/components/TagsGrid/EditTagModal.esm.js.map +1 -1
  153. package/dist/components/TagsGrid/NoTagsCard.esm.js +7 -5
  154. package/dist/components/TagsGrid/NoTagsCard.esm.js.map +1 -1
  155. package/dist/components/TagsGrid/TagGridItem.esm.js +16 -9
  156. package/dist/components/TagsGrid/TagGridItem.esm.js.map +1 -1
  157. package/dist/components/TagsGrid/TagsGrid.esm.js +16 -21
  158. package/dist/components/TagsGrid/TagsGrid.esm.js.map +1 -1
  159. package/dist/components/TagsGrid/TagsGridContent.esm.js +6 -16
  160. package/dist/components/TagsGrid/TagsGridContent.esm.js.map +1 -1
  161. package/dist/components/TemplateList/TemplateForm.esm.js +19 -19
  162. package/dist/components/TemplateList/TemplateForm.esm.js.map +1 -1
  163. package/dist/components/TemplateList/TemplateList.esm.js +22 -16
  164. package/dist/components/TemplateList/TemplateList.esm.js.map +1 -1
  165. package/dist/components/TopRankingUsersCard/TopRankingUsersCard.esm.js +23 -21
  166. package/dist/components/TopRankingUsersCard/TopRankingUsersCard.esm.js.map +1 -1
  167. package/dist/components/TopRankingUsersCard/TrophyIcon.esm.js +4 -4
  168. package/dist/components/TopRankingUsersCard/TrophyIcon.esm.js.map +1 -1
  169. package/dist/components/UsersGrid/NoUsersCard.esm.js +7 -5
  170. package/dist/components/UsersGrid/NoUsersCard.esm.js.map +1 -1
  171. package/dist/components/UsersGrid/UsersGrid.esm.js +15 -19
  172. package/dist/components/UsersGrid/UsersGrid.esm.js.map +1 -1
  173. package/dist/components/UsersGrid/UsersGridContent.esm.js +6 -16
  174. package/dist/components/UsersGrid/UsersGridContent.esm.js.map +1 -1
  175. package/dist/components/UsersGrid/UsersGridItem.esm.js +17 -9
  176. package/dist/components/UsersGrid/UsersGridItem.esm.js.map +1 -1
  177. package/dist/hooks/useAI.esm.js +9 -9
  178. package/dist/hooks/useAI.esm.js.map +1 -1
  179. package/dist/hooks/useCollectionsFollow.esm.js +3 -3
  180. package/dist/hooks/useCollectionsFollow.esm.js.map +1 -1
  181. package/dist/hooks/useEntityAuthor.esm.js +5 -5
  182. package/dist/hooks/useEntityAuthor.esm.js.map +1 -1
  183. package/dist/hooks/useEntityFollow.esm.js +3 -3
  184. package/dist/hooks/useEntityFollow.esm.js.map +1 -1
  185. package/dist/hooks/useEntityQueryParameter.esm.js +2 -2
  186. package/dist/hooks/useEntityQueryParameter.esm.js.map +1 -1
  187. package/dist/hooks/useFormStyles.esm.js +1 -1
  188. package/dist/hooks/useFormStyles.esm.js.map +1 -1
  189. package/dist/hooks/usePaginatedPosts.esm.js +11 -11
  190. package/dist/hooks/usePaginatedPosts.esm.js.map +1 -1
  191. package/dist/hooks/useTagsFollow.esm.js +3 -3
  192. package/dist/hooks/useTagsFollow.esm.js.map +1 -1
  193. package/dist/hooks/useUserFollow.esm.js +3 -3
  194. package/dist/hooks/useUserFollow.esm.js.map +1 -1
  195. package/dist/hooks/useVoting.esm.js +3 -3
  196. package/dist/hooks/useVoting.esm.js.map +1 -1
  197. package/dist/index.d.ts +33 -67
  198. package/dist/index.esm.js +0 -1
  199. package/dist/index.esm.js.map +1 -1
  200. package/dist/translation.esm.js +11 -11
  201. package/dist/translation.esm.js.map +1 -1
  202. package/package.json +10 -5
  203. package/dist/components/TopRankingUsersCard/styles.esm.js +0 -23
  204. package/dist/components/TopRankingUsersCard/styles.esm.js.map +0 -1
  205. package/dist/hooks/useStyles.esm.js +0 -142
  206. package/dist/hooks/useStyles.esm.js.map +0 -1
@@ -1,34 +1,29 @@
1
- import React, { useCallback } from 'react';
1
+ import React__default, { useCallback } from 'react';
2
2
  import { ResponsiveContainer, BarChart, Tooltip, Bar, CartesianGrid, XAxis, YAxis, Legend, LineChart, Line } from 'recharts';
3
- import { makeStyles, createStyles, Typography, ButtonGroup, IconButton } from '@material-ui/core';
4
- import ShowChartIcon from '@material-ui/icons/ShowChart';
5
- import BarChartIcon from '@material-ui/icons/BarChart';
3
+ import IconButton from '@mui/material/IconButton';
4
+ import ButtonGroup from '@mui/material/ButtonGroup';
5
+ import Typography from '@mui/material/Typography';
6
+ import ShowChartIcon from '@mui/icons-material/ShowChart';
7
+ import BarChartIcon from '@mui/icons-material/BarChart';
6
8
  import { useIsDarkTheme } from '../../hooks/useIsDarkTheme.esm.js';
7
9
  import '@backstage/core-plugin-api';
8
10
  import '../../api.esm.js';
9
11
  import 'react-use';
10
12
  import { useTranslation } from '../../hooks/useTranslation.esm.js';
11
- import '../../hooks/useStyles.esm.js';
12
13
  import 'react-use/lib/useAsync';
13
14
  import { isGlobalStat, isUserStat } from './util.esm.js';
15
+ import { useTheme, css as css$1 } from '@mui/material/styles';
16
+ import { css } from '@emotion/css';
14
17
 
15
- const useStyles = makeStyles(
16
- (theme) => createStyles({
17
- tooltipLabel: {
18
- color: theme.palette.text.primary
19
- },
20
- tooltipWrapper: {
21
- backgroundColor: `${theme.palette.background.default} !important`,
22
- border: "none !important"
23
- },
24
- xAxis: {
25
- color: `${theme.palette.text.primary} !important`
26
- },
27
- lineChart: {},
28
- barChart: {}
18
+ const styles = {
19
+ tooltipLabel: (theme) => ({
20
+ color: theme.palette.text.primary
29
21
  }),
30
- { name: "QetaStatsChart" }
31
- );
22
+ tooltipWrapper: (theme) => ({
23
+ backgroundColor: `${theme.palette.background.default} !important`,
24
+ border: "none !important"
25
+ })
26
+ };
32
27
  const DEFAULT_STATS = [
33
28
  {
34
29
  dataKey: "totalViews",
@@ -104,11 +99,10 @@ const DEFAULT_STATS = [
104
99
  }
105
100
  ];
106
101
  const useChartState = (data) => {
107
- const styles = useStyles();
108
102
  const isDark = useIsDarkTheme();
109
103
  const globalStats = isGlobalStat(data[0]);
110
104
  const isUserStats = isUserStat(data[0]);
111
- const [stats, setStats] = React.useState(
105
+ const [stats, setStats] = React__default.useState(
112
106
  DEFAULT_STATS.filter((stat) => {
113
107
  if (globalStats && !stat.globalStat) {
114
108
  return false;
@@ -135,166 +129,140 @@ const useChartState = (data) => {
135
129
  return { styles, isDark, toggleStat, stats, isDisabled };
136
130
  };
137
131
  const StatsBarChart = (props) => {
138
- const { styles, isDark, stats, toggleStat, isDisabled } = useChartState(
139
- props.data
140
- );
141
- const localStyles = useStyles();
142
- return /* @__PURE__ */ React.createElement(ResponsiveContainer, { height: 400, width: "100%" }, /* @__PURE__ */ React.createElement(
143
- BarChart,
132
+ const { isDark, stats, toggleStat, isDisabled } = useChartState(props.data);
133
+ const theme = useTheme();
134
+ const labelClass = css(css$1(styles.tooltipLabel(theme)));
135
+ const wrapperClass = css(css$1(styles.tooltipWrapper(theme)));
136
+ return /* @__PURE__ */ React__default.createElement(ResponsiveContainer, { height: 400, width: "100%" }, /* @__PURE__ */ React__default.createElement(BarChart, { data: props.data, width: 900, height: 300 }, /* @__PURE__ */ React__default.createElement(
137
+ Tooltip,
144
138
  {
145
- data: props.data,
146
- width: 900,
147
- height: 300,
148
- className: localStyles.barChart
149
- },
150
- /* @__PURE__ */ React.createElement(
151
- Tooltip,
152
- {
153
- labelClassName: styles.tooltipLabel,
154
- wrapperClassName: styles.tooltipWrapper,
155
- cursor: { fill: isDark ? "#4f4f4f" : "#f5f5f5" }
156
- }
157
- ),
158
- stats.map((stat) => /* @__PURE__ */ React.createElement(
159
- Bar,
160
- {
161
- key: stat.dataKey,
162
- dataKey: stat.enabled ? stat.dataKey : "hidden",
163
- name: stat.name,
164
- fill: stat.color
165
- }
166
- )),
167
- /* @__PURE__ */ React.createElement(CartesianGrid, { stroke: "#ccc" }),
168
- /* @__PURE__ */ React.createElement(
169
- XAxis,
170
- {
171
- dataKey: "date",
172
- tickFormatter: (tick) => new Date(tick).toDateString(),
173
- axisLine: { stroke: isDark ? "white" : "black" },
174
- tickLine: { stroke: isDark ? "white" : "black" },
175
- tick: { fill: isDark ? "white" : "black" }
176
- }
177
- ),
178
- /* @__PURE__ */ React.createElement(
179
- YAxis,
180
- {
181
- allowDecimals: false,
182
- axisLine: { stroke: isDark ? "white" : "black" },
183
- tickLine: { stroke: isDark ? "white" : "black" },
184
- tick: { fill: isDark ? "white" : "black" }
185
- }
186
- ),
187
- /* @__PURE__ */ React.createElement(
188
- Legend,
189
- {
190
- verticalAlign: "top",
191
- height: 36,
192
- wrapperStyle: { cursor: "pointer" },
193
- formatter: (data) => {
194
- return isDisabled(data) ? `[ ] ${data}` : `[x] ${data}`;
195
- },
196
- onClick: (data) => {
197
- if (data.value) {
198
- toggleStat(data.value);
199
- }
139
+ labelClassName: labelClass,
140
+ wrapperClassName: wrapperClass,
141
+ cursor: { fill: isDark ? "#4f4f4f" : "#f5f5f5" }
142
+ }
143
+ ), stats.map((stat) => /* @__PURE__ */ React__default.createElement(
144
+ Bar,
145
+ {
146
+ key: stat.dataKey,
147
+ dataKey: stat.enabled ? stat.dataKey : "hidden",
148
+ name: stat.name,
149
+ fill: stat.color
150
+ }
151
+ )), /* @__PURE__ */ React__default.createElement(CartesianGrid, { stroke: "#ccc" }), /* @__PURE__ */ React__default.createElement(
152
+ XAxis,
153
+ {
154
+ dataKey: "date",
155
+ tickFormatter: (tick) => new Date(tick).toDateString(),
156
+ axisLine: { stroke: isDark ? "white" : "black" },
157
+ tickLine: { stroke: isDark ? "white" : "black" },
158
+ tick: { fill: isDark ? "white" : "black" }
159
+ }
160
+ ), /* @__PURE__ */ React__default.createElement(
161
+ YAxis,
162
+ {
163
+ allowDecimals: false,
164
+ axisLine: { stroke: isDark ? "white" : "black" },
165
+ tickLine: { stroke: isDark ? "white" : "black" },
166
+ tick: { fill: isDark ? "white" : "black" }
167
+ }
168
+ ), /* @__PURE__ */ React__default.createElement(
169
+ Legend,
170
+ {
171
+ verticalAlign: "top",
172
+ height: 36,
173
+ wrapperStyle: { cursor: "pointer" },
174
+ formatter: (data) => {
175
+ return isDisabled(data) ? `[ ] ${data}` : `[x] ${data}`;
176
+ },
177
+ onClick: (data) => {
178
+ if (data.value) {
179
+ toggleStat(data.value);
200
180
  }
201
181
  }
202
- )
203
- ));
182
+ }
183
+ )));
204
184
  };
205
185
  const StatsLineChart = (props) => {
206
- const { styles, isDark, stats, toggleStat, isDisabled } = useChartState(
207
- props.data
208
- );
209
- const localStyles = useStyles();
210
- return /* @__PURE__ */ React.createElement(ResponsiveContainer, { height: 400, width: "100%" }, /* @__PURE__ */ React.createElement(
211
- LineChart,
186
+ const { isDark, stats, toggleStat, isDisabled } = useChartState(props.data);
187
+ const theme = useTheme();
188
+ const labelClass = css(css$1(styles.tooltipLabel(theme)));
189
+ const wrapperClass = css(css$1(styles.tooltipWrapper(theme)));
190
+ return /* @__PURE__ */ React__default.createElement(ResponsiveContainer, { height: 400, width: "100%" }, /* @__PURE__ */ React__default.createElement(LineChart, { data: props.data, width: 900, height: 300 }, /* @__PURE__ */ React__default.createElement(
191
+ Tooltip,
212
192
  {
213
- data: props.data,
214
- width: 900,
215
- height: 300,
216
- className: localStyles.lineChart
217
- },
218
- /* @__PURE__ */ React.createElement(
219
- Tooltip,
220
- {
221
- labelClassName: styles.tooltipLabel,
222
- wrapperClassName: styles.tooltipWrapper,
223
- cursor: { fill: isDark ? "#4f4f4f" : "#f5f5f5" }
224
- }
225
- ),
226
- stats.map((stat) => /* @__PURE__ */ React.createElement(
227
- Line,
228
- {
229
- key: stat.dataKey,
230
- dataKey: stat.enabled ? stat.dataKey : "hidden",
231
- name: stat.name,
232
- stroke: stat.color
233
- }
234
- )),
235
- /* @__PURE__ */ React.createElement(CartesianGrid, { stroke: "#ccc" }),
236
- /* @__PURE__ */ React.createElement(
237
- XAxis,
238
- {
239
- dataKey: "date",
240
- tickFormatter: (tick) => new Date(tick).toDateString(),
241
- axisLine: { stroke: isDark ? "white" : "black" },
242
- tickLine: { stroke: isDark ? "white" : "black" },
243
- tick: { fill: isDark ? "white" : "black" }
244
- }
245
- ),
246
- /* @__PURE__ */ React.createElement(
247
- YAxis,
248
- {
249
- allowDecimals: false,
250
- axisLine: { stroke: isDark ? "white" : "black" },
251
- tickLine: { stroke: isDark ? "white" : "black" },
252
- tick: { fill: isDark ? "white" : "black" }
253
- }
254
- ),
255
- /* @__PURE__ */ React.createElement(
256
- Legend,
257
- {
258
- verticalAlign: "top",
259
- height: 36,
260
- wrapperStyle: { cursor: "pointer" },
261
- formatter: (data) => {
262
- return isDisabled(data) ? `[ ] ${data}` : `[x] ${data}`;
263
- },
264
- onClick: (data) => {
265
- if (data.value) {
266
- toggleStat(data.value);
267
- }
193
+ labelClassName: labelClass,
194
+ wrapperClassName: wrapperClass,
195
+ cursor: { fill: isDark ? "#4f4f4f" : "#f5f5f5" }
196
+ }
197
+ ), stats.map((stat) => /* @__PURE__ */ React__default.createElement(
198
+ Line,
199
+ {
200
+ key: stat.dataKey,
201
+ dataKey: stat.enabled ? stat.dataKey : "hidden",
202
+ name: stat.name,
203
+ stroke: stat.color
204
+ }
205
+ )), /* @__PURE__ */ React__default.createElement(CartesianGrid, { stroke: "#ccc" }), /* @__PURE__ */ React__default.createElement(
206
+ XAxis,
207
+ {
208
+ dataKey: "date",
209
+ tickFormatter: (tick) => new Date(tick).toDateString(),
210
+ axisLine: { stroke: isDark ? "white" : "black" },
211
+ tickLine: { stroke: isDark ? "white" : "black" },
212
+ tick: { fill: isDark ? "white" : "black" }
213
+ }
214
+ ), /* @__PURE__ */ React__default.createElement(
215
+ YAxis,
216
+ {
217
+ allowDecimals: false,
218
+ axisLine: { stroke: isDark ? "white" : "black" },
219
+ tickLine: { stroke: isDark ? "white" : "black" },
220
+ tick: { fill: isDark ? "white" : "black" }
221
+ }
222
+ ), /* @__PURE__ */ React__default.createElement(
223
+ Legend,
224
+ {
225
+ verticalAlign: "top",
226
+ height: 36,
227
+ wrapperStyle: { cursor: "pointer" },
228
+ formatter: (data) => {
229
+ return isDisabled(data) ? `[ ] ${data}` : `[x] ${data}`;
230
+ },
231
+ onClick: (data) => {
232
+ if (data.value) {
233
+ toggleStat(data.value);
268
234
  }
269
235
  }
270
- )
271
- ));
236
+ }
237
+ )));
272
238
  };
273
239
  const StatsChart = (props) => {
274
240
  const { t } = useTranslation();
275
- const [chart, setChart] = React.useState("line");
241
+ const [chart, setChart] = React__default.useState("line");
276
242
  if (!props.data || props.data.length === 0) {
277
- return /* @__PURE__ */ React.createElement(Typography, { variant: "subtitle1" }, t("stats.noStats"));
243
+ return /* @__PURE__ */ React__default.createElement(Typography, { variant: "subtitle1" }, t("stats.noStats"));
278
244
  }
279
245
  const data = props.data.sort((a, b) => new Date(a.date).getTime() - new Date(b.date).getTime()).map((d) => ({ ...d, hidden: 0 }));
280
- return /* @__PURE__ */ React.createElement(React.Fragment, null, chart === "line" ? /* @__PURE__ */ React.createElement(StatsLineChart, { data }) : /* @__PURE__ */ React.createElement(StatsBarChart, { data }), /* @__PURE__ */ React.createElement(ButtonGroup, { "aria-label": "Chart type", style: { float: "right" } }, /* @__PURE__ */ React.createElement(
246
+ return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, chart === "line" ? /* @__PURE__ */ React__default.createElement(StatsLineChart, { data }) : /* @__PURE__ */ React__default.createElement(StatsBarChart, { data }), /* @__PURE__ */ React__default.createElement(ButtonGroup, { "aria-label": "Chart type", style: { float: "right" } }, /* @__PURE__ */ React__default.createElement(
281
247
  IconButton,
282
248
  {
283
249
  "aria-label": "Line chart",
284
250
  onClick: () => {
285
251
  setChart("line");
286
- }
252
+ },
253
+ size: "large"
287
254
  },
288
- /* @__PURE__ */ React.createElement(ShowChartIcon, null)
289
- ), /* @__PURE__ */ React.createElement(
255
+ /* @__PURE__ */ React__default.createElement(ShowChartIcon, null)
256
+ ), /* @__PURE__ */ React__default.createElement(
290
257
  IconButton,
291
258
  {
292
259
  "aria-label": "Bar chart",
293
260
  onClick: () => {
294
261
  setChart("bar");
295
- }
262
+ },
263
+ size: "large"
296
264
  },
297
- /* @__PURE__ */ React.createElement(BarChartIcon, null)
265
+ /* @__PURE__ */ React__default.createElement(BarChartIcon, null)
298
266
  )));
299
267
  };
300
268
 
@@ -1 +1 @@
1
- {"version":3,"file":"StatsChart.esm.js","sources":["../../../src/components/StatsChart/StatsChart.tsx"],"sourcesContent":["import React, { useCallback } from 'react';\nimport { Stat } from '@drodil/backstage-plugin-qeta-common';\nimport {\n Bar,\n BarChart,\n CartesianGrid,\n Legend,\n Line,\n LineChart,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis,\n} from 'recharts';\nimport {\n ButtonGroup,\n createStyles,\n IconButton,\n makeStyles,\n Theme,\n Typography,\n} from '@material-ui/core';\nimport ShowChartIcon from '@material-ui/icons/ShowChart';\nimport BarChartIcon from '@material-ui/icons/BarChart';\nimport { useIsDarkTheme } from '../../hooks/useIsDarkTheme';\nimport { useTranslation } from '../../hooks';\nimport { isGlobalStat, isUserStat } from './util';\n\nexport type QetaStatsChartClassKey =\n | 'tooltipLabel'\n | 'tooltipWrapper'\n | 'xAxis'\n | 'lineChart'\n | 'barChart';\n\nconst useStyles = makeStyles(\n (theme: Theme) =>\n createStyles({\n tooltipLabel: {\n color: theme.palette.text.primary,\n },\n tooltipWrapper: {\n backgroundColor: `${theme.palette.background.default} !important`,\n border: 'none !important',\n },\n xAxis: {\n color: `${theme.palette.text.primary} !important`,\n },\n lineChart: {},\n barChart: {},\n }),\n { name: 'QetaStatsChart' },\n);\n\ntype StatType = {\n dataKey:\n | 'totalViews'\n | 'totalQuestions'\n | 'totalAnswers'\n | 'totalComments'\n | 'totalVotes'\n | 'totalUsers'\n | 'totalTags'\n | 'totalArticles'\n | 'totalFollowers';\n name: string;\n color: string;\n enabled: boolean;\n globalStat: boolean;\n userStat: boolean;\n};\n\nconst DEFAULT_STATS: StatType[] = [\n {\n dataKey: 'totalViews',\n name: 'Total views',\n color: '#8884d8',\n enabled: false,\n globalStat: true,\n userStat: true,\n },\n {\n dataKey: 'totalQuestions',\n name: 'Total questions',\n color: '#82ca9d',\n enabled: true,\n globalStat: true,\n userStat: true,\n },\n {\n dataKey: 'totalAnswers',\n name: 'Total answers',\n color: '#ff7300',\n enabled: true,\n globalStat: true,\n userStat: true,\n },\n {\n dataKey: 'totalComments',\n name: 'Total comments',\n color: '#739973',\n enabled: true,\n globalStat: true,\n userStat: true,\n },\n {\n dataKey: 'totalVotes',\n name: 'Total votes',\n color: '#d88884',\n enabled: true,\n globalStat: true,\n userStat: true,\n },\n {\n dataKey: 'totalUsers',\n name: 'Total users',\n color: '#ff0000',\n enabled: true,\n globalStat: true,\n userStat: false,\n },\n {\n dataKey: 'totalTags',\n name: 'Total tags',\n color: '#ff00ff',\n enabled: true,\n globalStat: true,\n userStat: false,\n },\n {\n dataKey: 'totalArticles',\n name: 'Total articles',\n color: '#00ff00',\n enabled: true,\n globalStat: true,\n userStat: true,\n },\n {\n dataKey: 'totalFollowers',\n name: 'Total followers',\n color: '#ff0000',\n enabled: true,\n globalStat: false,\n userStat: true,\n },\n];\n\nconst useChartState = (data: Stat[]) => {\n const styles = useStyles();\n const isDark = useIsDarkTheme();\n const globalStats = isGlobalStat(data[0]);\n const isUserStats = isUserStat(data[0]);\n const [stats, setStats] = React.useState<StatType[]>(\n DEFAULT_STATS.filter(stat => {\n if (globalStats && !stat.globalStat) {\n return false;\n }\n return !(isUserStats && !stat.userStat);\n }),\n );\n\n const toggleStat = useCallback(\n (name: string) => {\n setStats(prev =>\n prev.map(stat =>\n stat.name === name ? { ...stat, enabled: !stat.enabled } : stat,\n ),\n );\n },\n [setStats],\n );\n const isDisabled = useCallback(\n (name: string) => {\n return stats.find(stat => stat.name === name)?.enabled === false;\n },\n [stats],\n );\n\n return { styles, isDark, toggleStat, stats, isDisabled };\n};\n\nconst StatsBarChart = (props: { data: Stat[] }) => {\n const { styles, isDark, stats, toggleStat, isDisabled } = useChartState(\n props.data,\n );\n const localStyles = useStyles();\n return (\n <ResponsiveContainer height={400} width=\"100%\">\n <BarChart\n data={props.data}\n width={900}\n height={300}\n className={localStyles.barChart}\n >\n <Tooltip\n labelClassName={styles.tooltipLabel}\n wrapperClassName={styles.tooltipWrapper}\n cursor={{ fill: isDark ? '#4f4f4f' : '#f5f5f5' }}\n />\n {stats.map(stat => (\n <Bar\n key={stat.dataKey}\n dataKey={stat.enabled ? stat.dataKey : 'hidden'}\n name={stat.name}\n fill={stat.color}\n />\n ))}\n <CartesianGrid stroke=\"#ccc\" />\n <XAxis\n dataKey=\"date\"\n tickFormatter={(tick: string) => new Date(tick).toDateString()}\n axisLine={{ stroke: isDark ? 'white' : 'black' }}\n tickLine={{ stroke: isDark ? 'white' : 'black' }}\n tick={{ fill: isDark ? 'white' : 'black' }}\n />\n <YAxis\n allowDecimals={false}\n axisLine={{ stroke: isDark ? 'white' : 'black' }}\n tickLine={{ stroke: isDark ? 'white' : 'black' }}\n tick={{ fill: isDark ? 'white' : 'black' }}\n />\n <Legend\n verticalAlign=\"top\"\n height={36}\n wrapperStyle={{ cursor: 'pointer' }}\n formatter={data => {\n return isDisabled(data) ? `[ ] ${data}` : `[x] ${data}`;\n }}\n onClick={data => {\n if (data.value) {\n toggleStat(data.value as string);\n }\n }}\n />\n </BarChart>\n </ResponsiveContainer>\n );\n};\n\nconst StatsLineChart = (props: { data: Stat[] }) => {\n const { styles, isDark, stats, toggleStat, isDisabled } = useChartState(\n props.data,\n );\n const localStyles = useStyles();\n return (\n <ResponsiveContainer height={400} width=\"100%\">\n <LineChart\n data={props.data}\n width={900}\n height={300}\n className={localStyles.lineChart}\n >\n <Tooltip\n labelClassName={styles.tooltipLabel}\n wrapperClassName={styles.tooltipWrapper}\n cursor={{ fill: isDark ? '#4f4f4f' : '#f5f5f5' }}\n />\n {stats.map(stat => (\n <Line\n key={stat.dataKey}\n dataKey={stat.enabled ? stat.dataKey : 'hidden'}\n name={stat.name}\n stroke={stat.color}\n />\n ))}\n <CartesianGrid stroke=\"#ccc\" />\n <XAxis\n dataKey=\"date\"\n tickFormatter={(tick: string) => new Date(tick).toDateString()}\n axisLine={{ stroke: isDark ? 'white' : 'black' }}\n tickLine={{ stroke: isDark ? 'white' : 'black' }}\n tick={{ fill: isDark ? 'white' : 'black' }}\n />\n <YAxis\n allowDecimals={false}\n axisLine={{ stroke: isDark ? 'white' : 'black' }}\n tickLine={{ stroke: isDark ? 'white' : 'black' }}\n tick={{ fill: isDark ? 'white' : 'black' }}\n />\n <Legend\n verticalAlign=\"top\"\n height={36}\n wrapperStyle={{ cursor: 'pointer' }}\n formatter={data => {\n return isDisabled(data) ? `[ ] ${data}` : `[x] ${data}`;\n }}\n onClick={data => {\n if (data.value) {\n toggleStat(data.value as string);\n }\n }}\n />\n </LineChart>\n </ResponsiveContainer>\n );\n};\n\nexport const StatsChart = (props: { data: Stat[] }) => {\n const { t } = useTranslation();\n const [chart, setChart] = React.useState<'line' | 'bar'>('line');\n\n if (!props.data || props.data.length === 0) {\n return <Typography variant=\"subtitle1\">{t('stats.noStats')}</Typography>;\n }\n const data = props.data\n .sort((a, b) => new Date(a.date).getTime() - new Date(b.date).getTime())\n .map(d => ({ ...d, hidden: 0 }));\n\n return (\n <>\n {chart === 'line' ? (\n <StatsLineChart data={data} />\n ) : (\n <StatsBarChart data={data} />\n )}\n <ButtonGroup aria-label=\"Chart type\" style={{ float: 'right' }}>\n <IconButton\n aria-label=\"Line chart\"\n onClick={() => {\n setChart('line');\n }}\n >\n <ShowChartIcon />\n </IconButton>\n <IconButton\n aria-label=\"Bar chart\"\n onClick={() => {\n setChart('bar');\n }}\n >\n <BarChartIcon />\n </IconButton>\n </ButtonGroup>\n </>\n );\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StatsChart.esm.js","sources":["../../../src/components/StatsChart/StatsChart.tsx"],"sourcesContent":["import React, { useCallback } from 'react';\nimport { Stat } from '@drodil/backstage-plugin-qeta-common';\nimport {\n Bar,\n BarChart,\n CartesianGrid,\n Legend,\n Line,\n LineChart,\n ResponsiveContainer,\n Tooltip as ChartTooltip,\n XAxis,\n YAxis,\n} from 'recharts';\nimport IconButton from '@mui/material/IconButton';\nimport ButtonGroup from '@mui/material/ButtonGroup';\nimport Typography from '@mui/material/Typography';\nimport ShowChartIcon from '@mui/icons-material/ShowChart';\nimport BarChartIcon from '@mui/icons-material/BarChart';\nimport { useIsDarkTheme } from '../../hooks/useIsDarkTheme';\nimport { useTranslation } from '../../hooks';\nimport { isGlobalStat, isUserStat } from './util';\nimport { css, Theme, useTheme } from '@mui/material/styles';\nimport { css as emotionCss } from '@emotion/css';\n\nconst styles = {\n tooltipLabel: (theme: Theme) => ({\n color: theme.palette.text.primary,\n }),\n tooltipWrapper: (theme: Theme) => ({\n backgroundColor: `${theme.palette.background.default} !important`,\n border: 'none !important',\n }),\n};\n\ntype StatType = {\n dataKey:\n | 'totalViews'\n | 'totalQuestions'\n | 'totalAnswers'\n | 'totalComments'\n | 'totalVotes'\n | 'totalUsers'\n | 'totalTags'\n | 'totalArticles'\n | 'totalFollowers';\n name: string;\n color: string;\n enabled: boolean;\n globalStat: boolean;\n userStat: boolean;\n};\n\nconst DEFAULT_STATS: StatType[] = [\n {\n dataKey: 'totalViews',\n name: 'Total views',\n color: '#8884d8',\n enabled: false,\n globalStat: true,\n userStat: true,\n },\n {\n dataKey: 'totalQuestions',\n name: 'Total questions',\n color: '#82ca9d',\n enabled: true,\n globalStat: true,\n userStat: true,\n },\n {\n dataKey: 'totalAnswers',\n name: 'Total answers',\n color: '#ff7300',\n enabled: true,\n globalStat: true,\n userStat: true,\n },\n {\n dataKey: 'totalComments',\n name: 'Total comments',\n color: '#739973',\n enabled: true,\n globalStat: true,\n userStat: true,\n },\n {\n dataKey: 'totalVotes',\n name: 'Total votes',\n color: '#d88884',\n enabled: true,\n globalStat: true,\n userStat: true,\n },\n {\n dataKey: 'totalUsers',\n name: 'Total users',\n color: '#ff0000',\n enabled: true,\n globalStat: true,\n userStat: false,\n },\n {\n dataKey: 'totalTags',\n name: 'Total tags',\n color: '#ff00ff',\n enabled: true,\n globalStat: true,\n userStat: false,\n },\n {\n dataKey: 'totalArticles',\n name: 'Total articles',\n color: '#00ff00',\n enabled: true,\n globalStat: true,\n userStat: true,\n },\n {\n dataKey: 'totalFollowers',\n name: 'Total followers',\n color: '#ff0000',\n enabled: true,\n globalStat: false,\n userStat: true,\n },\n];\n\nconst useChartState = (data: Stat[]) => {\n const isDark = useIsDarkTheme();\n const globalStats = isGlobalStat(data[0]);\n const isUserStats = isUserStat(data[0]);\n const [stats, setStats] = React.useState<StatType[]>(\n DEFAULT_STATS.filter(stat => {\n if (globalStats && !stat.globalStat) {\n return false;\n }\n return !(isUserStats && !stat.userStat);\n }),\n );\n\n const toggleStat = useCallback(\n (name: string) => {\n setStats(prev =>\n prev.map(stat =>\n stat.name === name ? { ...stat, enabled: !stat.enabled } : stat,\n ),\n );\n },\n [setStats],\n );\n const isDisabled = useCallback(\n (name: string) => {\n return stats.find(stat => stat.name === name)?.enabled === false;\n },\n [stats],\n );\n\n return { styles, isDark, toggleStat, stats, isDisabled };\n};\n\nconst StatsBarChart = (props: { data: Stat[] }) => {\n const { isDark, stats, toggleStat, isDisabled } = useChartState(props.data);\n const theme = useTheme();\n const labelClass = emotionCss(css(styles.tooltipLabel(theme)));\n const wrapperClass = emotionCss(css(styles.tooltipWrapper(theme)));\n return (\n <ResponsiveContainer height={400} width=\"100%\">\n <BarChart data={props.data} width={900} height={300}>\n <ChartTooltip\n labelClassName={labelClass}\n wrapperClassName={wrapperClass}\n cursor={{ fill: isDark ? '#4f4f4f' : '#f5f5f5' }}\n />\n {stats.map(stat => (\n <Bar\n key={stat.dataKey}\n dataKey={stat.enabled ? stat.dataKey : 'hidden'}\n name={stat.name}\n fill={stat.color}\n />\n ))}\n <CartesianGrid stroke=\"#ccc\" />\n <XAxis\n dataKey=\"date\"\n tickFormatter={(tick: string) => new Date(tick).toDateString()}\n axisLine={{ stroke: isDark ? 'white' : 'black' }}\n tickLine={{ stroke: isDark ? 'white' : 'black' }}\n tick={{ fill: isDark ? 'white' : 'black' }}\n />\n <YAxis\n allowDecimals={false}\n axisLine={{ stroke: isDark ? 'white' : 'black' }}\n tickLine={{ stroke: isDark ? 'white' : 'black' }}\n tick={{ fill: isDark ? 'white' : 'black' }}\n />\n <Legend\n verticalAlign=\"top\"\n height={36}\n wrapperStyle={{ cursor: 'pointer' }}\n formatter={data => {\n return isDisabled(data) ? `[ ] ${data}` : `[x] ${data}`;\n }}\n onClick={data => {\n if (data.value) {\n toggleStat(data.value as string);\n }\n }}\n />\n </BarChart>\n </ResponsiveContainer>\n );\n};\n\nconst StatsLineChart = (props: { data: Stat[] }) => {\n const { isDark, stats, toggleStat, isDisabled } = useChartState(props.data);\n const theme = useTheme();\n const labelClass = emotionCss(css(styles.tooltipLabel(theme)));\n const wrapperClass = emotionCss(css(styles.tooltipWrapper(theme)));\n return (\n <ResponsiveContainer height={400} width=\"100%\">\n <LineChart data={props.data} width={900} height={300}>\n <ChartTooltip\n labelClassName={labelClass}\n wrapperClassName={wrapperClass}\n cursor={{ fill: isDark ? '#4f4f4f' : '#f5f5f5' }}\n />\n {stats.map(stat => (\n <Line\n key={stat.dataKey}\n dataKey={stat.enabled ? stat.dataKey : 'hidden'}\n name={stat.name}\n stroke={stat.color}\n />\n ))}\n <CartesianGrid stroke=\"#ccc\" />\n <XAxis\n dataKey=\"date\"\n tickFormatter={(tick: string) => new Date(tick).toDateString()}\n axisLine={{ stroke: isDark ? 'white' : 'black' }}\n tickLine={{ stroke: isDark ? 'white' : 'black' }}\n tick={{ fill: isDark ? 'white' : 'black' }}\n />\n <YAxis\n allowDecimals={false}\n axisLine={{ stroke: isDark ? 'white' : 'black' }}\n tickLine={{ stroke: isDark ? 'white' : 'black' }}\n tick={{ fill: isDark ? 'white' : 'black' }}\n />\n <Legend\n verticalAlign=\"top\"\n height={36}\n wrapperStyle={{ cursor: 'pointer' }}\n formatter={data => {\n return isDisabled(data) ? `[ ] ${data}` : `[x] ${data}`;\n }}\n onClick={data => {\n if (data.value) {\n toggleStat(data.value as string);\n }\n }}\n />\n </LineChart>\n </ResponsiveContainer>\n );\n};\n\nexport const StatsChart = (props: { data: Stat[] }) => {\n const { t } = useTranslation();\n const [chart, setChart] = React.useState<'line' | 'bar'>('line');\n\n if (!props.data || props.data.length === 0) {\n return <Typography variant=\"subtitle1\">{t('stats.noStats')}</Typography>;\n }\n const data = props.data\n .sort((a, b) => new Date(a.date).getTime() - new Date(b.date).getTime())\n .map(d => ({ ...d, hidden: 0 }));\n\n return (\n <>\n {chart === 'line' ? (\n <StatsLineChart data={data} />\n ) : (\n <StatsBarChart data={data} />\n )}\n <ButtonGroup aria-label=\"Chart type\" style={{ float: 'right' }}>\n <IconButton\n aria-label=\"Line chart\"\n onClick={() => {\n setChart('line');\n }}\n size=\"large\"\n >\n <ShowChartIcon />\n </IconButton>\n <IconButton\n aria-label=\"Bar chart\"\n onClick={() => {\n setChart('bar');\n }}\n size=\"large\"\n >\n <BarChartIcon />\n </IconButton>\n </ButtonGroup>\n </>\n );\n};\n"],"names":["React","emotionCss","css","ChartTooltip"],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { styled } from '@mui/system';
2
+
3
+ const CardActionContainer = styled("div")({
4
+ marginTop: 2,
5
+ "& a": {
6
+ marginRight: 1
7
+ }
8
+ });
9
+
10
+ export { CardActionContainer };
11
+ //# sourceMappingURL=CardActionContainer.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CardActionContainer.esm.js","sources":["../../../src/components/Styled/CardActionContainer.tsx"],"sourcesContent":["import { styled } from '@mui/system';\n\nexport const CardActionContainer = styled('div')({\n marginTop: 2,\n '& a': {\n marginRight: 1,\n },\n});\n"],"names":[],"mappings":";;AAEa,MAAA,mBAAA,GAAsB,MAAO,CAAA,KAAK,CAAE,CAAA;AAAA,EAC/C,SAAW,EAAA,CAAA;AAAA,EACX,KAAO,EAAA;AAAA,IACL,WAAa,EAAA,CAAA;AAAA,GACf;AACF,CAAC;;;;"}
@@ -0,0 +1,20 @@
1
+ import { styled } from '@mui/system';
2
+
3
+ const ModalContent = styled("div")(({ theme }) => ({
4
+ position: "absolute",
5
+ top: "20%",
6
+ left: "50%",
7
+ transform: "translate(-50%, -50%)",
8
+ width: 400,
9
+ backgroundColor: theme.palette.background.default,
10
+ border: `1px solid ${theme.palette.action.selected}`,
11
+ borderRadius: theme.shape.borderRadius,
12
+ padding: theme.spacing(2),
13
+ "& button": {
14
+ marginTop: theme.spacing(2),
15
+ float: "right"
16
+ }
17
+ }));
18
+
19
+ export { ModalContent };
20
+ //# sourceMappingURL=ModalContent.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModalContent.esm.js","sources":["../../../src/components/Styled/ModalContent.tsx"],"sourcesContent":["import { styled } from '@mui/system';\n\nexport const ModalContent = styled('div')(({ theme }) => ({\n position: 'absolute',\n top: '20%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n width: 400,\n backgroundColor: theme.palette.background.default,\n border: `1px solid ${theme.palette.action.selected}`,\n borderRadius: theme.shape.borderRadius,\n padding: theme.spacing(2),\n '& button': {\n marginTop: theme.spacing(2),\n float: 'right',\n },\n}));\n"],"names":[],"mappings":";;AAEO,MAAM,eAAe,MAAO,CAAA,KAAK,EAAE,CAAC,EAAE,OAAa,MAAA;AAAA,EACxD,QAAU,EAAA,UAAA;AAAA,EACV,GAAK,EAAA,KAAA;AAAA,EACL,IAAM,EAAA,KAAA;AAAA,EACN,SAAW,EAAA,uBAAA;AAAA,EACX,KAAO,EAAA,GAAA;AAAA,EACP,eAAA,EAAiB,KAAM,CAAA,OAAA,CAAQ,UAAW,CAAA,OAAA;AAAA,EAC1C,MAAQ,EAAA,CAAA,UAAA,EAAa,KAAM,CAAA,OAAA,CAAQ,OAAO,QAAQ,CAAA,CAAA;AAAA,EAClD,YAAA,EAAc,MAAM,KAAM,CAAA,YAAA;AAAA,EAC1B,OAAA,EAAS,KAAM,CAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,EACxB,UAAY,EAAA;AAAA,IACV,SAAA,EAAW,KAAM,CAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,IAC1B,KAAO,EAAA,OAAA;AAAA,GACT;AACF,CAAE,CAAA;;;;"}
@@ -0,0 +1,12 @@
1
+ import { styled } from '@mui/system';
2
+
3
+ const VoteButtonContainer = styled("div")({
4
+ textAlign: "center",
5
+ width: "32px",
6
+ marginLeft: "5px",
7
+ display: "inline-block",
8
+ verticalAlign: "top"
9
+ });
10
+
11
+ export { VoteButtonContainer };
12
+ //# sourceMappingURL=VoteButtonContainer.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VoteButtonContainer.esm.js","sources":["../../../src/components/Styled/VoteButtonContainer.tsx"],"sourcesContent":["import { styled } from '@mui/system';\n\nexport const VoteButtonContainer = styled('div')({\n textAlign: 'center',\n width: '32px',\n marginLeft: '5px',\n display: 'inline-block',\n verticalAlign: 'top',\n});\n"],"names":[],"mappings":";;AAEa,MAAA,mBAAA,GAAsB,MAAO,CAAA,KAAK,CAAE,CAAA;AAAA,EAC/C,SAAW,EAAA,QAAA;AAAA,EACX,KAAO,EAAA,MAAA;AAAA,EACP,UAAY,EAAA,KAAA;AAAA,EACZ,OAAS,EAAA,cAAA;AAAA,EACT,aAAe,EAAA,KAAA;AACjB,CAAC;;;;"}
@@ -1,70 +1,72 @@
1
- import { Grid, Card, CardContent, Typography } from '@material-ui/core';
2
- import React from 'react';
1
+ import Card from '@mui/material/Card';
2
+ import CardContent from '@mui/material/CardContent';
3
+ import Typography from '@mui/material/Typography';
4
+ import Grid from '@mui/material/Grid';
5
+ import React__default from 'react';
3
6
  import numeral from 'numeral';
4
7
  import '@backstage/core-plugin-api';
5
8
  import '../../api.esm.js';
6
9
  import 'react-use';
7
10
  import { useTranslation } from '../../hooks/useTranslation.esm.js';
8
- import '../../hooks/useStyles.esm.js';
9
11
  import 'react-use/lib/useAsync';
10
12
  import { isGlobalStat, isUserStat } from '../StatsChart/util.esm.js';
11
13
 
12
14
  const SummaryCard = (props) => {
13
15
  const { title, value } = props;
14
- return /* @__PURE__ */ React.createElement(Card, null, /* @__PURE__ */ React.createElement(CardContent, null, /* @__PURE__ */ React.createElement(Typography, { variant: "h5" }, value >= 1e3 ? numeral(value).format("0.0 a") : value, /* @__PURE__ */ React.createElement(Typography, { variant: "caption", style: { marginLeft: "1rem" } }, title))));
16
+ return /* @__PURE__ */ React__default.createElement(Card, null, /* @__PURE__ */ React__default.createElement(CardContent, null, /* @__PURE__ */ React__default.createElement(Typography, { variant: "h5" }, value >= 1e3 ? numeral(value).format("0.0 a") : value, /* @__PURE__ */ React__default.createElement(Typography, { variant: "caption", style: { marginLeft: "1rem" } }, title))));
15
17
  };
16
18
  const SummaryStatsGrid = (props) => {
17
19
  const { stats } = props;
18
20
  const { t } = useTranslation();
19
- return /* @__PURE__ */ React.createElement(Grid, { container: true }, /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 4 }, /* @__PURE__ */ React.createElement(
21
+ return /* @__PURE__ */ React__default.createElement(Grid, { container: true }, /* @__PURE__ */ React__default.createElement(Grid, { item: true, xs: 4 }, /* @__PURE__ */ React__default.createElement(
20
22
  SummaryCard,
21
23
  {
22
24
  title: t("stats.questions"),
23
25
  value: stats.summary.totalQuestions
24
26
  }
25
- )), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 4 }, /* @__PURE__ */ React.createElement(
27
+ )), /* @__PURE__ */ React__default.createElement(Grid, { item: true, xs: 4 }, /* @__PURE__ */ React__default.createElement(
26
28
  SummaryCard,
27
29
  {
28
30
  title: t("stats.answers"),
29
31
  value: stats.summary.totalAnswers
30
32
  }
31
- )), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 4 }, /* @__PURE__ */ React.createElement(
33
+ )), /* @__PURE__ */ React__default.createElement(Grid, { item: true, xs: 4 }, /* @__PURE__ */ React__default.createElement(
32
34
  SummaryCard,
33
35
  {
34
36
  title: t("stats.articles"),
35
37
  value: stats.summary.totalArticles
36
38
  }
37
- )), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 4 }, /* @__PURE__ */ React.createElement(
39
+ )), /* @__PURE__ */ React__default.createElement(Grid, { item: true, xs: 4 }, /* @__PURE__ */ React__default.createElement(
38
40
  SummaryCard,
39
41
  {
40
42
  title: t("stats.comments"),
41
43
  value: stats.summary.totalComments
42
44
  }
43
- )), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 4 }, /* @__PURE__ */ React.createElement(
45
+ )), /* @__PURE__ */ React__default.createElement(Grid, { item: true, xs: 4 }, /* @__PURE__ */ React__default.createElement(
44
46
  SummaryCard,
45
47
  {
46
48
  title: t("stats.views"),
47
49
  value: stats.summary.totalViews
48
50
  }
49
- )), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 4 }, /* @__PURE__ */ React.createElement(
51
+ )), /* @__PURE__ */ React__default.createElement(Grid, { item: true, xs: 4 }, /* @__PURE__ */ React__default.createElement(
50
52
  SummaryCard,
51
53
  {
52
54
  title: t("stats.votes"),
53
55
  value: stats.summary.totalVotes
54
56
  }
55
- )), isGlobalStat(stats.summary) && /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 4 }, /* @__PURE__ */ React.createElement(
57
+ )), isGlobalStat(stats.summary) && /* @__PURE__ */ React__default.createElement(Grid, { item: true, xs: 4 }, /* @__PURE__ */ React__default.createElement(
56
58
  SummaryCard,
57
59
  {
58
60
  title: t("stats.users"),
59
61
  value: stats.summary.totalUsers
60
62
  }
61
- )), isGlobalStat(stats.summary) && /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 4 }, /* @__PURE__ */ React.createElement(
63
+ )), isGlobalStat(stats.summary) && /* @__PURE__ */ React__default.createElement(Grid, { item: true, xs: 4 }, /* @__PURE__ */ React__default.createElement(
62
64
  SummaryCard,
63
65
  {
64
66
  title: t("stats.tags"),
65
67
  value: stats.summary.totalTags
66
68
  }
67
- )), isUserStat(stats.summary) && /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 4 }, /* @__PURE__ */ React.createElement(
69
+ )), isUserStat(stats.summary) && /* @__PURE__ */ React__default.createElement(Grid, { item: true, xs: 4 }, /* @__PURE__ */ React__default.createElement(
68
70
  SummaryCard,
69
71
  {
70
72
  title: t("stats.followers"),
@@ -1 +1 @@
1
- {"version":3,"file":"SummaryStatsGrid.esm.js","sources":["../../../src/components/SummaryStatsGrid/SummaryStatsGrid.tsx"],"sourcesContent":["import { Card, CardContent, Grid, Typography } from '@material-ui/core';\nimport {\n GlobalStat,\n StatisticsResponse,\n UserStat,\n} from '@drodil/backstage-plugin-qeta-common';\nimport React from 'react';\nimport numeral from 'numeral';\nimport { useTranslation } from '../../hooks';\nimport { isGlobalStat, isUserStat } from '../StatsChart/util';\n\nconst SummaryCard = (props: { title: string; value: number }) => {\n const { title, value } = props;\n return (\n <Card>\n <CardContent>\n <Typography variant=\"h5\">\n {value >= 1000 ? numeral(value).format('0.0 a') : value}\n <Typography variant=\"caption\" style={{ marginLeft: '1rem' }}>\n {title}\n </Typography>\n </Typography>\n </CardContent>\n </Card>\n );\n};\n\nexport const SummaryStatsGrid = (props: {\n stats: StatisticsResponse<UserStat | GlobalStat>;\n}) => {\n const { stats } = props;\n const { t } = useTranslation();\n return (\n <Grid container>\n <Grid item xs={4}>\n <SummaryCard\n title={t('stats.questions')}\n value={stats.summary.totalQuestions}\n />\n </Grid>\n <Grid item xs={4}>\n <SummaryCard\n title={t('stats.answers')}\n value={stats.summary.totalAnswers}\n />\n </Grid>\n <Grid item xs={4}>\n <SummaryCard\n title={t('stats.articles')}\n value={stats.summary.totalArticles}\n />\n </Grid>\n <Grid item xs={4}>\n <SummaryCard\n title={t('stats.comments')}\n value={stats.summary.totalComments}\n />\n </Grid>\n <Grid item xs={4}>\n <SummaryCard\n title={t('stats.views')}\n value={stats.summary.totalViews}\n />\n </Grid>\n <Grid item xs={4}>\n <SummaryCard\n title={t('stats.votes')}\n value={stats.summary.totalVotes}\n />\n </Grid>\n {isGlobalStat(stats.summary) && (\n <Grid item xs={4}>\n <SummaryCard\n title={t('stats.users')}\n value={stats.summary!.totalUsers}\n />\n </Grid>\n )}\n {isGlobalStat(stats.summary) && (\n <Grid item xs={4}>\n <SummaryCard\n title={t('stats.tags')}\n value={stats.summary!.totalTags}\n />\n </Grid>\n )}\n {isUserStat(stats.summary) && (\n <Grid item xs={4}>\n <SummaryCard\n title={t('stats.followers')}\n value={stats.summary!.totalFollowers}\n />\n </Grid>\n )}\n </Grid>\n );\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SummaryStatsGrid.esm.js","sources":["../../../src/components/SummaryStatsGrid/SummaryStatsGrid.tsx"],"sourcesContent":["import Card from '@mui/material/Card';\nimport CardContent from '@mui/material/CardContent';\nimport Typography from '@mui/material/Typography';\nimport Grid from '@mui/material/Grid';\nimport {\n GlobalStat,\n StatisticsResponse,\n UserStat,\n} from '@drodil/backstage-plugin-qeta-common';\nimport React from 'react';\nimport numeral from 'numeral';\nimport { useTranslation } from '../../hooks';\nimport { isGlobalStat, isUserStat } from '../StatsChart/util';\n\nconst SummaryCard = (props: { title: string; value: number }) => {\n const { title, value } = props;\n return (\n <Card>\n <CardContent>\n <Typography variant=\"h5\">\n {value >= 1000 ? numeral(value).format('0.0 a') : value}\n <Typography variant=\"caption\" style={{ marginLeft: '1rem' }}>\n {title}\n </Typography>\n </Typography>\n </CardContent>\n </Card>\n );\n};\n\nexport const SummaryStatsGrid = (props: {\n stats: StatisticsResponse<UserStat | GlobalStat>;\n}) => {\n const { stats } = props;\n const { t } = useTranslation();\n return (\n <Grid container>\n <Grid item xs={4}>\n <SummaryCard\n title={t('stats.questions')}\n value={stats.summary.totalQuestions}\n />\n </Grid>\n <Grid item xs={4}>\n <SummaryCard\n title={t('stats.answers')}\n value={stats.summary.totalAnswers}\n />\n </Grid>\n <Grid item xs={4}>\n <SummaryCard\n title={t('stats.articles')}\n value={stats.summary.totalArticles}\n />\n </Grid>\n <Grid item xs={4}>\n <SummaryCard\n title={t('stats.comments')}\n value={stats.summary.totalComments}\n />\n </Grid>\n <Grid item xs={4}>\n <SummaryCard\n title={t('stats.views')}\n value={stats.summary.totalViews}\n />\n </Grid>\n <Grid item xs={4}>\n <SummaryCard\n title={t('stats.votes')}\n value={stats.summary.totalVotes}\n />\n </Grid>\n {isGlobalStat(stats.summary) && (\n <Grid item xs={4}>\n <SummaryCard\n title={t('stats.users')}\n value={stats.summary!.totalUsers}\n />\n </Grid>\n )}\n {isGlobalStat(stats.summary) && (\n <Grid item xs={4}>\n <SummaryCard\n title={t('stats.tags')}\n value={stats.summary!.totalTags}\n />\n </Grid>\n )}\n {isUserStat(stats.summary) && (\n <Grid item xs={4}>\n <SummaryCard\n title={t('stats.followers')}\n value={stats.summary!.totalFollowers}\n />\n </Grid>\n )}\n </Grid>\n );\n};\n"],"names":["React"],"mappings":";;;;;;;;;;;;;AAcA,MAAM,WAAA,GAAc,CAAC,KAA4C,KAAA;AAC/D,EAAM,MAAA,EAAE,KAAO,EAAA,KAAA,EAAU,GAAA,KAAA,CAAA;AACzB,EAAA,uBACGA,cAAA,CAAA,aAAA,CAAA,IAAA,EAAA,IAAA,kBACEA,cAAA,CAAA,aAAA,CAAA,WAAA,EAAA,IAAA,kBACEA,cAAA,CAAA,aAAA,CAAA,UAAA,EAAA,EAAW,OAAQ,EAAA,IAAA,EAAA,EACjB,KAAS,IAAA,GAAA,GAAO,OAAQ,CAAA,KAAK,CAAE,CAAA,MAAA,CAAO,OAAO,CAAA,GAAI,KAClD,kBAAAA,cAAA,CAAA,aAAA,CAAC,UAAW,EAAA,EAAA,OAAA,EAAQ,SAAU,EAAA,KAAA,EAAO,EAAE,UAAA,EAAY,MAAO,EAAA,EAAA,EACvD,KACH,CACF,CACF,CACF,CAAA,CAAA;AAEJ,CAAA,CAAA;AAEa,MAAA,gBAAA,GAAmB,CAAC,KAE3B,KAAA;AACJ,EAAM,MAAA,EAAE,OAAU,GAAA,KAAA,CAAA;AAClB,EAAM,MAAA,EAAE,CAAE,EAAA,GAAI,cAAe,EAAA,CAAA;AAC7B,EACE,uBAAAA,cAAA,CAAA,aAAA,CAAC,QAAK,SAAS,EAAA,IAAA,EAAA,+CACZ,IAAK,EAAA,EAAA,IAAA,EAAI,IAAC,EAAA,EAAA,EAAI,CACb,EAAA,kBAAAA,cAAA,CAAA,aAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,EAAE,iBAAiB,CAAA;AAAA,MAC1B,KAAA,EAAO,MAAM,OAAQ,CAAA,cAAA;AAAA,KAAA;AAAA,GAEzB,CACA,kBAAAA,cAAA,CAAA,aAAA,CAAC,QAAK,IAAI,EAAA,IAAA,EAAC,IAAI,CACb,EAAA,kBAAAA,cAAA,CAAA,aAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,EAAE,eAAe,CAAA;AAAA,MACxB,KAAA,EAAO,MAAM,OAAQ,CAAA,YAAA;AAAA,KAAA;AAAA,GAEzB,CACA,kBAAAA,cAAA,CAAA,aAAA,CAAC,QAAK,IAAI,EAAA,IAAA,EAAC,IAAI,CACb,EAAA,kBAAAA,cAAA,CAAA,aAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,EAAE,gBAAgB,CAAA;AAAA,MACzB,KAAA,EAAO,MAAM,OAAQ,CAAA,aAAA;AAAA,KAAA;AAAA,GAEzB,CACA,kBAAAA,cAAA,CAAA,aAAA,CAAC,QAAK,IAAI,EAAA,IAAA,EAAC,IAAI,CACb,EAAA,kBAAAA,cAAA,CAAA,aAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,EAAE,gBAAgB,CAAA;AAAA,MACzB,KAAA,EAAO,MAAM,OAAQ,CAAA,aAAA;AAAA,KAAA;AAAA,GAEzB,CACA,kBAAAA,cAAA,CAAA,aAAA,CAAC,QAAK,IAAI,EAAA,IAAA,EAAC,IAAI,CACb,EAAA,kBAAAA,cAAA,CAAA,aAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,EAAE,aAAa,CAAA;AAAA,MACtB,KAAA,EAAO,MAAM,OAAQ,CAAA,UAAA;AAAA,KAAA;AAAA,GAEzB,CACA,kBAAAA,cAAA,CAAA,aAAA,CAAC,QAAK,IAAI,EAAA,IAAA,EAAC,IAAI,CACb,EAAA,kBAAAA,cAAA,CAAA,aAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,EAAE,aAAa,CAAA;AAAA,MACtB,KAAA,EAAO,MAAM,OAAQ,CAAA,UAAA;AAAA,KAAA;AAAA,GAEzB,CACC,EAAA,YAAA,CAAa,KAAM,CAAA,OAAO,CACzB,oBAAAA,cAAA,CAAA,aAAA,CAAC,IAAK,EAAA,EAAA,IAAA,EAAI,IAAC,EAAA,EAAA,EAAI,CACb,EAAA,kBAAAA,cAAA,CAAA,aAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,EAAE,aAAa,CAAA;AAAA,MACtB,KAAA,EAAO,MAAM,OAAS,CAAA,UAAA;AAAA,KAAA;AAAA,GAE1B,CAED,EAAA,YAAA,CAAa,KAAM,CAAA,OAAO,CACzB,oBAAAA,cAAA,CAAA,aAAA,CAAC,IAAK,EAAA,EAAA,IAAA,EAAI,IAAC,EAAA,EAAA,EAAI,CACb,EAAA,kBAAAA,cAAA,CAAA,aAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,EAAE,YAAY,CAAA;AAAA,MACrB,KAAA,EAAO,MAAM,OAAS,CAAA,SAAA;AAAA,KAAA;AAAA,GAE1B,CAED,EAAA,UAAA,CAAW,KAAM,CAAA,OAAO,CACvB,oBAAAA,cAAA,CAAA,aAAA,CAAC,IAAK,EAAA,EAAA,IAAA,EAAI,IAAC,EAAA,EAAA,EAAI,CACb,EAAA,kBAAAA,cAAA,CAAA,aAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,EAAE,iBAAiB,CAAA;AAAA,MAC1B,KAAA,EAAO,MAAM,OAAS,CAAA,cAAA;AAAA,KAAA;AAAA,GAE1B,CAEJ,CAAA,CAAA;AAEJ;;;;"}