@thoughtspot/visual-embed-sdk 1.43.0 → 1.43.1

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 (178) hide show
  1. package/cjs/package.json +1 -1
  2. package/cjs/src/api-intercept.d.ts +51 -0
  3. package/cjs/src/api-intercept.d.ts.map +1 -0
  4. package/cjs/src/api-intercept.js +180 -0
  5. package/cjs/src/api-intercept.js.map +1 -0
  6. package/cjs/src/api-intercept.spec.d.ts +2 -0
  7. package/cjs/src/api-intercept.spec.d.ts.map +1 -0
  8. package/cjs/src/api-intercept.spec.js +672 -0
  9. package/cjs/src/api-intercept.spec.js.map +1 -0
  10. package/cjs/src/css-variables.d.ts +4 -0
  11. package/cjs/src/css-variables.d.ts.map +1 -1
  12. package/cjs/src/embed/app.d.ts +0 -5
  13. package/cjs/src/embed/app.d.ts.map +1 -1
  14. package/cjs/src/embed/app.js +4 -5
  15. package/cjs/src/embed/app.js.map +1 -1
  16. package/cjs/src/embed/app.spec.js +10 -0
  17. package/cjs/src/embed/app.spec.js.map +1 -1
  18. package/cjs/src/embed/conversation.d.ts +2 -2
  19. package/cjs/src/embed/conversation.js +1 -1
  20. package/cjs/src/embed/conversation.js.map +1 -1
  21. package/cjs/src/embed/conversation.spec.js +17 -0
  22. package/cjs/src/embed/conversation.spec.js.map +1 -1
  23. package/cjs/src/embed/hostEventClient/contracts.d.ts +11 -1
  24. package/cjs/src/embed/hostEventClient/contracts.d.ts.map +1 -1
  25. package/cjs/src/embed/hostEventClient/contracts.js +1 -0
  26. package/cjs/src/embed/hostEventClient/contracts.js.map +1 -1
  27. package/cjs/src/embed/liveboard.d.ts.map +1 -1
  28. package/cjs/src/embed/liveboard.js +4 -2
  29. package/cjs/src/embed/liveboard.js.map +1 -1
  30. package/cjs/src/embed/liveboard.spec.js +11 -0
  31. package/cjs/src/embed/liveboard.spec.js.map +1 -1
  32. package/cjs/src/embed/search.d.ts +0 -7
  33. package/cjs/src/embed/search.d.ts.map +1 -1
  34. package/cjs/src/embed/search.js +1 -4
  35. package/cjs/src/embed/search.js.map +1 -1
  36. package/cjs/src/embed/ts-embed.d.ts +10 -0
  37. package/cjs/src/embed/ts-embed.d.ts.map +1 -1
  38. package/cjs/src/embed/ts-embed.js +56 -15
  39. package/cjs/src/embed/ts-embed.js.map +1 -1
  40. package/cjs/src/embed/ts-embed.spec.d.ts.map +1 -1
  41. package/cjs/src/embed/ts-embed.spec.js +412 -238
  42. package/cjs/src/embed/ts-embed.spec.js.map +1 -1
  43. package/cjs/src/index.d.ts +2 -2
  44. package/cjs/src/index.d.ts.map +1 -1
  45. package/cjs/src/index.js +2 -1
  46. package/cjs/src/index.js.map +1 -1
  47. package/cjs/src/react/all-types-export.d.ts +1 -1
  48. package/cjs/src/react/all-types-export.d.ts.map +1 -1
  49. package/cjs/src/react/all-types-export.js +2 -1
  50. package/cjs/src/react/all-types-export.js.map +1 -1
  51. package/cjs/src/types.d.ts +244 -88
  52. package/cjs/src/types.d.ts.map +1 -1
  53. package/cjs/src/types.js +181 -70
  54. package/cjs/src/types.js.map +1 -1
  55. package/cjs/src/utils/logger.d.ts.map +1 -1
  56. package/cjs/src/utils/logger.js +1 -2
  57. package/cjs/src/utils/logger.js.map +1 -1
  58. package/cjs/src/utils/processData.d.ts +1 -1
  59. package/cjs/src/utils/processData.d.ts.map +1 -1
  60. package/cjs/src/utils/processData.js +8 -8
  61. package/cjs/src/utils/processData.js.map +1 -1
  62. package/cjs/src/utils/processData.spec.js.map +1 -1
  63. package/dist/{index-HZ94j9Ey.js → index-CpkMygsc.js} +1 -1
  64. package/dist/src/api-intercept.d.ts +51 -0
  65. package/dist/src/api-intercept.d.ts.map +1 -0
  66. package/dist/src/api-intercept.spec.d.ts +2 -0
  67. package/dist/src/api-intercept.spec.d.ts.map +1 -0
  68. package/dist/src/css-variables.d.ts +4 -0
  69. package/dist/src/css-variables.d.ts.map +1 -1
  70. package/dist/src/embed/app.d.ts +0 -5
  71. package/dist/src/embed/app.d.ts.map +1 -1
  72. package/dist/src/embed/conversation.d.ts +2 -2
  73. package/dist/src/embed/hostEventClient/contracts.d.ts +11 -1
  74. package/dist/src/embed/hostEventClient/contracts.d.ts.map +1 -1
  75. package/dist/src/embed/liveboard.d.ts.map +1 -1
  76. package/dist/src/embed/search.d.ts +0 -7
  77. package/dist/src/embed/search.d.ts.map +1 -1
  78. package/dist/src/embed/ts-embed.d.ts +10 -0
  79. package/dist/src/embed/ts-embed.d.ts.map +1 -1
  80. package/dist/src/embed/ts-embed.spec.d.ts.map +1 -1
  81. package/dist/src/index.d.ts +2 -2
  82. package/dist/src/index.d.ts.map +1 -1
  83. package/dist/src/react/all-types-export.d.ts +1 -1
  84. package/dist/src/react/all-types-export.d.ts.map +1 -1
  85. package/dist/src/types.d.ts +244 -88
  86. package/dist/src/types.d.ts.map +1 -1
  87. package/dist/src/utils/logger.d.ts.map +1 -1
  88. package/dist/src/utils/processData.d.ts +1 -1
  89. package/dist/src/utils/processData.d.ts.map +1 -1
  90. package/dist/tsembed-react.es.js +435 -118
  91. package/dist/tsembed-react.js +434 -117
  92. package/dist/tsembed.es.js +3577 -3260
  93. package/dist/tsembed.js +3575 -3258
  94. package/dist/visual-embed-sdk-react-full.d.ts +271 -103
  95. package/dist/visual-embed-sdk-react.d.ts +268 -103
  96. package/dist/visual-embed-sdk.d.ts +271 -103
  97. package/lib/package.json +1 -1
  98. package/lib/src/api-intercept.d.ts +51 -0
  99. package/lib/src/api-intercept.d.ts.map +1 -0
  100. package/lib/src/api-intercept.js +173 -0
  101. package/lib/src/api-intercept.js.map +1 -0
  102. package/lib/src/api-intercept.spec.d.ts +2 -0
  103. package/lib/src/api-intercept.spec.d.ts.map +1 -0
  104. package/lib/src/api-intercept.spec.js +669 -0
  105. package/lib/src/api-intercept.spec.js.map +1 -0
  106. package/lib/src/css-variables.d.ts +4 -0
  107. package/lib/src/css-variables.d.ts.map +1 -1
  108. package/lib/src/embed/app.d.ts +0 -5
  109. package/lib/src/embed/app.d.ts.map +1 -1
  110. package/lib/src/embed/app.js +4 -5
  111. package/lib/src/embed/app.js.map +1 -1
  112. package/lib/src/embed/app.spec.js +10 -0
  113. package/lib/src/embed/app.spec.js.map +1 -1
  114. package/lib/src/embed/conversation.d.ts +2 -2
  115. package/lib/src/embed/conversation.js +1 -1
  116. package/lib/src/embed/conversation.js.map +1 -1
  117. package/lib/src/embed/conversation.spec.js +17 -0
  118. package/lib/src/embed/conversation.spec.js.map +1 -1
  119. package/lib/src/embed/hostEventClient/contracts.d.ts +11 -1
  120. package/lib/src/embed/hostEventClient/contracts.d.ts.map +1 -1
  121. package/lib/src/embed/hostEventClient/contracts.js +1 -0
  122. package/lib/src/embed/hostEventClient/contracts.js.map +1 -1
  123. package/lib/src/embed/liveboard.d.ts.map +1 -1
  124. package/lib/src/embed/liveboard.js +4 -2
  125. package/lib/src/embed/liveboard.js.map +1 -1
  126. package/lib/src/embed/liveboard.spec.js +11 -0
  127. package/lib/src/embed/liveboard.spec.js.map +1 -1
  128. package/lib/src/embed/search.d.ts +0 -7
  129. package/lib/src/embed/search.d.ts.map +1 -1
  130. package/lib/src/embed/search.js +1 -4
  131. package/lib/src/embed/search.js.map +1 -1
  132. package/lib/src/embed/ts-embed.d.ts +10 -0
  133. package/lib/src/embed/ts-embed.d.ts.map +1 -1
  134. package/lib/src/embed/ts-embed.js +56 -15
  135. package/lib/src/embed/ts-embed.js.map +1 -1
  136. package/lib/src/embed/ts-embed.spec.d.ts.map +1 -1
  137. package/lib/src/embed/ts-embed.spec.js +412 -238
  138. package/lib/src/embed/ts-embed.spec.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/types.d.ts +244 -88
  148. package/lib/src/types.d.ts.map +1 -1
  149. package/lib/src/types.js +180 -69
  150. package/lib/src/types.js.map +1 -1
  151. package/lib/src/utils/logger.d.ts.map +1 -1
  152. package/lib/src/utils/logger.js +1 -2
  153. package/lib/src/utils/logger.js.map +1 -1
  154. package/lib/src/utils/processData.d.ts +1 -1
  155. package/lib/src/utils/processData.d.ts.map +1 -1
  156. package/lib/src/utils/processData.js +8 -8
  157. package/lib/src/utils/processData.js.map +1 -1
  158. package/lib/src/utils/processData.spec.js.map +1 -1
  159. package/package.json +1 -1
  160. package/src/api-intercept.spec.ts +856 -0
  161. package/src/api-intercept.ts +204 -0
  162. package/src/css-variables.ts +5 -0
  163. package/src/embed/app.spec.ts +11 -0
  164. package/src/embed/app.ts +5 -16
  165. package/src/embed/conversation.spec.ts +22 -0
  166. package/src/embed/conversation.ts +3 -3
  167. package/src/embed/hostEventClient/contracts.ts +10 -0
  168. package/src/embed/liveboard.spec.ts +12 -0
  169. package/src/embed/liveboard.ts +6 -2
  170. package/src/embed/search.ts +1 -14
  171. package/src/embed/ts-embed.spec.ts +498 -250
  172. package/src/embed/ts-embed.ts +80 -32
  173. package/src/index.ts +2 -0
  174. package/src/react/all-types-export.ts +1 -0
  175. package/src/types.ts +327 -165
  176. package/src/utils/logger.ts +1 -2
  177. package/src/utils/processData.spec.ts +0 -1
  178. package/src/utils/processData.ts +10 -11
@@ -697,6 +697,10 @@ export interface CustomCssVariables {
697
697
  * Background color of the summary header in the CCA modal.
698
698
  */
699
699
  "--ts-var-cca-modal-summary-header-background"?: string;
700
+ /**
701
+ * Width of the Spotter chat window.
702
+ */
703
+ "--ts-var-spotter-chat-width"?: string;
700
704
  }
701
705
  export interface SessionInterface {
702
706
  sessionId: string;
@@ -1592,7 +1596,7 @@ export interface FrameParams {
1592
1596
  /**
1593
1597
  * The common configuration object for an embedded view.
1594
1598
  */
1595
- export interface BaseViewConfig {
1599
+ export interface BaseViewConfig extends ApiInterceptFlags {
1596
1600
  /**
1597
1601
  * @hidden
1598
1602
  */
@@ -2145,7 +2149,7 @@ export interface SearchLiveboardCommonViewConfig {
2145
2149
  *
2146
2150
  * Supported embed types: `SageEmbed`, `AppEmbed`, `SearchBarEmbed`, `LiveboardEmbed`, `SearchEmbed`
2147
2151
  * @default true
2148
- * @version SDK: 1.43.0 | ThoughtSpot Cloud: 10.14.0.cl
2152
+ * @version SDK: 1.41.1 | ThoughtSpot Cloud: 10.14.0.cl
2149
2153
  * @example
2150
2154
  * ```js
2151
2155
  * // Replace <EmbedComponent> with embed component name. For example, SageEmbed, AppEmbed, or SearchBarEmbed
@@ -2344,26 +2348,27 @@ export interface LiveboardAppEmbedViewConfig {
2344
2348
  */
2345
2349
  enableAskSage?: boolean;
2346
2350
  /**
2347
- * This flag is used to show or hide checkboxes for including or excluding
2348
- * the cover and filters pages in the Liveboard PDF.
2349
- *
2350
- * Supported embed types: `AppEmbed`, `LiveboardEmbed`
2351
- * @version SDK: 1.40.0 | ThoughtSpot:10.8.0.cl
2352
- * @example
2353
- * ```js
2354
- * // Replace <EmbedComponent> with embed component name. For example, AppEmbed or LiveboardEmbed
2355
- * const embed = new <EmbedComponent>('#tsEmbed', {
2356
- * ... // other embed view config
2357
- * coverAndFilterOptionInPDF: false,
2358
- * })
2359
- * ```
2360
- */
2351
+ * This flag is used to show or hide checkboxes for including or excluding
2352
+ * the cover and filters pages in the Liveboard PDF.
2353
+ *
2354
+ * Supported embed types: `AppEmbed`, `LiveboardEmbed`
2355
+ * @version SDK: 1.40.0 | ThoughtSpot:10.8.0.cl
2356
+ * @example
2357
+ * ```js
2358
+ * // Replace <EmbedComponent> with embed component name. For example, AppEmbed or LiveboardEmbed
2359
+ * const embed = new <EmbedComponent>('#tsEmbed', {
2360
+ * ... // other embed view config
2361
+ * coverAndFilterOptionInPDF: false,
2362
+ * })
2363
+ * ```
2364
+ */
2361
2365
  coverAndFilterOptionInPDF?: boolean;
2362
2366
  /**
2363
2367
  * This flag is used to enable or disable the XLSX/CSV download option for Liveboards.
2368
+ * To enable this feature on your instance, contact ThoughtSpot Support.
2364
2369
  *
2365
2370
  * Supported embed types: `AppEmbed`, `LiveboardEmbed`
2366
- * @version SDK: 1.41.0 | ThoughtSpot: 10.14.0.cl
2371
+ * @version SDK: 1.41.0 | ThoughtSpot: 26.3.0.cl
2367
2372
  * @example
2368
2373
  * ```js
2369
2374
  * // Replace <EmbedComponent> with embed component name. For example, AppEmbed or LiveboardEmbed
@@ -3555,21 +3560,24 @@ export declare enum EmbedEvent {
3555
3560
 
3556
3561
  * Prerequisite: Set `isOnBeforeGetVizDataInterceptEnabled` to `true`
3557
3562
  * for this embed event to get emitted.
3558
- * @param: payload
3559
- * @param: responder
3563
+ * @param:payload The payload received from the embed related to the Data API call.
3564
+ * @param:responder
3560
3565
  * Contains elements that lets developers define whether ThoughtSpot
3561
3566
  * should run the search, and if not, what error message
3562
3567
  * should be shown to the user.
3563
3568
  *
3564
- * execute: When execute returns `true`, the search will be run.
3569
+ * `execute` - When execute returns `true`, the search will be run.
3565
3570
  * When execute returns `false`, the search will not be executed.
3566
3571
  *
3567
- * error: Developers can customize the error message text when `execute`
3568
- * returns `false` using the error parameter in responder.
3572
+ * `error` - Developers can customize the error message text when `execute`
3573
+ * is `false` using the `errorText` and `errorDescription` parameters in responder.
3574
+ *
3575
+ * `errorText` - The error message text to be shown to the user.
3576
+ * `errorDescription (ThoughtSpot: 10.15.0.cl and above)` - The error description to be shown to the user.
3569
3577
  * @version SDK : 1.29.0 | ThoughtSpot: 10.3.0.cl
3570
3578
  * @example
3571
3579
  *```js
3572
- * .on(EmbedEvent.OnBeforeGetVizDataIntercept,
3580
+ * embed.on(EmbedEvent.OnBeforeGetVizDataIntercept,
3573
3581
  * (payload, responder) => {
3574
3582
  * responder({
3575
3583
  * data: {
@@ -3585,7 +3593,7 @@ export declare enum EmbedEvent {
3585
3593
  * ```
3586
3594
  *
3587
3595
  *```js
3588
- * .on(EmbedEvent.OnBeforeGetVizDataIntercept,
3596
+ * embed.on(EmbedEvent.OnBeforeGetVizDataIntercept,
3589
3597
  * (payload, responder) => {
3590
3598
  * const query = payload.data.data.answer.search_query
3591
3599
  * responder({
@@ -3596,7 +3604,8 @@ export declare enum EmbedEvent {
3596
3604
  * error: {
3597
3605
  * //Provide a custom error message to explain to your end user
3598
3606
  * // why their search did not run, and which searches are accepted by your custom logic.
3599
- * errorText: "You can't use this query :" + query + ".
3607
+ * errorText: "Error Occurred",
3608
+ * errorDescription: "You can't use this query :" + query + ".
3600
3609
  * The 'sales' measures can never be used at the 'county' level.
3601
3610
  * Please try another measure, or remove 'county' from your search."
3602
3611
  * }
@@ -3660,17 +3669,17 @@ export declare enum EmbedEvent {
3660
3669
  */
3661
3670
  TableVizRendered = "TableVizRendered",
3662
3671
  /**
3663
- * Emitted when the liveboard is created from pin modal or Liveboard list page.
3664
- * You can use this event as a hook to trigger
3665
- * other events on liveboard creation.
3666
- *
3667
- * ```js
3668
- * liveboardEmbed.on(EmbedEvent.CreateLiveboard, (payload) => {
3669
- * console.log('payload', payload);
3670
- * })
3671
- *```
3672
- * @version SDK : 1.37.0 | ThoughtSpot: 10.8.0.cl
3673
- */
3672
+ * Emitted when the liveboard is created from pin modal or Liveboard list page.
3673
+ * You can use this event as a hook to trigger
3674
+ * other events on liveboard creation.
3675
+ *
3676
+ * ```js
3677
+ * liveboardEmbed.on(EmbedEvent.CreateLiveboard, (payload) => {
3678
+ * console.log('payload', payload);
3679
+ * })
3680
+ *```
3681
+ * @version SDK : 1.37.0 | ThoughtSpot: 10.8.0.cl
3682
+ */
3674
3683
  CreateLiveboard = "createLiveboard",
3675
3684
  /**
3676
3685
  * Emitted when a user creates a Model.
@@ -3766,6 +3775,17 @@ export declare enum EmbedEvent {
3766
3775
  * @version SDK: 1.41.0 | ThoughtSpot: 10.12.0.cl
3767
3776
  */
3768
3777
  SpotterInit = "spotterInit",
3778
+ /**
3779
+ * Emitted when a *Spotter* conversation has been successfully created.
3780
+ * @example
3781
+ * ```js
3782
+ * spotterEmbed.on(EmbedEvent.SpotterLoadComplete, (payload) => {
3783
+ * console.log('payload', payload);
3784
+ * })
3785
+ *```
3786
+ * @version SDK: 1.44.0 | ThoughtSpot: 26.2.0.cl
3787
+ */
3788
+ SpotterLoadComplete = "spotterLoadComplete",
3769
3789
  /**
3770
3790
  * @hidden
3771
3791
  * Triggers when the embed listener is ready to receive events.
@@ -3788,7 +3808,73 @@ export declare enum EmbedEvent {
3788
3808
  * ```
3789
3809
  * @version SDK: 1.41.0 | ThoughtSpot: 10.12.0.cl
3790
3810
  */
3791
- OrgSwitched = "orgSwitched"
3811
+ OrgSwitched = "orgSwitched",
3812
+ /**
3813
+ * Emitted when the user intercepts a URL.
3814
+ *
3815
+ * Supported on all embed types.
3816
+ *
3817
+ * @example
3818
+ *
3819
+ * ```js
3820
+ * embed.on(EmbedEvent.ApiIntercept, (payload, responder) => {
3821
+ * console.log('payload', payload);
3822
+ * responder({
3823
+ * data: {
3824
+ * execute: false,
3825
+ * error: {
3826
+ * errorText: 'Error Occurred',
3827
+ * }
3828
+ * }
3829
+ * })
3830
+ * })
3831
+ * ```
3832
+ *
3833
+ * ```js
3834
+ * // We can also send a response for the intercepted api
3835
+ * embed.on(EmbedEvent.ApiIntercept, (payload, responder) => {
3836
+ * console.log('payload', payload);
3837
+ * responder({
3838
+ * data: {
3839
+ * execute: false,
3840
+ * response: {
3841
+ * body: {
3842
+ * data: {
3843
+ * // Some api response
3844
+ * },
3845
+ * }
3846
+ * }
3847
+ * }
3848
+ * })
3849
+ * })
3850
+ *
3851
+ * // here embed will use the response from the responder as the response for the api
3852
+ * ```
3853
+ *
3854
+ * ```js
3855
+ * // We can also send error in response for the intercepted api
3856
+ * embed.on(EmbedEvent.ApiIntercept, (payload, responder) => {
3857
+ * console.log('payload', payload);
3858
+ * responder({
3859
+ * data: {
3860
+ * execute: false,
3861
+ * response: {
3862
+ * body: {
3863
+ * errors: [{
3864
+ * title: 'Error Occurred',
3865
+ * description: 'Error Description',
3866
+ * isUserError: true,
3867
+ * }],
3868
+ * data: {},
3869
+ * },
3870
+ * }
3871
+ * }
3872
+ * })
3873
+ * })
3874
+ * ```
3875
+ * @version SDK: 1.43.0 | ThoughtSpot: 10.15.0.cl
3876
+ */
3877
+ ApiIntercept = "ApiIntercept"
3792
3878
  }
3793
3879
  /**
3794
3880
  * Event types that can be triggered by the host application
@@ -4255,14 +4341,14 @@ export declare enum HostEvent {
4255
4341
  * ```
4256
4342
  * @example
4257
4343
  * ```js
4258
- * // You can use the Data event dispatched on each answer creation to get the vizId and use in MakeACopy host event.
4259
- * let latestSpotterVizId = '';
4260
- * spotterEmbed.on(EmbedEvent.Data, (payload) => {
4261
- * latestSpotterVizId = payload.data.id;
4262
- * });
4263
- *
4264
- * spotterEmbed.trigger(HostEvent.MakeACopy, { vizId: latestSpotterVizId });
4265
- * ```
4344
+ * // You can use the Data event dispatched on each answer creation to get the vizId and use in MakeACopy host event.
4345
+ * let latestSpotterVizId = '';
4346
+ * spotterEmbed.on(EmbedEvent.Data, (payload) => {
4347
+ * latestSpotterVizId = payload.data.id;
4348
+ * });
4349
+ *
4350
+ * spotterEmbed.trigger(HostEvent.MakeACopy, { vizId: latestSpotterVizId });
4351
+ * ```
4266
4352
  * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw
4267
4353
  */
4268
4354
  MakeACopy = "makeACopy",
@@ -4486,14 +4572,14 @@ export declare enum HostEvent {
4486
4572
  * embed.trigger(HostEvent.Download)
4487
4573
  * ```
4488
4574
  * ```js
4489
- * // You can use the Data event dispatched on each answer creation to get the vizId and use in Download host event.
4490
- * let latestSpotterVizId = '';
4491
- * spotterEmbed.on(EmbedEvent.Data, (payload) => {
4492
- * latestSpotterVizId = payload.data.id;
4493
- * });
4494
- *
4495
- * spotterEmbed.trigger(HostEvent.Download, { vizId: latestSpotterVizId });
4496
- * ```
4575
+ * // You can use the Data event dispatched on each answer creation to get the vizId and use in Download host event.
4576
+ * let latestSpotterVizId = '';
4577
+ * spotterEmbed.on(EmbedEvent.Data, (payload) => {
4578
+ * latestSpotterVizId = payload.data.id;
4579
+ * });
4580
+ *
4581
+ * spotterEmbed.trigger(HostEvent.Download, { vizId: latestSpotterVizId });
4582
+ * ```
4497
4583
  * @deprecated from SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl ,9.4.1.sw
4498
4584
  * Use {@link DownloadAsPng}
4499
4585
  * @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw
@@ -4511,13 +4597,13 @@ export declare enum HostEvent {
4511
4597
  *
4512
4598
  * searchEmbed.trigger(HostEvent.DownloadAsPng)
4513
4599
  *
4514
- * // You can use the Data event dispatched on each answer creation to get the vizId and use in DownloadAsPng host event.
4515
- * let latestSpotterVizId = '';
4516
- * spotterEmbed.on(EmbedEvent.Data, (payload) => {
4517
- * latestSpotterVizId = payload.data.id;
4518
- * });
4519
- *
4520
- * spotterEmbed.trigger(HostEvent.DownloadAsPng, { vizId: latestSpotterVizId });
4600
+ * // You can use the Data event dispatched on each answer creation to get the vizId and use in DownloadAsPng host event.
4601
+ * let latestSpotterVizId = '';
4602
+ * spotterEmbed.on(EmbedEvent.Data, (payload) => {
4603
+ * latestSpotterVizId = payload.data.id;
4604
+ * });
4605
+ *
4606
+ * spotterEmbed.trigger(HostEvent.DownloadAsPng, { vizId: latestSpotterVizId });
4521
4607
  * ```
4522
4608
  *
4523
4609
  * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.4.1.sw
@@ -4539,13 +4625,13 @@ export declare enum HostEvent {
4539
4625
  * searchEmbed.trigger(HostEvent.DownloadAsCsv)
4540
4626
  * ```
4541
4627
  * ```js
4542
- * // You can use the Data event dispatched on each answer creation to get the vizId and use in DownloadAsCsv host event.
4543
- * let latestSpotterVizId = '';
4544
- * spotterEmbed.on(EmbedEvent.Data, (payload) => {
4545
- * latestSpotterVizId = payload.data.id;
4546
- * });
4547
- *
4548
- * spotterEmbed.trigger(HostEvent.DownloadAsCsv, { vizId: latestSpotterVizId });
4628
+ * // You can use the Data event dispatched on each answer creation to get the vizId and use in DownloadAsCsv host event.
4629
+ * let latestSpotterVizId = '';
4630
+ * spotterEmbed.on(EmbedEvent.Data, (payload) => {
4631
+ * latestSpotterVizId = payload.data.id;
4632
+ * });
4633
+ *
4634
+ * spotterEmbed.trigger(HostEvent.DownloadAsCsv, { vizId: latestSpotterVizId });
4549
4635
  * ```
4550
4636
  * @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw
4551
4637
  */
@@ -4566,13 +4652,13 @@ export declare enum HostEvent {
4566
4652
  * searchEmbed.trigger(HostEvent.DownloadAsXlsx)
4567
4653
  * ```
4568
4654
  * ```js
4569
- * // You can use the Data event dispatched on each answer creation to get the vizId and use in DownloadAsXlsx host event.
4570
- * let latestSpotterVizId = '';
4571
- * spotterEmbed.on(EmbedEvent.Data, (payload) => {
4572
- * latestSpotterVizId = payload.data.id;
4573
- * });
4574
- *
4575
- * spotterEmbed.trigger(HostEvent.DownloadAsXlsx, { vizId: latestSpotterVizId });
4655
+ * // You can use the Data event dispatched on each answer creation to get the vizId and use in DownloadAsXlsx host event.
4656
+ * let latestSpotterVizId = '';
4657
+ * spotterEmbed.on(EmbedEvent.Data, (payload) => {
4658
+ * latestSpotterVizId = payload.data.id;
4659
+ * });
4660
+ *
4661
+ * spotterEmbed.trigger(HostEvent.DownloadAsXlsx, { vizId: latestSpotterVizId });
4576
4662
  * ```
4577
4663
  * @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw
4578
4664
  */
@@ -4937,13 +5023,13 @@ export declare enum HostEvent {
4937
5023
  * });
4938
5024
  *```
4939
5025
  *```js
4940
- * // You can use the Data event dispatched on each answer creation to get the vizId and use in GetParameters host event.
4941
- * let latestSpotterVizId = '';
4942
- * spotterEmbed.on(EmbedEvent.Data, (payload) => {
4943
- * latestSpotterVizId = payload.data.id;
4944
- * });
4945
- *
4946
- * spotterEmbed.trigger(HostEvent.GetParameters, { vizId: latestSpotterVizId });
5026
+ * // You can use the Data event dispatched on each answer creation to get the vizId and use in GetParameters host event.
5027
+ * let latestSpotterVizId = '';
5028
+ * spotterEmbed.on(EmbedEvent.Data, (payload) => {
5029
+ * latestSpotterVizId = payload.data.id;
5030
+ * });
5031
+ *
5032
+ * spotterEmbed.trigger(HostEvent.GetParameters, { vizId: latestSpotterVizId });
4947
5033
  *```
4948
5034
  * @version SDK: 1.29.0 | ThoughtSpot: 10.1.0.cl, 10.1.0.sw
4949
5035
  */
@@ -4992,8 +5078,8 @@ export declare enum HostEvent {
4992
5078
  * spotterEmbed.on(EmbedEvent.Data, (payload) => {
4993
5079
  * latestSpotterVizId = payload.data.id;
4994
5080
  * });
4995
- *
4996
- * spotterEmbed.trigger(HostEvent.SaveAnswer, { vizId: latestSpotterVizId });
5081
+ *
5082
+ * spotterEmbed.trigger(HostEvent.SaveAnswer, { vizId: latestSpotterVizId });
4997
5083
  * ```
4998
5084
  * @version SDK: 1.36.0 | ThoughtSpot: 10.6.0.cl
4999
5085
  */
@@ -5084,8 +5170,8 @@ export declare enum HostEvent {
5084
5170
  * spotterEmbed.on(EmbedEvent.Data, (payload) => {
5085
5171
  * latestSpotterVizId = payload.data.id;
5086
5172
  * });
5087
- *
5088
- * spotterEmbed.trigger(HostEvent.AnswerChartSwitcher, { vizId: latestSpotterVizId });
5173
+ *
5174
+ * spotterEmbed.trigger(HostEvent.AnswerChartSwitcher, { vizId: latestSpotterVizId });
5089
5175
  *```
5090
5176
  * @version SDK: 1.40.0 | ThoughtSpot: 10.11.0.cl
5091
5177
  */
@@ -5122,8 +5208,8 @@ export declare enum HostEvent {
5122
5208
  * spotterEmbed.on(EmbedEvent.Data, (payload) => {
5123
5209
  * latestSpotterVizId = payload.data.id;
5124
5210
  * });
5125
- *
5126
- * spotterEmbed.trigger(HostEvent.AskSpotter, { vizId: latestSpotterVizId });
5211
+ *
5212
+ * spotterEmbed.trigger(HostEvent.AskSpotter, { vizId: latestSpotterVizId });
5127
5213
  * ```
5128
5214
  * @version SDK: 1.41.0 | ThoughtSpot: 10.12.0.cl
5129
5215
  */
@@ -5146,7 +5232,19 @@ export declare enum HostEvent {
5146
5232
  * ```
5147
5233
  * @version SDK: 1.41.0 | ThoughtSpot: 10.12.0.cl
5148
5234
  */
5149
- DestroyEmbed = "EmbedDestroyed"
5235
+ DestroyEmbed = "EmbedDestroyed",
5236
+ /** Triggers a create new conversation operation in spotter embed.
5237
+ * @example
5238
+ * ```js
5239
+ * This feature is available only when chat history is enabled on your ThoughtSpot instance.
5240
+ * Contact your admin or ThoughtSpot Support to enable chat history on your instance.
5241
+ * @example
5242
+ * ```js
5243
+ * spotterEmbed.trigger(HostEvent.StartNewSpotterConversation);
5244
+ * ```
5245
+ * @version SDK: 1.45.0 | ThoughtSpot: 26.2.0.cl
5246
+ */
5247
+ StartNewSpotterConversation = "StartNewSpotterConversation"
5150
5248
  }
5151
5249
  /**
5152
5250
  * The different visual modes that the data sources panel within
@@ -6665,14 +6763,77 @@ export interface DefaultAppInitData {
6665
6763
  customVariablesForThirdPartyTools: Record<string, any>;
6666
6764
  hiddenListColumns: ListPageColumns[];
6667
6765
  customActions: CustomAction[];
6766
+ interceptTimeout: number | undefined;
6767
+ interceptUrls: (string | InterceptedApiType)[];
6768
+ }
6769
+ /**
6770
+ * Enum for the type of API intercepted
6771
+ */
6772
+ export declare enum InterceptedApiType {
6773
+ /**
6774
+ * The apis that are use to get the data for the embed
6775
+ */
6776
+ AnswerData = "AnswerData",
6777
+ /**
6778
+ * This will intercept all the apis
6779
+ */
6780
+ ALL = "ALL",
6781
+ /**
6782
+ * The apis that are use to get the data for the liveboard
6783
+ */
6784
+ LiveboardData = "LiveboardData"
6668
6785
  }
6786
+ export type ApiInterceptFlags = {
6787
+ /**
6788
+ * Flag that allows using `EmbedEvent.OnBeforeGetVizDataIntercept`.
6789
+ *
6790
+ * Can be used for Serach and App Embed from SDK 1.29.0
6791
+ *
6792
+ * @version SDK : 1.43.0 | ThoughtSpot: 10.15.0.cl
6793
+ */
6794
+ isOnBeforeGetVizDataInterceptEnabled?: boolean;
6795
+ /**
6796
+ * This allows to intercept the urls passed, once intercepted the api will only
6797
+ * run based on the reponse from the responder of ApiIntercept event.
6798
+ *
6799
+ * @example
6800
+ * ```js
6801
+ * const embed = new LiveboardEmbed('#embed', {
6802
+ * ...viewConfig,
6803
+ * enableApiIntercept: true,
6804
+ * interceptUrls: [InterceptedApiType.DATA],
6805
+ * })
6806
+ * ```
6807
+ *
6808
+ * @version SDK : 1.43.0 | ThoughtSpot: 10.15.0.cl
6809
+ */
6810
+ interceptUrls?: (string | InterceptedApiType)[];
6811
+ /**
6812
+ * The timeout for the intercept, default is 30000ms
6813
+ * the api will error out if the timeout is reached
6814
+ *
6815
+ * @example
6816
+ * ```js
6817
+ * const embed = new LiveboardEmbed('#embed', {
6818
+ * ...viewConfig,
6819
+ * enableApiIntercept: true,
6820
+ * interceptUrls: [InterceptedApiType.ALL],
6821
+ * interceptTimeout: 1000,
6822
+ * })
6823
+ * ```
6824
+ *
6825
+ * @version SDK : 1.43.0 | ThoughtSpot: 10.15.0.cl
6826
+ */
6827
+ interceptTimeout?: number;
6828
+ };
6669
6829
  export declare enum UIPassthroughEvent {
6670
6830
  PinAnswerToLiveboard = "addVizToPinboard",
6671
6831
  SaveAnswer = "saveAnswer",
6672
6832
  GetDiscoverabilityStatus = "getDiscoverabilityStatus",
6673
6833
  GetAvailableUIPassthroughs = "getAvailableUiPassthroughs",
6674
6834
  GetAnswerConfig = "getAnswerPageConfig",
6675
- GetLiveboardConfig = "getPinboardPageConfig"
6835
+ GetLiveboardConfig = "getPinboardPageConfig",
6836
+ GetUnsavedAnswerTML = "getUnsavedAnswerTML"
6676
6837
  }
6677
6838
  export type UIPassthroughContractBase = {
6678
6839
  [UIPassthroughEvent.PinAnswerToLiveboard]: {
@@ -6727,6 +6888,15 @@ export type UIPassthroughContractBase = {
6727
6888
  request: any;
6728
6889
  response: any;
6729
6890
  };
6891
+ [UIPassthroughEvent.GetUnsavedAnswerTML]: {
6892
+ request: {
6893
+ sessionId?: string;
6894
+ vizId?: string;
6895
+ };
6896
+ response: {
6897
+ tml: string;
6898
+ };
6899
+ };
6730
6900
  };
6731
6901
  export type UIPassthroughRequest<T extends keyof UIPassthroughContractBase> = UIPassthroughContractBase[T]["request"];
6732
6902
  export type UIPassthroughResponse<T extends keyof UIPassthroughContractBase> = UIPassthroughContractBase[T]["response"];
@@ -6882,6 +7052,8 @@ declare class TsEmbed {
6882
7052
  * work regardless of auth status
6883
7053
  */
6884
7054
  private subscribeToNetworkEvents;
7055
+ private handleApiInterceptEvent;
7056
+ private messageEventListener;
6885
7057
  /**
6886
7058
  * Subscribe to message events that depend on successful iframe setup
6887
7059
  */
@@ -6968,6 +7140,14 @@ declare class TsEmbed {
6968
7140
  * @param height The height in pixels
6969
7141
  */
6970
7142
  protected setIFrameHeight(height: number | string): void;
7143
+ /**
7144
+ * We can process the customer given payload before sending it to the embed port
7145
+ * Embed event handler -> responder -> createEmbedEventResponder -> send response
7146
+ * @param eventPort The event port for a specific MessageChannel
7147
+ * @param eventType The event type
7148
+ * @returns
7149
+ */
7150
+ protected createEmbedEventResponder: (eventPort: MessagePort | void, eventType: EmbedEvent) => (payload: any) => void;
6971
7151
  /**
6972
7152
  * Executes all registered event handlers for a particular event type
6973
7153
  * @param eventType The event type
@@ -7688,11 +7868,6 @@ export interface AppViewConfig extends AllEmbedViewConfig {
7688
7868
  * ```
7689
7869
  */
7690
7870
  dataPanelCustomGroupsAccordionInitialState?: DataPanelCustomColumnGroupsAccordionState;
7691
- /**
7692
- * Flag that allows using `EmbedEvent.OnBeforeGetVizDataIntercept`.
7693
- * @version SDK : 1.29.0 | ThoughtSpot: 10.1.0.cl
7694
- */
7695
- isOnBeforeGetVizDataInterceptEnabled?: boolean;
7696
7871
  /**
7697
7872
  * Flag to use home page search bar mode
7698
7873
  *
@@ -8781,13 +8956,6 @@ export interface SearchViewConfig extends SearchLiveboardCommonViewConfig, Omit<
8781
8956
  * @deprecated Use {@link collapseSearchBar} instead
8782
8957
  */
8783
8958
  collapseSearchBarInitially?: boolean;
8784
- /**
8785
- * Flag to enable onBeforeSearchExecute Embed Event
8786
- *
8787
- * Supported embed types: `SearchEmbed`
8788
- * @version: SDK: 1.29.0 | ThoughtSpot: 10.1.0.cl
8789
- */
8790
- isOnBeforeGetVizDataInterceptEnabled?: boolean;
8791
8959
  /**
8792
8960
  * This controls the initial behaviour of custom column groups accordion.
8793
8961
  * It takes DataPanelCustomColumnGroupsAccordionState enum values as input.
@@ -9149,7 +9317,7 @@ export interface SpotterEmbedViewConfig extends Omit<BaseViewConfig, "primaryAct
9149
9317
  *
9150
9318
  * Supported embed types: `SageEmbed`, `AppEmbed`, `SearchBarEmbed`, `LiveboardEmbed`, `SearchEmbed`
9151
9319
  * @default true
9152
- * @version SDK: 1.43.0 | ThoughtSpot Cloud: 10.14.0.cl
9320
+ * @version SDK: 1.41.1 | ThoughtSpot Cloud: 10.14.0.cl
9153
9321
  * @example
9154
9322
  * ```js
9155
9323
  * // Replace <EmbedComponent> with embed component name. For example, SageEmbed, AppEmbed, or SearchBarEmbed
@@ -9264,7 +9432,7 @@ export interface SpotterEmbedViewConfig extends Omit<BaseViewConfig, "primaryAct
9264
9432
  * enablePastConversationsSidebar : true,
9265
9433
  * })
9266
9434
  * ```
9267
- * @version SDK: 1.43.0 | ThoughtSpot: 10.14.0.cl
9435
+ * @version SDK: 1.45.0 | ThoughtSpot: 26.2.0.cl
9268
9436
  */
9269
9437
  enablePastConversationsSidebar?: boolean;
9270
9438
  }
package/lib/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thoughtspot/visual-embed-sdk",
3
- "version": "1.43.0",
3
+ "version": "1.43.1",
4
4
  "description": "ThoughtSpot Embed SDK",
5
5
  "module": "lib/src/index.js",
6
6
  "main": "dist/tsembed.js",
@@ -0,0 +1,51 @@
1
+ import { BaseViewConfig, ApiInterceptFlags, EmbedEvent } from "./types";
2
+ /**
3
+ * Returns the data to be sent to embed to setup intercepts
4
+ * the urls to intercept, timeout etc
5
+ * @param viewConfig
6
+ * @returns
7
+ */
8
+ export declare const getInterceptInitData: (viewConfig: BaseViewConfig) => Required<Omit<ApiInterceptFlags, 'isOnBeforeGetVizDataInterceptEnabled'>>;
9
+ /**
10
+ * Handle Api intercept event and simulate legacy onBeforeGetVizDataIntercept event
11
+ *
12
+ * embed sends -> ApiIntercept -> we send
13
+ * ApiIntercept
14
+ * OnBeforeGetVizDataIntercept (if url is part of DefaultUrlMap.AnswerData)
15
+ *
16
+ * @param params
17
+ * @returns
18
+ */
19
+ export declare const handleInterceptEvent: (params: {
20
+ eventData: any;
21
+ executeEvent: (eventType: EmbedEvent, data: any) => void;
22
+ viewConfig: BaseViewConfig;
23
+ getUnsavedAnswerTml: (props: {
24
+ sessionId?: string;
25
+ vizId?: string;
26
+ }) => Promise<{
27
+ tml: string;
28
+ }>;
29
+ }) => Promise<void>;
30
+ /**
31
+ * Support both the legacy and new format of the api intercept response
32
+ * @param payload
33
+ * @returns
34
+ */
35
+ export declare const processApiInterceptResponse: (payload: any) => any;
36
+ export declare const processLegacyInterceptResponse: (payload: any) => {
37
+ data: {
38
+ execute: any;
39
+ response: {
40
+ body: {
41
+ errors: {
42
+ title: any;
43
+ description: any;
44
+ isUserError: boolean;
45
+ }[];
46
+ data: {};
47
+ };
48
+ };
49
+ };
50
+ };
51
+ //# sourceMappingURL=api-intercept.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-intercept.d.ts","sourceRoot":"","sources":["../../src/api-intercept.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,cAAc,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAwC5F;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,eAAgB,cAAc,KAAG,SAAS,KAAK,iBAAiB,EAAE,sCAAsC,CAAC,CAgBzI,CAAA;AA6CD;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB;eAClB,GAAG;8BACY,UAAU,QAAQ,GAAG,KAAK,IAAI;gBAC5C,cAAc;iCACG;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,QAAQ;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;mBAwCnG,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,YAAa,GAAG,QAQvD,CAAA;AAED,eAAO,MAAM,8BAA8B,YAAa,GAAG;;;;;;;;;;;;;;CAuB1D,CAAA"}