@thoughtspot/visual-embed-sdk 1.39.1 → 1.39.2-alpha.2

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.
Files changed (190) hide show
  1. package/cjs/package.json +1 -1
  2. package/cjs/src/config.spec.js +9 -0
  3. package/cjs/src/config.spec.js.map +1 -1
  4. package/cjs/src/embed/app.d.ts +75 -15
  5. package/cjs/src/embed/app.d.ts.map +1 -1
  6. package/cjs/src/embed/app.js +69 -9
  7. package/cjs/src/embed/app.js.map +1 -1
  8. package/cjs/src/embed/app.spec.js +374 -12
  9. package/cjs/src/embed/app.spec.js.map +1 -1
  10. package/cjs/src/embed/bodyless-conversation.d.ts +19 -7
  11. package/cjs/src/embed/bodyless-conversation.d.ts.map +1 -1
  12. package/cjs/src/embed/bodyless-conversation.js +24 -4
  13. package/cjs/src/embed/bodyless-conversation.js.map +1 -1
  14. package/cjs/src/embed/bodyless-conversation.spec.js +8 -190
  15. package/cjs/src/embed/bodyless-conversation.spec.js.map +1 -1
  16. package/cjs/src/embed/conversation.spec.js +28 -0
  17. package/cjs/src/embed/conversation.spec.js.map +1 -1
  18. package/cjs/src/embed/embedConfig.d.ts +9 -7
  19. package/cjs/src/embed/embedConfig.d.ts.map +1 -1
  20. package/cjs/src/embed/embedConfig.js +9 -7
  21. package/cjs/src/embed/embedConfig.js.map +1 -1
  22. package/cjs/src/embed/liveboard.d.ts +56 -17
  23. package/cjs/src/embed/liveboard.d.ts.map +1 -1
  24. package/cjs/src/embed/liveboard.js +48 -4
  25. package/cjs/src/embed/liveboard.js.map +1 -1
  26. package/cjs/src/embed/liveboard.spec.js +215 -11
  27. package/cjs/src/embed/liveboard.spec.js.map +1 -1
  28. package/cjs/src/embed/ts-embed.d.ts +5 -0
  29. package/cjs/src/embed/ts-embed.d.ts.map +1 -1
  30. package/cjs/src/embed/ts-embed.js +16 -1
  31. package/cjs/src/embed/ts-embed.js.map +1 -1
  32. package/cjs/src/embed/ts-embed.spec.js +164 -0
  33. package/cjs/src/embed/ts-embed.spec.js.map +1 -1
  34. package/cjs/src/errors.d.ts +1 -0
  35. package/cjs/src/errors.d.ts.map +1 -1
  36. package/cjs/src/errors.js +1 -0
  37. package/cjs/src/errors.js.map +1 -1
  38. package/cjs/src/index.d.ts +2 -2
  39. package/cjs/src/index.d.ts.map +1 -1
  40. package/cjs/src/index.js +2 -1
  41. package/cjs/src/index.js.map +1 -1
  42. package/cjs/src/react/all-types-export.d.ts +1 -1
  43. package/cjs/src/react/all-types-export.d.ts.map +1 -1
  44. package/cjs/src/react/all-types-export.js +3 -2
  45. package/cjs/src/react/all-types-export.js.map +1 -1
  46. package/cjs/src/react/index.d.ts +71 -20
  47. package/cjs/src/react/index.d.ts.map +1 -1
  48. package/cjs/src/react/index.js +79 -42
  49. package/cjs/src/react/index.js.map +1 -1
  50. package/cjs/src/react/index.spec.js +436 -100
  51. package/cjs/src/react/index.spec.js.map +1 -1
  52. package/cjs/src/types.d.ts +80 -6
  53. package/cjs/src/types.d.ts.map +1 -1
  54. package/cjs/src/types.js +45 -1
  55. package/cjs/src/types.js.map +1 -1
  56. package/cjs/src/utils/graphql/nlsService/conversation-service.d.ts.map +1 -1
  57. package/cjs/src/utils/graphql/nlsService/conversation-service.js +2 -0
  58. package/cjs/src/utils/graphql/nlsService/conversation-service.js.map +1 -1
  59. package/cjs/src/utils/processTrigger.js +2 -1
  60. package/cjs/src/utils/processTrigger.js.map +1 -1
  61. package/cjs/src/utils.d.ts +6 -0
  62. package/cjs/src/utils.d.ts.map +1 -1
  63. package/cjs/src/utils.js +23 -3
  64. package/cjs/src/utils.js.map +1 -1
  65. package/cjs/src/utils.spec.js +237 -1
  66. package/cjs/src/utils.spec.js.map +1 -1
  67. package/dist/{index-JaFaxrvQ.js → index-CmEQfuE3.js} +1 -1
  68. package/dist/index-DeFzsyFF.js +7371 -0
  69. package/dist/index-Dpf0rd6w.js +7371 -0
  70. package/dist/index-UuEbsISo.js +7447 -0
  71. package/dist/index-e3Uw3YFO.js +7371 -0
  72. package/dist/src/embed/app.d.ts +75 -15
  73. package/dist/src/embed/app.d.ts.map +1 -1
  74. package/dist/src/embed/bodyless-conversation.d.ts +19 -7
  75. package/dist/src/embed/bodyless-conversation.d.ts.map +1 -1
  76. package/dist/src/embed/embedConfig.d.ts +9 -7
  77. package/dist/src/embed/embedConfig.d.ts.map +1 -1
  78. package/dist/src/embed/liveboard.d.ts +56 -17
  79. package/dist/src/embed/liveboard.d.ts.map +1 -1
  80. package/dist/src/embed/ts-embed.d.ts +5 -0
  81. package/dist/src/embed/ts-embed.d.ts.map +1 -1
  82. package/dist/src/errors.d.ts +1 -0
  83. package/dist/src/errors.d.ts.map +1 -1
  84. package/dist/src/index.d.ts +2 -2
  85. package/dist/src/index.d.ts.map +1 -1
  86. package/dist/src/react/all-types-export.d.ts +1 -1
  87. package/dist/src/react/all-types-export.d.ts.map +1 -1
  88. package/dist/src/react/index.d.ts +71 -20
  89. package/dist/src/react/index.d.ts.map +1 -1
  90. package/dist/src/types.d.ts +80 -6
  91. package/dist/src/types.d.ts.map +1 -1
  92. package/dist/src/utils/graphql/nlsService/conversation-service.d.ts.map +1 -1
  93. package/dist/src/utils.d.ts +6 -0
  94. package/dist/src/utils.d.ts.map +1 -1
  95. package/dist/tsembed-react.es.js +320 -78
  96. package/dist/tsembed-react.js +320 -76
  97. package/dist/tsembed.es.js +238 -31
  98. package/dist/tsembed.js +236 -29
  99. package/dist/visual-embed-sdk-react-full.d.ts +288 -72
  100. package/dist/visual-embed-sdk-react.d.ts +288 -72
  101. package/dist/visual-embed-sdk.d.ts +218 -53
  102. package/lib/package.json +1 -1
  103. package/lib/src/config.spec.js +9 -0
  104. package/lib/src/config.spec.js.map +1 -1
  105. package/lib/src/embed/app.d.ts +75 -15
  106. package/lib/src/embed/app.d.ts.map +1 -1
  107. package/lib/src/embed/app.js +69 -9
  108. package/lib/src/embed/app.js.map +1 -1
  109. package/lib/src/embed/app.spec.js +376 -14
  110. package/lib/src/embed/app.spec.js.map +1 -1
  111. package/lib/src/embed/bodyless-conversation.d.ts +19 -7
  112. package/lib/src/embed/bodyless-conversation.d.ts.map +1 -1
  113. package/lib/src/embed/bodyless-conversation.js +23 -4
  114. package/lib/src/embed/bodyless-conversation.js.map +1 -1
  115. package/lib/src/embed/bodyless-conversation.spec.js +9 -191
  116. package/lib/src/embed/bodyless-conversation.spec.js.map +1 -1
  117. package/lib/src/embed/conversation.spec.js +30 -2
  118. package/lib/src/embed/conversation.spec.js.map +1 -1
  119. package/lib/src/embed/embedConfig.d.ts +9 -7
  120. package/lib/src/embed/embedConfig.d.ts.map +1 -1
  121. package/lib/src/embed/embedConfig.js +9 -7
  122. package/lib/src/embed/embedConfig.js.map +1 -1
  123. package/lib/src/embed/liveboard.d.ts +56 -17
  124. package/lib/src/embed/liveboard.d.ts.map +1 -1
  125. package/lib/src/embed/liveboard.js +49 -5
  126. package/lib/src/embed/liveboard.js.map +1 -1
  127. package/lib/src/embed/liveboard.spec.js +215 -11
  128. package/lib/src/embed/liveboard.spec.js.map +1 -1
  129. package/lib/src/embed/ts-embed.d.ts +5 -0
  130. package/lib/src/embed/ts-embed.d.ts.map +1 -1
  131. package/lib/src/embed/ts-embed.js +16 -1
  132. package/lib/src/embed/ts-embed.js.map +1 -1
  133. package/lib/src/embed/ts-embed.spec.js +164 -0
  134. package/lib/src/embed/ts-embed.spec.js.map +1 -1
  135. package/lib/src/errors.d.ts +1 -0
  136. package/lib/src/errors.d.ts.map +1 -1
  137. package/lib/src/errors.js +1 -0
  138. package/lib/src/errors.js.map +1 -1
  139. package/lib/src/index.d.ts +2 -2
  140. package/lib/src/index.d.ts.map +1 -1
  141. package/lib/src/index.js +2 -2
  142. package/lib/src/index.js.map +1 -1
  143. package/lib/src/react/all-types-export.d.ts +1 -1
  144. package/lib/src/react/all-types-export.d.ts.map +1 -1
  145. package/lib/src/react/all-types-export.js +1 -1
  146. package/lib/src/react/all-types-export.js.map +1 -1
  147. package/lib/src/react/index.d.ts +71 -20
  148. package/lib/src/react/index.d.ts.map +1 -1
  149. package/lib/src/react/index.js +79 -43
  150. package/lib/src/react/index.js.map +1 -1
  151. package/lib/src/react/index.spec.js +439 -103
  152. package/lib/src/react/index.spec.js.map +1 -1
  153. package/lib/src/types.d.ts +80 -6
  154. package/lib/src/types.d.ts.map +1 -1
  155. package/lib/src/types.js +45 -1
  156. package/lib/src/types.js.map +1 -1
  157. package/lib/src/utils/graphql/nlsService/conversation-service.d.ts.map +1 -1
  158. package/lib/src/utils/graphql/nlsService/conversation-service.js +2 -0
  159. package/lib/src/utils/graphql/nlsService/conversation-service.js.map +1 -1
  160. package/lib/src/utils/processTrigger.js +2 -1
  161. package/lib/src/utils/processTrigger.js.map +1 -1
  162. package/lib/src/utils.d.ts +6 -0
  163. package/lib/src/utils.d.ts.map +1 -1
  164. package/lib/src/utils.js +21 -2
  165. package/lib/src/utils.js.map +1 -1
  166. package/lib/src/utils.spec.js +238 -2
  167. package/lib/src/utils.spec.js.map +1 -1
  168. package/lib/src/visual-embed-sdk.d.ts +219 -54
  169. package/package.json +1 -1
  170. package/src/config.spec.ts +11 -0
  171. package/src/embed/app.spec.ts +479 -26
  172. package/src/embed/app.ts +133 -27
  173. package/src/embed/bodyless-conversation.spec.ts +9 -203
  174. package/src/embed/bodyless-conversation.ts +24 -10
  175. package/src/embed/conversation.spec.ts +40 -2
  176. package/src/embed/embedConfig.ts +10 -8
  177. package/src/embed/liveboard.spec.ts +256 -5
  178. package/src/embed/liveboard.ts +99 -27
  179. package/src/embed/ts-embed.spec.ts +225 -0
  180. package/src/embed/ts-embed.ts +19 -0
  181. package/src/errors.ts +1 -0
  182. package/src/index.ts +2 -0
  183. package/src/react/all-types-export.ts +2 -1
  184. package/src/react/index.spec.tsx +556 -157
  185. package/src/react/index.tsx +117 -51
  186. package/src/types.ts +117 -43
  187. package/src/utils/graphql/nlsService/conversation-service.ts +2 -0
  188. package/src/utils/processTrigger.ts +1 -1
  189. package/src/utils.spec.ts +279 -2
  190. package/src/utils.ts +28 -2
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
 
3
- import React, { useRef } from 'react';
3
+ import React, { useRef, useCallback } from 'react';
4
4
  import useDeepCompareEffect from 'use-deep-compare-effect';
5
5
  import { AuthEventEmitter } from '../auth';
6
6
  import { deepMerge } from '../utils';
@@ -10,12 +10,13 @@ import { SearchEmbed as _SearchEmbed, SearchViewConfig } from '../embed/search';
10
10
  import { AppEmbed as _AppEmbed, AppViewConfig } from '../embed/app';
11
11
  import { LiveboardEmbed as _LiveboardEmbed, LiveboardViewConfig } from '../embed/liveboard';
12
12
  import { TsEmbed } from '../embed/ts-embed';
13
- import { SpotterAgentEmbed as _SpotterAgentEmbed, SpotterAgentEmbedViewConfig } from '../embed/bodyless-conversation';
13
+ import { SpotterAgentEmbed as _SpotterAgentEmbed, SpotterAgentEmbedViewConfig, ConversationMessage as _ConversationMessage, SpotterAgentMessageViewConfig } from '../embed/bodyless-conversation';
14
14
 
15
15
  import { EmbedConfig, EmbedEvent, AllEmbedViewConfig } from '../types';
16
16
  import { EmbedProps, getViewPropsAndListeners } from './util';
17
17
  import { SpotterEmbed as _SpotterEmbed, SpotterEmbedViewConfig, ConversationEmbed as _ConversationEmbed, ConversationViewConfig } from '../embed/conversation';
18
18
  import { init } from '../embed/base';
19
+ import { ERROR_MESSAGE } from '../errors';
19
20
 
20
21
  const componentFactory = <T extends typeof TsEmbed, U extends EmbedProps, V extends AllEmbedViewConfig>(
21
22
  EmbedConstructor: T,
@@ -383,62 +384,61 @@ export const ConversationEmbed = componentFactory<
383
384
  ConversationViewConfig
384
385
  >(_ConversationEmbed);
385
386
 
386
- interface SpotterAgentEmbedProps extends EmbedProps, SpotterAgentEmbedViewConfig {}
387
+ /**
388
+ * React component for individual conversation messages from SpotterAgent.
389
+ * This component is used internally by the useSpotterAgent hook.
390
+ * @version SDK: 1.37.0 | ThoughtSpot: 10.9.0.cl
391
+ */
392
+ interface ConversationMessageProps extends EmbedProps, SpotterAgentMessageViewConfig {}
393
+
394
+ export const ConversationMessage = componentFactory<
395
+ typeof _ConversationMessage,
396
+ ConversationMessageProps,
397
+ SpotterAgentMessageViewConfig
398
+ >(_ConversationMessage);
399
+
400
+ type SpotterMessageProps = {
401
+ message: SpotterAgentMessageViewConfig;
402
+ query?: string;
403
+ } & Omit<EmbedProps, keyof SpotterAgentMessageViewConfig>;
387
404
 
388
405
  /**
389
- * React component for SpotterAgent embed, which can be integrated inside
390
- * chatbots or other conversational interfaces.
406
+ * React component for displaying individual conversation messages from SpotterAgent.
407
+ *
408
+ * This component renders a single message response from your ThoughtSpot conversation,
409
+ * showing charts, visualizations, or text responses based on the user's query.
410
+ *
391
411
  * @example
392
412
  * ```tsx
393
- * function SpotterAgent() {
394
- * const ref = useRef();
395
- *
396
- * const handleSendMessage = async () => {
397
- * const { container, error } = await ref.current.sendMessage('show me sales by region');
398
- * if (container) {
399
- * document.body.appendChild(container);
400
- * }
401
- * };
402
- *
403
- * return (
404
- * <div>
405
- * <SpotterAgentEmbed ref={ref} worksheetId="worksheetId" />
406
- * <button onClick={handleSendMessage}>Send Message</button>
407
- * </div>
408
- * );
413
+ * const { sendMessage } = useSpotterAgent({ worksheetId: 'worksheetId' });
414
+ * const result = await sendMessage('show me sales by region');
415
+ *
416
+ * if (!result.error) {
417
+ * // Simple usage - just pass the message data
418
+ * <SpotterMessage message={result.message} />
419
+ *
420
+ * // With optional query for context
421
+ * <SpotterMessage
422
+ * message={result.message}
423
+ * query={result.query}
424
+ * />
409
425
  * }
410
426
  * ```
427
+ * @version SDK: 1.39.0 | ThoughtSpot: 10.11.0.cl
411
428
  */
412
- export const SpotterAgentEmbed = React.forwardRef<_SpotterAgentEmbed, SpotterAgentEmbedProps>((props, ref) => {
413
- const { className, ...restProps } = props;
414
- const serviceRef = useRef<_SpotterAgentEmbed | null>(null);
415
-
416
- useDeepCompareEffect(() => {
417
- if (serviceRef.current) {
418
- serviceRef.current = null;
419
- }
420
-
421
- const configProps = {
422
- ...restProps,
423
- ...(className ? { containerClassName: className } : {})
424
- };
425
-
426
- serviceRef.current = new _SpotterAgentEmbed(configProps);
429
+ export const SpotterMessage = React.forwardRef<
430
+ React.ComponentRef<typeof ConversationMessage>,
431
+ SpotterMessageProps
432
+ >((props, ref) => {
433
+ const { message, query: _, ...otherProps } = props;
427
434
 
428
- if (ref) {
429
- if (typeof ref === 'function') {
430
- ref(serviceRef.current);
431
- } else {
432
- ref.current = serviceRef.current;
433
- }
434
- }
435
-
436
- return () => {
437
- serviceRef.current = null;
438
- };
439
- }, [props]);
440
-
441
- return null;
435
+ return (
436
+ <ConversationMessage
437
+ ref={ref}
438
+ {...message}
439
+ {...otherProps}
440
+ />
441
+ );
442
442
  });
443
443
 
444
444
  /**
@@ -470,7 +470,8 @@ type EmbedComponent = typeof SearchEmbed
470
470
  | typeof LiveboardEmbed
471
471
  | typeof SearchBarEmbed
472
472
  | typeof SageEmbed
473
- | typeof SpotterAgentEmbed
473
+ | typeof ConversationMessage
474
+ | typeof SpotterMessage
474
475
  | typeof SpotterEmbed
475
476
  | typeof ConversationEmbed;
476
477
 
@@ -518,6 +519,71 @@ export function useInit(config: EmbedConfig) {
518
519
  return ref;
519
520
  }
520
521
 
522
+ /**
523
+ * React hook for interacting with SpotterAgent AI conversations.
524
+ *
525
+ * This hook provides a sendMessage function that allows you to send natural language
526
+ * queries to your data and get back AI-generated responses with visualizations.
527
+ *
528
+ * @param config - Configuration object containing worksheetId and other options
529
+ * @returns Object with sendMessage function that returns conversation results
530
+ * @example
531
+ * ```tsx
532
+ * const { sendMessage } = useSpotterAgent({ worksheetId: 'worksheetId' });
533
+ *
534
+ * const handleQuery = async () => {
535
+ * const result = await sendMessage('show me sales by region');
536
+ *
537
+ * if (!result.error) {
538
+ * // Display the message response
539
+ * <SpotterMessage message={result.message} />
540
+ * } else {
541
+ * console.error('Error:', result.error);
542
+ * }
543
+ * };
544
+ * ```
545
+ * @version SDK: 1.39.0 | ThoughtSpot: 10.11.0.cl
546
+ */
547
+ export function useSpotterAgent(config: SpotterAgentEmbedViewConfig) {
548
+ const serviceRef = useRef<_SpotterAgentEmbed | null>(null);
549
+
550
+ useDeepCompareEffect(() => {
551
+ if (serviceRef.current) {
552
+ serviceRef.current = null;
553
+ }
554
+
555
+ serviceRef.current = new _SpotterAgentEmbed(config);
556
+
557
+ return () => {
558
+ serviceRef.current = null;
559
+ };
560
+ }, [config]);
561
+
562
+ const sendMessage = useCallback(async (query: string) => {
563
+ if (!serviceRef.current) {
564
+ return { error: new Error(ERROR_MESSAGE.SPOTTER_AGENT_NOT_INITIALIZED) };
565
+ }
566
+
567
+ const result = await serviceRef.current.sendMessageData(query);
568
+
569
+ if (result.error) {
570
+ return { error: result.error };
571
+ }
572
+
573
+ return {
574
+ query: query,
575
+ message: {
576
+ ...result.data,
577
+ worksheetId: config.worksheetId,
578
+ },
579
+ };
580
+ }, [config.worksheetId]);
581
+
582
+ return {
583
+ sendMessage,
584
+ };
585
+ }
586
+
521
587
  export {
522
588
  LiveboardViewConfig,
523
589
  SearchViewConfig,
package/src/types.ts CHANGED
@@ -217,6 +217,12 @@ export enum HomeLeftNavItem {
217
217
  * @version SDK: 1.40.0 | ThoughtSpot: 10.11.0.cl
218
218
  */
219
219
  Spotter = 'spotter',
220
+ /**
221
+ * Favorites option in the insights left navigation,
222
+ * available when new navigation V3 is enabled.
223
+ * @version SDK: 1.41.0 | ThoughtSpot: 10.12.0.cl
224
+ */
225
+ Favorites = 'favorites',
220
226
  }
221
227
  export type DOMSelector = string | HTMLElement;
222
228
 
@@ -645,9 +651,9 @@ export interface EmbedConfig {
645
651
  customVariablesForThirdPartyTools?: Record< string, any >;
646
652
 
647
653
  disablePreauthCache?: boolean;
648
-
654
+
649
655
  /**
650
- * Disable fullscreen presentation mode functionality. When enabled, prevents entering
656
+ * Disable fullscreen presentation mode functionality. When enabled, prevents entering
651
657
  * and exiting fullscreen mode for embedded visualizations during presentations.
652
658
  * @default true (feature is disabled by default)
653
659
  * @version SDK: 1.40.0 | ThoughtSpot: 10.11.0.cl
@@ -702,7 +708,7 @@ export interface BaseViewConfig {
702
708
  /**
703
709
  * The width and height dimensions to render an embedded
704
710
  * object inside your app. Specify the values in pixels or percentage.
705
- *
711
+ *
706
712
  * Supported embed types: `AppEmbed`, `LiveboardEmbed`, `SageEmbed`, `SearchEmbed`, `SpotterAgentEmbed`, `SpotterEmbed`, `SearchBarEmbed`
707
713
  * @version SDK: 1.1.0 | ThoughtSpot: ts7.may.cl, 7.2.1
708
714
  * @example
@@ -732,7 +738,7 @@ export interface BaseViewConfig {
732
738
  * (...), and the contextual menu. These actions will be disabled
733
739
  * for the user.
734
740
  * Use this to disable actions.
735
- *
741
+ *
736
742
  * Supported embed types: `AppEmbed`, `LiveboardEmbed`, `SageEmbed`, `SearchEmbed`, `SpotterAgentEmbed`, `SpotterEmbed`, `SearchBarEmbed`
737
743
  * @version SDK: 1.6.0 | ThoughtSpot: ts8.nov.cl, 8.4.1.sw
738
744
  * @example
@@ -747,7 +753,7 @@ export interface BaseViewConfig {
747
753
  disabledActions?: Action[];
748
754
  /**
749
755
  * The tooltip to display for disabled actions.
750
- *
756
+ *
751
757
  * Supported embed types: `AppEmbed`, `LiveboardEmbed`, `SageEmbed`, `SearchEmbed`, `SpotterAgentEmbed`, `SpotterEmbed`, `SearchBarEmbed`
752
758
  * @version SDK: 1.6.0 | ThoughtSpot: ts8.nov.cl, 8.4.1.sw
753
759
  * @example
@@ -765,7 +771,7 @@ export interface BaseViewConfig {
765
771
  * The list of actions to hide from the embedded.
766
772
  * This actions will be hidden from the user.
767
773
  * Use this to hide an action.
768
- *
774
+ *
769
775
  * Supported embed types: `AppEmbed`, `LiveboardEmbed`, `SageEmbed`, `SearchEmbed`, `SpotterAgentEmbed`, `SpotterEmbed`, `SearchBarEmbed`
770
776
  * @version SDK: 1.6.0 | ThoughtSpot: ts8.nov.cl, 8.4.1.sw
771
777
  * @example
@@ -786,7 +792,7 @@ export interface BaseViewConfig {
786
792
  * Use this to hide all actions except the ones you want to show.
787
793
  *
788
794
  * Use either this or hiddenActions.
789
- *
795
+ *
790
796
  * Supported embed types: `AppEmbed`, `LiveboardEmbed`, `SageEmbed`, `SearchEmbed`, `SpotterAgentEmbed`, `SpotterEmbed`, `SearchBarEmbed`
791
797
  * @version SDK: 1.6.0 | ThoughtSpot: ts8.nov.cl, 8.4.1.sw
792
798
  * @important
@@ -802,7 +808,7 @@ export interface BaseViewConfig {
802
808
  visibleActions?: Action[];
803
809
  /**
804
810
  * The locale settings to apply to the embedded view.
805
- *
811
+ *
806
812
  * Supported embed types: `AppEmbed`, `LiveboardEmbed`, `SageEmbed`, `SearchEmbed`, `SpotterAgentEmbed`, `SpotterEmbed`, `SearchBarEmbed`
807
813
  * @version SDK: 1.9.4 | ThoughtSpot 8.1.0.cl, 8.4.1.sw
808
814
  * @example
@@ -823,7 +829,7 @@ export interface BaseViewConfig {
823
829
  * Warning: This option is for advanced use only and is used internally
824
830
  * to control embed behavior in non-regular ways. We do not publish the
825
831
  * list of supported keys and values associated with each.
826
- *
832
+ *
827
833
  * Supported embed types: `AppEmbed`, `LiveboardEmbed`, `SageEmbed`, `SearchEmbed`, `SpotterAgentEmbed`, `SpotterEmbed`, `SearchBarEmbed`
828
834
  * @example
829
835
  * ```js
@@ -849,7 +855,7 @@ export interface BaseViewConfig {
849
855
  /**
850
856
  * Insert as a sibling of the target container, instead of appending to a
851
857
  * child inside it.
852
- *
858
+ *
853
859
  * Supported embed types: `AppEmbed`, `LiveboardEmbed`, `SageEmbed`, `SearchEmbed`, `SpotterAgentEmbed`, `SpotterEmbed`, `SearchBarEmbed`
854
860
  * @version SDK: 1.2.0 | ThoughtSpot: 9.0.0.cl, 9.0.0.sw
855
861
  * @example
@@ -875,7 +881,7 @@ export interface BaseViewConfig {
875
881
  * PreRender id to be used for PreRendering the embed.
876
882
  * Use PreRender to render the embed in the background and then
877
883
  * show or hide the rendered embed using showPreRender or hidePreRender respectively.
878
- *
884
+ *
879
885
  * Supported embed types: `AppEmbed`, `LiveboardEmbed`, `SageEmbed`, `SearchEmbed`, `SpotterAgentEmbed`, `SpotterEmbed`, `SearchBarEmbed`
880
886
  * @example
881
887
  * ```js
@@ -913,7 +919,7 @@ export interface BaseViewConfig {
913
919
  /**
914
920
  * Enable the V2 shell. This can provide performance benefits
915
921
  * due to a lighterweight shell.
916
- *
922
+ *
917
923
  * Supported embed types: `AppEmbed`, `LiveboardEmbed`, `SageEmbed`, `SearchEmbed`, `SpotterAgentEmbed`, `SpotterEmbed`, `SearchBarEmbed`
918
924
  * @example
919
925
  * ```js
@@ -941,7 +947,7 @@ export interface BaseViewConfig {
941
947
  /**
942
948
  * This flag can be used to disable links inside the embedded app,
943
949
  * and disable redirection of links in a new tab.
944
- *
950
+ *
945
951
  * Supported embed types: `AppEmbed`, `LiveboardEmbed`, `SageEmbed`, `SearchEmbed`, `SpotterAgentEmbed`, `SpotterEmbed`, `SearchBarEmbed`
946
952
  * @example
947
953
  * ```js
@@ -960,7 +966,7 @@ export interface BaseViewConfig {
960
966
  * objects from another Org.
961
967
  * The `overrideOrgId` setting is honoured only if the
962
968
  * Per Org URL feature is enabled on your ThoughtSpot instance.
963
- *
969
+ *
964
970
  * Supported embed types: `AppEmbed`, `LiveboardEmbed`, `SageEmbed`, `SearchEmbed`, `SpotterAgentEmbed`, `SpotterEmbed`, `SearchBarEmbed`
965
971
  * @example
966
972
  * ```js
@@ -975,7 +981,7 @@ export interface BaseViewConfig {
975
981
  overrideOrgId?: number;
976
982
  /**
977
983
  * Flag to override the *Open Link in New Tab* context menu option.
978
- *
984
+ *
979
985
  * Supported embed types: `AppEmbed`, `LiveboardEmbed`, `SageEmbed`, `SearchEmbed`, `SpotterAgentEmbed`, `SpotterEmbed`, `SearchBarEmbed`
980
986
  * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl
981
987
  * @example
@@ -991,7 +997,7 @@ export interface BaseViewConfig {
991
997
  /**
992
998
  * The primary action to display on top of the viz for Liveboard and App Embed.
993
999
  * Use this to set the primary action.
994
- *
1000
+ *
995
1001
  * Supported embed types: `AppEmbed`, `LiveboardEmbed`
996
1002
  * @version SDK: 1.39.0 | ThoughtSpot: 10.11.0.cl
997
1003
  * @example
@@ -1010,6 +1016,20 @@ export interface BaseViewConfig {
1010
1016
  * @private
1011
1017
  */
1012
1018
  insertInToSlide?: boolean;
1019
+ /**
1020
+ * Show alert messages and toast messages in the embed.
1021
+ * Supported embed in all embed types.
1022
+ *
1023
+ * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw
1024
+ * @example
1025
+ * ```js
1026
+ * const embed = new AppEmbed('#tsEmbed', {
1027
+ * ... // other embed view config
1028
+ * showAlerts:true,
1029
+ * })
1030
+ * ```
1031
+ */
1032
+ showAlerts?: boolean;
1013
1033
  }
1014
1034
 
1015
1035
  /**
@@ -1021,7 +1041,7 @@ export interface HomePageConfig {
1021
1041
  * For example: hiddenListColumns = [ListPageColumns.Author]
1022
1042
  *
1023
1043
  * **Note**: This option is available only in full app embedding.
1024
- *
1044
+ *
1025
1045
  * Supported embed types: `AppEmbed`
1026
1046
  * @version SDK: 1.38.0 | ThoughtSpot: 10.9.0.cl
1027
1047
  * @example
@@ -1040,7 +1060,7 @@ export interface HomePageConfig {
1040
1060
  * **Note**: This option does not apply to the classic homepage.
1041
1061
  * To access the updated modular homepage, set
1042
1062
  * `modularHomeExperience` to `true` (available as Early Access feature in 9.12.5.cl).
1043
- *
1063
+ *
1044
1064
  * Supported embed types: `AppEmbed`
1045
1065
  * @version SDK: 1.28.0 | ThoughtSpot: 9.12.5.cl, 10.1.0.sw
1046
1066
  * @example
@@ -1059,7 +1079,7 @@ export interface HomePageConfig {
1059
1079
  * **Note**: This option does not apply to the classic homepage.
1060
1080
  * To access the updated modular homepage, set
1061
1081
  * `modularHomeExperience` to `true` (available as Early Access feature in 9.12.5.cl).
1062
- *
1082
+ *
1063
1083
  * Supported embed types: `AppEmbed`
1064
1084
  * @version SDK: 1.28.0| ThoughtSpot: 9.12.5.cl, 10.1.0.sw
1065
1085
  * @example
@@ -1075,7 +1095,7 @@ export interface HomePageConfig {
1075
1095
  * homepageLeftNavItems : Show or hide the left navigation bar items.
1076
1096
  * There are 8 eight home navigation list items.
1077
1097
  * To hide these items, specify the string in the array.
1078
- *
1098
+ *
1079
1099
  * Supported embed types: `AppEmbed`
1080
1100
  * @example
1081
1101
  * ```js
@@ -1100,7 +1120,7 @@ export interface SearchLiveboardCommonViewConfig {
1100
1120
  /**
1101
1121
  * The list of runtime filters to apply to a search Answer,
1102
1122
  * visualization, or Liveboard.
1103
- *
1123
+ *
1104
1124
  * Supported embed types: `AppEmbed`, `LiveboardEmbed`, `SearchEmbed`
1105
1125
  * @version SDK: 1.9.4 | ThoughtSpot 8.1.0.cl, 8.4.1.sw
1106
1126
  * @example
@@ -1122,7 +1142,7 @@ export interface SearchLiveboardCommonViewConfig {
1122
1142
  /**
1123
1143
  * The list of parameter override to apply to a search Answer,
1124
1144
  * visualization, or Liveboard.
1125
- *
1145
+ *
1126
1146
  * Supported embed types: `AppEmbed`, `LiveboardEmbed`, `SearchEmbed`
1127
1147
  * @version SDK : 1.25.0 | ThoughtSpot: 9.2.0.cl, 9.5.0.sw
1128
1148
  * @example
@@ -1142,7 +1162,7 @@ export interface SearchLiveboardCommonViewConfig {
1142
1162
  runtimeParameters?: RuntimeParameter[];
1143
1163
  /**
1144
1164
  * flag to set ContextMenu Trigger to either left or right click.
1145
- *
1165
+ *
1146
1166
  * Supported embed types: `AppEmbed`, `SageEmbed`, `SearchEmbed`
1147
1167
  * @example
1148
1168
  * ```js
@@ -1178,7 +1198,7 @@ export interface SearchLiveboardCommonViewConfig {
1178
1198
  excludeRuntimeParametersfromURL?: boolean;
1179
1199
  /**
1180
1200
  * To set the initial state of the search bar in case of saved Answers.
1181
- *
1201
+ *
1182
1202
  * Supported embed types: `SageEmbed`, `AppEmbed`, `SearchBarEmbed`
1183
1203
  * @default true
1184
1204
  * @version SDK: 1.34.0 | ThoughtSpot: 10.3.0.cl
@@ -1193,7 +1213,7 @@ export interface SearchLiveboardCommonViewConfig {
1193
1213
  collapseSearchBar?: boolean;
1194
1214
  /**
1195
1215
  * Flag to control Data panel experience
1196
- *
1216
+ *
1197
1217
  * Supported embed types: `SageEmbed`, `AppEmbed`, `SearchBarEmbed`, `LiveboardEmbed`, `SearchEmbed`
1198
1218
  * @default false
1199
1219
  * @version SDK: 1.34.0 | ThoughtSpot Cloud: 10.3.0.cl
@@ -1209,7 +1229,7 @@ export interface SearchLiveboardCommonViewConfig {
1209
1229
  dataPanelV2?: boolean;
1210
1230
  /**
1211
1231
  * To enable custom column groups in data panel v2
1212
- *
1232
+ *
1213
1233
  * Supported embed types: `SageEmbed`, `SearchBarEmbed`, `LiveboardEmbed`, `SearchEmbed`
1214
1234
  * @version SDK: 1.32.0 | ThoughtSpot: 10.0.0.cl, 10.1.0.sw
1215
1235
  * @default false
@@ -1231,7 +1251,7 @@ export interface SearchLiveboardCommonViewConfig {
1231
1251
  export interface LiveboardAppEmbedViewConfig {
1232
1252
  /**
1233
1253
  * Show or hide Liveboard header
1234
- *
1254
+ *
1235
1255
  * Supported embed types: `AppEmbed`, `LiveboardEmbed`
1236
1256
  * @version SDK: 1.26.0 | Thoughtspot: 9.7.0.cl
1237
1257
  * @default false
@@ -1247,7 +1267,7 @@ export interface LiveboardAppEmbedViewConfig {
1247
1267
  hideLiveboardHeader?: boolean;
1248
1268
  /**
1249
1269
  * Show or hide Liveboard title
1250
- *
1270
+ *
1251
1271
  * Supported embed types: `AppEmbed`, `LiveboardEmbed`
1252
1272
  * @version SDK: 1.26.0 | Thoughtspot: 9.7.0.cl
1253
1273
  * @default false
@@ -1263,7 +1283,7 @@ export interface LiveboardAppEmbedViewConfig {
1263
1283
  showLiveboardTitle?: boolean;
1264
1284
  /**
1265
1285
  * Show or hide Liveboard description
1266
- *
1286
+ *
1267
1287
  * Supported embed types: `AppEmbed`, `LiveboardEmbed`
1268
1288
  * @version SDK: 1.26.0 | Thoughtspot: 9.7.0.cl
1269
1289
  * @default false
@@ -1279,7 +1299,7 @@ export interface LiveboardAppEmbedViewConfig {
1279
1299
  showLiveboardDescription?: boolean;
1280
1300
  /**
1281
1301
  * Boolean to control if Liveboard header is sticky or not.
1282
- *
1302
+ *
1283
1303
  * Supported embed types: `AppEmbed`, `LiveboardEmbed`
1284
1304
  * @example
1285
1305
  * ```js
@@ -1294,7 +1314,7 @@ export interface LiveboardAppEmbedViewConfig {
1294
1314
  isLiveboardHeaderSticky?: boolean;
1295
1315
  /**
1296
1316
  * This attribute can be used to enable the two-column layout on an embedded Liveboard
1297
- *
1317
+ *
1298
1318
  * Supported embed types: `AppEmbed`, `LiveboardEmbed`
1299
1319
  * @type {boolean}
1300
1320
  * @default false
@@ -1311,7 +1331,7 @@ export interface LiveboardAppEmbedViewConfig {
1311
1331
  enable2ColumnLayout?: boolean;
1312
1332
  /**
1313
1333
  * This flag can be used to enable the compact header in Liveboard
1314
- *
1334
+ *
1315
1335
  * Supported embed types: `AppEmbed`, `LiveboardEmbed`
1316
1336
  * @type {boolean}
1317
1337
  * @default false
@@ -1328,7 +1348,7 @@ export interface LiveboardAppEmbedViewConfig {
1328
1348
  isLiveboardCompactHeaderEnabled?: boolean;
1329
1349
  /**
1330
1350
  * This flag can be used to show or hide the Liveboard verified icon in the compact header.
1331
- *
1351
+ *
1332
1352
  * Supported embed types: `AppEmbed`, `LiveboardEmbed`
1333
1353
  * @version SDK: 1.35.0 | ThoughtSpot:10.4.0.cl
1334
1354
  * @default true
@@ -1344,7 +1364,7 @@ export interface LiveboardAppEmbedViewConfig {
1344
1364
  showLiveboardVerifiedBadge?: boolean;
1345
1365
  /**
1346
1366
  * This flag is used to enable/disable hide irrelevant filters in Liveboard tab
1347
- *
1367
+ *
1348
1368
  * Supported embed types: `AppEmbed`, `LiveboardEmbed`
1349
1369
  * @version SDK: 1.36.0 | ThoughtSpot:10.6.0.cl
1350
1370
  * @default false
@@ -1360,7 +1380,7 @@ export interface LiveboardAppEmbedViewConfig {
1360
1380
  hideIrrelevantChipsInLiveboardTabs?: boolean;
1361
1381
  /**
1362
1382
  * This flag can be used to show or hide the re-verify banner on the Liveboard compact header
1363
- *
1383
+ *
1364
1384
  * Supported embed types: `AppEmbed`, `LiveboardEmbed`
1365
1385
  * @version SDK: 1.35.0 | ThoughtSpot:10.4.0.cl
1366
1386
  * @default true
@@ -1376,7 +1396,7 @@ export interface LiveboardAppEmbedViewConfig {
1376
1396
  showLiveboardReverifyBanner?: boolean;
1377
1397
  /**
1378
1398
  * enable or disable ask sage
1379
- *
1399
+ *
1380
1400
  * Supported embed types: `AppEmbed`, `LiveboardEmbed`
1381
1401
  * @version SDK: 1.29.0 | Thoughtspot: 9.12.0.cl
1382
1402
  * @default false
@@ -1390,6 +1410,22 @@ export interface LiveboardAppEmbedViewConfig {
1390
1410
  * ```
1391
1411
  */
1392
1412
  enableAskSage?: boolean;
1413
+ /**
1414
+ * This flag is used to show or hide checkboxes for including or excluding
1415
+ * the cover and filters pages in the Liveboard PDF.
1416
+ *
1417
+ * Supported embed types: `AppEmbed`, `LiveboardEmbed`
1418
+ * @version SDK: 1.40.0 | ThoughtSpot:10.8.0.cl
1419
+ * @example
1420
+ * ```js
1421
+ * // Replace <EmbedComponent> with embed component name. For example, AppEmbed or LiveboardEmbed
1422
+ * const embed = new <EmbedComponent>('#tsEmbed', {
1423
+ * ... // other embed view config
1424
+ * coverAndFilterOptionInPDF: false,
1425
+ * })
1426
+ * ```
1427
+ */
1428
+ coverAndFilterOptionInPDF?: boolean;
1393
1429
  }
1394
1430
 
1395
1431
  export interface AllEmbedViewConfig extends BaseViewConfig, SearchLiveboardCommonViewConfig, HomePageConfig, LiveboardAppEmbedViewConfig {}
@@ -2671,6 +2707,12 @@ export enum EmbedEvent {
2671
2707
  * @version SDK : 1.40.0 | ThoughtSpot: 10.11.0.cl
2672
2708
  */
2673
2709
  ExitPresentMode = 'exitPresentMode',
2710
+ /**
2711
+ * Emitted when a user requests the full height lazy load data.
2712
+ * @version SDK : 1.39.0 | ThoughtSpot : 10.10.0.cl
2713
+ * @hidden
2714
+ */
2715
+ RequestVisibleEmbedCoordinates = 'requestVisibleEmbedCoordinates',
2674
2716
  }
2675
2717
 
2676
2718
  /**
@@ -3595,16 +3637,16 @@ export enum HostEvent {
3595
3637
  /**
3596
3638
  * Get the Answer session for a Search or
3597
3639
  * Liveboard visualization.
3598
- *
3599
- * Note: This event is not typically used directly. Instead, use the
3600
- * `getAnswerService()` method on the embed instance to get an AnswerService
3640
+ *
3641
+ * Note: This event is not typically used directly. Instead, use the
3642
+ * `getAnswerService()` method on the embed instance to get an AnswerService
3601
3643
  * object that provides a more convenient interface for working with answers.
3602
- *
3644
+ *
3603
3645
  * @example
3604
3646
  * ```js
3605
3647
  * // Preferred way to get an AnswerService
3606
3648
  * const service = await embed.getAnswerService();
3607
- *
3649
+ *
3608
3650
  * // Alternative direct usage (not recommended)
3609
3651
  * const {session} = await embed.trigger(
3610
3652
  * HostEvent.GetAnswerSession, {
@@ -3615,7 +3657,7 @@ export enum HostEvent {
3615
3657
  * ```js
3616
3658
  * // Preferred way to get an AnswerService
3617
3659
  * const service = await embed.getAnswerService();
3618
- *
3660
+ *
3619
3661
  * // Alternative direct usage (not recommended)
3620
3662
  * const {session} = await embed.trigger( HostEvent.GetAnswerSession )
3621
3663
  * ```
@@ -3755,6 +3797,19 @@ export enum HostEvent {
3755
3797
  * @version SDK: 1.40.0 | ThoughtSpot: 10.11.0.cl
3756
3798
  */
3757
3799
  ExitPresentMode = 'exitPresentMode',
3800
+ /**
3801
+ * Triggers the full height lazy load data.
3802
+ * @example
3803
+ * ```js
3804
+ * liveboardEmbed.on(EmbedEvent.RequestVisibleEmbedCoordinates, (payload) => {
3805
+ * console.log(payload);
3806
+ * });
3807
+ * ```
3808
+ * @version SDK: 1.39.0 | ThoughtSpot: 10.10.0.cl
3809
+ *
3810
+ * @hidden
3811
+ */
3812
+ VisibleEmbedCoordinates = 'visibleEmbedCoordinates',
3758
3813
  }
3759
3814
 
3760
3815
  /**
@@ -3860,6 +3915,7 @@ export enum Param {
3860
3915
  Query = 'query',
3861
3916
  HideHomepageLeftNav = 'hideHomepageLeftNav',
3862
3917
  ModularHomeExperienceEnabled = 'modularHomeExperience',
3918
+ ListPageVersion = 'listpageVersion',
3863
3919
  PendoTrackingKey = 'additionalPendoKey',
3864
3920
  LiveboardHeaderSticky = 'isLiveboardHeaderSticky',
3865
3921
  IsProductTour = 'isProductTour',
@@ -3894,10 +3950,12 @@ export enum Param {
3894
3950
  DataSourceId = 'dataSourceId',
3895
3951
  preAuthCache = 'preAuthCache',
3896
3952
  ShowSpotterLimitations = 'showSpotterLimitations',
3897
- CoverAndFilterOptionInPDF = 'coverAndFilterOptionInPDF',
3953
+ CoverAndFilterOptionInPDF = 'arePdfCoverFilterPageCheckboxesEnabled',
3898
3954
  PrimaryAction = 'primaryAction',
3899
3955
  isSpotterAgentEmbed = 'isSpotterAgentEmbed',
3900
3956
  IsLiveboardStylingAndGroupingEnabled = 'isLiveboardStylingAndGroupingEnabled',
3957
+ IsLazyLoadingForEmbedEnabled = 'isLazyLoadingForEmbedEnabled',
3958
+ RootMarginForLazyLoad = 'rootMarginForLazyLoad'
3901
3959
  }
3902
3960
 
3903
3961
  /**
@@ -5137,6 +5195,22 @@ export enum Action {
5137
5195
  * @version SDK: 1.37.0 | ThoughtSpot Cloud: 10.8.0.cl
5138
5196
  */
5139
5197
  CoverAndFilterOptionInPDF = 'coverAndFilterOptionInPDF',
5198
+ /**
5199
+ * Action ID for hide or disable the
5200
+ * Spotter in conversation training widget.
5201
+ * The Add to Coaching feature is currently in beta
5202
+ * and is disabled by default on embed deployments.
5203
+ * To enable this feature on your instance,
5204
+ * contact ThoughtSpot Support.
5205
+ * @example
5206
+ * ```js
5207
+ * hiddenAction: [Action.InConversationTraining]
5208
+ * disabledActions: [Action.InConversationTraining]
5209
+ *
5210
+ * ```
5211
+ * @version SDK: 1.39.0 | ThoughtSpot Cloud: 10.10.0.cl
5212
+ */
5213
+ InConversationTraining = 'InConversationTraining',
5140
5214
  }
5141
5215
 
5142
5216
  export interface AnswerServiceType {
@@ -64,6 +64,8 @@ export class Conversation {
64
64
  );
65
65
  const data = responses[0].data;
66
66
  return {
67
+ convId: this.conversationId,
68
+ messageId: responses[0].msgId,
67
69
  data: data.asstRespData.nlsAnsData.sageQuerySuggestions[0],
68
70
  error: null,
69
71
  };