@banta/sdk 4.8.1 → 4.9.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.
- package/esm2020/lib/banta/banta.component.mjs +3 -3
- package/esm2020/lib/chat/banta-chat/banta-chat.component.mjs +5 -3
- package/esm2020/lib/chat-backend-base.mjs +1 -1
- package/esm2020/lib/chat-backend.mjs +80 -12
- package/esm2020/lib/chat-source-base.mjs +1 -1
- package/esm2020/lib/chat-source.mjs +7 -2
- package/esm2020/lib/comments/attachment-button/attachment-button.component.mjs +17 -10
- package/esm2020/lib/comments/banta-comments/banta-comments.component.mjs +7 -5
- package/esm2020/lib/comments/comment/comment.component.mjs +88 -130
- package/esm2020/lib/comments/comment-field/comment-field.component.mjs +124 -144
- package/esm2020/lib/comments/comment-view/comment-view.component.mjs +72 -70
- package/esm2020/lib/comments/live-comment.component.mjs +1 -1
- package/esm2020/lib/emoji/emoji-selector-button.component.mjs +7 -4
- package/esm2020/lib/static-chat-source.mjs +71 -0
- package/fesm2015/banta-sdk.mjs +500 -382
- package/fesm2015/banta-sdk.mjs.map +1 -1
- package/fesm2020/banta-sdk.mjs +469 -375
- package/fesm2020/banta-sdk.mjs.map +1 -1
- package/lib/chat/banta-chat/banta-chat.component.d.ts +2 -1
- package/lib/chat-backend-base.d.ts +4 -0
- package/lib/chat-backend.d.ts +29 -4
- package/lib/chat-source-base.d.ts +8 -0
- package/lib/chat-source.d.ts +2 -0
- package/lib/comments/attachment-button/attachment-button.component.d.ts +3 -2
- package/lib/comments/banta-comments/banta-comments.component.d.ts +5 -1
- package/lib/comments/comment/comment.component.d.ts +41 -39
- package/lib/comments/comment-field/comment-field.component.d.ts +38 -40
- package/lib/comments/comment-view/comment-view.component.d.ts +43 -41
- package/lib/emoji/emoji-selector-button.component.d.ts +2 -1
- package/lib/static-chat-source.d.ts +42 -0
- package/package.json +1 -1
|
@@ -15,6 +15,7 @@ export declare class BantaChatComponent {
|
|
|
15
15
|
private _subs;
|
|
16
16
|
user: User;
|
|
17
17
|
shouldInterceptMessageSend?: (message: ChatMessage, source: ChatSourceBase) => boolean | Promise<boolean>;
|
|
18
|
+
url: string;
|
|
18
19
|
ngOnInit(): void;
|
|
19
20
|
ngOnDestroy(): void;
|
|
20
21
|
get source(): ChatSourceBase;
|
|
@@ -65,5 +66,5 @@ export declare class BantaChatComponent {
|
|
|
65
66
|
newMessage: NewMessageForm;
|
|
66
67
|
sendMessage(): Promise<void>;
|
|
67
68
|
static ɵfac: i0.ɵɵFactoryDeclaration<BantaChatComponent, never>;
|
|
68
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<BantaChatComponent, "banta-chat", never, { "shouldInterceptMessageSend": "shouldInterceptMessageSend"; "source": "source"; "topicID": "topicID"; "signInLabel": "signInLabel"; "sendLabel": "sendLabel"; "permissionDeniedLabel": "permissionDeniedLabel"; "messageFieldPlaceholder": "messageFieldPlaceholder"; "emptyLabel": "emptyLabel"; }, { "selected": "selected"; "reported": "reported"; "upvoted": "upvoted"; "userSelected": "userSelected"; "permissionDeniedError": "permissionDeniedError"; "signInSelected": "signInSelected"; "received": "received"; }, never, never, false>;
|
|
69
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<BantaChatComponent, "banta-chat", never, { "shouldInterceptMessageSend": "shouldInterceptMessageSend"; "url": "url"; "source": "source"; "topicID": "topicID"; "signInLabel": "signInLabel"; "sendLabel": "sendLabel"; "permissionDeniedLabel": "permissionDeniedLabel"; "messageFieldPlaceholder": "messageFieldPlaceholder"; "emptyLabel": "emptyLabel"; }, { "selected": "selected"; "reported": "reported"; "upvoted": "upvoted"; "userSelected": "userSelected"; "permissionDeniedError": "permissionDeniedError"; "signInSelected": "signInSelected"; "received": "received"; }, never, never, false>;
|
|
69
70
|
}
|
|
@@ -5,6 +5,10 @@ import { AttachmentResolver, AttachmentScraper } from './attachment-scraper';
|
|
|
5
5
|
export interface ChatSourceOptions {
|
|
6
6
|
sortOrder?: CommentsOrder;
|
|
7
7
|
filterMode?: FilterMode;
|
|
8
|
+
/**
|
|
9
|
+
* How many messages should be loaded initially?
|
|
10
|
+
*/
|
|
11
|
+
initialMessageCount?: number;
|
|
8
12
|
}
|
|
9
13
|
export declare abstract class ChatBackendBase {
|
|
10
14
|
constructor();
|
package/lib/chat-backend.d.ts
CHANGED
|
@@ -1,23 +1,48 @@
|
|
|
1
|
-
import { ChatMessage, Notification, UrlCard } from "@banta/common";
|
|
1
|
+
import { ChatMessage, CommentsOrder, FilterMode, Notification, Topic, UrlCard } from "@banta/common";
|
|
2
2
|
import { Observable } from "rxjs";
|
|
3
3
|
import { ChatBackendBase, ChatSourceOptions } from "./chat-backend-base";
|
|
4
|
-
import { ChatSource } from "./chat-source";
|
|
5
4
|
import { ChatSourceBase } from "./chat-source-base";
|
|
6
5
|
import { SdkOptions } from "./sdk-options";
|
|
7
6
|
import * as i0 from "@angular/core";
|
|
8
7
|
export declare class ChatBackend extends ChatBackendBase {
|
|
9
8
|
private options;
|
|
10
|
-
|
|
9
|
+
private platformId;
|
|
10
|
+
constructor(options: SdkOptions, platformId: any);
|
|
11
11
|
get serviceUrl(): string;
|
|
12
12
|
private connectToService;
|
|
13
|
+
private isServer;
|
|
14
|
+
/**
|
|
15
|
+
* Check if we are currently running inside a Googlebot user agent or via the Google inspection tool in Search Console.
|
|
16
|
+
* We'll use this to avoid WebSockets so that comments can be indexable.
|
|
17
|
+
* @returns
|
|
18
|
+
*/
|
|
19
|
+
private isGooglebot;
|
|
13
20
|
getSourceForTopic(topicId: string, options?: ChatSourceOptions): Promise<ChatSourceBase>;
|
|
14
|
-
getSourceForThread(topicId: string, messageId: string, options?: ChatSourceOptions): Promise<
|
|
21
|
+
getSourceForThread(topicId: string, messageId: string, options?: ChatSourceOptions): Promise<ChatSourceBase>;
|
|
15
22
|
/**
|
|
16
23
|
* Get the count of the given topic
|
|
17
24
|
* @param topicId
|
|
18
25
|
* @returns
|
|
19
26
|
*/
|
|
20
27
|
getSourceCountForTopic(topicId: string): Promise<number>;
|
|
28
|
+
/**
|
|
29
|
+
* Get the count of the given topic
|
|
30
|
+
* @param topicId
|
|
31
|
+
* @returns
|
|
32
|
+
*/
|
|
33
|
+
getTopic(topicId: string): Promise<Topic>;
|
|
34
|
+
/**
|
|
35
|
+
* Get a set of messages from the given topic.
|
|
36
|
+
* @param topicId
|
|
37
|
+
* @returns
|
|
38
|
+
*/
|
|
39
|
+
getMessages(topicId: string, sort?: CommentsOrder, filter?: FilterMode, offset?: number, limit?: number): Promise<ChatMessage[]>;
|
|
40
|
+
/**
|
|
41
|
+
* Get a set of messages from the given topic.
|
|
42
|
+
* @param topicId
|
|
43
|
+
* @returns
|
|
44
|
+
*/
|
|
45
|
+
getReplies(parentMessageId: string, sort?: CommentsOrder, filter?: FilterMode, offset?: number, limit?: number): Promise<ChatMessage[]>;
|
|
21
46
|
refreshMessage(message: ChatMessage): Promise<ChatMessage>;
|
|
22
47
|
getMessage(topicId: string, messageId: string): Promise<ChatMessage>;
|
|
23
48
|
getSubMessage(topicId: string, parentMessageId: string, messageId: string): Promise<ChatMessage>;
|
|
@@ -32,5 +32,13 @@ export interface ChatSourceBase {
|
|
|
32
32
|
deleteMessage(messageId: string): Promise<void>;
|
|
33
33
|
connectionStateChanged?: Observable<'connected' | 'connecting' | 'lost' | 'restored'>;
|
|
34
34
|
state?: 'connecting' | 'connected' | 'lost' | 'restored';
|
|
35
|
+
/**
|
|
36
|
+
* When true, this source is readonly, so messages cannot be sent/edited/deleted, nor liked/unliked.
|
|
37
|
+
*/
|
|
38
|
+
readonly?: boolean;
|
|
39
|
+
/**
|
|
40
|
+
* When true/undefined, the source supports loading more messages. When false, it does not.
|
|
41
|
+
*/
|
|
42
|
+
canLoadMore?: boolean;
|
|
35
43
|
get errorState(): any;
|
|
36
44
|
}
|
package/lib/chat-source.d.ts
CHANGED
|
@@ -12,6 +12,8 @@ export declare class ChatSource extends SocketRPC implements ChatSourceBase {
|
|
|
12
12
|
private options;
|
|
13
13
|
private subscription;
|
|
14
14
|
private markReady;
|
|
15
|
+
readonly: boolean;
|
|
16
|
+
canLoadMore: boolean;
|
|
15
17
|
ready: Promise<void>;
|
|
16
18
|
permissions: ChatPermissions;
|
|
17
19
|
private _state;
|
|
@@ -6,11 +6,12 @@ export declare class AttachmentButtonComponent {
|
|
|
6
6
|
constructor(cdnProvider: CDNProvider);
|
|
7
7
|
private _addedAttachment;
|
|
8
8
|
private _attachmentError;
|
|
9
|
-
|
|
9
|
+
disabled: boolean;
|
|
10
10
|
get addedAttachment(): import("rxjs").Observable<ChatMessageAttachment>;
|
|
11
11
|
get attachmentError(): import("rxjs").Observable<ChatMessageAttachment>;
|
|
12
|
+
fileInput: ElementRef<HTMLInputElement>;
|
|
12
13
|
show(): void;
|
|
13
14
|
fileChange(event: Event): Promise<void>;
|
|
14
15
|
static ɵfac: i0.ɵɵFactoryDeclaration<AttachmentButtonComponent, never>;
|
|
15
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<AttachmentButtonComponent, "banta-attachment-button", never, {}, { "addedAttachment": "addedAttachment"; "attachmentError": "attachmentError"; }, never, never, false>;
|
|
16
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AttachmentButtonComponent, "banta-attachment-button", never, { "disabled": "disabled"; }, { "addedAttachment": "addedAttachment"; "attachmentError": "attachmentError"; }, never, never, false>;
|
|
16
17
|
}
|
|
@@ -50,6 +50,10 @@ export declare class BantaCommentsComponent {
|
|
|
50
50
|
private startLoading;
|
|
51
51
|
private _loadingTimer;
|
|
52
52
|
private _loadingMessageIndex;
|
|
53
|
+
/**
|
|
54
|
+
* The canonical URL where this comment section can be found. If not specified, uses the current URL.
|
|
55
|
+
*/
|
|
56
|
+
url: string;
|
|
53
57
|
maxCommentLength: number;
|
|
54
58
|
loadingMessages: string[];
|
|
55
59
|
useInlineReplies: boolean;
|
|
@@ -188,5 +192,5 @@ export declare class BantaCommentsComponent {
|
|
|
188
192
|
startEditing(message: ChatMessage): Promise<void>;
|
|
189
193
|
saveEdit(message: ChatMessage, text: string): Promise<void>;
|
|
190
194
|
static ɵfac: i0.ɵɵFactoryDeclaration<BantaCommentsComponent, never>;
|
|
191
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<BantaCommentsComponent, "banta-comments", never, { "customMenuItems": "customMenuItems"; "maxCommentLength": "maxCommentLength"; "loadingMessages": "loadingMessages"; "useInlineReplies": "useInlineReplies"; "signInLabel": "signInLabel"; "sendLabel": "sendLabel"; "signingInLabel": "signingInLabel"; "replyLabel": "replyLabel"; "sendingLabel": "sendingLabel"; "permissionDeniedLabel": "permissionDeniedLabel"; "postCommentLabel": "postCommentLabel"; "postReplyLabel": "postReplyLabel"; "allowAttachments": "allowAttachments"; "fixedHeight": "fixedHeight"; "maxMessages": "maxMessages"; "maxVisibleMessages": "maxVisibleMessages"; "genericAvatarUrl": "genericAvatarUrl"; "shouldInterceptMessageSend": "shouldInterceptMessageSend"; "participants": "participants"; "source": "source"; "hashtags": "hashtags"; "topicID": "topicID"; "sortOrder": "sortOrder"; "filterMode": "filterMode"; }, { "signInSelected": "signInSelected"; "editAvatarSelected": "editAvatarSelected"; "permissionDeniedError": "permissionDeniedError"; "upvoted": "upvoted"; "reported": "reported"; "selected": "selected"; "userSelected": "userSelected"; "usernameSelected": "usernameSelected"; "avatarSelected": "avatarSelected"; "shared": "shared"; }, ["sendReplyOptionsTemplate"], never, false>;
|
|
195
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<BantaCommentsComponent, "banta-comments", never, { "customMenuItems": "customMenuItems"; "url": "url"; "maxCommentLength": "maxCommentLength"; "loadingMessages": "loadingMessages"; "useInlineReplies": "useInlineReplies"; "signInLabel": "signInLabel"; "sendLabel": "sendLabel"; "signingInLabel": "signingInLabel"; "replyLabel": "replyLabel"; "sendingLabel": "sendingLabel"; "permissionDeniedLabel": "permissionDeniedLabel"; "postCommentLabel": "postCommentLabel"; "postReplyLabel": "postReplyLabel"; "allowAttachments": "allowAttachments"; "fixedHeight": "fixedHeight"; "maxMessages": "maxMessages"; "maxVisibleMessages": "maxVisibleMessages"; "genericAvatarUrl": "genericAvatarUrl"; "shouldInterceptMessageSend": "shouldInterceptMessageSend"; "participants": "participants"; "source": "source"; "hashtags": "hashtags"; "topicID": "topicID"; "sortOrder": "sortOrder"; "filterMode": "filterMode"; }, { "signInSelected": "signInSelected"; "editAvatarSelected": "editAvatarSelected"; "permissionDeniedError": "permissionDeniedError"; "upvoted": "upvoted"; "reported": "reported"; "selected": "selected"; "userSelected": "userSelected"; "usernameSelected": "usernameSelected"; "avatarSelected": "avatarSelected"; "shared": "shared"; }, ["sendReplyOptionsTemplate"], never, false>;
|
|
192
196
|
}
|
|
@@ -1,12 +1,24 @@
|
|
|
1
1
|
import { ElementRef } from "@angular/core";
|
|
2
|
-
import { Subject } from 'rxjs';
|
|
3
2
|
import { ChatMessage, ChatPermissions, User } from '@banta/common';
|
|
4
3
|
import { MessageMenuItem } from "../../message-menu-item";
|
|
5
4
|
import * as i0 from "@angular/core";
|
|
6
5
|
export declare class CommentComponent {
|
|
7
6
|
private elementRef;
|
|
8
7
|
constructor(elementRef: ElementRef<HTMLElement>);
|
|
9
|
-
|
|
8
|
+
ngOnInit(): void;
|
|
9
|
+
get message(): ChatMessage;
|
|
10
|
+
set message(value: ChatMessage);
|
|
11
|
+
private _message;
|
|
12
|
+
private isLoaded;
|
|
13
|
+
editedMessage: string;
|
|
14
|
+
customMenuItems: MessageMenuItem[];
|
|
15
|
+
showReplyAction: boolean;
|
|
16
|
+
maxLength: number;
|
|
17
|
+
permissions: ChatPermissions;
|
|
18
|
+
mine: boolean;
|
|
19
|
+
editing: boolean;
|
|
20
|
+
genericAvatarUrl: string;
|
|
21
|
+
readonly: boolean;
|
|
10
22
|
private _reported;
|
|
11
23
|
private _selected;
|
|
12
24
|
private _liked;
|
|
@@ -15,56 +27,46 @@ export declare class CommentComponent {
|
|
|
15
27
|
private _userSelected;
|
|
16
28
|
private _avatarSelected;
|
|
17
29
|
private _usernameSelected;
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
30
|
+
private _editStarted;
|
|
31
|
+
private _deleted;
|
|
32
|
+
private _editEnded;
|
|
33
|
+
private _edited;
|
|
34
|
+
private _loaded;
|
|
35
|
+
readonly liked: import("rxjs").Observable<void>;
|
|
36
|
+
readonly unliked: import("rxjs").Observable<void>;
|
|
37
|
+
readonly selected: import("rxjs").Observable<void>;
|
|
38
|
+
readonly edited: import("rxjs").Observable<string>;
|
|
39
|
+
readonly deleted: import("rxjs").Observable<void>;
|
|
40
|
+
readonly editStarted: import("rxjs").Observable<void>;
|
|
41
|
+
readonly editEnded: import("rxjs").Observable<void>;
|
|
42
|
+
readonly shared: import("rxjs").Observable<ChatMessage>;
|
|
43
|
+
readonly userSelected: import("rxjs").Observable<void>;
|
|
44
|
+
readonly usernameSelected: import("rxjs").Observable<User>;
|
|
45
|
+
readonly avatarSelected: import("rxjs").Observable<User>;
|
|
46
|
+
readonly reported: import("rxjs").Observable<void>;
|
|
47
|
+
readonly loaded: import("rxjs").Observable<void>;
|
|
48
|
+
get commentId(): string;
|
|
21
49
|
isNew: boolean;
|
|
22
50
|
get isHighlighted(): any;
|
|
23
51
|
visible: boolean;
|
|
24
|
-
|
|
25
|
-
get
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
private isLoaded;
|
|
31
|
-
waitForLoad(): Promise<boolean>;
|
|
32
|
-
get userSelected(): import("rxjs").Observable<void>;
|
|
33
|
-
get usernameSelected(): import("rxjs").Observable<User>;
|
|
34
|
-
get avatarSelected(): import("rxjs").Observable<User>;
|
|
35
|
-
get reported(): import("rxjs").Observable<void>;
|
|
36
|
-
permissions: ChatPermissions;
|
|
37
|
-
mine: boolean;
|
|
38
|
-
editing: boolean;
|
|
39
|
-
editedMessage: string;
|
|
52
|
+
get replyCount(): number;
|
|
53
|
+
get element(): HTMLElement;
|
|
54
|
+
avatarForUser(user: User): string;
|
|
55
|
+
waitForLoad(): Promise<void>;
|
|
56
|
+
private setMessage;
|
|
57
|
+
markAttachmentsLoaded(): void;
|
|
40
58
|
saveEdit(): void;
|
|
41
59
|
endEditing(): void;
|
|
42
|
-
startEdit(): void;
|
|
43
60
|
delete(): void;
|
|
44
|
-
get liked(): import("rxjs").Observable<void>;
|
|
45
|
-
get unliked(): import("rxjs").Observable<void>;
|
|
46
|
-
get selected(): import("rxjs").Observable<void>;
|
|
47
|
-
private _editStarted;
|
|
48
|
-
private _deleted;
|
|
49
|
-
private _editEnded;
|
|
50
|
-
private _edited;
|
|
51
|
-
get edited(): import("rxjs").Observable<string>;
|
|
52
|
-
get deleted(): import("rxjs").Observable<void>;
|
|
53
|
-
get editStarted(): import("rxjs").Observable<void>;
|
|
54
|
-
get editEnded(): import("rxjs").Observable<void>;
|
|
55
|
-
get shared(): import("rxjs").Observable<ChatMessage>;
|
|
56
|
-
genericAvatarUrl: string;
|
|
57
|
-
get commentId(): string;
|
|
58
61
|
report(): void;
|
|
59
62
|
like(): void;
|
|
60
63
|
unlike(): void;
|
|
61
64
|
share(): void;
|
|
62
65
|
select(): void;
|
|
63
66
|
selectUser(): void;
|
|
67
|
+
startEdit(): void;
|
|
64
68
|
selectUsername(user: User): void;
|
|
65
69
|
selectAvatar(user: User): void;
|
|
66
|
-
avatarForUser(user: User): string;
|
|
67
|
-
get replyCount(): number;
|
|
68
70
|
static ɵfac: i0.ɵɵFactoryDeclaration<CommentComponent, never>;
|
|
69
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<CommentComponent, "banta-comment", never, { "
|
|
71
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CommentComponent, "banta-comment", never, { "message": "message"; "customMenuItems": "customMenuItems"; "showReplyAction": "showReplyAction"; "maxLength": "maxLength"; "permissions": "permissions"; "mine": "mine"; "editing": "editing"; "genericAvatarUrl": "genericAvatarUrl"; "readonly": "readonly"; }, { "liked": "liked"; "unliked": "unliked"; "selected": "selected"; "edited": "edited"; "deleted": "deleted"; "editStarted": "editStarted"; "editEnded": "editEnded"; "shared": "shared"; "userSelected": "userSelected"; "usernameSelected": "usernameSelected"; "avatarSelected": "avatarSelected"; "reported": "reported"; "loaded": "loaded"; }, never, never, false>;
|
|
70
72
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { ElementRef } from "@angular/core";
|
|
2
2
|
import { ChatMessage, ChatMessageAttachment, User } from "@banta/common";
|
|
3
|
-
import {
|
|
4
|
-
import { ChatBackendBase } from "../../chat-backend-base";
|
|
3
|
+
import { Subject } from "rxjs";
|
|
5
4
|
import { ChatSourceBase } from "../../chat-source-base";
|
|
6
5
|
import { SignInState } from "../../chat-source";
|
|
7
6
|
import * as i0 from "@angular/core";
|
|
@@ -14,28 +13,28 @@ export interface HashTag {
|
|
|
14
13
|
description: string;
|
|
15
14
|
}
|
|
16
15
|
export declare class CommentFieldComponent {
|
|
17
|
-
|
|
18
|
-
constructor(chatBackend: ChatBackendBase);
|
|
16
|
+
ngAfterViewInit(): void;
|
|
19
17
|
private _source;
|
|
20
18
|
get source(): ChatSourceBase;
|
|
21
19
|
set source(value: ChatSourceBase);
|
|
20
|
+
private _permissionDeniedError;
|
|
21
|
+
private errorTimeout;
|
|
22
22
|
private _subs;
|
|
23
|
+
sending: boolean;
|
|
24
|
+
sendError: Error;
|
|
25
|
+
expandError: boolean;
|
|
26
|
+
autocompleteVisible: boolean;
|
|
27
|
+
autocompleteOptions: AutoCompleteOption[];
|
|
28
|
+
completionFunc: (str: string) => AutoCompleteOption[];
|
|
29
|
+
completionPrefix: string;
|
|
30
|
+
autoCompleteSelected: number;
|
|
31
|
+
text: string;
|
|
32
|
+
chatMessageAttachments: ChatMessageAttachment[];
|
|
23
33
|
user: User;
|
|
24
34
|
canComment: boolean;
|
|
25
35
|
signInState: SignInState;
|
|
26
36
|
allowAttachments: boolean;
|
|
27
|
-
signInSelected: Subject<void>;
|
|
28
|
-
editAvatarSelected: Subject<void>;
|
|
29
|
-
focusChange: Subject<boolean>;
|
|
30
|
-
sending: boolean;
|
|
31
|
-
sendError: Error;
|
|
32
|
-
expandError: boolean;
|
|
33
37
|
transientMessage: string;
|
|
34
|
-
private _text;
|
|
35
|
-
get text(): string;
|
|
36
|
-
set text(value: string);
|
|
37
|
-
get indicatorState(): "none" | "error" | "transient" | "sending";
|
|
38
|
-
get buttonState(): "signing-in" | "sending" | "permission-denied" | "send";
|
|
39
38
|
sendLabel: string;
|
|
40
39
|
signingInLabel: string;
|
|
41
40
|
sendingLabel: string;
|
|
@@ -44,48 +43,47 @@ export declare class CommentFieldComponent {
|
|
|
44
43
|
signInLabel: string;
|
|
45
44
|
maxLength: number;
|
|
46
45
|
placeholder: string;
|
|
47
|
-
textChanged: Subject<void>;
|
|
48
46
|
shouldInterceptMessageSend?: (message: ChatMessage, source: ChatSourceBase) => boolean | Promise<boolean>;
|
|
49
|
-
autocompleteEl: ElementRef<HTMLElement>;
|
|
50
|
-
autocompleteContainerEl: ElementRef<HTMLElement>;
|
|
51
|
-
textareaEl: ElementRef<HTMLTextAreaElement>;
|
|
52
47
|
hashtags: HashTag[];
|
|
53
48
|
participants: User[];
|
|
54
49
|
genericAvatarUrl: string;
|
|
50
|
+
url: string;
|
|
51
|
+
submit: (message: ChatMessage) => boolean;
|
|
52
|
+
readonly: boolean;
|
|
53
|
+
signInSelected: Subject<void>;
|
|
54
|
+
editAvatarSelected: Subject<void>;
|
|
55
|
+
focusChange: Subject<boolean>;
|
|
56
|
+
textChanged: Subject<void>;
|
|
57
|
+
get permissionDeniedError(): Subject<string>;
|
|
58
|
+
autocompleteEl: ElementRef<HTMLElement>;
|
|
59
|
+
autocompleteContainerEl: ElementRef<HTMLElement>;
|
|
60
|
+
textareaEl: ElementRef<HTMLTextAreaElement>;
|
|
61
|
+
get indicatorState(): "none" | "error" | "transient" | "sending";
|
|
62
|
+
get buttonState(): "signing-in" | "sending" | "permission-denied" | "send";
|
|
63
|
+
get sendButtonEnabled(): boolean;
|
|
55
64
|
get userAvatarUrl(): string;
|
|
56
|
-
|
|
57
|
-
get
|
|
58
|
-
|
|
65
|
+
get isValidMessage(): string | boolean;
|
|
66
|
+
get hasPendingAttachments(): boolean;
|
|
67
|
+
private setSource;
|
|
59
68
|
sendPermissionDenied(message: string): void;
|
|
60
|
-
showAutoComplete(options: AutoCompleteOption[]): void;
|
|
61
|
-
autocompleteVisible: boolean;
|
|
62
|
-
autocompleteOptions: AutoCompleteOption[];
|
|
63
69
|
activateAutoComplete(option: AutoCompleteOption): void;
|
|
70
|
+
onFocus(): void;
|
|
71
|
+
onBlur(): void;
|
|
72
|
+
showSignIn(): void;
|
|
73
|
+
showEditAvatar(): void;
|
|
74
|
+
insertEmoji(text: string): void;
|
|
75
|
+
showAutoComplete(options: AutoCompleteOption[]): void;
|
|
64
76
|
dismissAutoComplete(): void;
|
|
65
|
-
private errorTimeout;
|
|
66
77
|
indicateError(message: string): void;
|
|
67
|
-
completionFunc: (str: string) => AutoCompleteOption[];
|
|
68
|
-
completionPrefix: string;
|
|
69
|
-
autoCompleteSelected: number;
|
|
70
|
-
get isValidMessage(): string | boolean;
|
|
71
|
-
get hasPendingAttachments(): boolean;
|
|
72
|
-
get sendButtonEnabled(): boolean;
|
|
73
78
|
autocomplete(replacement: string): Promise<void>;
|
|
74
79
|
insert(str: string): Promise<void>;
|
|
75
80
|
onKeyDown(event: KeyboardEvent): Promise<void>;
|
|
76
81
|
startAutoComplete(event: KeyboardEvent, completionFunc: (str: string) => AutoCompleteOption[]): void;
|
|
77
|
-
onFocus(): void;
|
|
78
|
-
onBlur(): void;
|
|
79
|
-
insertEmoji(text: string): void;
|
|
80
|
-
showSignIn(): void;
|
|
81
|
-
showEditAvatar(): void;
|
|
82
|
-
submit: (message: ChatMessage) => boolean;
|
|
83
82
|
sendMessage(): Promise<void>;
|
|
84
|
-
chatMessageAttachments: ChatMessageAttachment[];
|
|
85
83
|
addedAttachment(attachment: ChatMessageAttachment): void;
|
|
86
84
|
attachmentError(attachment: ChatMessageAttachment): void;
|
|
87
85
|
removeAttachment(attachment: ChatMessageAttachment): void;
|
|
88
86
|
alertError(): void;
|
|
89
87
|
static ɵfac: i0.ɵɵFactoryDeclaration<CommentFieldComponent, never>;
|
|
90
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<CommentFieldComponent, "banta-comment-field", never, { "source": "source"; "user": "user"; "canComment": "canComment"; "signInState": "signInState"; "allowAttachments": "allowAttachments"; "transientMessage": "transientMessage"; "sendLabel": "sendLabel"; "signingInLabel": "signingInLabel"; "sendingLabel": "sendingLabel"; "label": "label"; "permissionDeniedLabel": "permissionDeniedLabel"; "signInLabel": "signInLabel"; "maxLength": "maxLength"; "placeholder": "placeholder"; "shouldInterceptMessageSend": "shouldInterceptMessageSend"; "hashtags": "hashtags"; "participants": "participants"; "genericAvatarUrl": "genericAvatarUrl"; "submit": "submit"; }, { "signInSelected": "signInSelected"; "editAvatarSelected": "editAvatarSelected"; "focusChange": "focusChange"; "textChanged": "textChanged"; "permissionDeniedError": "permissionDeniedError"; }, never, ["*"], false>;
|
|
88
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CommentFieldComponent, "banta-comment-field", never, { "source": "source"; "user": "user"; "canComment": "canComment"; "signInState": "signInState"; "allowAttachments": "allowAttachments"; "transientMessage": "transientMessage"; "sendLabel": "sendLabel"; "signingInLabel": "signingInLabel"; "sendingLabel": "sendingLabel"; "label": "label"; "permissionDeniedLabel": "permissionDeniedLabel"; "signInLabel": "signInLabel"; "maxLength": "maxLength"; "placeholder": "placeholder"; "shouldInterceptMessageSend": "shouldInterceptMessageSend"; "hashtags": "hashtags"; "participants": "participants"; "genericAvatarUrl": "genericAvatarUrl"; "url": "url"; "submit": "submit"; "readonly": "readonly"; }, { "signInSelected": "signInSelected"; "editAvatarSelected": "editAvatarSelected"; "focusChange": "focusChange"; "textChanged": "textChanged"; "permissionDeniedError": "permissionDeniedError"; }, never, ["*"], false>;
|
|
91
89
|
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { ElementRef, QueryList } from "@angular/core";
|
|
2
2
|
import { User, ChatMessage, CommentsOrder, FilterMode } from '@banta/common';
|
|
3
|
-
import { Subject } from 'rxjs';
|
|
4
3
|
import { ChatBackendBase } from "../../chat-backend-base";
|
|
5
4
|
import { ChatSourceBase } from "../../chat-source-base";
|
|
6
5
|
import { MessageMenuItem } from "../../message-menu-item";
|
|
@@ -14,8 +13,33 @@ export declare class CommentViewComponent {
|
|
|
14
13
|
private backend;
|
|
15
14
|
private elementRef;
|
|
16
15
|
constructor(backend: ChatBackendBase, elementRef: ElementRef<HTMLElement>);
|
|
17
|
-
private _sourceSubs;
|
|
18
16
|
private _source;
|
|
17
|
+
get source(): ChatSourceBase;
|
|
18
|
+
set source(value: ChatSourceBase);
|
|
19
|
+
private _sourceSubs;
|
|
20
|
+
menuMessage: ChatMessage;
|
|
21
|
+
messages: ChatMessage[];
|
|
22
|
+
currentUser: User;
|
|
23
|
+
customSortEnabled: boolean;
|
|
24
|
+
markSourceLoaded: () => void;
|
|
25
|
+
sourceLoaded: Promise<void>;
|
|
26
|
+
isViewingMore: boolean;
|
|
27
|
+
isLoadingMore: boolean;
|
|
28
|
+
hasMore: boolean;
|
|
29
|
+
newMessages: ChatMessage[];
|
|
30
|
+
olderMessages: ChatMessage[];
|
|
31
|
+
maxMessages: number;
|
|
32
|
+
maxVisibleMessages: number;
|
|
33
|
+
newestLast: boolean;
|
|
34
|
+
holdNewMessages: boolean;
|
|
35
|
+
showEmptyState: boolean;
|
|
36
|
+
allowReplies: boolean;
|
|
37
|
+
enableHoldOnClick: boolean;
|
|
38
|
+
enableHoldOnScroll: boolean;
|
|
39
|
+
customMenuItems: MessageMenuItem[];
|
|
40
|
+
fixedHeight: boolean;
|
|
41
|
+
selectedMessage: ChatMessage;
|
|
42
|
+
genericAvatarUrl: string;
|
|
19
43
|
private _selected;
|
|
20
44
|
private _liked;
|
|
21
45
|
private _unliked;
|
|
@@ -26,12 +50,22 @@ export declare class CommentViewComponent {
|
|
|
26
50
|
private _shared;
|
|
27
51
|
private _deleted;
|
|
28
52
|
private _messageEdited;
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
53
|
+
private _sortOrderChanged;
|
|
54
|
+
private _filterModeChanged;
|
|
55
|
+
readonly userSelected: import("rxjs").Observable<ChatMessage>;
|
|
56
|
+
readonly reported: import("rxjs").Observable<ChatMessage>;
|
|
57
|
+
readonly liked: import("rxjs").Observable<ChatMessage>;
|
|
58
|
+
readonly unliked: import("rxjs").Observable<ChatMessage>;
|
|
59
|
+
readonly usernameSelected: import("rxjs").Observable<User>;
|
|
60
|
+
readonly avatarSelected: import("rxjs").Observable<User>;
|
|
61
|
+
readonly shared: import("rxjs").Observable<ChatMessage>;
|
|
62
|
+
readonly deleted: import("rxjs").Observable<ChatMessage>;
|
|
63
|
+
readonly selected: import("rxjs").Observable<ChatMessage>;
|
|
64
|
+
readonly messageEdited: import("rxjs").Observable<EditEvent>;
|
|
65
|
+
readonly sortOrderChanged: import("rxjs").Observable<CommentsOrder>;
|
|
66
|
+
readonly filterModeChanged: import("rxjs").Observable<FilterMode>;
|
|
34
67
|
commentsQuery: QueryList<CommentComponent>;
|
|
68
|
+
messageContainer: ElementRef<HTMLElement>;
|
|
35
69
|
get comments(): CommentComponent[];
|
|
36
70
|
/**
|
|
37
71
|
* Returns true if this message can be found within one of the message buffers (older, current, newer)
|
|
@@ -50,23 +84,7 @@ export declare class CommentViewComponent {
|
|
|
50
84
|
* @returns
|
|
51
85
|
*/
|
|
52
86
|
getCommentComponentForMessage(message: ChatMessage): CommentComponent;
|
|
53
|
-
fixedHeight: boolean;
|
|
54
|
-
selectedMessage: ChatMessage;
|
|
55
|
-
get selected(): Subject<ChatMessage>;
|
|
56
|
-
get messageEdited(): import("rxjs").Observable<EditEvent>;
|
|
57
87
|
saveEdit(message: ChatMessage, newMessage: string): void;
|
|
58
|
-
get userSelected(): Subject<ChatMessage>;
|
|
59
|
-
get reported(): Subject<ChatMessage>;
|
|
60
|
-
get liked(): Subject<ChatMessage>;
|
|
61
|
-
get unliked(): Subject<ChatMessage>;
|
|
62
|
-
get usernameSelected(): Subject<User>;
|
|
63
|
-
get avatarSelected(): Subject<User>;
|
|
64
|
-
get shared(): Subject<ChatMessage>;
|
|
65
|
-
get deleted(): Subject<ChatMessage>;
|
|
66
|
-
menuMessage: ChatMessage;
|
|
67
|
-
messages: ChatMessage[];
|
|
68
|
-
currentUser: User;
|
|
69
|
-
get source(): ChatSourceBase;
|
|
70
88
|
likeMessage(message: ChatMessage): void;
|
|
71
89
|
unlikeMessage(message: ChatMessage): void;
|
|
72
90
|
reportMessage(message: ChatMessage): void;
|
|
@@ -77,25 +95,9 @@ export declare class CommentViewComponent {
|
|
|
77
95
|
sharedMessage(message: ChatMessage): void;
|
|
78
96
|
startEditing(message: ChatMessage): void;
|
|
79
97
|
deleteMessage(message: ChatMessage): void;
|
|
80
|
-
|
|
81
|
-
markSourceLoaded: () => void;
|
|
82
|
-
sourceLoaded: Promise<void>;
|
|
83
|
-
set source(value: ChatSourceBase);
|
|
98
|
+
private setSource;
|
|
84
99
|
private getInitialMessages;
|
|
85
|
-
genericAvatarUrl: string;
|
|
86
|
-
messageContainer: ElementRef<HTMLElement>;
|
|
87
|
-
maxMessages: number;
|
|
88
|
-
maxVisibleMessages: number;
|
|
89
|
-
newestLast: boolean;
|
|
90
|
-
holdNewMessages: boolean;
|
|
91
|
-
isViewingMore: boolean;
|
|
92
|
-
isLoadingMore: boolean;
|
|
93
|
-
hasMore: boolean;
|
|
94
|
-
newMessages: ChatMessage[];
|
|
95
|
-
olderMessages: ChatMessage[];
|
|
96
100
|
messageIdentity(index: number, chatMessage: ChatMessage): string;
|
|
97
|
-
sortOrderChanged: Subject<CommentsOrder>;
|
|
98
|
-
filterModeChanged: Subject<FilterMode>;
|
|
99
101
|
showNew(event: MouseEvent): Promise<void>;
|
|
100
102
|
showMore(): Promise<void>;
|
|
101
103
|
private addMessage;
|
|
@@ -115,5 +117,5 @@ export declare class CommentViewComponent {
|
|
|
115
117
|
getElementForComment(commentId: string): Element;
|
|
116
118
|
mentionsMe(message: ChatMessage): boolean;
|
|
117
119
|
static ɵfac: i0.ɵɵFactoryDeclaration<CommentViewComponent, never>;
|
|
118
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<CommentViewComponent, "banta-comment-view", never, { "
|
|
120
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CommentViewComponent, "banta-comment-view", never, { "source": "source"; "maxMessages": "maxMessages"; "maxVisibleMessages": "maxVisibleMessages"; "newestLast": "newestLast"; "holdNewMessages": "holdNewMessages"; "showEmptyState": "showEmptyState"; "allowReplies": "allowReplies"; "enableHoldOnClick": "enableHoldOnClick"; "enableHoldOnScroll": "enableHoldOnScroll"; "customMenuItems": "customMenuItems"; "fixedHeight": "fixedHeight"; "selectedMessage": "selectedMessage"; "genericAvatarUrl": "genericAvatarUrl"; }, { "userSelected": "userSelected"; "reported": "reported"; "liked": "liked"; "unliked": "unliked"; "usernameSelected": "usernameSelected"; "avatarSelected": "avatarSelected"; "shared": "shared"; "deleted": "deleted"; "selected": "selected"; "messageEdited": "messageEdited"; "sortOrderChanged": "sortOrderChanged"; "filterModeChanged": "filterModeChanged"; }, never, ["[data-before]", ".inline-replies", ":not([data-before]):not(.inline-replies)"], false>;
|
|
119
121
|
}
|
|
@@ -19,11 +19,12 @@ export declare class EmojiSelectorButtonComponent {
|
|
|
19
19
|
*/
|
|
20
20
|
insert(str: any): void;
|
|
21
21
|
close(): void;
|
|
22
|
+
disabled: boolean;
|
|
22
23
|
overlayX: 'start' | 'center' | 'end';
|
|
23
24
|
overlayY: 'top' | 'center' | 'bottom';
|
|
24
25
|
originX: 'start' | 'center' | 'end';
|
|
25
26
|
originY: 'top' | 'center' | 'bottom';
|
|
26
27
|
show(): void;
|
|
27
28
|
static ɵfac: i0.ɵɵFactoryDeclaration<EmojiSelectorButtonComponent, never>;
|
|
28
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<EmojiSelectorButtonComponent, "emoji-selector-button", never, { "overlayX": "overlayX"; "overlayY": "overlayY"; "originX": "originX"; "originY": "originY"; }, { "selected": "selected"; }, never, never, false>;
|
|
29
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<EmojiSelectorButtonComponent, "emoji-selector-button", never, { "disabled": "disabled"; "overlayX": "overlayX"; "overlayY": "overlayY"; "originX": "originX"; "originY": "originY"; }, { "selected": "selected"; }, never, never, false>;
|
|
29
30
|
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { ChatMessage, ChatPermissions, CommentsOrder, FilterMode } from "@banta/common";
|
|
2
|
+
import { ChatSourceBase } from "./chat-source-base";
|
|
3
|
+
import { Subject } from "rxjs";
|
|
4
|
+
import { ChatBackend } from "./chat-backend";
|
|
5
|
+
import { ChatSourceOptions } from "./chat-backend-base";
|
|
6
|
+
/**
|
|
7
|
+
* A special ChatSource which uses the REST API to load a limited number of chat messages, and does not support
|
|
8
|
+
* sending/editing/deleting messages, liking/unliking, or loading more messages.
|
|
9
|
+
*
|
|
10
|
+
* This is used within Banta's SSR support.
|
|
11
|
+
*/
|
|
12
|
+
export declare class StaticChatSource implements ChatSourceBase {
|
|
13
|
+
private backend;
|
|
14
|
+
readonly identifier: string;
|
|
15
|
+
readonly parentIdentifier?: string;
|
|
16
|
+
constructor(backend: ChatBackend, identifier: string, parentIdentifier?: string, options?: ChatSourceOptions);
|
|
17
|
+
initialMessageCount: number;
|
|
18
|
+
sortOrder: CommentsOrder;
|
|
19
|
+
filterMode: FilterMode;
|
|
20
|
+
permissions: ChatPermissions;
|
|
21
|
+
ready: Promise<void>;
|
|
22
|
+
readonly: boolean;
|
|
23
|
+
canLoadMore: boolean;
|
|
24
|
+
messageReceived: Subject<ChatMessage>;
|
|
25
|
+
messageObserved: Subject<ChatMessage>;
|
|
26
|
+
messageUpdated: Subject<ChatMessage>;
|
|
27
|
+
messageSent: Subject<ChatMessage>;
|
|
28
|
+
messages: ChatMessage[];
|
|
29
|
+
send(message: ChatMessage): Promise<ChatMessage>;
|
|
30
|
+
close(): void;
|
|
31
|
+
getCount(): Promise<number>;
|
|
32
|
+
getExistingMessages(): Promise<ChatMessage[]>;
|
|
33
|
+
loadAfter(message: ChatMessage, count: number): Promise<ChatMessage[]>;
|
|
34
|
+
get(id: string): Promise<ChatMessage>;
|
|
35
|
+
likeMessage(messageId: string): Promise<void>;
|
|
36
|
+
unlikeMessage(messageId: string): Promise<void>;
|
|
37
|
+
editMessage(messageId: string, text: string): Promise<void>;
|
|
38
|
+
deleteMessage(messageId: string): Promise<void>;
|
|
39
|
+
connectionStateChanged: Subject<"connected" | "connecting" | "lost" | "restored">;
|
|
40
|
+
state: 'connecting' | 'connected' | 'lost' | 'restored';
|
|
41
|
+
get errorState(): any;
|
|
42
|
+
}
|