@banta/sdk 4.7.16 → 4.8.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 +1 -1
- package/esm2020/lib/chat-backend-base.mjs +1 -1
- package/esm2020/lib/chat-backend.mjs +4 -4
- package/esm2020/lib/chat-source-base.mjs +1 -1
- package/esm2020/lib/chat-source.mjs +10 -4
- package/esm2020/lib/comments/banta-comments/banta-comments.component.mjs +60 -17
- package/esm2020/lib/comments/comment-field/comment-field.component.mjs +10 -3
- package/esm2020/lib/comments/comment-sort/comment-sort.component.mjs +3 -3
- package/esm2020/lib/comments/comment-view/comment-view.component.mjs +104 -15
- package/fesm2015/banta-sdk.mjs +227 -78
- package/fesm2015/banta-sdk.mjs.map +1 -1
- package/fesm2020/banta-sdk.mjs +223 -78
- package/fesm2020/banta-sdk.mjs.map +1 -1
- package/lib/chat-backend-base.d.ts +3 -2
- package/lib/chat-source-base.d.ts +2 -1
- package/lib/chat-source.d.ts +5 -2
- package/lib/comments/banta-comments/banta-comments.component.d.ts +20 -2
- package/lib/comments/comment-field/comment-field.component.d.ts +3 -1
- package/lib/comments/comment-view/comment-view.component.d.ts +15 -4
- package/package.json +1 -1
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { Observable } from 'rxjs';
|
|
2
|
-
import { ChatMessage, CommentsOrder, Notification, User, UrlCard } from '@banta/common';
|
|
2
|
+
import { ChatMessage, CommentsOrder, Notification, User, UrlCard, FilterMode } from '@banta/common';
|
|
3
3
|
import { ChatSourceBase } from './chat-source-base';
|
|
4
4
|
import { AttachmentResolver, AttachmentScraper } from './attachment-scraper';
|
|
5
5
|
export interface ChatSourceOptions {
|
|
6
|
-
sortOrder
|
|
6
|
+
sortOrder?: CommentsOrder;
|
|
7
|
+
filterMode?: FilterMode;
|
|
7
8
|
}
|
|
8
9
|
export declare abstract class ChatBackendBase {
|
|
9
10
|
constructor();
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Observable } from 'rxjs';
|
|
2
|
-
import { ChatMessage, CommentsOrder, ChatPermissions } from '@banta/common';
|
|
2
|
+
import { ChatMessage, CommentsOrder, ChatPermissions, FilterMode } from '@banta/common';
|
|
3
3
|
export interface ChatSourceBase {
|
|
4
4
|
/**
|
|
5
5
|
* The topic identifier for the current chat/comments
|
|
@@ -14,6 +14,7 @@ export interface ChatSourceBase {
|
|
|
14
14
|
*/
|
|
15
15
|
parentIdentifier?: string;
|
|
16
16
|
sortOrder?: CommentsOrder;
|
|
17
|
+
filterMode?: FilterMode;
|
|
17
18
|
messageReceived: Observable<ChatMessage>;
|
|
18
19
|
messageObserved: Observable<ChatMessage>;
|
|
19
20
|
messageUpdated: Observable<ChatMessage>;
|
package/lib/chat-source.d.ts
CHANGED
|
@@ -2,18 +2,21 @@ import { ChatMessage, ChatPermissions, CommentsOrder, DurableSocket } from "@ban
|
|
|
2
2
|
import { SocketRPC } from "@banta/common";
|
|
3
3
|
import { ChatSourceBase } from "./chat-source-base";
|
|
4
4
|
import { ChatBackend } from "./chat-backend";
|
|
5
|
+
import { ChatSourceOptions } from "./chat-backend-base";
|
|
5
6
|
export declare type SignInState = 'signed-out' | 'signed-in' | 'signing-in';
|
|
6
7
|
export declare class ChatSource extends SocketRPC implements ChatSourceBase {
|
|
7
8
|
readonly backend: ChatBackend;
|
|
8
9
|
readonly identifier: string;
|
|
9
10
|
readonly parentIdentifier: string;
|
|
10
|
-
|
|
11
|
-
|
|
11
|
+
constructor(backend: ChatBackend, identifier: string, parentIdentifier: string, options: ChatSourceOptions);
|
|
12
|
+
private options;
|
|
12
13
|
private subscription;
|
|
13
14
|
private markReady;
|
|
14
15
|
ready: Promise<void>;
|
|
15
16
|
permissions: ChatPermissions;
|
|
16
17
|
private _state;
|
|
18
|
+
get sortOrder(): CommentsOrder;
|
|
19
|
+
get filterMode(): import("@banta/common").FilterMode;
|
|
17
20
|
get state(): "connected" | "connecting" | "lost" | "restored";
|
|
18
21
|
set state(value: "connected" | "connecting" | "lost" | "restored");
|
|
19
22
|
private _connectionStateChanged;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ElementRef, NgZone, QueryList } from '@angular/core';
|
|
2
|
-
import { User, ChatMessage, CommentsOrder } from '@banta/common';
|
|
2
|
+
import { User, ChatMessage, CommentsOrder, FilterMode } from '@banta/common';
|
|
3
3
|
import { HashTag } from '../comment-field/comment-field.component';
|
|
4
4
|
import { Subject, Observable } from 'rxjs';
|
|
5
5
|
import { ActivatedRoute } from '@angular/router';
|
|
@@ -103,7 +103,6 @@ export declare class BantaCommentsComponent {
|
|
|
103
103
|
*/
|
|
104
104
|
private _sourceIsOwned;
|
|
105
105
|
private _subs;
|
|
106
|
-
private _sortOrder;
|
|
107
106
|
private _topicID;
|
|
108
107
|
user: User;
|
|
109
108
|
selectedMessage: ChatMessage;
|
|
@@ -141,8 +140,27 @@ export declare class BantaCommentsComponent {
|
|
|
141
140
|
get usernameSelected(): Observable<User>;
|
|
142
141
|
get avatarSelected(): Observable<User>;
|
|
143
142
|
get shared(): Observable<ChatMessage>;
|
|
143
|
+
private _reloadSourceTimeout;
|
|
144
|
+
private reloadSource;
|
|
145
|
+
private _sortOrder;
|
|
144
146
|
get sortOrder(): CommentsOrder;
|
|
145
147
|
set sortOrder(value: CommentsOrder);
|
|
148
|
+
private _filterMode;
|
|
149
|
+
get filterMode(): FilterMode;
|
|
150
|
+
set filterMode(value: FilterMode);
|
|
151
|
+
get filterModes(): FilterMode[];
|
|
152
|
+
get filterModeLabels(): {
|
|
153
|
+
all: string;
|
|
154
|
+
mine: string;
|
|
155
|
+
"my-likes": string;
|
|
156
|
+
threads: string;
|
|
157
|
+
};
|
|
158
|
+
get sortOrders(): CommentsOrder[];
|
|
159
|
+
get sortOrderLabels(): {
|
|
160
|
+
newest: string;
|
|
161
|
+
oldest: string;
|
|
162
|
+
likes: string;
|
|
163
|
+
};
|
|
146
164
|
sendMessage: (message: ChatMessage) => void;
|
|
147
165
|
sendReply: (message: ChatMessage) => void;
|
|
148
166
|
scrollToComment(commentId: ChatMessage['id']): Promise<void>;
|
|
@@ -26,6 +26,7 @@ export declare class CommentFieldComponent {
|
|
|
26
26
|
allowAttachments: boolean;
|
|
27
27
|
signInSelected: Subject<void>;
|
|
28
28
|
editAvatarSelected: Subject<void>;
|
|
29
|
+
focusChange: Subject<boolean>;
|
|
29
30
|
sending: boolean;
|
|
30
31
|
sendError: Error;
|
|
31
32
|
expandError: boolean;
|
|
@@ -73,6 +74,7 @@ export declare class CommentFieldComponent {
|
|
|
73
74
|
insert(str: string): Promise<void>;
|
|
74
75
|
onKeyDown(event: KeyboardEvent): Promise<void>;
|
|
75
76
|
startAutoComplete(event: KeyboardEvent, completionFunc: (str: string) => AutoCompleteOption[]): void;
|
|
77
|
+
onFocus(): void;
|
|
76
78
|
onBlur(): void;
|
|
77
79
|
insertEmoji(text: string): void;
|
|
78
80
|
showSignIn(): void;
|
|
@@ -85,5 +87,5 @@ export declare class CommentFieldComponent {
|
|
|
85
87
|
removeAttachment(attachment: ChatMessageAttachment): void;
|
|
86
88
|
alertError(): void;
|
|
87
89
|
static ɵfac: i0.ɵɵFactoryDeclaration<CommentFieldComponent, never>;
|
|
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"; "submit": "submit"; }, { "signInSelected": "signInSelected"; "editAvatarSelected": "editAvatarSelected"; "textChanged": "textChanged"; "permissionDeniedError": "permissionDeniedError"; }, never, ["*"], false>;
|
|
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>;
|
|
89
91
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ElementRef, QueryList } from "@angular/core";
|
|
2
|
-
import { User, ChatMessage, CommentsOrder } from '@banta/common';
|
|
2
|
+
import { User, ChatMessage, CommentsOrder, FilterMode } from '@banta/common';
|
|
3
3
|
import { Subject } from 'rxjs';
|
|
4
4
|
import { ChatBackendBase } from "../../chat-backend-base";
|
|
5
5
|
import { ChatSourceBase } from "../../chat-source-base";
|
|
@@ -12,7 +12,8 @@ export interface EditEvent {
|
|
|
12
12
|
}
|
|
13
13
|
export declare class CommentViewComponent {
|
|
14
14
|
private backend;
|
|
15
|
-
|
|
15
|
+
private elementRef;
|
|
16
|
+
constructor(backend: ChatBackendBase, elementRef: ElementRef<HTMLElement>);
|
|
16
17
|
private _sourceSubs;
|
|
17
18
|
private _source;
|
|
18
19
|
private _selected;
|
|
@@ -27,6 +28,8 @@ export declare class CommentViewComponent {
|
|
|
27
28
|
private _messageEdited;
|
|
28
29
|
showEmptyState: boolean;
|
|
29
30
|
allowReplies: boolean;
|
|
31
|
+
enableHoldOnClick: boolean;
|
|
32
|
+
enableHoldOnScroll: boolean;
|
|
30
33
|
customMenuItems: MessageMenuItem[];
|
|
31
34
|
commentsQuery: QueryList<CommentComponent>;
|
|
32
35
|
get comments(): CommentComponent[];
|
|
@@ -36,6 +39,9 @@ export declare class CommentViewComponent {
|
|
|
36
39
|
*/
|
|
37
40
|
isMessageLoadedInContext(message: ChatMessage): ChatMessage;
|
|
38
41
|
loadMessageInContext(message: ChatMessage): Promise<boolean>;
|
|
42
|
+
get shouldShowNewMessageIndicator(): boolean;
|
|
43
|
+
get shouldHoldNewMessages(): boolean;
|
|
44
|
+
private isElementVisible;
|
|
39
45
|
/**
|
|
40
46
|
* Get the CommentComponent instantiated for the given ChatMessage,
|
|
41
47
|
* if it exists in the current view. Note that messages which are not
|
|
@@ -81,6 +87,7 @@ export declare class CommentViewComponent {
|
|
|
81
87
|
maxMessages: number;
|
|
82
88
|
maxVisibleMessages: number;
|
|
83
89
|
newestLast: boolean;
|
|
90
|
+
holdNewMessages: boolean;
|
|
84
91
|
isViewingMore: boolean;
|
|
85
92
|
isLoadingMore: boolean;
|
|
86
93
|
hasMore: boolean;
|
|
@@ -88,7 +95,8 @@ export declare class CommentViewComponent {
|
|
|
88
95
|
olderMessages: ChatMessage[];
|
|
89
96
|
messageIdentity(index: number, chatMessage: ChatMessage): string;
|
|
90
97
|
sortOrderChanged: Subject<CommentsOrder>;
|
|
91
|
-
|
|
98
|
+
filterModeChanged: Subject<FilterMode>;
|
|
99
|
+
showNew(event: MouseEvent): Promise<void>;
|
|
92
100
|
showMore(): Promise<void>;
|
|
93
101
|
private addMessage;
|
|
94
102
|
private incrementPagingCursors;
|
|
@@ -102,7 +110,10 @@ export declare class CommentViewComponent {
|
|
|
102
110
|
isScrolledToLatest(): boolean;
|
|
103
111
|
private messageSent;
|
|
104
112
|
scrollToLatest(): void;
|
|
113
|
+
get element(): HTMLElement;
|
|
114
|
+
scrollToComment(commentId: ChatMessage['id']): Promise<void>;
|
|
115
|
+
getElementForComment(commentId: string): Element;
|
|
105
116
|
mentionsMe(message: ChatMessage): boolean;
|
|
106
117
|
static ɵfac: i0.ɵɵFactoryDeclaration<CommentViewComponent, never>;
|
|
107
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<CommentViewComponent, "banta-comment-view", never, { "showEmptyState": "showEmptyState"; "allowReplies": "allowReplies"; "customMenuItems": "customMenuItems"; "fixedHeight": "fixedHeight"; "selectedMessage": "selectedMessage"; "source": "source"; "genericAvatarUrl": "genericAvatarUrl"; "maxMessages": "maxMessages"; "maxVisibleMessages": "maxVisibleMessages"; "newestLast": "newestLast"; }, { "selected": "selected"; "messageEdited": "messageEdited"; "userSelected": "userSelected"; "reported": "reported"; "liked": "liked"; "unliked": "unliked"; "usernameSelected": "usernameSelected"; "avatarSelected": "avatarSelected"; "shared": "shared"; "deleted": "deleted"; "sortOrderChanged": "sortOrderChanged"; }, never, ["[data-before]", ".inline-replies", ":not([data-before]):not(.inline-replies)"], false>;
|
|
118
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CommentViewComponent, "banta-comment-view", never, { "showEmptyState": "showEmptyState"; "allowReplies": "allowReplies"; "enableHoldOnClick": "enableHoldOnClick"; "enableHoldOnScroll": "enableHoldOnScroll"; "customMenuItems": "customMenuItems"; "fixedHeight": "fixedHeight"; "selectedMessage": "selectedMessage"; "source": "source"; "genericAvatarUrl": "genericAvatarUrl"; "maxMessages": "maxMessages"; "maxVisibleMessages": "maxVisibleMessages"; "newestLast": "newestLast"; "holdNewMessages": "holdNewMessages"; }, { "selected": "selected"; "messageEdited": "messageEdited"; "userSelected": "userSelected"; "reported": "reported"; "liked": "liked"; "unliked": "unliked"; "usernameSelected": "usernameSelected"; "avatarSelected": "avatarSelected"; "shared": "shared"; "deleted": "deleted"; "sortOrderChanged": "sortOrderChanged"; "filterModeChanged": "filterModeChanged"; }, never, ["[data-before]", ".inline-replies", ":not([data-before]):not(.inline-replies)"], false>;
|
|
108
119
|
}
|