@thoughtspot/visual-embed-sdk 1.50.0 → 1.51.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 (222) hide show
  1. package/cjs/package.json +1 -1
  2. package/cjs/src/css-variables.d.ts +95 -0
  3. package/cjs/src/css-variables.d.ts.map +1 -1
  4. package/cjs/src/embed/app.d.ts +136 -15
  5. package/cjs/src/embed/app.d.ts.map +1 -1
  6. package/cjs/src/embed/app.js +59 -37
  7. package/cjs/src/embed/app.js.map +1 -1
  8. package/cjs/src/embed/app.spec.js +419 -149
  9. package/cjs/src/embed/app.spec.js.map +1 -1
  10. package/cjs/src/embed/conversation.d.ts +230 -1
  11. package/cjs/src/embed/conversation.d.ts.map +1 -1
  12. package/cjs/src/embed/conversation.js +30 -16
  13. package/cjs/src/embed/conversation.js.map +1 -1
  14. package/cjs/src/embed/conversation.spec.js +221 -17
  15. package/cjs/src/embed/conversation.spec.js.map +1 -1
  16. package/cjs/src/embed/events.spec.js +635 -0
  17. package/cjs/src/embed/events.spec.js.map +1 -1
  18. package/cjs/src/embed/host-events.spec.js +151 -0
  19. package/cjs/src/embed/host-events.spec.js.map +1 -1
  20. package/cjs/src/embed/hostEventClient/contracts.d.ts +51 -14
  21. package/cjs/src/embed/hostEventClient/contracts.d.ts.map +1 -1
  22. package/cjs/src/embed/hostEventClient/contracts.js +11 -1
  23. package/cjs/src/embed/hostEventClient/contracts.js.map +1 -1
  24. package/cjs/src/embed/hostEventClient/host-event-client.d.ts +1 -0
  25. package/cjs/src/embed/hostEventClient/host-event-client.d.ts.map +1 -1
  26. package/cjs/src/embed/hostEventClient/host-event-client.js +9 -0
  27. package/cjs/src/embed/hostEventClient/host-event-client.js.map +1 -1
  28. package/cjs/src/embed/hostEventClient/host-event-client.spec.js +218 -0
  29. package/cjs/src/embed/hostEventClient/host-event-client.spec.js.map +1 -1
  30. package/cjs/src/embed/hostEventClient/utils.d.ts +2 -0
  31. package/cjs/src/embed/hostEventClient/utils.d.ts.map +1 -1
  32. package/cjs/src/embed/hostEventClient/utils.js +32 -2
  33. package/cjs/src/embed/hostEventClient/utils.js.map +1 -1
  34. package/cjs/src/embed/hostEventClient/utils.spec.js +178 -0
  35. package/cjs/src/embed/hostEventClient/utils.spec.js.map +1 -1
  36. package/cjs/src/embed/liveboard.d.ts +42 -1
  37. package/cjs/src/embed/liveboard.d.ts.map +1 -1
  38. package/cjs/src/embed/liveboard.js +26 -6
  39. package/cjs/src/embed/liveboard.js.map +1 -1
  40. package/cjs/src/embed/liveboard.spec.js +83 -2
  41. package/cjs/src/embed/liveboard.spec.js.map +1 -1
  42. package/cjs/src/embed/spotter-utils.d.ts +8 -1
  43. package/cjs/src/embed/spotter-utils.d.ts.map +1 -1
  44. package/cjs/src/embed/spotter-utils.js +14 -1
  45. package/cjs/src/embed/spotter-utils.js.map +1 -1
  46. package/cjs/src/embed/spotter-utils.spec.js +61 -0
  47. package/cjs/src/embed/spotter-utils.spec.js.map +1 -1
  48. package/cjs/src/embed/spotter-viz-utils.d.ts +34 -0
  49. package/cjs/src/embed/spotter-viz-utils.d.ts.map +1 -1
  50. package/cjs/src/embed/spotter-viz-utils.js.map +1 -1
  51. package/cjs/src/embed/spotter-viz-utils.spec.js +17 -0
  52. package/cjs/src/embed/spotter-viz-utils.spec.js.map +1 -1
  53. package/cjs/src/embed/ts-embed.d.ts.map +1 -1
  54. package/cjs/src/embed/ts-embed.js +29 -7
  55. package/cjs/src/embed/ts-embed.js.map +1 -1
  56. package/cjs/src/embed/ts-embed.spec.js +146 -0
  57. package/cjs/src/embed/ts-embed.spec.js.map +1 -1
  58. package/cjs/src/errors.d.ts +1 -0
  59. package/cjs/src/errors.d.ts.map +1 -1
  60. package/cjs/src/errors.js +1 -0
  61. package/cjs/src/errors.js.map +1 -1
  62. package/cjs/src/index.d.ts +2 -2
  63. package/cjs/src/index.d.ts.map +1 -1
  64. package/cjs/src/index.js +3 -2
  65. package/cjs/src/index.js.map +1 -1
  66. package/cjs/src/mixpanel-service.d.ts +4 -0
  67. package/cjs/src/mixpanel-service.d.ts.map +1 -1
  68. package/cjs/src/mixpanel-service.js +4 -0
  69. package/cjs/src/mixpanel-service.js.map +1 -1
  70. package/cjs/src/react/util.spec.js +251 -0
  71. package/cjs/src/react/util.spec.js.map +1 -1
  72. package/cjs/src/types.d.ts +573 -11
  73. package/cjs/src/types.d.ts.map +1 -1
  74. package/cjs/src/types.js +519 -2
  75. package/cjs/src/types.js.map +1 -1
  76. package/cjs/src/utils/processData.spec.js +93 -0
  77. package/cjs/src/utils/processData.spec.js.map +1 -1
  78. package/cjs/src/utils/processTrigger.spec.js +61 -0
  79. package/cjs/src/utils/processTrigger.spec.js.map +1 -1
  80. package/dist/{index-B5xoN6Cp.js → index-aBzH5ZwF.js} +1 -1
  81. package/dist/src/css-variables.d.ts +95 -0
  82. package/dist/src/css-variables.d.ts.map +1 -1
  83. package/dist/src/embed/app.d.ts +136 -15
  84. package/dist/src/embed/app.d.ts.map +1 -1
  85. package/dist/src/embed/conversation.d.ts +230 -1
  86. package/dist/src/embed/conversation.d.ts.map +1 -1
  87. package/dist/src/embed/hostEventClient/contracts.d.ts +51 -14
  88. package/dist/src/embed/hostEventClient/contracts.d.ts.map +1 -1
  89. package/dist/src/embed/hostEventClient/host-event-client.d.ts +1 -0
  90. package/dist/src/embed/hostEventClient/host-event-client.d.ts.map +1 -1
  91. package/dist/src/embed/hostEventClient/utils.d.ts +2 -0
  92. package/dist/src/embed/hostEventClient/utils.d.ts.map +1 -1
  93. package/dist/src/embed/liveboard.d.ts +42 -1
  94. package/dist/src/embed/liveboard.d.ts.map +1 -1
  95. package/dist/src/embed/spotter-utils.d.ts +8 -1
  96. package/dist/src/embed/spotter-utils.d.ts.map +1 -1
  97. package/dist/src/embed/spotter-viz-utils.d.ts +34 -0
  98. package/dist/src/embed/spotter-viz-utils.d.ts.map +1 -1
  99. package/dist/src/embed/ts-embed.d.ts.map +1 -1
  100. package/dist/src/errors.d.ts +1 -0
  101. package/dist/src/errors.d.ts.map +1 -1
  102. package/dist/src/index.d.ts +2 -2
  103. package/dist/src/index.d.ts.map +1 -1
  104. package/dist/src/mixpanel-service.d.ts +4 -0
  105. package/dist/src/mixpanel-service.d.ts.map +1 -1
  106. package/dist/src/types.d.ts +573 -11
  107. package/dist/src/types.d.ts.map +1 -1
  108. package/dist/tsembed-react.es.js +936 -142
  109. package/dist/tsembed-react.js +935 -141
  110. package/dist/tsembed.es.js +935 -142
  111. package/dist/tsembed.js +933 -140
  112. package/dist/visual-embed-sdk-react-full.d.ts +1147 -44
  113. package/dist/visual-embed-sdk-react.d.ts +1153 -46
  114. package/dist/visual-embed-sdk.d.ts +1161 -46
  115. package/lib/package.json +1 -1
  116. package/lib/src/css-variables.d.ts +95 -0
  117. package/lib/src/css-variables.d.ts.map +1 -1
  118. package/lib/src/embed/app.d.ts +136 -15
  119. package/lib/src/embed/app.d.ts.map +1 -1
  120. package/lib/src/embed/app.js +60 -38
  121. package/lib/src/embed/app.js.map +1 -1
  122. package/lib/src/embed/app.spec.js +420 -150
  123. package/lib/src/embed/app.spec.js.map +1 -1
  124. package/lib/src/embed/conversation.d.ts +230 -1
  125. package/lib/src/embed/conversation.d.ts.map +1 -1
  126. package/lib/src/embed/conversation.js +31 -17
  127. package/lib/src/embed/conversation.js.map +1 -1
  128. package/lib/src/embed/conversation.spec.js +222 -18
  129. package/lib/src/embed/conversation.spec.js.map +1 -1
  130. package/lib/src/embed/events.spec.js +635 -0
  131. package/lib/src/embed/events.spec.js.map +1 -1
  132. package/lib/src/embed/host-events.spec.js +152 -1
  133. package/lib/src/embed/host-events.spec.js.map +1 -1
  134. package/lib/src/embed/hostEventClient/contracts.d.ts +51 -14
  135. package/lib/src/embed/hostEventClient/contracts.d.ts.map +1 -1
  136. package/lib/src/embed/hostEventClient/contracts.js +10 -0
  137. package/lib/src/embed/hostEventClient/contracts.js.map +1 -1
  138. package/lib/src/embed/hostEventClient/host-event-client.d.ts +1 -0
  139. package/lib/src/embed/hostEventClient/host-event-client.d.ts.map +1 -1
  140. package/lib/src/embed/hostEventClient/host-event-client.js +10 -1
  141. package/lib/src/embed/hostEventClient/host-event-client.js.map +1 -1
  142. package/lib/src/embed/hostEventClient/host-event-client.spec.js +218 -0
  143. package/lib/src/embed/hostEventClient/host-event-client.spec.js.map +1 -1
  144. package/lib/src/embed/hostEventClient/utils.d.ts +2 -0
  145. package/lib/src/embed/hostEventClient/utils.d.ts.map +1 -1
  146. package/lib/src/embed/hostEventClient/utils.js +28 -1
  147. package/lib/src/embed/hostEventClient/utils.js.map +1 -1
  148. package/lib/src/embed/hostEventClient/utils.spec.js +179 -1
  149. package/lib/src/embed/hostEventClient/utils.spec.js.map +1 -1
  150. package/lib/src/embed/liveboard.d.ts +42 -1
  151. package/lib/src/embed/liveboard.d.ts.map +1 -1
  152. package/lib/src/embed/liveboard.js +26 -6
  153. package/lib/src/embed/liveboard.js.map +1 -1
  154. package/lib/src/embed/liveboard.spec.js +83 -2
  155. package/lib/src/embed/liveboard.spec.js.map +1 -1
  156. package/lib/src/embed/spotter-utils.d.ts +8 -1
  157. package/lib/src/embed/spotter-utils.d.ts.map +1 -1
  158. package/lib/src/embed/spotter-utils.js +12 -0
  159. package/lib/src/embed/spotter-utils.js.map +1 -1
  160. package/lib/src/embed/spotter-utils.spec.js +62 -1
  161. package/lib/src/embed/spotter-utils.spec.js.map +1 -1
  162. package/lib/src/embed/spotter-viz-utils.d.ts +34 -0
  163. package/lib/src/embed/spotter-viz-utils.d.ts.map +1 -1
  164. package/lib/src/embed/spotter-viz-utils.js.map +1 -1
  165. package/lib/src/embed/spotter-viz-utils.spec.js +17 -0
  166. package/lib/src/embed/spotter-viz-utils.spec.js.map +1 -1
  167. package/lib/src/embed/ts-embed.d.ts.map +1 -1
  168. package/lib/src/embed/ts-embed.js +29 -7
  169. package/lib/src/embed/ts-embed.js.map +1 -1
  170. package/lib/src/embed/ts-embed.spec.js +146 -0
  171. package/lib/src/embed/ts-embed.spec.js.map +1 -1
  172. package/lib/src/errors.d.ts +1 -0
  173. package/lib/src/errors.d.ts.map +1 -1
  174. package/lib/src/errors.js +1 -0
  175. package/lib/src/errors.js.map +1 -1
  176. package/lib/src/index.d.ts +2 -2
  177. package/lib/src/index.d.ts.map +1 -1
  178. package/lib/src/index.js +2 -2
  179. package/lib/src/index.js.map +1 -1
  180. package/lib/src/mixpanel-service.d.ts +4 -0
  181. package/lib/src/mixpanel-service.d.ts.map +1 -1
  182. package/lib/src/mixpanel-service.js +4 -0
  183. package/lib/src/mixpanel-service.js.map +1 -1
  184. package/lib/src/react/util.spec.js +251 -0
  185. package/lib/src/react/util.spec.js.map +1 -1
  186. package/lib/src/types.d.ts +573 -11
  187. package/lib/src/types.d.ts.map +1 -1
  188. package/lib/src/types.js +519 -2
  189. package/lib/src/types.js.map +1 -1
  190. package/lib/src/utils/processData.spec.js +93 -0
  191. package/lib/src/utils/processData.spec.js.map +1 -1
  192. package/lib/src/utils/processTrigger.spec.js +61 -0
  193. package/lib/src/utils/processTrigger.spec.js.map +1 -1
  194. package/lib/src/visual-embed-sdk.d.ts +1161 -46
  195. package/package.json +1 -1
  196. package/src/css-variables.ts +118 -0
  197. package/src/embed/app.spec.ts +530 -183
  198. package/src/embed/app.ts +209 -66
  199. package/src/embed/conversation.spec.ts +275 -21
  200. package/src/embed/conversation.ts +262 -17
  201. package/src/embed/events.spec.ts +757 -1
  202. package/src/embed/host-events.spec.ts +194 -0
  203. package/src/embed/hostEventClient/contracts.ts +57 -14
  204. package/src/embed/hostEventClient/host-event-client.spec.ts +338 -0
  205. package/src/embed/hostEventClient/host-event-client.ts +16 -0
  206. package/src/embed/hostEventClient/utils.spec.ts +204 -0
  207. package/src/embed/hostEventClient/utils.ts +37 -10
  208. package/src/embed/liveboard.spec.ts +108 -2
  209. package/src/embed/liveboard.ts +82 -14
  210. package/src/embed/spotter-utils.spec.ts +68 -1
  211. package/src/embed/spotter-utils.ts +16 -1
  212. package/src/embed/spotter-viz-utils.spec.ts +17 -0
  213. package/src/embed/spotter-viz-utils.ts +34 -0
  214. package/src/embed/ts-embed.spec.ts +186 -0
  215. package/src/embed/ts-embed.ts +30 -4
  216. package/src/errors.ts +1 -0
  217. package/src/index.ts +3 -1
  218. package/src/mixpanel-service.ts +4 -0
  219. package/src/react/util.spec.tsx +255 -0
  220. package/src/types.ts +575 -8
  221. package/src/utils/processData.spec.ts +97 -0
  222. package/src/utils/processTrigger.spec.ts +91 -0
@@ -1,8 +1,6 @@
1
- import isUndefined from 'lodash/isUndefined';
2
- import { ERROR_MESSAGE } from '../errors';
3
1
  import { Param, BaseViewConfig, RuntimeFilter, RuntimeParameter, ErrorDetailsTypes, EmbedErrorCodes, DefaultAppInitData, VisualizationOverrides, SpotterFileUploadFileTypes } from '../types';
4
2
  import { TsEmbed } from './ts-embed';
5
- import { buildSpotterSidebarAppInitData } from './spotter-utils';
3
+ import { buildSpotterSidebarAppInitData, buildSpotterShareConversationAppInitData } from './spotter-utils';
6
4
  import { getQueryParamString, getFilterQuery, getRuntimeParameters, setParamIfDefined } from '../utils';
7
5
 
8
6
  /**
@@ -15,6 +13,47 @@ export interface SearchOptions {
15
13
  searchQuery: string;
16
14
  }
17
15
 
16
+ /**
17
+ * The query mode Spotter uses when answering a question.
18
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
19
+ */
20
+ export enum SpotterQueryMode {
21
+ FAST_SEARCH = 'fastSearch',
22
+ RESEARCH = 'research',
23
+ }
24
+
25
+ /**
26
+ * Configuration for the pin/unpin conversation feature in the Spotter sidebar.
27
+ * Grouped into one object because pin exposes several related settings
28
+ * (enable + label overrides), unlike single-item actions like rename or
29
+ * delete.
30
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
31
+ */
32
+ export interface SpotterChatPinConfig {
33
+ /**
34
+ * Enables the pin/unpin conversation feature in embedded Spotter. Disabled
35
+ * by default — hosts must opt in. When off, the Pin/Unpin menu entry and
36
+ * the pin glyph are hidden and the PinSpotterConversation /
37
+ * UnpinSpotterConversation host events are no-ops. Native (non-embedded)
38
+ * Spotter is unaffected and ships pin enabled.
39
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
40
+ * @default false
41
+ */
42
+ enabled?: boolean;
43
+ /**
44
+ * Custom label text for the pin action in the conversation edit menu.
45
+ * Defaults to translated "Pin" text.
46
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
47
+ */
48
+ pinLabel?: string;
49
+ /**
50
+ * Custom label text for the unpin action in the conversation edit menu.
51
+ * Defaults to translated "Unpin" text.
52
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
53
+ */
54
+ unpinLabel?: string;
55
+ }
56
+
18
57
  /**
19
58
  * Configuration for the Spotter sidebar.
20
59
  * Can be used in SpotterEmbed and AppEmbed.
@@ -52,6 +91,12 @@ export interface SpotterSidebarViewConfig {
52
91
  * @version SDK: 1.47.0 | ThoughtSpot: 26.4.0.cl
53
92
  */
54
93
  spotterChatDeleteLabel?: string;
94
+ /**
95
+ * Pin/unpin conversation feature config (enable + label overrides).
96
+ * Off by default in embed — hosts opt in via `enabled`.
97
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
98
+ */
99
+ spotterChatPinConfig?: SpotterChatPinConfig;
55
100
  /**
56
101
  * Custom title text for the delete conversation confirmation modal.
57
102
  * Defaults to translated "Delete chat" text.
@@ -103,6 +148,85 @@ export interface SpotterSidebarViewConfig {
103
148
  spotterAnalystsLabel?: string;
104
149
  }
105
150
 
151
+ /**
152
+ * Configuration for the Spotter conversation sharing feature.
153
+ * Can be used in SpotterEmbed and AppEmbed.
154
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
155
+ * @group Embed components
156
+ */
157
+ export interface SpotterShareConversationConfig {
158
+ /**
159
+ * Enables sharing of the conversation.
160
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
161
+ * @default false
162
+ */
163
+ enableShareConversation?: boolean;
164
+ /**
165
+ * Header Share button + sidebar Share item label.
166
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
167
+ * @default "Share"
168
+ */
169
+ spotterShareLabel?: string;
170
+ /**
171
+ * Share modal title.
172
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
173
+ */
174
+ spotterShareModalTitle?: string;
175
+ /**
176
+ * Modal confirm button label.
177
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
178
+ * @default "Share"
179
+ */
180
+ spotterShareConfirmLabel?: string;
181
+ /**
182
+ * Modal cancel button label.
183
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
184
+ * @default "Cancel"
185
+ */
186
+ spotterShareCancelLabel?: string;
187
+ /**
188
+ * "Add users or groups" label.
189
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
190
+ */
191
+ spotterShareAddUsersLabel?: string;
192
+ /**
193
+ * Empty-state title ("No users added yet").
194
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
195
+ */
196
+ spotterShareEmptyTitle?: string;
197
+ /**
198
+ * Empty-state subtitle ("Not shared with any user").
199
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
200
+ */
201
+ spotterShareEmptySubtitle?: string;
202
+ /**
203
+ * "Include new messages since last shared version" checkbox label.
204
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
205
+ */
206
+ spotterShareIncludeNewMessagesLabel?: string;
207
+ /**
208
+ * Footer note when the snapshot is current ("…up to the current moment…").
209
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
210
+ */
211
+ spotterShareUpToCurrentLabel?: string;
212
+ /**
213
+ * Stale-snapshot info banner text ("All added users and groups will receive…").
214
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
215
+ */
216
+ spotterShareStaleInfoLabel?: string;
217
+ /**
218
+ * Read-only shared-view data-access banner message.
219
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
220
+ */
221
+ spotterSharedConversationBannerMessage?: string;
222
+ /**
223
+ * Read-only shared-view Exit button label.
224
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
225
+ * @default "Exit"
226
+ */
227
+ spotterSharedConversationExitLabel?: string;
228
+ }
229
+
106
230
  /**
107
231
  * Configuration for customizing Spotter chat UI branding.
108
232
  * @version SDK: 1.46.0 | ThoughtSpot: 26.4.0.cl
@@ -158,8 +282,27 @@ export interface SpotterEmbedViewConfig extends Omit<BaseViewConfig, 'primaryAct
158
282
  /**
159
283
  * The ID of the data source object. For example, Model, View, or Table. Spotter uses
160
284
  * this object to query data and generate Answers.
285
+ * This field is optional. If not provided, Spotter loads using the
286
+ * previously selected user data source.
287
+ */
288
+ worksheetId?: string;
289
+ /**
290
+ * The array of data source GUIDs to set on load. Spotter uses
291
+ * these GUIDs to query data and generate Answers.
292
+ * dataSources is preferred over worksheetId if both are provided.
293
+ * The feature is currently behind a feature flag.
294
+ *
295
+ * Supported embed types: `SpotterEmbed`
296
+ * @example
297
+ * ```js
298
+ * const embed = new SpotterEmbed('#tsEmbed', {
299
+ * // ...other embed view config
300
+ * dataSources: ['id-2345', 'id-2345'],
301
+ * });
302
+ * ```
303
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
161
304
  */
162
- worksheetId: string;
305
+ dataSources?: string[];
163
306
  /**
164
307
  * Ability to pass a starting search query to the conversation.
165
308
  */
@@ -319,6 +462,39 @@ export interface SpotterEmbedViewConfig extends Omit<BaseViewConfig, 'primaryAct
319
462
  * ```
320
463
  */
321
464
  updatedSpotterChatPrompt?: boolean;
465
+ /**
466
+ * showSpotterRadiance : Controls the radiance on the Spotter page.
467
+ *
468
+ * Supported embed types: `SpotterEmbed`
469
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
470
+ * @default false
471
+ * @example
472
+ * ```js
473
+ * const embed = new SpotterEmbed('#tsEmbed', {
474
+ * ... //other embed view config
475
+ * showSpotterRadiance : true,
476
+ * })
477
+ * ```
478
+ */
479
+ showSpotterRadiance?: boolean;
480
+ /**
481
+ * Sets the default query mode when Spotter loads — Fast Search or
482
+ * Research Mode. Applies fresh on every new session for this embed
483
+ * instance only; it does not persist as a user preference and does
484
+ * not affect other embeds or native ThoughtSpot usage.
485
+ *
486
+ * Supported embed types: `SpotterEmbed`, `AppEmbed`
487
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
488
+ * @default SpotterQueryMode.FAST_SEARCH
489
+ * @example
490
+ * ```js
491
+ * const embed = new SpotterEmbed('#tsEmbed', {
492
+ * ... //other embed view config
493
+ * defaultQueryMode: SpotterQueryMode.RESEARCH,
494
+ * })
495
+ * ```
496
+ */
497
+ defaultQueryMode?: SpotterQueryMode;
322
498
  /**
323
499
  * Enables the stop answer generation button in the Spotter embed UI,
324
500
  * allowing users to interrupt an ongoing answer generation.
@@ -377,6 +553,59 @@ export interface SpotterEmbedViewConfig extends Omit<BaseViewConfig, 'primaryAct
377
553
  * ```
378
554
  */
379
555
  spotterChatConfig?: SpotterChatViewConfig;
556
+ /**
557
+ * Configuration for the Spotter conversation sharing feature.
558
+ *
559
+ * Supported embed types: `SpotterEmbed`, `AppEmbed`
560
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
561
+ * @example
562
+ * ```js
563
+ * const embed = new SpotterEmbed('#tsEmbed', {
564
+ * ... //other embed view config
565
+ * spotterShareConversationConfig: {
566
+ * enableShareConversation: true,
567
+ * },
568
+ * })
569
+ * ```
570
+ */
571
+ spotterShareConversationConfig?: SpotterShareConversationConfig;
572
+ /**
573
+ * The ID of a shared Spotter conversation to open directly in the read-only
574
+ * reader view. Use this to land a share recipient in the shared conversation
575
+ * when they open a host-configured `CONVERSATION_URL` share link: read the
576
+ * `{conversation-id}` from your page URL and pass it here.
577
+ *
578
+ * Requires the Spotter conversation-sharing feature to be enabled
579
+ * (`spotterShareConversationConfig.enableShareConversation`). The recipient
580
+ * must be an authorized sharee — the server returns access-denied otherwise.
581
+ *
582
+ * Supported embed types: `SpotterEmbed`
583
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
584
+ * @example
585
+ * ```js
586
+ * const convId = new URLSearchParams(window.location.search).get('conversation-id');
587
+ * const embed = new SpotterEmbed('#tsEmbed', {
588
+ * ... //other embed view config
589
+ * sharedConversationId: convId,
590
+ * })
591
+ * ```
592
+ */
593
+ sharedConversationId?: string;
594
+ /**
595
+ * updatedSpotterExperience : Controls the updated Spotter experience.
596
+ *
597
+ * Supported embed types: `SpotterEmbed`
598
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
599
+ * @default false
600
+ * @example
601
+ * ```js
602
+ * const embed = new SpotterEmbed('#tsEmbed', {
603
+ * ... //other embed view config
604
+ * updatedSpotterExperience : true,
605
+ * })
606
+ * ```
607
+ */
608
+ updatedSpotterExperience?: boolean;
380
609
  }
381
610
 
382
611
  /**
@@ -395,6 +624,7 @@ export interface ConversationViewConfig extends SpotterEmbedViewConfig {}
395
624
  export interface SpotterAppInitData extends DefaultAppInitData {
396
625
  embedParams?: {
397
626
  spotterSidebarConfig?: SpotterSidebarViewConfig;
627
+ spotterShareConversationConfig?: SpotterShareConversationConfig;
398
628
  visualOverridesParams?: VisualizationOverrides | null;
399
629
  };
400
630
  }
@@ -439,16 +669,21 @@ export class SpotterEmbed extends TsEmbed {
439
669
  */
440
670
  protected async getAppInitData(): Promise<SpotterAppInitData> {
441
671
  const defaultAppInitData = await super.getAppInitData();
442
- return buildSpotterSidebarAppInitData(defaultAppInitData, this.viewConfig, this.handleError.bind(this));
672
+ const sidebarInitData = buildSpotterSidebarAppInitData(
673
+ defaultAppInitData,
674
+ this.viewConfig,
675
+ this.handleError.bind(this),
676
+ );
677
+ return buildSpotterShareConversationAppInitData(sidebarInitData, this.viewConfig);
443
678
  }
444
679
 
445
680
  protected getEmbedParamsObject() {
446
681
  const {
447
- worksheetId,
448
682
  searchOptions,
449
683
  disableSourceSelection,
450
684
  hideSourceSelection,
451
685
  dataPanelV2,
686
+ updatedSpotterExperience,
452
687
  showSpotterLimitations,
453
688
  hideSampleQuestions,
454
689
  runtimeFilters,
@@ -456,18 +691,12 @@ export class SpotterEmbed extends TsEmbed {
456
691
  runtimeParameters,
457
692
  excludeRuntimeParametersfromURL,
458
693
  updatedSpotterChatPrompt,
694
+ showSpotterRadiance,
695
+ defaultQueryMode,
459
696
  enableStopAnswerGenerationEmbed,
460
697
  spotterChatConfig,
461
698
  } = this.viewConfig;
462
699
 
463
- if (!worksheetId) {
464
- this.handleError({
465
- errorType: ErrorDetailsTypes.VALIDATION_ERROR,
466
- message: ERROR_MESSAGE.SPOTTER_EMBED_WORKSHEED_ID_NOT_FOUND,
467
- code: EmbedErrorCodes.WORKSHEET_ID_NOT_FOUND,
468
- error: ERROR_MESSAGE.SPOTTER_EMBED_WORKSHEED_ID_NOT_FOUND,
469
- });
470
- }
471
700
  const queryParams = this.getBaseQueryParams();
472
701
  queryParams[Param.SpotterEnabled] = true;
473
702
 
@@ -478,6 +707,8 @@ export class SpotterEmbed extends TsEmbed {
478
707
  setParamIfDefined(queryParams, Param.ShowSpotterLimitations, showSpotterLimitations, true);
479
708
  setParamIfDefined(queryParams, Param.HideSampleQuestions, hideSampleQuestions, true);
480
709
  setParamIfDefined(queryParams, Param.UpdatedSpotterChatPrompt, updatedSpotterChatPrompt, true);
710
+ setParamIfDefined(queryParams, Param.ShowSpotterRadiance, showSpotterRadiance, true);
711
+ setParamIfDefined(queryParams, Param.DefaultQueryMode, defaultQueryMode);
481
712
  setParamIfDefined(queryParams, Param.EnableStopAnswerGenerationEmbed, enableStopAnswerGenerationEmbed, true);
482
713
 
483
714
  // Handle spotterChatConfig params
@@ -499,6 +730,8 @@ export class SpotterEmbed extends TsEmbed {
499
730
  }
500
731
  }
501
732
 
733
+ setParamIfDefined(queryParams, Param.UpdatedSpotterExperience, updatedSpotterExperience, true);
734
+
502
735
  return queryParams;
503
736
  }
504
737
 
@@ -510,8 +743,16 @@ export class SpotterEmbed extends TsEmbed {
510
743
  excludeRuntimeFiltersfromURL,
511
744
  runtimeParameters,
512
745
  excludeRuntimeParametersfromURL,
746
+ sharedConversationId,
747
+ dataSources,
513
748
  } = this.viewConfig;
514
- const path = 'insights/conv-assist';
749
+ // Deep-link into the read-only shared-conversation reader view when a
750
+ // shared conversation id is supplied (e.g. a recipient landing from a
751
+ // host-configured CONVERSATION_URL share link); otherwise the normal
752
+ // Spotter conversation surface.
753
+ const path = sharedConversationId
754
+ ? `insights/conv-assist/s/${encodeURIComponent(sharedConversationId)}`
755
+ : 'insights/conv-assist';
515
756
  const queryParams = this.getEmbedParamsObject();
516
757
 
517
758
  let query = '';
@@ -531,8 +772,12 @@ export class SpotterEmbed extends TsEmbed {
531
772
  }
532
773
 
533
774
  const tsPostHashParams = this.getThoughtSpotPostUrlParams({
534
- worksheet: worksheetId,
535
- query: searchOptions?.searchQuery || '',
775
+ ...(!(Array.isArray(dataSources) && dataSources.length > 0) && worksheetId
776
+ && { worksheet: worksheetId }),
777
+ ...(searchOptions?.searchQuery && { query: searchOptions.searchQuery }),
778
+ ...(Array.isArray(dataSources)
779
+ && dataSources.length > 0
780
+ && { dataSources: JSON.stringify(dataSources) }),
536
781
  });
537
782
  return `${this.getEmbedBasePath(query)}/embed/${path}${tsPostHashParams}`;
538
783
  }