@replyke/core 7.0.0-beta.23 → 7.0.0-beta.25

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 (140) hide show
  1. package/dist/cjs/hooks/comments/index.d.ts +0 -1
  2. package/dist/cjs/hooks/comments/index.js +1 -3
  3. package/dist/cjs/hooks/comments/index.js.map +1 -1
  4. package/dist/cjs/hooks/comments/useCommentSectionData.js +10 -0
  5. package/dist/cjs/hooks/comments/useCommentSectionData.js.map +1 -1
  6. package/dist/cjs/hooks/entities/index.d.ts +0 -5
  7. package/dist/cjs/hooks/entities/index.js +1 -11
  8. package/dist/cjs/hooks/entities/index.js.map +1 -1
  9. package/dist/cjs/hooks/entities/useEntityData.d.ts +0 -6
  10. package/dist/cjs/hooks/entities/useEntityData.js +0 -11
  11. package/dist/cjs/hooks/entities/useEntityData.js.map +1 -1
  12. package/dist/cjs/hooks/reactions/index.d.ts +10 -0
  13. package/dist/cjs/hooks/reactions/index.js +21 -0
  14. package/dist/cjs/hooks/reactions/index.js.map +1 -0
  15. package/dist/cjs/hooks/reactions/useAddReaction.d.ts +9 -0
  16. package/dist/cjs/hooks/{comments/useDownvoteComment.js → reactions/useAddReaction.js} +19 -13
  17. package/dist/cjs/hooks/reactions/useAddReaction.js.map +1 -0
  18. package/dist/cjs/hooks/reactions/useFetchCommentReactions.d.ts +10 -0
  19. package/dist/cjs/hooks/{comments/useRemoveCommentUpvote.js → reactions/useFetchCommentReactions.js} +26 -13
  20. package/dist/cjs/hooks/reactions/useFetchCommentReactions.js.map +1 -0
  21. package/dist/cjs/hooks/reactions/useFetchCommentReactionsWrapper.d.ts +17 -0
  22. package/dist/cjs/hooks/reactions/useFetchCommentReactionsWrapper.js +170 -0
  23. package/dist/cjs/hooks/reactions/useFetchCommentReactionsWrapper.js.map +1 -0
  24. package/dist/cjs/hooks/reactions/useFetchEntityReactions.d.ts +10 -0
  25. package/dist/cjs/hooks/{entities/useDownvoteEntity.js → reactions/useFetchEntityReactions.js} +26 -13
  26. package/dist/cjs/hooks/reactions/useFetchEntityReactions.js.map +1 -0
  27. package/dist/cjs/hooks/reactions/useFetchEntityReactionsWrapper.d.ts +17 -0
  28. package/dist/cjs/hooks/reactions/useFetchEntityReactionsWrapper.js +170 -0
  29. package/dist/cjs/hooks/reactions/useFetchEntityReactionsWrapper.js.map +1 -0
  30. package/dist/cjs/hooks/reactions/useReactionToggle.d.ts +14 -0
  31. package/dist/cjs/hooks/{comments/useUpvoteComment.js → reactions/useReactionToggle.js} +45 -23
  32. package/dist/cjs/hooks/reactions/useReactionToggle.js.map +1 -0
  33. package/dist/cjs/hooks/reactions/useRemoveReaction.d.ts +7 -0
  34. package/dist/cjs/hooks/{comments/useRemoveCommentDownvote.js → reactions/useRemoveReaction.js} +16 -13
  35. package/dist/cjs/hooks/reactions/useRemoveReaction.js.map +1 -0
  36. package/dist/cjs/index.d.ts +4 -2
  37. package/dist/cjs/index.js +12 -9
  38. package/dist/cjs/index.js.map +1 -1
  39. package/dist/cjs/interfaces/models/Comment.d.ts +3 -0
  40. package/dist/cjs/interfaces/models/Entity.d.ts +3 -0
  41. package/dist/cjs/interfaces/models/Reaction.d.ts +23 -0
  42. package/dist/cjs/interfaces/models/Reaction.js +3 -0
  43. package/dist/cjs/interfaces/models/Reaction.js.map +1 -0
  44. package/dist/cjs/store/slices/entityListsSlice.d.ts +132 -0
  45. package/dist/esm/hooks/comments/index.d.ts +0 -1
  46. package/dist/esm/hooks/comments/index.js +0 -1
  47. package/dist/esm/hooks/comments/index.js.map +1 -1
  48. package/dist/esm/hooks/comments/useCommentSectionData.js +10 -0
  49. package/dist/esm/hooks/comments/useCommentSectionData.js.map +1 -1
  50. package/dist/esm/hooks/entities/index.d.ts +0 -5
  51. package/dist/esm/hooks/entities/index.js +0 -5
  52. package/dist/esm/hooks/entities/index.js.map +1 -1
  53. package/dist/esm/hooks/entities/useEntityData.d.ts +0 -6
  54. package/dist/esm/hooks/entities/useEntityData.js +0 -11
  55. package/dist/esm/hooks/entities/useEntityData.js.map +1 -1
  56. package/dist/esm/hooks/reactions/index.d.ts +10 -0
  57. package/dist/esm/hooks/reactions/index.js +8 -0
  58. package/dist/esm/hooks/reactions/index.js.map +1 -0
  59. package/dist/esm/hooks/reactions/useAddReaction.d.ts +9 -0
  60. package/dist/esm/hooks/{comments/useDownvoteComment.js → reactions/useAddReaction.js} +19 -13
  61. package/dist/esm/hooks/reactions/useAddReaction.js.map +1 -0
  62. package/dist/esm/hooks/reactions/useFetchCommentReactions.d.ts +10 -0
  63. package/dist/esm/hooks/{comments/useRemoveCommentUpvote.js → reactions/useFetchCommentReactions.js} +26 -13
  64. package/dist/esm/hooks/reactions/useFetchCommentReactions.js.map +1 -0
  65. package/dist/esm/hooks/reactions/useFetchCommentReactionsWrapper.d.ts +17 -0
  66. package/dist/esm/hooks/reactions/useFetchCommentReactionsWrapper.js +165 -0
  67. package/dist/esm/hooks/reactions/useFetchCommentReactionsWrapper.js.map +1 -0
  68. package/dist/esm/hooks/reactions/useFetchEntityReactions.d.ts +10 -0
  69. package/dist/esm/hooks/{entities/useDownvoteEntity.js → reactions/useFetchEntityReactions.js} +26 -13
  70. package/dist/esm/hooks/reactions/useFetchEntityReactions.js.map +1 -0
  71. package/dist/esm/hooks/reactions/useFetchEntityReactionsWrapper.d.ts +17 -0
  72. package/dist/esm/hooks/reactions/useFetchEntityReactionsWrapper.js +165 -0
  73. package/dist/esm/hooks/reactions/useFetchEntityReactionsWrapper.js.map +1 -0
  74. package/dist/esm/hooks/reactions/useReactionToggle.d.ts +14 -0
  75. package/dist/esm/hooks/reactions/useReactionToggle.js +88 -0
  76. package/dist/esm/hooks/reactions/useReactionToggle.js.map +1 -0
  77. package/dist/esm/hooks/reactions/useRemoveReaction.d.ts +7 -0
  78. package/dist/esm/hooks/{comments/useRemoveCommentDownvote.js → reactions/useRemoveReaction.js} +16 -13
  79. package/dist/esm/hooks/reactions/useRemoveReaction.js.map +1 -0
  80. package/dist/esm/index.d.ts +4 -2
  81. package/dist/esm/index.js +4 -2
  82. package/dist/esm/index.js.map +1 -1
  83. package/dist/esm/interfaces/models/Comment.d.ts +3 -0
  84. package/dist/esm/interfaces/models/Entity.d.ts +3 -0
  85. package/dist/esm/interfaces/models/Reaction.d.ts +23 -0
  86. package/dist/esm/interfaces/models/Reaction.js +2 -0
  87. package/dist/esm/interfaces/models/Reaction.js.map +1 -0
  88. package/dist/esm/store/slices/entityListsSlice.d.ts +132 -0
  89. package/package.json +1 -1
  90. package/dist/cjs/hooks/comments/useCommentVotes.d.ts +0 -13
  91. package/dist/cjs/hooks/comments/useCommentVotes.js +0 -241
  92. package/dist/cjs/hooks/comments/useCommentVotes.js.map +0 -1
  93. package/dist/cjs/hooks/comments/useDownvoteComment.d.ts +0 -5
  94. package/dist/cjs/hooks/comments/useDownvoteComment.js.map +0 -1
  95. package/dist/cjs/hooks/comments/useRemoveCommentDownvote.d.ts +0 -5
  96. package/dist/cjs/hooks/comments/useRemoveCommentDownvote.js.map +0 -1
  97. package/dist/cjs/hooks/comments/useRemoveCommentUpvote.d.ts +0 -5
  98. package/dist/cjs/hooks/comments/useRemoveCommentUpvote.js.map +0 -1
  99. package/dist/cjs/hooks/comments/useUpvoteComment.d.ts +0 -5
  100. package/dist/cjs/hooks/comments/useUpvoteComment.js.map +0 -1
  101. package/dist/cjs/hooks/entities/useDownvoteEntity.d.ts +0 -5
  102. package/dist/cjs/hooks/entities/useDownvoteEntity.js.map +0 -1
  103. package/dist/cjs/hooks/entities/useEntityVotes.d.ts +0 -13
  104. package/dist/cjs/hooks/entities/useEntityVotes.js +0 -250
  105. package/dist/cjs/hooks/entities/useEntityVotes.js.map +0 -1
  106. package/dist/cjs/hooks/entities/useRemoveEntityDownvote.d.ts +0 -5
  107. package/dist/cjs/hooks/entities/useRemoveEntityDownvote.js +0 -71
  108. package/dist/cjs/hooks/entities/useRemoveEntityDownvote.js.map +0 -1
  109. package/dist/cjs/hooks/entities/useRemoveEntityUpvote.d.ts +0 -5
  110. package/dist/cjs/hooks/entities/useRemoveEntityUpvote.js +0 -71
  111. package/dist/cjs/hooks/entities/useRemoveEntityUpvote.js.map +0 -1
  112. package/dist/cjs/hooks/entities/useUpvoteEntity.d.ts +0 -5
  113. package/dist/cjs/hooks/entities/useUpvoteEntity.js +0 -71
  114. package/dist/cjs/hooks/entities/useUpvoteEntity.js.map +0 -1
  115. package/dist/esm/hooks/comments/useCommentVotes.d.ts +0 -13
  116. package/dist/esm/hooks/comments/useCommentVotes.js +0 -236
  117. package/dist/esm/hooks/comments/useCommentVotes.js.map +0 -1
  118. package/dist/esm/hooks/comments/useDownvoteComment.d.ts +0 -5
  119. package/dist/esm/hooks/comments/useDownvoteComment.js.map +0 -1
  120. package/dist/esm/hooks/comments/useRemoveCommentDownvote.d.ts +0 -5
  121. package/dist/esm/hooks/comments/useRemoveCommentDownvote.js.map +0 -1
  122. package/dist/esm/hooks/comments/useRemoveCommentUpvote.d.ts +0 -5
  123. package/dist/esm/hooks/comments/useRemoveCommentUpvote.js.map +0 -1
  124. package/dist/esm/hooks/comments/useUpvoteComment.d.ts +0 -5
  125. package/dist/esm/hooks/comments/useUpvoteComment.js +0 -66
  126. package/dist/esm/hooks/comments/useUpvoteComment.js.map +0 -1
  127. package/dist/esm/hooks/entities/useDownvoteEntity.d.ts +0 -5
  128. package/dist/esm/hooks/entities/useDownvoteEntity.js.map +0 -1
  129. package/dist/esm/hooks/entities/useEntityVotes.d.ts +0 -13
  130. package/dist/esm/hooks/entities/useEntityVotes.js +0 -245
  131. package/dist/esm/hooks/entities/useEntityVotes.js.map +0 -1
  132. package/dist/esm/hooks/entities/useRemoveEntityDownvote.d.ts +0 -5
  133. package/dist/esm/hooks/entities/useRemoveEntityDownvote.js +0 -66
  134. package/dist/esm/hooks/entities/useRemoveEntityDownvote.js.map +0 -1
  135. package/dist/esm/hooks/entities/useRemoveEntityUpvote.d.ts +0 -5
  136. package/dist/esm/hooks/entities/useRemoveEntityUpvote.js +0 -66
  137. package/dist/esm/hooks/entities/useRemoveEntityUpvote.js.map +0 -1
  138. package/dist/esm/hooks/entities/useUpvoteEntity.d.ts +0 -5
  139. package/dist/esm/hooks/entities/useUpvoteEntity.js +0 -66
  140. package/dist/esm/hooks/entities/useUpvoteEntity.js.map +0 -1
@@ -0,0 +1,165 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __generator = (this && this.__generator) || function (thisArg, body) {
11
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
12
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
+ function verb(n) { return function (v) { return step([n, v]); }; }
14
+ function step(op) {
15
+ if (f) throw new TypeError("Generator is already executing.");
16
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
17
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
+ if (y = 0, t) op = [op[0] & 2, t.value];
19
+ switch (op[0]) {
20
+ case 0: case 1: t = op; break;
21
+ case 4: _.label++; return { value: op[1], done: false };
22
+ case 5: _.label++; y = op[1]; op = [0]; continue;
23
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
+ default:
25
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
+ if (t[2]) _.ops.pop();
30
+ _.trys.pop(); continue;
31
+ }
32
+ op = body.call(thisArg, _);
33
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
+ }
36
+ };
37
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
38
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
39
+ if (ar || !(i in from)) {
40
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
41
+ ar[i] = from[i];
42
+ }
43
+ }
44
+ return to.concat(ar || Array.prototype.slice.call(from));
45
+ };
46
+ import { useCallback, useEffect, useRef, useState } from "react";
47
+ import useFetchCommentReactions from "./useFetchCommentReactions";
48
+ import { handleError } from "../../utils/handleError";
49
+ function useFetchCommentReactionsWrapper(props) {
50
+ var _this = this;
51
+ var commentId = props.commentId, _a = props.limit, limit = _a === void 0 ? 20 : _a, reactionType = props.reactionType, _b = props.sortDir, sortDir = _b === void 0 ? "desc" : _b, _c = props.autoFetch, autoFetch = _c === void 0 ? false : _c;
52
+ var fetchCommentReactions = useFetchCommentReactions();
53
+ var loading = useRef(false);
54
+ var _d = useState(false), loadingState = _d[0], setLoadingState = _d[1];
55
+ var hasMore = useRef(true);
56
+ var _e = useState(true), hasMoreState = _e[0], setHasMoreState = _e[1];
57
+ var _f = useState(1), page = _f[0], setPage = _f[1];
58
+ var _g = useState([]), reactions = _g[0], setReactions = _g[1];
59
+ var resetReactions = useCallback(function () { return __awaiter(_this, void 0, void 0, function () {
60
+ var response, newReactions, pagination, err_1;
61
+ return __generator(this, function (_a) {
62
+ switch (_a.label) {
63
+ case 0:
64
+ if (!commentId) {
65
+ return [2 /*return*/];
66
+ }
67
+ _a.label = 1;
68
+ case 1:
69
+ _a.trys.push([1, 3, 4, 5]);
70
+ loading.current = true;
71
+ setLoadingState(true);
72
+ hasMore.current = true;
73
+ setHasMoreState(true);
74
+ setPage(1);
75
+ return [4 /*yield*/, fetchCommentReactions({
76
+ commentId: commentId,
77
+ page: 1,
78
+ limit: limit,
79
+ reactionType: reactionType,
80
+ sortDir: sortDir,
81
+ })];
82
+ case 2:
83
+ response = _a.sent();
84
+ if (response) {
85
+ newReactions = response.data, pagination = response.pagination;
86
+ setReactions(newReactions);
87
+ hasMore.current = pagination.hasMore;
88
+ setHasMoreState(pagination.hasMore);
89
+ }
90
+ return [3 /*break*/, 5];
91
+ case 3:
92
+ err_1 = _a.sent();
93
+ handleError(err_1, "Failed to reset reactions:");
94
+ return [3 /*break*/, 5];
95
+ case 4:
96
+ loading.current = false;
97
+ setLoadingState(false);
98
+ return [7 /*endfinally*/];
99
+ case 5: return [2 /*return*/];
100
+ }
101
+ });
102
+ }); }, [fetchCommentReactions, limit, reactionType, sortDir, commentId]);
103
+ var loadMore = function () {
104
+ if (loading.current || !hasMore.current)
105
+ return;
106
+ setPage(function (prevPage) { return prevPage + 1; });
107
+ };
108
+ useEffect(function () {
109
+ if (autoFetch) {
110
+ resetReactions();
111
+ }
112
+ }, [resetReactions, autoFetch]);
113
+ useEffect(function () {
114
+ var loadMoreReactions = function () { return __awaiter(_this, void 0, void 0, function () {
115
+ var response, newReactions_1, pagination, err_2;
116
+ return __generator(this, function (_a) {
117
+ switch (_a.label) {
118
+ case 0:
119
+ loading.current = true;
120
+ setLoadingState(true);
121
+ _a.label = 1;
122
+ case 1:
123
+ _a.trys.push([1, 3, 4, 5]);
124
+ return [4 /*yield*/, fetchCommentReactions({
125
+ commentId: commentId,
126
+ page: page,
127
+ limit: limit,
128
+ reactionType: reactionType,
129
+ sortDir: sortDir,
130
+ })];
131
+ case 2:
132
+ response = _a.sent();
133
+ if (response) {
134
+ newReactions_1 = response.data, pagination = response.pagination;
135
+ setReactions(function (prevReactions) { return __spreadArray(__spreadArray([], prevReactions, true), newReactions_1, true); });
136
+ hasMore.current = pagination.hasMore;
137
+ setHasMoreState(pagination.hasMore);
138
+ }
139
+ return [3 /*break*/, 5];
140
+ case 3:
141
+ err_2 = _a.sent();
142
+ handleError(err_2, "Loading more reactions failed:");
143
+ return [3 /*break*/, 5];
144
+ case 4:
145
+ loading.current = false;
146
+ setLoadingState(false);
147
+ return [7 /*endfinally*/];
148
+ case 5: return [2 /*return*/];
149
+ }
150
+ });
151
+ }); };
152
+ if (page > 1 && hasMore.current && !loading.current) {
153
+ loadMoreReactions();
154
+ }
155
+ }, [page, fetchCommentReactions, commentId, limit, reactionType, sortDir]);
156
+ return {
157
+ reactions: reactions,
158
+ loading: loadingState,
159
+ hasMore: hasMoreState,
160
+ loadMore: loadMore,
161
+ refetch: resetReactions,
162
+ };
163
+ }
164
+ export default useFetchCommentReactionsWrapper;
165
+ //# sourceMappingURL=useFetchCommentReactionsWrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFetchCommentReactionsWrapper.js","sourceRoot":"","sources":["../../../../src/hooks/reactions/useFetchCommentReactionsWrapper.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { Reaction, ReactionType } from "../../interfaces/models/Reaction";
2
+ import { PaginatedResponse } from "../../interfaces/IPaginatedResponse";
3
+ declare function useFetchEntityReactions(): (props: {
4
+ entityId: string;
5
+ page: number;
6
+ limit?: number;
7
+ reactionType?: ReactionType;
8
+ sortDir?: "asc" | "desc";
9
+ }) => Promise<PaginatedResponse<Reaction>>;
10
+ export default useFetchEntityReactions;
@@ -35,32 +35,45 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
35
35
  }
36
36
  };
37
37
  import { useCallback } from "react";
38
- import useAxiosPrivate from "../../config/useAxiosPrivate";
39
38
  import useProject from "../projects/useProject";
40
- function useDownvoteEntity() {
39
+ import axios from "../../config/axios";
40
+ function useFetchEntityReactions() {
41
41
  var _this = this;
42
- var axios = useAxiosPrivate();
43
42
  var projectId = useProject().projectId;
44
- var downvoteEntity = useCallback(function (_a) { return __awaiter(_this, [_a], void 0, function (_b) {
45
- var response;
46
- var entityId = _b.entityId;
43
+ var fetchEntityReactions = useCallback(function (props) { return __awaiter(_this, void 0, void 0, function () {
44
+ var entityId, page, _a, limit, reactionType, _b, sortDir, params, response;
47
45
  return __generator(this, function (_c) {
48
46
  switch (_c.label) {
49
47
  case 0:
48
+ entityId = props.entityId, page = props.page, _a = props.limit, limit = _a === void 0 ? 20 : _a, reactionType = props.reactionType, _b = props.sortDir, sortDir = _b === void 0 ? "desc" : _b;
49
+ if (page === 0) {
50
+ throw new Error("Can't fetch reactions with page 0");
51
+ }
52
+ if (limit === 0) {
53
+ throw new Error("Can't fetch with limit 0");
54
+ }
55
+ if (!projectId) {
56
+ throw new Error("No project specified");
57
+ }
50
58
  if (!entityId) {
51
59
  throw new Error("No entity ID provided");
52
60
  }
53
- if (!projectId) {
54
- throw new Error("No projectId available");
61
+ params = {
62
+ page: page,
63
+ limit: limit,
64
+ sortDir: sortDir,
65
+ };
66
+ if (reactionType) {
67
+ params.reactionType = reactionType;
55
68
  }
56
- return [4 /*yield*/, axios.patch("/".concat(projectId, "/entities/").concat(entityId, "/downvote"), {}, { withCredentials: true })];
69
+ return [4 /*yield*/, axios.get("/".concat(projectId, "/entities/").concat(entityId, "/reactions"), { params: params })];
57
70
  case 1:
58
71
  response = _c.sent();
59
72
  return [2 /*return*/, response.data];
60
73
  }
61
74
  });
62
- }); }, [axios, projectId]);
63
- return downvoteEntity;
75
+ }); }, [projectId]);
76
+ return fetchEntityReactions;
64
77
  }
65
- export default useDownvoteEntity;
66
- //# sourceMappingURL=useDownvoteEntity.js.map
78
+ export default useFetchEntityReactions;
79
+ //# sourceMappingURL=useFetchEntityReactions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFetchEntityReactions.js","sourceRoot":"","sources":["../../../../src/hooks/reactions/useFetchEntityReactions.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAGpC,OAAO,UAAU,MAAM,wBAAwB,CAAC;AAChD,OAAO,KAAK,MAAM,oBAAoB,CAAC;AAEvC,SAAS,uBAAuB;IAAhC,iBAkDC;IAjDS,IAAA,SAAS,GAAK,UAAU,EAAE,UAAjB,CAAkB;IAEnC,IAAM,oBAAoB,GAAG,WAAW,CACtC,UAAO,KAMN;;;;;oBACS,QAAQ,GAAuD,KAAK,SAA5D,EAAE,IAAI,GAAiD,KAAK,KAAtD,EAAE,KAA+C,KAAK,MAA1C,EAAV,KAAK,mBAAG,EAAE,KAAA,EAAE,YAAY,GAAuB,KAAK,aAA5B,EAAE,KAAqB,KAAK,QAAV,EAAhB,OAAO,mBAAG,MAAM,KAAA,CAAW;oBAE7E,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;wBACf,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;oBACvD,CAAC;oBAED,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;wBAChB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;oBAC9C,CAAC;oBAED,IAAI,CAAC,SAAS,EAAE,CAAC;wBACf,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;oBAC1C,CAAC;oBAED,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACd,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;oBAC3C,CAAC;oBAEK,MAAM,GAAwB;wBAClC,IAAI,MAAA;wBACJ,KAAK,OAAA;wBACL,OAAO,SAAA;qBACR,CAAC;oBAEF,IAAI,YAAY,EAAE,CAAC;wBACjB,MAAM,CAAC,YAAY,GAAG,YAAY,CAAC;oBACrC,CAAC;oBAEgB,qBAAM,KAAK,CAAC,GAAG,CAC9B,WAAI,SAAS,uBAAa,QAAQ,eAAY,EAC9C,EAAE,MAAM,QAAA,EAAE,CACX,EAAA;;oBAHK,QAAQ,GAAG,SAGhB;oBAED,sBAAO,QAAQ,CAAC,IAAI,EAAC;;;SACtB,EACD,CAAC,SAAS,CAAC,CACZ,CAAC;IAEF,OAAO,oBAAoB,CAAC;AAC9B,CAAC;AAED,eAAe,uBAAuB,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { Reaction, ReactionType } from "../../interfaces/models/Reaction";
2
+ export interface UseFetchEntityReactionsWrapperProps {
3
+ entityId: string;
4
+ limit?: number;
5
+ reactionType?: ReactionType;
6
+ sortDir?: "asc" | "desc";
7
+ autoFetch?: boolean;
8
+ }
9
+ export interface UseFetchEntityReactionsWrapperValues {
10
+ reactions: Reaction[];
11
+ loading: boolean;
12
+ hasMore: boolean;
13
+ loadMore: () => void;
14
+ refetch: () => void;
15
+ }
16
+ declare function useFetchEntityReactionsWrapper(props: UseFetchEntityReactionsWrapperProps): UseFetchEntityReactionsWrapperValues;
17
+ export default useFetchEntityReactionsWrapper;
@@ -0,0 +1,165 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __generator = (this && this.__generator) || function (thisArg, body) {
11
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
12
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
+ function verb(n) { return function (v) { return step([n, v]); }; }
14
+ function step(op) {
15
+ if (f) throw new TypeError("Generator is already executing.");
16
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
17
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
+ if (y = 0, t) op = [op[0] & 2, t.value];
19
+ switch (op[0]) {
20
+ case 0: case 1: t = op; break;
21
+ case 4: _.label++; return { value: op[1], done: false };
22
+ case 5: _.label++; y = op[1]; op = [0]; continue;
23
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
+ default:
25
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
+ if (t[2]) _.ops.pop();
30
+ _.trys.pop(); continue;
31
+ }
32
+ op = body.call(thisArg, _);
33
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
+ }
36
+ };
37
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
38
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
39
+ if (ar || !(i in from)) {
40
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
41
+ ar[i] = from[i];
42
+ }
43
+ }
44
+ return to.concat(ar || Array.prototype.slice.call(from));
45
+ };
46
+ import { useCallback, useEffect, useRef, useState } from "react";
47
+ import useFetchEntityReactions from "./useFetchEntityReactions";
48
+ import { handleError } from "../../utils/handleError";
49
+ function useFetchEntityReactionsWrapper(props) {
50
+ var _this = this;
51
+ var entityId = props.entityId, _a = props.limit, limit = _a === void 0 ? 20 : _a, reactionType = props.reactionType, _b = props.sortDir, sortDir = _b === void 0 ? "desc" : _b, _c = props.autoFetch, autoFetch = _c === void 0 ? false : _c;
52
+ var fetchEntityReactions = useFetchEntityReactions();
53
+ var loading = useRef(false);
54
+ var _d = useState(false), loadingState = _d[0], setLoadingState = _d[1];
55
+ var hasMore = useRef(true);
56
+ var _e = useState(true), hasMoreState = _e[0], setHasMoreState = _e[1];
57
+ var _f = useState(1), page = _f[0], setPage = _f[1];
58
+ var _g = useState([]), reactions = _g[0], setReactions = _g[1];
59
+ var resetReactions = useCallback(function () { return __awaiter(_this, void 0, void 0, function () {
60
+ var response, newReactions, pagination, err_1;
61
+ return __generator(this, function (_a) {
62
+ switch (_a.label) {
63
+ case 0:
64
+ if (!entityId) {
65
+ return [2 /*return*/];
66
+ }
67
+ _a.label = 1;
68
+ case 1:
69
+ _a.trys.push([1, 3, 4, 5]);
70
+ loading.current = true;
71
+ setLoadingState(true);
72
+ hasMore.current = true;
73
+ setHasMoreState(true);
74
+ setPage(1);
75
+ return [4 /*yield*/, fetchEntityReactions({
76
+ entityId: entityId,
77
+ page: 1,
78
+ limit: limit,
79
+ reactionType: reactionType,
80
+ sortDir: sortDir,
81
+ })];
82
+ case 2:
83
+ response = _a.sent();
84
+ if (response) {
85
+ newReactions = response.data, pagination = response.pagination;
86
+ setReactions(newReactions);
87
+ hasMore.current = pagination.hasMore;
88
+ setHasMoreState(pagination.hasMore);
89
+ }
90
+ return [3 /*break*/, 5];
91
+ case 3:
92
+ err_1 = _a.sent();
93
+ handleError(err_1, "Failed to reset reactions:");
94
+ return [3 /*break*/, 5];
95
+ case 4:
96
+ loading.current = false;
97
+ setLoadingState(false);
98
+ return [7 /*endfinally*/];
99
+ case 5: return [2 /*return*/];
100
+ }
101
+ });
102
+ }); }, [fetchEntityReactions, limit, reactionType, sortDir, entityId]);
103
+ var loadMore = function () {
104
+ if (loading.current || !hasMore.current)
105
+ return;
106
+ setPage(function (prevPage) { return prevPage + 1; });
107
+ };
108
+ useEffect(function () {
109
+ if (autoFetch) {
110
+ resetReactions();
111
+ }
112
+ }, [resetReactions, autoFetch]);
113
+ useEffect(function () {
114
+ var loadMoreReactions = function () { return __awaiter(_this, void 0, void 0, function () {
115
+ var response, newReactions_1, pagination, err_2;
116
+ return __generator(this, function (_a) {
117
+ switch (_a.label) {
118
+ case 0:
119
+ loading.current = true;
120
+ setLoadingState(true);
121
+ _a.label = 1;
122
+ case 1:
123
+ _a.trys.push([1, 3, 4, 5]);
124
+ return [4 /*yield*/, fetchEntityReactions({
125
+ entityId: entityId,
126
+ page: page,
127
+ limit: limit,
128
+ reactionType: reactionType,
129
+ sortDir: sortDir,
130
+ })];
131
+ case 2:
132
+ response = _a.sent();
133
+ if (response) {
134
+ newReactions_1 = response.data, pagination = response.pagination;
135
+ setReactions(function (prevReactions) { return __spreadArray(__spreadArray([], prevReactions, true), newReactions_1, true); });
136
+ hasMore.current = pagination.hasMore;
137
+ setHasMoreState(pagination.hasMore);
138
+ }
139
+ return [3 /*break*/, 5];
140
+ case 3:
141
+ err_2 = _a.sent();
142
+ handleError(err_2, "Loading more reactions failed:");
143
+ return [3 /*break*/, 5];
144
+ case 4:
145
+ loading.current = false;
146
+ setLoadingState(false);
147
+ return [7 /*endfinally*/];
148
+ case 5: return [2 /*return*/];
149
+ }
150
+ });
151
+ }); };
152
+ if (page > 1 && hasMore.current && !loading.current) {
153
+ loadMoreReactions();
154
+ }
155
+ }, [page, fetchEntityReactions, entityId, limit, reactionType, sortDir]);
156
+ return {
157
+ reactions: reactions,
158
+ loading: loadingState,
159
+ hasMore: hasMoreState,
160
+ loadMore: loadMore,
161
+ refetch: resetReactions,
162
+ };
163
+ }
164
+ export default useFetchEntityReactionsWrapper;
165
+ //# sourceMappingURL=useFetchEntityReactionsWrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFetchEntityReactionsWrapper.js","sourceRoot":"","sources":["../../../../src/hooks/reactions/useFetchEntityReactionsWrapper.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { Entity } from "../../interfaces/models/Entity";
2
+ import { Comment } from "../../interfaces/models/Comment";
3
+ import { ReactionType } from "../../interfaces/models/Reaction";
4
+ export interface UseReactionToggleValues {
5
+ toggleReaction: (props: {
6
+ targetType: "Entity" | "Comment";
7
+ targetId: string;
8
+ reactionType: ReactionType;
9
+ currentReaction: ReactionType | null | undefined;
10
+ }) => Promise<Entity | Comment | null>;
11
+ loading: boolean;
12
+ }
13
+ declare function useReactionToggle(): UseReactionToggleValues;
14
+ export default useReactionToggle;
@@ -0,0 +1,88 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __generator = (this && this.__generator) || function (thisArg, body) {
11
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
12
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
+ function verb(n) { return function (v) { return step([n, v]); }; }
14
+ function step(op) {
15
+ if (f) throw new TypeError("Generator is already executing.");
16
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
17
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
+ if (y = 0, t) op = [op[0] & 2, t.value];
19
+ switch (op[0]) {
20
+ case 0: case 1: t = op; break;
21
+ case 4: _.label++; return { value: op[1], done: false };
22
+ case 5: _.label++; y = op[1]; op = [0]; continue;
23
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
+ default:
25
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
+ if (t[2]) _.ops.pop();
30
+ _.trys.pop(); continue;
31
+ }
32
+ op = body.call(thisArg, _);
33
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
+ }
36
+ };
37
+ import { useCallback, useState } from "react";
38
+ import useAddReaction from "./useAddReaction";
39
+ import useRemoveReaction from "./useRemoveReaction";
40
+ import { handleError } from "../../utils/handleError";
41
+ function useReactionToggle() {
42
+ var _this = this;
43
+ var addReaction = useAddReaction();
44
+ var removeReaction = useRemoveReaction();
45
+ var _a = useState(false), loading = _a[0], setLoading = _a[1];
46
+ var toggleReaction = useCallback(function (props) { return __awaiter(_this, void 0, void 0, function () {
47
+ var targetType, targetId, reactionType, currentReaction, result_1, result, err_1;
48
+ return __generator(this, function (_a) {
49
+ switch (_a.label) {
50
+ case 0:
51
+ targetType = props.targetType, targetId = props.targetId, reactionType = props.reactionType, currentReaction = props.currentReaction;
52
+ if (loading)
53
+ return [2 /*return*/, null];
54
+ _a.label = 1;
55
+ case 1:
56
+ _a.trys.push([1, 5, 6, 7]);
57
+ setLoading(true);
58
+ if (!(currentReaction === reactionType)) return [3 /*break*/, 3];
59
+ return [4 /*yield*/, removeReaction({ targetType: targetType, targetId: targetId })];
60
+ case 2:
61
+ result_1 = _a.sent();
62
+ return [2 /*return*/, result_1];
63
+ case 3: return [4 /*yield*/, addReaction({
64
+ targetType: targetType,
65
+ targetId: targetId,
66
+ reactionType: reactionType,
67
+ })];
68
+ case 4:
69
+ result = _a.sent();
70
+ return [2 /*return*/, result];
71
+ case 5:
72
+ err_1 = _a.sent();
73
+ handleError(err_1, "Failed to toggle reaction:");
74
+ return [2 /*return*/, null];
75
+ case 6:
76
+ setLoading(false);
77
+ return [7 /*endfinally*/];
78
+ case 7: return [2 /*return*/];
79
+ }
80
+ });
81
+ }); }, [addReaction, removeReaction, loading]);
82
+ return {
83
+ toggleReaction: toggleReaction,
84
+ loading: loading,
85
+ };
86
+ }
87
+ export default useReactionToggle;
88
+ //# sourceMappingURL=useReactionToggle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useReactionToggle.js","sourceRoot":"","sources":["../../../../src/hooks/reactions/useReactionToggle.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAI9C,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAYtD,SAAS,iBAAiB;IAA1B,iBA6CC;IA5CC,IAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,IAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;IACrC,IAAA,KAAwB,QAAQ,CAAC,KAAK,CAAC,EAAtC,OAAO,QAAA,EAAE,UAAU,QAAmB,CAAC;IAE9C,IAAM,cAAc,GAAG,WAAW,CAChC,UAAO,KAKN;;;;;oBACS,UAAU,GAA8C,KAAK,WAAnD,EAAE,QAAQ,GAAoC,KAAK,SAAzC,EAAE,YAAY,GAAsB,KAAK,aAA3B,EAAE,eAAe,GAAK,KAAK,gBAAV,CAAW;oBACtE,IAAI,OAAO;wBAAE,sBAAO,IAAI,EAAC;;;;oBAGvB,UAAU,CAAC,IAAI,CAAC,CAAC;yBAGb,CAAA,eAAe,KAAK,YAAY,CAAA,EAAhC,wBAAgC;oBACnB,qBAAM,cAAc,CAAC,EAAE,UAAU,YAAA,EAAE,QAAQ,UAAA,EAAE,CAAC,EAAA;;oBAAvD,WAAS,SAA8C;oBAC7D,sBAAO,QAAM,EAAC;wBAID,qBAAM,WAAW,CAAC;wBAC/B,UAAU,YAAA;wBACV,QAAQ,UAAA;wBACR,YAAY,cAAA;qBACb,CAAC,EAAA;;oBAJI,MAAM,GAAG,SAIb;oBACF,sBAAO,MAAM,EAAC;;;oBAEd,WAAW,CAAC,KAAG,EAAE,4BAA4B,CAAC,CAAC;oBAC/C,sBAAO,IAAI,EAAC;;oBAEZ,UAAU,CAAC,KAAK,CAAC,CAAC;;;;;SAErB,EACD,CAAC,WAAW,EAAE,cAAc,EAAE,OAAO,CAAC,CACvC,CAAC;IAEF,OAAO;QACL,cAAc,gBAAA;QACd,OAAO,SAAA;KACR,CAAC;AACJ,CAAC;AAED,eAAe,iBAAiB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { Entity } from "../../interfaces/models/Entity";
2
+ import { Comment } from "../../interfaces/models/Comment";
3
+ declare function useRemoveReaction(): (props: {
4
+ targetType: "Entity" | "Comment";
5
+ targetId: string;
6
+ }) => Promise<Entity | Comment>;
7
+ export default useRemoveReaction;
@@ -37,30 +37,33 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
37
37
  import { useCallback } from "react";
38
38
  import useAxiosPrivate from "../../config/useAxiosPrivate";
39
39
  import useProject from "../projects/useProject";
40
- function useRemoveCommentDownvote() {
40
+ function useRemoveReaction() {
41
41
  var _this = this;
42
42
  var axios = useAxiosPrivate();
43
43
  var projectId = useProject().projectId;
44
- var removeCommentDownvote = useCallback(function (_a) { return __awaiter(_this, [_a], void 0, function (_b) {
45
- var response;
46
- var commentId = _b.commentId;
47
- return __generator(this, function (_c) {
48
- switch (_c.label) {
44
+ var removeReaction = useCallback(function (props) { return __awaiter(_this, void 0, void 0, function () {
45
+ var targetType, targetId, endpoint, response;
46
+ return __generator(this, function (_a) {
47
+ switch (_a.label) {
49
48
  case 0:
50
- if (!commentId) {
51
- throw new Error("No comment ID passed");
49
+ targetType = props.targetType, targetId = props.targetId;
50
+ if (!targetId) {
51
+ throw new Error("No target ID provided");
52
52
  }
53
53
  if (!projectId) {
54
54
  throw new Error("No project specified");
55
55
  }
56
- return [4 /*yield*/, axios.patch("/".concat(projectId, "/comments/").concat(commentId, "/remove-downvote"))];
56
+ endpoint = targetType === "Entity"
57
+ ? "/".concat(projectId, "/entities/").concat(targetId, "/reactions")
58
+ : "/".concat(projectId, "/comments/").concat(targetId, "/reactions");
59
+ return [4 /*yield*/, axios.delete(endpoint)];
57
60
  case 1:
58
- response = _c.sent();
61
+ response = _a.sent();
59
62
  return [2 /*return*/, response.data];
60
63
  }
61
64
  });
62
65
  }); }, [axios, projectId]);
63
- return removeCommentDownvote;
66
+ return removeReaction;
64
67
  }
65
- export default useRemoveCommentDownvote;
66
- //# sourceMappingURL=useRemoveCommentDownvote.js.map
68
+ export default useRemoveReaction;
69
+ //# sourceMappingURL=useRemoveReaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRemoveReaction.js","sourceRoot":"","sources":["../../../../src/hooks/reactions/useRemoveReaction.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,eAAe,MAAM,8BAA8B,CAAC;AAC3D,OAAO,UAAU,MAAM,wBAAwB,CAAC;AAIhD,SAAS,iBAAiB;IAA1B,iBAiCC;IAhCC,IAAM,KAAK,GAAG,eAAe,EAAE,CAAC;IACxB,IAAA,SAAS,GAAK,UAAU,EAAE,UAAjB,CAAkB;IAEnC,IAAM,cAAc,GAAG,WAAW,CAChC,UAAO,KAGN;;;;;oBACS,UAAU,GAAe,KAAK,WAApB,EAAE,QAAQ,GAAK,KAAK,SAAV,CAAW;oBAEvC,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACd,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;oBAC3C,CAAC;oBAED,IAAI,CAAC,SAAS,EAAE,CAAC;wBACf,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;oBAC1C,CAAC;oBAGK,QAAQ,GACZ,UAAU,KAAK,QAAQ;wBACrB,CAAC,CAAC,WAAI,SAAS,uBAAa,QAAQ,eAAY;wBAChD,CAAC,CAAC,WAAI,SAAS,uBAAa,QAAQ,eAAY,CAAC;oBAEpC,qBAAM,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAA;;oBAAvC,QAAQ,GAAG,SAA4B;oBAE7C,sBAAO,QAAQ,CAAC,IAAwB,EAAC;;;SAC1C,EACD,CAAC,KAAK,EAAE,SAAS,CAAC,CACnB,CAAC;IAEF,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,eAAe,iBAAiB,CAAC"}