@thoughtspot/visual-embed-sdk 1.41.0 → 1.42.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 (217) hide show
  1. package/README.md +2 -4
  2. package/cjs/package.json +8 -8
  3. package/cjs/src/authToken.d.ts +1 -0
  4. package/cjs/src/authToken.d.ts.map +1 -1
  5. package/cjs/src/authToken.js +13 -3
  6. package/cjs/src/authToken.js.map +1 -1
  7. package/cjs/src/authToken.spec.js +29 -0
  8. package/cjs/src/authToken.spec.js.map +1 -1
  9. package/cjs/src/css-variables.d.ts +54 -15
  10. package/cjs/src/css-variables.d.ts.map +1 -1
  11. package/cjs/src/embed/app.d.ts +16 -0
  12. package/cjs/src/embed/app.d.ts.map +1 -1
  13. package/cjs/src/embed/app.js +4 -1
  14. package/cjs/src/embed/app.js.map +1 -1
  15. package/cjs/src/embed/app.spec.js +10 -0
  16. package/cjs/src/embed/app.spec.js.map +1 -1
  17. package/cjs/src/embed/bodyless-conversation.d.ts +1 -0
  18. package/cjs/src/embed/bodyless-conversation.d.ts.map +1 -1
  19. package/cjs/src/embed/bodyless-conversation.js +7 -3
  20. package/cjs/src/embed/bodyless-conversation.js.map +1 -1
  21. package/cjs/src/embed/conversation.d.ts +3 -2
  22. package/cjs/src/embed/conversation.d.ts.map +1 -1
  23. package/cjs/src/embed/conversation.js +7 -2
  24. package/cjs/src/embed/conversation.js.map +1 -1
  25. package/cjs/src/embed/liveboard.d.ts +33 -0
  26. package/cjs/src/embed/liveboard.d.ts.map +1 -1
  27. package/cjs/src/embed/liveboard.js +13 -2
  28. package/cjs/src/embed/liveboard.js.map +1 -1
  29. package/cjs/src/embed/liveboard.spec.js +98 -11
  30. package/cjs/src/embed/liveboard.spec.js.map +1 -1
  31. package/cjs/src/embed/sage.d.ts +1 -0
  32. package/cjs/src/embed/sage.d.ts.map +1 -1
  33. package/cjs/src/embed/sage.js +10 -6
  34. package/cjs/src/embed/sage.js.map +1 -1
  35. package/cjs/src/embed/sage.spec.js +20 -10
  36. package/cjs/src/embed/sage.spec.js.map +1 -1
  37. package/cjs/src/embed/search-bar.d.ts +1 -0
  38. package/cjs/src/embed/search-bar.d.ts.map +1 -1
  39. package/cjs/src/embed/search-bar.js +11 -7
  40. package/cjs/src/embed/search-bar.js.map +1 -1
  41. package/cjs/src/embed/search.d.ts +1 -0
  42. package/cjs/src/embed/search.d.ts.map +1 -1
  43. package/cjs/src/embed/search.js +7 -8
  44. package/cjs/src/embed/search.js.map +1 -1
  45. package/cjs/src/embed/search.spec.js +10 -10
  46. package/cjs/src/embed/search.spec.js.map +1 -1
  47. package/cjs/src/embed/ts-embed.d.ts +7 -5
  48. package/cjs/src/embed/ts-embed.d.ts.map +1 -1
  49. package/cjs/src/embed/ts-embed.js +26 -9
  50. package/cjs/src/embed/ts-embed.js.map +1 -1
  51. package/cjs/src/embed/ts-embed.spec.js.map +1 -1
  52. package/cjs/src/errors.d.ts +1 -0
  53. package/cjs/src/errors.d.ts.map +1 -1
  54. package/cjs/src/errors.js +1 -0
  55. package/cjs/src/errors.js.map +1 -1
  56. package/cjs/src/react/all-types-export.spec.js +1 -1
  57. package/cjs/src/react/all-types-export.spec.js.map +1 -1
  58. package/cjs/src/react/index.d.ts.map +1 -1
  59. package/cjs/src/react/index.js +2 -1
  60. package/cjs/src/react/index.js.map +1 -1
  61. package/cjs/src/react/index.spec.js +1 -1
  62. package/cjs/src/react/index.spec.js.map +1 -1
  63. package/cjs/src/react/util.js.map +1 -1
  64. package/cjs/src/react/util.spec.d.ts +2 -0
  65. package/cjs/src/react/util.spec.d.ts.map +1 -0
  66. package/cjs/src/react/util.spec.js +78 -0
  67. package/cjs/src/react/util.spec.js.map +1 -0
  68. package/cjs/src/types.d.ts +64 -9
  69. package/cjs/src/types.d.ts.map +1 -1
  70. package/cjs/src/types.js +59 -4
  71. package/cjs/src/types.js.map +1 -1
  72. package/cjs/src/utils.d.ts +14 -0
  73. package/cjs/src/utils.d.ts.map +1 -1
  74. package/cjs/src/utils.js +22 -1
  75. package/cjs/src/utils.js.map +1 -1
  76. package/cjs/src/utils.spec.js +10 -0
  77. package/cjs/src/utils.spec.js.map +1 -1
  78. package/dist/{index-B_mxAan8.js → index-BpSohedu.js} +1 -1
  79. package/dist/src/authToken.d.ts +1 -0
  80. package/dist/src/authToken.d.ts.map +1 -1
  81. package/dist/src/css-variables.d.ts +54 -15
  82. package/dist/src/css-variables.d.ts.map +1 -1
  83. package/dist/src/embed/app.d.ts +16 -0
  84. package/dist/src/embed/app.d.ts.map +1 -1
  85. package/dist/src/embed/bodyless-conversation.d.ts +1 -0
  86. package/dist/src/embed/bodyless-conversation.d.ts.map +1 -1
  87. package/dist/src/embed/conversation.d.ts +3 -2
  88. package/dist/src/embed/conversation.d.ts.map +1 -1
  89. package/dist/src/embed/liveboard.d.ts +33 -0
  90. package/dist/src/embed/liveboard.d.ts.map +1 -1
  91. package/dist/src/embed/sage.d.ts +1 -0
  92. package/dist/src/embed/sage.d.ts.map +1 -1
  93. package/dist/src/embed/search-bar.d.ts +1 -0
  94. package/dist/src/embed/search-bar.d.ts.map +1 -1
  95. package/dist/src/embed/search.d.ts +1 -0
  96. package/dist/src/embed/search.d.ts.map +1 -1
  97. package/dist/src/embed/ts-embed.d.ts +7 -5
  98. package/dist/src/embed/ts-embed.d.ts.map +1 -1
  99. package/dist/src/errors.d.ts +1 -0
  100. package/dist/src/errors.d.ts.map +1 -1
  101. package/dist/src/react/index.d.ts.map +1 -1
  102. package/dist/src/react/util.spec.d.ts +2 -0
  103. package/dist/src/react/util.spec.d.ts.map +1 -0
  104. package/dist/src/types.d.ts +64 -9
  105. package/dist/src/types.d.ts.map +1 -1
  106. package/dist/src/utils.d.ts +14 -0
  107. package/dist/src/utils.d.ts.map +1 -1
  108. package/dist/tsembed-react.es.js +180 -47
  109. package/dist/tsembed-react.js +179 -46
  110. package/dist/tsembed.es.js +178 -46
  111. package/dist/tsembed.js +177 -45
  112. package/dist/visual-embed-sdk-react-full.d.ts +9312 -9842
  113. package/dist/visual-embed-sdk-react.d.ts +9184 -9848
  114. package/dist/visual-embed-sdk.d.ts +9351 -9459
  115. package/lib/package.json +8 -8
  116. package/lib/src/authToken.d.ts +1 -0
  117. package/lib/src/authToken.d.ts.map +1 -1
  118. package/lib/src/authToken.js +11 -2
  119. package/lib/src/authToken.js.map +1 -1
  120. package/lib/src/authToken.spec.js +30 -1
  121. package/lib/src/authToken.spec.js.map +1 -1
  122. package/lib/src/css-variables.d.ts +54 -15
  123. package/lib/src/css-variables.d.ts.map +1 -1
  124. package/lib/src/embed/app.d.ts +16 -0
  125. package/lib/src/embed/app.d.ts.map +1 -1
  126. package/lib/src/embed/app.js +4 -1
  127. package/lib/src/embed/app.js.map +1 -1
  128. package/lib/src/embed/app.spec.js +10 -0
  129. package/lib/src/embed/app.spec.js.map +1 -1
  130. package/lib/src/embed/bodyless-conversation.d.ts +1 -0
  131. package/lib/src/embed/bodyless-conversation.d.ts.map +1 -1
  132. package/lib/src/embed/bodyless-conversation.js +7 -3
  133. package/lib/src/embed/bodyless-conversation.js.map +1 -1
  134. package/lib/src/embed/conversation.d.ts +3 -2
  135. package/lib/src/embed/conversation.d.ts.map +1 -1
  136. package/lib/src/embed/conversation.js +7 -2
  137. package/lib/src/embed/conversation.js.map +1 -1
  138. package/lib/src/embed/liveboard.d.ts +33 -0
  139. package/lib/src/embed/liveboard.d.ts.map +1 -1
  140. package/lib/src/embed/liveboard.js +13 -2
  141. package/lib/src/embed/liveboard.js.map +1 -1
  142. package/lib/src/embed/liveboard.spec.js +98 -11
  143. package/lib/src/embed/liveboard.spec.js.map +1 -1
  144. package/lib/src/embed/sage.d.ts +1 -0
  145. package/lib/src/embed/sage.d.ts.map +1 -1
  146. package/lib/src/embed/sage.js +10 -6
  147. package/lib/src/embed/sage.js.map +1 -1
  148. package/lib/src/embed/sage.spec.js +20 -10
  149. package/lib/src/embed/sage.spec.js.map +1 -1
  150. package/lib/src/embed/search-bar.d.ts +1 -0
  151. package/lib/src/embed/search-bar.d.ts.map +1 -1
  152. package/lib/src/embed/search-bar.js +11 -7
  153. package/lib/src/embed/search-bar.js.map +1 -1
  154. package/lib/src/embed/search.d.ts +1 -0
  155. package/lib/src/embed/search.d.ts.map +1 -1
  156. package/lib/src/embed/search.js +7 -8
  157. package/lib/src/embed/search.js.map +1 -1
  158. package/lib/src/embed/search.spec.js +11 -11
  159. package/lib/src/embed/search.spec.js.map +1 -1
  160. package/lib/src/embed/ts-embed.d.ts +7 -5
  161. package/lib/src/embed/ts-embed.d.ts.map +1 -1
  162. package/lib/src/embed/ts-embed.js +26 -9
  163. package/lib/src/embed/ts-embed.js.map +1 -1
  164. package/lib/src/embed/ts-embed.spec.js.map +1 -1
  165. package/lib/src/errors.d.ts +1 -0
  166. package/lib/src/errors.d.ts.map +1 -1
  167. package/lib/src/errors.js +1 -0
  168. package/lib/src/errors.js.map +1 -1
  169. package/lib/src/react/all-types-export.spec.js +1 -1
  170. package/lib/src/react/all-types-export.spec.js.map +1 -1
  171. package/lib/src/react/index.d.ts.map +1 -1
  172. package/lib/src/react/index.js +2 -1
  173. package/lib/src/react/index.js.map +1 -1
  174. package/lib/src/react/index.spec.js +1 -1
  175. package/lib/src/react/index.spec.js.map +1 -1
  176. package/lib/src/react/util.js.map +1 -1
  177. package/lib/src/react/util.spec.d.ts +2 -0
  178. package/lib/src/react/util.spec.d.ts.map +1 -0
  179. package/lib/src/react/util.spec.js +76 -0
  180. package/lib/src/react/util.spec.js.map +1 -0
  181. package/lib/src/types.d.ts +64 -9
  182. package/lib/src/types.d.ts.map +1 -1
  183. package/lib/src/types.js +59 -4
  184. package/lib/src/types.js.map +1 -1
  185. package/lib/src/utils.d.ts +14 -0
  186. package/lib/src/utils.d.ts.map +1 -1
  187. package/lib/src/utils.js +20 -0
  188. package/lib/src/utils.js.map +1 -1
  189. package/lib/src/utils.spec.js +11 -1
  190. package/lib/src/utils.spec.js.map +1 -1
  191. package/package.json +8 -8
  192. package/src/authToken.spec.ts +48 -1
  193. package/src/authToken.ts +13 -2
  194. package/src/css-variables.ts +55 -17
  195. package/src/embed/app.spec.ts +14 -0
  196. package/src/embed/app.ts +23 -1
  197. package/src/embed/bodyless-conversation.ts +8 -3
  198. package/src/embed/conversation.ts +19 -4
  199. package/src/embed/liveboard.spec.ts +126 -14
  200. package/src/embed/liveboard.ts +72 -24
  201. package/src/embed/sage.spec.ts +24 -10
  202. package/src/embed/sage.ts +14 -9
  203. package/src/embed/search-bar.tsx +14 -7
  204. package/src/embed/search.spec.ts +13 -14
  205. package/src/embed/search.ts +19 -8
  206. package/src/embed/ts-embed.spec.ts +1 -1
  207. package/src/embed/ts-embed.ts +35 -13
  208. package/src/errors.ts +1 -0
  209. package/src/react/all-types-export.spec.ts +1 -1
  210. package/src/react/index.spec.tsx +1 -1
  211. package/src/react/index.tsx +4 -2
  212. package/src/react/util.spec.tsx +88 -0
  213. package/src/react/util.ts +3 -3
  214. package/src/types.ts +125 -69
  215. package/src/utils.spec.ts +18 -0
  216. package/src/utils.ts +21 -0
  217. package/lib/src/visual-embed-sdk.d.ts +0 -9705
package/src/react/util.ts CHANGED
@@ -24,10 +24,10 @@ export function getViewPropsAndListeners<
24
24
  return Object.keys(props).reduce(
25
25
  (accu, key) => {
26
26
  if (key.startsWith('on')) {
27
- const eventName = key.substr(2);
28
- accu.listeners[EmbedEvent[eventName]] = props[key];
27
+ const eventName = key.substr(2) as any;
28
+ (accu.listeners as any)[EmbedEvent[eventName as keyof typeof EmbedEvent] as any] = props[key as keyof T];
29
29
  } else {
30
- accu.viewConfig[key] = props[key];
30
+ (accu.viewConfig as any)[key] = props[key as keyof T];
31
31
  }
32
32
  return accu;
33
33
  },
package/src/types.ts CHANGED
@@ -231,12 +231,12 @@ export type DOMSelector = string | HTMLElement;
231
231
  * Use {@link CustomCssVariables} or css rules.
232
232
  */
233
233
  export interface customCssInterface {
234
- /**
235
- * The custom css variables, which can be set.
236
- * The variables are available in the {@link CustomCssVariables}
237
- * interface. For more information, see
238
- * link:https://developers.thoughtspot.com/docs/css-variables-reference[CSS variable reference].
239
- */
234
+ /**
235
+ * The custom css variables, which can be set.
236
+ * The variables are available in the {@link CustomCssVariables}
237
+ * interface. For more information, see
238
+ * link:https://developers.thoughtspot.com/docs/css-variables-reference[CSS variable reference].
239
+ */
240
240
  variables?: CustomCssVariables;
241
241
  /**
242
242
  * Can be used to define a custom font face
@@ -648,7 +648,7 @@ export interface EmbedConfig {
648
648
  * ```
649
649
  * @version SDK 1.37.0 | ThoughtSpot: 10.8.0.cl
650
650
  */
651
- customVariablesForThirdPartyTools?: Record< string, any >;
651
+ customVariablesForThirdPartyTools?: Record<string, any>;
652
652
 
653
653
  disablePreauthCache?: boolean;
654
654
 
@@ -695,7 +695,7 @@ export interface EmbedConfig {
695
695
  }
696
696
 
697
697
  // eslint-disable-next-line @typescript-eslint/no-empty-object-type
698
- export interface LayoutConfig {}
698
+ export interface LayoutConfig { }
699
699
 
700
700
  /**
701
701
  * Embedded iframe configuration
@@ -1281,8 +1281,8 @@ export interface SearchLiveboardCommonViewConfig {
1281
1281
  * Flag to control Data panel experience
1282
1282
  *
1283
1283
  * Supported embed types: `SageEmbed`, `AppEmbed`, `SearchBarEmbed`, `LiveboardEmbed`, `SearchEmbed`
1284
- * @default false
1285
- * @version SDK: 1.34.0 | ThoughtSpot Cloud: 10.3.0.cl
1284
+ * @default true
1285
+ * @version SDK: 1.43.0 | ThoughtSpot Cloud: 10.14.0.cl
1286
1286
  * @example
1287
1287
  * ```js
1288
1288
  * // Replace <EmbedComponent> with embed component name. For example, SageEmbed, AppEmbed, or SearchBarEmbed
@@ -1481,21 +1481,21 @@ export interface LiveboardAppEmbedViewConfig {
1481
1481
  * ```
1482
1482
  */
1483
1483
  enableAskSage?: boolean;
1484
- /**
1485
- * This flag is used to show or hide checkboxes for including or excluding
1486
- * the cover and filters pages in the Liveboard PDF.
1487
- *
1488
- * Supported embed types: `AppEmbed`, `LiveboardEmbed`
1489
- * @version SDK: 1.40.0 | ThoughtSpot:10.8.0.cl
1490
- * @example
1491
- * ```js
1492
- * // Replace <EmbedComponent> with embed component name. For example, AppEmbed or LiveboardEmbed
1493
- * const embed = new <EmbedComponent>('#tsEmbed', {
1494
- * ... // other embed view config
1495
- * coverAndFilterOptionInPDF: false,
1496
- * })
1497
- * ```
1498
- */
1484
+ /**
1485
+ * This flag is used to show or hide checkboxes for including or excluding
1486
+ * the cover and filters pages in the Liveboard PDF.
1487
+ *
1488
+ * Supported embed types: `AppEmbed`, `LiveboardEmbed`
1489
+ * @version SDK: 1.40.0 | ThoughtSpot:10.8.0.cl
1490
+ * @example
1491
+ * ```js
1492
+ * // Replace <EmbedComponent> with embed component name. For example, AppEmbed or LiveboardEmbed
1493
+ * const embed = new <EmbedComponent>('#tsEmbed', {
1494
+ * ... // other embed view config
1495
+ * coverAndFilterOptionInPDF: false,
1496
+ * })
1497
+ * ```
1498
+ */
1499
1499
  coverAndFilterOptionInPDF?: boolean;
1500
1500
  /**
1501
1501
  * This flag is used to enable or disable the XLSX/CSV download option for Liveboards.
@@ -1515,7 +1515,7 @@ export interface LiveboardAppEmbedViewConfig {
1515
1515
 
1516
1516
  }
1517
1517
 
1518
- export interface AllEmbedViewConfig extends BaseViewConfig, SearchLiveboardCommonViewConfig, HomePageConfig, LiveboardAppEmbedViewConfig {}
1518
+ export interface AllEmbedViewConfig extends BaseViewConfig, SearchLiveboardCommonViewConfig, HomePageConfig, LiveboardAppEmbedViewConfig { }
1519
1519
 
1520
1520
  /**
1521
1521
  * MessagePayload: Embed event payload: message type, data and status (start/end)
@@ -2774,25 +2774,25 @@ export enum EmbedEvent {
2774
2774
  * ```
2775
2775
  * @version SDK: 1.37.0 | ThoughtSpot: 10.8.0.cl
2776
2776
  */
2777
- TableVizRendered = 'TableVizRendered',
2778
- /**
2779
- * Emitted when the liveboard is created from pin modal or Liveboard list page.
2780
- * You can use this event as a hook to trigger
2781
- * other events on liveboard creation.
2782
- *
2783
- * ```js
2784
- * liveboardEmbed.on(EmbedEvent.CreateLiveboard, (payload) => {
2785
- * console.log('payload', payload);
2786
- * })
2787
- *```
2788
- * @version SDK : 1.37.0 | ThoughtSpot: 10.8.0.cl
2789
- */
2777
+ TableVizRendered = 'TableVizRendered',
2778
+ /**
2779
+ * Emitted when the liveboard is created from pin modal or Liveboard list page.
2780
+ * You can use this event as a hook to trigger
2781
+ * other events on liveboard creation.
2782
+ *
2783
+ * ```js
2784
+ * liveboardEmbed.on(EmbedEvent.CreateLiveboard, (payload) => {
2785
+ * console.log('payload', payload);
2786
+ * })
2787
+ *```
2788
+ * @version SDK : 1.37.0 | ThoughtSpot: 10.8.0.cl
2789
+ */
2790
2790
  CreateLiveboard = 'createLiveboard',
2791
2791
  /**
2792
2792
  * Emitted when a user creates a Model.
2793
2793
  * @version SDK : 1.37.0 | ThoughtSpot: 10.8.0.cl
2794
2794
  */
2795
- CreateModel = 'createModel',
2795
+ CreateModel = 'createModel',
2796
2796
  /**
2797
2797
  * @hidden
2798
2798
  * Emitted when a user exits present mode.
@@ -3670,24 +3670,45 @@ export enum HostEvent {
3670
3670
  * @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw
3671
3671
  */
3672
3672
  Share = 'share',
3673
- /**
3674
- * Trigger the **Save** action on a Liveboard or Answer.
3675
- * Saves the changes.
3676
- * @param - `vizId` refers to the Answer ID in Spotter embed and is required in Spotter embed.
3677
- * @example
3678
- * ```js
3679
- * liveboardEmbed.trigger(HostEvent.Save)
3680
- * ```
3681
- * ```js
3682
- * searchEmbed.trigger(HostEvent.Save)
3683
- * ```
3684
- * ```js
3685
- * spotterEmbed.trigger(HostEvent.Save, {
3686
- * vizId:"730496d6-6903-4601-937e-2c691821af3c"
3687
- * })
3688
- * ```
3689
- * @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw
3690
- */
3673
+ /**
3674
+ * Trigger the **Save** action on a Liveboard, Answer, or Spotter.
3675
+ * Saves the changes.
3676
+ *
3677
+ * @param - `vizId` refers to the Spotter Visualization Id used in Spotter embed.
3678
+ * It is required and can be retrieved from the data embed event.
3679
+ *
3680
+ * @example
3681
+ * ```js
3682
+ * // Save changes in a Liveboard
3683
+ * liveboardEmbed.trigger(HostEvent.Save)
3684
+ * ```
3685
+ *
3686
+ * ```js
3687
+ * // Save the current Answer in Search embed
3688
+ * searchEmbed.trigger(HostEvent.Save)
3689
+ * ```
3690
+ *
3691
+ * ```js
3692
+ * // Save an Answer in Spotter (requires vizId)
3693
+ * spotterEmbed.trigger(HostEvent.Save, {
3694
+ * vizId: "730496d6-6903-4601-937e-2c691821af3c"
3695
+ * })
3696
+ * ```
3697
+ *
3698
+ * ```js
3699
+ * // How to get the vizId in Spotter?
3700
+ *
3701
+ * // You can use the Data event dispatched on each answer creation to get the vizId.
3702
+ * let latestSpotterVizId = '';
3703
+ * spotterEmbed.on(EmbedEvent.Data, (payload) => {
3704
+ * latestSpotterVizId = payload.data.id;
3705
+ * });
3706
+ *
3707
+ * spotterEmbed.trigger(HostEvent.Save, { vizId: latestSpotterVizId });
3708
+ * ```
3709
+ *
3710
+ * @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw
3711
+ */
3691
3712
  Save = 'save',
3692
3713
  /**
3693
3714
  * Trigger the **Sync to Sheets** action on an embedded visualization or Answer
@@ -3823,7 +3844,7 @@ export enum HostEvent {
3823
3844
  * column: "Date",
3824
3845
  * oper: 'EQ',
3825
3846
  * values: ["2023-07-31"],
3826
- * types: "EXACT_DATE"
3847
+ * type: "EXACT_DATE"
3827
3848
  * }]
3828
3849
  * });
3829
3850
  * ```
@@ -4015,7 +4036,7 @@ export enum HostEvent {
4015
4036
  *```
4016
4037
  * @version SDK: 1.36.0 | ThoughtSpot: 10.6.0.cl
4017
4038
  */
4018
- InfoSuccess = 'InfoSuccess',
4039
+ InfoSuccess = 'InfoSuccess',
4019
4040
  /**
4020
4041
  * Trigger the save action for an Answer.
4021
4042
  * To programmatically save an answer without opening the
@@ -4169,6 +4190,17 @@ export enum HostEvent {
4169
4190
  * @version SDK: 1.41.0 | ThoughtSpot: 10.12.0.cl
4170
4191
  */
4171
4192
  AskSpotter = 'AskSpotter',
4193
+
4194
+ /**
4195
+ * @hidden
4196
+ * Triggers the update of the embed params.
4197
+ *
4198
+ * @example
4199
+ * ```js
4200
+ * liveboardEmbed.trigger(HostEvent.UpdateEmbedParams, viewConfig);
4201
+ * ```
4202
+ */
4203
+ UpdateEmbedParams = 'updateEmbedParams',
4172
4204
  }
4173
4205
 
4174
4206
  /**
@@ -4317,6 +4349,7 @@ export enum Param {
4317
4349
  IsLazyLoadingForEmbedEnabled = 'isLazyLoadingForEmbedEnabled',
4318
4350
  RootMarginForLazyLoad = 'rootMarginForLazyLoad',
4319
4351
  LiveboardXLSXCSVDownload = 'isLiveboardXLSXCSVDownloadEnabled',
4352
+ isPNGInScheduledEmailsEnabled = 'isPNGInScheduledEmailsEnabled',
4320
4353
  }
4321
4354
 
4322
4355
  /**
@@ -5616,6 +5649,29 @@ export enum Action {
5616
5649
  * @version SDK: 1.41.0 | ThoughtSpot Cloud: 10.13.0.cl
5617
5650
  */
5618
5651
  SpotterTokenQuickEdit = 'SpotterTokenQuickEdit',
5652
+ /**
5653
+ * The **PNG screenshot in email** option in the schedule email dialog.
5654
+ * Includes a PNG screenshot in the notification email body.
5655
+ * @example
5656
+ * ```js
5657
+ * disabledActions: [Action.PngScreenshotInEmail]
5658
+ * ```
5659
+ * ```
5660
+ * @version SDK: 1.42.0 | ThoughtSpot Cloud: 10.14.0.cl
5661
+ */
5662
+ PngScreenshotInEmail = 'pngScreenshotInEmail',
5663
+ /**
5664
+ * The **Remove attachment** action in the schedule email dialog.
5665
+ * Removes an attachment from the email configuration.
5666
+ * @example
5667
+ * ```js
5668
+ * disabledActions: [Action.RemoveAttachment]
5669
+ * ```
5670
+ * ```
5671
+ * ```
5672
+ * @version SDK: 1.42.0 | ThoughtSpot Cloud: 10.14.0.cl
5673
+ */
5674
+ RemoveAttachment = 'removeAttachment',
5619
5675
  }
5620
5676
 
5621
5677
  export interface AnswerServiceType {
@@ -5647,15 +5703,15 @@ export interface ColumnValue {
5647
5703
  [key: string]: any;
5648
5704
  };
5649
5705
  value:
5650
- | string
5651
- | number
5652
- | boolean
5653
- | {
5654
- v: {
5655
- s: number;
5656
- e: number;
5657
- };
5658
- };
5706
+ | string
5707
+ | number
5708
+ | boolean
5709
+ | {
5710
+ v: {
5711
+ s: number;
5712
+ e: number;
5713
+ };
5714
+ };
5659
5715
  }
5660
5716
 
5661
5717
  export interface VizPoint {
package/src/utils.spec.ts CHANGED
@@ -18,6 +18,7 @@ import {
18
18
  getTypeFromValue,
19
19
  arrayIncludesString,
20
20
  calculateVisibleElementData,
21
+ formatTemplate,
21
22
  } from './utils';
22
23
  import { RuntimeFilterOp } from './types';
23
24
  import { logger } from './utils/logger';
@@ -718,3 +719,20 @@ describe('calculateVisibleElementData', () => {
718
719
  });
719
720
  });
720
721
  });
722
+
723
+ describe('formatTemplate', () => {
724
+ it('should replace placeholders with provided values', () => {
725
+ expect(
726
+ formatTemplate('Hello {name}, you are {age} years old', { name: 'John', age: 30 }),
727
+ ).toBe('Hello John, you are 30 years old');
728
+ expect(
729
+ formatTemplate('Expected {type}, but received {actual}', {
730
+ type: 'string',
731
+ actual: 'number',
732
+ }),
733
+ ).toBe('Expected string, but received number');
734
+ expect(
735
+ formatTemplate('Hello {name}, you are {age} years old', { name: 'John' }),
736
+ ).toBe('Hello John, you are {age} years old');
737
+ });
738
+ });
package/src/utils.ts CHANGED
@@ -499,3 +499,24 @@ export const calculateVisibleElementData = (element: HTMLElement) => {
499
499
 
500
500
  return data;
501
501
  }
502
+
503
+ /**
504
+ * Replaces placeholders in a template string with provided values.
505
+ * Placeholders should be in the format {key}.
506
+ * @param template - The template string with placeholders
507
+ * @param values - An object containing key-value pairs to replace placeholders
508
+ * @returns The template string with placeholders replaced
509
+ * @example
510
+ * formatTemplate('Hello {name}, you are {age} years old', { name: 'John', age: 30 })
511
+ * // Returns: 'Hello John, you are 30 years old'
512
+ *
513
+ * formatTemplate('Expected {type}, but received {actual}', { type: 'string', actual: 'number' })
514
+ * // Returns: 'Expected string, but received number'
515
+ */
516
+ export const formatTemplate = (template: string, values: Record<string, any>): string => {
517
+ // This regex /\{(\w+)\}/g finds all placeholders in the format {word}
518
+ // and captures the word inside the braces for replacement.
519
+ return template.replace(/\{(\w+)\}/g, (match, key) => {
520
+ return values[key] !== undefined ? String(values[key]) : match;
521
+ });
522
+ };