@myrjfa/ui 1.0.9 → 1.1.0
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatMain.d.ts","sourceRoot":"","sources":["../../src/chat/ChatMain.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAYvE,UAAU,aAAa;IACnB,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,wBAAgB,QAAQ,CAAC,EACrB,YAAY,EACZ,aAAa,EACb,MAAM,GACT,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"ChatMain.d.ts","sourceRoot":"","sources":["../../src/chat/ChatMain.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAYvE,UAAU,aAAa;IACnB,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,wBAAgB,QAAQ,CAAC,EACrB,YAAY,EACZ,aAAa,EACb,MAAM,GACT,EAAE,aAAa,2CA6Yf"}
|
package/dist/chat/ChatMain.js
CHANGED
|
@@ -57,7 +57,7 @@ export function ChatMain(_a) {
|
|
|
57
57
|
var _this = this;
|
|
58
58
|
var _b, _c;
|
|
59
59
|
var conversation = _a.conversation, currentUserId = _a.currentUserId, onBack = _a.onBack;
|
|
60
|
-
var _d = useChatContext(), socket = _d.socket, messages = _d.messages, setMessages = _d.setMessages, sendMessage = _d.sendMessage, typingUsers = _d.typingUsers, onlineUsers = _d.onlineUsers, editMessage = _d.editMessage,
|
|
60
|
+
var _d = useChatContext(), socket = _d.socket, messages = _d.messages, setMessages = _d.setMessages, sendMessage = _d.sendMessage, typingUsers = _d.typingUsers, onlineUsers = _d.onlineUsers, editMessage = _d.editMessage, toggleMessageReaction = _d.toggleMessageReaction, deleteMessage = _d.deleteMessage, refreshConversations = _d.refreshConversations;
|
|
61
61
|
var messagesEndRef = useRef(null);
|
|
62
62
|
var messagesContainerRef = useRef(null);
|
|
63
63
|
var _e = React.useState("chat"), activePanel = _e[0], setActivePanel = _e[1];
|
|
@@ -109,7 +109,12 @@ export function ChatMain(_a) {
|
|
|
109
109
|
};
|
|
110
110
|
var handleReact = function (messageId, emoji) {
|
|
111
111
|
if (emoji) {
|
|
112
|
-
|
|
112
|
+
toggleMessageReaction(messageId, emoji);
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
var handleUnreact = function (messageId) {
|
|
116
|
+
if (messageId) {
|
|
117
|
+
toggleMessageReaction(messageId, undefined);
|
|
113
118
|
}
|
|
114
119
|
};
|
|
115
120
|
var handleDelete = function (messageId) {
|
|
@@ -234,6 +239,6 @@ export function ChatMain(_a) {
|
|
|
234
239
|
var showSender = isGroup &&
|
|
235
240
|
msg.senderId !== currentUserId &&
|
|
236
241
|
(!prevMsg || prevMsg.senderId !== msg.senderId);
|
|
237
|
-
return (_jsx("div", { id: "message-".concat(msg._id), className: "transition-all", children: _jsx(MessageBubble, { message: msg,
|
|
242
|
+
return (_jsx("div", { id: "message-".concat(msg._id), className: "transition-all", children: _jsx(MessageBubble, { message: msg, currentUserId: currentUserId, showSender: showSender, senderProfilePic: getSenderImage(msg.senderId), onEdit: handleEdit, onDelete: handleDelete, onReply: function (msg) { return setReplyMessage(msg); }, onReactionAdd: handleReact, onReactionRemove: handleUnreact, onScrollToReply: handleScrollToReply }) }, msg._id));
|
|
238
243
|
}), _jsx("div", { ref: messagesEndRef })] })) }), _jsx(MessageInput, { onSend: handleSend, onTypingStart: handleTypingStart, onTypingStop: handleTypingStop, replyTo: replyMessage, onCancelReply: function () { return setReplyMessage(null); }, onAddMilestone: function () { return setActivePanel("milestones"); }, onAddExpense: function () { return setActivePanel("expenses"); }, activePanel: activePanel })] }), isGroup && (_jsxs(_Fragment, { children: [activePanel === "milestones" && (_jsx("div", { className: "hidden md:flex md:flex-col w-80 border-l border-gray-200 dark:border-gray-700 min-w-0", children: _jsx(MilestonePanel, { conversationId: conversation._id, currentUserId: currentUserId }) })), activePanel === "expenses" && (_jsx("div", { className: "hidden md:flex md:flex-col w-80 border-l border-gray-200 dark:border-gray-700 min-w-0", children: _jsx(ExpensePanel, { conversationId: conversation._id, currentUserId: currentUserId }) }))] })), isGroup && activePanel === "milestones" && (_jsx("div", { className: "md:hidden w-full h-full overflow-hidden", children: _jsx(MilestonePanel, { conversationId: conversation._id, currentUserId: currentUserId, isFullScreen: true }) })), isGroup && activePanel === "expenses" && (_jsx("div", { className: "md:hidden w-full h-full overflow-hidden", children: _jsx(ExpensePanel, { conversationId: conversation._id, currentUserId: currentUserId, isFullScreen: true }) }))] }), _jsx(ParticipantsDialog, { open: isParticipantsOpen, onOpenChange: setIsParticipantsOpen, conversation: conversation, currentUserId: currentUserId, onUpdate: refreshConversations }), isGroup && (_jsx(GroupInfoDialog, { open: isGroupInfoOpen, onOpenChange: setIsGroupInfoOpen, conversation: conversation, onUpdate: refreshConversations })), isGroup && (_jsx(GroupInfoViewDialog, { open: isGroupInfoViewOpen, onOpenChange: setIsGroupInfoViewOpen, conversation: conversation }))] }));
|
|
239
244
|
}
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import type { Message } from "@myrjfa/state/dist/lib/models/chat";
|
|
2
2
|
interface MessageBubbleProps {
|
|
3
3
|
message: Message;
|
|
4
|
-
|
|
4
|
+
currentUserId: string;
|
|
5
5
|
showSender?: boolean;
|
|
6
6
|
senderProfilePic?: string;
|
|
7
7
|
onEdit?: (messageId: string, text: string) => void;
|
|
8
8
|
onDelete?: (messageId: string) => void;
|
|
9
9
|
onReply?: (message: Message) => void;
|
|
10
10
|
onReactionAdd?: (messageId: string, emoji: string) => void;
|
|
11
|
+
onReactionRemove?: (messageId: string) => void;
|
|
11
12
|
onScrollToReply?: (messageId: string) => void;
|
|
12
13
|
}
|
|
13
|
-
export declare function MessageBubble({ message,
|
|
14
|
+
export declare function MessageBubble({ message, currentUserId, showSender, senderProfilePic, onEdit, onDelete, onReply, onReactionAdd, onReactionRemove, onScrollToReply }: MessageBubbleProps): import("react/jsx-runtime").JSX.Element;
|
|
14
15
|
export {};
|
|
15
16
|
//# sourceMappingURL=MessageBubble.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageBubble.d.ts","sourceRoot":"","sources":["../../src/chat/MessageBubble.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAUlE,UAAU,kBAAkB;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,
|
|
1
|
+
{"version":3,"file":"MessageBubble.d.ts","sourceRoot":"","sources":["../../src/chat/MessageBubble.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAUlE,UAAU,kBAAkB;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3D,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CACjD;AAWD,wBAAgB,aAAa,CAAC,EAC1B,OAAO,EACP,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,MAAM,EACN,QAAQ,EACR,OAAO,EACP,aAAa,EACb,gBAAgB,EAChB,eAAe,EAClB,EAAE,kBAAkB,2CAwdpB"}
|
|
@@ -16,7 +16,7 @@ var QUICK_REACTIONS = [
|
|
|
16
16
|
];
|
|
17
17
|
export function MessageBubble(_a) {
|
|
18
18
|
var _b, _c, _d, _e;
|
|
19
|
-
var message = _a.message,
|
|
19
|
+
var message = _a.message, currentUserId = _a.currentUserId, showSender = _a.showSender, senderProfilePic = _a.senderProfilePic, onEdit = _a.onEdit, onDelete = _a.onDelete, onReply = _a.onReply, onReactionAdd = _a.onReactionAdd, onReactionRemove = _a.onReactionRemove, onScrollToReply = _a.onScrollToReply;
|
|
20
20
|
var _f = useState(false), showQuickReactions = _f[0], setShowQuickReactions = _f[1];
|
|
21
21
|
var _g = useState(false), showReactionPicker = _g[0], setShowReactionPicker = _g[1];
|
|
22
22
|
var _h = useState(false), showActionMenu = _h[0], setShowActionMenu = _h[1];
|
|
@@ -26,6 +26,7 @@ export function MessageBubble(_a) {
|
|
|
26
26
|
var mobileMenuRef = useRef(null);
|
|
27
27
|
var mobilePopupRef = useRef(null);
|
|
28
28
|
var messageBubbleRef = useRef(null);
|
|
29
|
+
var isOwn = message.senderId == currentUserId;
|
|
29
30
|
// Close reaction picker when clicking outside
|
|
30
31
|
useEffect(function () {
|
|
31
32
|
var handleClickOutside = function (event) {
|
|
@@ -167,7 +168,11 @@ export function MessageBubble(_a) {
|
|
|
167
168
|
return acc;
|
|
168
169
|
}, {})).map(function (_a) {
|
|
169
170
|
var emoji = _a[0], count = _a[1];
|
|
170
|
-
return (_jsxs("span", { className: "bg-gray-100 dark:bg-gray-700 rounded-full px-2 py-0.5 text-xs shadow-sm hover:bg-gray-200 dark:hover:bg-gray-600 cursor-pointer transition-colors",
|
|
171
|
+
return (_jsxs("span", { className: "bg-gray-100 dark:bg-gray-700 rounded-full px-2 py-0.5 text-xs shadow-sm hover:bg-gray-200 dark:hover:bg-gray-600 cursor-pointer transition-colors", onClick: function () {
|
|
172
|
+
if (message.reactions.find(function (r) { return r.emoji == emoji && r.userId == currentUserId; })) {
|
|
173
|
+
onReactionRemove === null || onReactionRemove === void 0 ? void 0 : onReactionRemove(message._id);
|
|
174
|
+
}
|
|
175
|
+
}, children: [emoji, " ", count > 1 && count] }, emoji));
|
|
171
176
|
}) }))] }), !message.isDeleted && (_jsxs(_Fragment, { children: [_jsxs("div", { className: "hidden md:flex gap-1 items-center flex-shrink-0 opacity-0 group-hover:opacity-100 transition-opacity my-auto", children: [_jsxs("div", { className: "relative", ref: reactionRef, children: [_jsx("button", { onClick: function () {
|
|
172
177
|
setShowQuickReactions(!showQuickReactions);
|
|
173
178
|
setShowReactionPicker(false);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@myrjfa/ui",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "Shared UI components for my apps",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"zod": "*"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
|
-
"@myrjfa/state": "1.0
|
|
55
|
+
"@myrjfa/state": "1.1.0",
|
|
56
56
|
"@types/react": "19.0.10",
|
|
57
57
|
"@types/react-dom": "^19.0.4",
|
|
58
58
|
"date-fns": "^3.0.0",
|