@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.
@@ -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: CommentsOrder;
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>;
@@ -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
- readonly sortOrder: CommentsOrder;
11
- constructor(backend: ChatBackend, identifier: string, parentIdentifier: string, sortOrder: CommentsOrder);
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
- constructor(backend: ChatBackendBase);
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
- showNew(): Promise<void>;
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
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@banta/sdk",
3
- "version": "4.7.16",
3
+ "version": "4.8.0",
4
4
  "private": false,
5
5
  "publishConfig": {
6
6
  "access": "public"