@thoughtspot/visual-embed-sdk 1.50.0 → 1.51.0-test

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 (285) hide show
  1. package/cjs/package.json +1 -1
  2. package/cjs/src/config.d.ts +1 -0
  3. package/cjs/src/config.d.ts.map +1 -1
  4. package/cjs/src/config.js +2 -1
  5. package/cjs/src/config.js.map +1 -1
  6. package/cjs/src/css-variables.d.ts +122 -0
  7. package/cjs/src/css-variables.d.ts.map +1 -1
  8. package/cjs/src/embed/app.d.ts +176 -24
  9. package/cjs/src/embed/app.d.ts.map +1 -1
  10. package/cjs/src/embed/app.js +86 -38
  11. package/cjs/src/embed/app.js.map +1 -1
  12. package/cjs/src/embed/app.spec.js +672 -150
  13. package/cjs/src/embed/app.spec.js.map +1 -1
  14. package/cjs/src/embed/base.d.ts +1 -1
  15. package/cjs/src/embed/base.js +1 -1
  16. package/cjs/src/embed/conversation.d.ts +401 -2
  17. package/cjs/src/embed/conversation.d.ts.map +1 -1
  18. package/cjs/src/embed/conversation.js +32 -16
  19. package/cjs/src/embed/conversation.js.map +1 -1
  20. package/cjs/src/embed/conversation.spec.js +346 -17
  21. package/cjs/src/embed/conversation.spec.js.map +1 -1
  22. package/cjs/src/embed/events.spec.js +638 -0
  23. package/cjs/src/embed/events.spec.js.map +1 -1
  24. package/cjs/src/embed/host-events.spec.js +187 -0
  25. package/cjs/src/embed/host-events.spec.js.map +1 -1
  26. package/cjs/src/embed/hostEventClient/contracts.d.ts +51 -14
  27. package/cjs/src/embed/hostEventClient/contracts.d.ts.map +1 -1
  28. package/cjs/src/embed/hostEventClient/contracts.js +11 -1
  29. package/cjs/src/embed/hostEventClient/contracts.js.map +1 -1
  30. package/cjs/src/embed/hostEventClient/host-event-client.d.ts +2 -1
  31. package/cjs/src/embed/hostEventClient/host-event-client.d.ts.map +1 -1
  32. package/cjs/src/embed/hostEventClient/host-event-client.js +9 -0
  33. package/cjs/src/embed/hostEventClient/host-event-client.js.map +1 -1
  34. package/cjs/src/embed/hostEventClient/host-event-client.spec.js +236 -0
  35. package/cjs/src/embed/hostEventClient/host-event-client.spec.js.map +1 -1
  36. package/cjs/src/embed/hostEventClient/utils.d.ts +2 -0
  37. package/cjs/src/embed/hostEventClient/utils.d.ts.map +1 -1
  38. package/cjs/src/embed/hostEventClient/utils.js +32 -2
  39. package/cjs/src/embed/hostEventClient/utils.js.map +1 -1
  40. package/cjs/src/embed/hostEventClient/utils.spec.js +178 -0
  41. package/cjs/src/embed/hostEventClient/utils.spec.js.map +1 -1
  42. package/cjs/src/embed/liveboard.d.ts +81 -13
  43. package/cjs/src/embed/liveboard.d.ts.map +1 -1
  44. package/cjs/src/embed/liveboard.js +50 -9
  45. package/cjs/src/embed/liveboard.js.map +1 -1
  46. package/cjs/src/embed/liveboard.spec.js +432 -4
  47. package/cjs/src/embed/liveboard.spec.js.map +1 -1
  48. package/cjs/src/embed/spotter-utils.d.ts +15 -1
  49. package/cjs/src/embed/spotter-utils.d.ts.map +1 -1
  50. package/cjs/src/embed/spotter-utils.js +28 -1
  51. package/cjs/src/embed/spotter-utils.js.map +1 -1
  52. package/cjs/src/embed/spotter-utils.spec.js +129 -0
  53. package/cjs/src/embed/spotter-utils.spec.js.map +1 -1
  54. package/cjs/src/embed/spotter-viz-utils.d.ts +37 -4
  55. package/cjs/src/embed/spotter-viz-utils.d.ts.map +1 -1
  56. package/cjs/src/embed/spotter-viz-utils.js.map +1 -1
  57. package/cjs/src/embed/spotter-viz-utils.spec.js +17 -0
  58. package/cjs/src/embed/spotter-viz-utils.spec.js.map +1 -1
  59. package/cjs/src/embed/ts-embed.d.ts +16 -8
  60. package/cjs/src/embed/ts-embed.d.ts.map +1 -1
  61. package/cjs/src/embed/ts-embed.js +96 -37
  62. package/cjs/src/embed/ts-embed.js.map +1 -1
  63. package/cjs/src/embed/ts-embed.spec.js +683 -3
  64. package/cjs/src/embed/ts-embed.spec.js.map +1 -1
  65. package/cjs/src/errors.d.ts +1 -0
  66. package/cjs/src/errors.d.ts.map +1 -1
  67. package/cjs/src/errors.js +1 -0
  68. package/cjs/src/errors.js.map +1 -1
  69. package/cjs/src/index.d.ts +3 -3
  70. package/cjs/src/index.d.ts.map +1 -1
  71. package/cjs/src/index.js +4 -2
  72. package/cjs/src/index.js.map +1 -1
  73. package/cjs/src/mixpanel-service.d.ts +4 -0
  74. package/cjs/src/mixpanel-service.d.ts.map +1 -1
  75. package/cjs/src/mixpanel-service.js +4 -0
  76. package/cjs/src/mixpanel-service.js.map +1 -1
  77. package/cjs/src/react/all-types-export.d.ts +1 -1
  78. package/cjs/src/react/all-types-export.d.ts.map +1 -1
  79. package/cjs/src/react/all-types-export.js +2 -1
  80. package/cjs/src/react/all-types-export.js.map +1 -1
  81. package/cjs/src/react/all-types-export.parity.spec.d.ts +2 -0
  82. package/cjs/src/react/all-types-export.parity.spec.d.ts.map +1 -0
  83. package/cjs/src/react/all-types-export.parity.spec.js +194 -0
  84. package/cjs/src/react/all-types-export.parity.spec.js.map +1 -0
  85. package/cjs/src/react/index.d.ts +66 -32
  86. package/cjs/src/react/index.d.ts.map +1 -1
  87. package/cjs/src/react/index.js +5 -3
  88. package/cjs/src/react/index.js.map +1 -1
  89. package/cjs/src/react/index.spec.js +101 -0
  90. package/cjs/src/react/index.spec.js.map +1 -1
  91. package/cjs/src/react/util.spec.js +251 -0
  92. package/cjs/src/react/util.spec.js.map +1 -1
  93. package/cjs/src/types.d.ts +902 -28
  94. package/cjs/src/types.d.ts.map +1 -1
  95. package/cjs/src/types.js +701 -14
  96. package/cjs/src/types.js.map +1 -1
  97. package/cjs/src/utils/processData.spec.js +93 -0
  98. package/cjs/src/utils/processData.spec.js.map +1 -1
  99. package/cjs/src/utils/processTrigger.spec.js +61 -0
  100. package/cjs/src/utils/processTrigger.spec.js.map +1 -1
  101. package/cjs/src/utils.spec.js +4 -0
  102. package/cjs/src/utils.spec.js.map +1 -1
  103. package/dist/{index-B5xoN6Cp.js → index-Bivg-mDx.js} +1 -1
  104. package/dist/src/config.d.ts +1 -0
  105. package/dist/src/config.d.ts.map +1 -1
  106. package/dist/src/css-variables.d.ts +122 -0
  107. package/dist/src/css-variables.d.ts.map +1 -1
  108. package/dist/src/embed/app.d.ts +176 -24
  109. package/dist/src/embed/app.d.ts.map +1 -1
  110. package/dist/src/embed/base.d.ts +1 -1
  111. package/dist/src/embed/conversation.d.ts +401 -2
  112. package/dist/src/embed/conversation.d.ts.map +1 -1
  113. package/dist/src/embed/hostEventClient/contracts.d.ts +51 -14
  114. package/dist/src/embed/hostEventClient/contracts.d.ts.map +1 -1
  115. package/dist/src/embed/hostEventClient/host-event-client.d.ts +2 -1
  116. package/dist/src/embed/hostEventClient/host-event-client.d.ts.map +1 -1
  117. package/dist/src/embed/hostEventClient/utils.d.ts +2 -0
  118. package/dist/src/embed/hostEventClient/utils.d.ts.map +1 -1
  119. package/dist/src/embed/liveboard.d.ts +81 -13
  120. package/dist/src/embed/liveboard.d.ts.map +1 -1
  121. package/dist/src/embed/spotter-utils.d.ts +15 -1
  122. package/dist/src/embed/spotter-utils.d.ts.map +1 -1
  123. package/dist/src/embed/spotter-viz-utils.d.ts +37 -4
  124. package/dist/src/embed/spotter-viz-utils.d.ts.map +1 -1
  125. package/dist/src/embed/ts-embed.d.ts +16 -8
  126. package/dist/src/embed/ts-embed.d.ts.map +1 -1
  127. package/dist/src/errors.d.ts +1 -0
  128. package/dist/src/errors.d.ts.map +1 -1
  129. package/dist/src/index.d.ts +3 -3
  130. package/dist/src/index.d.ts.map +1 -1
  131. package/dist/src/mixpanel-service.d.ts +4 -0
  132. package/dist/src/mixpanel-service.d.ts.map +1 -1
  133. package/dist/src/react/all-types-export.d.ts +1 -1
  134. package/dist/src/react/all-types-export.d.ts.map +1 -1
  135. package/dist/src/react/all-types-export.parity.spec.d.ts +2 -0
  136. package/dist/src/react/all-types-export.parity.spec.d.ts.map +1 -0
  137. package/dist/src/react/index.d.ts +66 -32
  138. package/dist/src/react/index.d.ts.map +1 -1
  139. package/dist/src/types.d.ts +902 -28
  140. package/dist/src/types.d.ts.map +1 -1
  141. package/dist/tsembed-react.es.js +1269 -206
  142. package/dist/tsembed-react.js +1268 -205
  143. package/dist/tsembed.es.js +1364 -304
  144. package/dist/tsembed.js +1362 -302
  145. package/dist/visual-embed-sdk-react-full.d.ts +1867 -157
  146. package/dist/visual-embed-sdk-react.d.ts +1872 -161
  147. package/dist/visual-embed-sdk.d.ts +1815 -127
  148. package/lib/package.json +1 -1
  149. package/lib/src/config.d.ts +1 -0
  150. package/lib/src/config.d.ts.map +1 -1
  151. package/lib/src/config.js +1 -0
  152. package/lib/src/config.js.map +1 -1
  153. package/lib/src/css-variables.d.ts +122 -0
  154. package/lib/src/css-variables.d.ts.map +1 -1
  155. package/lib/src/embed/app.d.ts +176 -24
  156. package/lib/src/embed/app.d.ts.map +1 -1
  157. package/lib/src/embed/app.js +87 -39
  158. package/lib/src/embed/app.js.map +1 -1
  159. package/lib/src/embed/app.spec.js +673 -151
  160. package/lib/src/embed/app.spec.js.map +1 -1
  161. package/lib/src/embed/base.d.ts +1 -1
  162. package/lib/src/embed/base.js +1 -1
  163. package/lib/src/embed/conversation.d.ts +401 -2
  164. package/lib/src/embed/conversation.d.ts.map +1 -1
  165. package/lib/src/embed/conversation.js +33 -17
  166. package/lib/src/embed/conversation.js.map +1 -1
  167. package/lib/src/embed/conversation.spec.js +347 -18
  168. package/lib/src/embed/conversation.spec.js.map +1 -1
  169. package/lib/src/embed/events.spec.js +638 -0
  170. package/lib/src/embed/events.spec.js.map +1 -1
  171. package/lib/src/embed/host-events.spec.js +188 -1
  172. package/lib/src/embed/host-events.spec.js.map +1 -1
  173. package/lib/src/embed/hostEventClient/contracts.d.ts +51 -14
  174. package/lib/src/embed/hostEventClient/contracts.d.ts.map +1 -1
  175. package/lib/src/embed/hostEventClient/contracts.js +10 -0
  176. package/lib/src/embed/hostEventClient/contracts.js.map +1 -1
  177. package/lib/src/embed/hostEventClient/host-event-client.d.ts +2 -1
  178. package/lib/src/embed/hostEventClient/host-event-client.d.ts.map +1 -1
  179. package/lib/src/embed/hostEventClient/host-event-client.js +10 -1
  180. package/lib/src/embed/hostEventClient/host-event-client.js.map +1 -1
  181. package/lib/src/embed/hostEventClient/host-event-client.spec.js +236 -0
  182. package/lib/src/embed/hostEventClient/host-event-client.spec.js.map +1 -1
  183. package/lib/src/embed/hostEventClient/utils.d.ts +2 -0
  184. package/lib/src/embed/hostEventClient/utils.d.ts.map +1 -1
  185. package/lib/src/embed/hostEventClient/utils.js +28 -1
  186. package/lib/src/embed/hostEventClient/utils.js.map +1 -1
  187. package/lib/src/embed/hostEventClient/utils.spec.js +179 -1
  188. package/lib/src/embed/hostEventClient/utils.spec.js.map +1 -1
  189. package/lib/src/embed/liveboard.d.ts +81 -13
  190. package/lib/src/embed/liveboard.d.ts.map +1 -1
  191. package/lib/src/embed/liveboard.js +50 -9
  192. package/lib/src/embed/liveboard.js.map +1 -1
  193. package/lib/src/embed/liveboard.spec.js +432 -4
  194. package/lib/src/embed/liveboard.spec.js.map +1 -1
  195. package/lib/src/embed/spotter-utils.d.ts +15 -1
  196. package/lib/src/embed/spotter-utils.d.ts.map +1 -1
  197. package/lib/src/embed/spotter-utils.js +25 -0
  198. package/lib/src/embed/spotter-utils.js.map +1 -1
  199. package/lib/src/embed/spotter-utils.spec.js +130 -1
  200. package/lib/src/embed/spotter-utils.spec.js.map +1 -1
  201. package/lib/src/embed/spotter-viz-utils.d.ts +37 -4
  202. package/lib/src/embed/spotter-viz-utils.d.ts.map +1 -1
  203. package/lib/src/embed/spotter-viz-utils.js.map +1 -1
  204. package/lib/src/embed/spotter-viz-utils.spec.js +17 -0
  205. package/lib/src/embed/spotter-viz-utils.spec.js.map +1 -1
  206. package/lib/src/embed/ts-embed.d.ts +16 -8
  207. package/lib/src/embed/ts-embed.d.ts.map +1 -1
  208. package/lib/src/embed/ts-embed.js +96 -37
  209. package/lib/src/embed/ts-embed.js.map +1 -1
  210. package/lib/src/embed/ts-embed.spec.js +683 -3
  211. package/lib/src/embed/ts-embed.spec.js.map +1 -1
  212. package/lib/src/errors.d.ts +1 -0
  213. package/lib/src/errors.d.ts.map +1 -1
  214. package/lib/src/errors.js +1 -0
  215. package/lib/src/errors.js.map +1 -1
  216. package/lib/src/index.d.ts +3 -3
  217. package/lib/src/index.d.ts.map +1 -1
  218. package/lib/src/index.js +3 -3
  219. package/lib/src/index.js.map +1 -1
  220. package/lib/src/mixpanel-service.d.ts +4 -0
  221. package/lib/src/mixpanel-service.d.ts.map +1 -1
  222. package/lib/src/mixpanel-service.js +4 -0
  223. package/lib/src/mixpanel-service.js.map +1 -1
  224. package/lib/src/react/all-types-export.d.ts +1 -1
  225. package/lib/src/react/all-types-export.d.ts.map +1 -1
  226. package/lib/src/react/all-types-export.js +1 -1
  227. package/lib/src/react/all-types-export.js.map +1 -1
  228. package/lib/src/react/all-types-export.parity.spec.d.ts +2 -0
  229. package/lib/src/react/all-types-export.parity.spec.d.ts.map +1 -0
  230. package/lib/src/react/all-types-export.parity.spec.js +191 -0
  231. package/lib/src/react/all-types-export.parity.spec.js.map +1 -0
  232. package/lib/src/react/index.d.ts +66 -32
  233. package/lib/src/react/index.d.ts.map +1 -1
  234. package/lib/src/react/index.js +5 -3
  235. package/lib/src/react/index.js.map +1 -1
  236. package/lib/src/react/index.spec.js +102 -1
  237. package/lib/src/react/index.spec.js.map +1 -1
  238. package/lib/src/react/util.spec.js +251 -0
  239. package/lib/src/react/util.spec.js.map +1 -1
  240. package/lib/src/types.d.ts +902 -28
  241. package/lib/src/types.d.ts.map +1 -1
  242. package/lib/src/types.js +701 -14
  243. package/lib/src/types.js.map +1 -1
  244. package/lib/src/utils/processData.spec.js +93 -0
  245. package/lib/src/utils/processData.spec.js.map +1 -1
  246. package/lib/src/utils/processTrigger.spec.js +61 -0
  247. package/lib/src/utils/processTrigger.spec.js.map +1 -1
  248. package/lib/src/utils.spec.js +4 -0
  249. package/lib/src/utils.spec.js.map +1 -1
  250. package/lib/src/visual-embed-sdk.d.ts +1815 -127
  251. package/package.json +1 -1
  252. package/src/config.ts +1 -0
  253. package/src/css-variables.ts +150 -0
  254. package/src/embed/app.spec.ts +877 -196
  255. package/src/embed/app.ts +276 -75
  256. package/src/embed/base.ts +1 -1
  257. package/src/embed/conversation.spec.ts +411 -21
  258. package/src/embed/conversation.ts +441 -18
  259. package/src/embed/events.spec.ts +761 -1
  260. package/src/embed/host-events.spec.ts +242 -0
  261. package/src/embed/hostEventClient/contracts.ts +57 -14
  262. package/src/embed/hostEventClient/host-event-client.spec.ts +372 -0
  263. package/src/embed/hostEventClient/host-event-client.ts +18 -2
  264. package/src/embed/hostEventClient/utils.spec.ts +204 -0
  265. package/src/embed/hostEventClient/utils.ts +37 -10
  266. package/src/embed/liveboard.spec.ts +565 -4
  267. package/src/embed/liveboard.ts +155 -28
  268. package/src/embed/spotter-utils.spec.ts +140 -1
  269. package/src/embed/spotter-utils.ts +36 -1
  270. package/src/embed/spotter-viz-utils.spec.ts +17 -0
  271. package/src/embed/spotter-viz-utils.ts +37 -4
  272. package/src/embed/ts-embed.spec.ts +885 -3
  273. package/src/embed/ts-embed.ts +111 -39
  274. package/src/errors.ts +1 -0
  275. package/src/index.ts +45 -2
  276. package/src/mixpanel-service.ts +4 -0
  277. package/src/react/all-types-export.parity.spec.ts +208 -0
  278. package/src/react/all-types-export.ts +22 -0
  279. package/src/react/index.spec.tsx +158 -0
  280. package/src/react/index.tsx +70 -33
  281. package/src/react/util.spec.tsx +255 -0
  282. package/src/types.ts +904 -24
  283. package/src/utils/processData.spec.ts +97 -0
  284. package/src/utils/processTrigger.spec.ts +91 -0
  285. package/src/utils.spec.ts +5 -0
@@ -1,4 +1,4 @@
1
- /* @thoughtspot/visual-embed-sdk version 1.50.0 */
1
+ /* @thoughtspot/visual-embed-sdk version 1.51.0-test */
2
2
  'use client';
3
3
  function _mergeNamespaces(n, m) {
4
4
  m.forEach(function (e) {
@@ -189,7 +189,9 @@ var AuthType;
189
189
  })(AuthType || (AuthType = {}));
190
190
  /**
191
191
  *
192
- * **Note**: This attribute is not supported in the classic (V1) homepage experience.
192
+ * **Note**: The classic (V1) and Modular (V2) home page experiences are
193
+ * deprecated. This attribute applies to V3 (ModularWithStylingChanges) and
194
+ * V4 (Focused) home page experiences.
193
195
  *
194
196
  */
195
197
  var HomeLeftNavItem;
@@ -257,6 +259,13 @@ var HomeLeftNavItem;
257
259
  * @version SDK: 1.41.0 | ThoughtSpot: 10.12.0.cl
258
260
  */
259
261
  HomeLeftNavItem["Favorites"] = "favorites";
262
+ /**
263
+ * The *Collections* menu option in
264
+ * the *Insights* left navigation panel.
265
+ * Shown when collections are enabled on the cluster.
266
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
267
+ */
268
+ HomeLeftNavItem["Collections"] = "collections";
260
269
  })(HomeLeftNavItem || (HomeLeftNavItem = {}));
261
270
  /**
262
271
  * A map of the supported runtime filter operations
@@ -329,7 +338,9 @@ var RuntimeFilterOp;
329
338
  * via `hiddenHomepageModules` and reordered via
330
339
  * `reorderedHomepageModules`.
331
340
  *
332
- * **Note**: This option is not supported in the classic (v1) experience.
341
+ * **Note**: The classic (V1) and Modular (V2) home page experiences are
342
+ * deprecated. These modules apply to V3 (ModularWithStylingChanges) and
343
+ * V4 (Focused) home page experiences.
333
344
  * @version SDK: 1.28.0 | ThoughtSpot: 9.12.5.cl, 10.1.0.sw
334
345
  */
335
346
  var HomepageModule;
@@ -507,7 +518,7 @@ var EmbedEvent;
507
518
  * @returns nonFilteredColumns - The columns that were not filtered
508
519
  * @example
509
520
  * ```js
510
- * searchEmbed.on(EmbedEvent.DrillDown, {
521
+ * searchEmbed.on(EmbedEvent.Drilldown, {
511
522
  * points: {
512
523
  * clickedPoint,
513
524
  * selectedPoints: selectedPoint
@@ -568,7 +579,7 @@ var EmbedEvent;
568
579
  * @version SDK: 1.1.0 | ThoughtSpot: ts7.may.cl, 8.4.1.sw
569
580
  * @example
570
581
  * ```js
571
- * appEmbed.on(EmbedEvent.customAction, payload => {
582
+ * appEmbed.on(EmbedEvent.CustomAction, payload => {
572
583
  * const data = payload.data;
573
584
  * if (data.id === 'insert Custom Action ID here') {
574
585
  * console.log('Custom Action event:', data.embedAnswerData);
@@ -834,8 +845,8 @@ var EmbedEvent;
834
845
  *
835
846
  * **Note**: This event is deprecated in v1.21.0.
836
847
  * To fire an event when a download action is initiated on a chart or table,
837
- * use `EmbedEvent.DownloadAsPng`, `EmbedEvent.DownloadAsPDF`,
838
- * `EmbedEvent.DownloadAsCSV`, or `EmbedEvent.DownloadAsXLSX`
848
+ * use `EmbedEvent.DownloadAsPng`, `EmbedEvent.DownloadAsPdf`,
849
+ * `EmbedEvent.DownloadAsCsv`, or `EmbedEvent.DownloadAsXlsx`
839
850
  * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw
840
851
  * @example
841
852
  * ```js
@@ -885,10 +896,10 @@ var EmbedEvent;
885
896
  * @example
886
897
  * ```js
887
898
  * //emit when action starts
888
- * searchEmbed.on(EmbedEvent.DownloadAsCSV, payload => {
899
+ * searchEmbed.on(EmbedEvent.DownloadAsCsv, payload => {
889
900
  * console.log('download CSV', payload)}, {start: true })
890
901
  * //emit when action ends
891
- * searchEmbed.on(EmbedEvent.DownloadAsCSV, payload => {
902
+ * searchEmbed.on(EmbedEvent.DownloadAsCsv, payload => {
892
903
  * console.log('download CSV', payload)})
893
904
  * ```
894
905
  */
@@ -1287,11 +1298,19 @@ var EmbedEvent;
1287
1298
  * Emitted when a user changes any filter on a Liveboard.
1288
1299
  * Returns filter type and name, column name and ID, and runtime
1289
1300
  * filter details.
1301
+ * The payload includes an optional `applicability` attribute indicating the
1302
+ * scope of the changed filter. It contains a `level` (`LIVEBOARD`,
1303
+ * `TAB`, or `GROUP`) and, when `level` is `TAB` or `GROUP`, a
1304
+ * `targetId` with the GUID of the target. At `LIVEBOARD` level there
1305
+ * is no `targetId`, since the filter applies to the whole Liveboard.
1306
+ * The `applicability` attribute is available from SDK: 1.53.0 |
1307
+ * ThoughtSpot: 26.10.0.cl.
1290
1308
  * @example
1291
1309
  *
1292
1310
  * ```js
1293
1311
  * LiveboardEmbed.on(EmbedEvent.FilterChanged, (payload) => {
1294
1312
  * console.log('payload', payload);
1313
+ * // payload.data optionally includes applicability: { level, targetId }
1295
1314
  * })
1296
1315
  * ```
1297
1316
  * @version SDK: 1.23.0 | ThoughtSpot: 9.4.0.cl, 9.5.0.sw
@@ -1483,9 +1502,17 @@ var EmbedEvent;
1483
1502
  /**
1484
1503
  * Emitted when parameter changes in an Answer
1485
1504
  * or Liveboard.
1505
+ * The payload includes an optional `applicability` attribute indicating the
1506
+ * scope of the changed parameter. It contains a `level` (`LIVEBOARD`,
1507
+ * `TAB`, or `GROUP`) and, when `level` is `TAB` or `GROUP`, a
1508
+ * `targetId` with the GUID of the target. At `LIVEBOARD` level there
1509
+ * is no `targetId`, since the parameter applies to the whole Liveboard.
1510
+ * The `applicability` attribute is available from SDK: 1.53.0 |
1511
+ * ThoughtSpot: 26.10.0.cl.
1486
1512
  * ```js
1487
1513
  * liveboardEmbed.on(EmbedEvent.ParameterChanged, (payload) => {
1488
1514
  * console.log('payload', payload);
1515
+ * // payload.data optionally includes applicability: { level, targetId }
1489
1516
  * })
1490
1517
  * ```
1491
1518
  * @version SDK: 1.29.0 | ThoughtSpot: 10.3.0.cl
@@ -1787,6 +1814,158 @@ var EmbedEvent;
1787
1814
  * @version SDK: 1.46.0 | ThoughtSpot: 26.3.0.cl
1788
1815
  */
1789
1816
  EmbedEvent["SpotterConversationDeleted"] = "spotterConversationDeleted";
1817
+ /**
1818
+ * Emitted when the header Share button is clicked. Fires `Start` then `End`
1819
+ * to bracket the interaction. App→host counterpart of the
1820
+ * `ShareSpotterConversation` host event (user-driven vs programmatic open).
1821
+ * @example
1822
+ * ```js
1823
+ * spotterEmbed.on(EmbedEvent.SpotterShareConversationButtonHeaderClicked, (payload) => {
1824
+ * // payload: { convId: string }
1825
+ * })
1826
+ * ```
1827
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
1828
+ */
1829
+ EmbedEvent["SpotterShareConversationButtonHeaderClicked"] = "spotterShareConversationButtonHeaderClicked";
1830
+ /**
1831
+ * Emitted when the sidebar Share item is clicked. Fires `Start` then `End`
1832
+ * to bracket the interaction.
1833
+ * @example
1834
+ * ```js
1835
+ * spotterEmbed.on(EmbedEvent.SpotterShareConversationMenuItemSidebarClicked, (payload) => {
1836
+ * // payload: { convId: string }
1837
+ * })
1838
+ * ```
1839
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
1840
+ */
1841
+ EmbedEvent["SpotterShareConversationMenuItemSidebarClicked"] = "spotterShareConversationMenuItemSidebarClicked";
1842
+ /**
1843
+ * Emitted when a Spotter conversation is shared (recipients added, or a new
1844
+ * share created). The host builds its own link from shareId/convId + its
1845
+ * configured CONVERSATION_URL — no link string is sent. Distinct from
1846
+ * `SpotterShareModalConfirmButtonClicked`, which fires at click time before
1847
+ * the save resolves.
1848
+ * @example
1849
+ * ```js
1850
+ * spotterEmbed.on(EmbedEvent.SpotterConversationShared, (payload) => {
1851
+ * // payload: { convId: string, shareId: string,
1852
+ * // recipientsAdded: string[], recipientsRemoved: string[] }
1853
+ * })
1854
+ * ```
1855
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
1856
+ */
1857
+ EmbedEvent["SpotterConversationShared"] = "spotterConversationShared";
1858
+ /**
1859
+ * Emitted when access to a shared Spotter conversation is revoked
1860
+ * (recipients removed). `fullyRevoked` is true when the last sharee is removed
1861
+ * and the share is deleted entirely.
1862
+ * @example
1863
+ * ```js
1864
+ * spotterEmbed.on(EmbedEvent.SpotterConversationShareRevoked, (payload) => {
1865
+ * // payload: { convId: string, shareId: string,
1866
+ * // recipientsRemoved: string[], fullyRevoked: boolean }
1867
+ * })
1868
+ * ```
1869
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
1870
+ */
1871
+ EmbedEvent["SpotterConversationShareRevoked"] = "spotterConversationShareRevoked";
1872
+ /**
1873
+ * Emitted when a recipient opens a shared Spotter conversation (read-only
1874
+ * view). No shareId available viewer-side.
1875
+ * @example
1876
+ * ```js
1877
+ * spotterEmbed.on(EmbedEvent.SpotterSharedConversationViewed, (payload) => {
1878
+ * // payload: { convId: string, sourceConvId: string }
1879
+ * // convId = resolved snapshot conv id; sourceConvId = the shared URL id
1880
+ * })
1881
+ * ```
1882
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
1883
+ */
1884
+ EmbedEvent["SpotterSharedConversationViewed"] = "spotterSharedConversationViewed";
1885
+ /**
1886
+ * Emitted when the user toggles the share-modal "include new messages since
1887
+ * last shared version" checkbox.
1888
+ * @example
1889
+ * ```js
1890
+ * spotterEmbed.on(EmbedEvent.SpotterShareIncludeNewMessagesCheckboxToggled, (payload) => {
1891
+ * // payload: { convId: string, includeNewMessages: boolean }
1892
+ * })
1893
+ * ```
1894
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
1895
+ */
1896
+ EmbedEvent["SpotterShareIncludeNewMessagesCheckboxToggled"] = "spotterShareIncludeNewMessagesCheckboxToggled";
1897
+ /**
1898
+ * Emitted when the user dismisses the stale-snapshot info banner via its
1899
+ * cross (distinct from the include-new-messages checkbox toggle).
1900
+ * @example
1901
+ * ```js
1902
+ * spotterEmbed.on(EmbedEvent.SpotterShareStaleInfoBannerDismissed, (payload) => {
1903
+ * // payload: { convId: string }
1904
+ * })
1905
+ * ```
1906
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
1907
+ */
1908
+ EmbedEvent["SpotterShareStaleInfoBannerDismissed"] = "spotterShareStaleInfoBannerDismissed";
1909
+ /**
1910
+ * Emitted when the modal Share (confirm) button is clicked — fires at click
1911
+ * time, before the save resolves. Distinct from the `SpotterConversationShared`
1912
+ * / `SpotterConversationShareRevoked` result events.
1913
+ * @example
1914
+ * ```js
1915
+ * spotterEmbed.on(EmbedEvent.SpotterShareModalConfirmButtonClicked, (payload) => {
1916
+ * // payload: { convId: string }
1917
+ * })
1918
+ * ```
1919
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
1920
+ */
1921
+ EmbedEvent["SpotterShareModalConfirmButtonClicked"] = "spotterShareModalConfirmButtonClicked";
1922
+ /**
1923
+ * Emitted when the share modal is dismissed via the Cancel button.
1924
+ * @example
1925
+ * ```js
1926
+ * spotterEmbed.on(EmbedEvent.SpotterShareModalCancelButtonClicked, (payload) => {
1927
+ * // payload: { convId: string }
1928
+ * })
1929
+ * ```
1930
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
1931
+ */
1932
+ EmbedEvent["SpotterShareModalCancelButtonClicked"] = "spotterShareModalCancelButtonClicked";
1933
+ /**
1934
+ * Emitted when a recipient leaves the read-only shared view via the Exit
1935
+ * button.
1936
+ * @example
1937
+ * ```js
1938
+ * spotterEmbed.on(EmbedEvent.SpotterSharedConversationExitButtonClicked, (payload) => {
1939
+ * // payload: { convId: string }
1940
+ * })
1941
+ * ```
1942
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
1943
+ */
1944
+ EmbedEvent["SpotterSharedConversationExitButtonClicked"] = "spotterSharedConversationExitButtonClicked";
1945
+ /**
1946
+ * Emitted when a Spotter conversation is pinned.
1947
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
1948
+ * @example
1949
+ * ```js
1950
+ * spotterEmbed.on(EmbedEvent.SpotterConversationPinned, (payload) => {
1951
+ * console.log('Conversation pinned', payload);
1952
+ * // payload: { conversationId: string, pinnedAt: string (ISO 8601) }
1953
+ * })
1954
+ * ```
1955
+ */
1956
+ EmbedEvent["SpotterConversationPinned"] = "spotterConversationPinned";
1957
+ /**
1958
+ * Emitted when a Spotter conversation is unpinned.
1959
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
1960
+ * @example
1961
+ * ```js
1962
+ * spotterEmbed.on(EmbedEvent.SpotterConversationUnpinned, (payload) => {
1963
+ * console.log('Conversation unpinned', payload);
1964
+ * // payload: { conversationId: string, unpinnedAt: string (ISO 8601) }
1965
+ * })
1966
+ * ```
1967
+ */
1968
+ EmbedEvent["SpotterConversationUnpinned"] = "spotterConversationUnpinned";
1790
1969
  /**
1791
1970
  * Emitted when a Spotter conversation is selected/clicked.
1792
1971
  * @example
@@ -1799,6 +1978,30 @@ var EmbedEvent;
1799
1978
  * @version SDK: 1.46.0 | ThoughtSpot: 26.3.0.cl
1800
1979
  */
1801
1980
  EmbedEvent["SpotterConversationSelected"] = "spotterConversationSelected";
1981
+ /**
1982
+ * Emitted when the Spotter agent finishes streaming/rendering a response.
1983
+ * Includes the conversation and message identifiers so the host app can
1984
+ * fetch the full conversation history via the REST API if needed.
1985
+ *
1986
+ * The payload data has the shape `{ convId: string, messageId: string }`.
1987
+ *
1988
+ * Works with SpotterEmbed as well as AppEmbed (when Spotter is reached
1989
+ * inside the full application).
1990
+ * @example
1991
+ * ```js
1992
+ * spotterEmbed.on(EmbedEvent.SpotterResponseComplete, (payload) => {
1993
+ * console.log('Spotter response complete', payload);
1994
+ * })
1995
+ * ```
1996
+ * @example
1997
+ * ```js
1998
+ * appEmbed.on(EmbedEvent.SpotterResponseComplete, (payload) => {
1999
+ * console.log('Spotter response complete', payload);
2000
+ * })
2001
+ * ```
2002
+ * @version SDK: 1.51.0 | ThoughtSpot Cloud: 26.9.0.cl
2003
+ */
2004
+ EmbedEvent["SpotterResponseComplete"] = "spotterResponseComplete";
1802
2005
  /**
1803
2006
  * @hidden
1804
2007
  * Emitted when the auth token is about to get expired and needs to be refreshed.
@@ -2153,6 +2356,7 @@ var HostEvent;
2153
2356
  * const url = await appEmbed.trigger(HostEvent.GetIframeUrl, {}, ContextType.Answer);
2154
2357
  * console.log("iFrameURL", url);
2155
2358
  * ```
2359
+ * @returns iframeUrl - The URL currently loaded in the embedded iframe.
2156
2360
  * @version SDK: 1.35.0 | ThoughtSpot: 10.4.0.cl
2157
2361
  */
2158
2362
  HostEvent["GetIframeUrl"] = "GetIframeUrl";
@@ -2279,6 +2483,17 @@ var HostEvent;
2279
2483
  * name: string,
2280
2484
  * type: ATTRIBUTE/MEASURE,
2281
2485
  * dataType: INT64/CHAR/DATE }
2486
+ *
2487
+ * `applicability` - Optional. Scopes the filter to a specific target,
2488
+ * for example, a single Liveboard tab, so the panel for the correct
2489
+ * scoped filter is opened. Available from SDK: 1.53.0 |
2490
+ * ThoughtSpot: 26.10.0.cl. Includes the following attributes:
2491
+ *
2492
+ * - `level`: The scope of the filter: `LIVEBOARD`, `TAB`, or `GROUP`.
2493
+ * - `targetId`: The GUID of the target, for example, the tab GUID.
2494
+ * Required when `level` is `TAB` or `GROUP`. Do not pass it when
2495
+ * `level` is `LIVEBOARD`, since the filter applies to the whole
2496
+ * Liveboard. Omitting `applicability` targets the `LIVEBOARD` level.
2282
2497
  * @example
2283
2498
  * ```js
2284
2499
  * searchEmbed.trigger(HostEvent.OpenFilter,
@@ -2291,6 +2506,14 @@ var HostEvent;
2291
2506
  * ```
2292
2507
  * @example
2293
2508
  * ```js
2509
+ * // Open a filter scoped to a specific Liveboard tab
2510
+ * liveboardEmbed.trigger(HostEvent.OpenFilter, {
2511
+ * column: { columnId: '<column-GUID>' },
2512
+ * applicability: { level: 'TAB', targetId: '<tab-GUID>' }
2513
+ * });
2514
+ * ```
2515
+ * @example
2516
+ * ```js
2294
2517
  * // Open filter from search context
2295
2518
  * import { ContextType } from '@thoughtspot/visual-embed-sdk';
2296
2519
  * searchEmbed.trigger(HostEvent.OpenFilter, {
@@ -2300,6 +2523,73 @@ var HostEvent;
2300
2523
  * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl
2301
2524
  */
2302
2525
  HostEvent["OpenFilter"] = "openFilter";
2526
+ /**
2527
+ * Open the add-filter modal of a Liveboard, the same dialog that the
2528
+ * *Add filter* button in the Liveboard edit header opens, so the host
2529
+ * app can start the add-filter flow from its own UI.
2530
+ *
2531
+ * The Liveboard must be in edit mode; the event is ignored otherwise.
2532
+ * Hiding the *Add filter* button with `hiddenActions:
2533
+ * [Action.AddFilter]` does not block this event, but disabling it with
2534
+ * `disabledActions` does.
2535
+ *
2536
+ * Unlike {@link HostEvent.OpenFilter}, which opens the panel of an
2537
+ * existing filter, this event starts the creation of a new filter.
2538
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
2539
+ * @example
2540
+ * ```js
2541
+ * liveboardEmbed.trigger(HostEvent.OpenAddFilterModal);
2542
+ * ```
2543
+ */
2544
+ HostEvent["OpenAddFilterModal"] = "openAddFilterModal";
2545
+ /**
2546
+ * Open the add-parameter panel of a Liveboard, the same panel that the
2547
+ * *Add parameter* button in the Liveboard edit header opens.
2548
+ * Mirrors {@link HostEvent.OpenAddFilterModal} for parameters.
2549
+ *
2550
+ * The Liveboard must be in edit mode; the event is ignored otherwise.
2551
+ * Hiding the *Add parameter* button with `hiddenActions:
2552
+ * [Action.AddParameter]` does not block this event, but disabling it
2553
+ * with `disabledActions` does.
2554
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
2555
+ * @example
2556
+ * ```js
2557
+ * liveboardEmbed.trigger(HostEvent.OpenAddParameterModal);
2558
+ * ```
2559
+ */
2560
+ HostEvent["OpenAddParameterModal"] = "openAddParameterModal";
2561
+ /**
2562
+ * Open the parameter panel for a particular parameter on a Liveboard.
2563
+ * Mirrors {@link HostEvent.OpenFilter} for parameters.
2564
+ * @param - Includes the following keys:
2565
+ * - `parameter`: An object identifying the parameter to open, for
2566
+ * example, `{ parameterId: '<parameter-GUID>' }`.
2567
+ * - `applicability`: Optional. Scopes the parameter to a specific target,
2568
+ * for example, a single Liveboard tab, so the panel for the correct
2569
+ * scoped parameter is opened. Includes the following attributes:
2570
+ *
2571
+ * - `level`: The scope of the parameter: `LIVEBOARD`, `TAB`, or `GROUP`.
2572
+ * - `targetId`: The GUID of the target, for example, the tab GUID.
2573
+ * Required when `level` is `TAB` or `GROUP`. Do not pass it when
2574
+ * `level` is `LIVEBOARD`, since the parameter applies to the whole
2575
+ * Liveboard. Omitting `applicability` targets the `LIVEBOARD` level.
2576
+ * @example
2577
+ * ```js
2578
+ * liveboardEmbed.trigger(HostEvent.OpenParameter, {
2579
+ * parameter: { parameterId: '<parameter-GUID>' }
2580
+ * });
2581
+ * ```
2582
+ * @example
2583
+ * ```js
2584
+ * // Open a parameter scoped to a specific group
2585
+ * liveboardEmbed.trigger(HostEvent.OpenParameter, {
2586
+ * parameter: { parameterId: '<parameter-GUID>' },
2587
+ * applicability: { level: 'GROUP', targetId: '<group-GUID>' }
2588
+ * });
2589
+ * ```
2590
+ * @version SDK: 1.53.0 | ThoughtSpot: 26.10.0.cl
2591
+ */
2592
+ HostEvent["OpenParameter"] = "openParameter";
2303
2593
  /**
2304
2594
  * Add columns to the current search query.
2305
2595
  * @param - { columnIds: string[] }
@@ -2349,6 +2639,10 @@ var HostEvent;
2349
2639
  * liveboardEmbed.trigger(HostEvent.getExportRequestForCurrentPinboard).then(
2350
2640
  * data=>console.log(data))
2351
2641
  * ```
2642
+ * @returns data - Object with a `v2Content` string: the export request
2643
+ * payload for the current Liveboard.
2644
+ * @returns type - The passthrough event name,
2645
+ * `getExportRequestForCurrentPinboard`.
2352
2646
  * @version SDK: 1.13.0 | ThoughtSpot: 8.5.0.cl, 8.8.1.sw
2353
2647
  */
2354
2648
  HostEvent["getExportRequestForCurrentPinboard"] = "getExportRequestForCurrentPinboard";
@@ -2451,6 +2745,9 @@ var HostEvent;
2451
2745
  * }, ContextType.Spotter);
2452
2746
  * ```
2453
2747
  *
2748
+ * @returns liveboardId - GUID of the Liveboard the Answer was pinned to.
2749
+ * @returns tabId - GUID of the tab within that Liveboard.
2750
+ * @returns vizId - GUID of the newly created visualization.
2454
2751
  * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw
2455
2752
  */
2456
2753
  HostEvent["Pin"] = "pin";
@@ -2489,13 +2786,13 @@ var HostEvent;
2489
2786
  * Trigger the **Manage schedule** action on an embedded Liveboard
2490
2787
  * @example
2491
2788
  * ```js
2492
- * liveboardEmbed.trigger(HostEvent.ScheduleList)
2789
+ * liveboardEmbed.trigger(HostEvent.SchedulesList)
2493
2790
  * ```
2494
2791
  * @example
2495
2792
  * ```js
2496
2793
  * // Manage schedules from liveboard context
2497
2794
  * import { ContextType } from '@thoughtspot/visual-embed-sdk';
2498
- * liveboardEmbed.trigger(HostEvent.ScheduleList, {}, ContextType.Liveboard);
2795
+ * liveboardEmbed.trigger(HostEvent.SchedulesList, {}, ContextType.Liveboard);
2499
2796
  * ```
2500
2797
  * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw
2501
2798
  */
@@ -2940,6 +3237,7 @@ var HostEvent;
2940
3237
  * console.log(tml.answer);
2941
3238
  * });
2942
3239
  * ```
3240
+ * @returns The TML representation of the current Answer, as an object.
2943
3241
  * @version SDK: 1.18.0 | ThoughtSpot: 8.10.0.cl, 9.0.1.sw
2944
3242
  * @important
2945
3243
  */
@@ -3364,6 +3662,14 @@ var HostEvent;
3364
3662
  /**
3365
3663
  * Get details of filters applied on the Liveboard.
3366
3664
  * Returns arrays containing Liveboard filter and runtime filter elements.
3665
+ * Each Liveboard filter includes an optional `applicability` attribute
3666
+ * indicating the scope of the filter. It contains a `level`
3667
+ * (`LIVEBOARD`, `TAB`, or `GROUP`) and, when `level` is `TAB` or
3668
+ * `GROUP`, a `targetId` with the GUID of the target. At `LIVEBOARD`
3669
+ * level there is no `targetId`, since the filter applies to the
3670
+ * whole Liveboard.
3671
+ * The `applicability` attribute is available from SDK: 1.53.0 |
3672
+ * ThoughtSpot: 26.10.0.cl.
3367
3673
  * @example
3368
3674
  * ```js
3369
3675
  * const data = await liveboardEmbed.trigger(HostEvent.GetFilters);
@@ -3376,6 +3682,8 @@ var HostEvent;
3376
3682
  * const data = await liveboardEmbed.trigger(HostEvent.GetFilters, {}, ContextType.Liveboard);
3377
3683
  * console.log('filters', data);
3378
3684
  * ```
3685
+ * @returns liveboardFilters - Filters applied on the Liveboard.
3686
+ * @returns runtimeFilters - Runtime filters applied on the Liveboard.
3379
3687
  * @version SDK: 1.23.0 | ThoughtSpot: 9.4.0.cl
3380
3688
  */
3381
3689
  HostEvent["GetFilters"] = "getFilters";
@@ -3403,6 +3711,16 @@ var HostEvent;
3403
3711
  *
3404
3712
  * `type` - To update filters for date time, specify the date format type.
3405
3713
  * For more information and examples, see link:https://developers.thoughtspot.com/docs/embed-liveboard#_date_filters[Date filters].
3714
+ *
3715
+ * `applicability` - Optional. Scopes the filter to a specific target,
3716
+ * for example, a single Liveboard tab. Available from SDK: 1.53.0 |
3717
+ * ThoughtSpot: 26.10.0.cl. Includes the following attributes:
3718
+ *
3719
+ * - `level`: The scope of the filter: `LIVEBOARD`, `TAB`, or `GROUP`.
3720
+ * - `targetId`: The GUID of the target, for example, the tab GUID.
3721
+ * Required when `level` is `TAB` or `GROUP`. Do not pass it when
3722
+ * `level` is `LIVEBOARD`, since the filter applies to the whole
3723
+ * Liveboard.
3406
3724
  * @example
3407
3725
  * ```js
3408
3726
  *
@@ -3479,6 +3797,21 @@ var HostEvent;
3479
3797
  * }
3480
3798
  * }, ContextType.Liveboard);
3481
3799
  * ```
3800
+ * @example
3801
+ * ```js
3802
+ * // Scope the filter to a specific Liveboard tab
3803
+ * liveboardEmbed.trigger(HostEvent.UpdateFilters, {
3804
+ * filter: {
3805
+ * column: "item type",
3806
+ * oper: "IN",
3807
+ * values: ["bags", "shirts"],
3808
+ * applicability: {
3809
+ * level: "TAB",
3810
+ * targetId: "e0836cad-4fdf-42d4-bd97-567a6b2a6058"
3811
+ * }
3812
+ * }
3813
+ * });
3814
+ * ```
3482
3815
  * @version SDK: 1.23.0 | ThoughtSpot: 9.4.0.cl
3483
3816
  */
3484
3817
  HostEvent["UpdateFilters"] = "updateFilters";
@@ -3500,9 +3833,37 @@ var HostEvent;
3500
3833
  * console.log('tabs', tabDetails);
3501
3834
  * });
3502
3835
  * ```
3836
+ * @returns orderedTabIds - Tab GUIDs in the order they appear.
3837
+ * @returns numberOfTabs - Total number of tabs on the Liveboard.
3838
+ * @returns Tabs - Tab details, each with at least `id` and `name`.
3503
3839
  * @version SDK: 1.26.0 | ThoughtSpot: 9.7.0.cl
3504
3840
  */
3505
3841
  HostEvent["GetTabs"] = "getTabs";
3842
+ /**
3843
+ * Get group details for the current Liveboard.
3844
+ * Mirrors {@link HostEvent.GetTabs} for filter/parameter groups.
3845
+ * @example
3846
+ * ```js
3847
+ * liveboardEmbed.trigger(HostEvent.GetGroups).then((groupDetails) => {
3848
+ * console.log(
3849
+ * groupDetails // GroupDetails of current Liveboard
3850
+ * );
3851
+ * })
3852
+ * ```
3853
+ * @example
3854
+ * ```js
3855
+ * // Get groups from liveboard context
3856
+ * import { ContextType } from '@thoughtspot/visual-embed-sdk';
3857
+ * liveboardEmbed.trigger(HostEvent.GetGroups, {}, ContextType.Liveboard).then((groupDetails) => {
3858
+ * console.log('groups', groupDetails);
3859
+ * });
3860
+ * ```
3861
+ * @returns orderedGroupIds - Group GUIDs in the order they appear.
3862
+ * @returns numberOfGroups - Total number of groups on the Liveboard.
3863
+ * @returns Groups - Group details, each with at least `id` and `name`.
3864
+ * @version SDK: 1.53.0 | ThoughtSpot: 26.10.0.cl
3865
+ */
3866
+ HostEvent["GetGroups"] = "getGroups";
3506
3867
  /**
3507
3868
  * Set the visible tabs on a Liveboard.
3508
3869
  * @param - an array of ids of tabs to show, the IDs not passed
@@ -3574,6 +3935,9 @@ var HostEvent;
3574
3935
  * // Alternative direct usage (not recommended)
3575
3936
  * const {session} = await embed.trigger( HostEvent.GetAnswerSession )
3576
3937
  * ```
3938
+ * @returns session - Session identifier for the Answer, for use with the
3939
+ * `AnswerService`.
3940
+ * @returns embedAnswerData - Data backing the Answer, when available.
3577
3941
  * @version SDK: 1.26.0 | ThoughtSpot: 9.10.0.cl, 10.1.0.sw
3578
3942
  */
3579
3943
  HostEvent["GetAnswerSession"] = "getAnswerSession";
@@ -3630,6 +3994,15 @@ var HostEvent;
3630
3994
  * - `name`: Name of the parameter.
3631
3995
  * - `value`: The value to set for the parameter.
3632
3996
  * - `isVisibleToUser`: Optional. To control the visibility of the parameter chip.
3997
+ * - `applicability`: Optional. Scopes the parameter to a specific target,
3998
+ * for example, a single Liveboard tab. Available from SDK: 1.53.0 |
3999
+ * ThoughtSpot: 26.10.0.cl. Includes the following attributes:
4000
+ *
4001
+ * - `level`: The scope of the parameter: `LIVEBOARD`, `TAB`, or `GROUP`.
4002
+ * - `targetId`: The GUID of the target, for example, the tab GUID.
4003
+ * Required when `level` is `TAB` or `GROUP`. Do not pass it when
4004
+ * `level` is `LIVEBOARD`, since the parameter applies to the whole
4005
+ * Liveboard.
3633
4006
  *
3634
4007
  * @example
3635
4008
  * ```js
@@ -3641,6 +4014,18 @@ var HostEvent;
3641
4014
  * ```
3642
4015
  * @example
3643
4016
  * ```js
4017
+ * // Scope the parameter to a specific Liveboard tab
4018
+ * liveboardEmbed.trigger(HostEvent.UpdateParameters, [{
4019
+ * name: "Integer Range Param",
4020
+ * value: 10,
4021
+ * applicability: {
4022
+ * level: "TAB",
4023
+ * targetId: "e0836cad-4fdf-42d4-bd97-567a6b2a6058"
4024
+ * }
4025
+ * }])
4026
+ * ```
4027
+ * @example
4028
+ * ```js
3644
4029
  * // Update parameters from liveboard context
3645
4030
  * import { ContextType } from '@thoughtspot/visual-embed-sdk';
3646
4031
  * liveboardEmbed.trigger(HostEvent.UpdateParameters, [{
@@ -3654,6 +4039,14 @@ var HostEvent;
3654
4039
  HostEvent["UpdateParameters"] = "UpdateParameters";
3655
4040
  /**
3656
4041
  * Triggers GetParameters to fetch the runtime Parameters.
4042
+ * Each parameter includes an optional `applicability` attribute
4043
+ * indicating the scope of the parameter. It contains a `level`
4044
+ * (`LIVEBOARD`, `TAB`, or `GROUP`) and, when `level` is `TAB` or
4045
+ * `GROUP`, a `targetId` with the GUID of the target. At `LIVEBOARD`
4046
+ * level there is no `targetId`, since the parameter applies to the
4047
+ * whole Liveboard.
4048
+ * The `applicability` attribute is available from SDK: 1.53.0 |
4049
+ * ThoughtSpot: 26.10.0.cl.
3657
4050
  * @param - `vizId` refers to the Answer ID in Spotter embed and is required in Spotter embed.
3658
4051
  * ```js
3659
4052
  * liveboardEmbed.trigger(HostEvent.GetParameters).then((parameter) => {
@@ -3678,12 +4071,16 @@ var HostEvent;
3678
4071
  * console.log('parameters', parameters);
3679
4072
  * });
3680
4073
  * ```
4074
+ * @returns parameters - Parameters currently applied on the Liveboard.
3681
4075
  * @version SDK: 1.29.0 | ThoughtSpot: 10.1.0.cl, 10.1.0.sw
3682
4076
  */
3683
4077
  HostEvent["GetParameters"] = "GetParameters";
3684
4078
  /**
3685
4079
  * Triggers an event to update a personalized view of a Liveboard.
3686
- * This event is deprecated. Use {@link HostEvent.UpdatePersonalizedView} instead.
4080
+ * This event is deprecated. Use {@link HostEvent.SelectPersonalizedView} instead,
4081
+ * which additionally accepts a `viewName`, resets to the original view when
4082
+ * called with an empty payload, and reports an error when a named view
4083
+ * cannot be found.
3687
4084
  * ```js
3688
4085
  * liveboardEmbed.trigger(HostEvent.UpdatePersonalisedView, {viewId: '1234'})
3689
4086
  * ```
@@ -3701,10 +4098,15 @@ var HostEvent;
3701
4098
  HostEvent["UpdatePersonalisedView"] = "UpdatePersonalisedView";
3702
4099
  /**
3703
4100
  * Triggers an event to update a personalized view of a Liveboard.
4101
+ * This event is deprecated. Use {@link HostEvent.SelectPersonalizedView} instead,
4102
+ * which additionally accepts a `viewName`, resets to the original view when
4103
+ * called with an empty payload, and reports an error when a named view
4104
+ * cannot be found.
3704
4105
  * ```js
3705
4106
  * liveboardEmbed.trigger(HostEvent.UpdatePersonalisedView, {viewId: '1234'})
3706
4107
  * ```
3707
4108
  * @version SDK: 1.48.0 | ThoughtSpot: 26.5.0.cl
4109
+ * @deprecated SDK: 1.53.0 | ThoughtSpot: 26.10.0.cl
3708
4110
  */
3709
4111
  HostEvent["UpdatePersonalizedView"] = "UpdatePersonalisedView";
3710
4112
  /**
@@ -3807,6 +4209,10 @@ var HostEvent;
3807
4209
  * description: "Generated from Spotter"
3808
4210
  * }, ContextType.Spotter);
3809
4211
  * ```
4212
+ * @returns answerId - GUID of the saved Answer.
4213
+ * @returns saveResponse - Raw response from the save operation.
4214
+ * @returns shareResponse - Raw response from the share operation, when the
4215
+ * Answer was also made discoverable.
3810
4216
  * @version SDK: 1.36.0 | ThoughtSpot: 10.6.0.cl
3811
4217
  */
3812
4218
  HostEvent["SaveAnswer"] = "saveAnswer";
@@ -3920,6 +4326,36 @@ var HostEvent;
3920
4326
  * @version SDK: 1.40.0 | ThoughtSpot: 10.11.0.cl
3921
4327
  */
3922
4328
  HostEvent["ResetSpotterConversation"] = "ResetSpotterConversation";
4329
+ /**
4330
+ * Opens the Spotter share-conversation modal for the given conversation.
4331
+ * `conversationId` is **mandatory** — you must pass the id of the
4332
+ * conversation to share. Also no-op when sharing is disabled
4333
+ * (enableShareConversation off) or when already in the read-only shared view.
4334
+ * @example
4335
+ * ```js
4336
+ * spotterEmbed.trigger(HostEvent.ShareSpotterConversation, { conversationId: 'abc' });
4337
+ * ```
4338
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
4339
+ */
4340
+ HostEvent["ShareSpotterConversation"] = "ShareSpotterConversation";
4341
+ /**
4342
+ * Closes the Spotter share-conversation modal. No-op if none is open.
4343
+ * @example
4344
+ * ```js
4345
+ * spotterEmbed.trigger(HostEvent.CloseSpotterShareConversation);
4346
+ * ```
4347
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
4348
+ */
4349
+ HostEvent["CloseSpotterShareConversation"] = "CloseSpotterShareConversation";
4350
+ /**
4351
+ * Exits the read-only shared-conversation view.
4352
+ * @example
4353
+ * ```js
4354
+ * spotterEmbed.trigger(HostEvent.ExitSpotterSharedConversation);
4355
+ * ```
4356
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
4357
+ */
4358
+ HostEvent["ExitSpotterSharedConversation"] = "ExitSpotterSharedConversation";
3923
4359
  /**
3924
4360
  * Deletes the last prompt in spotter embed.
3925
4361
  * @example
@@ -4015,6 +4451,41 @@ var HostEvent;
4015
4451
  * @version SDK: 1.45.0 | ThoughtSpot: 26.2.0.cl
4016
4452
  */
4017
4453
  HostEvent["StartNewSpotterConversation"] = "StartNewSpotterConversation";
4454
+ /**
4455
+ * Pins a saved Spotter conversation so it floats to the top of the past
4456
+ * conversations sidebar. The `conversationId` of the conversation to pin is
4457
+ * required.
4458
+ *
4459
+ * This feature is available only when chat history is enabled on your ThoughtSpot
4460
+ * instance. Contact your admin or ThoughtSpot Support to enable chat history on your
4461
+ * instance.
4462
+ *
4463
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
4464
+ * @example
4465
+ * ```js
4466
+ * spotterEmbed.trigger(HostEvent.PinSpotterConversation, {
4467
+ * conversationId: '<conversation-id>',
4468
+ * });
4469
+ * ```
4470
+ */
4471
+ HostEvent["PinSpotterConversation"] = "PinSpotterConversation";
4472
+ /**
4473
+ * Unpins a previously pinned Spotter conversation. The `conversationId` of the
4474
+ * conversation to unpin is required.
4475
+ *
4476
+ * This feature is available only when chat history is enabled on your ThoughtSpot
4477
+ * instance. Contact your admin or ThoughtSpot Support to enable chat history on your
4478
+ * instance.
4479
+ *
4480
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
4481
+ * @example
4482
+ * ```js
4483
+ * spotterEmbed.trigger(HostEvent.UnpinSpotterConversation, {
4484
+ * conversationId: '<conversation-id>',
4485
+ * });
4486
+ * ```
4487
+ */
4488
+ HostEvent["UnpinSpotterConversation"] = "UnpinSpotterConversation";
4018
4489
  /**
4019
4490
  * @hidden
4020
4491
  * Get the current context of the embedded page.
@@ -4223,6 +4694,7 @@ var Param;
4223
4694
  Param["NumberFormatLocale"] = "numberFormatLocale";
4224
4695
  Param["CurrencyFormat"] = "currencyFormat";
4225
4696
  Param["Enable2ColumnLayout"] = "enable2ColumnLayout";
4697
+ Param["IsLiveboardAlwaysOn12ColLayout"] = "isLiveboardAlwaysOn12ColLayout";
4226
4698
  Param["IsFullAppEmbed"] = "isFullAppEmbed";
4227
4699
  Param["IsOnBeforeGetVizDataInterceptEnabled"] = "isOnBeforeGetVizDataInterceptEnabled";
4228
4700
  Param["FocusSearchBarOnRender"] = "focusSearchBarOnRender";
@@ -4236,6 +4708,7 @@ var Param;
4236
4708
  Param["SpotterEnabled"] = "isSpotterExperienceEnabled";
4237
4709
  Param["IsUnifiedSearchExperienceEnabled"] = "isUnifiedSearchExperienceEnabled";
4238
4710
  Param["OverrideOrgId"] = "orgId";
4711
+ Param["OverrideHistoryState"] = "overrideHistoryState";
4239
4712
  Param["OauthPollingInterval"] = "oAuthPollingInterval";
4240
4713
  Param["IsForceRedirect"] = "isForceRedirect";
4241
4714
  Param["DataSourceId"] = "dataSourceId";
@@ -4245,6 +4718,7 @@ var Param;
4245
4718
  Param["PrimaryAction"] = "primaryAction";
4246
4719
  Param["isSpotterAgentEmbed"] = "isSpotterAgentEmbed";
4247
4720
  Param["IsLiveboardStylingAndGroupingEnabled"] = "isLiveboardStylingAndGroupingEnabled";
4721
+ Param["LiveboardGutter"] = "liveboardGutter";
4248
4722
  Param["IsLazyLoadingForEmbedEnabled"] = "isLazyLoadingForEmbedEnabled";
4249
4723
  Param["RootMarginForLazyLoad"] = "rootMarginForLazyLoad";
4250
4724
  Param["isPNGInScheduledEmailsEnabled"] = "isPNGInScheduledEmailsEnabled";
@@ -4253,9 +4727,12 @@ var Param;
4253
4727
  Param["isGranularXLSXCSVSchedulesEnabled"] = "isGranularXLSXCSVSchedulesEnabled";
4254
4728
  Param["isSendNowLiveboardSchedulingEnabled"] = "isSendNowLiveboardSchedulingEnabled";
4255
4729
  Param["isCentralizedLiveboardFilterUXEnabled"] = "isCentralizedLiveboardFilterUXEnabled";
4730
+ Param["isScopedLiveboardFilteringEnabled"] = "isScopedLiveboardFilteringEnabled";
4256
4731
  Param["isLinkParametersEnabled"] = "isLinkParametersEnabled";
4257
4732
  Param["EnablePastConversationsSidebar"] = "enablePastConversationsSidebar";
4258
4733
  Param["UpdatedSpotterChatPrompt"] = "updatedSpotterChatPrompt";
4734
+ Param["ShowSpotterRadiance"] = "showSpotterRadiance";
4735
+ Param["DefaultQueryMode"] = "defaultQueryMode";
4259
4736
  Param["EnableStopAnswerGenerationEmbed"] = "enableStopAnswerGenerationEmbed";
4260
4737
  Param["SpotterSidebarTitle"] = "spotterSidebarTitle";
4261
4738
  Param["SpotterSidebarDefaultExpanded"] = "spotterSidebarDefaultExpanded";
@@ -4275,14 +4752,19 @@ var Param;
4275
4752
  Param["SpotterFileUploadEnabled"] = "spotterFileUploadEnabled";
4276
4753
  Param["SpotterFileUploadFileTypes"] = "spotterFileUploadFileTypes";
4277
4754
  Param["IsStarterPromptsEnabled"] = "enableStarterPrompts";
4755
+ Param["UpdatedSpotterExperience"] = "updatedSpotterExperience";
4756
+ Param["SpotterDataSources"] = "spotterDataSources";
4757
+ Param["AnalystId"] = "analystId";
4758
+ Param["OpenSpotterOnLiveboardByDefault"] = "openSpotterOnLiveboardByDefault";
4278
4759
  })(Param || (Param = {}));
4279
4760
  /**
4280
4761
  * ThoughtSpot application pages include actions and menu commands
4281
4762
  * for various user-initiated operations. These actions are represented
4282
4763
  * as enumeration members in the SDK. To control actions in the embedded view:
4283
- * - disabledActions — the action is grayed out and still visible, but non-interactive (user can see but not click).
4284
- * - hiddenActions — the action is completely removed from the UI (user cannot see it at all).
4285
- * - visibleActions — allowlist, only these actions are shown; all others are hidden.
4764
+ * - disabledActions — the action is grayed out and still visible, but non-interactive
4765
+ * (user can see but not click). - hiddenActions — the action is completely removed from
4766
+ * the UI (user cannot see it at all). - visibleActions — allowlist, only these actions
4767
+ * are shown; all others are hidden.
4286
4768
  *
4287
4769
  * Use disabledActions to disable (gray out) an action.
4288
4770
  * Use hiddenActions to hide (fully remove) an action.
@@ -4336,6 +4818,17 @@ var Action;
4336
4818
  * ```
4337
4819
  */
4338
4820
  Action["SaveAsView"] = "saveAsView";
4821
+ /**
4822
+ * The **EditInputTable** action on a Liveboard
4823
+ * page. Allows users to edit an input table used in an Answer directly from
4824
+ * a Liveboard.
4825
+ * @example
4826
+ * ```js
4827
+ * disabledActions: [Action.EditInputTable]
4828
+ * ```
4829
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
4830
+ */
4831
+ Action["EditInputTable"] = "editInputTable";
4339
4832
  /**
4340
4833
  * The **Make a copy** action on a Liveboard or Answer
4341
4834
  * page. Creates a copy of the Liveboard.
@@ -5539,6 +6032,19 @@ var Action;
5539
6032
  * @version SDK: 1.36.0 | ThoughtSpot Cloud: 10.6.0.cl
5540
6033
  */
5541
6034
  Action["ChangeFilterVisibilityInTab"] = "changeFilterVisibilityInTab";
6035
+ /**
6036
+ * Action ID to show, hide, or disable all filter surfaces on a Liveboard,
6037
+ * including filter, parameter, and cross-filter chips at the liveboard,
6038
+ * tab, and group levels. Parameter and cross-filter chips are hide-only.
6039
+ *
6040
+ * @example
6041
+ * ```js
6042
+ * hiddenActions: [Action.AllLiveboardFilters]
6043
+ * disabledActions: [Action.AllLiveboardFilters]
6044
+ * ```
6045
+ * @version SDK: 1.53.0 | ThoughtSpot: 26.10.0.cl
6046
+ */
6047
+ Action["AllLiveboardFilters"] = "allLiveboardFilters";
5542
6048
  /**
5543
6049
  * The **Data model instructions** button on the Spotter interface.
5544
6050
  * Allows opening the data model instructions modal.
@@ -5640,6 +6146,10 @@ var Action;
5640
6146
  * The **Add to Coaching** feature allows adding reference questions and
5641
6147
  * business terms to improve Spotter’s responses. This feature is generally available
5642
6148
  * (GA) from version 26.2.0.cl and enabled by default on embed deployments.
6149
+ *
6150
+ * This action governs both the answer-card **Add to memory** CTA and its
6151
+ * Spotter 3 successor, the response-footer **Remember this** CTA
6152
+ * (they are mutually exclusive).
5643
6153
  * @example
5644
6154
  * ```js
5645
6155
  * hiddenAction: [Action.InConversationTraining]
@@ -5874,6 +6384,89 @@ var Action;
5874
6384
  * @version SDK: 1.46.0 | ThoughtSpot Cloud: 26.3.0.cl
5875
6385
  */
5876
6386
  Action["SpotterChatRename"] = "spotterChatRename";
6387
+ /**
6388
+ * Controls visibility and disable state of the Spotter conversation Share
6389
+ * button in the chat header. Only takes effect once sharing is enabled
6390
+ * (enableShareConversation on).
6391
+ * @example
6392
+ * ```js
6393
+ * disabledActions: [Action.SpotterShareConversationButtonHeader]
6394
+ * ```
6395
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6396
+ */
6397
+ Action["SpotterShareConversationButtonHeader"] = "spotterShareConversationButtonHeader";
6398
+ /**
6399
+ * Controls visibility and disable state of the Share item in the Spotter
6400
+ * conversation history (sidebar) edit menu. Independent of the header button
6401
+ * above, so a host can show Share in one entry point and hide it in the other.
6402
+ * @example
6403
+ * ```js
6404
+ * disabledActions: [Action.SpotterShareConversationMenuItemSidebar]
6405
+ * ```
6406
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6407
+ */
6408
+ Action["SpotterShareConversationMenuItemSidebar"] = "spotterShareConversationMenuItemSidebar";
6409
+ /**
6410
+ * Controls visibility of the entire read-only shared-conversation data-access
6411
+ * banner shown when a recipient opens a shared view. Hide-only.
6412
+ * @example
6413
+ * ```js
6414
+ * hiddenActions: [Action.SpotterSharedConversationBanner]
6415
+ * ```
6416
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6417
+ */
6418
+ Action["SpotterSharedConversationBanner"] = "spotterSharedConversationBanner";
6419
+ /**
6420
+ * Controls visibility and disable state of the cross/close button on the
6421
+ * read-only shared-conversation data-access banner (keeps the banner itself).
6422
+ * @example
6423
+ * ```js
6424
+ * hiddenActions: [Action.SpotterSharedConversationBannerDismissButton]
6425
+ * ```
6426
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6427
+ */
6428
+ Action["SpotterSharedConversationBannerDismissButton"] = "spotterSharedConversationBannerDismissButton";
6429
+ /**
6430
+ * Controls visibility and disable state of the Exit button in the read-only
6431
+ * shared-view header. Hiding it does not disable the ExitSpotterSharedConversation
6432
+ * host event.
6433
+ * @example
6434
+ * ```js
6435
+ * hiddenActions: [Action.SpotterSharedConversationExitButton]
6436
+ * ```
6437
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6438
+ */
6439
+ Action["SpotterSharedConversationExitButton"] = "spotterSharedConversationExitButton";
6440
+ /**
6441
+ * Controls visibility of the share-modal footer note ("Chat will be shared up
6442
+ * to the current moment…"). Hide-only.
6443
+ * @example
6444
+ * ```js
6445
+ * hiddenActions: [Action.SpotterShareUpToCurrentInfo]
6446
+ * ```
6447
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6448
+ */
6449
+ Action["SpotterShareUpToCurrentInfo"] = "spotterShareUpToCurrentInfo";
6450
+ /**
6451
+ * Controls visibility and disable state of the share-modal "include new
6452
+ * messages since last shared version" checkbox.
6453
+ * @example
6454
+ * ```js
6455
+ * disabledActions: [Action.SpotterShareIncludeNewMessagesCheckbox]
6456
+ * ```
6457
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6458
+ */
6459
+ Action["SpotterShareIncludeNewMessagesCheckbox"] = "spotterShareIncludeNewMessagesCheckbox";
6460
+ /**
6461
+ * Controls visibility and disable state of the cross on the share-modal
6462
+ * stale-snapshot info banner.
6463
+ * @example
6464
+ * ```js
6465
+ * hiddenActions: [Action.SpotterShareStaleInfoBannerDismissButton]
6466
+ * ```
6467
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6468
+ */
6469
+ Action["SpotterShareStaleInfoBannerDismissButton"] = "spotterShareStaleInfoBannerDismissButton";
5877
6470
  /**
5878
6471
  * Controls visibility and disable state of the delete action
5879
6472
  * in the Spotter conversation edit menu.
@@ -5884,6 +6477,16 @@ var Action;
5884
6477
  * @version SDK: 1.46.0 | ThoughtSpot Cloud: 26.3.0.cl
5885
6478
  */
5886
6479
  Action["SpotterChatDelete"] = "spotterChatDelete";
6480
+ /**
6481
+ * Controls visibility and disable state of the pin/unpin action
6482
+ * in the Spotter conversation edit menu.
6483
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
6484
+ * @example
6485
+ * ```js
6486
+ * disabledActions: [Action.SpotterChatPin]
6487
+ * ```
6488
+ */
6489
+ Action["SpotterChatPin"] = "spotterChatPin";
5887
6490
  /**
5888
6491
  * Controls visibility and disable state of the documentation/best practices
5889
6492
  * link in the Spotter sidebar footer.
@@ -5927,6 +6530,56 @@ var Action;
5927
6530
  * @version SDK: 1.48.0 | ThoughtSpot Cloud: 26.5.0.cl
5928
6531
  */
5929
6532
  Action["SpotterChatModeSwitcher"] = "spotterChatModeSwitcher";
6533
+ /**
6534
+ * The **Basic Search** starter prompt pill.
6535
+ *
6536
+ * Starter prompt pills are the row of category buttons shown above the
6537
+ * Spotter chat input before a conversation starts. They give a new user
6538
+ * ready-made questions to click instead of typing one from scratch, and
6539
+ * disappear once the conversation begins. There are three, one per action
6540
+ * below.
6541
+ *
6542
+ * Clicking this pill opens a card of suggested simple questions; picking one
6543
+ * submits it to Spotter right away. Visible by default, and hidden along
6544
+ * with the other pills when the surface itself is off (see
6545
+ * {@link SpotterChatViewConfig.starterPrompts}).
6546
+ * @example
6547
+ * ```js
6548
+ * hiddenActions: [Action.QuickSearchPill]
6549
+ * ```
6550
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6551
+ */
6552
+ Action["QuickSearchPill"] = "quickSearchPill";
6553
+ /**
6554
+ * The **Deep Analysis** starter prompt pill, next to
6555
+ * {@link Action.QuickSearchPill} above the Spotter chat input.
6556
+ *
6557
+ * Clicking it opens a card of suggested investigative questions ("why did
6558
+ * revenue drop?"). Picking one fills the chat input in Deep Analysis mode
6559
+ * rather than submitting immediately, so the user can edit it first.
6560
+ * Visible by default.
6561
+ * @example
6562
+ * ```js
6563
+ * hiddenActions: [Action.DeepAnalysisPill]
6564
+ * ```
6565
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6566
+ */
6567
+ Action["DeepAnalysisPill"] = "deepAnalysisPill";
6568
+ /**
6569
+ * The **Data Literacy** starter prompt pill, next to
6570
+ * {@link Action.QuickSearchPill} above the Spotter chat input.
6571
+ *
6572
+ * Unlike the other two pills it opens no card: clicking it submits a prompt
6573
+ * that describes the data the model can answer over, helping a user who does
6574
+ * not yet know what is in the data source. The prompt text always comes from
6575
+ * ThoughtSpot, so only its label is customizable. Visible by default.
6576
+ * @example
6577
+ * ```js
6578
+ * hiddenActions: [Action.DataLiteracyPill]
6579
+ * ```
6580
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6581
+ */
6582
+ Action["DataLiteracyPill"] = "dataLiteracyPill";
5930
6583
  /**
5931
6584
  * The **Include current period** checkbox for date filters.
5932
6585
  * Controls the visibility and availability of the option to include
@@ -6075,6 +6728,38 @@ var Action;
6075
6728
  * ```
6076
6729
  */
6077
6730
  Action["SpotterAnalystSidebar"] = "spotterAnalystSidebar";
6731
+ /**
6732
+ * Controls visibility and disable state of the analyst list
6733
+ * ("Show all") in the Spotter Analyst interface.
6734
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
6735
+ * @example
6736
+ * ```js
6737
+ * hiddenActions: [Action.SpotterAnalystList]
6738
+ * disabledActions: [Action.SpotterAnalystList]
6739
+ * ```
6740
+ */
6741
+ Action["SpotterAnalystList"] = "spotterAnalystList";
6742
+ /**
6743
+ * Controls visibility and disable state of the default Spotter analyst
6744
+ * entry in the Spotter Analyst interface.
6745
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
6746
+ * @example
6747
+ * ```js
6748
+ * hiddenActions: [Action.SpotterDefaultAnalyst]
6749
+ * disabledActions: [Action.SpotterDefaultAnalyst]
6750
+ * ```
6751
+ */
6752
+ Action["SpotterDefaultAnalyst"] = "spotterDefaultAnalyst";
6753
+ /**
6754
+ * The **Spotter** button in the Liveboard header.
6755
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
6756
+ * @example
6757
+ * ```js
6758
+ * hiddenActions: [Action.SpotterOnLiveboard]
6759
+ * disabledActions: [Action.SpotterOnLiveboard]
6760
+ * ```
6761
+ */
6762
+ Action["SpotterOnLiveboard"] = "spotterOnLiveboard";
6078
6763
  })(Action || (Action = {}));
6079
6764
  var PrefetchFeatures;
6080
6765
  (function (PrefetchFeatures) {
@@ -6362,6 +7047,8 @@ var EmbedErrorCodes;
6362
7047
  EmbedErrorCodes["UPDATEFILTERS_INVALID_PAYLOAD"] = "UPDATEFILTERS_INVALID_PAYLOAD";
6363
7048
  /** DrillDown payload is invalid - missing or malformed points */
6364
7049
  EmbedErrorCodes["DRILLDOWN_INVALID_PAYLOAD"] = "DRILLDOWN_INVALID_PAYLOAD";
7050
+ /** UpdateParameters payload is invalid - malformed applicability */
7051
+ EmbedErrorCodes["UPDATEPARAMETERS_INVALID_PAYLOAD"] = "UPDATEPARAMETERS_INVALID_PAYLOAD";
6365
7052
  })(EmbedErrorCodes || (EmbedErrorCodes = {}));
6366
7053
  /**
6367
7054
  * Context types for specifying the page context when triggering host events.
@@ -6540,7 +7227,7 @@ var TableContentDensity;
6540
7227
  TableContentDensity["Compact"] = "COMPACT";
6541
7228
  })(TableContentDensity || (TableContentDensity = {}));
6542
7229
 
6543
- var version$1="1.50.0";var pkg = {version:version$1};
7230
+ var version$1="1.51.0-test";var pkg = {version:version$1};
6544
7231
 
6545
7232
  const { version } = pkg;
6546
7233
 
@@ -6686,7 +7373,6 @@ merge$1.withOptions = (options, ...objects) => {
6686
7373
 
6687
7374
  const ERROR_MESSAGE = {
6688
7375
  INVALID_THOUGHTSPOT_HOST: 'Error parsing ThoughtSpot host. Please provide a valid URL.',
6689
- SPOTTER_EMBED_WORKSHEED_ID_NOT_FOUND: 'Please select a Model to get started',
6690
7376
  LIVEBOARD_VIZ_ID_VALIDATION: 'Please select a Liveboard to embed.',
6691
7377
  TRIGGER_TIMED_OUT: 'Trigger timed-out in getting a response',
6692
7378
  SEARCHEMBED_BETA_WRANING_MESSAGE: 'SearchEmbed is in Beta in this release.',
@@ -6716,6 +7402,7 @@ const ERROR_MESSAGE = {
6716
7402
  INVALID_SPOTTER_DOCUMENTATION_URL: 'Invalid spotterDocumentationUrl. Please provide a valid http or https URL.',
6717
7403
  UPDATEFILTERS_INVALID_PAYLOAD: 'UpdateFilters requires a valid filter or filters array. Expected: { filter: { column, oper, values } } or { filters: [{ column, oper, values }, ...] }',
6718
7404
  DRILLDOWN_INVALID_PAYLOAD: 'DrillDown requires a valid points object. Expected: { points: { clickedPoint?, selectedPoints? }, autoDrillDown?, vizId? }',
7405
+ UPDATEPARAMETERS_INVALID_PAYLOAD: 'UpdateParameters received an invalid applicability. Expected: { level: LIVEBOARD | TAB | GROUP, targetId } where targetId is required for TAB and GROUP levels',
6719
7406
  };
6720
7407
  const CUSTOM_ACTIONS_ERROR_MESSAGE = {
6721
7408
  INVALID_ACTION_OBJECT: 'Custom Action Validation Error: Invalid action object provided',
@@ -6834,7 +7521,7 @@ const getCssDimension = (value) => {
6834
7521
  * @returns true if the value is a valid CSS margin value, false otherwise
6835
7522
  */
6836
7523
  const isValidCssMargin = (value) => {
6837
- if (isUndefined(value)) {
7524
+ if (isUndefined$1(value)) {
6838
7525
  return false;
6839
7526
  }
6840
7527
  if (typeof value !== 'string') {
@@ -7043,7 +7730,7 @@ const removeStyleProperties = (element, styleProperties) => {
7043
7730
  element.style.removeProperty(styleProperty);
7044
7731
  });
7045
7732
  };
7046
- const isUndefined = (value) => value === undefined;
7733
+ const isUndefined$1 = (value) => value === undefined;
7047
7734
  // Return if the value is a string, double or boolean.
7048
7735
  const getTypeFromValue = (value) => {
7049
7736
  if (typeof value === 'string') {
@@ -7347,8 +8034,74 @@ const setParamIfDefined = (queryParams, param, value, asBoolean = false) => {
7347
8034
  }
7348
8035
  };
7349
8036
 
8037
+ /**
8038
+ * Copyright (c) 2023
8039
+ *
8040
+ * Utilities related to reading configuration objects
8041
+ * @summary Config-related utils
8042
+ * @author Ayon Ghosh <ayon.ghosh@thoughtspot.com>
8043
+ */
8044
+ const urlRegex = new RegExp([
8045
+ '(^(https?:)//)?',
8046
+ '(([^:/?#]*)(?::([0-9]+))?)',
8047
+ '(/{0,1}[^?#]*)',
8048
+ '(\\?[^#]*|)',
8049
+ '(#.*|)$', // hash
8050
+ ].join(''));
8051
+ /**
8052
+ * Parse and construct the ThoughtSpot hostname or IP address
8053
+ * from the embed configuration object.
8054
+ * @param config
8055
+ */
8056
+ const getThoughtSpotHost = (config) => {
8057
+ if (!config.thoughtSpotHost) {
8058
+ throw new Error(ERROR_MESSAGE.INVALID_THOUGHTSPOT_HOST);
8059
+ }
8060
+ const urlParts = config.thoughtSpotHost.match(urlRegex);
8061
+ if (!urlParts) {
8062
+ throw new Error(ERROR_MESSAGE.INVALID_THOUGHTSPOT_HOST);
8063
+ }
8064
+ const protocol = urlParts[2] || window.location.protocol;
8065
+ const host = urlParts[3];
8066
+ let path = urlParts[6];
8067
+ // Lose the trailing / if any
8068
+ if (path.charAt(path.length - 1) === '/') {
8069
+ path = path.substring(0, path.length - 1);
8070
+ }
8071
+ // const urlParams = urlParts[7];
8072
+ // const hash = urlParts[8];
8073
+ return `${protocol}//${host}${path}`;
8074
+ };
8075
+ const getV2BasePath = (config) => {
8076
+ if (config.basepath) {
8077
+ return config.basepath;
8078
+ }
8079
+ const tsHost = getThoughtSpotHost(config);
8080
+ // This is to handle when e2e's. Search is run on pods for
8081
+ // comp-blink-test-pipeline with baseUrl=https://localhost:8443.
8082
+ // This is to handle when the developer is developing in their local
8083
+ // environment.
8084
+ if (tsHost.includes('://localhost') && !tsHost.includes(':8443')) {
8085
+ return '';
8086
+ }
8087
+ return 'v2';
8088
+ };
8089
+ /**
8090
+ * It is a good idea to keep URLs under 2000 chars.
8091
+ * If this is ever breached, since we pass view configuration through
8092
+ * URL params, we would like to log a warning.
8093
+ * Reference: https://stackoverflow.com/questions/417142/what-is-the-maximum-length-of-a-url-in-different-browsers
8094
+ */
8095
+ const URL_MAX_LENGTH = 2000;
8096
+ /**
8097
+ * The default CSS dimensions of the embedded app
8098
+ */
8099
+ const DEFAULT_EMBED_WIDTH = '100%';
8100
+ const DEFAULT_EMBED_HEIGHT = '100%';
8101
+ const DEFAULT_LAZY_LOADING_MARGIN = '500px 0px';
8102
+
7350
8103
  /** Used for built-in method references. */
7351
- var objectProto$c = Object.prototype;
8104
+ var objectProto$d = Object.prototype;
7352
8105
 
7353
8106
  /**
7354
8107
  * Checks if `value` is likely a prototype object.
@@ -7359,7 +8112,7 @@ var objectProto$c = Object.prototype;
7359
8112
  */
7360
8113
  function isPrototype(value) {
7361
8114
  var Ctor = value && value.constructor,
7362
- proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto$c;
8115
+ proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto$d;
7363
8116
 
7364
8117
  return value === proto;
7365
8118
  }
@@ -7388,10 +8141,10 @@ var nativeKeys = _overArg(Object.keys, Object);
7388
8141
  var _nativeKeys = nativeKeys;
7389
8142
 
7390
8143
  /** Used for built-in method references. */
7391
- var objectProto$b = Object.prototype;
8144
+ var objectProto$c = Object.prototype;
7392
8145
 
7393
8146
  /** Used to check objects for own properties. */
7394
- var hasOwnProperty$a = objectProto$b.hasOwnProperty;
8147
+ var hasOwnProperty$b = objectProto$c.hasOwnProperty;
7395
8148
 
7396
8149
  /**
7397
8150
  * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
@@ -7406,7 +8159,7 @@ function baseKeys(object) {
7406
8159
  }
7407
8160
  var result = [];
7408
8161
  for (var key in Object(object)) {
7409
- if (hasOwnProperty$a.call(object, key) && key != 'constructor') {
8162
+ if (hasOwnProperty$b.call(object, key) && key != 'constructor') {
7410
8163
  result.push(key);
7411
8164
  }
7412
8165
  }
@@ -7442,17 +8195,17 @@ var Symbol$1 = _root.Symbol;
7442
8195
  var _Symbol = Symbol$1;
7443
8196
 
7444
8197
  /** Used for built-in method references. */
7445
- var objectProto$a = Object.prototype;
8198
+ var objectProto$b = Object.prototype;
7446
8199
 
7447
8200
  /** Used to check objects for own properties. */
7448
- var hasOwnProperty$9 = objectProto$a.hasOwnProperty;
8201
+ var hasOwnProperty$a = objectProto$b.hasOwnProperty;
7449
8202
 
7450
8203
  /**
7451
8204
  * Used to resolve the
7452
8205
  * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
7453
8206
  * of values.
7454
8207
  */
7455
- var nativeObjectToString$1 = objectProto$a.toString;
8208
+ var nativeObjectToString$1 = objectProto$b.toString;
7456
8209
 
7457
8210
  /** Built-in value references. */
7458
8211
  var symToStringTag$1 = _Symbol ? _Symbol.toStringTag : undefined;
@@ -7465,7 +8218,7 @@ var symToStringTag$1 = _Symbol ? _Symbol.toStringTag : undefined;
7465
8218
  * @returns {string} Returns the raw `toStringTag`.
7466
8219
  */
7467
8220
  function getRawTag(value) {
7468
- var isOwn = hasOwnProperty$9.call(value, symToStringTag$1),
8221
+ var isOwn = hasOwnProperty$a.call(value, symToStringTag$1),
7469
8222
  tag = value[symToStringTag$1];
7470
8223
 
7471
8224
  try {
@@ -7487,14 +8240,14 @@ function getRawTag(value) {
7487
8240
  var _getRawTag = getRawTag;
7488
8241
 
7489
8242
  /** Used for built-in method references. */
7490
- var objectProto$9 = Object.prototype;
8243
+ var objectProto$a = Object.prototype;
7491
8244
 
7492
8245
  /**
7493
8246
  * Used to resolve the
7494
8247
  * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
7495
8248
  * of values.
7496
8249
  */
7497
- var nativeObjectToString = objectProto$9.toString;
8250
+ var nativeObjectToString = objectProto$a.toString;
7498
8251
 
7499
8252
  /**
7500
8253
  * Converts `value` to a string using `Object.prototype.toString`.
@@ -7626,10 +8379,10 @@ function isMasked(func) {
7626
8379
  var _isMasked = isMasked;
7627
8380
 
7628
8381
  /** Used for built-in method references. */
7629
- var funcProto$1 = Function.prototype;
8382
+ var funcProto$2 = Function.prototype;
7630
8383
 
7631
8384
  /** Used to resolve the decompiled source of functions. */
7632
- var funcToString$1 = funcProto$1.toString;
8385
+ var funcToString$2 = funcProto$2.toString;
7633
8386
 
7634
8387
  /**
7635
8388
  * Converts `func` to its source code.
@@ -7641,7 +8394,7 @@ var funcToString$1 = funcProto$1.toString;
7641
8394
  function toSource(func) {
7642
8395
  if (func != null) {
7643
8396
  try {
7644
- return funcToString$1.call(func);
8397
+ return funcToString$2.call(func);
7645
8398
  } catch (e) {}
7646
8399
  try {
7647
8400
  return (func + '');
@@ -7662,18 +8415,18 @@ var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
7662
8415
  var reIsHostCtor = /^\[object .+?Constructor\]$/;
7663
8416
 
7664
8417
  /** Used for built-in method references. */
7665
- var funcProto = Function.prototype,
7666
- objectProto$8 = Object.prototype;
8418
+ var funcProto$1 = Function.prototype,
8419
+ objectProto$9 = Object.prototype;
7667
8420
 
7668
8421
  /** Used to resolve the decompiled source of functions. */
7669
- var funcToString = funcProto.toString;
8422
+ var funcToString$1 = funcProto$1.toString;
7670
8423
 
7671
8424
  /** Used to check objects for own properties. */
7672
- var hasOwnProperty$8 = objectProto$8.hasOwnProperty;
8425
+ var hasOwnProperty$9 = objectProto$9.hasOwnProperty;
7673
8426
 
7674
8427
  /** Used to detect if a method is native. */
7675
8428
  var reIsNative = RegExp('^' +
7676
- funcToString.call(hasOwnProperty$8).replace(reRegExpChar, '\\$&')
8429
+ funcToString$1.call(hasOwnProperty$9).replace(reRegExpChar, '\\$&')
7677
8430
  .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
7678
8431
  );
7679
8432
 
@@ -7751,7 +8504,7 @@ var _WeakMap = WeakMap;
7751
8504
 
7752
8505
  /** `Object#toString` result references. */
7753
8506
  var mapTag$3 = '[object Map]',
7754
- objectTag$2 = '[object Object]',
8507
+ objectTag$3 = '[object Object]',
7755
8508
  promiseTag = '[object Promise]',
7756
8509
  setTag$3 = '[object Set]',
7757
8510
  weakMapTag$1 = '[object WeakMap]';
@@ -7782,7 +8535,7 @@ if ((_DataView && getTag(new _DataView(new ArrayBuffer(1))) != dataViewTag$2) ||
7782
8535
  (_WeakMap && getTag(new _WeakMap) != weakMapTag$1)) {
7783
8536
  getTag = function(value) {
7784
8537
  var result = _baseGetTag(value),
7785
- Ctor = result == objectTag$2 ? value.constructor : undefined,
8538
+ Ctor = result == objectTag$3 ? value.constructor : undefined,
7786
8539
  ctorString = Ctor ? _toSource(Ctor) : '';
7787
8540
 
7788
8541
  if (ctorString) {
@@ -7847,13 +8600,13 @@ function baseIsArguments(value) {
7847
8600
  var _baseIsArguments = baseIsArguments;
7848
8601
 
7849
8602
  /** Used for built-in method references. */
7850
- var objectProto$7 = Object.prototype;
8603
+ var objectProto$8 = Object.prototype;
7851
8604
 
7852
8605
  /** Used to check objects for own properties. */
7853
- var hasOwnProperty$7 = objectProto$7.hasOwnProperty;
8606
+ var hasOwnProperty$8 = objectProto$8.hasOwnProperty;
7854
8607
 
7855
8608
  /** Built-in value references. */
7856
- var propertyIsEnumerable$1 = objectProto$7.propertyIsEnumerable;
8609
+ var propertyIsEnumerable$1 = objectProto$8.propertyIsEnumerable;
7857
8610
 
7858
8611
  /**
7859
8612
  * Checks if `value` is likely an `arguments` object.
@@ -7874,7 +8627,7 @@ var propertyIsEnumerable$1 = objectProto$7.propertyIsEnumerable;
7874
8627
  * // => false
7875
8628
  */
7876
8629
  var isArguments = _baseIsArguments(function() { return arguments; }()) ? _baseIsArguments : function(value) {
7877
- return isObjectLike_1(value) && hasOwnProperty$7.call(value, 'callee') &&
8630
+ return isObjectLike_1(value) && hasOwnProperty$8.call(value, 'callee') &&
7878
8631
  !propertyIsEnumerable$1.call(value, 'callee');
7879
8632
  };
7880
8633
 
@@ -8040,10 +8793,10 @@ var argsTag$1 = '[object Arguments]',
8040
8793
  funcTag = '[object Function]',
8041
8794
  mapTag$2 = '[object Map]',
8042
8795
  numberTag$1 = '[object Number]',
8043
- objectTag$1 = '[object Object]',
8796
+ objectTag$2 = '[object Object]',
8044
8797
  regexpTag$1 = '[object RegExp]',
8045
8798
  setTag$2 = '[object Set]',
8046
- stringTag$1 = '[object String]',
8799
+ stringTag$2 = '[object String]',
8047
8800
  weakMapTag = '[object WeakMap]';
8048
8801
 
8049
8802
  var arrayBufferTag$1 = '[object ArrayBuffer]',
@@ -8070,8 +8823,8 @@ typedArrayTags[arrayBufferTag$1] = typedArrayTags[boolTag$2] =
8070
8823
  typedArrayTags[dataViewTag$1] = typedArrayTags[dateTag$1] =
8071
8824
  typedArrayTags[errorTag$1] = typedArrayTags[funcTag] =
8072
8825
  typedArrayTags[mapTag$2] = typedArrayTags[numberTag$1] =
8073
- typedArrayTags[objectTag$1] = typedArrayTags[regexpTag$1] =
8074
- typedArrayTags[setTag$2] = typedArrayTags[stringTag$1] =
8826
+ typedArrayTags[objectTag$2] = typedArrayTags[regexpTag$1] =
8827
+ typedArrayTags[setTag$2] = typedArrayTags[stringTag$2] =
8075
8828
  typedArrayTags[weakMapTag] = false;
8076
8829
 
8077
8830
  /**
@@ -8163,10 +8916,10 @@ var mapTag$1 = '[object Map]',
8163
8916
  setTag$1 = '[object Set]';
8164
8917
 
8165
8918
  /** Used for built-in method references. */
8166
- var objectProto$6 = Object.prototype;
8919
+ var objectProto$7 = Object.prototype;
8167
8920
 
8168
8921
  /** Used to check objects for own properties. */
8169
- var hasOwnProperty$6 = objectProto$6.hasOwnProperty;
8922
+ var hasOwnProperty$7 = objectProto$7.hasOwnProperty;
8170
8923
 
8171
8924
  /**
8172
8925
  * Checks if `value` is an empty object, collection, map, or set.
@@ -8218,7 +8971,7 @@ function isEmpty$1(value) {
8218
8971
  return !_baseKeys(value).length;
8219
8972
  }
8220
8973
  for (var key in value) {
8221
- if (hasOwnProperty$6.call(value, key)) {
8974
+ if (hasOwnProperty$7.call(value, key)) {
8222
8975
  return false;
8223
8976
  }
8224
8977
  }
@@ -8227,6 +8980,15 @@ function isEmpty$1(value) {
8227
8980
 
8228
8981
  var isEmpty_1 = isEmpty$1;
8229
8982
 
8983
+ /**
8984
+ * Levels at which a filter or parameter can be applied.
8985
+ */
8986
+ var ApplicabilityLevel;
8987
+ (function (ApplicabilityLevel) {
8988
+ ApplicabilityLevel["Liveboard"] = "LIVEBOARD";
8989
+ ApplicabilityLevel["Tab"] = "TAB";
8990
+ ApplicabilityLevel["Group"] = "GROUP";
8991
+ })(ApplicabilityLevel || (ApplicabilityLevel = {}));
8230
8992
  var UIPassthroughEvent;
8231
8993
  (function (UIPassthroughEvent) {
8232
8994
  UIPassthroughEvent["PinAnswerToLiveboard"] = "addVizToPinboard";
@@ -8244,6 +9006,7 @@ var UIPassthroughEvent;
8244
9006
  UIPassthroughEvent["GetParameters"] = "getParameters";
8245
9007
  UIPassthroughEvent["GetTML"] = "getTML";
8246
9008
  UIPassthroughEvent["GetTabs"] = "getTabs";
9009
+ UIPassthroughEvent["GetGroups"] = "getGroups";
8247
9010
  UIPassthroughEvent["GetExportRequestForCurrentPinboard"] = "getExportRequestForCurrentPinboard";
8248
9011
  })(UIPassthroughEvent || (UIPassthroughEvent = {}));
8249
9012
 
@@ -9179,7 +9942,7 @@ class AnswerService {
9179
9942
  async getTML() {
9180
9943
  const { object } = await this.executeQuery(getAnswerTML, {});
9181
9944
  const edoc = object[0].edoc;
9182
- const YAML = await import('./index-B5xoN6Cp.js');
9945
+ const YAML = await import('./index-Bivg-mDx.js');
9183
9946
  const parsedDoc = YAML.parse(edoc);
9184
9947
  return {
9185
9948
  answer: {
@@ -9464,10 +10227,10 @@ var _hashDelete = hashDelete;
9464
10227
  var HASH_UNDEFINED$2 = '__lodash_hash_undefined__';
9465
10228
 
9466
10229
  /** Used for built-in method references. */
9467
- var objectProto$5 = Object.prototype;
10230
+ var objectProto$6 = Object.prototype;
9468
10231
 
9469
10232
  /** Used to check objects for own properties. */
9470
- var hasOwnProperty$5 = objectProto$5.hasOwnProperty;
10233
+ var hasOwnProperty$6 = objectProto$6.hasOwnProperty;
9471
10234
 
9472
10235
  /**
9473
10236
  * Gets the hash value for `key`.
@@ -9484,16 +10247,16 @@ function hashGet(key) {
9484
10247
  var result = data[key];
9485
10248
  return result === HASH_UNDEFINED$2 ? undefined : result;
9486
10249
  }
9487
- return hasOwnProperty$5.call(data, key) ? data[key] : undefined;
10250
+ return hasOwnProperty$6.call(data, key) ? data[key] : undefined;
9488
10251
  }
9489
10252
 
9490
10253
  var _hashGet = hashGet;
9491
10254
 
9492
10255
  /** Used for built-in method references. */
9493
- var objectProto$4 = Object.prototype;
10256
+ var objectProto$5 = Object.prototype;
9494
10257
 
9495
10258
  /** Used to check objects for own properties. */
9496
- var hasOwnProperty$4 = objectProto$4.hasOwnProperty;
10259
+ var hasOwnProperty$5 = objectProto$5.hasOwnProperty;
9497
10260
 
9498
10261
  /**
9499
10262
  * Checks if a hash value for `key` exists.
@@ -9506,7 +10269,7 @@ var hasOwnProperty$4 = objectProto$4.hasOwnProperty;
9506
10269
  */
9507
10270
  function hashHas(key) {
9508
10271
  var data = this.__data__;
9509
- return _nativeCreate ? (data[key] !== undefined) : hasOwnProperty$4.call(data, key);
10272
+ return _nativeCreate ? (data[key] !== undefined) : hasOwnProperty$5.call(data, key);
9510
10273
  }
9511
10274
 
9512
10275
  var _hashHas = hashHas;
@@ -10481,7 +11244,7 @@ var boolTag$1 = '[object Boolean]',
10481
11244
  numberTag = '[object Number]',
10482
11245
  regexpTag = '[object RegExp]',
10483
11246
  setTag = '[object Set]',
10484
- stringTag = '[object String]',
11247
+ stringTag$1 = '[object String]',
10485
11248
  symbolTag = '[object Symbol]';
10486
11249
 
10487
11250
  var arrayBufferTag = '[object ArrayBuffer]',
@@ -10536,7 +11299,7 @@ function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
10536
11299
  return object.name == other.name && object.message == other.message;
10537
11300
 
10538
11301
  case regexpTag:
10539
- case stringTag:
11302
+ case stringTag$1:
10540
11303
  // Coerce regexes to strings and treat strings, primitives and objects,
10541
11304
  // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring
10542
11305
  // for more details.
@@ -10644,10 +11407,10 @@ function stubArray() {
10644
11407
  var stubArray_1 = stubArray;
10645
11408
 
10646
11409
  /** Used for built-in method references. */
10647
- var objectProto$3 = Object.prototype;
11410
+ var objectProto$4 = Object.prototype;
10648
11411
 
10649
11412
  /** Built-in value references. */
10650
- var propertyIsEnumerable = objectProto$3.propertyIsEnumerable;
11413
+ var propertyIsEnumerable = objectProto$4.propertyIsEnumerable;
10651
11414
 
10652
11415
  /* Built-in method references for those with the same name as other `lodash` methods. */
10653
11416
  var nativeGetSymbols = Object.getOwnPropertySymbols;
@@ -10719,10 +11482,10 @@ function isIndex(value, length) {
10719
11482
  var _isIndex = isIndex;
10720
11483
 
10721
11484
  /** Used for built-in method references. */
10722
- var objectProto$2 = Object.prototype;
11485
+ var objectProto$3 = Object.prototype;
10723
11486
 
10724
11487
  /** Used to check objects for own properties. */
10725
- var hasOwnProperty$3 = objectProto$2.hasOwnProperty;
11488
+ var hasOwnProperty$4 = objectProto$3.hasOwnProperty;
10726
11489
 
10727
11490
  /**
10728
11491
  * Creates an array of the enumerable property names of the array-like `value`.
@@ -10742,7 +11505,7 @@ function arrayLikeKeys(value, inherited) {
10742
11505
  length = result.length;
10743
11506
 
10744
11507
  for (var key in value) {
10745
- if ((inherited || hasOwnProperty$3.call(value, key)) &&
11508
+ if ((inherited || hasOwnProperty$4.call(value, key)) &&
10746
11509
  !(skipIndexes && (
10747
11510
  // Safari 9 has enumerable `arguments.length` in strict mode.
10748
11511
  key == 'length' ||
@@ -10812,10 +11575,10 @@ var _getAllKeys = getAllKeys;
10812
11575
  var COMPARE_PARTIAL_FLAG$3 = 1;
10813
11576
 
10814
11577
  /** Used for built-in method references. */
10815
- var objectProto$1 = Object.prototype;
11578
+ var objectProto$2 = Object.prototype;
10816
11579
 
10817
11580
  /** Used to check objects for own properties. */
10818
- var hasOwnProperty$2 = objectProto$1.hasOwnProperty;
11581
+ var hasOwnProperty$3 = objectProto$2.hasOwnProperty;
10819
11582
 
10820
11583
  /**
10821
11584
  * A specialized version of `baseIsEqualDeep` for objects with support for
@@ -10843,7 +11606,7 @@ function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
10843
11606
  var index = objLength;
10844
11607
  while (index--) {
10845
11608
  var key = objProps[index];
10846
- if (!(isPartial ? key in other : hasOwnProperty$2.call(other, key))) {
11609
+ if (!(isPartial ? key in other : hasOwnProperty$3.call(other, key))) {
10847
11610
  return false;
10848
11611
  }
10849
11612
  }
@@ -10903,13 +11666,13 @@ var COMPARE_PARTIAL_FLAG$2 = 1;
10903
11666
  /** `Object#toString` result references. */
10904
11667
  var argsTag = '[object Arguments]',
10905
11668
  arrayTag = '[object Array]',
10906
- objectTag = '[object Object]';
11669
+ objectTag$1 = '[object Object]';
10907
11670
 
10908
11671
  /** Used for built-in method references. */
10909
- var objectProto = Object.prototype;
11672
+ var objectProto$1 = Object.prototype;
10910
11673
 
10911
11674
  /** Used to check objects for own properties. */
10912
- var hasOwnProperty$1 = objectProto.hasOwnProperty;
11675
+ var hasOwnProperty$2 = objectProto$1.hasOwnProperty;
10913
11676
 
10914
11677
  /**
10915
11678
  * A specialized version of `baseIsEqual` for arrays and objects which performs
@@ -10931,11 +11694,11 @@ function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
10931
11694
  objTag = objIsArr ? arrayTag : _getTag(object),
10932
11695
  othTag = othIsArr ? arrayTag : _getTag(other);
10933
11696
 
10934
- objTag = objTag == argsTag ? objectTag : objTag;
10935
- othTag = othTag == argsTag ? objectTag : othTag;
11697
+ objTag = objTag == argsTag ? objectTag$1 : objTag;
11698
+ othTag = othTag == argsTag ? objectTag$1 : othTag;
10936
11699
 
10937
- var objIsObj = objTag == objectTag,
10938
- othIsObj = othTag == objectTag,
11700
+ var objIsObj = objTag == objectTag$1,
11701
+ othIsObj = othTag == objectTag$1,
10939
11702
  isSameTag = objTag == othTag;
10940
11703
 
10941
11704
  if (isSameTag && isBuffer_1(object)) {
@@ -10952,8 +11715,8 @@ function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
10952
11715
  : _equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
10953
11716
  }
10954
11717
  if (!(bitmask & COMPARE_PARTIAL_FLAG$2)) {
10955
- var objIsWrapped = objIsObj && hasOwnProperty$1.call(object, '__wrapped__'),
10956
- othIsWrapped = othIsObj && hasOwnProperty$1.call(other, '__wrapped__');
11718
+ var objIsWrapped = objIsObj && hasOwnProperty$2.call(object, '__wrapped__'),
11719
+ othIsWrapped = othIsObj && hasOwnProperty$2.call(other, '__wrapped__');
10957
11720
 
10958
11721
  if (objIsWrapped || othIsWrapped) {
10959
11722
  var objUnwrapped = objIsWrapped ? object.value() : object,
@@ -12013,122 +12776,57 @@ const filterDuplicateIds = (actions) => {
12013
12776
  return { actions: actionsWithUniqueIds, errors };
12014
12777
  };
12015
12778
  /**
12016
- * Validates and processes custom actions
12017
- * @param customActions - Array of custom actions to validate
12018
- * @returns Object containing valid actions and any validation errors
12019
- */
12020
- const getCustomActions = (customActions) => {
12021
- const errors = [];
12022
- if (!customActions || !Array.isArray(customActions)) {
12023
- return { actions: [], errors: [] };
12024
- }
12025
- // Step 1: Handle invalid actions first (null, undefined, missing required
12026
- // fields)
12027
- const validActions = customActions.filter(action => {
12028
- const validation = validateActionStructure(action);
12029
- if (!validation.isValid) {
12030
- if (!action || typeof action !== 'object') {
12031
- errors.push(CUSTOM_ACTIONS_ERROR_MESSAGE.INVALID_ACTION_OBJECT);
12032
- }
12033
- else {
12034
- errors.push(CUSTOM_ACTIONS_ERROR_MESSAGE.MISSING_REQUIRED_FIELDS(action.id, validation.missingFields));
12035
- }
12036
- return false;
12037
- }
12038
- return true;
12039
- });
12040
- // Step 2: Check for duplicate IDs among valid actions
12041
- const { actions: actionsWithUniqueIds, errors: duplicateErrors } = filterDuplicateIds(validActions);
12042
- // Add duplicate errors to the errors array
12043
- duplicateErrors.forEach(error => errors.push(error));
12044
- // Step 3: Validate actions with unique IDs
12045
- const finalValidActions = [];
12046
- actionsWithUniqueIds.forEach((action) => {
12047
- const { isValid, errors: validationErrors } = validateCustomAction(action);
12048
- validationErrors.forEach(error => errors.push(error));
12049
- if (isValid) {
12050
- finalValidActions.push(action);
12051
- }
12052
- });
12053
- // Step 4: Collect warnings for long custom action names
12054
- const MAX_ACTION_NAME_LENGTH = 30;
12055
- const warnings = finalValidActions
12056
- .filter(action => action.name.length > MAX_ACTION_NAME_LENGTH)
12057
- .map(action => `Custom action name '${action.name}' exceeds ${MAX_ACTION_NAME_LENGTH} characters. This may cause display or truncation issues in the UI.`);
12058
- if (warnings.length > 0) {
12059
- logger$3.warn(warnings);
12060
- }
12061
- const sortedActions = sortBy_1(finalValidActions, (a) => a.name.toLocaleLowerCase());
12062
- return {
12063
- actions: sortedActions,
12064
- errors: errors,
12065
- };
12066
- };
12067
-
12068
- /**
12069
- * Copyright (c) 2023
12070
- *
12071
- * Utilities related to reading configuration objects
12072
- * @summary Config-related utils
12073
- * @author Ayon Ghosh <ayon.ghosh@thoughtspot.com>
12074
- */
12075
- const urlRegex = new RegExp([
12076
- '(^(https?:)//)?',
12077
- '(([^:/?#]*)(?::([0-9]+))?)',
12078
- '(/{0,1}[^?#]*)',
12079
- '(\\?[^#]*|)',
12080
- '(#.*|)$', // hash
12081
- ].join(''));
12082
- /**
12083
- * Parse and construct the ThoughtSpot hostname or IP address
12084
- * from the embed configuration object.
12085
- * @param config
12086
- */
12087
- const getThoughtSpotHost = (config) => {
12088
- if (!config.thoughtSpotHost) {
12089
- throw new Error(ERROR_MESSAGE.INVALID_THOUGHTSPOT_HOST);
12090
- }
12091
- const urlParts = config.thoughtSpotHost.match(urlRegex);
12092
- if (!urlParts) {
12093
- throw new Error(ERROR_MESSAGE.INVALID_THOUGHTSPOT_HOST);
12094
- }
12095
- const protocol = urlParts[2] || window.location.protocol;
12096
- const host = urlParts[3];
12097
- let path = urlParts[6];
12098
- // Lose the trailing / if any
12099
- if (path.charAt(path.length - 1) === '/') {
12100
- path = path.substring(0, path.length - 1);
12101
- }
12102
- // const urlParams = urlParts[7];
12103
- // const hash = urlParts[8];
12104
- return `${protocol}//${host}${path}`;
12105
- };
12106
- const getV2BasePath = (config) => {
12107
- if (config.basepath) {
12108
- return config.basepath;
12109
- }
12110
- const tsHost = getThoughtSpotHost(config);
12111
- // This is to handle when e2e's. Search is run on pods for
12112
- // comp-blink-test-pipeline with baseUrl=https://localhost:8443.
12113
- // This is to handle when the developer is developing in their local
12114
- // environment.
12115
- if (tsHost.includes('://localhost') && !tsHost.includes(':8443')) {
12116
- return '';
12117
- }
12118
- return 'v2';
12119
- };
12120
- /**
12121
- * It is a good idea to keep URLs under 2000 chars.
12122
- * If this is ever breached, since we pass view configuration through
12123
- * URL params, we would like to log a warning.
12124
- * Reference: https://stackoverflow.com/questions/417142/what-is-the-maximum-length-of-a-url-in-different-browsers
12125
- */
12126
- const URL_MAX_LENGTH = 2000;
12127
- /**
12128
- * The default CSS dimensions of the embedded app
12779
+ * Validates and processes custom actions
12780
+ * @param customActions - Array of custom actions to validate
12781
+ * @returns Object containing valid actions and any validation errors
12129
12782
  */
12130
- const DEFAULT_EMBED_WIDTH = '100%';
12131
- const DEFAULT_EMBED_HEIGHT = '100%';
12783
+ const getCustomActions = (customActions) => {
12784
+ const errors = [];
12785
+ if (!customActions || !Array.isArray(customActions)) {
12786
+ return { actions: [], errors: [] };
12787
+ }
12788
+ // Step 1: Handle invalid actions first (null, undefined, missing required
12789
+ // fields)
12790
+ const validActions = customActions.filter(action => {
12791
+ const validation = validateActionStructure(action);
12792
+ if (!validation.isValid) {
12793
+ if (!action || typeof action !== 'object') {
12794
+ errors.push(CUSTOM_ACTIONS_ERROR_MESSAGE.INVALID_ACTION_OBJECT);
12795
+ }
12796
+ else {
12797
+ errors.push(CUSTOM_ACTIONS_ERROR_MESSAGE.MISSING_REQUIRED_FIELDS(action.id, validation.missingFields));
12798
+ }
12799
+ return false;
12800
+ }
12801
+ return true;
12802
+ });
12803
+ // Step 2: Check for duplicate IDs among valid actions
12804
+ const { actions: actionsWithUniqueIds, errors: duplicateErrors } = filterDuplicateIds(validActions);
12805
+ // Add duplicate errors to the errors array
12806
+ duplicateErrors.forEach(error => errors.push(error));
12807
+ // Step 3: Validate actions with unique IDs
12808
+ const finalValidActions = [];
12809
+ actionsWithUniqueIds.forEach((action) => {
12810
+ const { isValid, errors: validationErrors } = validateCustomAction(action);
12811
+ validationErrors.forEach(error => errors.push(error));
12812
+ if (isValid) {
12813
+ finalValidActions.push(action);
12814
+ }
12815
+ });
12816
+ // Step 4: Collect warnings for long custom action names
12817
+ const MAX_ACTION_NAME_LENGTH = 30;
12818
+ const warnings = finalValidActions
12819
+ .filter(action => action.name.length > MAX_ACTION_NAME_LENGTH)
12820
+ .map(action => `Custom action name '${action.name}' exceeds ${MAX_ACTION_NAME_LENGTH} characters. This may cause display or truncation issues in the UI.`);
12821
+ if (warnings.length > 0) {
12822
+ logger$3.warn(warnings);
12823
+ }
12824
+ const sortedActions = sortBy_1(finalValidActions, (a) => a.name.toLocaleLowerCase());
12825
+ return {
12826
+ actions: sortedActions,
12827
+ errors: errors,
12828
+ };
12829
+ };
12132
12830
 
12133
12831
  var Config = {
12134
12832
  DEBUG: false,
@@ -12164,7 +12862,7 @@ var FuncProto = Function.prototype;
12164
12862
  var ObjProto = Object.prototype;
12165
12863
  var slice = ArrayProto.slice;
12166
12864
  var toString = ObjProto.toString;
12167
- var hasOwnProperty = ObjProto.hasOwnProperty;
12865
+ var hasOwnProperty$1 = ObjProto.hasOwnProperty;
12168
12866
  var windowConsole = window$1.console;
12169
12867
  var navigator = window$1.navigator;
12170
12868
  var document$1 = window$1.document;
@@ -12301,7 +12999,7 @@ _.each = function(obj, iterator, context) {
12301
12999
  }
12302
13000
  } else {
12303
13001
  for (var key in obj) {
12304
- if (hasOwnProperty.call(obj, key)) {
13002
+ if (hasOwnProperty$1.call(obj, key)) {
12305
13003
  if (iterator.call(context, obj[key], key, obj) === breaker) {
12306
13004
  return;
12307
13005
  }
@@ -12337,7 +13035,7 @@ _.isFunction = function(f) {
12337
13035
  };
12338
13036
 
12339
13037
  _.isArguments = function(obj) {
12340
- return !!(obj && hasOwnProperty.call(obj, 'callee'));
13038
+ return !!(obj && hasOwnProperty$1.call(obj, 'callee'));
12341
13039
  };
12342
13040
 
12343
13041
  _.toArray = function(iterable) {
@@ -12425,7 +13123,7 @@ _.isObject = function(obj) {
12425
13123
  _.isEmptyObject = function(obj) {
12426
13124
  if (_.isObject(obj)) {
12427
13125
  for (var key in obj) {
12428
- if (hasOwnProperty.call(obj, key)) {
13126
+ if (hasOwnProperty$1.call(obj, key)) {
12429
13127
  return false;
12430
13128
  }
12431
13129
  }
@@ -12617,7 +13315,7 @@ _.JSONEncode = (function() {
12617
13315
 
12618
13316
  // Iterate through all of the keys in the object.
12619
13317
  for (k in value) {
12620
- if (hasOwnProperty.call(value, k)) {
13318
+ if (hasOwnProperty$1.call(value, k)) {
12621
13319
  v = str(k, value);
12622
13320
  if (v) {
12623
13321
  partial.push(quote(k) + (gap ? ': ' : ':') + v);
@@ -18286,6 +18984,10 @@ const MIXPANEL_EVENT = {
18286
18984
  VISUAL_SDK_IFRAME_LOAD_PERFORMANCE: 'visual-sdk-iframe-load-performance',
18287
18985
  VISUAL_SDK_EMBED_CREATE: 'visual-sdk-embed-create',
18288
18986
  VERCEL_INTEGRATION_COMPLETED: 'vercel-integration-completed',
18987
+ VISUAL_SDK_RENDER_CALLED: 'visual-sdk-render-called',
18988
+ VISUAL_SDK_PRE_RENDER: 'visual-sdk-pre-render',
18989
+ VISUAL_SDK_SHOW_PRE_RENDER: 'visual-sdk-show-pre-render',
18990
+ VISUAL_SDK_HIDE_PRE_RENDER: 'visual-sdk-hide-pre-render',
18289
18991
  };
18290
18992
  let isMixpanelInitialized = false;
18291
18993
  let eventQueue = [];
@@ -19687,7 +20389,7 @@ const getIsInitCalled = () => { var _a; return !!((_a = getValueFromWindow(initF
19687
20389
  /**
19688
20390
  * Initializes the Visual Embed SDK globally and perform
19689
20391
  * authentication if applicable. This function needs to be called before any ThoughtSpot
19690
- * component like Liveboard etc can be embedded. But need not wait for AuthEvent.SUCCESS
20392
+ * component like Liveboard etc can be embedded. But need not wait for AuthStatus.SUCCESS
19691
20393
  * to actually embed. That is handled internally.
19692
20394
  * @param embedConfig The configuration object containing ThoughtSpot host,
19693
20395
  * authentication mechanism and so on.
@@ -20038,6 +20740,154 @@ function processEventData(type, eventData, thoughtSpotHost, containerEl) {
20038
20740
  return eventData;
20039
20741
  }
20040
20742
 
20743
+ /**
20744
+ * Checks if `value` is `null` or `undefined`.
20745
+ *
20746
+ * @static
20747
+ * @memberOf _
20748
+ * @since 4.0.0
20749
+ * @category Lang
20750
+ * @param {*} value The value to check.
20751
+ * @returns {boolean} Returns `true` if `value` is nullish, else `false`.
20752
+ * @example
20753
+ *
20754
+ * _.isNil(null);
20755
+ * // => true
20756
+ *
20757
+ * _.isNil(void 0);
20758
+ * // => true
20759
+ *
20760
+ * _.isNil(NaN);
20761
+ * // => false
20762
+ */
20763
+ function isNil(value) {
20764
+ return value == null;
20765
+ }
20766
+
20767
+ var isNil_1 = isNil;
20768
+
20769
+ /** Built-in value references. */
20770
+ var getPrototype = _overArg(Object.getPrototypeOf, Object);
20771
+
20772
+ var _getPrototype = getPrototype;
20773
+
20774
+ /** `Object#toString` result references. */
20775
+ var objectTag = '[object Object]';
20776
+
20777
+ /** Used for built-in method references. */
20778
+ var funcProto = Function.prototype,
20779
+ objectProto = Object.prototype;
20780
+
20781
+ /** Used to resolve the decompiled source of functions. */
20782
+ var funcToString = funcProto.toString;
20783
+
20784
+ /** Used to check objects for own properties. */
20785
+ var hasOwnProperty = objectProto.hasOwnProperty;
20786
+
20787
+ /** Used to infer the `Object` constructor. */
20788
+ var objectCtorString = funcToString.call(Object);
20789
+
20790
+ /**
20791
+ * Checks if `value` is a plain object, that is, an object created by the
20792
+ * `Object` constructor or one with a `[[Prototype]]` of `null`.
20793
+ *
20794
+ * @static
20795
+ * @memberOf _
20796
+ * @since 0.8.0
20797
+ * @category Lang
20798
+ * @param {*} value The value to check.
20799
+ * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
20800
+ * @example
20801
+ *
20802
+ * function Foo() {
20803
+ * this.a = 1;
20804
+ * }
20805
+ *
20806
+ * _.isPlainObject(new Foo);
20807
+ * // => false
20808
+ *
20809
+ * _.isPlainObject([1, 2, 3]);
20810
+ * // => false
20811
+ *
20812
+ * _.isPlainObject({ 'x': 0, 'y': 0 });
20813
+ * // => true
20814
+ *
20815
+ * _.isPlainObject(Object.create(null));
20816
+ * // => true
20817
+ */
20818
+ function isPlainObject(value) {
20819
+ if (!isObjectLike_1(value) || _baseGetTag(value) != objectTag) {
20820
+ return false;
20821
+ }
20822
+ var proto = _getPrototype(value);
20823
+ if (proto === null) {
20824
+ return true;
20825
+ }
20826
+ var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;
20827
+ return typeof Ctor == 'function' && Ctor instanceof Ctor &&
20828
+ funcToString.call(Ctor) == objectCtorString;
20829
+ }
20830
+
20831
+ var isPlainObject_1 = isPlainObject;
20832
+
20833
+ /** `Object#toString` result references. */
20834
+ var stringTag = '[object String]';
20835
+
20836
+ /**
20837
+ * Checks if `value` is classified as a `String` primitive or object.
20838
+ *
20839
+ * @static
20840
+ * @since 0.1.0
20841
+ * @memberOf _
20842
+ * @category Lang
20843
+ * @param {*} value The value to check.
20844
+ * @returns {boolean} Returns `true` if `value` is a string, else `false`.
20845
+ * @example
20846
+ *
20847
+ * _.isString('abc');
20848
+ * // => true
20849
+ *
20850
+ * _.isString(1);
20851
+ * // => false
20852
+ */
20853
+ function isString(value) {
20854
+ return typeof value == 'string' ||
20855
+ (!isArray_1(value) && isObjectLike_1(value) && _baseGetTag(value) == stringTag);
20856
+ }
20857
+
20858
+ var isString_1 = isString;
20859
+
20860
+ /**
20861
+ * Checks if `value` is `undefined`.
20862
+ *
20863
+ * @static
20864
+ * @since 0.1.0
20865
+ * @memberOf _
20866
+ * @category Lang
20867
+ * @param {*} value The value to check.
20868
+ * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.
20869
+ * @example
20870
+ *
20871
+ * _.isUndefined(void 0);
20872
+ * // => true
20873
+ *
20874
+ * _.isUndefined(null);
20875
+ * // => false
20876
+ */
20877
+ function isUndefined(value) {
20878
+ return value === undefined;
20879
+ }
20880
+
20881
+ var isUndefined_1 = isUndefined;
20882
+
20883
+ const isValidApplicability = (a) => {
20884
+ if (isUndefined_1(a))
20885
+ return true;
20886
+ // targetId is not required at LIVEBOARD level, since the filter applies to the whole Liveboard
20887
+ return isPlainObject_1(a)
20888
+ && Object.values(ApplicabilityLevel).includes(a.level)
20889
+ && (a.level === ApplicabilityLevel.Liveboard || (isString_1(a.targetId) && a.targetId.trim().length > 0));
20890
+ };
20041
20891
  function isValidUpdateFiltersPayload(payload) {
20042
20892
  if (!payload)
20043
20893
  return false;
@@ -20046,12 +20896,23 @@ function isValidUpdateFiltersPayload(payload) {
20046
20896
  const hasOperator = typeof f.oper === 'string' || typeof f.operator === 'string';
20047
20897
  const hasValues = Array.isArray(f.values);
20048
20898
  const validType = !f.type || typeof f.type === 'string';
20049
- return hasColumn && hasOperator && hasValues && validType;
20899
+ return hasColumn && hasOperator && hasValues && validType && isValidApplicability(f.applicability);
20050
20900
  };
20051
20901
  const hasValidFilter = payload.filter && isValidFilter(payload.filter);
20052
20902
  const hasValidFilters = Array.isArray(payload.filters) && payload.filters.length > 0 && payload.filters.every(isValidFilter);
20053
20903
  return !!(hasValidFilter || hasValidFilters);
20054
20904
  }
20905
+ function isValidUpdateParametersPayload(payload) {
20906
+ // Only validates the applicability of each parameter (null treated as absent); the rest is forwarded as-is for backward compatibility.
20907
+ if (!Array.isArray(payload))
20908
+ return true;
20909
+ return payload.every((p) => {
20910
+ if (!isPlainObject_1(p))
20911
+ return true;
20912
+ const { applicability } = p;
20913
+ return isNil_1(applicability) || isValidApplicability(applicability);
20914
+ });
20915
+ }
20055
20916
  function isValidDrillDownPayload(payload) {
20056
20917
  if (!payload)
20057
20918
  return false;
@@ -20082,6 +20943,9 @@ function throwUpdateFiltersValidationError() {
20082
20943
  }
20083
20944
  function throwDrillDownValidationError() {
20084
20945
  createValidationError(ERROR_MESSAGE.DRILLDOWN_INVALID_PAYLOAD);
20946
+ }
20947
+ function throwUpdateParametersValidationError() {
20948
+ createValidationError(ERROR_MESSAGE.UPDATEPARAMETERS_INVALID_PAYLOAD);
20085
20949
  }
20086
20950
 
20087
20951
  /**
@@ -20102,6 +20966,7 @@ const PASSTHROUGH_MAP = {
20102
20966
  [HostEvent.GetParameters]: UIPassthroughEvent.GetParameters,
20103
20967
  [HostEvent.GetTML]: UIPassthroughEvent.GetTML,
20104
20968
  [HostEvent.GetTabs]: UIPassthroughEvent.GetTabs,
20969
+ [HostEvent.GetGroups]: UIPassthroughEvent.GetGroups,
20105
20970
  [HostEvent.getExportRequestForCurrentPinboard]: UIPassthroughEvent.GetExportRequestForCurrentPinboard,
20106
20971
  };
20107
20972
  class HostEventClient {
@@ -20113,6 +20978,7 @@ class HostEventClient {
20113
20978
  [HostEvent.Pin]: (p, c) => this.handlePinEvent(p, c),
20114
20979
  [HostEvent.SaveAnswer]: (p, c) => this.handleSaveAnswerEvent(p, c),
20115
20980
  [HostEvent.UpdateFilters]: (p, c) => this.handleUpdateFiltersEvent(p, c),
20981
+ [HostEvent.UpdateParameters]: (p, c) => this.handleUpdateParametersEvent(p, c),
20116
20982
  [HostEvent.DrillDown]: (p, c) => this.handleDrillDownEvent(p, c),
20117
20983
  };
20118
20984
  }
@@ -20237,6 +21103,13 @@ class HostEventClient {
20237
21103
  }
20238
21104
  return this.handleHostEventWithParam(UIPassthroughEvent.UpdateFilters, payload, context);
20239
21105
  }
21106
+ handleUpdateParametersEvent(payload, context) {
21107
+ if (!isValidUpdateParametersPayload(payload)) {
21108
+ throwUpdateParametersValidationError();
21109
+ }
21110
+ // UpdateParameters has no UI passthrough contract; dispatch over the legacy channel
21111
+ return this.hostEventFallback(HostEvent.UpdateParameters, payload, context);
21112
+ }
20240
21113
  handleDrillDownEvent(payload, context) {
20241
21114
  if (!isValidDrillDownPayload(payload)) {
20242
21115
  throwDrillDownValidationError();
@@ -20496,7 +21369,7 @@ class TsEmbed {
20496
21369
  */
20497
21370
  this.shouldEncodeUrlQueryParams = false;
20498
21371
  this.defaultHiddenActions = [Action.ReportError];
20499
- this.preRenderContainerEl = null;
21372
+ this.preRenderContainerEl = document.body;
20500
21373
  this.containerScrollListener = null;
20501
21374
  /**
20502
21375
  * Handler for fullscreen change events
@@ -21022,7 +21895,7 @@ class TsEmbed {
21022
21895
  if (this.embedConfig.currencyFormat) {
21023
21896
  queryParams[Param.CurrencyFormat] = this.embedConfig.currencyFormat;
21024
21897
  }
21025
- const { disabledActions, disabledActionReason, hiddenActions, visibleActions, hiddenTabs, visibleTabs, showAlerts, additionalFlags: additionalFlagsFromView, locale, customizations, contextMenuTrigger, linkOverride, enableLinkOverridesV2, insertInToSlide, disableRedirectionLinksInNewTab, overrideOrgId, exposeTranslationIDs, primaryAction, } = this.viewConfig;
21898
+ const { disabledActions, disabledActionReason, hiddenActions, visibleActions, hiddenTabs, visibleTabs, showAlerts, additionalFlags: additionalFlagsFromView, locale, customizations, contextMenuTrigger, linkOverride, enableLinkOverridesV2, insertInToSlide, disableRedirectionLinksInNewTab, overrideOrgId, overrideHistoryState, exposeTranslationIDs, primaryAction, } = this.viewConfig;
21026
21899
  const { additionalFlags: additionalFlagsFromInit } = this.embedConfig;
21027
21900
  const additionalFlags = {
21028
21901
  ...additionalFlagsFromInit,
@@ -21110,6 +21983,9 @@ class TsEmbed {
21110
21983
  if (overrideOrgId !== undefined) {
21111
21984
  queryParams[Param.OverrideOrgId] = overrideOrgId;
21112
21985
  }
21986
+ if (overrideHistoryState !== undefined) {
21987
+ queryParams[Param.OverrideHistoryState] = overrideHistoryState;
21988
+ }
21113
21989
  if (this.isPreAuthCacheEnabled()) {
21114
21990
  queryParams[Param.preAuthCache] = true;
21115
21991
  }
@@ -21181,11 +22057,27 @@ class TsEmbed {
21181
22057
  iFrame.name = 'ThoughtSpot Embedded Analytics';
21182
22058
  return iFrame;
21183
22059
  }
22060
+ /**
22061
+ * Returns a merged {@link PreRenderConfig} object where each shared key
22062
+ * prefers `preRenderConfig.key` over the top-level `viewConfig.key` for
22063
+ * backward compatibility.
22064
+ */
22065
+ getPreRenderConfig() {
22066
+ var _a, _b, _c, _d;
22067
+ const viewCfg = this.viewConfig;
22068
+ const preRenderCfg = (_a = viewCfg.preRenderConfig) !== null && _a !== void 0 ? _a : {};
22069
+ return {
22070
+ ...preRenderCfg,
22071
+ preRenderId: (_b = preRenderCfg.preRenderId) !== null && _b !== void 0 ? _b : viewCfg.preRenderId,
22072
+ preRenderContainer: (_c = preRenderCfg.preRenderContainer) !== null && _c !== void 0 ? _c : viewCfg.preRenderContainer,
22073
+ doNotTrackPreRenderSize: (_d = preRenderCfg.doNotTrackPreRenderSize) !== null && _d !== void 0 ? _d : viewCfg.doNotTrackPreRenderSize,
22074
+ };
22075
+ }
21184
22076
  /**
21185
22077
  * Returns true if this embed instance is configured for pre-rendering.
21186
22078
  */
21187
22079
  isPreRenderEmbed() {
21188
- return !!this.viewConfig.preRenderId;
22080
+ return !!this.getPreRenderConfig().preRenderId;
21189
22081
  }
21190
22082
  handleInsertionIntoDOM(child) {
21191
22083
  if (this.isPreRenderEmbed()) {
@@ -21321,6 +22213,7 @@ class TsEmbed {
21321
22213
  this.setIframeElement(this.preRenderChild);
21322
22214
  }
21323
22215
  this.isRendered = true;
22216
+ this.inheritPreRenderContainer();
21324
22217
  }
21325
22218
  return this.isPreRenderConnected();
21326
22219
  }
@@ -21371,7 +22264,7 @@ class TsEmbed {
21371
22264
  */
21372
22265
  resolvePreRenderContainerTarget() {
21373
22266
  var _a;
21374
- const containerConfig = this.viewConfig.preRenderContainer;
22267
+ const containerConfig = this.getPreRenderConfig().preRenderContainer;
21375
22268
  let container = null;
21376
22269
  if (typeof containerConfig === 'string') {
21377
22270
  try {
@@ -21389,15 +22282,35 @@ class TsEmbed {
21389
22282
  }
21390
22283
  return (_a = container) !== null && _a !== void 0 ? _a : document.body;
21391
22284
  }
22285
+ inheritPreRenderContainer() {
22286
+ var _a;
22287
+ const preRenderedObject = this.getPreRenderObj();
22288
+ if (!preRenderedObject || preRenderedObject === this) {
22289
+ return;
22290
+ }
22291
+ const ownerContainer = (_a = preRenderedObject.preRenderContainerEl) !== null && _a !== void 0 ? _a : document.body;
22292
+ if (this.getPreRenderConfig().preRenderContainer
22293
+ && this.resolvePreRenderContainerTarget() !== ownerContainer) {
22294
+ logger$3.warn('preRenderContainer is applied only by the component that creates the preRender; '
22295
+ + 'the one passed here is ignored. Set it on the PreRender component instead.');
22296
+ }
22297
+ this.preRenderContainerEl = ownerContainer;
22298
+ this.applyPreRenderContainerPositioning();
22299
+ }
22300
+ getCustomPreRenderContainer() {
22301
+ const container = this.preRenderContainerEl;
22302
+ return container && container !== document.body ? container : null;
22303
+ }
21392
22304
  /**
21393
- * Makes the container a positioning context for the absolutely positioned
21394
- * wrapper, stashing the original inline `position` on the element (once) so
21395
- * destroy() can restore it exactly, leaving no trace. Recording it on the
21396
- * element rather than per-instance lets the override be reverted even when
21397
- * embeds share the same container.
22305
+ * Makes the resolved container a positioning context for the absolutely
22306
+ * positioned wrapper, stashing the original inline `position` on the element
22307
+ * (once) so destroy() can restore it exactly, leaving no trace. Recording it
22308
+ * on the element rather than per-instance lets the override be reverted even
22309
+ * when embeds share the same container.
21398
22310
  */
21399
- applyPreRenderContainerPositioning(container) {
21400
- if (container === document.body) {
22311
+ applyPreRenderContainerPositioning() {
22312
+ const container = this.getCustomPreRenderContainer();
22313
+ if (!container) {
21401
22314
  return;
21402
22315
  }
21403
22316
  const pos = window.getComputedStyle(container).position;
@@ -21440,11 +22353,11 @@ class TsEmbed {
21440
22353
  resolved.addEventListener('scroll', this.containerScrollListener);
21441
22354
  }
21442
22355
  }
21443
- this.applyPreRenderContainerPositioning(resolved);
22356
+ this.preRenderContainerEl = resolved;
22357
+ this.applyPreRenderContainerPositioning();
21444
22358
  if (wrapper.parentNode !== resolved) {
21445
22359
  resolved.appendChild(wrapper);
21446
22360
  }
21447
- this.preRenderContainerEl = resolved;
21448
22361
  }
21449
22362
  insertIntoDOMForPreRender(child) {
21450
22363
  const preRenderChild = this.createPreRenderChild(child);
@@ -21467,7 +22380,7 @@ class TsEmbed {
21467
22380
  }
21468
22381
  const targetContainer = this.resolvePreRenderContainerTarget();
21469
22382
  this.preRenderContainerEl = targetContainer;
21470
- this.applyPreRenderContainerPositioning(targetContainer);
22383
+ this.applyPreRenderContainerPositioning();
21471
22384
  targetContainer.appendChild(preRenderWrapper);
21472
22385
  }
21473
22386
  insertIntoDOM(child) {
@@ -21795,6 +22708,9 @@ class TsEmbed {
21795
22708
  * @param args
21796
22709
  */
21797
22710
  async render() {
22711
+ uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_RENDER_CALLED, {
22712
+ embedComponentType: this.viewConfig.embedComponentType,
22713
+ });
21798
22714
  if (!getIsInitCalled()) {
21799
22715
  logger$3.error(ERROR_MESSAGE.RENDER_CALLED_BEFORE_INIT);
21800
22716
  }
@@ -21866,7 +22782,11 @@ class TsEmbed {
21866
22782
  * @param showPreRenderByDefault - Show the preRender after render, hidden by default
21867
22783
  */
21868
22784
  async preRender(showPreRenderByDefault = false, replaceExistingPreRender = false) {
21869
- if (!this.viewConfig.preRenderId) {
22785
+ uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_PRE_RENDER, {
22786
+ showPreRenderByDefault,
22787
+ replaceExistingPreRender,
22788
+ });
22789
+ if (!this.getPreRenderConfig().preRenderId) {
21870
22790
  logger$3.error(ERROR_MESSAGE.PRERENDER_ID_MISSING);
21871
22791
  return this;
21872
22792
  }
@@ -21922,7 +22842,7 @@ class TsEmbed {
21922
22842
  }
21923
22843
  // Drop our reference up front so a destroyed embed never pins a
21924
22844
  // detached container in memory; restoration uses the local handle.
21925
- this.preRenderContainerEl = null;
22845
+ this.preRenderContainerEl = document.body;
21926
22846
  const originalPosition = container.dataset[PRERENDER_CONTAINER_ORIGINAL_POSITION_KEY];
21927
22847
  if (originalPosition === undefined) {
21928
22848
  // We never overrode this container's position; nothing to restore.
@@ -21945,9 +22865,7 @@ class TsEmbed {
21945
22865
  if (!this.containerScrollListener) {
21946
22866
  return;
21947
22867
  }
21948
- const customContainer = this.preRenderContainerEl && this.preRenderContainerEl !== document.body
21949
- ? this.preRenderContainerEl
21950
- : null;
22868
+ const customContainer = this.getCustomPreRenderContainer();
21951
22869
  customContainer === null || customContainer === void 0 ? void 0 : customContainer.removeEventListener('scroll', this.containerScrollListener);
21952
22870
  this.containerScrollListener = null;
21953
22871
  }
@@ -22042,10 +22960,14 @@ class TsEmbed {
22042
22960
  * wrapper to overlay it.
22043
22961
  */
22044
22962
  async showPreRender() {
22045
- var _a;
22963
+ var _a, _b;
22964
+ uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_SHOW_PRE_RENDER, {
22965
+ preRenderId: this.getPreRenderConfig().preRenderId,
22966
+ embedComponentType: this.viewConfig.embedComponentType,
22967
+ });
22046
22968
  if (this.shouldWaitForRenderPromise)
22047
22969
  await this.isReadyForRenderPromise;
22048
- if (!this.viewConfig.preRenderId) {
22970
+ if (!this.getPreRenderConfig().preRenderId) {
22049
22971
  logger$3.error(ERROR_MESSAGE.PRERENDER_ID_MISSING);
22050
22972
  return this;
22051
22973
  }
@@ -22066,21 +22988,23 @@ class TsEmbed {
22066
22988
  }
22067
22989
  }
22068
22990
  const placeHolderId = this.getPreRenderIds().placeHolder;
22069
- const oldEle = this.hostElement.querySelector(`#${placeHolderId}`);
22070
- if (oldEle) {
22071
- this.hostElement.removeChild(oldEle);
22072
- }
22991
+ // Remove any stale placeholder from a previous cycle. It is located
22992
+ // via a subtree-wide querySelector, so it may be nested deeper than a
22993
+ // direct child (E.g.: with fullHeight the host app can wrap it). Use
22994
+ // Element.remove() — which detaches from whatever the real parent is —
22995
+ // rather than hostElement.removeChild(), which throws NotFoundError
22996
+ // when the match is not a direct child. Mirrors the wrapper/child
22997
+ // cleanup in createPreRenderWrapper()/createPreRenderChild().
22998
+ (_a = this.hostElement.querySelector(`#${placeHolderId}`)) === null || _a === void 0 ? void 0 : _a.remove();
22073
22999
  this.hostElement.appendChild(this.insertedDomEl);
22074
23000
  this.syncPreRenderStyle();
22075
- const customContainer = this.preRenderContainerEl && this.preRenderContainerEl !== document.body
22076
- ? this.preRenderContainerEl
22077
- : null;
23001
+ const customContainer = this.getCustomPreRenderContainer();
22078
23002
  if (customContainer && !this.containerScrollListener) {
22079
23003
  this.containerScrollListener = () => this.syncPreRenderStyle();
22080
23004
  customContainer.addEventListener('scroll', this.containerScrollListener);
22081
23005
  }
22082
- if (!this.viewConfig.doNotTrackPreRenderSize) {
22083
- const observeTarget = (_a = this.insertedDomEl) !== null && _a !== void 0 ? _a : this.hostElement;
23006
+ if (!this.getPreRenderConfig().doNotTrackPreRenderSize) {
23007
+ const observeTarget = (_b = this.insertedDomEl) !== null && _b !== void 0 ? _b : this.hostElement;
22084
23008
  this.resizeObserver = new ResizeObserver((entries) => {
22085
23009
  entries.forEach((entry) => {
22086
23010
  if (entry.target === observeTarget) {
@@ -22121,13 +23045,15 @@ class TsEmbed {
22121
23045
  logger$3.error(ERROR_MESSAGE.SYNC_STYLE_CALLED_BEFORE_RENDER);
22122
23046
  return;
22123
23047
  }
23048
+ if (!this.getPreRenderPlaceHolderElement().isConnected) {
23049
+ logger$3.debug('syncPreRenderStyle skipped: placeholder is detached');
23050
+ return;
23051
+ }
22124
23052
  // Self-heal if the resolved container was remounted/detached, so we
22125
23053
  // never measure a stale node (which would collapse the wrapper).
22126
23054
  this.reconcilePreRenderContainer();
22127
23055
  const elBoundingClient = this.getPreRenderPlaceHolderElement().getBoundingClientRect();
22128
- const containerEl = this.preRenderContainerEl && this.preRenderContainerEl !== document.body
22129
- ? this.preRenderContainerEl
22130
- : null;
23056
+ const containerEl = this.getCustomPreRenderContainer();
22131
23057
  const containerRect = (_a = containerEl === null || containerEl === void 0 ? void 0 : containerEl.getBoundingClientRect()) !== null && _a !== void 0 ? _a : { x: 0, y: 0 };
22132
23058
  const scrollX = containerEl ? containerEl.scrollLeft : window.scrollX;
22133
23059
  const scrollY = containerEl ? containerEl.scrollTop : window.scrollY;
@@ -22144,16 +23070,21 @@ class TsEmbed {
22144
23070
  * If the component is not preRendered, it issues a warning.
22145
23071
  */
22146
23072
  hidePreRender() {
23073
+ uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_HIDE_PRE_RENDER, {
23074
+ preRenderId: this.getPreRenderConfig().preRenderId,
23075
+ embedComponentType: this.viewConfig.embedComponentType,
23076
+ });
22147
23077
  logger$3.debug('HidePreRender Called');
22148
23078
  if (!this.isPreRenderConnected()) {
22149
23079
  // if the embed component is not preRendered , nothing to hide
22150
23080
  logger$3.warn('PreRender should be called before hiding it using hidePreRender.');
22151
23081
  return;
22152
23082
  }
23083
+ const { zIndex } = this.getPreRenderConfig();
22153
23084
  const preRenderHideStyles = {
22154
23085
  opacity: '0',
22155
23086
  pointerEvents: 'none',
22156
- zIndex: '-1000',
23087
+ zIndex: zIndex !== undefined ? String(zIndex) : '-1000',
22157
23088
  position: 'absolute',
22158
23089
  top: '0',
22159
23090
  left: '0',
@@ -22178,10 +23109,11 @@ class TsEmbed {
22178
23109
  * @property {string} child - The HTML element ID for the PreRender child.
22179
23110
  */
22180
23111
  getPreRenderIds() {
23112
+ const preRenderId = this.getPreRenderConfig().preRenderId;
22181
23113
  return {
22182
- wrapper: `${PRERENDER_WRAPPER_ID_PREFIX}${this.viewConfig.preRenderId}`,
22183
- child: `tsEmbed-pre-render-child-${this.viewConfig.preRenderId}`,
22184
- placeHolder: `tsEmbed-pre-render-placeholder-${this.viewConfig.preRenderId}`,
23114
+ wrapper: `${PRERENDER_WRAPPER_ID_PREFIX}${preRenderId}`,
23115
+ child: `tsEmbed-pre-render-child-${preRenderId}`,
23116
+ placeHolder: `tsEmbed-pre-render-placeholder-${preRenderId}`,
22185
23117
  };
22186
23118
  }
22187
23119
  /**
@@ -22351,6 +23283,31 @@ function buildSpotterSidebarAppInitData(defaultAppInitData, viewConfig, handleEr
22351
23283
  ...(visualOverrides !== undefined ? { visualOverridesParams: visualOverrides } : {}),
22352
23284
  },
22353
23285
  };
23286
+ }
23287
+ function buildSpotterShareConversationAppInitData(initData, viewConfig) {
23288
+ const { spotterShareConversationConfig } = viewConfig;
23289
+ if (!spotterShareConversationConfig)
23290
+ return initData;
23291
+ return {
23292
+ ...initData,
23293
+ embedParams: {
23294
+ ...(initData.embedParams || {}),
23295
+ spotterShareConversationConfig,
23296
+ },
23297
+ };
23298
+ }
23299
+ function buildStarterPromptsAppInitData(initData, viewConfig) {
23300
+ var _a;
23301
+ const starterPrompts = (_a = viewConfig.spotterChatConfig) === null || _a === void 0 ? void 0 : _a.starterPrompts;
23302
+ if (!starterPrompts)
23303
+ return initData;
23304
+ return {
23305
+ ...initData,
23306
+ embedParams: {
23307
+ ...(initData.embedParams || {}),
23308
+ starterPrompts,
23309
+ },
23310
+ };
22354
23311
  }
22355
23312
 
22356
23313
  function buildSpotterVizAppInitData(initData, viewConfig) {
@@ -22412,6 +23369,14 @@ var Page;
22412
23369
  * Monitor Alerts Page
22413
23370
  */
22414
23371
  Page["Monitor"] = "monitor";
23372
+ /**
23373
+ * Collections listing page
23374
+ */
23375
+ Page["Collections"] = "collections";
23376
+ /**
23377
+ * Liveboard schedules listing page
23378
+ */
23379
+ Page["LiveboardSchedules"] = "liveboard-schedules";
22415
23380
  })(Page || (Page = {}));
22416
23381
  /**
22417
23382
  * Define the initial state of column custom group accordions
@@ -22460,6 +23425,9 @@ var HomePage;
22460
23425
  /**
22461
23426
  * Modular (v2) introduces the updated Modular Home Experience.
22462
23427
  * It serves as the foundational version of the home page.
23428
+ * Use {@link HomePage.ModularWithStylingChanges} (V3) or
23429
+ * {@link HomePage.Focused} (V4) instead.
23430
+ * @deprecated V1 and V2 home page experiences are deprecated.
22463
23431
  */
22464
23432
  HomePage["Modular"] = "v2";
22465
23433
  /**
@@ -22554,6 +23522,15 @@ class AppEmbed extends V1Embed {
22554
23522
  this.setIFrameHeight(frameHeight || this.defaultHeight);
22555
23523
  };
22556
23524
  if (this.viewConfig.fullHeight === true) {
23525
+ if (this.viewConfig.lazyLoadingForFullHeight === undefined) {
23526
+ this.viewConfig.lazyLoadingForFullHeight = true;
23527
+ }
23528
+ if (this.viewConfig.enableScrollableContainerLazyLoading === undefined) {
23529
+ this.viewConfig.enableScrollableContainerLazyLoading = true;
23530
+ }
23531
+ if (this.viewConfig.lazyLoadingMargin === undefined) {
23532
+ this.viewConfig.lazyLoadingMargin = DEFAULT_LAZY_LOADING_MARGIN;
23533
+ }
22557
23534
  this.on(EmbedEvent.RouteChange, this.setIframeHeightForNonEmbedLiveboard);
22558
23535
  this.on(EmbedEvent.EmbedHeight, this.updateIFrameHeight);
22559
23536
  this.on(EmbedEvent.EmbedIframeCenter, this.embedIframeCenter);
@@ -22575,14 +23552,20 @@ class AppEmbed extends V1Embed {
22575
23552
  async getAppInitData() {
22576
23553
  const defaultAppInitData = await super.getAppInitData();
22577
23554
  const sidebarInitData = buildSpotterSidebarAppInitData(defaultAppInitData, this.viewConfig, this.handleError.bind(this));
22578
- return buildSpotterVizAppInitData(sidebarInitData, this.viewConfig);
23555
+ const vizInitData = buildSpotterVizAppInitData(sidebarInitData, this.viewConfig);
23556
+ const shareInitData = buildSpotterShareConversationAppInitData(vizInitData, this.viewConfig);
23557
+ return buildStarterPromptsAppInitData(shareInitData, this.viewConfig);
22579
23558
  }
22580
23559
  /**
22581
23560
  * Constructs a map of parameters to be passed on to the
22582
23561
  * embedded Liveboard or visualization.
22583
23562
  */
22584
23563
  getEmbedParams() {
22585
- const { tag, hideTagFilterChips, hideObjects, liveboardV2, showPrimaryNavbar, disableProfileAndHelp, hideHamburger, hideObjectSearch, hideNotification, hideApplicationSwitcher, hideOrgSwitcher, enableSearchAssist, newConnectionsExperience, fullHeight, dataPanelV2 = true, hideLiveboardHeader = false, showLiveboardTitle = true, showLiveboardDescription = true, showMaskedFilterChip = false, isLiveboardMasterpiecesEnabled = false, newChartsLibrary, hideHomepageLeftNav = false, modularHomeExperience = false, isLiveboardHeaderSticky = true, enableAskSage, collapseSearchBarInitially = false, enable2ColumnLayout, enableCustomColumnGroups = false, dataPanelCustomGroupsAccordionInitialState = DataPanelCustomColumnGroupsAccordionState$1.EXPAND_ALL, collapseSearchBar = true, isLiveboardCompactHeaderEnabled = false, showLiveboardVerifiedBadge = true, showLiveboardReverifyBanner = true, hideIrrelevantChipsInLiveboardTabs = false, isEnhancedFilterInteractivityEnabled = false, homePageSearchBarMode, isUnifiedSearchExperienceEnabled = true, enablePendoHelp = true, discoveryExperience, coverAndFilterOptionInPDF = false, isLiveboardStylingAndGroupingEnabled, isPNGInScheduledEmailsEnabled = false, isLiveboardXLSXCSVDownloadEnabled = false, isGranularXLSXCSVSchedulesEnabled = false, isCentralizedLiveboardFilterUXEnabled = false, isLinkParametersEnabled, updatedSpotterChatPrompt, enableStopAnswerGenerationEmbed, spotterChatConfig, minimumHeight, isThisPeriodInDateFiltersEnabled, enableHomepageAnnouncement = false, isContinuousLiveboardPDFEnabled = false, enableLiveboardDataCache, } = this.viewConfig;
23564
+ const params = this.getEmbedParamsObject();
23565
+ return getQueryParamString(params, true);
23566
+ }
23567
+ getEmbedParamsObject() {
23568
+ const { tag, hideTagFilterChips, hideObjects, liveboardV2, showPrimaryNavbar, disableProfileAndHelp, hideHamburger, hideObjectSearch, hideNotification, hideApplicationSwitcher, hideOrgSwitcher, enableSearchAssist, newConnectionsExperience, fullHeight, dataPanelV2 = true, updatedSpotterExperience, hideLiveboardHeader = false, showLiveboardTitle = true, showLiveboardDescription = true, showMaskedFilterChip = false, isLiveboardMasterpiecesEnabled, newChartsLibrary, hideHomepageLeftNav = false, modularHomeExperience, isLiveboardHeaderSticky = true, enableAskSage, collapseSearchBarInitially = false, enable2ColumnLayout, isLiveboardAlwaysOn12ColLayout, enableCustomColumnGroups = false, dataPanelCustomGroupsAccordionInitialState = DataPanelCustomColumnGroupsAccordionState$1.EXPAND_ALL, collapseSearchBar = true, isLiveboardCompactHeaderEnabled, showLiveboardVerifiedBadge = true, showLiveboardReverifyBanner = true, hideIrrelevantChipsInLiveboardTabs, isEnhancedFilterInteractivityEnabled, homePageSearchBarMode, isUnifiedSearchExperienceEnabled = true, enablePendoHelp = true, discoveryExperience, coverAndFilterOptionInPDF, isLiveboardStylingAndGroupingEnabled, liveboardGutter, isPNGInScheduledEmailsEnabled = false, isLiveboardXLSXCSVDownloadEnabled, isGranularXLSXCSVSchedulesEnabled, isCentralizedLiveboardFilterUXEnabled = false, isScopedLiveboardFilteringEnabled, isLinkParametersEnabled, updatedSpotterChatPrompt, showSpotterRadiance, defaultQueryMode, enableStopAnswerGenerationEmbed, spotterChatConfig, spotterDataSources, minimumHeight, isThisPeriodInDateFiltersEnabled, enableHomepageAnnouncement = false, isContinuousLiveboardPDFEnabled, enableLiveboardDataCache, } = this.viewConfig;
22586
23569
  let params = {};
22587
23570
  params[Param.PrimaryNavHidden] = !showPrimaryNavbar;
22588
23571
  params[Param.HideProfleAndHelp] = !!disableProfileAndHelp;
@@ -22592,31 +23575,51 @@ class AppEmbed extends V1Embed {
22592
23575
  params[Param.ShowLiveboardTitle] = showLiveboardTitle;
22593
23576
  params[Param.ShowLiveboardDescription] = !!showLiveboardDescription;
22594
23577
  params[Param.ShowMaskedFilterChip] = showMaskedFilterChip;
22595
- params[Param.IsLiveboardMasterpiecesEnabled] = isLiveboardMasterpiecesEnabled;
23578
+ if (!isUndefined$1(isLiveboardMasterpiecesEnabled)) {
23579
+ params[Param.IsLiveboardMasterpiecesEnabled] = isLiveboardMasterpiecesEnabled;
23580
+ }
22596
23581
  if (newChartsLibrary !== undefined) {
22597
23582
  params[Param.EnableNewChartLibrary] = newChartsLibrary;
22598
23583
  }
22599
23584
  params[Param.LiveboardHeaderSticky] = isLiveboardHeaderSticky;
22600
23585
  params[Param.IsFullAppEmbed] = true;
22601
- params[Param.LiveboardHeaderV2] = isLiveboardCompactHeaderEnabled;
22602
- params[Param.IsEnhancedFilterInteractivityEnabled] = isEnhancedFilterInteractivityEnabled;
23586
+ if (!isUndefined$1(isLiveboardCompactHeaderEnabled)) {
23587
+ params[Param.LiveboardHeaderV2] = isLiveboardCompactHeaderEnabled;
23588
+ }
23589
+ if (!isUndefined$1(isEnhancedFilterInteractivityEnabled)) {
23590
+ params[Param.IsEnhancedFilterInteractivityEnabled] =
23591
+ isEnhancedFilterInteractivityEnabled;
23592
+ }
22603
23593
  params[Param.ShowLiveboardVerifiedBadge] = showLiveboardVerifiedBadge;
22604
23594
  params[Param.ShowLiveboardReverifyBanner] = showLiveboardReverifyBanner;
22605
- params[Param.HideIrrelevantFiltersInTab] = hideIrrelevantChipsInLiveboardTabs;
23595
+ if (!isUndefined$1(hideIrrelevantChipsInLiveboardTabs)) {
23596
+ params[Param.HideIrrelevantFiltersInTab] = hideIrrelevantChipsInLiveboardTabs;
23597
+ }
22606
23598
  if (isUnifiedSearchExperienceEnabled !== undefined) {
22607
23599
  params[Param.IsUnifiedSearchExperienceEnabled] = isUnifiedSearchExperienceEnabled;
22608
23600
  }
22609
- params[Param.CoverAndFilterOptionInPDF] = !!coverAndFilterOptionInPDF;
23601
+ if (!isUndefined$1(coverAndFilterOptionInPDF)) {
23602
+ params[Param.CoverAndFilterOptionInPDF] = !!coverAndFilterOptionInPDF;
23603
+ }
22610
23604
  params = this.getBaseQueryParams(params);
22611
- if (!isUndefined(updatedSpotterChatPrompt)) {
23605
+ if (!isUndefined$1(updatedSpotterChatPrompt)) {
22612
23606
  params[Param.UpdatedSpotterChatPrompt] = !!updatedSpotterChatPrompt;
22613
23607
  }
22614
- if (!isUndefined(enableStopAnswerGenerationEmbed)) {
23608
+ if (!isUndefined$1(showSpotterRadiance)) {
23609
+ params[Param.ShowSpotterRadiance] = !!showSpotterRadiance;
23610
+ }
23611
+ if (!isUndefined$1(defaultQueryMode)) {
23612
+ params[Param.DefaultQueryMode] = defaultQueryMode;
23613
+ }
23614
+ if (!isUndefined$1(enableStopAnswerGenerationEmbed)) {
22615
23615
  params[Param.EnableStopAnswerGenerationEmbed] = !!enableStopAnswerGenerationEmbed;
22616
23616
  }
23617
+ if (spotterDataSources && spotterDataSources.length) {
23618
+ params[Param.SpotterDataSources] = JSON.stringify(spotterDataSources);
23619
+ }
22617
23620
  // Handle spotterChatConfig params
22618
23621
  if (spotterChatConfig) {
22619
- const { hideToolResponseCardBranding, toolResponseCardBrandingLabel, spotterFileUploadEnabled, spotterFileUploadFileTypes, enableStarterPrompts, } = spotterChatConfig;
23622
+ const { hideToolResponseCardBranding, toolResponseCardBrandingLabel, spotterFileUploadEnabled, spotterFileUploadFileTypes, enableStarterPrompts, openSpotterOnLiveboardByDefault, } = spotterChatConfig;
22620
23623
  setParamIfDefined(params, Param.HideToolResponseCardBranding, hideToolResponseCardBranding, true);
22621
23624
  setParamIfDefined(params, Param.ToolResponseCardBrandingLabel, toolResponseCardBrandingLabel);
22622
23625
  if (spotterFileUploadEnabled !== undefined) {
@@ -22625,10 +23628,16 @@ class AppEmbed extends V1Embed {
22625
23628
  if (enableStarterPrompts !== undefined) {
22626
23629
  params[Param.IsStarterPromptsEnabled] = enableStarterPrompts;
22627
23630
  }
23631
+ if (openSpotterOnLiveboardByDefault !== undefined) {
23632
+ params[Param.OpenSpotterOnLiveboardByDefault] = openSpotterOnLiveboardByDefault;
23633
+ }
22628
23634
  if (spotterFileUploadFileTypes !== undefined) {
22629
23635
  params[Param.SpotterFileUploadFileTypes] = JSON.stringify(spotterFileUploadFileTypes);
22630
23636
  }
22631
23637
  }
23638
+ if (!isUndefined$1(updatedSpotterExperience)) {
23639
+ params[Param.UpdatedSpotterExperience] = !!updatedSpotterExperience;
23640
+ }
22632
23641
  if (hideObjectSearch) {
22633
23642
  params[Param.HideObjectSearch] = !!hideObjectSearch;
22634
23643
  }
@@ -22665,6 +23674,9 @@ class AppEmbed extends V1Embed {
22665
23674
  if (enable2ColumnLayout !== undefined) {
22666
23675
  params[Param.Enable2ColumnLayout] = enable2ColumnLayout;
22667
23676
  }
23677
+ if (isLiveboardAlwaysOn12ColLayout !== undefined) {
23678
+ params[Param.IsLiveboardAlwaysOn12ColLayout] = isLiveboardAlwaysOn12ColLayout;
23679
+ }
22668
23680
  if (enableAskSage) {
22669
23681
  params[Param.enableAskSage] = enableAskSage;
22670
23682
  }
@@ -22677,6 +23689,9 @@ class AppEmbed extends V1Embed {
22677
23689
  if (isLiveboardStylingAndGroupingEnabled !== undefined) {
22678
23690
  params[Param.IsLiveboardStylingAndGroupingEnabled] = isLiveboardStylingAndGroupingEnabled;
22679
23691
  }
23692
+ if (liveboardGutter !== undefined) {
23693
+ params[Param.LiveboardGutter] = liveboardGutter;
23694
+ }
22680
23695
  if (isPNGInScheduledEmailsEnabled !== undefined) {
22681
23696
  params[Param.isPNGInScheduledEmailsEnabled] = isPNGInScheduledEmailsEnabled;
22682
23697
  }
@@ -22695,6 +23710,9 @@ class AppEmbed extends V1Embed {
22695
23710
  if (isCentralizedLiveboardFilterUXEnabled != undefined) {
22696
23711
  params[Param.isCentralizedLiveboardFilterUXEnabled] = isCentralizedLiveboardFilterUXEnabled;
22697
23712
  }
23713
+ if (isScopedLiveboardFilteringEnabled !== undefined) {
23714
+ params[Param.isScopedLiveboardFilteringEnabled] = isScopedLiveboardFilteringEnabled;
23715
+ }
22698
23716
  if (isThisPeriodInDateFiltersEnabled !== undefined) {
22699
23717
  params[Param.IsThisPeriodInDateFiltersEnabled] = isThisPeriodInDateFiltersEnabled;
22700
23718
  }
@@ -22710,7 +23728,6 @@ class AppEmbed extends V1Embed {
22710
23728
  }
22711
23729
  params[Param.DataPanelV2Enabled] = dataPanelV2;
22712
23730
  params[Param.HideHomepageLeftNav] = hideHomepageLeftNav;
22713
- params[Param.ModularHomeExperienceEnabled] = modularHomeExperience;
22714
23731
  params[Param.CollapseSearchBarInitially] = collapseSearchBarInitially || collapseSearchBar;
22715
23732
  params[Param.EnableCustomColumnGroups] = enableCustomColumnGroups;
22716
23733
  if (dataPanelCustomGroupsAccordionInitialState
@@ -22725,33 +23742,15 @@ class AppEmbed extends V1Embed {
22725
23742
  if (modularHomeExperience !== undefined) {
22726
23743
  params[Param.ModularHomeExperienceEnabled] = modularHomeExperience;
22727
23744
  }
22728
- // Set navigation to v2 by default to avoid problems like the app
22729
- // switcher (9-dot menu) not showing when v3 navigation is turned on
22730
- // at the cluster level.
22731
- // To use v3 navigation, we must manually set the discoveryExperience
22732
- // settings.
22733
- params[Param.NavigationVersion] = 'v2';
22734
- // Set homePageVersion to v2 by default to reset the LD flag value
22735
- // for the homepageVersion.
22736
- params[Param.HomepageVersion] = 'v2';
23745
+ // Navigation V1/V2 and home page V1/V2 are deprecated. V3 is now the
23746
+ // default experience, Need to send navigationVersion=v3 and
23747
+ // homepageVersion=v3 even when the no discoveryExperience /
23748
+ // modularHomeExperience config is set. Without these
23749
+ // params, older TSA versions (< 26.7) fall back to V2 for nav and
23750
+ // home page, so the defaults must be sent explicitly from the SDK.
23751
+ params[Param.NavigationVersion] = PrimaryNavbarVersion.Sliding;
23752
+ params[Param.HomepageVersion] = HomePage.ModularWithStylingChanges;
22737
23753
  if (discoveryExperience) {
22738
- // primaryNavbarVersion v3 will enabled the new left navigation
22739
- if (discoveryExperience.primaryNavbarVersion === PrimaryNavbarVersion.Sliding) {
22740
- params[Param.NavigationVersion] = discoveryExperience.primaryNavbarVersion;
22741
- // Enable the modularHomeExperience when Sliding is enabled.
22742
- params[Param.ModularHomeExperienceEnabled] = true;
22743
- }
22744
- // homePage v2 will enable the modular home page
22745
- // and it will override the modularHomeExperience value
22746
- if (discoveryExperience.homePage === HomePage.Modular) {
22747
- params[Param.ModularHomeExperienceEnabled] = true;
22748
- }
22749
- // ModularWithStylingChanges (v3) introduces the styling changes
22750
- // to the Modular Homepage.
22751
- // v3 will be the base version of homePageVersion.
22752
- if (discoveryExperience.homePage === HomePage.ModularWithStylingChanges) {
22753
- params[Param.HomepageVersion] = HomePage.ModularWithStylingChanges;
22754
- }
22755
23754
  // listPageVersion can be changed to v2 or v3
22756
23755
  if (discoveryExperience.listPageVersion !== undefined) {
22757
23756
  params[Param.ListPageVersion] = discoveryExperience.listPageVersion;
@@ -22761,13 +23760,12 @@ class AppEmbed extends V1Embed {
22761
23760
  // The Focused (V4) homepage experience requires the updated
22762
23761
  // Spotter chat prompt. Enable it automatically unless the
22763
23762
  // developer has explicitly set updatedSpotterChatPrompt.
22764
- if (isUndefined(updatedSpotterChatPrompt)) {
23763
+ if (isUndefined$1(updatedSpotterChatPrompt)) {
22765
23764
  params[Param.UpdatedSpotterChatPrompt] = true;
22766
23765
  }
22767
23766
  }
22768
23767
  }
22769
- const queryParams = getQueryParamString(params, true);
22770
- return queryParams;
23768
+ return params;
22771
23769
  }
22772
23770
  /**
22773
23771
  * Constructs the URL of the ThoughtSpot app page to be rendered.
@@ -22802,6 +23800,10 @@ class AppEmbed extends V1Embed {
22802
23800
  return modularHomeExperience ? 'home/spotiq-analysis' : 'insights/results';
22803
23801
  case Page.Monitor:
22804
23802
  return modularHomeExperience ? 'home/monitor-alerts' : 'insights/monitor-alerts';
23803
+ case Page.Collections:
23804
+ return 'collections';
23805
+ case Page.LiveboardSchedules:
23806
+ return 'home/liveboard-schedules';
22805
23807
  case Page.Home:
22806
23808
  default:
22807
23809
  return 'home';
@@ -22834,11 +23836,13 @@ class AppEmbed extends V1Embed {
22834
23836
  * @version SDK: 1.12.0 | ThoughtSpot: 8.4.0.cl, 8.4.1-sw
22835
23837
  */
22836
23838
  navigateToPage(path, noReload = false) {
23839
+ var _a;
22837
23840
  if (!this.iFrame) {
22838
23841
  logger$3.log('Please call render before invoking this method');
22839
23842
  return;
22840
23843
  }
22841
- if (noReload) {
23844
+ const overrideHistoryState = (_a = this.viewConfig) === null || _a === void 0 ? void 0 : _a.overrideHistoryState;
23845
+ if (noReload || overrideHistoryState) {
22842
23846
  this.trigger(HostEvent.Navigate, path);
22843
23847
  }
22844
23848
  else {
@@ -23085,6 +24089,15 @@ class LiveboardEmbed extends V1Embed {
23085
24089
  logger$3.warn('Full height is currently only supported for Liveboard embeds.' +
23086
24090
  'Using full height with vizId might lead to unexpected behavior.');
23087
24091
  }
24092
+ if (this.viewConfig.lazyLoadingForFullHeight === undefined) {
24093
+ this.viewConfig.lazyLoadingForFullHeight = true;
24094
+ }
24095
+ if (this.viewConfig.enableScrollableContainerLazyLoading === undefined) {
24096
+ this.viewConfig.enableScrollableContainerLazyLoading = true;
24097
+ }
24098
+ if (this.viewConfig.lazyLoadingMargin === undefined) {
24099
+ this.viewConfig.lazyLoadingMargin = DEFAULT_LAZY_LOADING_MARGIN;
24100
+ }
23088
24101
  this.on(EmbedEvent.RouteChange, this.setIframeHeightForNonEmbedLiveboard);
23089
24102
  this.on(EmbedEvent.EmbedHeight, this.updateIFrameHeight);
23090
24103
  this.on(EmbedEvent.EmbedIframeCenter, this.embedIframeCenter);
@@ -23093,7 +24106,8 @@ class LiveboardEmbed extends V1Embed {
23093
24106
  }
23094
24107
  async getAppInitData() {
23095
24108
  const defaultAppInitData = await super.getAppInitData();
23096
- return buildSpotterVizAppInitData(defaultAppInitData, this.viewConfig);
24109
+ const vizInitData = buildSpotterVizAppInitData(defaultAppInitData, this.viewConfig);
24110
+ return buildStarterPromptsAppInitData(vizInitData, this.viewConfig);
23097
24111
  }
23098
24112
  /**
23099
24113
  * Construct a map of params to be passed on to the
@@ -23107,7 +24121,7 @@ class LiveboardEmbed extends V1Embed {
23107
24121
  getEmbedParamsObject() {
23108
24122
  let params = {};
23109
24123
  params = this.getBaseQueryParams(params);
23110
- const { enableVizTransformations, fullHeight, defaultHeight, minimumHeight, visibleVizs, liveboardV2, vizId, hideTabPanel, activeTabId, hideLiveboardHeader, showLiveboardDescription, showLiveboardTitle, isLiveboardHeaderSticky = true, isLiveboardCompactHeaderEnabled = false, showLiveboardVerifiedBadge = true, showLiveboardReverifyBanner = true, hideIrrelevantChipsInLiveboardTabs = false, showMaskedFilterChip = false, isLiveboardMasterpiecesEnabled = false, newChartsLibrary, isEnhancedFilterInteractivityEnabled = false, enableAskSage, enable2ColumnLayout, dataPanelV2 = true, enableCustomColumnGroups = false, oAuthPollingInterval, isForceRedirect, dataSourceId, coverAndFilterOptionInPDF = false, isLiveboardStylingAndGroupingEnabled, isPNGInScheduledEmailsEnabled = false, isLiveboardXLSXCSVDownloadEnabled = false, isGranularXLSXCSVSchedulesEnabled = false, showSpotterLimitations, isCentralizedLiveboardFilterUXEnabled = false, isLinkParametersEnabled, updatedSpotterChatPrompt, enableStopAnswerGenerationEmbed, spotterChatConfig, isThisPeriodInDateFiltersEnabled, isContinuousLiveboardPDFEnabled = false, enableLiveboardDataCache, } = this.viewConfig;
24124
+ const { enableVizTransformations, fullHeight, defaultHeight, minimumHeight, visibleVizs, liveboardV2, vizId, hideTabPanel, activeTabId, hideLiveboardHeader, showLiveboardDescription, showLiveboardTitle, isLiveboardHeaderSticky = true, isLiveboardCompactHeaderEnabled, showLiveboardVerifiedBadge = true, showLiveboardReverifyBanner = true, hideIrrelevantChipsInLiveboardTabs, showMaskedFilterChip = false, isLiveboardMasterpiecesEnabled, newChartsLibrary, isEnhancedFilterInteractivityEnabled, enableAskSage, enable2ColumnLayout, isLiveboardAlwaysOn12ColLayout, dataPanelV2 = true, updatedSpotterExperience, enableCustomColumnGroups = false, oAuthPollingInterval, isForceRedirect, dataSourceId, coverAndFilterOptionInPDF, isLiveboardStylingAndGroupingEnabled, liveboardGutter, isPNGInScheduledEmailsEnabled = false, isLiveboardXLSXCSVDownloadEnabled, isGranularXLSXCSVSchedulesEnabled, showSpotterLimitations, isCentralizedLiveboardFilterUXEnabled = false, isScopedLiveboardFilteringEnabled, isLinkParametersEnabled, updatedSpotterChatPrompt, showSpotterRadiance, enableStopAnswerGenerationEmbed, spotterChatConfig, isThisPeriodInDateFiltersEnabled, isContinuousLiveboardPDFEnabled, enableLiveboardDataCache, } = this.viewConfig;
23111
24125
  const preventLiveboardFilterRemoval = this.viewConfig.preventLiveboardFilterRemoval
23112
24126
  || this.viewConfig.preventPinboardFilterRemoval;
23113
24127
  if (fullHeight === true) {
@@ -23126,10 +24140,13 @@ class LiveboardEmbed extends V1Embed {
23126
24140
  if (preventLiveboardFilterRemoval) {
23127
24141
  params[Param.preventLiveboardFilterRemoval] = true;
23128
24142
  }
23129
- if (!isUndefined(updatedSpotterChatPrompt)) {
24143
+ if (!isUndefined$1(updatedSpotterChatPrompt)) {
23130
24144
  params[Param.UpdatedSpotterChatPrompt] = !!updatedSpotterChatPrompt;
23131
24145
  }
23132
- if (!isUndefined(enableStopAnswerGenerationEmbed)) {
24146
+ if (!isUndefined$1(showSpotterRadiance)) {
24147
+ params[Param.ShowSpotterRadiance] = !!showSpotterRadiance;
24148
+ }
24149
+ if (!isUndefined$1(enableStopAnswerGenerationEmbed)) {
23133
24150
  params[Param.EnableStopAnswerGenerationEmbed] = !!enableStopAnswerGenerationEmbed;
23134
24151
  }
23135
24152
  if (visibleVizs) {
@@ -23145,6 +24162,9 @@ class LiveboardEmbed extends V1Embed {
23145
24162
  if (enable2ColumnLayout !== undefined) {
23146
24163
  params[Param.Enable2ColumnLayout] = enable2ColumnLayout;
23147
24164
  }
24165
+ if (isLiveboardAlwaysOn12ColLayout !== undefined) {
24166
+ params[Param.IsLiveboardAlwaysOn12ColLayout] = isLiveboardAlwaysOn12ColLayout;
24167
+ }
23148
24168
  if (hideTabPanel) {
23149
24169
  params[Param.HideTabPanel] = hideTabPanel;
23150
24170
  }
@@ -23172,6 +24192,9 @@ class LiveboardEmbed extends V1Embed {
23172
24192
  if (isLiveboardStylingAndGroupingEnabled !== undefined) {
23173
24193
  params[Param.IsLiveboardStylingAndGroupingEnabled] = isLiveboardStylingAndGroupingEnabled;
23174
24194
  }
24195
+ if (liveboardGutter !== undefined) {
24196
+ params[Param.LiveboardGutter] = liveboardGutter;
24197
+ }
23175
24198
  if (isPNGInScheduledEmailsEnabled !== undefined) {
23176
24199
  params[Param.isPNGInScheduledEmailsEnabled] = isPNGInScheduledEmailsEnabled;
23177
24200
  }
@@ -23184,9 +24207,12 @@ class LiveboardEmbed extends V1Embed {
23184
24207
  if (showSpotterLimitations !== undefined) {
23185
24208
  params[Param.ShowSpotterLimitations] = showSpotterLimitations;
23186
24209
  }
24210
+ if (!isUndefined$1(updatedSpotterExperience)) {
24211
+ params[Param.UpdatedSpotterExperience] = !!updatedSpotterExperience;
24212
+ }
23187
24213
  // Handle spotterChatConfig params
23188
24214
  if (spotterChatConfig) {
23189
- const { hideToolResponseCardBranding, toolResponseCardBrandingLabel, spotterFileUploadEnabled, spotterFileUploadFileTypes, enableStarterPrompts, } = spotterChatConfig;
24215
+ const { hideToolResponseCardBranding, toolResponseCardBrandingLabel, spotterFileUploadEnabled, spotterFileUploadFileTypes, enableStarterPrompts, openSpotterOnLiveboardByDefault, } = spotterChatConfig;
23190
24216
  setParamIfDefined(params, Param.HideToolResponseCardBranding, hideToolResponseCardBranding, true);
23191
24217
  setParamIfDefined(params, Param.ToolResponseCardBrandingLabel, toolResponseCardBrandingLabel);
23192
24218
  if (spotterFileUploadEnabled !== undefined) {
@@ -23195,6 +24221,9 @@ class LiveboardEmbed extends V1Embed {
23195
24221
  if (enableStarterPrompts !== undefined) {
23196
24222
  params[Param.IsStarterPromptsEnabled] = enableStarterPrompts;
23197
24223
  }
24224
+ if (openSpotterOnLiveboardByDefault !== undefined) {
24225
+ params[Param.OpenSpotterOnLiveboardByDefault] = openSpotterOnLiveboardByDefault;
24226
+ }
23198
24227
  if (spotterFileUploadFileTypes !== undefined) {
23199
24228
  params[Param.SpotterFileUploadFileTypes] = JSON.stringify(spotterFileUploadFileTypes);
23200
24229
  }
@@ -23205,6 +24234,9 @@ class LiveboardEmbed extends V1Embed {
23205
24234
  if (isCentralizedLiveboardFilterUXEnabled !== undefined) {
23206
24235
  params[Param.isCentralizedLiveboardFilterUXEnabled] = isCentralizedLiveboardFilterUXEnabled;
23207
24236
  }
24237
+ if (isScopedLiveboardFilteringEnabled !== undefined) {
24238
+ params[Param.isScopedLiveboardFilteringEnabled] = isScopedLiveboardFilteringEnabled;
24239
+ }
23208
24240
  if (isThisPeriodInDateFiltersEnabled !== undefined) {
23209
24241
  params[Param.IsThisPeriodInDateFiltersEnabled] = isThisPeriodInDateFiltersEnabled;
23210
24242
  }
@@ -23218,16 +24250,27 @@ class LiveboardEmbed extends V1Embed {
23218
24250
  params[Param.EnableNewChartLibrary] = newChartsLibrary;
23219
24251
  }
23220
24252
  params[Param.LiveboardHeaderSticky] = isLiveboardHeaderSticky;
23221
- params[Param.LiveboardHeaderV2] = isLiveboardCompactHeaderEnabled;
24253
+ if (!isUndefined$1(isLiveboardCompactHeaderEnabled)) {
24254
+ params[Param.LiveboardHeaderV2] = isLiveboardCompactHeaderEnabled;
24255
+ }
23222
24256
  params[Param.ShowLiveboardVerifiedBadge] = showLiveboardVerifiedBadge;
23223
24257
  params[Param.ShowLiveboardReverifyBanner] = showLiveboardReverifyBanner;
23224
- params[Param.HideIrrelevantFiltersInTab] = hideIrrelevantChipsInLiveboardTabs;
24258
+ if (!isUndefined$1(hideIrrelevantChipsInLiveboardTabs)) {
24259
+ params[Param.HideIrrelevantFiltersInTab] = hideIrrelevantChipsInLiveboardTabs;
24260
+ }
23225
24261
  params[Param.ShowMaskedFilterChip] = showMaskedFilterChip;
23226
- params[Param.IsLiveboardMasterpiecesEnabled] = isLiveboardMasterpiecesEnabled;
23227
- params[Param.IsEnhancedFilterInteractivityEnabled] = isEnhancedFilterInteractivityEnabled;
24262
+ if (!isUndefined$1(isLiveboardMasterpiecesEnabled)) {
24263
+ params[Param.IsLiveboardMasterpiecesEnabled] = isLiveboardMasterpiecesEnabled;
24264
+ }
24265
+ if (!isUndefined$1(isEnhancedFilterInteractivityEnabled)) {
24266
+ params[Param.IsEnhancedFilterInteractivityEnabled] =
24267
+ isEnhancedFilterInteractivityEnabled;
24268
+ }
23228
24269
  params[Param.DataPanelV2Enabled] = dataPanelV2;
23229
24270
  params[Param.EnableCustomColumnGroups] = enableCustomColumnGroups;
23230
- params[Param.CoverAndFilterOptionInPDF] = coverAndFilterOptionInPDF;
24271
+ if (!isUndefined$1(coverAndFilterOptionInPDF)) {
24272
+ params[Param.CoverAndFilterOptionInPDF] = coverAndFilterOptionInPDF;
24273
+ }
23231
24274
  getQueryParamString(params, true);
23232
24275
  return params;
23233
24276
  }
@@ -23330,7 +24373,7 @@ class LiveboardEmbed extends V1Embed {
23330
24373
  });
23331
24374
  }
23332
24375
  async handleRenderForPrerender() {
23333
- if (isUndefined(this.viewConfig.liveboardId)) {
24376
+ if (isUndefined$1(this.viewConfig.liveboardId)) {
23334
24377
  return this.prerenderGeneric();
23335
24378
  }
23336
24379
  return super.handleRenderForPrerender();
@@ -23426,7 +24469,7 @@ class LiveboardEmbed extends V1Embed {
23426
24469
  if (this.isRendered) {
23427
24470
  this.trigger(HostEvent.Navigate, path.substring(1));
23428
24471
  }
23429
- else if (this.viewConfig.preRenderId) {
24472
+ else if (this.getPreRenderConfig().preRenderId) {
23430
24473
  this.preRender(true);
23431
24474
  }
23432
24475
  else {
@@ -24249,6 +25292,15 @@ class BodylessConversation extends SpotterAgentEmbed {
24249
25292
  }
24250
25293
  }
24251
25294
 
25295
+ /**
25296
+ * The query mode Spotter uses when answering a question.
25297
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
25298
+ */
25299
+ var SpotterQueryMode;
25300
+ (function (SpotterQueryMode) {
25301
+ SpotterQueryMode["FAST_SEARCH"] = "fastSearch";
25302
+ SpotterQueryMode["RESEARCH"] = "research";
25303
+ })(SpotterQueryMode || (SpotterQueryMode = {}));
24252
25304
  /**
24253
25305
  * Embed ThoughtSpot AI Conversation.
24254
25306
  * @version SDK: 1.37.0 | ThoughtSpot: 10.9.0.cl
@@ -24289,18 +25341,12 @@ class SpotterEmbed extends TsEmbed {
24289
25341
  */
24290
25342
  async getAppInitData() {
24291
25343
  const defaultAppInitData = await super.getAppInitData();
24292
- return buildSpotterSidebarAppInitData(defaultAppInitData, this.viewConfig, this.handleError.bind(this));
25344
+ const sidebarInitData = buildSpotterSidebarAppInitData(defaultAppInitData, this.viewConfig, this.handleError.bind(this));
25345
+ const shareInitData = buildSpotterShareConversationAppInitData(sidebarInitData, this.viewConfig);
25346
+ return buildStarterPromptsAppInitData(shareInitData, this.viewConfig);
24293
25347
  }
24294
25348
  getEmbedParamsObject() {
24295
- const { worksheetId, searchOptions, disableSourceSelection, hideSourceSelection, dataPanelV2, showSpotterLimitations, hideSampleQuestions, runtimeFilters, excludeRuntimeFiltersfromURL, runtimeParameters, excludeRuntimeParametersfromURL, updatedSpotterChatPrompt, enableStopAnswerGenerationEmbed, spotterChatConfig, } = this.viewConfig;
24296
- if (!worksheetId) {
24297
- this.handleError({
24298
- errorType: ErrorDetailsTypes.VALIDATION_ERROR,
24299
- message: ERROR_MESSAGE.SPOTTER_EMBED_WORKSHEED_ID_NOT_FOUND,
24300
- code: EmbedErrorCodes.WORKSHEET_ID_NOT_FOUND,
24301
- error: ERROR_MESSAGE.SPOTTER_EMBED_WORKSHEED_ID_NOT_FOUND,
24302
- });
24303
- }
25349
+ const { searchOptions, disableSourceSelection, hideSourceSelection, dataPanelV2, updatedSpotterExperience, showSpotterLimitations, hideSampleQuestions, runtimeFilters, excludeRuntimeFiltersfromURL, runtimeParameters, excludeRuntimeParametersfromURL, updatedSpotterChatPrompt, showSpotterRadiance, defaultQueryMode, enableStopAnswerGenerationEmbed, spotterChatConfig, spotterAnalystConfig, } = this.viewConfig;
24304
25350
  const queryParams = this.getBaseQueryParams();
24305
25351
  queryParams[Param.SpotterEnabled] = true;
24306
25352
  // Boolean params
@@ -24310,7 +25356,10 @@ class SpotterEmbed extends TsEmbed {
24310
25356
  setParamIfDefined(queryParams, Param.ShowSpotterLimitations, showSpotterLimitations, true);
24311
25357
  setParamIfDefined(queryParams, Param.HideSampleQuestions, hideSampleQuestions, true);
24312
25358
  setParamIfDefined(queryParams, Param.UpdatedSpotterChatPrompt, updatedSpotterChatPrompt, true);
25359
+ setParamIfDefined(queryParams, Param.ShowSpotterRadiance, showSpotterRadiance, true);
25360
+ setParamIfDefined(queryParams, Param.DefaultQueryMode, defaultQueryMode);
24313
25361
  setParamIfDefined(queryParams, Param.EnableStopAnswerGenerationEmbed, enableStopAnswerGenerationEmbed, true);
25362
+ setParamIfDefined(queryParams, Param.AnalystId, spotterAnalystConfig === null || spotterAnalystConfig === void 0 ? void 0 : spotterAnalystConfig.analystId);
24314
25363
  // Handle spotterChatConfig params
24315
25364
  if (spotterChatConfig) {
24316
25365
  const { hideToolResponseCardBranding, toolResponseCardBrandingLabel, spotterFileUploadEnabled, spotterFileUploadFileTypes, enableStarterPrompts, } = spotterChatConfig;
@@ -24322,11 +25371,18 @@ class SpotterEmbed extends TsEmbed {
24322
25371
  queryParams[Param.SpotterFileUploadFileTypes] = JSON.stringify(spotterFileUploadFileTypes);
24323
25372
  }
24324
25373
  }
25374
+ setParamIfDefined(queryParams, Param.UpdatedSpotterExperience, updatedSpotterExperience, true);
24325
25375
  return queryParams;
24326
25376
  }
24327
25377
  getIframeSrc() {
24328
- const { worksheetId, searchOptions, runtimeFilters, excludeRuntimeFiltersfromURL, runtimeParameters, excludeRuntimeParametersfromURL, } = this.viewConfig;
24329
- const path = 'insights/conv-assist';
25378
+ const { worksheetId, searchOptions, runtimeFilters, excludeRuntimeFiltersfromURL, runtimeParameters, excludeRuntimeParametersfromURL, sharedConversationId, dataSources, } = this.viewConfig;
25379
+ // Deep-link into the read-only shared-conversation reader view when a
25380
+ // shared conversation id is supplied (e.g. a recipient landing from a
25381
+ // host-configured CONVERSATION_URL share link); otherwise the normal
25382
+ // Spotter conversation surface.
25383
+ const path = sharedConversationId
25384
+ ? `insights/conv-assist/s/${encodeURIComponent(sharedConversationId)}`
25385
+ : 'insights/conv-assist';
24330
25386
  const queryParams = this.getEmbedParamsObject();
24331
25387
  let query = '';
24332
25388
  const queryParamsString = getQueryParamString(queryParams, true);
@@ -24342,8 +25398,12 @@ class SpotterEmbed extends TsEmbed {
24342
25398
  query += `&${parameterQuery}`;
24343
25399
  }
24344
25400
  const tsPostHashParams = this.getThoughtSpotPostUrlParams({
24345
- worksheet: worksheetId,
24346
- query: (searchOptions === null || searchOptions === void 0 ? void 0 : searchOptions.searchQuery) || '',
25401
+ ...(!(Array.isArray(dataSources) && dataSources.length > 0) && worksheetId
25402
+ && { worksheet: worksheetId }),
25403
+ ...((searchOptions === null || searchOptions === void 0 ? void 0 : searchOptions.searchQuery) && { query: searchOptions.searchQuery }),
25404
+ ...(Array.isArray(dataSources)
25405
+ && dataSources.length > 0
25406
+ && { dataSources: JSON.stringify(dataSources) }),
24347
25407
  });
24348
25408
  return `${this.getEmbedBasePath(query)}/embed/${path}${tsPostHashParams}`;
24349
25409
  }
@@ -25049,4 +26109,4 @@ class AutoFrameRenderer extends TsEmbed {
25049
26109
  }
25050
26110
  }
25051
26111
 
25052
- export { Action, AnswerService, AppEmbed, AuthEvent, AuthFailureType, AuthStatus, AuthType, BackgroundFormatType, BodylessConversation, ConditionalFormattingComparisonType, ConditionalFormattingOperator, ContextMenuTriggerOptions, ContextType, ConversationEmbed, CustomActionTarget, CustomActionsPosition, DataLabelFilterOperator, DataPanelCustomColumnGroupsAccordionState$1 as DataPanelCustomColumnGroupsAccordionState, DataSourceVisualMode, EmbedErrorCodes, EmbedEvent, ErrorDetailsTypes, HomeLeftNavItem, HomePage, HomePageSearchBarMode, HomepageModule, HostEvent, InterceptedApiType, LegendPosition, ListPage, ListPageColumns, LiveboardEmbed, LogLevel, MIXPANEL_EVENT, Page, PinboardEmbed, PrefetchFeatures, PrimaryNavbarVersion, RuntimeFilterOp, SearchBarEmbed, SearchEmbed, SpotterAgentEmbed, SpotterEmbed, TableContentDensity, TableTheme, UIPassthroughEvent, createLiveboardWithAnswers, executeTML, exportTML, getAnswerFromQuery, getEmbedConfig as getInitConfig, getSessionInfo, init, logout, prefetch, reloadIframe, resetCachedAuthToken, startAutoMCPFrameRenderer, tokenizedFetch, uploadMixpanelEvent };
26112
+ export { Action, AnswerService, AppEmbed, ApplicabilityLevel, AuthEvent, AuthFailureType, AuthStatus, AuthType, BackgroundFormatType, BodylessConversation, ConditionalFormattingComparisonType, ConditionalFormattingOperator, ContextMenuTriggerOptions, ContextType, ConversationEmbed, CustomActionTarget, CustomActionsPosition, DataLabelFilterOperator, DataPanelCustomColumnGroupsAccordionState$1 as DataPanelCustomColumnGroupsAccordionState, DataSourceVisualMode, EmbedErrorCodes, EmbedEvent, ErrorDetailsTypes, HomeLeftNavItem, HomePage, HomePageSearchBarMode, HomepageModule, HostEvent, InterceptedApiType, LegendPosition, ListPage, ListPageColumns, LiveboardEmbed, LogLevel, MIXPANEL_EVENT, Page, PinboardEmbed, PrefetchFeatures, PrimaryNavbarVersion, RuntimeFilterOp, SearchBarEmbed, SearchEmbed, SpotterAgentEmbed, SpotterEmbed, SpotterQueryMode, TableContentDensity, TableTheme, UIPassthroughEvent, createLiveboardWithAnswers, executeTML, exportTML, getAnswerFromQuery, getEmbedConfig as getInitConfig, getSessionInfo, init, logout, prefetch, reloadIframe, resetCachedAuthToken, startAutoMCPFrameRenderer, tokenizedFetch, uploadMixpanelEvent };