@acorex/components 22.0.0-next.36 → 22.0.0-next.39
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.
|
@@ -161,6 +161,7 @@ const AX_CONVERSATION_ERROR_HANDLER_CONFIG = new InjectionToken('AX_CONVERSATION
|
|
|
161
161
|
/**
|
|
162
162
|
* Pluggable avatar components for the conversation UI.
|
|
163
163
|
* Register via `provideConversation({ avatarComponents: { user, conversation } })`.
|
|
164
|
+
* When only `user` is registered, a built-in conversation avatar host is wired automatically.
|
|
164
165
|
*/
|
|
165
166
|
const AX_CONVERSATION_USER_AVATAR_COMPONENT = new InjectionToken('AX_CONVERSATION_USER_AVATAR_COMPONENT');
|
|
166
167
|
const AX_CONVERSATION_CONVERSATION_AVATAR_COMPONENT = new InjectionToken('AX_CONVERSATION_CONVERSATION_AVATAR_COMPONENT');
|
|
@@ -509,7 +510,30 @@ class AXConversationMessageUtilsService {
|
|
|
509
510
|
if (AXConversationMessageUtilsService.getConversationAvatar(conversation)) {
|
|
510
511
|
return undefined;
|
|
511
512
|
}
|
|
512
|
-
|
|
513
|
+
const explicit = AXConversationMessageUtilsService.normalizeOptionalMediaValue(conversation.icon);
|
|
514
|
+
if (explicit) {
|
|
515
|
+
return explicit;
|
|
516
|
+
}
|
|
517
|
+
if (conversation.type === 'group') {
|
|
518
|
+
return AX_CONVERSATION_DEFAULT_GROUP_ICON;
|
|
519
|
+
}
|
|
520
|
+
if (conversation.type === 'private' || conversation.type === 'bot') {
|
|
521
|
+
return AX_CONVERSATION_DEFAULT_USER_ICON;
|
|
522
|
+
}
|
|
523
|
+
return undefined;
|
|
524
|
+
}
|
|
525
|
+
/**
|
|
526
|
+
* Font Awesome icon for a participant when there is no avatar image.
|
|
527
|
+
*/
|
|
528
|
+
static getParticipantAvatarIcon(participant) {
|
|
529
|
+
if (AXConversationMessageUtilsService.normalizeOptionalMediaValue(participant?.avatar)) {
|
|
530
|
+
return undefined;
|
|
531
|
+
}
|
|
532
|
+
const explicit = AXConversationMessageUtilsService.normalizeOptionalMediaValue(participant?.icon);
|
|
533
|
+
if (explicit) {
|
|
534
|
+
return explicit;
|
|
535
|
+
}
|
|
536
|
+
return AX_CONVERSATION_DEFAULT_USER_ICON;
|
|
513
537
|
}
|
|
514
538
|
/**
|
|
515
539
|
* Get sender name from message
|
|
@@ -534,7 +558,7 @@ class AXConversationMessageUtilsService {
|
|
|
534
558
|
if (AXConversationMessageUtilsService.normalizeOptionalMediaValue(participant?.avatar)) {
|
|
535
559
|
return undefined;
|
|
536
560
|
}
|
|
537
|
-
return (AXConversationMessageUtilsService.
|
|
561
|
+
return (AXConversationMessageUtilsService.getParticipantAvatarIcon(participant) ??
|
|
538
562
|
AXConversationMessageUtilsService.getConversationAvatarIcon(conversation));
|
|
539
563
|
}
|
|
540
564
|
/**
|
|
@@ -791,17 +815,51 @@ class AXConversationMessageUtilsService {
|
|
|
791
815
|
}
|
|
792
816
|
}
|
|
793
817
|
|
|
818
|
+
/** Conversation types that resolve a single peer participant for viewer-scoped avatar/title. */
|
|
819
|
+
const AX_CONVERSATION_PEER_AVATAR_TYPES = new Set([
|
|
820
|
+
'private',
|
|
821
|
+
'bot',
|
|
822
|
+
]);
|
|
823
|
+
function normalizeOptionalMediaValue(value) {
|
|
824
|
+
if (typeof value !== 'string') {
|
|
825
|
+
return undefined;
|
|
826
|
+
}
|
|
827
|
+
const normalized = value.trim();
|
|
828
|
+
return normalized.length > 0 ? normalized : undefined;
|
|
829
|
+
}
|
|
830
|
+
/**
|
|
831
|
+
* Other participant in a peer-scoped conversation (excludes the current viewer).
|
|
832
|
+
* Applies to private 1:1 and bot assist chats with exactly one non-viewer participant.
|
|
833
|
+
*/
|
|
834
|
+
function resolveConversationPeerUserId(conversation, currentUserId) {
|
|
835
|
+
if (!AX_CONVERSATION_PEER_AVATAR_TYPES.has(conversation.type)) {
|
|
836
|
+
return undefined;
|
|
837
|
+
}
|
|
838
|
+
const currentId = currentUserId ?? 'current-user';
|
|
839
|
+
const peers = conversation.participants.filter((participant) => participant.id !== currentId);
|
|
840
|
+
if (peers.length !== 1) {
|
|
841
|
+
return undefined;
|
|
842
|
+
}
|
|
843
|
+
return peers[0].id;
|
|
844
|
+
}
|
|
794
845
|
/** Other participant in a private chat (excludes the current user). */
|
|
795
846
|
function resolvePrivatePeerUserId(conversation, currentUserId) {
|
|
796
847
|
if (conversation.type !== 'private') {
|
|
797
848
|
return undefined;
|
|
798
849
|
}
|
|
799
|
-
|
|
800
|
-
return conversation.participants.find((participant) => participant.id !== currentId)?.id;
|
|
850
|
+
return resolveConversationPeerUserId(conversation, currentUserId);
|
|
801
851
|
}
|
|
802
|
-
/**
|
|
852
|
+
/** Peer participant for private and bot conversations. */
|
|
853
|
+
function resolveConversationPeerParticipant(conversation, currentUserId) {
|
|
854
|
+
const peerId = resolveConversationPeerUserId(conversation, currentUserId);
|
|
855
|
+
if (!peerId) {
|
|
856
|
+
return undefined;
|
|
857
|
+
}
|
|
858
|
+
return conversation.participants.find((participant) => participant.id === peerId);
|
|
859
|
+
}
|
|
860
|
+
/** Whether `auto` kind should render a registered user avatar for this conversation. */
|
|
803
861
|
function shouldUseUserAvatarForConversation(conversation, currentUserId) {
|
|
804
|
-
return
|
|
862
|
+
return !!resolveConversationPeerUserId(conversation, currentUserId);
|
|
805
863
|
}
|
|
806
864
|
function resolveUserAvatarDisplay(userId, conversation, message) {
|
|
807
865
|
if (message && conversation) {
|
|
@@ -822,14 +880,23 @@ function resolveConversationAvatarDisplay(conversation, currentUserId) {
|
|
|
822
880
|
const title = currentUserId !== undefined
|
|
823
881
|
? resolveConversationTitleForViewer(conversation, currentUserId)
|
|
824
882
|
: conversation.title;
|
|
883
|
+
const peer = resolveConversationPeerParticipant(conversation, currentUserId);
|
|
884
|
+
const conversationAvatar = AXConversationMessageUtilsService.getConversationAvatar(conversation);
|
|
885
|
+
const conversationIcon = AXConversationMessageUtilsService.getConversationAvatarIcon(conversation);
|
|
886
|
+
const peerAvatar = normalizeOptionalMediaValue(peer?.avatar);
|
|
887
|
+
const peerIcon = normalizeOptionalMediaValue(peer?.icon);
|
|
825
888
|
return {
|
|
826
889
|
name: title,
|
|
827
|
-
avatar:
|
|
828
|
-
icon:
|
|
890
|
+
avatar: conversationAvatar ?? peerAvatar,
|
|
891
|
+
icon: conversationIcon ?? (conversationAvatar ? undefined : peerIcon),
|
|
829
892
|
};
|
|
830
893
|
}
|
|
831
894
|
|
|
832
895
|
const AX_CONVERSATION_GENERIC_PRIVATE_TITLES = new Set(['', 'new chat', 'new conversation']);
|
|
896
|
+
/** Default Font Awesome icon for group conversations without a custom avatar image. */
|
|
897
|
+
const AX_CONVERSATION_DEFAULT_GROUP_ICON = 'fa-light fa-users';
|
|
898
|
+
/** Default Font Awesome icon for private/bot conversations without a custom avatar image. */
|
|
899
|
+
const AX_CONVERSATION_DEFAULT_USER_ICON = 'fa-light fa-user';
|
|
833
900
|
/** True when the stored title is a placeholder, not a user-defined name. */
|
|
834
901
|
function isGenericPrivateConversationTitle(title) {
|
|
835
902
|
return AX_CONVERSATION_GENERIC_PRIVATE_TITLES.has((title ?? '').trim().toLowerCase());
|
|
@@ -852,38 +919,34 @@ function resolvePrivatePeerParticipant(conversation, currentUserId) {
|
|
|
852
919
|
if (conversation.type !== 'private') {
|
|
853
920
|
return undefined;
|
|
854
921
|
}
|
|
855
|
-
|
|
856
|
-
if (!peerId) {
|
|
857
|
-
return undefined;
|
|
858
|
-
}
|
|
859
|
-
return conversation.participants.find((participant) => participant.id === peerId);
|
|
922
|
+
return resolveConversationPeerParticipant(conversation, currentUserId);
|
|
860
923
|
}
|
|
861
924
|
/**
|
|
862
925
|
* Resolves the display title for the current viewer.
|
|
863
|
-
* Private
|
|
926
|
+
* Private and bot peer-scoped chats show the other participant's name when no custom title is set.
|
|
864
927
|
*/
|
|
865
928
|
function resolveConversationTitleForViewer(conversation, currentUserId) {
|
|
866
|
-
if (conversation.type
|
|
929
|
+
if (!AX_CONVERSATION_PEER_AVATAR_TYPES.has(conversation.type)) {
|
|
867
930
|
return conversation.title;
|
|
868
931
|
}
|
|
869
|
-
const peer =
|
|
932
|
+
const peer = resolveConversationPeerParticipant(conversation, currentUserId);
|
|
870
933
|
if (peer?.name) {
|
|
871
934
|
return peer.name;
|
|
872
935
|
}
|
|
873
|
-
if (isGenericPrivateConversationTitle(conversation.title)) {
|
|
936
|
+
if (conversation.type === 'private' && isGenericPrivateConversationTitle(conversation.title)) {
|
|
874
937
|
return conversation.title || 'New Chat';
|
|
875
938
|
}
|
|
876
939
|
return conversation.title;
|
|
877
940
|
}
|
|
878
941
|
/**
|
|
879
|
-
* Returns a viewer-scoped copy of a conversation with dynamic
|
|
942
|
+
* Returns a viewer-scoped copy of a conversation with dynamic peer title/avatar/icon.
|
|
880
943
|
* Does not mutate the source object.
|
|
881
944
|
*/
|
|
882
945
|
function resolveConversationForViewer(conversation, currentUserId) {
|
|
883
|
-
if (conversation.type
|
|
946
|
+
if (!AX_CONVERSATION_PEER_AVATAR_TYPES.has(conversation.type) || !currentUserId) {
|
|
884
947
|
return conversation;
|
|
885
948
|
}
|
|
886
|
-
const peer =
|
|
949
|
+
const peer = resolveConversationPeerParticipant(conversation, currentUserId);
|
|
887
950
|
if (!peer) {
|
|
888
951
|
return conversation;
|
|
889
952
|
}
|
|
@@ -1999,15 +2062,22 @@ async function loadConversationFileTypes(catalogNames) {
|
|
|
1999
2062
|
}
|
|
2000
2063
|
return types;
|
|
2001
2064
|
}
|
|
2002
|
-
/**
|
|
2065
|
+
/** Built-in conversation catalogs (lazy-loaded on first registry resolve). */
|
|
2066
|
+
const AX_CONVERSATION_BUILTIN_FILE_CATALOGS = [
|
|
2067
|
+
AX_CONVERSATION_IMAGE_CATALOG,
|
|
2068
|
+
AX_CONVERSATION_VIDEO_CATALOG,
|
|
2069
|
+
AX_CONVERSATION_AUDIO_CATALOG,
|
|
2070
|
+
AX_CONVERSATION_FILE_CATALOG,
|
|
2071
|
+
AX_CONVERSATION_VOICE_CATALOG,
|
|
2072
|
+
];
|
|
2073
|
+
/**
|
|
2074
|
+
* Lazy-loads conversation file catalogs for the root file-type registry.
|
|
2075
|
+
* Must not inject {@link AXConversationComposerActionRegistry} — that registry
|
|
2076
|
+
* depends on {@link AXFileTypeRegistryService}, which would create a circular DI cycle.
|
|
2077
|
+
*/
|
|
2003
2078
|
class AXConversationComposerFileTypesProvider extends AXFileTypeInfoProvider {
|
|
2004
|
-
constructor() {
|
|
2005
|
-
super(...arguments);
|
|
2006
|
-
this.composerActions = inject(AXConversationComposerActionRegistry, { optional: true });
|
|
2007
|
-
}
|
|
2008
2079
|
async items() {
|
|
2009
|
-
|
|
2010
|
-
return loadConversationFileTypes(catalogNames);
|
|
2080
|
+
return loadConversationFileTypes([...AX_CONVERSATION_BUILTIN_FILE_CATALOGS]);
|
|
2011
2081
|
}
|
|
2012
2082
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXConversationComposerFileTypesProvider, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2013
2083
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXConversationComposerFileTypesProvider }); }
|
|
@@ -2163,7 +2233,6 @@ class AXConversationComposerActionRegistry {
|
|
|
2163
2233
|
...(ngDevMode ? [{ debugName: "_actions" }] : /* istanbul ignore next */ []));
|
|
2164
2234
|
this.translation = inject(AXTranslationService);
|
|
2165
2235
|
this.injector = inject(Injector);
|
|
2166
|
-
this.fileTypeRegistry = inject(AXFileTypeRegistryService);
|
|
2167
2236
|
this.composerTabRegistry = inject(AXConversationComposerTabRegistry);
|
|
2168
2237
|
/** All registered actions */
|
|
2169
2238
|
this.actions = this._actions.asReadonly();
|
|
@@ -2222,12 +2291,16 @@ class AXConversationComposerActionRegistry {
|
|
|
2222
2291
|
// Add to registry
|
|
2223
2292
|
this._actions.update((actions) => [...actions, action]);
|
|
2224
2293
|
if (action.fileType) {
|
|
2225
|
-
this.fileTypeRegistry.invalidateCache();
|
|
2294
|
+
this.fileTypeRegistry().invalidateCache();
|
|
2226
2295
|
void this.ensureFileTypeExists(action.fileType);
|
|
2227
2296
|
}
|
|
2228
2297
|
}
|
|
2298
|
+
/** Resolved lazily to avoid a DI cycle with {@link AXConversationComposerFileTypesProvider}. */
|
|
2299
|
+
fileTypeRegistry() {
|
|
2300
|
+
return this.injector.get(AXFileTypeRegistryService);
|
|
2301
|
+
}
|
|
2229
2302
|
async ensureFileTypeExists(fileType) {
|
|
2230
|
-
const match = await this.fileTypeRegistry.get(fileType);
|
|
2303
|
+
const match = await this.fileTypeRegistry().get(fileType);
|
|
2231
2304
|
if (!match) {
|
|
2232
2305
|
console.warn(`[AXConversationComposerActionRegistry] Unknown fileType "${fileType}". ` +
|
|
2233
2306
|
'Register its AXFileTypeInfoProvider in app providers before using this action.');
|
|
@@ -4049,7 +4122,10 @@ class AXConversationService {
|
|
|
4049
4122
|
title: isPrivate ? undefined : metadata?.['title'],
|
|
4050
4123
|
description: metadata?.['description'],
|
|
4051
4124
|
avatar: isPrivate ? undefined : AXConversationService.normalizeOptionalString(metadata?.['avatar']),
|
|
4052
|
-
icon: isPrivate
|
|
4125
|
+
icon: isPrivate
|
|
4126
|
+
? undefined
|
|
4127
|
+
: (AXConversationService.normalizeOptionalString(metadata?.['icon']) ??
|
|
4128
|
+
(type === 'group' ? AX_CONVERSATION_DEFAULT_GROUP_ICON : undefined)),
|
|
4053
4129
|
metadata: isPrivate ? undefined : metadata,
|
|
4054
4130
|
forceCreate,
|
|
4055
4131
|
};
|
|
@@ -6123,7 +6199,7 @@ class AXConversationAvatarComponent {
|
|
|
6123
6199
|
if (!conversation || this.resolvedKind() !== 'user') {
|
|
6124
6200
|
return undefined;
|
|
6125
6201
|
}
|
|
6126
|
-
return
|
|
6202
|
+
return resolveConversationPeerUserId(conversation, this.currentUserId());
|
|
6127
6203
|
}, /* @ts-ignore */
|
|
6128
6204
|
...(ngDevMode ? [{ debugName: "resolvedUserId" }] : /* istanbul ignore next */ []));
|
|
6129
6205
|
this.customComponent = computed(() => {
|
|
@@ -6136,9 +6212,17 @@ class AXConversationAvatarComponent {
|
|
|
6136
6212
|
...(ngDevMode ? [{ debugName: "customComponent" }] : /* istanbul ignore next */ []));
|
|
6137
6213
|
this.customInputs = computed(() => {
|
|
6138
6214
|
if (this.resolvedKind() === 'user') {
|
|
6215
|
+
const userId = this.resolvedUserId() ?? '';
|
|
6216
|
+
const resolved = resolveUserAvatarDisplay(userId, this.conversation(), this.message());
|
|
6217
|
+
const explicitName = this.name();
|
|
6218
|
+
const explicitAvatar = this.avatar();
|
|
6219
|
+
const explicitIcon = this.icon();
|
|
6139
6220
|
return {
|
|
6140
|
-
userId
|
|
6221
|
+
userId,
|
|
6141
6222
|
size: this.size(),
|
|
6223
|
+
displayName: explicitName ?? resolved.name,
|
|
6224
|
+
displayAvatar: explicitAvatar ?? resolved.avatar,
|
|
6225
|
+
displayIcon: explicitIcon ?? resolved.icon,
|
|
6142
6226
|
};
|
|
6143
6227
|
}
|
|
6144
6228
|
return {
|
|
@@ -8399,6 +8483,7 @@ class AXConversationNewDialogComponent extends AXBasePageComponent {
|
|
|
8399
8483
|
const metadata = {
|
|
8400
8484
|
title: this.groupTitle().trim(),
|
|
8401
8485
|
avatar: this.groupAvatar() || undefined,
|
|
8486
|
+
icon: AX_CONVERSATION_DEFAULT_GROUP_ICON,
|
|
8402
8487
|
};
|
|
8403
8488
|
conversation = await this.conversationService.createConversation(selectedIds, 'group', metadata);
|
|
8404
8489
|
}
|
|
@@ -8792,7 +8877,7 @@ function normalizeAllConversationMessageIndexes() {
|
|
|
8792
8877
|
}
|
|
8793
8878
|
|
|
8794
8879
|
/** Bump when demo seed shape changes so IndexedDB is reset on next connect. */
|
|
8795
|
-
const AX_CONVERSATION_DEMO_SEED_VERSION =
|
|
8880
|
+
const AX_CONVERSATION_DEMO_SEED_VERSION = 3;
|
|
8796
8881
|
|
|
8797
8882
|
/**
|
|
8798
8883
|
* Shared In-Memory Storage
|
|
@@ -9254,7 +9339,7 @@ async function seedSharedStorageInitialData(storage) {
|
|
|
9254
9339
|
type: 'group',
|
|
9255
9340
|
title: 'ACoreX Platform Team',
|
|
9256
9341
|
description: 'Sprint planning, releases, and blockers',
|
|
9257
|
-
|
|
9342
|
+
icon: AX_CONVERSATION_DEFAULT_GROUP_ICON,
|
|
9258
9343
|
participants: [
|
|
9259
9344
|
{ ...me, role: 'admin' },
|
|
9260
9345
|
{ ...alice, role: 'member' },
|
|
@@ -9806,6 +9891,7 @@ class AXConversationIndexedDbConversationApi extends AXConversationApi {
|
|
|
9806
9891
|
title: data.title ||
|
|
9807
9892
|
(data.type === 'private' ? 'New Chat' : data.type === 'group' ? 'New Group' : 'New Channel'),
|
|
9808
9893
|
avatar: data.avatar,
|
|
9894
|
+
icon: data.icon ?? (data.type === 'group' ? AX_CONVERSATION_DEFAULT_GROUP_ICON : undefined),
|
|
9809
9895
|
description: data.description,
|
|
9810
9896
|
participants: [...participantIds].map((id) => {
|
|
9811
9897
|
const participant = axConversationSharedStorage.participants.get(id);
|
|
@@ -16909,6 +16995,76 @@ const AX_CONVERSATION_TAB_ARCHIVED = {
|
|
|
16909
16995
|
* Conversation Tabs Plugins
|
|
16910
16996
|
*/
|
|
16911
16997
|
|
|
16998
|
+
/**
|
|
16999
|
+
* Default conversation avatar host when apps register only a user avatar component.
|
|
17000
|
+
* Routes private 1:1 chats through the user avatar; other types use built-in fallback display.
|
|
17001
|
+
*/
|
|
17002
|
+
class AXConversationDefaultConversationAvatarComponent {
|
|
17003
|
+
constructor() {
|
|
17004
|
+
this.conversationService = inject(AXConversationService, { optional: true });
|
|
17005
|
+
this.userAvatarComponent = inject(AX_CONVERSATION_USER_AVATAR_COMPONENT, { optional: true });
|
|
17006
|
+
this.conversationId = input.required(/* @ts-ignore */
|
|
17007
|
+
...(ngDevMode ? [{ debugName: "conversationId" }] : /* istanbul ignore next */ []));
|
|
17008
|
+
this.size = input(40, /* @ts-ignore */
|
|
17009
|
+
...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
|
|
17010
|
+
this.currentUserId = computed(() => this.conversationService?.currentUser()?.id, /* @ts-ignore */
|
|
17011
|
+
...(ngDevMode ? [{ debugName: "currentUserId" }] : /* istanbul ignore next */ []));
|
|
17012
|
+
this.conversation = computed(() => {
|
|
17013
|
+
const conversationId = this.conversationId();
|
|
17014
|
+
if (!conversationId) {
|
|
17015
|
+
return undefined;
|
|
17016
|
+
}
|
|
17017
|
+
return this.conversationService?.getConversation(conversationId) ?? undefined;
|
|
17018
|
+
}, /* @ts-ignore */
|
|
17019
|
+
...(ngDevMode ? [{ debugName: "conversation" }] : /* istanbul ignore next */ []));
|
|
17020
|
+
this.peerUserId = computed(() => {
|
|
17021
|
+
const conversation = this.conversation();
|
|
17022
|
+
if (!conversation || conversation.type !== 'private') {
|
|
17023
|
+
return undefined;
|
|
17024
|
+
}
|
|
17025
|
+
return resolveConversationPeerUserId(conversation, this.currentUserId());
|
|
17026
|
+
}, /* @ts-ignore */
|
|
17027
|
+
...(ngDevMode ? [{ debugName: "peerUserId" }] : /* istanbul ignore next */ []));
|
|
17028
|
+
this.useUserAvatar = computed(() => {
|
|
17029
|
+
const component = this.userAvatarComponent;
|
|
17030
|
+
const peerId = this.peerUserId();
|
|
17031
|
+
return component && peerId ? component : null;
|
|
17032
|
+
}, /* @ts-ignore */
|
|
17033
|
+
...(ngDevMode ? [{ debugName: "useUserAvatar" }] : /* istanbul ignore next */ []));
|
|
17034
|
+
this.userAvatarInputs = computed(() => {
|
|
17035
|
+
const userId = this.peerUserId() ?? '';
|
|
17036
|
+
const conversation = this.conversation();
|
|
17037
|
+
const resolved = resolveUserAvatarDisplay(userId, conversation);
|
|
17038
|
+
return {
|
|
17039
|
+
userId,
|
|
17040
|
+
size: this.size(),
|
|
17041
|
+
displayName: resolved.name,
|
|
17042
|
+
displayAvatar: resolved.avatar,
|
|
17043
|
+
displayIcon: resolved.icon,
|
|
17044
|
+
};
|
|
17045
|
+
}, /* @ts-ignore */
|
|
17046
|
+
...(ngDevMode ? [{ debugName: "userAvatarInputs" }] : /* istanbul ignore next */ []));
|
|
17047
|
+
this.fallbackDisplay = computed(() => {
|
|
17048
|
+
const conversation = this.conversation();
|
|
17049
|
+
if (!conversation) {
|
|
17050
|
+
return { name: '?', avatar: undefined, icon: undefined };
|
|
17051
|
+
}
|
|
17052
|
+
return resolveConversationAvatarDisplay(conversation, this.currentUserId());
|
|
17053
|
+
}, /* @ts-ignore */
|
|
17054
|
+
...(ngDevMode ? [{ debugName: "fallbackDisplay" }] : /* istanbul ignore next */ []));
|
|
17055
|
+
this.fallbackInitials = computed(() => AXConversationMessageUtilsService.getInitials(this.fallbackDisplay().name), /* @ts-ignore */
|
|
17056
|
+
...(ngDevMode ? [{ debugName: "fallbackInitials" }] : /* istanbul ignore next */ []));
|
|
17057
|
+
}
|
|
17058
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXConversationDefaultConversationAvatarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
17059
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXConversationDefaultConversationAvatarComponent, isStandalone: true, selector: "ax-conversation-default-conversation-avatar", inputs: { conversationId: { classPropertyName: "conversationId", publicName: "conversationId", isSignal: true, isRequired: true, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style.--ax-conversation-avatar-size.px": "size()" } }, ngImport: i0, template: "@if (useUserAvatar(); as userAvatar) {\n <ng-container *ngComponentOutlet=\"userAvatar; inputs: userAvatarInputs()\" />\n} @else {\n <ax-avatar [size]=\"size()\">\n @if (fallbackDisplay().avatar; as avatarSrc) {\n <ax-image [src]=\"avatarSrc\" [alt]=\"fallbackDisplay().name\"></ax-image>\n } @else if (fallbackDisplay().icon; as iconClass) {\n <ax-icon><i [class]=\"iconClass\" aria-hidden=\"true\"></i></ax-icon>\n } @else {\n <ax-label>{{ fallbackInitials() }}</ax-label>\n }\n </ax-avatar>\n}\n", dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }, { kind: "component", type: AXAvatarComponent, selector: "ax-avatar", inputs: ["color", "size", "shape", "look"], outputs: ["sizeChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: AXImageComponent, selector: "ax-image", inputs: ["width", "height", "overlayMode", "src", "alt", "priority", "lazy"], outputs: ["onLoad", "onError"] }, { kind: "component", type: AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
17060
|
+
}
|
|
17061
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXConversationDefaultConversationAvatarComponent, decorators: [{
|
|
17062
|
+
type: Component,
|
|
17063
|
+
args: [{ selector: 'ax-conversation-default-conversation-avatar', encapsulation: ViewEncapsulation.None, imports: [NgComponentOutlet, AXAvatarComponent, AXDecoratorModule, AXImageComponent, AXLabelComponent], host: {
|
|
17064
|
+
'[style.--ax-conversation-avatar-size.px]': 'size()',
|
|
17065
|
+
}, template: "@if (useUserAvatar(); as userAvatar) {\n <ng-container *ngComponentOutlet=\"userAvatar; inputs: userAvatarInputs()\" />\n} @else {\n <ax-avatar [size]=\"size()\">\n @if (fallbackDisplay().avatar; as avatarSrc) {\n <ax-image [src]=\"avatarSrc\" [alt]=\"fallbackDisplay().name\"></ax-image>\n } @else if (fallbackDisplay().icon; as iconClass) {\n <ax-icon><i [class]=\"iconClass\" aria-hidden=\"true\"></i></ax-icon>\n } @else {\n <ax-label>{{ fallbackInitials() }}</ax-label>\n }\n </ax-avatar>\n}\n" }]
|
|
17066
|
+
}], propDecorators: { conversationId: [{ type: i0.Input, args: [{ isSignal: true, alias: "conversationId", required: true }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }] } });
|
|
17067
|
+
|
|
16912
17068
|
/**
|
|
16913
17069
|
* AXConversationModule
|
|
16914
17070
|
* Legacy NgModule wrapper for backward compatibility.
|
|
@@ -16922,6 +17078,8 @@ const DECLARATIONS = [
|
|
|
16922
17078
|
AXConversationComposerComponent,
|
|
16923
17079
|
AXConversationInfiniteScrollDirective,
|
|
16924
17080
|
];
|
|
17081
|
+
/** Internal default conversation avatar host; not part of the public module API. */
|
|
17082
|
+
const INTERNAL_IMPORTS = [AXConversationDefaultConversationAvatarComponent];
|
|
16925
17083
|
/**
|
|
16926
17084
|
* Creates providers array for conversation module
|
|
16927
17085
|
*/
|
|
@@ -16963,6 +17121,12 @@ function createProviders(options, includeServices) {
|
|
|
16963
17121
|
useValue: avatarComponents.conversation,
|
|
16964
17122
|
});
|
|
16965
17123
|
}
|
|
17124
|
+
else if (avatarComponents?.user) {
|
|
17125
|
+
providers.push({
|
|
17126
|
+
provide: AX_CONVERSATION_CONVERSATION_AVATAR_COMPONENT,
|
|
17127
|
+
useValue: AXConversationDefaultConversationAvatarComponent,
|
|
17128
|
+
});
|
|
17129
|
+
}
|
|
16966
17130
|
if (includeServices) {
|
|
16967
17131
|
providers.push(AXConversationMessageRendererRegistry, AXConversationMessageActionRegistry, AXConversationComposerActionRegistry, AXConversationComposerTabRegistry, AXConversationTabRegistry, AXConversationInfoBarActionRegistry, AXConversationItemActionRegistry, AXConversationRegistryService);
|
|
16968
17132
|
}
|
|
@@ -16995,7 +17159,7 @@ class AXConversationModule {
|
|
|
16995
17159
|
AXConversationInfoBarComponent,
|
|
16996
17160
|
AXConversationMessageListComponent,
|
|
16997
17161
|
AXConversationComposerComponent,
|
|
16998
|
-
AXConversationInfiniteScrollDirective], exports: [AXConversationContainerComponent,
|
|
17162
|
+
AXConversationInfiniteScrollDirective, AXConversationDefaultConversationAvatarComponent], exports: [AXConversationContainerComponent,
|
|
16999
17163
|
AXConversationSidebarComponent,
|
|
17000
17164
|
AXConversationInfoBarComponent,
|
|
17001
17165
|
AXConversationMessageListComponent,
|
|
@@ -17005,12 +17169,12 @@ class AXConversationModule {
|
|
|
17005
17169
|
AXConversationSidebarComponent,
|
|
17006
17170
|
AXConversationInfoBarComponent,
|
|
17007
17171
|
AXConversationMessageListComponent,
|
|
17008
|
-
AXConversationComposerComponent] }); }
|
|
17172
|
+
AXConversationComposerComponent, INTERNAL_IMPORTS] }); }
|
|
17009
17173
|
}
|
|
17010
17174
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXConversationModule, decorators: [{
|
|
17011
17175
|
type: NgModule,
|
|
17012
17176
|
args: [{
|
|
17013
|
-
imports: [CommonModule, FormsModule, ...DECLARATIONS],
|
|
17177
|
+
imports: [CommonModule, FormsModule, ...DECLARATIONS, ...INTERNAL_IMPORTS],
|
|
17014
17178
|
exports: [...DECLARATIONS],
|
|
17015
17179
|
providers: [],
|
|
17016
17180
|
}]
|
|
@@ -17320,5 +17484,5 @@ function getErrorMessage(code, params) {
|
|
|
17320
17484
|
* Generated bundle index. Do not edit.
|
|
17321
17485
|
*/
|
|
17322
17486
|
|
|
17323
|
-
export { AXConversationAiResponderService, AXConversationApi, AXConversationApiLoggerService, AXConversationAudioAttachmentComponent, AXConversationAudioFileTypeProvider, AXConversationAudioPickerComponent, AXConversationAudioRendererComponent, AXConversationBaseRegistry, AXConversationComposerActionRegistry, AXConversationComposerComponent, AXConversationComposerFileTypesProvider, AXConversationComposerPopupComponent, AXConversationComposerService, AXConversationComposerTabRegistry, AXConversationContainerComponent, AXConversationContainerDirective, AXConversationDateUtilsService, AXConversationEmojiTabComponent, AXConversationErrorHandlerService, AXConversationFallbackRendererComponent, AXConversationFileAttachmentComponent, AXConversationFileFileTypeProvider, AXConversationFilePickerComponent, AXConversationFileRendererComponent, AXConversationForwardMessageDialogComponent, AXConversationImageAttachmentComponent, AXConversationImageFileTypeProvider, AXConversationImagePickerComponent, AXConversationImageRendererComponent, AXConversationIndexedDbConversationApi, AXConversationIndexedDbMessageAiApi, AXConversationIndexedDbMessageApi, AXConversationIndexedDbRealtimeApi, AXConversationIndexedDbStorage, AXConversationIndexedDbStores, AXConversationIndexedDbUserApi, AXConversationInfiniteScrollDirective, AXConversationInfoBarActionRegistry, AXConversationInfoBarComponent, AXConversationInfoBarSearchComponent, AXConversationInfoBarService, AXConversationInfoMediaViewComponent, AXConversationInfoPanelComponent, AXConversationItemActionRegistry, AXConversationLocationPickerComponent, AXConversationLocationRendererComponent, AXConversationMediaPlaybackInfoBarBannerComponent, AXConversationMessageActionRegistry, AXConversationMessageApi, AXConversationMessageListComponent, AXConversationMessageListNoActiveDefaultComponent, AXConversationMessageListService, AXConversationMessageRendererCopyHostComponent, AXConversationMessageRendererRegistry, AXConversationMessageRendererStateComponent, AXConversationMessageUtilsService, AXConversationModule, AXConversationNewDialogComponent, AXConversationPickerCaptionComponent, AXConversationPickerEmptyComponent, AXConversationPickerFooterComponent, AXConversationPickerHeaderComponent, AXConversationPickerShellComponent, AXConversationPickerToolbarComponent, AXConversationRealtimeApi, AXConversationRegistryService, AXConversationService, AXConversationSharedStorage, AXConversationSidebarComponent, AXConversationSidebarService, AXConversationStickerRendererComponent, AXConversationStickerTabComponent, AXConversationSystemRendererComponent, AXConversationTabRegistry, AXConversationTextRendererComponent, AXConversationUserApi, AXConversationVideoAttachmentComponent, AXConversationVideoFileTypeProvider, AXConversationVideoPickerComponent, AXConversationVideoRendererComponent, AXConversationVoiceFileTypeProvider, AXConversationVoiceRecorderComponent, AXConversationVoiceRendererComponent, AX_CONVERSATION_AI_API_KEY, AX_CONVERSATION_AUDIO_CATALOG, AX_CONVERSATION_AUDIO_PRESENTATION, AX_CONVERSATION_AUDIO_RENDERER, AX_CONVERSATION_BUILTIN_COMPOSER_TABS, AX_CONVERSATION_COMPOSER_AUDIO_ACTION, AX_CONVERSATION_COMPOSER_EMOJI_ACTION, AX_CONVERSATION_COMPOSER_EMOJI_TAB, AX_CONVERSATION_COMPOSER_FILE_ACTION, AX_CONVERSATION_COMPOSER_IMAGE_ACTION, AX_CONVERSATION_COMPOSER_LOCATION_ACTION, AX_CONVERSATION_COMPOSER_STICKER_TAB, AX_CONVERSATION_COMPOSER_VIDEO_ACTION, AX_CONVERSATION_COMPOSER_VOICE_RECORDING_ACTION, AX_CONVERSATION_CONFIG, AX_CONVERSATION_CONNECTION_ERRORS, AX_CONVERSATION_CONVERSATION_AVATAR_COMPONENT, AX_CONVERSATION_CURSOR_PREFIX, AX_CONVERSATION_DEFAULT_COMPOSER_ACTIONS, AX_CONVERSATION_DEFAULT_COMPOSER_TABS, AX_CONVERSATION_DEFAULT_CONVERSATION_ITEM_ACTIONS, AX_CONVERSATION_DEFAULT_CONVERSATION_TABS, AX_CONVERSATION_DEFAULT_INFO_BAR_ACTIONS, AX_CONVERSATION_DEFAULT_MESSAGE_ACTIONS, AX_CONVERSATION_DEFAULT_MESSAGE_LIST_BACKGROUND, AX_CONVERSATION_DEFAULT_MESSAGE_LIST_BACKGROUND_PRESET_ID, AX_CONVERSATION_DEFAULT_MESSAGE_LIST_THEME_BACKGROUND, AX_CONVERSATION_DEFAULT_MESSAGE_RENDERERS, AX_CONVERSATION_DEMO_CONVERSATION_IDS, AX_CONVERSATION_ERRORS, AX_CONVERSATION_ERROR_HANDLER_CONFIG, AX_CONVERSATION_ERROR_MESSAGES, AX_CONVERSATION_FALLBACK_RENDERER, AX_CONVERSATION_FILE_CATALOG, AX_CONVERSATION_FILE_ERRORS, AX_CONVERSATION_FILE_PRESENTATION, AX_CONVERSATION_FILE_RENDERER, AX_CONVERSATION_FILE_TYPES_READY, AX_CONVERSATION_IMAGE_CATALOG, AX_CONVERSATION_IMAGE_PRESENTATION, AX_CONVERSATION_IMAGE_RENDERER, AX_CONVERSATION_INFO_BAR_ARCHIVE_ACTION, AX_CONVERSATION_INFO_BAR_BLOCK_ACTION, AX_CONVERSATION_INFO_BAR_DELETE_ACTION, AX_CONVERSATION_INFO_BAR_DIVIDER, AX_CONVERSATION_INFO_BAR_MUTE_ACTION, AX_CONVERSATION_INFO_BAR_SEARCH_ACTION, AX_CONVERSATION_ITEM_BLOCK_ACTION, AX_CONVERSATION_ITEM_DELETE_ACTION, AX_CONVERSATION_ITEM_DIVIDER, AX_CONVERSATION_ITEM_MARK_READ_ACTION, AX_CONVERSATION_ITEM_MUTE_ACTION, AX_CONVERSATION_ITEM_PIN_ACTION, AX_CONVERSATION_LOCATION_ERRORS, AX_CONVERSATION_LOCATION_RENDERER, AX_CONVERSATION_MESSAGE_CURSOR_PREFIX, AX_CONVERSATION_MESSAGE_DELETE_ACTION, AX_CONVERSATION_MESSAGE_EDIT_ACTION, AX_CONVERSATION_MESSAGE_ERRORS, AX_CONVERSATION_MESSAGE_FORWARD_ACTION, AX_CONVERSATION_MESSAGE_LIST_BACKGROUND_PRESETS, AX_CONVERSATION_MESSAGE_REPLY_ACTION, AX_CONVERSATION_MESSAGE_TYPE_FILE_TYPE, AX_CONVERSATION_REGISTRY_CONFIG, AX_CONVERSATION_STICKER_API_KEY, AX_CONVERSATION_STICKER_RENDERER, AX_CONVERSATION_SYSTEM_RENDERER, AX_CONVERSATION_TAB_ALL, AX_CONVERSATION_TAB_ARCHIVED, AX_CONVERSATION_TAB_BOT, AX_CONVERSATION_TAB_CHANNELS, AX_CONVERSATION_TAB_GROUPS, AX_CONVERSATION_TAB_PRIVATE, AX_CONVERSATION_TAB_UNREAD, AX_CONVERSATION_TEXT_RENDERER, AX_CONVERSATION_URL_ERRORS, AX_CONVERSATION_USER_AVATAR_COMPONENT, AX_CONVERSATION_USER_ERRORS, AX_CONVERSATION_VIDEO_CATALOG, AX_CONVERSATION_VIDEO_PRESENTATION, AX_CONVERSATION_VIDEO_RENDERER, AX_CONVERSATION_VOICE_CATALOG, AX_CONVERSATION_VOICE_PRESENTATION, AX_CONVERSATION_VOICE_RENDERER, AX_DEFAULT_CONVERSATION_CONFIG, AX_MESSAGE_PAGINATION_CONVERSATION_ID, abortPickerUploads, applyAudioLocalPreview, applyConversationFilters, applyFileLocalPreview, applyLocalPreview, applyVideoLocalPreview, applyVoiceLocalPreview, audioItemFromUpload, axConversationIndexedDbStorage, axConversationSharedStorage, bindMediaRendererContentState, buildMediaGalleryTiles, canShowRendererContentError, cleanupPickerUploads, conversationAudioUtilities, conversationFileUtilities, conversationImageUtilities, conversationVideoUtilities, conversationVoiceUtilities, copyWithFileTypeFallback, createConversationAudioFileType, createConversationFileFileType, createConversationImageFileType, createConversationVideoFileType, createConversationVoiceFileType, createLocalPreviewUrl, createObjectUrl, createPickerDragHandlers, createResolvedMediaUrlSignal, deleteUploadedPickerMedia, dismissComposerPickerHost, encodeConversationCursor, encodeMessageCursor, ensurePaginationDemoData, fetchConversationMediaMessages, fetchConversationMediaPage, fileItemFromUpload, filterMessagesByMediaCategory, filterSupplementalInfoPanelMessages, findExistingPrivateConversation, formatDuration, formatErrorMessage, formatFileByteSize, formatFileSize, formatMediaDuration, formatPickerValidationMessage, getConversationLastActivity, getConversationMediaCategories, getConversationMessagesNewestFirst, getConversationProfileFields, getErrorMessage, getMessageAudioItems, getMessageVideoItems, getPickerCancelUploadLabel, getPrivatePeerParticipant, getSortedConversationsForInbox, inferFileExtensionHintFromMessage, isAttachmentListCategory, isComposerTabEnabled, isConversationReactionsEnabled, isGenericPrivateConversationTitle, isGridMediaCategory, isMessageDeliveryPending, isMessageListThemeBackground, isNonPersistableMediaUrl, isPickerItemReadyToSend, isSameMessageListBackground, isUploadAborted, limitFilesToCapacity, mediaCopyText, mergeAudioUploadResult, mergeFileUploadResult, mergeInfoPanelMessages, mergeUploadResult, mergeVideoUploadResult, mergeVoiceUploadResult, mergeWithDefaults, messageContainsLink, normalizeAllConversationMessageIndexes, normalizeAudioPayload, normalizeFilePayload, normalizeImagePayload, normalizeMessageListBackgroundValue, normalizeMessagePayload, normalizeMessagePayloadAsync, normalizeVideoPayload, notifyMaxFilesCapacityExceeded, notifyPickerValidationErrors, openWithFileType, paginateChatNewestFirst, paginateChatOldestFirst, parseChatCursor, pickDisplayMediaUrl, pickerItemToMediaReference, pickerItemToUploadResult, provideConversation, provideConversationComposerFileTypes, provideConversationFileCatalog, registerChatMessage, reportMediaLoadError, resolveComposerMaxFiles, resolveConversationAvatarDisplay, resolveConversationComposerTabs, resolveConversationForViewer, resolveConversationMessageFileType, resolveConversationTitleForViewer, resolveGalleryImageUrl, resolveImageDisplayUrl, resolveMessageListBackgroundRaw, resolveMessageListBackgroundStyle, resolveParticipantProfile, resolvePersistableMediaUrl, resolvePersistedThumbnailUrl, resolvePrivatePeerParticipant, resolvePrivatePeerUserId, resolveUserAvatarDisplay, resolveVideoThumbnailUrl, revokeObjectUrl, revokePickerBlobPreviews, sanitizeInput, seedPickerInitialFiles, seedSharedStorageInitialData, shouldUseUserAvatarForConversation, sortConversationMessageIds, syncPlaybackInfoBarBanner, toUploaderReference as toMediaItemUploaderReference, toUploaderReference$1 as toUploaderReference, unregisterChatMessage, uploadPickerFile, validateConversationId, validateEmail, validateLatitude, validateLongitude, validateMessagePayload, validateMessageText, validateMessageType, validateUrl, validateUserId, validateUserIds, videoItemFromUpload };
|
|
17487
|
+
export { AXConversationAiResponderService, AXConversationApi, AXConversationApiLoggerService, AXConversationAudioAttachmentComponent, AXConversationAudioFileTypeProvider, AXConversationAudioPickerComponent, AXConversationAudioRendererComponent, AXConversationBaseRegistry, AXConversationComposerActionRegistry, AXConversationComposerComponent, AXConversationComposerFileTypesProvider, AXConversationComposerPopupComponent, AXConversationComposerService, AXConversationComposerTabRegistry, AXConversationContainerComponent, AXConversationContainerDirective, AXConversationDateUtilsService, AXConversationEmojiTabComponent, AXConversationErrorHandlerService, AXConversationFallbackRendererComponent, AXConversationFileAttachmentComponent, AXConversationFileFileTypeProvider, AXConversationFilePickerComponent, AXConversationFileRendererComponent, AXConversationForwardMessageDialogComponent, AXConversationImageAttachmentComponent, AXConversationImageFileTypeProvider, AXConversationImagePickerComponent, AXConversationImageRendererComponent, AXConversationIndexedDbConversationApi, AXConversationIndexedDbMessageAiApi, AXConversationIndexedDbMessageApi, AXConversationIndexedDbRealtimeApi, AXConversationIndexedDbStorage, AXConversationIndexedDbStores, AXConversationIndexedDbUserApi, AXConversationInfiniteScrollDirective, AXConversationInfoBarActionRegistry, AXConversationInfoBarComponent, AXConversationInfoBarSearchComponent, AXConversationInfoBarService, AXConversationInfoMediaViewComponent, AXConversationInfoPanelComponent, AXConversationItemActionRegistry, AXConversationLocationPickerComponent, AXConversationLocationRendererComponent, AXConversationMediaPlaybackInfoBarBannerComponent, AXConversationMessageActionRegistry, AXConversationMessageApi, AXConversationMessageListComponent, AXConversationMessageListNoActiveDefaultComponent, AXConversationMessageListService, AXConversationMessageRendererCopyHostComponent, AXConversationMessageRendererRegistry, AXConversationMessageRendererStateComponent, AXConversationMessageUtilsService, AXConversationModule, AXConversationNewDialogComponent, AXConversationPickerCaptionComponent, AXConversationPickerEmptyComponent, AXConversationPickerFooterComponent, AXConversationPickerHeaderComponent, AXConversationPickerShellComponent, AXConversationPickerToolbarComponent, AXConversationRealtimeApi, AXConversationRegistryService, AXConversationService, AXConversationSharedStorage, AXConversationSidebarComponent, AXConversationSidebarService, AXConversationStickerRendererComponent, AXConversationStickerTabComponent, AXConversationSystemRendererComponent, AXConversationTabRegistry, AXConversationTextRendererComponent, AXConversationUserApi, AXConversationVideoAttachmentComponent, AXConversationVideoFileTypeProvider, AXConversationVideoPickerComponent, AXConversationVideoRendererComponent, AXConversationVoiceFileTypeProvider, AXConversationVoiceRecorderComponent, AXConversationVoiceRendererComponent, AX_CONVERSATION_AI_API_KEY, AX_CONVERSATION_AUDIO_CATALOG, AX_CONVERSATION_AUDIO_PRESENTATION, AX_CONVERSATION_AUDIO_RENDERER, AX_CONVERSATION_BUILTIN_COMPOSER_TABS, AX_CONVERSATION_COMPOSER_AUDIO_ACTION, AX_CONVERSATION_COMPOSER_EMOJI_ACTION, AX_CONVERSATION_COMPOSER_EMOJI_TAB, AX_CONVERSATION_COMPOSER_FILE_ACTION, AX_CONVERSATION_COMPOSER_IMAGE_ACTION, AX_CONVERSATION_COMPOSER_LOCATION_ACTION, AX_CONVERSATION_COMPOSER_STICKER_TAB, AX_CONVERSATION_COMPOSER_VIDEO_ACTION, AX_CONVERSATION_COMPOSER_VOICE_RECORDING_ACTION, AX_CONVERSATION_CONFIG, AX_CONVERSATION_CONNECTION_ERRORS, AX_CONVERSATION_CONVERSATION_AVATAR_COMPONENT, AX_CONVERSATION_CURSOR_PREFIX, AX_CONVERSATION_DEFAULT_COMPOSER_ACTIONS, AX_CONVERSATION_DEFAULT_COMPOSER_TABS, AX_CONVERSATION_DEFAULT_CONVERSATION_ITEM_ACTIONS, AX_CONVERSATION_DEFAULT_CONVERSATION_TABS, AX_CONVERSATION_DEFAULT_GROUP_ICON, AX_CONVERSATION_DEFAULT_INFO_BAR_ACTIONS, AX_CONVERSATION_DEFAULT_MESSAGE_ACTIONS, AX_CONVERSATION_DEFAULT_MESSAGE_LIST_BACKGROUND, AX_CONVERSATION_DEFAULT_MESSAGE_LIST_BACKGROUND_PRESET_ID, AX_CONVERSATION_DEFAULT_MESSAGE_LIST_THEME_BACKGROUND, AX_CONVERSATION_DEFAULT_MESSAGE_RENDERERS, AX_CONVERSATION_DEFAULT_USER_ICON, AX_CONVERSATION_DEMO_CONVERSATION_IDS, AX_CONVERSATION_ERRORS, AX_CONVERSATION_ERROR_HANDLER_CONFIG, AX_CONVERSATION_ERROR_MESSAGES, AX_CONVERSATION_FALLBACK_RENDERER, AX_CONVERSATION_FILE_CATALOG, AX_CONVERSATION_FILE_ERRORS, AX_CONVERSATION_FILE_PRESENTATION, AX_CONVERSATION_FILE_RENDERER, AX_CONVERSATION_FILE_TYPES_READY, AX_CONVERSATION_IMAGE_CATALOG, AX_CONVERSATION_IMAGE_PRESENTATION, AX_CONVERSATION_IMAGE_RENDERER, AX_CONVERSATION_INFO_BAR_ARCHIVE_ACTION, AX_CONVERSATION_INFO_BAR_BLOCK_ACTION, AX_CONVERSATION_INFO_BAR_DELETE_ACTION, AX_CONVERSATION_INFO_BAR_DIVIDER, AX_CONVERSATION_INFO_BAR_MUTE_ACTION, AX_CONVERSATION_INFO_BAR_SEARCH_ACTION, AX_CONVERSATION_ITEM_BLOCK_ACTION, AX_CONVERSATION_ITEM_DELETE_ACTION, AX_CONVERSATION_ITEM_DIVIDER, AX_CONVERSATION_ITEM_MARK_READ_ACTION, AX_CONVERSATION_ITEM_MUTE_ACTION, AX_CONVERSATION_ITEM_PIN_ACTION, AX_CONVERSATION_LOCATION_ERRORS, AX_CONVERSATION_LOCATION_RENDERER, AX_CONVERSATION_MESSAGE_CURSOR_PREFIX, AX_CONVERSATION_MESSAGE_DELETE_ACTION, AX_CONVERSATION_MESSAGE_EDIT_ACTION, AX_CONVERSATION_MESSAGE_ERRORS, AX_CONVERSATION_MESSAGE_FORWARD_ACTION, AX_CONVERSATION_MESSAGE_LIST_BACKGROUND_PRESETS, AX_CONVERSATION_MESSAGE_REPLY_ACTION, AX_CONVERSATION_MESSAGE_TYPE_FILE_TYPE, AX_CONVERSATION_PEER_AVATAR_TYPES, AX_CONVERSATION_REGISTRY_CONFIG, AX_CONVERSATION_STICKER_API_KEY, AX_CONVERSATION_STICKER_RENDERER, AX_CONVERSATION_SYSTEM_RENDERER, AX_CONVERSATION_TAB_ALL, AX_CONVERSATION_TAB_ARCHIVED, AX_CONVERSATION_TAB_BOT, AX_CONVERSATION_TAB_CHANNELS, AX_CONVERSATION_TAB_GROUPS, AX_CONVERSATION_TAB_PRIVATE, AX_CONVERSATION_TAB_UNREAD, AX_CONVERSATION_TEXT_RENDERER, AX_CONVERSATION_URL_ERRORS, AX_CONVERSATION_USER_AVATAR_COMPONENT, AX_CONVERSATION_USER_ERRORS, AX_CONVERSATION_VIDEO_CATALOG, AX_CONVERSATION_VIDEO_PRESENTATION, AX_CONVERSATION_VIDEO_RENDERER, AX_CONVERSATION_VOICE_CATALOG, AX_CONVERSATION_VOICE_PRESENTATION, AX_CONVERSATION_VOICE_RENDERER, AX_DEFAULT_CONVERSATION_CONFIG, AX_MESSAGE_PAGINATION_CONVERSATION_ID, abortPickerUploads, applyAudioLocalPreview, applyConversationFilters, applyFileLocalPreview, applyLocalPreview, applyVideoLocalPreview, applyVoiceLocalPreview, audioItemFromUpload, axConversationIndexedDbStorage, axConversationSharedStorage, bindMediaRendererContentState, buildMediaGalleryTiles, canShowRendererContentError, cleanupPickerUploads, conversationAudioUtilities, conversationFileUtilities, conversationImageUtilities, conversationVideoUtilities, conversationVoiceUtilities, copyWithFileTypeFallback, createConversationAudioFileType, createConversationFileFileType, createConversationImageFileType, createConversationVideoFileType, createConversationVoiceFileType, createLocalPreviewUrl, createObjectUrl, createPickerDragHandlers, createResolvedMediaUrlSignal, deleteUploadedPickerMedia, dismissComposerPickerHost, encodeConversationCursor, encodeMessageCursor, ensurePaginationDemoData, fetchConversationMediaMessages, fetchConversationMediaPage, fileItemFromUpload, filterMessagesByMediaCategory, filterSupplementalInfoPanelMessages, findExistingPrivateConversation, formatDuration, formatErrorMessage, formatFileByteSize, formatFileSize, formatMediaDuration, formatPickerValidationMessage, getConversationLastActivity, getConversationMediaCategories, getConversationMessagesNewestFirst, getConversationProfileFields, getErrorMessage, getMessageAudioItems, getMessageVideoItems, getPickerCancelUploadLabel, getPrivatePeerParticipant, getSortedConversationsForInbox, inferFileExtensionHintFromMessage, isAttachmentListCategory, isComposerTabEnabled, isConversationReactionsEnabled, isGenericPrivateConversationTitle, isGridMediaCategory, isMessageDeliveryPending, isMessageListThemeBackground, isNonPersistableMediaUrl, isPickerItemReadyToSend, isSameMessageListBackground, isUploadAborted, limitFilesToCapacity, mediaCopyText, mergeAudioUploadResult, mergeFileUploadResult, mergeInfoPanelMessages, mergeUploadResult, mergeVideoUploadResult, mergeVoiceUploadResult, mergeWithDefaults, messageContainsLink, normalizeAllConversationMessageIndexes, normalizeAudioPayload, normalizeFilePayload, normalizeImagePayload, normalizeMessageListBackgroundValue, normalizeMessagePayload, normalizeMessagePayloadAsync, normalizeVideoPayload, notifyMaxFilesCapacityExceeded, notifyPickerValidationErrors, openWithFileType, paginateChatNewestFirst, paginateChatOldestFirst, parseChatCursor, pickDisplayMediaUrl, pickerItemToMediaReference, pickerItemToUploadResult, provideConversation, provideConversationComposerFileTypes, provideConversationFileCatalog, registerChatMessage, reportMediaLoadError, resolveComposerMaxFiles, resolveConversationAvatarDisplay, resolveConversationComposerTabs, resolveConversationForViewer, resolveConversationMessageFileType, resolveConversationPeerParticipant, resolveConversationPeerUserId, resolveConversationTitleForViewer, resolveGalleryImageUrl, resolveImageDisplayUrl, resolveMessageListBackgroundRaw, resolveMessageListBackgroundStyle, resolveParticipantProfile, resolvePersistableMediaUrl, resolvePersistedThumbnailUrl, resolvePrivatePeerParticipant, resolvePrivatePeerUserId, resolveUserAvatarDisplay, resolveVideoThumbnailUrl, revokeObjectUrl, revokePickerBlobPreviews, sanitizeInput, seedPickerInitialFiles, seedSharedStorageInitialData, shouldUseUserAvatarForConversation, sortConversationMessageIds, syncPlaybackInfoBarBanner, toUploaderReference as toMediaItemUploaderReference, toUploaderReference$1 as toUploaderReference, unregisterChatMessage, uploadPickerFile, validateConversationId, validateEmail, validateLatitude, validateLongitude, validateMessagePayload, validateMessageText, validateMessageType, validateUrl, validateUserId, validateUserIds, videoItemFromUpload };
|
|
17324
17488
|
//# sourceMappingURL=acorex-components-conversation.mjs.map
|