UNPKG

@veltdev/sdk

Version:

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.

261 lines (260 loc) 8.91 kB
import { CommentAccessMode, CommentEventTypes, CommentStatus } from "../../utils/enums"; import { Attachment } from "./attachment.model"; import { VeltButtonClickEvent } from "./button.data.model"; import { AddAttachmentResponse } from "./comment-actions.data.model"; import { CommentAnnotation, UpdateContextConfig } from "./comment-annotation.data.model"; import { Comment } from "./comment.data.model"; import { CustomPriority, CustomStatus } from "./custom-filter.data.model"; import { VeltEventMetadata } from "./event-metadata.data.model"; import { Location } from "./location.model"; import { ReactionAnnotation } from "./reaction-annotation.data.model"; import { RecordedData } from "./recorder.model"; import { UserContact } from "./user-contact.data.model"; import { User } from "./user.data.model"; /** * @deprecated Use `AddCommentAnnotationEvent` instead */ export interface CommentAddEventData { annotation: CommentAnnotation; location?: Location; documentId?: string; addContext: (context: any) => void; targetAnnotationId?: string; targetCommentId?: number; elementRef?: { xpath: string; }; } /** * @deprecated Use respective events instead */ export interface CommentEvent { annotation?: CommentAnnotation | null; element?: HTMLElement; type?: string; targetAnnotationId?: string; targetCommentId?: number; updateContext?: (context: any, config?: UpdateContextConfig) => void; } /** * @deprecated Use respective events instead */ export interface CommentUpdateEventData extends CommentEvent { } /** * @deprecated Use `AcceptCommentAnnotationEvent` and `RejectCommentAnnotationEvent` instead */ export interface CommentSuggestionEventData { annotationId: string; actionUser?: User; actionType?: CommentStatus; replaceContentHtml?: string; replaceContentText?: string; annotation?: any; } export type CommentEventTypesMap = { [CommentEventTypes.ADD_COMMENT_ANNOTATION]: AddCommentAnnotationEvent; [CommentEventTypes.APPROVE_COMMENT_ANNOTATION]: ApproveCommentAnnotationEvent; [CommentEventTypes.ACCEPT_COMMENT_ANNOTATION]: AcceptCommentAnnotationEvent; [CommentEventTypes.REJECT_COMMENT_ANNOTATION]: RejectCommentAnnotationEvent; [CommentEventTypes.SUBSCRIBE_COMMENT_ANNOTATION]: SubscribeCommentAnnotationEvent; [CommentEventTypes.UNSUBSCRIBE_COMMENT_ANNOTATION]: UnsubscribeCommentAnnotationEvent; [CommentEventTypes.DELETE_COMMENT_ANNOTATION]: DeleteCommentAnnotationEvent; [CommentEventTypes.ASSIGN_USER]: AssignUserEvent; [CommentEventTypes.UPDATE_PRIORITY]: UpdatePriorityEvent; [CommentEventTypes.UPDATE_STATUS]: UpdateStatusEvent; [CommentEventTypes.UPDATE_ACCESS]: UpdateAccessEvent; [CommentEventTypes.RESOLVE_COMMENT]: ResolveCommentEvent; [CommentEventTypes.ADD_COMMENT]: AddCommentEvent; [CommentEventTypes.UPDATE_COMMENT]: UpdateCommentEvent; [CommentEventTypes.DELETE_COMMENT]: DeleteCommentEvent; [CommentEventTypes.ADD_ATTACHMENT]: AddAttachmentEvent; [CommentEventTypes.DELETE_ATTACHMENT]: DeleteAttachmentEvent; [CommentEventTypes.DELETE_RECORDING]: DeleteRecordingEvent; [CommentEventTypes.COPY_LINK]: CopyLinkEvent; [CommentEventTypes.ADD_REACTION]: AddReactionEvent; [CommentEventTypes.DELETE_REACTION]: DeleteReactionEvent; [CommentEventTypes.TOGGLE_REACTION]: ToggleReactionEvent; [CommentEventTypes.COMMENT_SIDEBAR_DATA_INIT]: CommentSidebarDataInitEvent; [CommentEventTypes.COMMENT_SIDEBAR_DATA_UPDATE]: CommentSidebarDataUpdateEvent; [CommentEventTypes.AUTOCOMPLETE_SEARCH]: AutocompleteSearchEvent; [CommentEventTypes.COMPOSER_CLICKED]: ComposerClickedEvent; [CommentEventTypes.LINK_CLICKED]: LinkClickedEvent; }; export interface AddAttachmentEvent { annotationId: string; commentAnnotation: CommentAnnotation; attachments: AddAttachmentResponse[]; metadata: VeltEventMetadata; } export interface DeleteAttachmentEvent { annotationId: string; commentId: number; commentAnnotation: CommentAnnotation; attachment: Attachment; metadata: VeltEventMetadata; } export interface AddCommentAnnotationEvent { annotationId: string; commentAnnotation: CommentAnnotation; metadata: VeltEventMetadata; addContext: (context: any) => void; elementRef?: { xpath: string; }; } export interface ApproveCommentAnnotationEvent { annotationId: string; commentAnnotation: CommentAnnotation; metadata: VeltEventMetadata; } export interface AcceptCommentAnnotationEvent { annotationId: string; commentAnnotation: CommentAnnotation; metadata: VeltEventMetadata; actionUser: User; replaceContentHtml?: string; replaceContentText?: string; } export interface RejectCommentAnnotationEvent { annotationId: string; commentAnnotation: CommentAnnotation; metadata: VeltEventMetadata; actionUser: User; replaceContentHtml?: string; replaceContentText?: string; } export interface DeleteCommentAnnotationEvent { annotationId: string; commentAnnotation: CommentAnnotation; metadata: VeltEventMetadata; } export interface GetCommentAnnotationsResponse { data: Record<string, CommentAnnotation[]> | null; } export interface FetchCommentAnnotationsResponse extends GetCommentAnnotationsResponse { nextPageToken?: string; } export interface GetCommentAnnotationsCountResponse { data: Record<string, CommentAnnotationsCount> | null; } export interface CommentAnnotationsCount { unread: number; total: number; } export interface SubscribeCommentAnnotationEvent { annotationId: string; commentAnnotation: CommentAnnotation; metadata: VeltEventMetadata; } export interface UnsubscribeCommentAnnotationEvent { annotationId: string; commentAnnotation: CommentAnnotation; metadata: VeltEventMetadata; } export interface AssignUserEvent { annotationId: string; assignedTo: UserContact; commentAnnotation: CommentAnnotation; metadata?: VeltEventMetadata; } export interface AddCommentEvent { annotationId: string; commentAnnotation: CommentAnnotation; commentId: number; comment: Comment; metadata: VeltEventMetadata; } export interface UpdateCommentEvent { annotationId: string; commentAnnotation: CommentAnnotation; commentId: number; comment: Comment; metadata: VeltEventMetadata; } export interface DeleteCommentEvent { annotationId: string; commentAnnotation: CommentAnnotation; commentId: number; comment: Comment; metadata: VeltEventMetadata; } export interface DeleteRecordingEvent { annotationId: string; commentAnnotation: CommentAnnotation; commentId: number; recording: RecordedData; metadata: VeltEventMetadata; } export interface ReactionEvent { annotationId: string; commentAnnotation: CommentAnnotation; commentId: number; reaction: ReactionAnnotation; metadata: VeltEventMetadata; } export interface AddReactionEvent extends ReactionEvent { } export interface DeleteReactionEvent extends ReactionEvent { } export interface ToggleReactionEvent extends ReactionEvent { } export interface UpdateStatusEvent { annotationId: string; commentAnnotation: CommentAnnotation; newStatus: CustomStatus; oldStatus: CustomStatus; metadata: VeltEventMetadata; } export interface UpdatePriorityEvent { annotationId: string; commentAnnotation: CommentAnnotation; newPriority?: CustomPriority; oldPriority?: CustomPriority; metadata: VeltEventMetadata; } export interface UpdateAccessEvent { annotationId: string; commentAnnotation: CommentAnnotation; newAccessMode?: CommentAccessMode; oldAccessMode?: CommentAccessMode; metadata: VeltEventMetadata; } export interface ResolveCommentEvent { annotationId: string; commentAnnotation: CommentAnnotation; metadata: VeltEventMetadata; } export interface GetLinkResponse { annotationId: string; commentAnnotation: CommentAnnotation; link: string | null; metadata: VeltEventMetadata; } export interface CopyLinkEvent { annotationId: string; commentAnnotation: CommentAnnotation; link: string; metadata: VeltEventMetadata; } export interface CommentSidebarDataInitEvent extends VeltButtonClickEvent { } export interface CommentSidebarDataUpdateEvent extends VeltButtonClickEvent { } export interface AutocompleteSearchEvent { event: KeyboardEvent | InputEvent | Event; searchText: string; type?: 'contact' | 'custom' | 'group'; metadata?: VeltEventMetadata; } export interface ComposerClickedEvent { commentAnnotation?: CommentAnnotation; metadata?: VeltEventMetadata; } export interface LinkClickedEvent { text: string; link: string; commentAnnotation: CommentAnnotation; commentId: Number; metadata?: VeltEventMetadata; }