@thoughtspot/visual-embed-sdk
Version:
ThoughtSpot Embed SDK
1,115 lines (1,110 loc) • 389 kB
TypeScript
// Generated by dts-bundle v0.7.3
// Dependencies for this module:
// ../../eventemitter3
declare module '@thoughtspot/visual-embed-sdk' {
/**
* Copyright (c) 2023
*
* ThoughtSpot Visual Embed SDK for embedding ThoughtSpot analytics
* in other web applications.
* @summary ThoughtSpot Visual Embed SDK
* @author Ayon Ghosh <ayon.ghosh@thoughtspot.com>
*/
import { AppEmbed, Page, AppViewConfig, HomePageSearchBarMode, PrimaryNavbarVersion, HomePage, ListPage, DataPanelCustomColumnGroupsAccordionState } from '@thoughtspot/visual-embed-sdk/embed/app';
import { init, prefetch, logout, executeTML, exportTML, executeTMLInput, exportTMLInput } from '@thoughtspot/visual-embed-sdk/embed/base';
import { PinboardEmbed, LiveboardViewConfig, LiveboardEmbed } from '@thoughtspot/visual-embed-sdk/embed/liveboard';
import { SearchEmbed, SearchViewConfig } from '@thoughtspot/visual-embed-sdk/embed/search';
import { SearchBarEmbed, SearchBarViewConfig } from '@thoughtspot/visual-embed-sdk/embed/search-bar';
import { SpotterAgentEmbed, SpotterAgentEmbedViewConfig, BodylessConversation, BodylessConversationViewConfig } from '@thoughtspot/visual-embed-sdk/embed/bodyless-conversation';
import { SpotterEmbed, SpotterEmbedViewConfig, ConversationEmbed, ConversationViewConfig } from '@thoughtspot/visual-embed-sdk/embed/conversation';
import { AuthFailureType, AuthStatus, AuthEvent, AuthEventEmitter } from '@thoughtspot/visual-embed-sdk/auth';
import { getSessionInfo } from '@thoughtspot/visual-embed-sdk/utils/sessionInfoService';
import { AuthType, RuntimeFilter, RuntimeFilterOp, EmbedEvent, HostEvent, DataSourceVisualMode, Action, EmbedConfig, PrefetchFeatures, FrameParams, DOMSelector, HomeLeftNavItem, HomepageModule, MessageOptions, MessageCallback, MessagePayload, CustomisationsInterface, CustomStyles, customCssInterface, ContextMenuTriggerOptions, RuntimeParameter, LogLevel, VizPoint, CustomActionPayload, ListPageColumns } from '@thoughtspot/visual-embed-sdk/types';
import { CustomCssVariables } from '@thoughtspot/visual-embed-sdk/css-variables';
import { SageEmbed, SageViewConfig } from '@thoughtspot/visual-embed-sdk/embed/sage';
import { AnswerService, SessionInterface, UnderlyingDataPoint } from '@thoughtspot/visual-embed-sdk/utils/graphql/answerService/answerService';
import { getEmbedConfig } from '@thoughtspot/visual-embed-sdk/embed/embedConfig';
import { uploadMixpanelEvent, MIXPANEL_EVENT } from '@thoughtspot/visual-embed-sdk/mixpanel-service';
import { tokenizedFetch } from '@thoughtspot/visual-embed-sdk/tokenizedFetch';
import { getAnswerFromQuery } from '@thoughtspot/visual-embed-sdk/utils/graphql/nlsService/nls-answer-service';
import { createLiveboardWithAnswers } from '@thoughtspot/visual-embed-sdk/utils/liveboardService/liveboardService';
import { UIPassthroughEvent } from '@thoughtspot/visual-embed-sdk/embed/hostEventClient/contracts';
export { init, logout, prefetch, executeTML, exportTML, executeTMLInput, exportTMLInput, getEmbedConfig as getInitConfig, getSessionInfo, tokenizedFetch, getAnswerFromQuery, createLiveboardWithAnswers, SearchEmbed, SearchBarEmbed, PinboardEmbed, LiveboardEmbed, SageEmbed, AppEmbed, SpotterAgentEmbed, SpotterAgentEmbedViewConfig, BodylessConversationViewConfig, BodylessConversation, SpotterEmbed, SpotterEmbedViewConfig, ConversationViewConfig, ConversationEmbed, AuthFailureType, AuthStatus, AuthEvent, AuthEventEmitter, AnswerService, SessionInterface, UnderlyingDataPoint, Page, AuthType, RuntimeFilter, RuntimeFilterOp, EmbedEvent, HostEvent, DataSourceVisualMode, Action, ContextMenuTriggerOptions, EmbedConfig, SearchViewConfig, SearchBarViewConfig, LiveboardViewConfig, SageViewConfig, AppViewConfig, PrefetchFeatures, FrameParams, HomeLeftNavItem, HomepageModule, DOMSelector, MessageOptions, MessageCallback, MessagePayload, CustomisationsInterface, CustomStyles, customCssInterface, CustomCssVariables, RuntimeParameter, LogLevel, uploadMixpanelEvent, MIXPANEL_EVENT, HomePageSearchBarMode, PrimaryNavbarVersion, HomePage, ListPage, VizPoint, CustomActionPayload, UIPassthroughEvent, ListPageColumns, DataPanelCustomColumnGroupsAccordionState, };
export { resetCachedAuthToken } from '@thoughtspot/visual-embed-sdk/authToken';
}
declare module '@thoughtspot/visual-embed-sdk/embed/app' {
/**
* Copyright (c) 2022
*
* Full application embedding
* https://developers.thoughtspot.com/docs/?pageid=full-embed
* @summary Full app embed
* @module
* @author Ayon Ghosh <ayon.ghosh@thoughtspot.com>
*/
import { DOMSelector, MessagePayload, AllEmbedViewConfig } from '@thoughtspot/visual-embed-sdk/types';
import { V1Embed } from '@thoughtspot/visual-embed-sdk/embed/ts-embed';
/**
* Pages within the ThoughtSpot app that can be embedded.
*/
export enum Page {
/**
* Home page
*/
Home = "home",
/**
* Search page
*/
Search = "search",
/**
* Saved answers listing page
*/
Answers = "answers",
/**
* Liveboards listing page
*/
Liveboards = "liveboards",
/**
* @hidden
*/
Pinboards = "pinboards",
/**
* Data management page
*/
Data = "data",
/**
* SpotIQ listing page
*/
SpotIQ = "insights",
/**
* Monitor Alerts Page
*/
Monitor = "monitor"
}
/**
* Define the initial state os column custom group accordions
* in data panel v2.
*/
export enum DataPanelCustomColumnGroupsAccordionState {
/**
* Expand all the accordion initially in data panel v2.
*/
EXPAND_ALL = "EXPAND_ALL",
/**
* Collapse all the accordions initially in data panel v2.
*/
COLLAPSE_ALL = "COLLAPSE_ALL",
/**
* Expand the first accordion and collapse the rest.
*/
EXPAND_FIRST = "EXPAND_FIRST"
}
export enum HomePageSearchBarMode {
OBJECT_SEARCH = "objectSearch",
AI_ANSWER = "aiAnswer",
NONE = "none"
}
/**
* Define the version of the primary navbar
* @version SDK: 1.40.0 | ThoughtSpot: 10.11.0.cl
*/
export enum PrimaryNavbarVersion {
/**
* Sliding (v3) introduces a new left-side navigation hub featuring a tab switcher,
* along with updates to the top navigation bar.
* It serves as the foundational version of the PrimaryNavBar.
*/
Sliding = "v3"
}
/**
* Define the version of the home page
* @version SDK: 1.40.0 | ThoughtSpot: 10.11.0.cl
*/
export enum HomePage {
/**
* Modular (v2) introduces the updated Modular Home Experience.
* It serves as the foundational version of the home page.
*/
Modular = "v2"
}
/**
* Define the version of the list page
* @version SDK: 1.40.0 | ThoughtSpot: 10.12.0.cl
*/
export enum ListPage {
/**
* List (v2) is the traditional List Experience.
* It serves as the foundational version of the list page.
*/
List = "v2",
/**
* ListWithUXChanges (v3) introduces the new updated list page with UX changes.
*/
ListWithUXChanges = "v3"
}
/**
* Define the discovery experience
* @version SDK: 1.40.0 | ThoughtSpot: 10.11.0.cl
*/
export interface DiscoveryExperience {
/**
* primaryNavbarVersion determines the version of the navigation version.
*/
primaryNavbarVersion?: PrimaryNavbarVersion;
/**
* homePage determines the version of the home page.
*/
homePage?: HomePage;
/**
* listPageVersion determines the version of the list page.
*/
listPageVersion?: ListPage;
}
/**
* The view configuration for full app embedding.
* @group Embed components
*/
export interface AppViewConfig extends AllEmbedViewConfig {
/**
* If true, the top navigation bar within the ThoughtSpot app
* is displayed. By default, the navigation bar is hidden.
* This flag also controls the homepage left navigation bar.
*
* Supported embed types: `AppEmbed`
* @default true
* @version SDK: 1.2.0 | ThoughtSpot: 8.4.0.cl
* @example
* ```js
* const embed = new AppEmbed('#tsEmbed', {
* ... // other embed view config
* showPrimaryNavbar:true,
* })
* ```
*/
showPrimaryNavbar?: boolean;
/**
* Control the visibility of the left navigation bar on the Homepage.
* If showPrimaryNavbar is true, that is, if the Global and Homepage
* nav-bars are visible, this flag will only hide the homepage left nav-bar.
* The showPrimaryNavbar flag takes precedence over the hideHomepageLeftNav.
*
* **Note**: This option does not apply to the classic homepage.
* To access the updated modular homepage, set
* `modularHomeExperience` to `true` (available as Early Access feature in 9.12.5.cl).
*
* Supported embed types: `AppEmbed`
* @default false
* @version SDK: 1.28.0 | ThoughtSpot: 9.12.5.cl
* @example
* ```js
* const embed = new AppEmbed('#tsEmbed', {
* ... // other embed view config
* hideHomepageLeftNav : true,
* })
* ```
*/
hideHomepageLeftNav?: boolean;
/**
* Control the visibility of the help (?) and profile buttons on the
* Global nav-bar. By default, these buttons are visible on the nav-bar.
*
* Supported embed types: `AppEmbed`
* @default false
* @version SDK: 1.2.0 | ThoughtSpot: 8.4.0.cl
* @example
* ```js
* const embed = new AppEmbed('#tsEmbed', {
* ... // other embed view config
* disableProfileAndHelp: true,
* })
* ```
*/
disableProfileAndHelp?: boolean;
/**
* @version SDK: 1.36.3 | ThoughtSpot: 10.1.0.cl
* @default true
* Whether the help menu in the top nav bar should be served
* from Pendo or ThoughtSpot's internal help items.
*
* Supported embed types: `AppEmbed`
* @example
* ```js
* const embed = new AppEmbed('#tsEmbed', {
* ... // other embed view config
* enablePendoHelp: false,
* });
* ```
*/
enablePendoHelp?: boolean;
/**
* Control the visibility of the hamburger icon on the top nav bar
* available when new navigation V3 is enabled.
*
* Supported embed types: `AppEmbed`
* @default false
* @version SDK: 1.40.0 | ThoughtSpot: 10.11.0.cl
* @example
* ```js
* const embed = new AppEmbed('#tsEmbed', {
* ... // other embed view config
* hideHamburger : true,
* })
* ```
*/
hideHamburger?: boolean;
/**
* Control the visibility of the Eureka search on the top nav bar
* this will control for both new V2 and new navigation V3.
*
* Supported embed types: `AppEmbed`
* @default true
* @version SDK: 1.40.0 | ThoughtSpot: 10.11.0.cl
* @example
* ```js
* const embed = new AppEmbed('#tsEmbed', {
* ... // other embed view config
* hideObjectSearch: false,
* })
* ```
*/
hideObjectSearch?: boolean;
/**
* Control the visibility of the notification on the top nav bar V3,
* available when new navigation V3 is enabled.
*
* Supported embed types: `AppEmbed`
* @default true
* @version SDK: 1.40.0 | ThoughtSpot: 10.11.0.cl
* @example
* ```js
* const embed = new AppEmbed('#tsEmbed', {
* ... // other embed view config
* hideNotification: false,
* })
* ```
*/
hideNotification?: boolean;
/**
* Control the visibility of the application switcher button on the nav-bar.
* By default, the application switcher is shown.
*
* **Note**: This option does not apply to the classic homepage.
* To access the updated modular homepage, set
* `modularHomeExperience` to `true` (available as Early Access feature in 9.12.5.cl).
*
* Supported embed types: `AppEmbed`
* @version SDK: 1.28.0 | ThoughtSpot: 9.12.5.cl
* @default false
* @example
* ```js
* const embed = new AppEmbed('#tsEmbed', {
* ... // other embed view config
* hideApplicationSwitcher : true,
* })
* ```
*/
hideApplicationSwitcher?: boolean;
/**
* Control the visibility of the Org switcher button on the nav-bar.
* By default, the Org switcher button is shown.
*
* **Note**: This option does not apply to the classic homepage.
* To access the updated modular homepage, set
* `modularHomeExperience` to `true` (available as Early Access feature in 9.12.5.cl).
*
* Supported embed types: `AppEmbed`
* @version SDK: 1.28.0 | ThoughtSpot: 9.12.5.cl
* @default true
* @example
* ```js
* const embed = new AppEmbed('#tsEmbed', {
* ... // other embed view config
* hideOrgSwitcher : true,
* })
* ```
*/
hideOrgSwitcher?: boolean;
/**
* A URL path to the embedded application page
* If both path and pageId attributes are defined, the path definition
* takes precedence. This is the path post the `#/` in the URL of the standalone
* ThoughtSpot app. Use this to open the embedded view to a specific path.
*
* For eg, if you want the component to open to a specific Liveboard
* you could set the path to `pinboard/<liveboardId>/tab/<tabId>`.
*
* Supported embed types: `AppEmbed`
* @version SDK: 1.1.0 | ThoughtSpot: 9.4.0.cl
* @example
* ```js
* const embed = new AppEmbed('#tsEmbed', {
* ... // other embed view config
* path:"pinboard/1234/tab/7464",
* })
* ```
*/
path?: string;
/**
* The application page to set as the start page
* in the embedded view.
*
* Use this to open to particular page in the app. To open to a specific
* path within the app, use the `path` attribute which is more flexible.
*
* Supported embed types: `AppEmbed`
* @version SDK: 1.1.0 | ThoughtSpot: 9.4.0.cl
* @example
* ```js
* const embed = new AppEmbed('#tsEmbed', {
* ... // other embed view config
* pageId : Page.Answers | Page.Data,
* })
* ```
*/
pageId?: Page;
/**
* This puts a filter tag on the application. All metadata lists in the
* application, such as Liveboards and answers, would be filtered by this
* tag.
*
* Supported embed types: `AppEmbed`
* @version SDK: 1.1.0 | ThoughtSpot: 9.4.0.cl
* @example
* ```js
* const embed = new AppEmbed('#tsEmbed', {
* ... // other embed view config
* tag:'value',
* })
* ```
*/
tag?: string;
/**
* The array of GUIDs to be hidden
*
* Supported embed types: `AppEmbed`
* @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1-sw
* @example
* ```js
* const embed = new AppEmbed('#tsEmbed', {
* ... // other embed view config
* hideObjects: [
* '430496d6-6903-4601-937e-2c691821af3c',
* 'f547ec54-2a37-4516-a222-2b06719af726'
* ]
* })
* ```
*/
hideObjects?: string[];
/**
* Render liveboards using the new v2 rendering mode
* This is a transient flag which is primarily meant for internal use
*
* Supported embed types: `AppEmbed`
* @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1-sw
* @hidden
*/
liveboardV2?: boolean;
/**
* If set to true, the Search Assist feature is enabled.
*
* Supported embed types: `AppEmbed`
* @default true
* @version SDK: 1.13.0 | ThoughtSpot: 8.5.0.cl, 8.8.1-sw
* @example
* ```js
* const embed = new AppEmbed('#tsEmbed', {
* ... // other embed view config
* enableSearchAssist: true,
* })
* ```
*/
enableSearchAssist?: boolean;
/**
* If set to true, the Liveboard container dynamically resizes
* according to the height of the Liveboard.
*
* **Note**: Using fullHeight loads all visualizations
* on the Liveboard simultaneously, which results in
* multiple warehouse queries and potentially a
* longer wait for the topmost visualizations to
* display on the screen. Setting fullHeight to
* `false` fetches visualizations incrementally as
* users scroll the page to view the charts and tables.
*
* Supported embed types: `AppEmbed`
* @version SDK: 1.21.0 | ThoughtSpot: 9.4.0.cl, 9.4.0-sw
* @example
* ```js
* const embed = new AppEmbed('#tsEmbed', {
* ... // other embed view config
* fullHeight: true,
* })
* ```
*/
fullHeight?: boolean;
/**
* Flag to control new Modular Home experience.
*
* Supported embed types: `AppEmbed`
* @default false
* @version SDK: 1.28.0 | ThoughtSpot: 9.12.5.cl
* @example
* ```js
* const embed = new AppEmbed('#tsEmbed', {
* ... // other embed view config
* modularHomeExperience : true,
* })
* ```
*/
modularHomeExperience?: boolean;
/**
* To configure the top-left navigation and home page experience
*
* Supported embed types: `AppEmbed`
* @default false
* @version SDK: 1.40.0 | ThoughtSpot: 10.11.0.cl
* @example
* ```js
* const embed = new AppEmbed('#tsEmbed', {
* ... // other embed view config
* discoveryExperience : {
* primaryNavbarVersion: PrimaryNavbarVersion.Sliding,
* homePage: HomePage.Modular,
* },
* })
* ```
*/
discoveryExperience?: DiscoveryExperience;
/**
* To set the initial state of the search bar in case of saved-answers.
* @version SDK: 1.32.0 | ThoughtSpot: 10.0.0.cl
* @default false
* @deprecated Use {@link collapseSearchBar} instead
*/
collapseSearchBarInitially?: boolean;
/**
* This controls the initial behaviour of custom column groups accordion.
* It takes DataPanelCustomColumnGroupsAccordionState enum values as input.
* List of different enum values:-
* - EXPAND_ALL: Expand all the accordion initially in data panel v2.
* - COLLAPSE_ALL: Collapse all the accordions initially in data panel v2.
* - EXPAND_FIRST: Expand the first accordion and collapse the rest.
*
* Supported embed types: `AppEmbed`
* @version SDK: 1.32.0 | ThoughtSpot: 10.0.0.cl
* @default DataPanelCustomColumnGroupsAccordionState.EXPAND_ALL
* @example
* ```js
* const embed = new AppEmbed('#embed', {
* ... // other app view config
* dataPanelCustomGroupsAccordionInitialState:
* DataPanelCustomColumnGroupsAccordionState.EXPAND_ALL,
* });
* ```
*/
dataPanelCustomGroupsAccordionInitialState?: DataPanelCustomColumnGroupsAccordionState;
/**
* Flag that allows using `EmbedEvent.OnBeforeGetVizDataIntercept`.
* @version SDK : 1.29.0 | ThoughtSpot: 10.1.0.cl
*/
isOnBeforeGetVizDataInterceptEnabled?: boolean;
/**
* Flag to use home page search bar mode
*
* Supported embed types: `AppEmbed`
* @version SDK : 1.33.0 | ThoughtSpot: 10.3.0.cl
*/
homePageSearchBarMode?: HomePageSearchBarMode;
/**
* This flag is used to enable unified search experience for full app embed.
*
* Supported embed types: `AppEmbed`
* @version SDK: 1.34.0 | ThoughtSpot:10.5.0.cl
* @default true
* @example
* ```js
* const embed = new AppEmbed('#tsEmbed', {
* ... // other embed view config
* isUnifiedSearchExperienceEnabled: true,
* })
* ```
*/
isUnifiedSearchExperienceEnabled?: boolean;
/**
* This flag is used to enable/disable the styling and grouping in a Liveboard
*
* Supported embed types: `AppEmbed`, `LiveboardEmbed`
* @type {boolean}
* @version SDK: 1.40.0 | ThoughtSpot: 10.11.0.cl
* @example
* ```js
* // Replace <EmbedComponent> with embed component name. For example, AppEmbed or LiveboardEmbed
* const embed = new <EmbedComponent>('#tsEmbed', {
* ... // other embed view config
* isLiveboardStylingAndGroupingEnabled: true,
* })
* ```
*/
isLiveboardStylingAndGroupingEnabled?: boolean;
/**
* This flag is used to enable the full height lazy load data.
*
* @example
* ```js
* const embed = new AppEmbed('#embed-container', {
* // ...other options
* fullHeight: true,
* lazyLoadingForFullHeight: true,
* })
* ```
*
* @type {boolean}
* @default false
* @version SDK: 1.40.0 | ThoughtSpot:10.12.0.cl
*/
lazyLoadingForFullHeight?: boolean;
/**
* The margin to be used for lazy loading.
*
* For example, if the margin is set to '10px',
* the visualization will be loaded 10px before the its top edge is visible in the
* viewport.
*
* The format is similar to CSS margin.
*
* @example
* ```js
* const embed = new AppEmbed('#embed-container', {
* // ...other options
* fullHeight: true,
* lazyLoadingForFullHeight: true,
* // Using 0px, the visualization will be only loaded when its visible in the viewport.
* lazyLoadingMargin: '0px',
* })
* ```
* @type {string}
* @version SDK: 1.40.0 | ThoughtSpot:10.12.0.cl
*/
lazyLoadingMargin?: string;
}
/**
* Embeds full ThoughtSpot experience in a host application.
* @group Embed components
*/
export class AppEmbed extends V1Embed {
protected viewConfig: AppViewConfig;
constructor(domSelector: DOMSelector, viewConfig: AppViewConfig);
/**
* Constructs a map of parameters to be passed on to the
* embedded Liveboard or visualization.
*/
protected getEmbedParams(): string;
/**
* Constructs the URL of the ThoughtSpot app page to be rendered.
* @param pageId The ID of the page to be embedded.
*/
getIFrameSrc(): string;
/**
* Set the iframe height as per the computed height received
* from the ThoughtSpot app.
* @param data The event payload
*/
protected updateIFrameHeight: (data: MessagePayload) => void;
/**
* Navigate to particular page for app embed. eg:answers/pinboards/home
* This is used for embedding answers, pinboards, visualizations and full application
* only.
* @param path string | number The string, set to iframe src and navigate to new page
* eg: appEmbed.navigateToPage('pinboards')
* When used with `noReload` (default: true) this can also be a number
* like 1/-1 to go forward/back.
* @param noReload boolean Trigger the navigation without reloading the page
* @version SDK: 1.12.0 | ThoughtSpot: 8.4.0.cl, 8.4.1-sw
*/
navigateToPage(path: string | number, noReload?: boolean): void;
/**
* Destroys the ThoughtSpot embed, and remove any nodes from the DOM.
* @version SDK: 1.39.0 | ThoughtSpot: 10.10.0.cl
*/
destroy(): void;
/**
* Renders the embedded application pages in the ThoughtSpot app.
* @param renderOptions An object containing the page ID
* to be embedded.
*/
render(): Promise<AppEmbed>;
}
}
declare module '@thoughtspot/visual-embed-sdk/embed/base' {
import { EmbedConfig, PrefetchFeatures } from '@thoughtspot/visual-embed-sdk/types';
import { notifyAuthFailure, notifyAuthSDKSuccess, notifyAuthSuccess, notifyLogout, AuthEventEmitter } from '@thoughtspot/visual-embed-sdk/auth';
import '../utils/with-resolvers-polyfill';
export interface executeTMLInput {
metadata_tmls: string[];
import_policy?: 'PARTIAL' | 'ALL_OR_NONE' | 'VALIDATE_ONLY';
create_new?: boolean;
}
export interface exportTMLInput {
metadata: {
identifier: string;
type?: 'LIVEBOARD' | 'ANSWER' | 'LOGICAL_TABLE' | 'CONNECTION';
}[];
export_associated?: boolean;
export_fqn?: boolean;
edoc_format?: 'YAML' | 'JSON';
}
export let authPromise: Promise<boolean>;
export const getAuthPromise: () => Promise<boolean>;
export { notifyAuthFailure, notifyAuthSDKSuccess, notifyAuthSuccess, notifyLogout, };
/**
* Perform authentication on the ThoughtSpot app as applicable.
*/
export const handleAuth: () => Promise<boolean>;
/**
* Prefetches static resources from the specified URL. Web browsers can then cache the
* prefetched resources and serve them from the user's local disk to provide faster access
* to your app.
* @param url The URL provided for prefetch
* @param prefetchFeatures Specify features which needs to be prefetched.
* @param additionalFlags This can be used to add any URL flag.
* @version SDK: 1.4.0 | ThoughtSpot: ts7.sep.cl, 7.2.1
* @group Global methods
*/
export const prefetch: (url?: string, prefetchFeatures?: PrefetchFeatures[], additionalFlags?: {
[key: string]: string | number | boolean;
}) => void;
export const createAndSetInitPromise: () => void;
export const getInitPromise: () => Promise<ReturnType<typeof init>>;
export const getIsInitCalled: () => boolean;
/**
* Initializes the Visual Embed SDK globally and perform
* authentication if applicable. This function needs to be called before any ThoughtSpot
* component like Liveboard etc can be embedded. But need not wait for AuthEvent.SUCCESS
* to actually embed. That is handled internally.
* @param embedConfig The configuration object containing ThoughtSpot host,
* authentication mechanism and so on.
* @example
* ```js
* const authStatus = init({
* thoughtSpotHost: 'https://my.thoughtspot.cloud',
* authType: AuthType.None,
* });
* authStatus.on(AuthStatus.FAILURE, (reason) => { // do something here });
* ```
* @returns {@link AuthEventEmitter} event emitter which emits events on authentication success,
* failure and logout. See {@link AuthStatus}
* @version SDK: 1.0.0 | ThoughtSpot ts7.april.cl, 7.2.1
* @group Authentication / Init
*/
export const init: (embedConfig: EmbedConfig) => AuthEventEmitter;
/**
*
*/
export function disableAutoLogin(): void;
/**
* Logs out from ThoughtSpot. This also sets the autoLogin flag to false, to
* prevent the SDK from automatically logging in again.
*
* You can call the `init` method again to re login, if autoLogin is set to
* true in this second call it will be honored.
* @param doNotDisableAutoLogin This flag when passed will not disable autoLogin
* @returns Promise which resolves when logout completes.
* @version SDK: 1.10.1 | ThoughtSpot: 8.2.0.cl, 8.4.1-sw
* @group Global methods
*/
export const logout: (doNotDisableAutoLogin?: boolean) => Promise<boolean>;
/**
* Renders functions in a queue, resolves to next function only after the callback next
* is called
* @param fn The function being registered
*/
export const renderInQueue: (fn: (next?: (val?: any) => void) => Promise<any>) => Promise<any>;
/**
* Imports TML representation of the metadata objects into ThoughtSpot.
* @param data
* @returns imports TML data into ThoughtSpot
* @example
* ```js
* executeTML({
* //Array of metadata Tmls in string format
* metadata_tmls: [
* "'\''{\"guid\":\"9bd202f5-d431-44bf-9a07-b4f7be372125\",
* \"liveboard\":{\"name\":\"Parameters Liveboard\"}}'\''"
* ],
* import_policy: 'PARTIAL', // Specifies the import policy for the TML import.
* create_new: false, // If selected, creates TML objects with new GUIDs.
* }).then(result => {
* console.log(result);
* }).catch(error => {
* console.error(error);
* });
*```
* @version SDK: 1.23.0 | ThoughtSpot: 9.4.0.cl
* @group Global methods
*/
export const executeTML: (data: executeTMLInput) => Promise<any>;
/**
* Exports TML representation of the metadata objects from ThoughtSpot in JSON or YAML
* format.
* @param data
* @returns exports TML data
* @example
* ```js
* exportTML({
* metadata: [
* {
* type: "LIVEBOARD", //Metadata Type
* identifier: "9bd202f5-d431-44bf-9a07-b4f7be372125" //Metadata Id
* }
* ],
* export_associated: false,//indicates whether to export associated metadata objects
* export_fqn: false, //Adds FQNs of the referenced objects.For example, if you are
* //exporting a Liveboard and its associated objects, the API
* //returns the Liveboard TML data with the FQNs of the referenced
* //worksheet. If the exported TML data includes FQNs, you don't need
* //to manually add FQNs of the referenced objects during TML import.
* edoc_format: "JSON" //It takes JSON or YAML value
* }).then(result => {
* console.log(result);
* }).catch(error => {
* console.error(error);
* });
* ```
* @version SDK: 1.23.0 | ThoughtSpot: 9.4.0.cl
* @group Global methods
*/
export const exportTML: (data: exportTMLInput) => Promise<any>;
/**
*
*/
export function reset(): void;
}
declare module '@thoughtspot/visual-embed-sdk/embed/liveboard' {
/**
* Copyright (c) 2022
*
* Embed a ThoughtSpot Liveboard or visualization
* https://developers.thoughtspot.com/docs/?pageid=embed-pinboard
* https://developers.thoughtspot.com/docs/?pageid=embed-a-viz
* @summary Liveboard & visualization embed
* @author Ayon Ghosh <ayon.ghosh@thoughtspot.com>
*/
import { DOMSelector, HostEvent, SearchLiveboardCommonViewConfig as LiveboardOtherViewConfig, BaseViewConfig, LiveboardAppEmbedViewConfig } from '@thoughtspot/visual-embed-sdk/types';
import { TsEmbed, V1Embed } from '@thoughtspot/visual-embed-sdk/embed/ts-embed';
import { TriggerPayload, TriggerResponse } from '@thoughtspot/visual-embed-sdk/embed/hostEventClient/contracts';
/**
* The configuration for the embedded Liveboard or visualization page view.
* @group Embed components
*/
export interface LiveboardViewConfig extends BaseViewConfig, LiveboardOtherViewConfig, LiveboardAppEmbedViewConfig {
/**
* If set to true, the embedded object container dynamically resizes
* according to the height of the Liveboard.
*
* **Note**: Using fullHeight loads all visualizations on the
* Liveboard simultaneously, which results in multiple warehouse
* queries and potentially a longer wait for the topmost
* visualizations to display on the screen.
* Setting `fullHeight` to `false` fetches visualizations
* incrementally as users scroll the page to view the charts and tables.
*
* @version SDK: 1.1.0 | ThoughtSpot: ts7.may.cl, 7.2.1
*
* Supported embed types: `LiveboardEmbed`
* @example
* ```js
* const embed = new LiveboardEmbed('#embed', {
* ... // other liveboard view config
* fullHeight: true,
* });
* ```
*/
fullHeight?: boolean;
/**
* This is the minimum height(in pixels) for a full-height Liveboard.
* Setting this height helps resolve issues with empty Liveboards and
* other screens navigable from a Liveboard.
*
* Supported embed types: `LiveboardEmbed`
* @version SDK: 1.5.0 | ThoughtSpot: ts7.oct.cl, 7.2.1
* @default 500
* @example
* ```js
* const embed = new LiveboardEmbed('#embed', {
* ... // other liveboard view config
* fullHeight: true,
* defaultHeight: 600,
* });
* ```
*/
defaultHeight?: number;
/**
* @Deprecated If set to true, the context menu in visualizations will be enabled.
* @example
* ```js
* const embed = new LiveboardEmbed('#tsEmbed', {
* ... //other embed view config
* enableVizTransformations:true,
* })
* ```
* @version: SDK: 1.1.0 | ThoughtSpot: 8.1.0.sw
*/
enableVizTransformations?: boolean;
/**
* The Liveboard to display in the embedded view.
* Use either liveboardId or pinboardId to reference the Liveboard to embed.
*
* Supported embed types: `LiveboardEmbed`
* @version SDK: 1.3.0 | ThoughtSpot ts7.aug.cl, 7.2.1
* @example
* ```js
* const embed = new LiveboardEmbed('#tsEmbed', {
* ... //other embed view config
* liveboardId:id of liveboard,
* })
*/
liveboardId?: string;
/**
* To support backward compatibility
* @hidden
*/
pinboardId?: string;
/**
* The visualization within the Liveboard to display.
*
* Supported embed types: `LiveboardEmbed`
* @version SDK: 1.9.1 | ThoughtSpot: 8.1.0.cl, 8.4.1-sw
* @example
* ```js
* const embed = new LiveboardEmbed('#tsEmbed', {
* ... //other embed view config
* vizId:'430496d6-6903-4601-937e-2c691821af3c',
* })
* ```
*/
vizId?: string;
/**
* If set to true, all filter chips from a
* Liveboard page will be read-only (no X buttons)
*
* Supported embed types: `LiveboardEmbed`
* @version SDK: 1.3.0 | ThoughtSpot ts7.aug.cl, 7.2.1.sw
* @example
* ```js
* const embed = new LiveboardEmbed('#tsEmbed', {
* ... //other embed view config
* preventLiveboardFilterRemoval:true,
* })
* ```
*/
preventLiveboardFilterRemoval?: boolean;
/**
* Array of visualization IDs which should be visible when the Liveboard
* renders. This can be changed by triggering the `SetVisibleVizs`
* event.
*
* Supported embed types: `LiveboardEmbed`
* @version SDK: 1.9.1 | ThoughtSpot: 8.1.0.cl, 8.4.1-sw
* @example
* ```js
* const embed = new LiveboardEmbed('#tsEmbed', {
* ... //other embed view config
* visibleVizs: [
* '430496d6-6903-4601-937e-2c691821af3c',
* 'f547ec54-2a37-4516-a222-2b06719af726'
* ]
* })
*/
visibleVizs?: string[];
/**
* To support backward compatibility
* @hidden
*/
preventPinboardFilterRemoval?: boolean;
/**
* Render embedded Liveboards and visualizations in the
* new Liveboard experience mode.
*
* Supported embed types: `LiveboardEmbed`
* @version SDK: 1.14.0 | ThoughtSpot: 8.6.0.cl, 8.8.1-sw
* @example
* ```js
* const embed = new LiveboardEmbed('#tsEmbed', {
* ... //other embed view config
* liveboardV2:true,
* })
* ```
*/
liveboardV2?: boolean;
/**
* Set a Liveboard tab as an active tab.
* Specify the tab ID.
*
* Supported embed types: `LiveboardEmbed`
* @example
* ```js
* const embed = new LiveboardEmbed('#tsEmbed', {
* ... //other embed view config
* activeTabId:'id-1234',
* })
* ```
* @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1-sw
*/
activeTabId?: string;
/**
* Show or hide the tab panel of the embedded Liveboard.
*
* Supported embed types: `LiveboardEmbed`
* @version SDK: 1.25.0 | ThoughtSpot: 9.6.0.cl, 9.8.0.sw
* @example
* ```js
* const embed = new LiveboardEmbed('#tsEmbed', {
* ... //other embed view config
* hideTabPanel:true,
* })
* ```
*/
hideTabPanel?: boolean;
/**
* Show a preview image of the visualization before the visualization loads.
* Only works for visualizations embeds with a viz id.
*
* Also, viz snashot should be enabled in the ThoughtSpot instance.
* Contact ThoughtSpot support to enable this feature.
*
* Since, this will show preview images, be careful that it may show
* undesired data to the user when using row level security.
*
* Supported embed types: `LiveboardEmbed`
* @example
* ```js
* const embed = new LiveboardEmbed('#tsEmbed', {
* liveboardId: 'liveboard-id',
* vizId: 'viz-id',
* showPreviewLoader: true,
* });
* embed.render();
* ```
* @version SDK: 1.32.0 | ThoughtSpot: 10.0.0.cl
*/
showPreviewLoader?: boolean;
/**
* The Liveboard to run on regular intervals to fetch the cdw token.
*
* Supported embed types: `LiveboardEmbed`
* @hidden
* @version SDK: 1.35.0 | ThoughtSpot:10.6.0.cl
* @example
* ```js
* const embed = new LiveboardEmbed('#tsEmbed', {
* ... //other embed view config
* oAuthPollingInterval: value in milliseconds,
* })
*/
oAuthPollingInterval?: number;
/**
* The Liveboard is set to force a token fetch during the initial load.
*
* Supported embed types: `LiveboardEmbed`
* @hidden
* @version SDK: 1.35.0 | ThoughtSpot:10.6.0.cl
* @example
* ```js
* const embed = new LiveboardEmbed('#tsEmbed', {
* ... //other embed view config
* isForceRedirect: false,
* })
*/
isForceRedirect?: boolean;
/**
* The source connection ID for authentication.
* @hidden
* @version SDK: 1.35.0 | ThoughtSpot:10.6.0.cl
*
* Supported embed types: `LiveboardEmbed`
* @example
* ```js
* const embed = new LiveboardEmbed('#tsEmbed', {
* ... //other embed view config
* dataSourceId: '',
* })
*/
dataSourceId?: string;
/**
* The list of tab IDs to hide from the embedded.
* This Tabs will be hidden from their respective LBs.
* Use this to hide an tabID.
*
* Supported embed types: `LiveboardEmbed`
* @example
* ```js
* const embed = new LiveboardEmbed('#tsEmbed', {
* ... // other embed view config
* hiddenTabs: [
* '430496d6-6903-4601-937e-2c691821af3c',
* 'f547ec54-2a37-4516-a222-2b06719af726'
* ]
* });
* ```
* @version SDK: 1.26.0 | ThoughtSpot: 9.7.0.cl, 10.1.0.sw
*/
hiddenTabs?: string[];
/**
* The list of tab IDs to show in the embedded Liveboard.
* Only the tabs specified in the array will be shown in the Liveboard.
*
* Use either `visibleTabs` or `hiddenTabs`.
*
* Supported embed types: `LiveboardEmbed`
* @version SDK: 1.26.0 | ThoughtSpot: 9.7.0.cl, 10.1.0.sw
* @example
* ```js
* const embed = new LiveboardEmbed('#tsEmbed', {
* ... // other embed view config
* visibleTabs: [
* '430496d6-6903-4601-937e-2c691821af3c',
* 'f547ec54-2a37-4516-a222-2b06719af726'
* ]
* })
* ```
*/
visibleTabs?: string[];
/**
* This flag is used to enable/disable the styling and grouping in a Liveboard
*
* Supported embed types: `LiveboardEmbed`, `AppEmbed`
* @type {boolean}
* @version SDK: 1.40.0 | ThoughtSpot: 10.11.0.cl
* @example
* ```js
* // Replace <EmbedComponent> with embed component name. For example, AppEmbed or LiveboardEmbed
* const embed = new <EmbedComponent>('#tsEmbed', {
* ... // other embed view config
* isLiveboardStylingAndGroupingEnabled: true,
* })
* ```
*/
isLiveboardStylingAndGroupingEnabled?: boolean;
/**
* This flag is used to enable the full height lazy load data.
*
* @example
* ```js
* const embed = new LiveboardEmbed('#embed-container', {
* // ...other options
* fullHeight: true,
* lazyLoadingForFullHeight: true,
* })
* ```
*
* @type {boolean}
* @default false
* @version SDK: 1.40.0 | ThoughtSpot:10.12.0.cl
*/
lazyLoadingForFullHeight?: boolean;
/**
* The margin to be used for lazy loading.
*
* For example, if the margin is set to '10px',
* the visualization will be loaded 10px before the its top edge is visible in the
* viewport.