@replyke/core 7.0.0-beta.25 → 7.0.0-beta.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/hooks/reactions/index.d.ts +1 -1
- package/dist/cjs/hooks/reactions/useReactionToggle.d.ts +7 -4
- package/dist/cjs/hooks/reactions/useReactionToggle.js +45 -22
- package/dist/cjs/hooks/reactions/useReactionToggle.js.map +1 -1
- package/dist/esm/hooks/reactions/index.d.ts +1 -1
- package/dist/esm/hooks/reactions/useReactionToggle.d.ts +7 -4
- package/dist/esm/hooks/reactions/useReactionToggle.js +46 -23
- package/dist/esm/hooks/reactions/useReactionToggle.js.map +1 -1
- package/package.json +1 -1
|
@@ -7,4 +7,4 @@ export { default as useRemoveReaction } from "./useRemoveReaction";
|
|
|
7
7
|
export { default as useReactionToggle } from "./useReactionToggle";
|
|
8
8
|
export type { UseFetchEntityReactionsWrapperProps, UseFetchEntityReactionsWrapperValues, } from "./useFetchEntityReactionsWrapper";
|
|
9
9
|
export type { UseFetchCommentReactionsWrapperProps, UseFetchCommentReactionsWrapperValues, } from "./useFetchCommentReactionsWrapper";
|
|
10
|
-
export type { UseReactionToggleValues } from "./useReactionToggle";
|
|
10
|
+
export type { UseReactionToggleProps, UseReactionToggleValues, } from "./useReactionToggle";
|
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
import { Entity } from "../../interfaces/models/Entity";
|
|
2
2
|
import { Comment } from "../../interfaces/models/Comment";
|
|
3
3
|
import { ReactionType } from "../../interfaces/models/Reaction";
|
|
4
|
+
export interface UseReactionToggleProps {
|
|
5
|
+
targetType: "Entity" | "Comment";
|
|
6
|
+
targetId: string;
|
|
7
|
+
initialReaction?: ReactionType | null;
|
|
8
|
+
}
|
|
4
9
|
export interface UseReactionToggleValues {
|
|
10
|
+
currentReaction: ReactionType | null;
|
|
5
11
|
toggleReaction: (props: {
|
|
6
|
-
targetType: "Entity" | "Comment";
|
|
7
|
-
targetId: string;
|
|
8
12
|
reactionType: ReactionType;
|
|
9
|
-
currentReaction: ReactionType | null | undefined;
|
|
10
13
|
}) => Promise<Entity | Comment | null>;
|
|
11
14
|
loading: boolean;
|
|
12
15
|
}
|
|
13
|
-
declare function useReactionToggle(): UseReactionToggleValues;
|
|
16
|
+
declare function useReactionToggle({ targetType, targetId, initialReaction, }: UseReactionToggleProps): UseReactionToggleValues;
|
|
14
17
|
export default useReactionToggle;
|
|
@@ -43,48 +43,71 @@ var react_1 = require("react");
|
|
|
43
43
|
var useAddReaction_1 = __importDefault(require("./useAddReaction"));
|
|
44
44
|
var useRemoveReaction_1 = __importDefault(require("./useRemoveReaction"));
|
|
45
45
|
var handleError_1 = require("../../utils/handleError");
|
|
46
|
-
function useReactionToggle() {
|
|
46
|
+
function useReactionToggle(_a) {
|
|
47
47
|
var _this = this;
|
|
48
|
+
var targetType = _a.targetType, targetId = _a.targetId, initialReaction = _a.initialReaction;
|
|
48
49
|
var addReaction = (0, useAddReaction_1.default)();
|
|
49
50
|
var removeReaction = (0, useRemoveReaction_1.default)();
|
|
50
|
-
var
|
|
51
|
+
var _b = (0, react_1.useState)(initialReaction !== null && initialReaction !== void 0 ? initialReaction : null), currentReaction = _b[0], setCurrentReaction = _b[1];
|
|
52
|
+
var _c = (0, react_1.useState)(false), loading = _c[0], setLoading = _c[1];
|
|
53
|
+
// Reset state when target changes
|
|
54
|
+
(0, react_1.useEffect)(function () {
|
|
55
|
+
setCurrentReaction(initialReaction !== null && initialReaction !== void 0 ? initialReaction : null);
|
|
56
|
+
}, [targetId, initialReaction]);
|
|
51
57
|
var toggleReaction = (0, react_1.useCallback)(function (props) { return __awaiter(_this, void 0, void 0, function () {
|
|
52
|
-
var
|
|
53
|
-
|
|
54
|
-
|
|
58
|
+
var reactionType, originalReaction, newReaction, result, _a, err_1;
|
|
59
|
+
var _b;
|
|
60
|
+
return __generator(this, function (_c) {
|
|
61
|
+
switch (_c.label) {
|
|
55
62
|
case 0:
|
|
56
|
-
|
|
63
|
+
reactionType = props.reactionType;
|
|
64
|
+
// Guard: prevent concurrent operations
|
|
57
65
|
if (loading)
|
|
58
66
|
return [2 /*return*/, null];
|
|
59
|
-
|
|
67
|
+
originalReaction = currentReaction;
|
|
68
|
+
newReaction = currentReaction === reactionType ? null : reactionType;
|
|
69
|
+
// OPTIMISTIC: Update UI immediately
|
|
70
|
+
setCurrentReaction(newReaction);
|
|
71
|
+
_c.label = 1;
|
|
60
72
|
case 1:
|
|
61
|
-
|
|
73
|
+
_c.trys.push([1, 6, 7, 8]);
|
|
62
74
|
setLoading(true);
|
|
63
|
-
if (!(
|
|
75
|
+
if (!(newReaction === null)) return [3 /*break*/, 3];
|
|
64
76
|
return [4 /*yield*/, removeReaction({ targetType: targetType, targetId: targetId })];
|
|
65
77
|
case 2:
|
|
66
|
-
|
|
67
|
-
return [
|
|
68
|
-
case 3: return [4 /*yield*/, addReaction({
|
|
69
|
-
targetType: targetType,
|
|
70
|
-
targetId: targetId,
|
|
71
|
-
reactionType: reactionType,
|
|
72
|
-
})];
|
|
78
|
+
_a = _c.sent();
|
|
79
|
+
return [3 /*break*/, 5];
|
|
80
|
+
case 3: return [4 /*yield*/, addReaction({ targetType: targetType, targetId: targetId, reactionType: reactionType })];
|
|
73
81
|
case 4:
|
|
74
|
-
|
|
75
|
-
|
|
82
|
+
_a = _c.sent();
|
|
83
|
+
_c.label = 5;
|
|
76
84
|
case 5:
|
|
77
|
-
|
|
85
|
+
result = _a;
|
|
86
|
+
// Update with server truth (may differ from optimistic)
|
|
87
|
+
setCurrentReaction((_b = result.userReaction) !== null && _b !== void 0 ? _b : null);
|
|
88
|
+
return [2 /*return*/, result];
|
|
89
|
+
case 6:
|
|
90
|
+
err_1 = _c.sent();
|
|
91
|
+
// REVERT: Restore original on error
|
|
92
|
+
setCurrentReaction(originalReaction);
|
|
78
93
|
(0, handleError_1.handleError)(err_1, "Failed to toggle reaction:");
|
|
79
94
|
return [2 /*return*/, null];
|
|
80
|
-
case
|
|
95
|
+
case 7:
|
|
81
96
|
setLoading(false);
|
|
82
97
|
return [7 /*endfinally*/];
|
|
83
|
-
case
|
|
98
|
+
case 8: return [2 /*return*/];
|
|
84
99
|
}
|
|
85
100
|
});
|
|
86
|
-
}); }, [
|
|
101
|
+
}); }, [
|
|
102
|
+
loading,
|
|
103
|
+
currentReaction,
|
|
104
|
+
targetType,
|
|
105
|
+
targetId,
|
|
106
|
+
addReaction,
|
|
107
|
+
removeReaction,
|
|
108
|
+
]);
|
|
87
109
|
return {
|
|
110
|
+
currentReaction: currentReaction,
|
|
88
111
|
toggleReaction: toggleReaction,
|
|
89
112
|
loading: loading,
|
|
90
113
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useReactionToggle.js","sourceRoot":"","sources":["../../../../src/hooks/reactions/useReactionToggle.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+
|
|
1
|
+
{"version":3,"file":"useReactionToggle.js","sourceRoot":"","sources":["../../../../src/hooks/reactions/useReactionToggle.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAAyD;AAIzD,oEAA8C;AAC9C,0EAAoD;AACpD,uDAAsD;AAgBtD,SAAS,iBAAiB,CAAC,EAIF;IAJzB,iBAyEC;QAxEC,UAAU,gBAAA,EACV,QAAQ,cAAA,EACR,eAAe,qBAAA;IAEf,IAAM,WAAW,GAAG,IAAA,wBAAc,GAAE,CAAC;IACrC,IAAM,cAAc,GAAG,IAAA,2BAAiB,GAAE,CAAC;IAErC,IAAA,KAAwC,IAAA,gBAAQ,EACpD,eAAe,aAAf,eAAe,cAAf,eAAe,GAAI,IAAI,CACxB,EAFM,eAAe,QAAA,EAAE,kBAAkB,QAEzC,CAAC;IACI,IAAA,KAAwB,IAAA,gBAAQ,EAAC,KAAK,CAAC,EAAtC,OAAO,QAAA,EAAE,UAAU,QAAmB,CAAC;IAE9C,kCAAkC;IAClC,IAAA,iBAAS,EAAC;QACR,kBAAkB,CAAC,eAAe,aAAf,eAAe,cAAf,eAAe,GAAI,IAAI,CAAC,CAAC;IAC9C,CAAC,EAAE,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC;IAEhC,IAAM,cAAc,GAAG,IAAA,mBAAW,EAChC,UAAO,KAEN;;;;;;oBACS,YAAY,GAAK,KAAK,aAAV,CAAW;oBAC/B,uCAAuC;oBACvC,IAAI,OAAO;wBAAE,sBAAO,IAAI,EAAC;oBAGnB,gBAAgB,GAAG,eAAe,CAAC;oBAGnC,WAAW,GACf,eAAe,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC;oBAEzD,oCAAoC;oBACpC,kBAAkB,CAAC,WAAW,CAAC,CAAC;;;;oBAG9B,UAAU,CAAC,IAAI,CAAC,CAAC;yBAIf,CAAA,WAAW,KAAK,IAAI,CAAA,EAApB,wBAAoB;oBAChB,qBAAM,cAAc,CAAC,EAAE,UAAU,YAAA,EAAE,QAAQ,UAAA,EAAE,CAAC,EAAA;;oBAA9C,KAAA,SAA8C,CAAA;;wBAC9C,qBAAM,WAAW,CAAC,EAAE,UAAU,YAAA,EAAE,QAAQ,UAAA,EAAE,YAAY,cAAA,EAAE,CAAC,EAAA;;oBAAzD,KAAA,SAAyD,CAAA;;;oBAHzD,MAAM,KAGmD;oBAE/D,wDAAwD;oBACxD,kBAAkB,CAAC,MAAA,MAAM,CAAC,YAAY,mCAAI,IAAI,CAAC,CAAC;oBAEhD,sBAAO,MAAM,EAAC;;;oBAEd,oCAAoC;oBACpC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;oBACrC,IAAA,yBAAW,EAAC,KAAG,EAAE,4BAA4B,CAAC,CAAC;oBAC/C,sBAAO,IAAI,EAAC;;oBAEZ,UAAU,CAAC,KAAK,CAAC,CAAC;;;;;SAErB,EACD;QACE,OAAO;QACP,eAAe;QACf,UAAU;QACV,QAAQ;QACR,WAAW;QACX,cAAc;KACf,CACF,CAAC;IAEF,OAAO;QACL,eAAe,iBAAA;QACf,cAAc,gBAAA;QACd,OAAO,SAAA;KACR,CAAC;AACJ,CAAC;AAED,kBAAe,iBAAiB,CAAC"}
|
|
@@ -7,4 +7,4 @@ export { default as useRemoveReaction } from "./useRemoveReaction";
|
|
|
7
7
|
export { default as useReactionToggle } from "./useReactionToggle";
|
|
8
8
|
export type { UseFetchEntityReactionsWrapperProps, UseFetchEntityReactionsWrapperValues, } from "./useFetchEntityReactionsWrapper";
|
|
9
9
|
export type { UseFetchCommentReactionsWrapperProps, UseFetchCommentReactionsWrapperValues, } from "./useFetchCommentReactionsWrapper";
|
|
10
|
-
export type { UseReactionToggleValues } from "./useReactionToggle";
|
|
10
|
+
export type { UseReactionToggleProps, UseReactionToggleValues, } from "./useReactionToggle";
|
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
import { Entity } from "../../interfaces/models/Entity";
|
|
2
2
|
import { Comment } from "../../interfaces/models/Comment";
|
|
3
3
|
import { ReactionType } from "../../interfaces/models/Reaction";
|
|
4
|
+
export interface UseReactionToggleProps {
|
|
5
|
+
targetType: "Entity" | "Comment";
|
|
6
|
+
targetId: string;
|
|
7
|
+
initialReaction?: ReactionType | null;
|
|
8
|
+
}
|
|
4
9
|
export interface UseReactionToggleValues {
|
|
10
|
+
currentReaction: ReactionType | null;
|
|
5
11
|
toggleReaction: (props: {
|
|
6
|
-
targetType: "Entity" | "Comment";
|
|
7
|
-
targetId: string;
|
|
8
12
|
reactionType: ReactionType;
|
|
9
|
-
currentReaction: ReactionType | null | undefined;
|
|
10
13
|
}) => Promise<Entity | Comment | null>;
|
|
11
14
|
loading: boolean;
|
|
12
15
|
}
|
|
13
|
-
declare function useReactionToggle(): UseReactionToggleValues;
|
|
16
|
+
declare function useReactionToggle({ targetType, targetId, initialReaction, }: UseReactionToggleProps): UseReactionToggleValues;
|
|
14
17
|
export default useReactionToggle;
|
|
@@ -34,52 +34,75 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
34
34
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
35
35
|
}
|
|
36
36
|
};
|
|
37
|
-
import { useCallback, useState } from "react";
|
|
37
|
+
import { useCallback, useState, useEffect } from "react";
|
|
38
38
|
import useAddReaction from "./useAddReaction";
|
|
39
39
|
import useRemoveReaction from "./useRemoveReaction";
|
|
40
40
|
import { handleError } from "../../utils/handleError";
|
|
41
|
-
function useReactionToggle() {
|
|
41
|
+
function useReactionToggle(_a) {
|
|
42
42
|
var _this = this;
|
|
43
|
+
var targetType = _a.targetType, targetId = _a.targetId, initialReaction = _a.initialReaction;
|
|
43
44
|
var addReaction = useAddReaction();
|
|
44
45
|
var removeReaction = useRemoveReaction();
|
|
45
|
-
var
|
|
46
|
+
var _b = useState(initialReaction !== null && initialReaction !== void 0 ? initialReaction : null), currentReaction = _b[0], setCurrentReaction = _b[1];
|
|
47
|
+
var _c = useState(false), loading = _c[0], setLoading = _c[1];
|
|
48
|
+
// Reset state when target changes
|
|
49
|
+
useEffect(function () {
|
|
50
|
+
setCurrentReaction(initialReaction !== null && initialReaction !== void 0 ? initialReaction : null);
|
|
51
|
+
}, [targetId, initialReaction]);
|
|
46
52
|
var toggleReaction = useCallback(function (props) { return __awaiter(_this, void 0, void 0, function () {
|
|
47
|
-
var
|
|
48
|
-
|
|
49
|
-
|
|
53
|
+
var reactionType, originalReaction, newReaction, result, _a, err_1;
|
|
54
|
+
var _b;
|
|
55
|
+
return __generator(this, function (_c) {
|
|
56
|
+
switch (_c.label) {
|
|
50
57
|
case 0:
|
|
51
|
-
|
|
58
|
+
reactionType = props.reactionType;
|
|
59
|
+
// Guard: prevent concurrent operations
|
|
52
60
|
if (loading)
|
|
53
61
|
return [2 /*return*/, null];
|
|
54
|
-
|
|
62
|
+
originalReaction = currentReaction;
|
|
63
|
+
newReaction = currentReaction === reactionType ? null : reactionType;
|
|
64
|
+
// OPTIMISTIC: Update UI immediately
|
|
65
|
+
setCurrentReaction(newReaction);
|
|
66
|
+
_c.label = 1;
|
|
55
67
|
case 1:
|
|
56
|
-
|
|
68
|
+
_c.trys.push([1, 6, 7, 8]);
|
|
57
69
|
setLoading(true);
|
|
58
|
-
if (!(
|
|
70
|
+
if (!(newReaction === null)) return [3 /*break*/, 3];
|
|
59
71
|
return [4 /*yield*/, removeReaction({ targetType: targetType, targetId: targetId })];
|
|
60
72
|
case 2:
|
|
61
|
-
|
|
62
|
-
return [
|
|
63
|
-
case 3: return [4 /*yield*/, addReaction({
|
|
64
|
-
targetType: targetType,
|
|
65
|
-
targetId: targetId,
|
|
66
|
-
reactionType: reactionType,
|
|
67
|
-
})];
|
|
73
|
+
_a = _c.sent();
|
|
74
|
+
return [3 /*break*/, 5];
|
|
75
|
+
case 3: return [4 /*yield*/, addReaction({ targetType: targetType, targetId: targetId, reactionType: reactionType })];
|
|
68
76
|
case 4:
|
|
69
|
-
|
|
70
|
-
|
|
77
|
+
_a = _c.sent();
|
|
78
|
+
_c.label = 5;
|
|
71
79
|
case 5:
|
|
72
|
-
|
|
80
|
+
result = _a;
|
|
81
|
+
// Update with server truth (may differ from optimistic)
|
|
82
|
+
setCurrentReaction((_b = result.userReaction) !== null && _b !== void 0 ? _b : null);
|
|
83
|
+
return [2 /*return*/, result];
|
|
84
|
+
case 6:
|
|
85
|
+
err_1 = _c.sent();
|
|
86
|
+
// REVERT: Restore original on error
|
|
87
|
+
setCurrentReaction(originalReaction);
|
|
73
88
|
handleError(err_1, "Failed to toggle reaction:");
|
|
74
89
|
return [2 /*return*/, null];
|
|
75
|
-
case
|
|
90
|
+
case 7:
|
|
76
91
|
setLoading(false);
|
|
77
92
|
return [7 /*endfinally*/];
|
|
78
|
-
case
|
|
93
|
+
case 8: return [2 /*return*/];
|
|
79
94
|
}
|
|
80
95
|
});
|
|
81
|
-
}); }, [
|
|
96
|
+
}); }, [
|
|
97
|
+
loading,
|
|
98
|
+
currentReaction,
|
|
99
|
+
targetType,
|
|
100
|
+
targetId,
|
|
101
|
+
addReaction,
|
|
102
|
+
removeReaction,
|
|
103
|
+
]);
|
|
82
104
|
return {
|
|
105
|
+
currentReaction: currentReaction,
|
|
83
106
|
toggleReaction: toggleReaction,
|
|
84
107
|
loading: loading,
|
|
85
108
|
};
|
|
@@ -1 +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;
|
|
1
|
+
{"version":3,"file":"useReactionToggle.js","sourceRoot":"","sources":["../../../../src/hooks/reactions/useReactionToggle.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIzD,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAgBtD,SAAS,iBAAiB,CAAC,EAIF;IAJzB,iBAyEC;QAxEC,UAAU,gBAAA,EACV,QAAQ,cAAA,EACR,eAAe,qBAAA;IAEf,IAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,IAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;IAErC,IAAA,KAAwC,QAAQ,CACpD,eAAe,aAAf,eAAe,cAAf,eAAe,GAAI,IAAI,CACxB,EAFM,eAAe,QAAA,EAAE,kBAAkB,QAEzC,CAAC;IACI,IAAA,KAAwB,QAAQ,CAAC,KAAK,CAAC,EAAtC,OAAO,QAAA,EAAE,UAAU,QAAmB,CAAC;IAE9C,kCAAkC;IAClC,SAAS,CAAC;QACR,kBAAkB,CAAC,eAAe,aAAf,eAAe,cAAf,eAAe,GAAI,IAAI,CAAC,CAAC;IAC9C,CAAC,EAAE,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC;IAEhC,IAAM,cAAc,GAAG,WAAW,CAChC,UAAO,KAEN;;;;;;oBACS,YAAY,GAAK,KAAK,aAAV,CAAW;oBAC/B,uCAAuC;oBACvC,IAAI,OAAO;wBAAE,sBAAO,IAAI,EAAC;oBAGnB,gBAAgB,GAAG,eAAe,CAAC;oBAGnC,WAAW,GACf,eAAe,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC;oBAEzD,oCAAoC;oBACpC,kBAAkB,CAAC,WAAW,CAAC,CAAC;;;;oBAG9B,UAAU,CAAC,IAAI,CAAC,CAAC;yBAIf,CAAA,WAAW,KAAK,IAAI,CAAA,EAApB,wBAAoB;oBAChB,qBAAM,cAAc,CAAC,EAAE,UAAU,YAAA,EAAE,QAAQ,UAAA,EAAE,CAAC,EAAA;;oBAA9C,KAAA,SAA8C,CAAA;;wBAC9C,qBAAM,WAAW,CAAC,EAAE,UAAU,YAAA,EAAE,QAAQ,UAAA,EAAE,YAAY,cAAA,EAAE,CAAC,EAAA;;oBAAzD,KAAA,SAAyD,CAAA;;;oBAHzD,MAAM,KAGmD;oBAE/D,wDAAwD;oBACxD,kBAAkB,CAAC,MAAA,MAAM,CAAC,YAAY,mCAAI,IAAI,CAAC,CAAC;oBAEhD,sBAAO,MAAM,EAAC;;;oBAEd,oCAAoC;oBACpC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;oBACrC,WAAW,CAAC,KAAG,EAAE,4BAA4B,CAAC,CAAC;oBAC/C,sBAAO,IAAI,EAAC;;oBAEZ,UAAU,CAAC,KAAK,CAAC,CAAC;;;;;SAErB,EACD;QACE,OAAO;QACP,eAAe;QACf,UAAU;QACV,QAAQ;QACR,WAAW;QACX,cAAc;KACf,CACF,CAAC;IAEF,OAAO;QACL,eAAe,iBAAA;QACf,cAAc,gBAAA;QACd,OAAO,SAAA;KACR,CAAC;AACJ,CAAC;AAED,eAAe,iBAAiB,CAAC"}
|