@burdenoff/microfe-conversations 2026.510.117
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/README.md +12 -0
- package/dist/__tests__/setup.d.ts +2 -0
- package/dist/__tests__/setup.d.ts.map +1 -0
- package/dist/conversations/ConversationsAdminRoot.d.ts +19 -0
- package/dist/conversations/ConversationsAdminRoot.d.ts.map +1 -0
- package/dist/conversations/ConversationsAdminRoot.js +104 -0
- package/dist/conversations/ConversationsAdminRoot.js.map +1 -0
- package/dist/conversations/ConversationsAdminRoutes.d.ts +18 -0
- package/dist/conversations/ConversationsAdminRoutes.d.ts.map +1 -0
- package/dist/conversations/ConversationsAdminRoutes.js +42 -0
- package/dist/conversations/ConversationsAdminRoutes.js.map +1 -0
- package/dist/conversations/ConversationsRoot.d.ts +33 -0
- package/dist/conversations/ConversationsRoot.d.ts.map +1 -0
- package/dist/conversations/ConversationsRoot.js +100 -0
- package/dist/conversations/ConversationsRoot.js.map +1 -0
- package/dist/conversations/ConversationsUserRoot.d.ts +17 -0
- package/dist/conversations/ConversationsUserRoot.d.ts.map +1 -0
- package/dist/conversations/ConversationsUserRoot.js +101 -0
- package/dist/conversations/ConversationsUserRoot.js.map +1 -0
- package/dist/conversations/ConversationsUserRoutes.d.ts +12 -0
- package/dist/conversations/ConversationsUserRoutes.d.ts.map +1 -0
- package/dist/conversations/ConversationsUserRoutes.js +45 -0
- package/dist/conversations/ConversationsUserRoutes.js.map +1 -0
- package/dist/conversations/components/ConversationCard.d.ts +14 -0
- package/dist/conversations/components/ConversationCard.d.ts.map +1 -0
- package/dist/conversations/components/ConversationCard.js +118 -0
- package/dist/conversations/components/ConversationCard.js.map +1 -0
- package/dist/conversations/components/LazyPageBoundary.d.ts +25 -0
- package/dist/conversations/components/LazyPageBoundary.d.ts.map +1 -0
- package/dist/conversations/components/LazyPageBoundary.js +144 -0
- package/dist/conversations/components/LazyPageBoundary.js.map +1 -0
- package/dist/conversations/components/MessageBubble.d.ts +21 -0
- package/dist/conversations/components/MessageBubble.d.ts.map +1 -0
- package/dist/conversations/components/MessageBubble.js +242 -0
- package/dist/conversations/components/MessageBubble.js.map +1 -0
- package/dist/conversations/components/PageLayout.d.ts +55 -0
- package/dist/conversations/components/PageLayout.d.ts.map +1 -0
- package/dist/conversations/components/PageLayout.js +93 -0
- package/dist/conversations/components/PageLayout.js.map +1 -0
- package/dist/conversations/components/PermissionGuard.d.ts +21 -0
- package/dist/conversations/components/PermissionGuard.d.ts.map +1 -0
- package/dist/conversations/components/PermissionGuard.js +25 -0
- package/dist/conversations/components/PermissionGuard.js.map +1 -0
- package/dist/conversations/constants/featureFlags.d.ts +8 -0
- package/dist/conversations/constants/featureFlags.d.ts.map +1 -0
- package/dist/conversations/constants/featureFlags.js +12 -0
- package/dist/conversations/constants/featureFlags.js.map +1 -0
- package/dist/conversations/constants/permissions.d.ts +174 -0
- package/dist/conversations/constants/permissions.d.ts.map +1 -0
- package/dist/conversations/constants/permissions.js +68 -0
- package/dist/conversations/constants/permissions.js.map +1 -0
- package/dist/conversations/hooks/useAdminFeatureFlags.d.ts +8 -0
- package/dist/conversations/hooks/useAdminFeatureFlags.d.ts.map +1 -0
- package/dist/conversations/hooks/useAdminFeatureFlags.js +16 -0
- package/dist/conversations/hooks/useAdminFeatureFlags.js.map +1 -0
- package/dist/conversations/hooks/useConversationQueries.d.ts +83 -0
- package/dist/conversations/hooks/useConversationQueries.d.ts.map +1 -0
- package/dist/conversations/hooks/useConversationQueries.js +136 -0
- package/dist/conversations/hooks/useConversationQueries.js.map +1 -0
- package/dist/conversations/hooks/useExportConversation.d.ts +10 -0
- package/dist/conversations/hooks/useExportConversation.d.ts.map +1 -0
- package/dist/conversations/hooks/useExportConversation.js +41 -0
- package/dist/conversations/hooks/useExportConversation.js.map +1 -0
- package/dist/conversations/hooks/useMessageQueries.d.ts +84 -0
- package/dist/conversations/hooks/useMessageQueries.d.ts.map +1 -0
- package/dist/conversations/hooks/useMessageQueries.js +123 -0
- package/dist/conversations/hooks/useMessageQueries.js.map +1 -0
- package/dist/conversations/hooks/useMessageSubscriptions.d.ts +24 -0
- package/dist/conversations/hooks/useMessageSubscriptions.d.ts.map +1 -0
- package/dist/conversations/hooks/useMessageSubscriptions.js +90 -0
- package/dist/conversations/hooks/useMessageSubscriptions.js.map +1 -0
- package/dist/conversations/hooks/useUserFeatureFlags.d.ts +5 -0
- package/dist/conversations/hooks/useUserFeatureFlags.d.ts.map +1 -0
- package/dist/conversations/hooks/useUserFeatureFlags.js +10 -0
- package/dist/conversations/hooks/useUserFeatureFlags.js.map +1 -0
- package/dist/conversations/index.d.ts +31 -0
- package/dist/conversations/index.d.ts.map +1 -0
- package/dist/conversations/index.js +5 -0
- package/dist/conversations/pages/AdminConversationsLandingPage.d.ts +9 -0
- package/dist/conversations/pages/AdminConversationsLandingPage.d.ts.map +1 -0
- package/dist/conversations/pages/AdminConversationsLandingPage.js +117 -0
- package/dist/conversations/pages/AdminConversationsLandingPage.js.map +1 -0
- package/dist/conversations/pages/ConversationAdminPages.d.ts +5 -0
- package/dist/conversations/pages/ConversationAdminPages.d.ts.map +1 -0
- package/dist/conversations/pages/ConversationAdminPages.js +573 -0
- package/dist/conversations/pages/ConversationAdminPages.js.map +1 -0
- package/dist/conversations/pages/ConversationDetailPage.d.ts +2 -0
- package/dist/conversations/pages/ConversationDetailPage.d.ts.map +1 -0
- package/dist/conversations/pages/ConversationDetailPage.js +439 -0
- package/dist/conversations/pages/ConversationDetailPage.js.map +1 -0
- package/dist/conversations/pages/ConversationListPage.d.ts +6 -0
- package/dist/conversations/pages/ConversationListPage.d.ts.map +1 -0
- package/dist/conversations/pages/ConversationListPage.js +269 -0
- package/dist/conversations/pages/ConversationListPage.js.map +1 -0
- package/dist/conversations/pages/ConversationsLandingPage.d.ts +9 -0
- package/dist/conversations/pages/ConversationsLandingPage.d.ts.map +1 -0
- package/dist/conversations/pages/ConversationsLandingPage.js +124 -0
- package/dist/conversations/pages/ConversationsLandingPage.js.map +1 -0
- package/dist/conversations/pages/ConversationsSettingsPage.d.ts +2 -0
- package/dist/conversations/pages/ConversationsSettingsPage.d.ts.map +1 -0
- package/dist/conversations/pages/ConversationsSettingsPage.js +215 -0
- package/dist/conversations/pages/ConversationsSettingsPage.js.map +1 -0
- package/dist/conversations/pages/NewConversationPage.d.ts +2 -0
- package/dist/conversations/pages/NewConversationPage.d.ts.map +1 -0
- package/dist/conversations/pages/NewConversationPage.js +287 -0
- package/dist/conversations/pages/NewConversationPage.js.map +1 -0
- package/dist/conversations/providers/ConversationsProvider.d.ts +13 -0
- package/dist/conversations/providers/ConversationsProvider.d.ts.map +1 -0
- package/dist/conversations/providers/ConversationsProvider.js +109 -0
- package/dist/conversations/providers/ConversationsProvider.js.map +1 -0
- package/dist/conversations/store/conversationsStore.d.ts +29 -0
- package/dist/conversations/store/conversationsStore.d.ts.map +1 -0
- package/dist/conversations/store/conversationsStore.js +56 -0
- package/dist/conversations/store/conversationsStore.js.map +1 -0
- package/dist/conversations/types/index.d.ts +352 -0
- package/dist/conversations/types/index.d.ts.map +1 -0
- package/dist/conversations/utils/cn.d.ts +8 -0
- package/dist/conversations/utils/cn.d.ts.map +1 -0
- package/dist/conversations/utils/cn.js +10 -0
- package/dist/conversations/utils/cn.js.map +1 -0
- package/dist/conversations/utils/i18n.d.ts +15 -0
- package/dist/conversations/utils/i18n.d.ts.map +1 -0
- package/dist/conversations/utils/i18n.js +14 -0
- package/dist/conversations/utils/i18n.js.map +1 -0
- package/dist/conversations/utils/mappers.d.ts +32 -0
- package/dist/conversations/utils/mappers.d.ts.map +1 -0
- package/dist/conversations/utils/mappers.js +164 -0
- package/dist/conversations/utils/mappers.js.map +1 -0
- package/dist/conversations/utils/navigation.d.ts +18 -0
- package/dist/conversations/utils/navigation.d.ts.map +1 -0
- package/dist/conversations/utils/navigation.js +8 -0
- package/dist/conversations/utils/navigation.js.map +1 -0
- package/dist/dev/main.d.ts +2 -0
- package/dist/dev/main.d.ts.map +1 -0
- package/dist/generated/global-operations.d.ts +2 -0
- package/dist/generated/global-operations.d.ts.map +1 -0
- package/dist/generated/global-types.d.ts +20716 -0
- package/dist/generated/global-types.d.ts.map +1 -0
- package/dist/generated/wspace-operations.d.ts +2008 -0
- package/dist/generated/wspace-operations.d.ts.map +1 -0
- package/dist/generated/wspace-operations.js +997 -0
- package/dist/generated/wspace-operations.js.map +1 -0
- package/dist/generated/wspace-types.d.ts +53363 -0
- package/dist/generated/wspace-types.d.ts.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/node_modules/clsx/dist/clsx.js +18 -0
- package/dist/node_modules/clsx/dist/clsx.js.map +1 -0
- package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js +1674 -0
- package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js.map +1 -0
- package/dist/utils/nativeBridge.d.ts +3 -0
- package/dist/utils/nativeBridge.d.ts.map +1 -0
- package/dist/utils/nativeBridge.js +2 -0
- package/package.json +115 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i18n.js","names":[],"sources":["../../../src/conversations/utils/i18n.ts"],"sourcesContent":["import { useCallback } from \"react\";\nimport { useI18n } from \"@burdenoff/fe-libs/shared/providers/shell/I18nProvider\";\n\n/**\n * Stable translate helper used throughout the conversations MFE.\n *\n * Wraps the shell's `useI18n().t()` with a two-argument signature that\n * returns the English `fallback` when the translation key is not\n * resolved. Memoises around `t` so the returned function is referentially\n * stable across renders — safe to list in `useMemo` / `useEffect` dep\n * arrays without triggering churn on every render.\n *\n * @example\n * const tr = useTr();\n * const label = tr(\"conversations.inbox\", \"Inbox\");\n */\nexport function useTr(): (key: string, fallback: string) => string {\n const { t } = useI18n();\n return useCallback(\n (key: string, fallback: string): string => {\n const value = t(key);\n return value === key ? fallback : value;\n },\n [t],\n );\n}\n"],"mappings":";;;AAgBA,SAAgB,IAAmD;CACjE,IAAM,EAAE,SAAM,GAAS;AACvB,QAAO,GACJ,GAAa,MAA6B;EACzC,IAAM,IAAQ,EAAE,EAAI;AACpB,SAAO,MAAU,IAAM,IAAW;IAEpC,CAAC,EAAE,CACJ"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Conversation, Message, Reaction, Attachment, Mention, ConversationMembership, Participant } from '../types';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Map a GraphQL Conversation response to the frontend Conversation type.
|
|
5
|
+
* Gracefully handles undefined/null fields from partial queries.
|
|
6
|
+
*/
|
|
7
|
+
export declare function mapConversation(raw: Record<string, unknown>): Conversation;
|
|
8
|
+
/**
|
|
9
|
+
* Map a GraphQL Message response to the frontend Message type.
|
|
10
|
+
*/
|
|
11
|
+
export declare function mapMessage(raw: Record<string, unknown>): Message;
|
|
12
|
+
/**
|
|
13
|
+
* Map a GraphQL Reaction response
|
|
14
|
+
*/
|
|
15
|
+
export declare function mapReaction(raw: Record<string, unknown>): Reaction;
|
|
16
|
+
/**
|
|
17
|
+
* Map a GraphQL Mention response
|
|
18
|
+
*/
|
|
19
|
+
export declare function mapMention(raw: Record<string, unknown>): Mention;
|
|
20
|
+
/**
|
|
21
|
+
* Map a GraphQL Attachment response
|
|
22
|
+
*/
|
|
23
|
+
export declare function mapAttachment(raw: Record<string, unknown>): Attachment;
|
|
24
|
+
/**
|
|
25
|
+
* Map a GraphQL ConversationMembership response
|
|
26
|
+
*/
|
|
27
|
+
export declare function mapMembership(raw: Record<string, unknown>): ConversationMembership;
|
|
28
|
+
/**
|
|
29
|
+
* Map a participant from membership data
|
|
30
|
+
*/
|
|
31
|
+
export declare function mapParticipant(raw: Record<string, unknown>): Participant;
|
|
32
|
+
//# sourceMappingURL=mappers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mappers.d.ts","sourceRoot":"","sources":["../../../src/conversations/utils/mappers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,OAAO,EACP,QAAQ,EACR,UAAU,EACV,OAAO,EACP,sBAAsB,EACtB,WAAW,EAGZ,MAAM,UAAU,CAAC;AAElB;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,YAAY,CAqF1E;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAsDhE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,QAAQ,CAalE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAQhE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU,CAatE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3B,sBAAsB,CAoBxB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,WAAW,CAWxE"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
//#region src/conversations/utils/mappers.ts
|
|
2
|
+
function e(e) {
|
|
3
|
+
let n = e.settings && typeof e.settings == "object" ? e.settings : void 0, r = n && typeof n.metadata == "object" && n.metadata !== null && typeof n.metadata.sourceContext == "object" && n.metadata.sourceContext !== null ? n.metadata.sourceContext : void 0;
|
|
4
|
+
return {
|
|
5
|
+
id: String(e.id ?? ""),
|
|
6
|
+
title: String(e.title ?? "Untitled"),
|
|
7
|
+
description: e.description ? String(e.description) : void 0,
|
|
8
|
+
avatar: e.avatar ? String(e.avatar) : void 0,
|
|
9
|
+
settings: n,
|
|
10
|
+
sourceContext: r ? {
|
|
11
|
+
product: r.product ? String(r.product) : void 0,
|
|
12
|
+
pagePath: String(r.pagePath ?? ""),
|
|
13
|
+
contextHref: String(r.contextHref ?? ""),
|
|
14
|
+
contextTitle: r.contextTitle ? String(r.contextTitle) : void 0,
|
|
15
|
+
entityType: r.entityType ? String(r.entityType) : void 0,
|
|
16
|
+
entityId: r.entityId ? String(r.entityId) : void 0,
|
|
17
|
+
activeTab: r.activeTab ? String(r.activeTab) : void 0
|
|
18
|
+
} : void 0,
|
|
19
|
+
type: String(e.type ?? "DIRECT"),
|
|
20
|
+
state: String(e.state ?? "ACTIVE"),
|
|
21
|
+
visibility: String(e.visibility ?? "PRIVATE"),
|
|
22
|
+
isGroup: !!e.isGroup || String(e.type ?? "DIRECT") !== "DIRECT",
|
|
23
|
+
memberCount: Number(e.memberCount ?? 0),
|
|
24
|
+
unreadCount: Number(e.unreadCount ?? 0),
|
|
25
|
+
mentionCount: Number(e.mentionCount ?? 0),
|
|
26
|
+
lastMessage: e.lastMessage ? t(e.lastMessage) : void 0,
|
|
27
|
+
isPinned: !!(e.currentUserMembership && e.currentUserMembership.isPinned),
|
|
28
|
+
isMuted: !!(e.currentUserMembership && e.currentUserMembership.isMuted),
|
|
29
|
+
features: e.features ? a(e.features) : s(),
|
|
30
|
+
createdBy: {
|
|
31
|
+
id: String(e.createdBy && typeof e.createdBy == "object" ? e.createdBy.id : e.createdBy ?? ""),
|
|
32
|
+
name: String(e.createdBy && typeof e.createdBy == "object" ? e.createdBy.name : "")
|
|
33
|
+
},
|
|
34
|
+
createdAt: String(e.createdAt ?? (/* @__PURE__ */ new Date()).toISOString()),
|
|
35
|
+
updatedAt: String(e.updatedAt ?? (/* @__PURE__ */ new Date()).toISOString())
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
function t(e) {
|
|
39
|
+
let t = Array.isArray(e.reactions) ? e.reactions.map(n) : [], a = Array.isArray(e.mentions) ? e.mentions.map(r) : [], s = Array.isArray(e.attachments) ? e.attachments.map(i) : [];
|
|
40
|
+
return {
|
|
41
|
+
id: String(e.id ?? ""),
|
|
42
|
+
conversationId: String(e.conversationId ?? ""),
|
|
43
|
+
type: String(e.type ?? "TEXT"),
|
|
44
|
+
status: String(e.status ?? "SENT"),
|
|
45
|
+
content: l(e.content),
|
|
46
|
+
authorId: String(e.authorId ?? ""),
|
|
47
|
+
authorType: String(e.authorType ?? "user"),
|
|
48
|
+
isAnonymous: !!e.isAnonymous,
|
|
49
|
+
sender: {
|
|
50
|
+
id: String(e.authorId ?? ""),
|
|
51
|
+
name: String(e.sender && typeof e.sender == "object" ? e.sender.name : e.authorId ?? "Unknown"),
|
|
52
|
+
avatarUrl: e.sender && typeof e.sender == "object" ? e.sender.avatarUrl : void 0
|
|
53
|
+
},
|
|
54
|
+
parentMessageId: e.parentMessageId ? String(e.parentMessageId) : void 0,
|
|
55
|
+
threadRootId: e.threadRootId ? String(e.threadRootId) : void 0,
|
|
56
|
+
threadLevel: Number(e.threadLevel ?? 0),
|
|
57
|
+
replyCount: Number(e.replyCount ?? 0),
|
|
58
|
+
isEdited: !!e.isEdited,
|
|
59
|
+
editedAt: e.editedAt ? String(e.editedAt) : void 0,
|
|
60
|
+
isPinned: !!e.isPinned,
|
|
61
|
+
reactions: t,
|
|
62
|
+
mentions: a,
|
|
63
|
+
attachments: s,
|
|
64
|
+
permissions: e.permissions ? o(e.permissions) : c(),
|
|
65
|
+
createdAt: String(e.createdAt ?? (/* @__PURE__ */ new Date()).toISOString()),
|
|
66
|
+
updatedAt: String(e.updatedAt ?? (/* @__PURE__ */ new Date()).toISOString())
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
function n(e) {
|
|
70
|
+
return {
|
|
71
|
+
id: String(e.id ?? ""),
|
|
72
|
+
emoji: String(e.emoji ?? ""),
|
|
73
|
+
count: Number(e.count ?? 1),
|
|
74
|
+
users: Array.isArray(e.users) ? e.users.map((e) => ({
|
|
75
|
+
id: String(e.id ?? ""),
|
|
76
|
+
name: String(e.name ?? "")
|
|
77
|
+
})) : [],
|
|
78
|
+
currentUserReacted: !!e.currentUserReacted
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
function r(e) {
|
|
82
|
+
return {
|
|
83
|
+
id: String(e.id ?? ""),
|
|
84
|
+
mentionedUser: e.mentionedUser ? String(e.mentionedUser) : void 0,
|
|
85
|
+
mentionType: String(e.mentionType ?? "USER"),
|
|
86
|
+
offset: Number(e.offset ?? 0),
|
|
87
|
+
length: Number(e.length ?? 0)
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
function i(e) {
|
|
91
|
+
return {
|
|
92
|
+
id: String(e.id ?? ""),
|
|
93
|
+
fileId: String(e.fileId ?? ""),
|
|
94
|
+
fileName: String(e.fileName ?? "file"),
|
|
95
|
+
fileSize: Number(e.fileSize ?? 0),
|
|
96
|
+
mimeType: String(e.mimeType ?? "application/octet-stream"),
|
|
97
|
+
downloadUrl: e.downloadUrl ? String(e.downloadUrl) : void 0,
|
|
98
|
+
width: e.width ? Number(e.width) : void 0,
|
|
99
|
+
height: e.height ? Number(e.height) : void 0,
|
|
100
|
+
duration: e.duration ? Number(e.duration) : void 0,
|
|
101
|
+
thumbnail: e.thumbnail ? String(e.thumbnail) : void 0
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
function a(e) {
|
|
105
|
+
return {
|
|
106
|
+
threads: !!(e.threads ?? !0),
|
|
107
|
+
reactions: !!(e.reactions ?? !0),
|
|
108
|
+
mentions: !!(e.mentions ?? !0),
|
|
109
|
+
calls: !!(e.calls ?? !0),
|
|
110
|
+
apps: !!(e.apps ?? !0),
|
|
111
|
+
polls: !!(e.polls ?? !0),
|
|
112
|
+
anonymousMode: !!e.anonymousMode,
|
|
113
|
+
screenShare: !!(e.screenShare ?? !0),
|
|
114
|
+
recording: !!e.recording
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
function o(e) {
|
|
118
|
+
return {
|
|
119
|
+
canEdit: !!e.canEdit,
|
|
120
|
+
canDelete: !!e.canDelete,
|
|
121
|
+
canReact: !!(e.canReact ?? !0),
|
|
122
|
+
canReply: !!(e.canReply ?? !0),
|
|
123
|
+
canPin: !!e.canPin,
|
|
124
|
+
canHide: !!e.canHide,
|
|
125
|
+
canReport: !!(e.canReport ?? !0)
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
function s() {
|
|
129
|
+
return {
|
|
130
|
+
threads: !0,
|
|
131
|
+
reactions: !0,
|
|
132
|
+
mentions: !0,
|
|
133
|
+
calls: !0,
|
|
134
|
+
apps: !0,
|
|
135
|
+
polls: !0,
|
|
136
|
+
anonymousMode: !1,
|
|
137
|
+
screenShare: !0,
|
|
138
|
+
recording: !1
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
function c() {
|
|
142
|
+
return {
|
|
143
|
+
canEdit: !1,
|
|
144
|
+
canDelete: !1,
|
|
145
|
+
canReact: !0,
|
|
146
|
+
canReply: !0,
|
|
147
|
+
canPin: !1,
|
|
148
|
+
canHide: !1,
|
|
149
|
+
canReport: !0
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
function l(e) {
|
|
153
|
+
if (typeof e == "string") return e;
|
|
154
|
+
if (e && typeof e == "object") {
|
|
155
|
+
let t = e;
|
|
156
|
+
if (typeof t.text == "string") return t.text;
|
|
157
|
+
if (typeof t.payload == "string") return t.payload;
|
|
158
|
+
}
|
|
159
|
+
return "";
|
|
160
|
+
}
|
|
161
|
+
//#endregion
|
|
162
|
+
export { e as mapConversation, t as mapMessage };
|
|
163
|
+
|
|
164
|
+
//# sourceMappingURL=mappers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mappers.js","names":[],"sources":["../../../src/conversations/utils/mappers.ts"],"sourcesContent":["import type {\n Conversation,\n Message,\n Reaction,\n Attachment,\n Mention,\n ConversationMembership,\n Participant,\n MessagePermissions,\n ConversationFeatures,\n} from \"../types\";\n\n/**\n * Map a GraphQL Conversation response to the frontend Conversation type.\n * Gracefully handles undefined/null fields from partial queries.\n */\nexport function mapConversation(raw: Record<string, unknown>): Conversation {\n const settings =\n raw.settings && typeof raw.settings === \"object\"\n ? (raw.settings as Record<string, unknown>)\n : undefined;\n const sourceContext =\n settings &&\n typeof settings.metadata === \"object\" &&\n settings.metadata !== null &&\n typeof (settings.metadata as Record<string, unknown>).sourceContext ===\n \"object\" &&\n (settings.metadata as Record<string, unknown>).sourceContext !== null\n ? ((settings.metadata as Record<string, unknown>).sourceContext as Record<\n string,\n unknown\n >)\n : undefined;\n\n return {\n id: String(raw.id ?? \"\"),\n title: String(raw.title ?? \"Untitled\"),\n description: raw.description ? String(raw.description) : undefined,\n avatar: raw.avatar ? String(raw.avatar) : undefined,\n settings,\n sourceContext: sourceContext\n ? {\n product: sourceContext.product\n ? String(sourceContext.product)\n : undefined,\n pagePath: String(sourceContext.pagePath ?? \"\"),\n contextHref: String(sourceContext.contextHref ?? \"\"),\n contextTitle: sourceContext.contextTitle\n ? String(sourceContext.contextTitle)\n : undefined,\n entityType: sourceContext.entityType\n ? String(sourceContext.entityType)\n : undefined,\n entityId: sourceContext.entityId\n ? String(sourceContext.entityId)\n : undefined,\n activeTab: sourceContext.activeTab\n ? String(sourceContext.activeTab)\n : undefined,\n }\n : undefined,\n type: String(raw.type ?? \"DIRECT\") as Conversation[\"type\"],\n state: String(raw.state ?? \"ACTIVE\") as Conversation[\"state\"],\n visibility: String(\n raw.visibility ?? \"PRIVATE\",\n ) as Conversation[\"visibility\"],\n isGroup: Boolean(raw.isGroup) || String(raw.type ?? \"DIRECT\") !== \"DIRECT\",\n memberCount: Number(raw.memberCount ?? 0),\n unreadCount: Number(raw.unreadCount ?? 0),\n mentionCount: Number(raw.mentionCount ?? 0),\n lastMessage: raw.lastMessage\n ? mapMessage(raw.lastMessage as Record<string, unknown>)\n : undefined,\n isPinned: Boolean(\n raw.currentUserMembership\n ? (raw.currentUserMembership as Record<string, unknown>).isPinned\n : false,\n ),\n isMuted: Boolean(\n raw.currentUserMembership\n ? (raw.currentUserMembership as Record<string, unknown>).isMuted\n : false,\n ),\n features: raw.features\n ? mapConversationFeatures(raw.features as Record<string, unknown>)\n : defaultFeatures(),\n createdBy: {\n id: String(\n raw.createdBy && typeof raw.createdBy === \"object\"\n ? (raw.createdBy as Record<string, unknown>).id\n : (raw.createdBy ?? \"\"),\n ),\n name: String(\n raw.createdBy && typeof raw.createdBy === \"object\"\n ? (raw.createdBy as Record<string, unknown>).name\n : \"\",\n ),\n },\n createdAt: String(raw.createdAt ?? new Date().toISOString()),\n updatedAt: String(raw.updatedAt ?? new Date().toISOString()),\n };\n}\n\n/**\n * Map a GraphQL Message response to the frontend Message type.\n */\nexport function mapMessage(raw: Record<string, unknown>): Message {\n const reactions = Array.isArray(raw.reactions)\n ? (raw.reactions as Record<string, unknown>[]).map(mapReaction)\n : [];\n\n const mentions = Array.isArray(raw.mentions)\n ? (raw.mentions as Record<string, unknown>[]).map(mapMention)\n : [];\n\n const attachments = Array.isArray(raw.attachments)\n ? (raw.attachments as Record<string, unknown>[]).map(mapAttachment)\n : [];\n\n return {\n id: String(raw.id ?? \"\"),\n conversationId: String(raw.conversationId ?? \"\"),\n type: String(raw.type ?? \"TEXT\") as Message[\"type\"],\n status: String(raw.status ?? \"SENT\") as Message[\"status\"],\n content: extractTextContent(raw.content),\n authorId: String(raw.authorId ?? \"\"),\n authorType: String(raw.authorType ?? \"user\"),\n isAnonymous: Boolean(raw.isAnonymous),\n sender: {\n id: String(raw.authorId ?? \"\"),\n name: String(\n raw.sender && typeof raw.sender === \"object\"\n ? (raw.sender as Record<string, unknown>).name\n : (raw.authorId ?? \"Unknown\"),\n ),\n avatarUrl:\n raw.sender && typeof raw.sender === \"object\"\n ? ((raw.sender as Record<string, unknown>).avatarUrl as\n | string\n | undefined)\n : undefined,\n },\n parentMessageId: raw.parentMessageId\n ? String(raw.parentMessageId)\n : undefined,\n threadRootId: raw.threadRootId ? String(raw.threadRootId) : undefined,\n threadLevel: Number(raw.threadLevel ?? 0),\n replyCount: Number(raw.replyCount ?? 0),\n isEdited: Boolean(raw.isEdited),\n editedAt: raw.editedAt ? String(raw.editedAt) : undefined,\n isPinned: Boolean(raw.isPinned),\n reactions,\n mentions,\n attachments,\n permissions: raw.permissions\n ? mapMessagePermissions(raw.permissions as Record<string, unknown>)\n : defaultMessagePermissions(),\n createdAt: String(raw.createdAt ?? new Date().toISOString()),\n updatedAt: String(raw.updatedAt ?? new Date().toISOString()),\n };\n}\n\n/**\n * Map a GraphQL Reaction response\n */\nexport function mapReaction(raw: Record<string, unknown>): Reaction {\n return {\n id: String(raw.id ?? \"\"),\n emoji: String(raw.emoji ?? \"\"),\n count: Number(raw.count ?? 1),\n users: Array.isArray(raw.users)\n ? (raw.users as Record<string, unknown>[]).map((u) => ({\n id: String(u.id ?? \"\"),\n name: String(u.name ?? \"\"),\n }))\n : [],\n currentUserReacted: Boolean(raw.currentUserReacted),\n };\n}\n\n/**\n * Map a GraphQL Mention response\n */\nexport function mapMention(raw: Record<string, unknown>): Mention {\n return {\n id: String(raw.id ?? \"\"),\n mentionedUser: raw.mentionedUser ? String(raw.mentionedUser) : undefined,\n mentionType: String(raw.mentionType ?? \"USER\") as Mention[\"mentionType\"],\n offset: Number(raw.offset ?? 0),\n length: Number(raw.length ?? 0),\n };\n}\n\n/**\n * Map a GraphQL Attachment response\n */\nexport function mapAttachment(raw: Record<string, unknown>): Attachment {\n return {\n id: String(raw.id ?? \"\"),\n fileId: String(raw.fileId ?? \"\"),\n fileName: String(raw.fileName ?? \"file\"),\n fileSize: Number(raw.fileSize ?? 0),\n mimeType: String(raw.mimeType ?? \"application/octet-stream\"),\n downloadUrl: raw.downloadUrl ? String(raw.downloadUrl) : undefined,\n width: raw.width ? Number(raw.width) : undefined,\n height: raw.height ? Number(raw.height) : undefined,\n duration: raw.duration ? Number(raw.duration) : undefined,\n thumbnail: raw.thumbnail ? String(raw.thumbnail) : undefined,\n };\n}\n\n/**\n * Map a GraphQL ConversationMembership response\n */\nexport function mapMembership(\n raw: Record<string, unknown>,\n): ConversationMembership {\n return {\n id: String(raw.id ?? \"\"),\n conversationId: String(raw.conversationId ?? \"\"),\n userId: String(raw.userId ?? \"\"),\n role: String(raw.role ?? \"MEMBER\") as ConversationMembership[\"role\"],\n status: String(raw.status ?? \"ACTIVE\") as ConversationMembership[\"status\"],\n unreadCount: Number(raw.unreadCount ?? 0),\n mentionCount: Number(raw.mentionCount ?? 0),\n notificationLevel: String(\n raw.notificationLevel ?? \"ALL\",\n ) as ConversationMembership[\"notificationLevel\"],\n isMuted: Boolean(raw.isMuted),\n isPinned: Boolean(raw.isPinned),\n canSendMessages: Boolean(raw.canSendMessages ?? true),\n canAddMembers: Boolean(raw.canAddMembers),\n canRemoveMembers: Boolean(raw.canRemoveMembers),\n joinedAt: String(raw.joinedAt ?? new Date().toISOString()),\n lastReadAt: raw.lastReadAt ? String(raw.lastReadAt) : undefined,\n };\n}\n\n/**\n * Map a participant from membership data\n */\nexport function mapParticipant(raw: Record<string, unknown>): Participant {\n return {\n id: String(raw.id ?? \"\"),\n userId: String(raw.userId ?? \"\"),\n name: String(raw.name ?? \"Unknown\"),\n avatarUrl: raw.avatarUrl ? String(raw.avatarUrl) : undefined,\n role: String(raw.role ?? \"MEMBER\") as Participant[\"role\"],\n status: String(raw.status ?? \"OFFLINE\") as Participant[\"status\"],\n joinedAt: String(raw.joinedAt ?? new Date().toISOString()),\n lastSeenAt: raw.lastSeenAt ? String(raw.lastSeenAt) : undefined,\n };\n}\n\n// ============================================================================\n// HELPERS\n// ============================================================================\n\nfunction mapConversationFeatures(\n raw: Record<string, unknown>,\n): ConversationFeatures {\n return {\n threads: Boolean(raw.threads ?? true),\n reactions: Boolean(raw.reactions ?? true),\n mentions: Boolean(raw.mentions ?? true),\n calls: Boolean(raw.calls ?? true),\n apps: Boolean(raw.apps ?? true),\n polls: Boolean(raw.polls ?? true),\n anonymousMode: Boolean(raw.anonymousMode),\n screenShare: Boolean(raw.screenShare ?? true),\n recording: Boolean(raw.recording),\n };\n}\n\nfunction mapMessagePermissions(\n raw: Record<string, unknown>,\n): MessagePermissions {\n return {\n canEdit: Boolean(raw.canEdit),\n canDelete: Boolean(raw.canDelete),\n canReact: Boolean(raw.canReact ?? true),\n canReply: Boolean(raw.canReply ?? true),\n canPin: Boolean(raw.canPin),\n canHide: Boolean(raw.canHide),\n canReport: Boolean(raw.canReport ?? true),\n };\n}\n\nfunction defaultFeatures(): ConversationFeatures {\n return {\n threads: true,\n reactions: true,\n mentions: true,\n calls: true,\n apps: true,\n polls: true,\n anonymousMode: false,\n screenShare: true,\n recording: false,\n };\n}\n\nfunction defaultMessagePermissions(): MessagePermissions {\n return {\n canEdit: false,\n canDelete: false,\n canReact: true,\n canReply: true,\n canPin: false,\n canHide: false,\n canReport: true,\n };\n}\n\n/**\n * Extract text content from a JSON content field.\n * The GraphQL schema stores content as JSON — this handles\n * both string and structured rich-text formats.\n */\nfunction extractTextContent(content: unknown): string {\n if (typeof content === \"string\") return content;\n if (content && typeof content === \"object\") {\n const obj = content as Record<string, unknown>;\n if (typeof obj.text === \"string\") return obj.text;\n if (typeof obj.payload === \"string\") return obj.payload;\n }\n return \"\";\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Navigation utilities for the Conversations microfrontend
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Join basePath with a relative path, correctly handling slashes
|
|
6
|
+
*
|
|
7
|
+
* @param basePath - The base path (e.g., '/' or '/conversations')
|
|
8
|
+
* @param relativePath - The relative path (e.g., 'new' or '/new')
|
|
9
|
+
* @returns The joined path (e.g., '/conversations/new')
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* joinPath('/', 'conversations/new') // => '/conversations/new'
|
|
13
|
+
* joinPath('/', '/conversations/new') // => '/conversations/new'
|
|
14
|
+
* joinPath('/conversations', 'new') // => '/conversations/new'
|
|
15
|
+
* joinPath('/conversations/', 'new') // => '/conversations/new'
|
|
16
|
+
*/
|
|
17
|
+
export declare function joinPath(basePath: string, relativePath: string): string;
|
|
18
|
+
//# sourceMappingURL=navigation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../../src/conversations/utils/navigation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;;;;;;;;GAYG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAMvE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigation.js","names":[],"sources":["../../../src/conversations/utils/navigation.ts"],"sourcesContent":["/**\n * Navigation utilities for the Conversations microfrontend\n */\n\n/**\n * Join basePath with a relative path, correctly handling slashes\n *\n * @param basePath - The base path (e.g., '/' or '/conversations')\n * @param relativePath - The relative path (e.g., 'new' or '/new')\n * @returns The joined path (e.g., '/conversations/new')\n *\n * @example\n * joinPath('/', 'conversations/new') // => '/conversations/new'\n * joinPath('/', '/conversations/new') // => '/conversations/new'\n * joinPath('/conversations', 'new') // => '/conversations/new'\n * joinPath('/conversations/', 'new') // => '/conversations/new'\n */\nexport function joinPath(basePath: string, relativePath: string): string {\n const cleanBase = basePath.endsWith(\"/\") ? basePath.slice(0, -1) : basePath;\n const cleanPath = relativePath.startsWith(\"/\")\n ? relativePath\n : `/${relativePath}`;\n return cleanBase + cleanPath;\n}\n"],"mappings":";AAiBA,SAAgB,EAAS,GAAkB,GAA8B;AAKvE,SAJkB,EAAS,SAAS,IAAI,GAAG,EAAS,MAAM,GAAG,GAAG,GAAG,MACjD,EAAa,WAAW,IAAI,GAC1C,IACA,IAAI"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/dev/main.tsx"],"names":[],"mappings":"AAaA,OAAO,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"global-operations.d.ts","sourceRoot":"","sources":["../../src/generated/global-operations.ts"],"names":[],"mappings":""}
|