@thoughtspot/visual-embed-sdk 1.43.1 → 1.44.0

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 (70) hide show
  1. package/cjs/package.json +1 -1
  2. package/cjs/src/embed/app.d.ts +15 -0
  3. package/cjs/src/embed/app.d.ts.map +1 -1
  4. package/cjs/src/embed/app.js +4 -1
  5. package/cjs/src/embed/app.js.map +1 -1
  6. package/cjs/src/embed/app.spec.js +20 -0
  7. package/cjs/src/embed/app.spec.js.map +1 -1
  8. package/cjs/src/embed/conversation.d.ts +15 -0
  9. package/cjs/src/embed/conversation.d.ts.map +1 -1
  10. package/cjs/src/embed/conversation.js +4 -1
  11. package/cjs/src/embed/conversation.js.map +1 -1
  12. package/cjs/src/embed/conversation.spec.js +24 -0
  13. package/cjs/src/embed/conversation.spec.js.map +1 -1
  14. package/cjs/src/embed/liveboard.d.ts +15 -0
  15. package/cjs/src/embed/liveboard.d.ts.map +1 -1
  16. package/cjs/src/embed/liveboard.js +4 -1
  17. package/cjs/src/embed/liveboard.js.map +1 -1
  18. package/cjs/src/embed/liveboard.spec.js +22 -0
  19. package/cjs/src/embed/liveboard.spec.js.map +1 -1
  20. package/cjs/src/types.d.ts +2 -1
  21. package/cjs/src/types.d.ts.map +1 -1
  22. package/cjs/src/types.js +1 -0
  23. package/cjs/src/types.js.map +1 -1
  24. package/dist/{index-CpkMygsc.js → index-B2QPwxuL.js} +1 -1
  25. package/dist/src/embed/app.d.ts +15 -0
  26. package/dist/src/embed/app.d.ts.map +1 -1
  27. package/dist/src/embed/conversation.d.ts +15 -0
  28. package/dist/src/embed/conversation.d.ts.map +1 -1
  29. package/dist/src/embed/liveboard.d.ts +15 -0
  30. package/dist/src/embed/liveboard.d.ts.map +1 -1
  31. package/dist/src/types.d.ts +2 -1
  32. package/dist/src/types.d.ts.map +1 -1
  33. package/dist/tsembed-react.es.js +16 -6
  34. package/dist/tsembed-react.js +15 -5
  35. package/dist/tsembed.es.js +16 -6
  36. package/dist/tsembed.js +15 -5
  37. package/dist/visual-embed-sdk-react-full.d.ts +45 -0
  38. package/dist/visual-embed-sdk-react.d.ts +45 -0
  39. package/dist/visual-embed-sdk.d.ts +45 -0
  40. package/lib/package.json +1 -1
  41. package/lib/src/embed/app.d.ts +15 -0
  42. package/lib/src/embed/app.d.ts.map +1 -1
  43. package/lib/src/embed/app.js +5 -2
  44. package/lib/src/embed/app.js.map +1 -1
  45. package/lib/src/embed/app.spec.js +20 -0
  46. package/lib/src/embed/app.spec.js.map +1 -1
  47. package/lib/src/embed/conversation.d.ts +15 -0
  48. package/lib/src/embed/conversation.d.ts.map +1 -1
  49. package/lib/src/embed/conversation.js +4 -1
  50. package/lib/src/embed/conversation.js.map +1 -1
  51. package/lib/src/embed/conversation.spec.js +24 -0
  52. package/lib/src/embed/conversation.spec.js.map +1 -1
  53. package/lib/src/embed/liveboard.d.ts +15 -0
  54. package/lib/src/embed/liveboard.d.ts.map +1 -1
  55. package/lib/src/embed/liveboard.js +4 -1
  56. package/lib/src/embed/liveboard.js.map +1 -1
  57. package/lib/src/embed/liveboard.spec.js +22 -0
  58. package/lib/src/embed/liveboard.spec.js.map +1 -1
  59. package/lib/src/types.d.ts +2 -1
  60. package/lib/src/types.d.ts.map +1 -1
  61. package/lib/src/types.js +1 -0
  62. package/lib/src/types.js.map +1 -1
  63. package/package.json +1 -1
  64. package/src/embed/app.spec.ts +30 -2
  65. package/src/embed/app.ts +43 -22
  66. package/src/embed/conversation.spec.ts +32 -0
  67. package/src/embed/conversation.ts +21 -0
  68. package/src/embed/liveboard.spec.ts +29 -0
  69. package/src/embed/liveboard.ts +19 -0
  70. package/src/types.ts +1 -0
package/src/embed/app.ts CHANGED
@@ -9,7 +9,7 @@
9
9
  */
10
10
 
11
11
  import { logger } from '../utils/logger';
12
- import { calculateVisibleElementData, getQueryParamString } from '../utils';
12
+ import { calculateVisibleElementData, getQueryParamString, isUndefined } from '../utils';
13
13
  import {
14
14
  Param,
15
15
  DOMSelector,
@@ -158,7 +158,7 @@ export interface AppViewConfig extends AllEmbedViewConfig {
158
158
  * If true, the top navigation bar within the ThoughtSpot app
159
159
  * is displayed. By default, the navigation bar is hidden.
160
160
  * This flag also controls the homepage left navigation bar.
161
- *
161
+ *
162
162
  * Supported embed types: `AppEmbed`
163
163
  * @default true
164
164
  * @version SDK: 1.2.0 | ThoughtSpot: 8.4.0.cl
@@ -180,7 +180,7 @@ export interface AppViewConfig extends AllEmbedViewConfig {
180
180
  * **Note**: This option does not apply to the classic homepage.
181
181
  * To access the updated modular homepage, set
182
182
  * `modularHomeExperience` to `true` (available as Early Access feature in 9.12.5.cl).
183
- *
183
+ *
184
184
  * Supported embed types: `AppEmbed`
185
185
  * @default false
186
186
  * @version SDK: 1.28.0 | ThoughtSpot: 9.12.5.cl
@@ -196,7 +196,7 @@ export interface AppViewConfig extends AllEmbedViewConfig {
196
196
  /**
197
197
  * Control the visibility of the help (?) and profile buttons on the
198
198
  * Global nav-bar. By default, these buttons are visible on the nav-bar.
199
- *
199
+ *
200
200
  * Supported embed types: `AppEmbed`
201
201
  * @default false
202
202
  * @version SDK: 1.2.0 | ThoughtSpot: 8.4.0.cl
@@ -214,7 +214,7 @@ export interface AppViewConfig extends AllEmbedViewConfig {
214
214
  * @default true
215
215
  * Whether the help menu in the top nav bar should be served
216
216
  * from Pendo or ThoughtSpot's internal help items.
217
- *
217
+ *
218
218
  * Supported embed types: `AppEmbed`
219
219
  * @example
220
220
  * ```js
@@ -371,7 +371,7 @@ export interface AppViewConfig extends AllEmbedViewConfig {
371
371
  * Hide tag filter chips that appear when content is filtered by tags.
372
372
  * When enabled, this automatically:
373
373
  * - Hides tag filter indicators/chips from the UI
374
- *
374
+ *
375
375
  * This provides a clean interface without tag-related UI elements.
376
376
  *
377
377
  * Supported embed types: `AppEmbed`
@@ -389,7 +389,7 @@ export interface AppViewConfig extends AllEmbedViewConfig {
389
389
  hideTagFilterChips?: boolean;
390
390
  /**
391
391
  * The array of GUIDs to be hidden
392
- *
392
+ *
393
393
  * Supported embed types: `AppEmbed`
394
394
  * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1-sw
395
395
  * @example
@@ -407,7 +407,7 @@ export interface AppViewConfig extends AllEmbedViewConfig {
407
407
  /**
408
408
  * Render liveboards using the new v2 rendering mode
409
409
  * This is a transient flag which is primarily meant for internal use
410
- *
410
+ *
411
411
  * Supported embed types: `AppEmbed`
412
412
  * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1-sw
413
413
  * @hidden
@@ -415,7 +415,7 @@ export interface AppViewConfig extends AllEmbedViewConfig {
415
415
  liveboardV2?: boolean;
416
416
  /**
417
417
  * If set to true, the Search Assist feature is enabled.
418
- *
418
+ *
419
419
  * Supported embed types: `AppEmbed`
420
420
  * @default true
421
421
  * @version SDK: 1.13.0 | ThoughtSpot: 8.5.0.cl, 8.8.1-sw
@@ -453,7 +453,7 @@ export interface AppViewConfig extends AllEmbedViewConfig {
453
453
  fullHeight?: boolean;
454
454
  /**
455
455
  * Flag to control new Modular Home experience.
456
- *
456
+ *
457
457
  * Supported embed types: `AppEmbed`
458
458
  * @default false
459
459
  * @version SDK: 1.28.0 | ThoughtSpot: 9.12.5.cl
@@ -498,10 +498,10 @@ export interface AppViewConfig extends AllEmbedViewConfig {
498
498
  * - EXPAND_ALL: Expand all the accordion initially in data panel v2.
499
499
  * - COLLAPSE_ALL: Collapse all the accordions initially in data panel v2.
500
500
  * - EXPAND_FIRST: Expand the first accordion and collapse the rest.
501
- *
501
+ *
502
502
  * Supported embed types: `AppEmbed`
503
503
  * @version SDK: 1.32.0 | ThoughtSpot: 10.0.0.cl
504
- * @default DataPanelCustomColumnGroupsAccordionState.EXPAND_ALL
504
+ * @default DataPanelCustomColumnGroupsAccordionState.EXPAND_ALL
505
505
  * @example
506
506
  * ```js
507
507
  * const embed = new AppEmbed('#embed', {
@@ -514,14 +514,14 @@ export interface AppViewConfig extends AllEmbedViewConfig {
514
514
  dataPanelCustomGroupsAccordionInitialState?: DataPanelCustomColumnGroupsAccordionState;
515
515
  /**
516
516
  * Flag to use home page search bar mode
517
- *
517
+ *
518
518
  * Supported embed types: `AppEmbed`
519
519
  * @version SDK : 1.33.0 | ThoughtSpot: 10.3.0.cl
520
520
  */
521
521
  homePageSearchBarMode?: HomePageSearchBarMode;
522
522
  /**
523
523
  * This flag is used to enable unified search experience for full app embed.
524
- *
524
+ *
525
525
  * Supported embed types: `AppEmbed`
526
526
  * @version SDK: 1.34.0 | ThoughtSpot:10.5.0.cl
527
527
  * @default true
@@ -537,7 +537,7 @@ export interface AppViewConfig extends AllEmbedViewConfig {
537
537
 
538
538
  /**
539
539
  * This flag is used to enable/disable the styling and grouping in a Liveboard
540
- *
540
+ *
541
541
  * Supported embed types: `AppEmbed`, `LiveboardEmbed`
542
542
  * @type {boolean}
543
543
  * @version SDK: 1.40.0 | ThoughtSpot: 10.11.0.cl
@@ -554,7 +554,7 @@ export interface AppViewConfig extends AllEmbedViewConfig {
554
554
 
555
555
  /**
556
556
  * This flag is used to enable/disable the png embedding of liveboard in scheduled mails
557
- *
557
+ *
558
558
  * Supported embed types: `AppEmbed`, `LiveboardEmbed`
559
559
  * @type {boolean}
560
560
  * @version SDK: 1.42.0 | ThoughtSpot: 10.14.0.cl
@@ -571,7 +571,7 @@ export interface AppViewConfig extends AllEmbedViewConfig {
571
571
 
572
572
  /**
573
573
  * This flag is used to enable the full height lazy load data.
574
- *
574
+ *
575
575
  * @example
576
576
  * ```js
577
577
  * const embed = new AppEmbed('#embed-container', {
@@ -580,7 +580,7 @@ export interface AppViewConfig extends AllEmbedViewConfig {
580
580
  * lazyLoadingForFullHeight: true,
581
581
  * })
582
582
  * ```
583
- *
583
+ *
584
584
  * @type {boolean}
585
585
  * @default false
586
586
  * @version SDK: 1.40.0 | ThoughtSpot:10.12.0.cl
@@ -589,13 +589,13 @@ export interface AppViewConfig extends AllEmbedViewConfig {
589
589
 
590
590
  /**
591
591
  * The margin to be used for lazy loading.
592
- *
592
+ *
593
593
  * For example, if the margin is set to '10px',
594
594
  * the visualization will be loaded 10px before the its top edge is visible in the
595
595
  * viewport.
596
- *
596
+ *
597
597
  * The format is similar to CSS margin.
598
- *
598
+ *
599
599
  * @example
600
600
  * ```js
601
601
  * const embed = new AppEmbed('#embed-container', {
@@ -610,6 +610,22 @@ export interface AppViewConfig extends AllEmbedViewConfig {
610
610
  * @version SDK: 1.40.0 | ThoughtSpot:10.12.0.cl
611
611
  */
612
612
  lazyLoadingMargin?: string;
613
+
614
+ /**
615
+ * updatedSpotterChatPrompt : Controls the updated spotter chat prompt.
616
+ *
617
+ * Supported embed types: `AppEmbed`
618
+ * @default false
619
+ * @example
620
+ * ```js
621
+ * const embed = new AppEmbed('#tsEmbed', {
622
+ * ... //other embed view config
623
+ * updatedSpotterChatPrompt : true,
624
+ * })
625
+ * ```
626
+ * @version SDK: 1.45.0 | ThoughtSpot: 26.2.0.cl
627
+ */
628
+ updatedSpotterChatPrompt?: boolean;
613
629
  }
614
630
 
615
631
  /**
@@ -680,6 +696,7 @@ export class AppEmbed extends V1Embed {
680
696
  isPNGInScheduledEmailsEnabled = false,
681
697
  isCentralizedLiveboardFilterUXEnabled = false,
682
698
  isLinkParametersEnabled,
699
+ updatedSpotterChatPrompt,
683
700
  } = this.viewConfig;
684
701
 
685
702
  let params: any = {};
@@ -702,6 +719,10 @@ export class AppEmbed extends V1Embed {
702
719
 
703
720
  params = this.getBaseQueryParams(params);
704
721
 
722
+ if (!isUndefined(updatedSpotterChatPrompt)) {
723
+ params[Param.UpdatedSpotterChatPrompt] = !!updatedSpotterChatPrompt;
724
+ }
725
+
705
726
  if (hideObjectSearch) {
706
727
  params[Param.HideObjectSearch] = !!hideObjectSearch;
707
728
  }
@@ -763,7 +784,7 @@ export class AppEmbed extends V1Embed {
763
784
  if (isPNGInScheduledEmailsEnabled !== undefined) {
764
785
  params[Param.isPNGInScheduledEmailsEnabled] = isPNGInScheduledEmailsEnabled;
765
786
  }
766
-
787
+
767
788
  if (hideTagFilterChips !== undefined) {
768
789
  params[Param.HideTagFilterChips] = hideTagFilterChips;
769
790
  }
@@ -362,4 +362,36 @@ describe('ConversationEmbed', () => {
362
362
  `http://${thoughtSpotHost}/v2/?${defaultParams}&isSpotterExperienceEnabled=true&param1=Date%20Range&paramVal1=30#/embed/insights/conv-assist?worksheet=worksheetId&query=searchQuery`,
363
363
  );
364
364
  });
365
+
366
+ it('should render the conversation embed with updated spotter chat prompt', async () => {
367
+ const viewConfig: SpotterEmbedViewConfig = {
368
+ worksheetId: 'worksheetId',
369
+ searchOptions: {
370
+ searchQuery: 'searchQuery',
371
+ },
372
+ updatedSpotterChatPrompt: true,
373
+ };
374
+ const conversationEmbed = new SpotterEmbed(getRootEl(), viewConfig);
375
+ await conversationEmbed.render();
376
+ expectUrlMatchesWithParams(
377
+ getIFrameSrc(),
378
+ `http://${thoughtSpotHost}/v2/?${defaultParams}&isSpotterExperienceEnabled=true&updatedSpotterChatPrompt=true#/embed/insights/conv-assist?worksheet=worksheetId&query=searchQuery`,
379
+ );
380
+ });
381
+
382
+ it('should render the conversation embed with updated spotter chat prompt disabled', async () => {
383
+ const viewConfig: SpotterEmbedViewConfig = {
384
+ worksheetId: 'worksheetId',
385
+ searchOptions: {
386
+ searchQuery: 'searchQuery',
387
+ },
388
+ updatedSpotterChatPrompt: false,
389
+ };
390
+ const conversationEmbed = new SpotterEmbed(getRootEl(), viewConfig);
391
+ await conversationEmbed.render();
392
+ expectUrlMatchesWithParams(
393
+ getIFrameSrc(),
394
+ `http://${thoughtSpotHost}/v2/?${defaultParams}&isSpotterExperienceEnabled=true&updatedSpotterChatPrompt=false#/embed/insights/conv-assist?worksheet=worksheetId&query=searchQuery`,
395
+ );
396
+ });
365
397
  });
@@ -180,6 +180,22 @@ export interface SpotterEmbedViewConfig extends Omit<BaseViewConfig, 'primaryAct
180
180
  * @version SDK: 1.45.0 | ThoughtSpot: 26.2.0.cl
181
181
  */
182
182
  enablePastConversationsSidebar?: boolean;
183
+
184
+ /**
185
+ * updatedSpotterChatPrompt : Controls the updated spotter chat prompt.
186
+ *
187
+ * Supported embed types: `SpotterEmbed`
188
+ * @default false
189
+ * @example
190
+ * ```js
191
+ * const embed = new SpotterEmbed('#tsEmbed', {
192
+ * ... //other embed view config
193
+ * updatedSpotterChatPrompt : true,
194
+ * })
195
+ * ```
196
+ * @version SDK: 1.45.0 | ThoughtSpot: 26.2.0.cl
197
+ */
198
+ updatedSpotterChatPrompt?: boolean;
183
199
  }
184
200
 
185
201
  /**
@@ -226,6 +242,7 @@ export class SpotterEmbed extends TsEmbed {
226
242
  excludeRuntimeFiltersfromURL,
227
243
  runtimeParameters,
228
244
  excludeRuntimeParametersfromURL,
245
+ updatedSpotterChatPrompt,
229
246
  } = this.viewConfig;
230
247
 
231
248
  if (!worksheetId) {
@@ -252,6 +269,10 @@ export class SpotterEmbed extends TsEmbed {
252
269
  queryParams[Param.HideSampleQuestions] = !!hideSampleQuestions;
253
270
  }
254
271
 
272
+ if (!isUndefined(updatedSpotterChatPrompt)) {
273
+ queryParams[Param.UpdatedSpotterChatPrompt] = !!updatedSpotterChatPrompt;
274
+ }
275
+
255
276
  return queryParams;
256
277
  }
257
278
 
@@ -852,6 +852,35 @@ describe('Liveboard/viz embed tests', () => {
852
852
  });
853
853
  });
854
854
 
855
+ test('should render the liveboard embed with updatedSpotterChatPrompt', async () => {
856
+ const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
857
+ ...defaultViewConfig,
858
+ liveboardId,
859
+ updatedSpotterChatPrompt: true,
860
+ } as LiveboardViewConfig);
861
+ await liveboardEmbed.render();
862
+ await executeAfterWait(() => {
863
+ expectUrlMatchesWithParams(
864
+ getIFrameSrc(),
865
+ `http://${thoughtSpotHost}/?embedApp=true${defaultParams}${prefixParams}&updatedSpotterChatPrompt=true#/embed/viz/${liveboardId}`,
866
+ );
867
+ });
868
+ });
869
+ test('should render the liveboard embed with updatedSpotterChatPrompt disabled', async () => {
870
+ const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
871
+ ...defaultViewConfig,
872
+ liveboardId,
873
+ updatedSpotterChatPrompt: false,
874
+ } as LiveboardViewConfig);
875
+ await liveboardEmbed.render();
876
+ await executeAfterWait(() => {
877
+ expectUrlMatchesWithParams(
878
+ getIFrameSrc(),
879
+ `http://${thoughtSpotHost}/?embedApp=true${defaultParams}${prefixParams}&updatedSpotterChatPrompt=false#/embed/viz/${liveboardId}`,
880
+ );
881
+ });
882
+ });
883
+
855
884
  test('SetActiveTab Hostevent should not trigger the navigate event with the correct path, for vizEmbed', async () => {
856
885
  const mockProcessTrigger = jest.spyOn(tsEmbed.TsEmbed.prototype, 'trigger');
857
886
  const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
@@ -396,6 +396,21 @@ export interface LiveboardViewConfig extends BaseViewConfig, LiveboardOtherViewC
396
396
  * @version SDK: 1.41.1 | ThoughtSpot: 10.5.0.cl
397
397
  */
398
398
  showSpotterLimitations?: boolean;
399
+ /**
400
+ * updatedSpotterChatPrompt : Controls the updated spotter chat prompt.
401
+ *
402
+ * Supported embed types: `LiveboardEmbed`
403
+ * @default false
404
+ * @example
405
+ * ```js
406
+ * const embed = new LiveboardEmbed('#tsEmbed', {
407
+ * ... //other embed view config
408
+ * updatedSpotterChatPrompt : true,
409
+ * })
410
+ * ```
411
+ * @version SDK: 1.45.0 | ThoughtSpot: 26.2.0.cl
412
+ */
413
+ updatedSpotterChatPrompt?: boolean;
399
414
  }
400
415
 
401
416
  /**
@@ -480,6 +495,7 @@ export class LiveboardEmbed extends V1Embed {
480
495
  showSpotterLimitations,
481
496
  isCentralizedLiveboardFilterUXEnabled = false,
482
497
  isLinkParametersEnabled,
498
+ updatedSpotterChatPrompt,
483
499
  } = this.viewConfig;
484
500
 
485
501
  const preventLiveboardFilterRemoval = this.viewConfig.preventLiveboardFilterRemoval
@@ -501,6 +517,9 @@ export class LiveboardEmbed extends V1Embed {
501
517
  if (preventLiveboardFilterRemoval) {
502
518
  params[Param.preventLiveboardFilterRemoval] = true;
503
519
  }
520
+ if (!isUndefined(updatedSpotterChatPrompt)) {
521
+ params[Param.UpdatedSpotterChatPrompt] = !!updatedSpotterChatPrompt;
522
+ }
504
523
  if (visibleVizs) {
505
524
  params[Param.visibleVizs] = visibleVizs;
506
525
  }
package/src/types.ts CHANGED
@@ -4590,6 +4590,7 @@ export enum Param {
4590
4590
  isCentralizedLiveboardFilterUXEnabled = 'isCentralizedLiveboardFilterUXEnabled',
4591
4591
  isLinkParametersEnabled = 'isLinkParametersEnabled',
4592
4592
  EnablePastConversationsSidebar = 'enablePastConversationsSidebar',
4593
+ UpdatedSpotterChatPrompt = 'updatedSpotterChatPrompt',
4593
4594
  }
4594
4595
 
4595
4596
  /**