UNPKG

@usersnap/browser

Version:

[![usersnap](https://github.com/usersnap/usersnap/raw/main/usersnap.png "Usersnap")](https://www.usersnap.com?utm_medium=referral&utm_source=npm&utm_campaign=npm_package)

108 lines (107 loc) 4.41 kB
export interface InitOptions { collectGeoLocation?: 'all' | 'none'; enableScreenshot?: boolean; custom?: Record<string, any>; locale?: string; nativeScreenshot?: boolean | { target: string; }; useLocalStorage?: boolean; useSystemFonts?: boolean; user?: { email?: string; userId?: string; } & ReporterData; } type ReporterPropertyValue = string | number | boolean | null; type ReporterData = Record<string, ReporterPropertyValue>; export interface EmbedInitOptions extends InitOptions { mountNode: HTMLElement; } export type WidgetEventName = 'load' | 'destroy' | 'open' | 'close' | 'closing' | 'beforeSubmit' | 'submit'; export type SpaceEventName = 'open' | 'close' | 'closing' | 'beforeSubmit' | 'submit'; export type EmbedEventName = 'open' | 'beforeSubmit' | 'submit'; type WidgetValues = { assignee?: string; custom?: object; labels?: Array<string>; visitor?: string; rating?: string; }; type WidgetEventApi = { setValue: <K extends keyof WidgetValues>(key: K, value: WidgetValues[K]) => void; }; type WidgetBeforeSubmitEvent = { api: WidgetEventApi; values: WidgetValues; type: 'beforeSubmit'; }; type WidgetSubmitEvent = { type: 'submit'; values: WidgetValues; }; type WidgetOpenEvent = { api: WidgetEventApi; type: 'open'; }; type WidgetCloseEvent = { type: 'close'; isCancel: boolean; }; type WidgetClosingEvent = { type: 'closing'; isCancel: boolean; }; type WidgetEventCallback = (event: WidgetOpenEvent | WidgetBeforeSubmitEvent | WidgetCloseEvent | WidgetClosingEvent | WidgetSubmitEvent) => void; export interface WidgetApi { init: () => Promise<WidgetApi>; destroy: () => Promise<void>; open: () => Promise<void>; close: () => Promise<void>; on: (eventName: WidgetEventName, callback: WidgetEventCallback) => void; off: (eventName: WidgetEventName, callback: WidgetEventCallback) => void; } export type SpaceOpenEventCallback = (event: WidgetOpenEvent & { apiKey: string; }) => void; export type SpaceBeforeSubmitEventCallback = (event: WidgetBeforeSubmitEvent & { apiKey: string; }) => void; export type SpaceCloseEventCallback = (event: WidgetCloseEvent & { apiKey: string; }) => void; export type SpaceClosingEventCallback = (event: WidgetClosingEvent & { apiKey: string; }) => void; export type SpaceSubmitEventCallback = (event: WidgetSubmitEvent & { apiKey: string; }) => void; export type SpaceEventCallback = SpaceOpenEventCallback | SpaceBeforeSubmitEventCallback | SpaceCloseEventCallback | SpaceClosingEventCallback | SpaceSubmitEventCallback; type SpaceOpen = (eventName: 'open', callback: SpaceOpenEventCallback) => void; type SpaceBeforeSubmit = (eventName: 'beforeSubmit', callback: SpaceBeforeSubmitEventCallback) => void; type SpaceClose = (eventName: 'close', callback: SpaceCloseEventCallback) => void; type SpaceClosing = (eventName: 'closing', callback: SpaceClosingEventCallback) => void; type SpaceSubmit = (eventName: 'submit', callback: SpaceSubmitEventCallback) => void; export interface SpaceApi { init: (options?: InitOptions) => Promise<void>; destroy: () => Promise<void>; logEvent: (eventName: string) => Promise<void>; show: (apiKey: string) => Promise<WidgetApi>; hide: (apiKey: string) => Promise<void>; on: SpaceOpen & SpaceBeforeSubmit & SpaceClose & SpaceClosing & SpaceSubmit; off: SpaceOpen & SpaceBeforeSubmit & SpaceClose & SpaceClosing & SpaceSubmit; } export type EmbedOpenEventCallback = (event: WidgetOpenEvent) => void; export type EmbedBeforeSubmitEventCallback = (event: WidgetBeforeSubmitEvent) => void; export type EmbedSubmitEventCallback = (event: WidgetSubmitEvent) => void; export type EmbedEventCallback = EmbedOpenEventCallback | EmbedBeforeSubmitEventCallback | EmbedSubmitEventCallback; export type EmbedOpen = (eventName: 'open', callback: EmbedOpenEventCallback) => void; export type EmbedBeforeSubmit = (eventName: 'beforeSubmit', callback: EmbedBeforeSubmitEventCallback) => void; export type EmbedSubmit = (eventName: 'submit', callback: EmbedSubmitEventCallback) => void; export interface EmbedWidgetApi { init: (config: EmbedInitOptions) => Promise<void>; on: EmbedOpen & EmbedBeforeSubmit & EmbedSubmit; off: EmbedOpen & EmbedBeforeSubmit & EmbedSubmit; } export type SnippetType = 'global' | 'embed'; export {};