@veltdev/sdk 5.0.0-beta.1 → 5.0.0-beta.11

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.
@@ -41,9 +41,31 @@ export interface CopyLinkRequest {
41
41
  annotationId: string;
42
42
  options?: RequestOptions;
43
43
  }
44
+ /**
45
+ * Visibility type for comment annotations.
46
+ * - 'public': Visible to everyone (default:velt)
47
+ * - 'organization': Visible only to users in the specified organization
48
+ * - 'self': Visible only to specified users (private comments)
49
+ */
50
+ export type CommentVisibilityType = 'public' | 'organization' | 'self';
51
+ /**
52
+ * Configuration for comment visibility/access control.
53
+ */
54
+ export interface CommentVisibilityConfig {
55
+ /** The type of visibility for the comment */
56
+ type: CommentVisibilityType;
57
+ /** Annotation ID for the comment to update visibility */
58
+ annotationId?: string;
59
+ /** Organization ID for 'organization' type visibility */
60
+ organizationId?: string;
61
+ /** User IDs for 'self' type visibility - array of user IDs who can see the comment */
62
+ userIds?: string[];
63
+ }
44
64
  export interface AddCommentAnnotationRequest {
45
65
  annotation: CommentAnnotation;
46
66
  options?: RequestOptions;
67
+ /** Optional visibility configuration for the comment */
68
+ visibility?: CommentVisibilityConfig;
47
69
  }
48
70
  export interface ApproveCommentAnnotationRequest {
49
71
  annotationId: string;
@@ -61,6 +83,24 @@ export interface DeleteCommentAnnotationRequest {
61
83
  annotationId: string;
62
84
  options?: RequestOptions;
63
85
  }
86
+ /**
87
+ * Query parameters for fetching comment annotation counts.
88
+ *
89
+ * @property organizationId - Filter by organization (enables org-wide aggregation when used alone)
90
+ * @property documentIds - Filter by specific document IDs
91
+ * @property locationIds - Filter by location IDs within documents
92
+ * @property statusIds - Filter by comment status IDs (e.g., "open", "resolved")
93
+ * @property folderId - Filter by folder ID (use with allDocuments for folder-wide counts)
94
+ * @property allDocuments - When true with folderId, aggregates all documents in folder
95
+ * @property locationId - Single location filter (deprecated, use locationIds)
96
+ * @property aggregateDocuments - When true, combines all documentIds into single count
97
+ * @property filterGhostComments - When true, excludes orphaned/deleted comments from counts
98
+ * @property batchedPerDocument - When true, uses efficient batched listeners (4 instead of 100)
99
+ * but still returns per-document counts. Best for large document lists (50+).
100
+ * Trade-off: slight delay on updates due to debouncing.
101
+ * @property debounceMs - Debounce time in milliseconds for batchedPerDocument mode (default: 5000ms).
102
+ * Prevents rapid re-fetches when multiple documents update in quick succession.
103
+ */
64
104
  export interface CommentRequestQuery {
65
105
  organizationId?: string;
66
106
  documentIds?: string[];
@@ -71,6 +111,10 @@ export interface CommentRequestQuery {
71
111
  locationId?: string;
72
112
  aggregateDocuments?: boolean;
73
113
  filterGhostComments?: boolean;
114
+ /** Enable batched listeners with per-document counts. Uses 4 listeners instead of N listeners. */
115
+ batchedPerDocument?: boolean;
116
+ /** Debounce time in ms for batchedPerDocument mode (default: 5000). */
117
+ debounceMs?: number;
74
118
  }
75
119
  export interface SubscribeCommentAnnotationRequest {
76
120
  annotationId: string;
@@ -54,6 +54,7 @@ export interface CommentSuggestionEventData {
54
54
  }
55
55
  export type CommentEventTypesMap = {
56
56
  [CommentEventTypes.ADD_COMMENT_ANNOTATION]: AddCommentAnnotationEvent;
57
+ [CommentEventTypes.ADD_COMMENT_ANNOTATION_DRAFT]: AddCommentAnnotationDraftEvent;
57
58
  [CommentEventTypes.APPROVE_COMMENT_ANNOTATION]: ApproveCommentAnnotationEvent;
58
59
  [CommentEventTypes.ACCEPT_COMMENT_ANNOTATION]: AcceptCommentAnnotationEvent;
59
60
  [CommentEventTypes.REJECT_COMMENT_ANNOTATION]: RejectCommentAnnotationEvent;
@@ -79,6 +80,7 @@ export type CommentEventTypesMap = {
79
80
  [CommentEventTypes.COMMENT_SIDEBAR_DATA_UPDATE]: CommentSidebarDataUpdateEvent;
80
81
  [CommentEventTypes.AUTOCOMPLETE_SEARCH]: AutocompleteSearchEvent;
81
82
  [CommentEventTypes.COMPOSER_CLICKED]: ComposerClickedEvent;
83
+ [CommentEventTypes.COMPOSER_TEXT_CHANGE]: ComposerTextChangeEvent;
82
84
  [CommentEventTypes.LINK_CLICKED]: LinkClickedEvent;
83
85
  [CommentEventTypes.COMMENT_PIN_CLICKED]: CommentPinClickedEvent;
84
86
  [CommentEventTypes.COMMENT_BUBBLE_CLICKED]: CommentBubbleClickedEvent;
@@ -96,6 +98,10 @@ export interface DeleteAttachmentEvent {
96
98
  attachment: Attachment;
97
99
  metadata: VeltEventMetadata;
98
100
  }
101
+ export interface AddCommentAnnotationDraftEvent {
102
+ metadata: VeltEventMetadata;
103
+ addContext: (context: Record<string, unknown>) => void;
104
+ }
99
105
  export interface AddCommentAnnotationEvent {
100
106
  annotationId: string;
101
107
  commentAnnotation: CommentAnnotation;
@@ -270,3 +276,7 @@ export interface CommentBubbleClickedEvent {
270
276
  commentAnnotation: CommentAnnotation;
271
277
  metadata?: VeltEventMetadata;
272
278
  }
279
+ export interface ComposerTextChangeEvent {
280
+ text: string;
281
+ metadata?: VeltEventMetadata;
282
+ }
@@ -1,3 +1,4 @@
1
+ import { Location } from './location.model';
1
2
  export interface IUnreadCommentsMap {
2
3
  [annotationId: string]: number;
3
4
  }
@@ -14,3 +15,28 @@ export interface TransformContext {
14
15
  inverseScale?: number;
15
16
  };
16
17
  }
18
+ /**
19
+ * Context data returned by the comment context provider.
20
+ * This is a flexible object that can contain custom properties.
21
+ */
22
+ export interface CommentContext {
23
+ /**
24
+ * Optional comment type. When set to 'manual', the comment will be treated as a manual comment
25
+ * and the target element will be removed.
26
+ */
27
+ commentType?: 'manual' | string;
28
+ /**
29
+ * Allow additional custom properties
30
+ */
31
+ [key: string]: unknown;
32
+ }
33
+ export type CommentContextProviderResponse = CommentContext | null | undefined;
34
+ /**
35
+ * A function that provides custom context for comments.
36
+ * Can return the context synchronously or asynchronously via a Promise.
37
+ *
38
+ * @param documentId - The ID of the document
39
+ * @param location - Optional location information
40
+ * @returns The comment context object or a Promise that resolves to it
41
+ */
42
+ export type CommentContextProvider = (documentId: string, location?: Location) => CommentContextProviderResponse | Promise<CommentContextProviderResponse>;
@@ -53,6 +53,14 @@ export declare class Config {
53
53
  * The domain of the API proxy.
54
54
  */
55
55
  apiProxyDomain?: string;
56
+ /**
57
+ * Controls whether global Velt styles are loaded.
58
+ * When true (default), global styles are applied.
59
+ * When false, global styles are not loaded - useful for custom styling.
60
+ *
61
+ * Default: true
62
+ */
63
+ globalStyles?: boolean;
56
64
  }
57
65
  export interface ExtendedFirebaseOptions extends FirebaseOptions {
58
66
  storeDbId: string;
@@ -66,3 +74,6 @@ export interface DisableLogsConfig {
66
74
  warnings?: boolean;
67
75
  suppressAll?: boolean;
68
76
  }
77
+ export interface GetProjectConfigResponse {
78
+ isPrivateCommentsEnabled: boolean;
79
+ }
@@ -1,16 +1,16 @@
1
1
  // @ts-nocheck
2
2
  import { Observable } from "rxjs";
3
- import { CommentAnnotation, CommentOnElementConfig, CommentSelectionChangeData, ManualCommentAnnotationConfig, UpdateContextConfig } from "../data/comment-annotation.data.model";
4
- import { AcceptCommentAnnotationEvent, AddCommentAnnotationEvent, AddCommentEvent, AddReactionEvent, ApproveCommentAnnotationEvent, CommentAddEventData, CommentEventTypesMap, CommentUpdateEventData, CopyLinkEvent, DeleteAttachmentEvent, DeleteCommentAnnotationEvent, DeleteCommentEvent, DeleteReactionEvent, DeleteRecordingEvent, GetLinkEvent, RejectCommentAnnotationEvent, ToggleReactionEvent, UpdateAccessEvent, UpdateCommentEvent, UpdatePriorityEvent, UpdateStatusEvent, GetCommentAnnotationsResponse, GetCommentAnnotationsCountResponse, FetchCommentAnnotationsResponse } from "../data/comment-events.data.model";
5
- import { CustomCategory, CustomPriority, CustomStatus } from "../data/custom-filter.data.model";
6
- import { CustomAnnotationDropdownData } from "../data/custom-chip-dropdown.data.model";
3
+ import { CommentSidebarSystemFiltersOperator, SidebarButtonCountType } from "../../utils/enums";
4
+ import { UploadFileData } from "../data/attachment.model";
7
5
  import { AutocompleteData } from "../data/autocomplete.data.model";
6
+ import { AcceptCommentAnnotationRequest, AddAttachmentRequest, AddAttachmentResponse, AddCommentAnnotationRequest, AddCommentRequest, AddReactionRequest, ApproveCommentAnnotationRequest, AssignUserEvent, AssignUserRequest, CommentRequestQuery, CommentVisibilityConfig, CopyLinkRequest, DeleteAttachmentRequest, DeleteCommentAnnotationRequest, DeleteCommentRequest, DeleteReactionRequest, DeleteRecordingRequest, FetchCommentAnnotationsRequest, GetAttachmentRequest, GetCommentRequest, GetLinkRequest, GetRecordingRequest, RejectCommentAnnotationRequest, ResolveCommentAnnotationRequest, SubscribeCommentAnnotationRequest, ToggleReactionRequest, UnsubscribeCommentAnnotationRequest, UpdateAccessRequest, UpdateCommentRequest, UpdatePriorityRequest, UpdateStatusRequest } from "../data/comment-actions.data.model";
7
+ import { CommentAnnotation, CommentOnElementConfig, CommentSelectionChangeData, ManualCommentAnnotationConfig, UpdateContextConfig } from "../data/comment-annotation.data.model";
8
+ import { AcceptCommentAnnotationEvent, AddCommentAnnotationEvent, AddCommentEvent, AddReactionEvent, ApproveCommentAnnotationEvent, CommentAddEventData, CommentEventTypesMap, CommentUpdateEventData, CopyLinkEvent, DeleteAttachmentEvent, DeleteCommentAnnotationEvent, DeleteCommentEvent, DeleteReactionEvent, DeleteRecordingEvent, FetchCommentAnnotationsResponse, GetCommentAnnotationsCountResponse, GetCommentAnnotationsResponse, GetLinkEvent, RejectCommentAnnotationEvent, ToggleReactionEvent, UpdateAccessEvent, UpdateCommentEvent, UpdatePriorityEvent, UpdateStatusEvent } from "../data/comment-events.data.model";
8
9
  import { CommentSidebarCustomActionEventData, CommentSidebarData, CommentSidebarDataOptions } from "../data/comment-sidebar-config.model";
10
+ import { CommentContextProvider, TransformContext, UnreadCommentsCount } from "../data/comment-utils.data.model";
11
+ import { CustomAnnotationDropdownData } from "../data/custom-chip-dropdown.data.model";
12
+ import { CustomCategory, CustomPriority, CustomStatus } from "../data/custom-filter.data.model";
9
13
  export { ReactionMap } from '../data/reaction-annotation.data.model';
10
- import { AcceptCommentAnnotationRequest, AddAttachmentRequest, AddAttachmentResponse, AddCommentAnnotationRequest, AddCommentRequest, AddReactionRequest, ApproveCommentAnnotationRequest, AssignUserRequest, AssignUserEvent, CopyLinkRequest, DeleteAttachmentRequest, DeleteCommentAnnotationRequest, CommentRequestQuery, CommentRequestQuery, DeleteCommentRequest, DeleteReactionRequest, DeleteRecordingRequest, GetAttachmentRequest, GetCommentRequest, GetLinkRequest, GetRecordingRequest, RejectCommentAnnotationRequest, ResolveCommentAnnotationRequest, SubscribeCommentAnnotationRequest, UnsubscribeCommentAnnotationRequest, ToggleReactionRequest, UpdateAccessRequest, UpdateCommentRequest, UpdatePriorityRequest, UpdateStatusRequest, FetchCommentAnnotationsRequest } from "../data/comment-actions.data.model";
11
- import { UnreadCommentsCount, TransformContext } from "../data/comment-utils.data.model";
12
- import { CommentSidebarSystemFiltersOperator, SidebarButtonCountType } from "../../utils/enums";
13
- import { UploadFileData } from "../data/attachment.model";
14
14
 
15
15
  export declare class CommentElement {
16
16
  /**
@@ -329,7 +329,7 @@ export declare class CommentElement {
329
329
  * @description Sets the comment context provider
330
330
  * @param provider
331
331
  */
332
- public setContextProvider: (provider: (documentId: string, location?: any) => any) => void;
332
+ public setContextProvider: (provider: CommentContextProvider | null) => void;
333
333
 
334
334
  /**
335
335
  * To enable suggestion mode
@@ -823,6 +823,13 @@ export declare class CommentElement {
823
823
  */
824
824
  public updateContext: (annotationId: string, context: any, config?: UpdateContextConfig) => Promise<any>;
825
825
 
826
+ /**
827
+ * Updates the visibility of a comment annotation.
828
+ * @param visibility Visibility configuration (public, organization, or self) including annotationId
829
+ * @returns Promise<any>
830
+ */
831
+ public updateVisibility: (visibility: CommentVisibilityConfig) => Promise<any>;
832
+
826
833
  /**
827
834
  * Subscribe to selected comments
828
835
  * @returns list of selected comments
@@ -1264,6 +1271,13 @@ export declare class CommentElement {
1264
1271
  */
1265
1272
  public disableScreenshot: () => void;
1266
1273
 
1274
+ /**
1275
+ * To programmatically submit a comment from a velt-comment-composer.
1276
+ * Finds the composer within the element identified by referenceId and submits its content.
1277
+ * @param referenceId The ID of the HTML element containing the velt-comment-composer
1278
+ */
1279
+ public submitComment: (referenceId: string) => void;
1280
+
1267
1281
  /**
1268
1282
  * To enable paginated contact list
1269
1283
  */
@@ -2075,6 +2089,14 @@ export declare class CommentElement {
2075
2089
  */
2076
2090
  private _updateContext;
2077
2091
 
2092
+ /**
2093
+ * Updates the visibility of a comment annotation.
2094
+ * @param annotationId Annotation Id
2095
+ * @param visibility Visibility configuration (public, organization, or self)
2096
+ * @returns Promise<any>
2097
+ */
2098
+ private _updateVisibility;
2099
+
2078
2100
  /**
2079
2101
  * Subscribe to selected comments
2080
2102
  * @returns list of selected comments
@@ -2526,4 +2548,11 @@ export declare class CommentElement {
2526
2548
  * To disable paginated contact list
2527
2549
  */
2528
2550
  private _disablePaginatedContactList;
2551
+
2552
+ /**
2553
+ * To programmatically submit a comment from a velt-comment-composer.
2554
+ * Finds the composer within the element identified by referenceId and submits its content.
2555
+ * @param referenceId The ID of the HTML element containing the velt-comment-composer
2556
+ */
2557
+ private _submitComment;
2529
2558
  }
@@ -11,6 +11,7 @@ export declare class Constants {
11
11
  static LISTENER_BATCH_SIZE: number;
12
12
  static LISTENER_CONTEXT_BATCH_SIZE: number;
13
13
  static DEFAULT_VELT_CONTEXT: string;
14
+ static VISIBILITY_SELF_PREFIX: string;
14
15
  static FIREBASE_PARTIAL_PATH_ORGANIZATIONS: string;
15
16
  static FIREBASE_PARTIAL_PATH_FOLDERS: string;
16
17
  static FIREBASE_PARTIAL_PATH_DOCS: string;
@@ -29,6 +29,7 @@ export declare enum ResolverActions {
29
29
  }
30
30
  export declare const CommentEventTypes: {
31
31
  readonly ADD_COMMENT_ANNOTATION: "addCommentAnnotation";
32
+ readonly ADD_COMMENT_ANNOTATION_DRAFT: "addCommentAnnotationDraft";
32
33
  readonly DELETE_COMMENT_ANNOTATION: "deleteCommentAnnotation";
33
34
  readonly APPROVE_COMMENT_ANNOTATION: "approveCommentAnnotation";
34
35
  readonly ACCEPT_COMMENT_ANNOTATION: "acceptCommentAnnotation";
@@ -54,6 +55,7 @@ export declare const CommentEventTypes: {
54
55
  readonly COMMENT_SIDEBAR_DATA_UPDATE: "commentSidebarDataUpdate";
55
56
  readonly AUTOCOMPLETE_SEARCH: "autocompleteSearch";
56
57
  readonly COMPOSER_CLICKED: "composerClicked";
58
+ readonly COMPOSER_TEXT_CHANGE: "composerTextChange";
57
59
  readonly LINK_CLICKED: "linkClicked";
58
60
  readonly COMMENT_PIN_CLICKED: "commentPinClicked";
59
61
  readonly COMMENT_BUBBLE_CLICKED: "commentBubbleClicked";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@veltdev/sdk",
3
- "version": "5.0.0-beta.1",
3
+ "version": "5.0.0-beta.11",
4
4
  "description": "Velt is an SDK to add collaborative features to your product within minutes. Example: Comments like Figma, Frame.io, Google docs or sheets, Recording like Loom, Huddles like Slack and much more.",
5
5
  "homepage": "https://velt.dev",
6
6
  "keywords": [