@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
  import * as React from 'react';
4
4
  import React__default, { useRef, useCallback } from 'react';
@@ -374,7 +374,9 @@ var AuthType;
374
374
  })(AuthType || (AuthType = {}));
375
375
  /**
376
376
  *
377
- * **Note**: This attribute is not supported in the classic (V1) homepage experience.
377
+ * **Note**: The classic (V1) and Modular (V2) home page experiences are
378
+ * deprecated. This attribute applies to V3 (ModularWithStylingChanges) and
379
+ * V4 (Focused) home page experiences.
378
380
  *
379
381
  */
380
382
  var HomeLeftNavItem;
@@ -442,6 +444,13 @@ var HomeLeftNavItem;
442
444
  * @version SDK: 1.41.0 | ThoughtSpot: 10.12.0.cl
443
445
  */
444
446
  HomeLeftNavItem["Favorites"] = "favorites";
447
+ /**
448
+ * The *Collections* menu option in
449
+ * the *Insights* left navigation panel.
450
+ * Shown when collections are enabled on the cluster.
451
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
452
+ */
453
+ HomeLeftNavItem["Collections"] = "collections";
445
454
  })(HomeLeftNavItem || (HomeLeftNavItem = {}));
446
455
  /**
447
456
  * A map of the supported runtime filter operations
@@ -514,7 +523,9 @@ var RuntimeFilterOp;
514
523
  * via `hiddenHomepageModules` and reordered via
515
524
  * `reorderedHomepageModules`.
516
525
  *
517
- * **Note**: This option is not supported in the classic (v1) experience.
526
+ * **Note**: The classic (V1) and Modular (V2) home page experiences are
527
+ * deprecated. These modules apply to V3 (ModularWithStylingChanges) and
528
+ * V4 (Focused) home page experiences.
518
529
  * @version SDK: 1.28.0 | ThoughtSpot: 9.12.5.cl, 10.1.0.sw
519
530
  */
520
531
  var HomepageModule;
@@ -692,7 +703,7 @@ var EmbedEvent;
692
703
  * @returns nonFilteredColumns - The columns that were not filtered
693
704
  * @example
694
705
  * ```js
695
- * searchEmbed.on(EmbedEvent.DrillDown, {
706
+ * searchEmbed.on(EmbedEvent.Drilldown, {
696
707
  * points: {
697
708
  * clickedPoint,
698
709
  * selectedPoints: selectedPoint
@@ -753,7 +764,7 @@ var EmbedEvent;
753
764
  * @version SDK: 1.1.0 | ThoughtSpot: ts7.may.cl, 8.4.1.sw
754
765
  * @example
755
766
  * ```js
756
- * appEmbed.on(EmbedEvent.customAction, payload => {
767
+ * appEmbed.on(EmbedEvent.CustomAction, payload => {
757
768
  * const data = payload.data;
758
769
  * if (data.id === 'insert Custom Action ID here') {
759
770
  * console.log('Custom Action event:', data.embedAnswerData);
@@ -1019,8 +1030,8 @@ var EmbedEvent;
1019
1030
  *
1020
1031
  * **Note**: This event is deprecated in v1.21.0.
1021
1032
  * To fire an event when a download action is initiated on a chart or table,
1022
- * use `EmbedEvent.DownloadAsPng`, `EmbedEvent.DownloadAsPDF`,
1023
- * `EmbedEvent.DownloadAsCSV`, or `EmbedEvent.DownloadAsXLSX`
1033
+ * use `EmbedEvent.DownloadAsPng`, `EmbedEvent.DownloadAsPdf`,
1034
+ * `EmbedEvent.DownloadAsCsv`, or `EmbedEvent.DownloadAsXlsx`
1024
1035
  * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw
1025
1036
  * @example
1026
1037
  * ```js
@@ -1070,10 +1081,10 @@ var EmbedEvent;
1070
1081
  * @example
1071
1082
  * ```js
1072
1083
  * //emit when action starts
1073
- * searchEmbed.on(EmbedEvent.DownloadAsCSV, payload => {
1084
+ * searchEmbed.on(EmbedEvent.DownloadAsCsv, payload => {
1074
1085
  * console.log('download CSV', payload)}, {start: true })
1075
1086
  * //emit when action ends
1076
- * searchEmbed.on(EmbedEvent.DownloadAsCSV, payload => {
1087
+ * searchEmbed.on(EmbedEvent.DownloadAsCsv, payload => {
1077
1088
  * console.log('download CSV', payload)})
1078
1089
  * ```
1079
1090
  */
@@ -1472,11 +1483,19 @@ var EmbedEvent;
1472
1483
  * Emitted when a user changes any filter on a Liveboard.
1473
1484
  * Returns filter type and name, column name and ID, and runtime
1474
1485
  * filter details.
1486
+ * The payload includes an optional `applicability` attribute indicating the
1487
+ * scope of the changed filter. It contains a `level` (`LIVEBOARD`,
1488
+ * `TAB`, or `GROUP`) and, when `level` is `TAB` or `GROUP`, a
1489
+ * `targetId` with the GUID of the target. At `LIVEBOARD` level there
1490
+ * is no `targetId`, since the filter applies to the whole Liveboard.
1491
+ * The `applicability` attribute is available from SDK: 1.53.0 |
1492
+ * ThoughtSpot: 26.10.0.cl.
1475
1493
  * @example
1476
1494
  *
1477
1495
  * ```js
1478
1496
  * LiveboardEmbed.on(EmbedEvent.FilterChanged, (payload) => {
1479
1497
  * console.log('payload', payload);
1498
+ * // payload.data optionally includes applicability: { level, targetId }
1480
1499
  * })
1481
1500
  * ```
1482
1501
  * @version SDK: 1.23.0 | ThoughtSpot: 9.4.0.cl, 9.5.0.sw
@@ -1668,9 +1687,17 @@ var EmbedEvent;
1668
1687
  /**
1669
1688
  * Emitted when parameter changes in an Answer
1670
1689
  * or Liveboard.
1690
+ * The payload includes an optional `applicability` attribute indicating the
1691
+ * scope of the changed parameter. It contains a `level` (`LIVEBOARD`,
1692
+ * `TAB`, or `GROUP`) and, when `level` is `TAB` or `GROUP`, a
1693
+ * `targetId` with the GUID of the target. At `LIVEBOARD` level there
1694
+ * is no `targetId`, since the parameter applies to the whole Liveboard.
1695
+ * The `applicability` attribute is available from SDK: 1.53.0 |
1696
+ * ThoughtSpot: 26.10.0.cl.
1671
1697
  * ```js
1672
1698
  * liveboardEmbed.on(EmbedEvent.ParameterChanged, (payload) => {
1673
1699
  * console.log('payload', payload);
1700
+ * // payload.data optionally includes applicability: { level, targetId }
1674
1701
  * })
1675
1702
  * ```
1676
1703
  * @version SDK: 1.29.0 | ThoughtSpot: 10.3.0.cl
@@ -1972,6 +1999,158 @@ var EmbedEvent;
1972
1999
  * @version SDK: 1.46.0 | ThoughtSpot: 26.3.0.cl
1973
2000
  */
1974
2001
  EmbedEvent["SpotterConversationDeleted"] = "spotterConversationDeleted";
2002
+ /**
2003
+ * Emitted when the header Share button is clicked. Fires `Start` then `End`
2004
+ * to bracket the interaction. App→host counterpart of the
2005
+ * `ShareSpotterConversation` host event (user-driven vs programmatic open).
2006
+ * @example
2007
+ * ```js
2008
+ * spotterEmbed.on(EmbedEvent.SpotterShareConversationButtonHeaderClicked, (payload) => {
2009
+ * // payload: { convId: string }
2010
+ * })
2011
+ * ```
2012
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
2013
+ */
2014
+ EmbedEvent["SpotterShareConversationButtonHeaderClicked"] = "spotterShareConversationButtonHeaderClicked";
2015
+ /**
2016
+ * Emitted when the sidebar Share item is clicked. Fires `Start` then `End`
2017
+ * to bracket the interaction.
2018
+ * @example
2019
+ * ```js
2020
+ * spotterEmbed.on(EmbedEvent.SpotterShareConversationMenuItemSidebarClicked, (payload) => {
2021
+ * // payload: { convId: string }
2022
+ * })
2023
+ * ```
2024
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
2025
+ */
2026
+ EmbedEvent["SpotterShareConversationMenuItemSidebarClicked"] = "spotterShareConversationMenuItemSidebarClicked";
2027
+ /**
2028
+ * Emitted when a Spotter conversation is shared (recipients added, or a new
2029
+ * share created). The host builds its own link from shareId/convId + its
2030
+ * configured CONVERSATION_URL — no link string is sent. Distinct from
2031
+ * `SpotterShareModalConfirmButtonClicked`, which fires at click time before
2032
+ * the save resolves.
2033
+ * @example
2034
+ * ```js
2035
+ * spotterEmbed.on(EmbedEvent.SpotterConversationShared, (payload) => {
2036
+ * // payload: { convId: string, shareId: string,
2037
+ * // recipientsAdded: string[], recipientsRemoved: string[] }
2038
+ * })
2039
+ * ```
2040
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
2041
+ */
2042
+ EmbedEvent["SpotterConversationShared"] = "spotterConversationShared";
2043
+ /**
2044
+ * Emitted when access to a shared Spotter conversation is revoked
2045
+ * (recipients removed). `fullyRevoked` is true when the last sharee is removed
2046
+ * and the share is deleted entirely.
2047
+ * @example
2048
+ * ```js
2049
+ * spotterEmbed.on(EmbedEvent.SpotterConversationShareRevoked, (payload) => {
2050
+ * // payload: { convId: string, shareId: string,
2051
+ * // recipientsRemoved: string[], fullyRevoked: boolean }
2052
+ * })
2053
+ * ```
2054
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
2055
+ */
2056
+ EmbedEvent["SpotterConversationShareRevoked"] = "spotterConversationShareRevoked";
2057
+ /**
2058
+ * Emitted when a recipient opens a shared Spotter conversation (read-only
2059
+ * view). No shareId available viewer-side.
2060
+ * @example
2061
+ * ```js
2062
+ * spotterEmbed.on(EmbedEvent.SpotterSharedConversationViewed, (payload) => {
2063
+ * // payload: { convId: string, sourceConvId: string }
2064
+ * // convId = resolved snapshot conv id; sourceConvId = the shared URL id
2065
+ * })
2066
+ * ```
2067
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
2068
+ */
2069
+ EmbedEvent["SpotterSharedConversationViewed"] = "spotterSharedConversationViewed";
2070
+ /**
2071
+ * Emitted when the user toggles the share-modal "include new messages since
2072
+ * last shared version" checkbox.
2073
+ * @example
2074
+ * ```js
2075
+ * spotterEmbed.on(EmbedEvent.SpotterShareIncludeNewMessagesCheckboxToggled, (payload) => {
2076
+ * // payload: { convId: string, includeNewMessages: boolean }
2077
+ * })
2078
+ * ```
2079
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
2080
+ */
2081
+ EmbedEvent["SpotterShareIncludeNewMessagesCheckboxToggled"] = "spotterShareIncludeNewMessagesCheckboxToggled";
2082
+ /**
2083
+ * Emitted when the user dismisses the stale-snapshot info banner via its
2084
+ * cross (distinct from the include-new-messages checkbox toggle).
2085
+ * @example
2086
+ * ```js
2087
+ * spotterEmbed.on(EmbedEvent.SpotterShareStaleInfoBannerDismissed, (payload) => {
2088
+ * // payload: { convId: string }
2089
+ * })
2090
+ * ```
2091
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
2092
+ */
2093
+ EmbedEvent["SpotterShareStaleInfoBannerDismissed"] = "spotterShareStaleInfoBannerDismissed";
2094
+ /**
2095
+ * Emitted when the modal Share (confirm) button is clicked — fires at click
2096
+ * time, before the save resolves. Distinct from the `SpotterConversationShared`
2097
+ * / `SpotterConversationShareRevoked` result events.
2098
+ * @example
2099
+ * ```js
2100
+ * spotterEmbed.on(EmbedEvent.SpotterShareModalConfirmButtonClicked, (payload) => {
2101
+ * // payload: { convId: string }
2102
+ * })
2103
+ * ```
2104
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
2105
+ */
2106
+ EmbedEvent["SpotterShareModalConfirmButtonClicked"] = "spotterShareModalConfirmButtonClicked";
2107
+ /**
2108
+ * Emitted when the share modal is dismissed via the Cancel button.
2109
+ * @example
2110
+ * ```js
2111
+ * spotterEmbed.on(EmbedEvent.SpotterShareModalCancelButtonClicked, (payload) => {
2112
+ * // payload: { convId: string }
2113
+ * })
2114
+ * ```
2115
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
2116
+ */
2117
+ EmbedEvent["SpotterShareModalCancelButtonClicked"] = "spotterShareModalCancelButtonClicked";
2118
+ /**
2119
+ * Emitted when a recipient leaves the read-only shared view via the Exit
2120
+ * button.
2121
+ * @example
2122
+ * ```js
2123
+ * spotterEmbed.on(EmbedEvent.SpotterSharedConversationExitButtonClicked, (payload) => {
2124
+ * // payload: { convId: string }
2125
+ * })
2126
+ * ```
2127
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
2128
+ */
2129
+ EmbedEvent["SpotterSharedConversationExitButtonClicked"] = "spotterSharedConversationExitButtonClicked";
2130
+ /**
2131
+ * Emitted when a Spotter conversation is pinned.
2132
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
2133
+ * @example
2134
+ * ```js
2135
+ * spotterEmbed.on(EmbedEvent.SpotterConversationPinned, (payload) => {
2136
+ * console.log('Conversation pinned', payload);
2137
+ * // payload: { conversationId: string, pinnedAt: string (ISO 8601) }
2138
+ * })
2139
+ * ```
2140
+ */
2141
+ EmbedEvent["SpotterConversationPinned"] = "spotterConversationPinned";
2142
+ /**
2143
+ * Emitted when a Spotter conversation is unpinned.
2144
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
2145
+ * @example
2146
+ * ```js
2147
+ * spotterEmbed.on(EmbedEvent.SpotterConversationUnpinned, (payload) => {
2148
+ * console.log('Conversation unpinned', payload);
2149
+ * // payload: { conversationId: string, unpinnedAt: string (ISO 8601) }
2150
+ * })
2151
+ * ```
2152
+ */
2153
+ EmbedEvent["SpotterConversationUnpinned"] = "spotterConversationUnpinned";
1975
2154
  /**
1976
2155
  * Emitted when a Spotter conversation is selected/clicked.
1977
2156
  * @example
@@ -1984,6 +2163,30 @@ var EmbedEvent;
1984
2163
  * @version SDK: 1.46.0 | ThoughtSpot: 26.3.0.cl
1985
2164
  */
1986
2165
  EmbedEvent["SpotterConversationSelected"] = "spotterConversationSelected";
2166
+ /**
2167
+ * Emitted when the Spotter agent finishes streaming/rendering a response.
2168
+ * Includes the conversation and message identifiers so the host app can
2169
+ * fetch the full conversation history via the REST API if needed.
2170
+ *
2171
+ * The payload data has the shape `{ convId: string, messageId: string }`.
2172
+ *
2173
+ * Works with SpotterEmbed as well as AppEmbed (when Spotter is reached
2174
+ * inside the full application).
2175
+ * @example
2176
+ * ```js
2177
+ * spotterEmbed.on(EmbedEvent.SpotterResponseComplete, (payload) => {
2178
+ * console.log('Spotter response complete', payload);
2179
+ * })
2180
+ * ```
2181
+ * @example
2182
+ * ```js
2183
+ * appEmbed.on(EmbedEvent.SpotterResponseComplete, (payload) => {
2184
+ * console.log('Spotter response complete', payload);
2185
+ * })
2186
+ * ```
2187
+ * @version SDK: 1.51.0 | ThoughtSpot Cloud: 26.9.0.cl
2188
+ */
2189
+ EmbedEvent["SpotterResponseComplete"] = "spotterResponseComplete";
1987
2190
  /**
1988
2191
  * @hidden
1989
2192
  * Emitted when the auth token is about to get expired and needs to be refreshed.
@@ -2338,6 +2541,7 @@ var HostEvent;
2338
2541
  * const url = await appEmbed.trigger(HostEvent.GetIframeUrl, {}, ContextType.Answer);
2339
2542
  * console.log("iFrameURL", url);
2340
2543
  * ```
2544
+ * @returns iframeUrl - The URL currently loaded in the embedded iframe.
2341
2545
  * @version SDK: 1.35.0 | ThoughtSpot: 10.4.0.cl
2342
2546
  */
2343
2547
  HostEvent["GetIframeUrl"] = "GetIframeUrl";
@@ -2464,6 +2668,17 @@ var HostEvent;
2464
2668
  * name: string,
2465
2669
  * type: ATTRIBUTE/MEASURE,
2466
2670
  * dataType: INT64/CHAR/DATE }
2671
+ *
2672
+ * `applicability` - Optional. Scopes the filter to a specific target,
2673
+ * for example, a single Liveboard tab, so the panel for the correct
2674
+ * scoped filter is opened. Available from SDK: 1.53.0 |
2675
+ * ThoughtSpot: 26.10.0.cl. Includes the following attributes:
2676
+ *
2677
+ * - `level`: The scope of the filter: `LIVEBOARD`, `TAB`, or `GROUP`.
2678
+ * - `targetId`: The GUID of the target, for example, the tab GUID.
2679
+ * Required when `level` is `TAB` or `GROUP`. Do not pass it when
2680
+ * `level` is `LIVEBOARD`, since the filter applies to the whole
2681
+ * Liveboard. Omitting `applicability` targets the `LIVEBOARD` level.
2467
2682
  * @example
2468
2683
  * ```js
2469
2684
  * searchEmbed.trigger(HostEvent.OpenFilter,
@@ -2476,6 +2691,14 @@ var HostEvent;
2476
2691
  * ```
2477
2692
  * @example
2478
2693
  * ```js
2694
+ * // Open a filter scoped to a specific Liveboard tab
2695
+ * liveboardEmbed.trigger(HostEvent.OpenFilter, {
2696
+ * column: { columnId: '<column-GUID>' },
2697
+ * applicability: { level: 'TAB', targetId: '<tab-GUID>' }
2698
+ * });
2699
+ * ```
2700
+ * @example
2701
+ * ```js
2479
2702
  * // Open filter from search context
2480
2703
  * import { ContextType } from '@thoughtspot/visual-embed-sdk';
2481
2704
  * searchEmbed.trigger(HostEvent.OpenFilter, {
@@ -2485,6 +2708,73 @@ var HostEvent;
2485
2708
  * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl
2486
2709
  */
2487
2710
  HostEvent["OpenFilter"] = "openFilter";
2711
+ /**
2712
+ * Open the add-filter modal of a Liveboard, the same dialog that the
2713
+ * *Add filter* button in the Liveboard edit header opens, so the host
2714
+ * app can start the add-filter flow from its own UI.
2715
+ *
2716
+ * The Liveboard must be in edit mode; the event is ignored otherwise.
2717
+ * Hiding the *Add filter* button with `hiddenActions:
2718
+ * [Action.AddFilter]` does not block this event, but disabling it with
2719
+ * `disabledActions` does.
2720
+ *
2721
+ * Unlike {@link HostEvent.OpenFilter}, which opens the panel of an
2722
+ * existing filter, this event starts the creation of a new filter.
2723
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
2724
+ * @example
2725
+ * ```js
2726
+ * liveboardEmbed.trigger(HostEvent.OpenAddFilterModal);
2727
+ * ```
2728
+ */
2729
+ HostEvent["OpenAddFilterModal"] = "openAddFilterModal";
2730
+ /**
2731
+ * Open the add-parameter panel of a Liveboard, the same panel that the
2732
+ * *Add parameter* button in the Liveboard edit header opens.
2733
+ * Mirrors {@link HostEvent.OpenAddFilterModal} for parameters.
2734
+ *
2735
+ * The Liveboard must be in edit mode; the event is ignored otherwise.
2736
+ * Hiding the *Add parameter* button with `hiddenActions:
2737
+ * [Action.AddParameter]` does not block this event, but disabling it
2738
+ * with `disabledActions` does.
2739
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
2740
+ * @example
2741
+ * ```js
2742
+ * liveboardEmbed.trigger(HostEvent.OpenAddParameterModal);
2743
+ * ```
2744
+ */
2745
+ HostEvent["OpenAddParameterModal"] = "openAddParameterModal";
2746
+ /**
2747
+ * Open the parameter panel for a particular parameter on a Liveboard.
2748
+ * Mirrors {@link HostEvent.OpenFilter} for parameters.
2749
+ * @param - Includes the following keys:
2750
+ * - `parameter`: An object identifying the parameter to open, for
2751
+ * example, `{ parameterId: '<parameter-GUID>' }`.
2752
+ * - `applicability`: Optional. Scopes the parameter to a specific target,
2753
+ * for example, a single Liveboard tab, so the panel for the correct
2754
+ * scoped parameter is opened. Includes the following attributes:
2755
+ *
2756
+ * - `level`: The scope of the parameter: `LIVEBOARD`, `TAB`, or `GROUP`.
2757
+ * - `targetId`: The GUID of the target, for example, the tab GUID.
2758
+ * Required when `level` is `TAB` or `GROUP`. Do not pass it when
2759
+ * `level` is `LIVEBOARD`, since the parameter applies to the whole
2760
+ * Liveboard. Omitting `applicability` targets the `LIVEBOARD` level.
2761
+ * @example
2762
+ * ```js
2763
+ * liveboardEmbed.trigger(HostEvent.OpenParameter, {
2764
+ * parameter: { parameterId: '<parameter-GUID>' }
2765
+ * });
2766
+ * ```
2767
+ * @example
2768
+ * ```js
2769
+ * // Open a parameter scoped to a specific group
2770
+ * liveboardEmbed.trigger(HostEvent.OpenParameter, {
2771
+ * parameter: { parameterId: '<parameter-GUID>' },
2772
+ * applicability: { level: 'GROUP', targetId: '<group-GUID>' }
2773
+ * });
2774
+ * ```
2775
+ * @version SDK: 1.53.0 | ThoughtSpot: 26.10.0.cl
2776
+ */
2777
+ HostEvent["OpenParameter"] = "openParameter";
2488
2778
  /**
2489
2779
  * Add columns to the current search query.
2490
2780
  * @param - { columnIds: string[] }
@@ -2534,6 +2824,10 @@ var HostEvent;
2534
2824
  * liveboardEmbed.trigger(HostEvent.getExportRequestForCurrentPinboard).then(
2535
2825
  * data=>console.log(data))
2536
2826
  * ```
2827
+ * @returns data - Object with a `v2Content` string: the export request
2828
+ * payload for the current Liveboard.
2829
+ * @returns type - The passthrough event name,
2830
+ * `getExportRequestForCurrentPinboard`.
2537
2831
  * @version SDK: 1.13.0 | ThoughtSpot: 8.5.0.cl, 8.8.1.sw
2538
2832
  */
2539
2833
  HostEvent["getExportRequestForCurrentPinboard"] = "getExportRequestForCurrentPinboard";
@@ -2636,6 +2930,9 @@ var HostEvent;
2636
2930
  * }, ContextType.Spotter);
2637
2931
  * ```
2638
2932
  *
2933
+ * @returns liveboardId - GUID of the Liveboard the Answer was pinned to.
2934
+ * @returns tabId - GUID of the tab within that Liveboard.
2935
+ * @returns vizId - GUID of the newly created visualization.
2639
2936
  * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw
2640
2937
  */
2641
2938
  HostEvent["Pin"] = "pin";
@@ -2674,13 +2971,13 @@ var HostEvent;
2674
2971
  * Trigger the **Manage schedule** action on an embedded Liveboard
2675
2972
  * @example
2676
2973
  * ```js
2677
- * liveboardEmbed.trigger(HostEvent.ScheduleList)
2974
+ * liveboardEmbed.trigger(HostEvent.SchedulesList)
2678
2975
  * ```
2679
2976
  * @example
2680
2977
  * ```js
2681
2978
  * // Manage schedules from liveboard context
2682
2979
  * import { ContextType } from '@thoughtspot/visual-embed-sdk';
2683
- * liveboardEmbed.trigger(HostEvent.ScheduleList, {}, ContextType.Liveboard);
2980
+ * liveboardEmbed.trigger(HostEvent.SchedulesList, {}, ContextType.Liveboard);
2684
2981
  * ```
2685
2982
  * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw
2686
2983
  */
@@ -3125,6 +3422,7 @@ var HostEvent;
3125
3422
  * console.log(tml.answer);
3126
3423
  * });
3127
3424
  * ```
3425
+ * @returns The TML representation of the current Answer, as an object.
3128
3426
  * @version SDK: 1.18.0 | ThoughtSpot: 8.10.0.cl, 9.0.1.sw
3129
3427
  * @important
3130
3428
  */
@@ -3549,6 +3847,14 @@ var HostEvent;
3549
3847
  /**
3550
3848
  * Get details of filters applied on the Liveboard.
3551
3849
  * Returns arrays containing Liveboard filter and runtime filter elements.
3850
+ * Each Liveboard filter includes an optional `applicability` attribute
3851
+ * indicating the scope of the filter. It contains a `level`
3852
+ * (`LIVEBOARD`, `TAB`, or `GROUP`) and, when `level` is `TAB` or
3853
+ * `GROUP`, a `targetId` with the GUID of the target. At `LIVEBOARD`
3854
+ * level there is no `targetId`, since the filter applies to the
3855
+ * whole Liveboard.
3856
+ * The `applicability` attribute is available from SDK: 1.53.0 |
3857
+ * ThoughtSpot: 26.10.0.cl.
3552
3858
  * @example
3553
3859
  * ```js
3554
3860
  * const data = await liveboardEmbed.trigger(HostEvent.GetFilters);
@@ -3561,6 +3867,8 @@ var HostEvent;
3561
3867
  * const data = await liveboardEmbed.trigger(HostEvent.GetFilters, {}, ContextType.Liveboard);
3562
3868
  * console.log('filters', data);
3563
3869
  * ```
3870
+ * @returns liveboardFilters - Filters applied on the Liveboard.
3871
+ * @returns runtimeFilters - Runtime filters applied on the Liveboard.
3564
3872
  * @version SDK: 1.23.0 | ThoughtSpot: 9.4.0.cl
3565
3873
  */
3566
3874
  HostEvent["GetFilters"] = "getFilters";
@@ -3588,6 +3896,16 @@ var HostEvent;
3588
3896
  *
3589
3897
  * `type` - To update filters for date time, specify the date format type.
3590
3898
  * For more information and examples, see link:https://developers.thoughtspot.com/docs/embed-liveboard#_date_filters[Date filters].
3899
+ *
3900
+ * `applicability` - Optional. Scopes the filter to a specific target,
3901
+ * for example, a single Liveboard tab. Available from SDK: 1.53.0 |
3902
+ * ThoughtSpot: 26.10.0.cl. Includes the following attributes:
3903
+ *
3904
+ * - `level`: The scope of the filter: `LIVEBOARD`, `TAB`, or `GROUP`.
3905
+ * - `targetId`: The GUID of the target, for example, the tab GUID.
3906
+ * Required when `level` is `TAB` or `GROUP`. Do not pass it when
3907
+ * `level` is `LIVEBOARD`, since the filter applies to the whole
3908
+ * Liveboard.
3591
3909
  * @example
3592
3910
  * ```js
3593
3911
  *
@@ -3664,6 +3982,21 @@ var HostEvent;
3664
3982
  * }
3665
3983
  * }, ContextType.Liveboard);
3666
3984
  * ```
3985
+ * @example
3986
+ * ```js
3987
+ * // Scope the filter to a specific Liveboard tab
3988
+ * liveboardEmbed.trigger(HostEvent.UpdateFilters, {
3989
+ * filter: {
3990
+ * column: "item type",
3991
+ * oper: "IN",
3992
+ * values: ["bags", "shirts"],
3993
+ * applicability: {
3994
+ * level: "TAB",
3995
+ * targetId: "e0836cad-4fdf-42d4-bd97-567a6b2a6058"
3996
+ * }
3997
+ * }
3998
+ * });
3999
+ * ```
3667
4000
  * @version SDK: 1.23.0 | ThoughtSpot: 9.4.0.cl
3668
4001
  */
3669
4002
  HostEvent["UpdateFilters"] = "updateFilters";
@@ -3685,9 +4018,37 @@ var HostEvent;
3685
4018
  * console.log('tabs', tabDetails);
3686
4019
  * });
3687
4020
  * ```
4021
+ * @returns orderedTabIds - Tab GUIDs in the order they appear.
4022
+ * @returns numberOfTabs - Total number of tabs on the Liveboard.
4023
+ * @returns Tabs - Tab details, each with at least `id` and `name`.
3688
4024
  * @version SDK: 1.26.0 | ThoughtSpot: 9.7.0.cl
3689
4025
  */
3690
4026
  HostEvent["GetTabs"] = "getTabs";
4027
+ /**
4028
+ * Get group details for the current Liveboard.
4029
+ * Mirrors {@link HostEvent.GetTabs} for filter/parameter groups.
4030
+ * @example
4031
+ * ```js
4032
+ * liveboardEmbed.trigger(HostEvent.GetGroups).then((groupDetails) => {
4033
+ * console.log(
4034
+ * groupDetails // GroupDetails of current Liveboard
4035
+ * );
4036
+ * })
4037
+ * ```
4038
+ * @example
4039
+ * ```js
4040
+ * // Get groups from liveboard context
4041
+ * import { ContextType } from '@thoughtspot/visual-embed-sdk';
4042
+ * liveboardEmbed.trigger(HostEvent.GetGroups, {}, ContextType.Liveboard).then((groupDetails) => {
4043
+ * console.log('groups', groupDetails);
4044
+ * });
4045
+ * ```
4046
+ * @returns orderedGroupIds - Group GUIDs in the order they appear.
4047
+ * @returns numberOfGroups - Total number of groups on the Liveboard.
4048
+ * @returns Groups - Group details, each with at least `id` and `name`.
4049
+ * @version SDK: 1.53.0 | ThoughtSpot: 26.10.0.cl
4050
+ */
4051
+ HostEvent["GetGroups"] = "getGroups";
3691
4052
  /**
3692
4053
  * Set the visible tabs on a Liveboard.
3693
4054
  * @param - an array of ids of tabs to show, the IDs not passed
@@ -3759,6 +4120,9 @@ var HostEvent;
3759
4120
  * // Alternative direct usage (not recommended)
3760
4121
  * const {session} = await embed.trigger( HostEvent.GetAnswerSession )
3761
4122
  * ```
4123
+ * @returns session - Session identifier for the Answer, for use with the
4124
+ * `AnswerService`.
4125
+ * @returns embedAnswerData - Data backing the Answer, when available.
3762
4126
  * @version SDK: 1.26.0 | ThoughtSpot: 9.10.0.cl, 10.1.0.sw
3763
4127
  */
3764
4128
  HostEvent["GetAnswerSession"] = "getAnswerSession";
@@ -3815,6 +4179,15 @@ var HostEvent;
3815
4179
  * - `name`: Name of the parameter.
3816
4180
  * - `value`: The value to set for the parameter.
3817
4181
  * - `isVisibleToUser`: Optional. To control the visibility of the parameter chip.
4182
+ * - `applicability`: Optional. Scopes the parameter to a specific target,
4183
+ * for example, a single Liveboard tab. Available from SDK: 1.53.0 |
4184
+ * ThoughtSpot: 26.10.0.cl. Includes the following attributes:
4185
+ *
4186
+ * - `level`: The scope of the parameter: `LIVEBOARD`, `TAB`, or `GROUP`.
4187
+ * - `targetId`: The GUID of the target, for example, the tab GUID.
4188
+ * Required when `level` is `TAB` or `GROUP`. Do not pass it when
4189
+ * `level` is `LIVEBOARD`, since the parameter applies to the whole
4190
+ * Liveboard.
3818
4191
  *
3819
4192
  * @example
3820
4193
  * ```js
@@ -3826,6 +4199,18 @@ var HostEvent;
3826
4199
  * ```
3827
4200
  * @example
3828
4201
  * ```js
4202
+ * // Scope the parameter to a specific Liveboard tab
4203
+ * liveboardEmbed.trigger(HostEvent.UpdateParameters, [{
4204
+ * name: "Integer Range Param",
4205
+ * value: 10,
4206
+ * applicability: {
4207
+ * level: "TAB",
4208
+ * targetId: "e0836cad-4fdf-42d4-bd97-567a6b2a6058"
4209
+ * }
4210
+ * }])
4211
+ * ```
4212
+ * @example
4213
+ * ```js
3829
4214
  * // Update parameters from liveboard context
3830
4215
  * import { ContextType } from '@thoughtspot/visual-embed-sdk';
3831
4216
  * liveboardEmbed.trigger(HostEvent.UpdateParameters, [{
@@ -3839,6 +4224,14 @@ var HostEvent;
3839
4224
  HostEvent["UpdateParameters"] = "UpdateParameters";
3840
4225
  /**
3841
4226
  * Triggers GetParameters to fetch the runtime Parameters.
4227
+ * Each parameter includes an optional `applicability` attribute
4228
+ * indicating the scope of the parameter. It contains a `level`
4229
+ * (`LIVEBOARD`, `TAB`, or `GROUP`) and, when `level` is `TAB` or
4230
+ * `GROUP`, a `targetId` with the GUID of the target. At `LIVEBOARD`
4231
+ * level there is no `targetId`, since the parameter applies to the
4232
+ * whole Liveboard.
4233
+ * The `applicability` attribute is available from SDK: 1.53.0 |
4234
+ * ThoughtSpot: 26.10.0.cl.
3842
4235
  * @param - `vizId` refers to the Answer ID in Spotter embed and is required in Spotter embed.
3843
4236
  * ```js
3844
4237
  * liveboardEmbed.trigger(HostEvent.GetParameters).then((parameter) => {
@@ -3863,12 +4256,16 @@ var HostEvent;
3863
4256
  * console.log('parameters', parameters);
3864
4257
  * });
3865
4258
  * ```
4259
+ * @returns parameters - Parameters currently applied on the Liveboard.
3866
4260
  * @version SDK: 1.29.0 | ThoughtSpot: 10.1.0.cl, 10.1.0.sw
3867
4261
  */
3868
4262
  HostEvent["GetParameters"] = "GetParameters";
3869
4263
  /**
3870
4264
  * Triggers an event to update a personalized view of a Liveboard.
3871
- * This event is deprecated. Use {@link HostEvent.UpdatePersonalizedView} instead.
4265
+ * This event is deprecated. Use {@link HostEvent.SelectPersonalizedView} instead,
4266
+ * which additionally accepts a `viewName`, resets to the original view when
4267
+ * called with an empty payload, and reports an error when a named view
4268
+ * cannot be found.
3872
4269
  * ```js
3873
4270
  * liveboardEmbed.trigger(HostEvent.UpdatePersonalisedView, {viewId: '1234'})
3874
4271
  * ```
@@ -3886,10 +4283,15 @@ var HostEvent;
3886
4283
  HostEvent["UpdatePersonalisedView"] = "UpdatePersonalisedView";
3887
4284
  /**
3888
4285
  * Triggers an event to update a personalized view of a Liveboard.
4286
+ * This event is deprecated. Use {@link HostEvent.SelectPersonalizedView} instead,
4287
+ * which additionally accepts a `viewName`, resets to the original view when
4288
+ * called with an empty payload, and reports an error when a named view
4289
+ * cannot be found.
3889
4290
  * ```js
3890
4291
  * liveboardEmbed.trigger(HostEvent.UpdatePersonalisedView, {viewId: '1234'})
3891
4292
  * ```
3892
4293
  * @version SDK: 1.48.0 | ThoughtSpot: 26.5.0.cl
4294
+ * @deprecated SDK: 1.53.0 | ThoughtSpot: 26.10.0.cl
3893
4295
  */
3894
4296
  HostEvent["UpdatePersonalizedView"] = "UpdatePersonalisedView";
3895
4297
  /**
@@ -3992,6 +4394,10 @@ var HostEvent;
3992
4394
  * description: "Generated from Spotter"
3993
4395
  * }, ContextType.Spotter);
3994
4396
  * ```
4397
+ * @returns answerId - GUID of the saved Answer.
4398
+ * @returns saveResponse - Raw response from the save operation.
4399
+ * @returns shareResponse - Raw response from the share operation, when the
4400
+ * Answer was also made discoverable.
3995
4401
  * @version SDK: 1.36.0 | ThoughtSpot: 10.6.0.cl
3996
4402
  */
3997
4403
  HostEvent["SaveAnswer"] = "saveAnswer";
@@ -4105,6 +4511,36 @@ var HostEvent;
4105
4511
  * @version SDK: 1.40.0 | ThoughtSpot: 10.11.0.cl
4106
4512
  */
4107
4513
  HostEvent["ResetSpotterConversation"] = "ResetSpotterConversation";
4514
+ /**
4515
+ * Opens the Spotter share-conversation modal for the given conversation.
4516
+ * `conversationId` is **mandatory** — you must pass the id of the
4517
+ * conversation to share. Also no-op when sharing is disabled
4518
+ * (enableShareConversation off) or when already in the read-only shared view.
4519
+ * @example
4520
+ * ```js
4521
+ * spotterEmbed.trigger(HostEvent.ShareSpotterConversation, { conversationId: 'abc' });
4522
+ * ```
4523
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
4524
+ */
4525
+ HostEvent["ShareSpotterConversation"] = "ShareSpotterConversation";
4526
+ /**
4527
+ * Closes the Spotter share-conversation modal. No-op if none is open.
4528
+ * @example
4529
+ * ```js
4530
+ * spotterEmbed.trigger(HostEvent.CloseSpotterShareConversation);
4531
+ * ```
4532
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
4533
+ */
4534
+ HostEvent["CloseSpotterShareConversation"] = "CloseSpotterShareConversation";
4535
+ /**
4536
+ * Exits the read-only shared-conversation view.
4537
+ * @example
4538
+ * ```js
4539
+ * spotterEmbed.trigger(HostEvent.ExitSpotterSharedConversation);
4540
+ * ```
4541
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
4542
+ */
4543
+ HostEvent["ExitSpotterSharedConversation"] = "ExitSpotterSharedConversation";
4108
4544
  /**
4109
4545
  * Deletes the last prompt in spotter embed.
4110
4546
  * @example
@@ -4200,6 +4636,41 @@ var HostEvent;
4200
4636
  * @version SDK: 1.45.0 | ThoughtSpot: 26.2.0.cl
4201
4637
  */
4202
4638
  HostEvent["StartNewSpotterConversation"] = "StartNewSpotterConversation";
4639
+ /**
4640
+ * Pins a saved Spotter conversation so it floats to the top of the past
4641
+ * conversations sidebar. The `conversationId` of the conversation to pin is
4642
+ * required.
4643
+ *
4644
+ * This feature is available only when chat history is enabled on your ThoughtSpot
4645
+ * instance. Contact your admin or ThoughtSpot Support to enable chat history on your
4646
+ * instance.
4647
+ *
4648
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
4649
+ * @example
4650
+ * ```js
4651
+ * spotterEmbed.trigger(HostEvent.PinSpotterConversation, {
4652
+ * conversationId: '<conversation-id>',
4653
+ * });
4654
+ * ```
4655
+ */
4656
+ HostEvent["PinSpotterConversation"] = "PinSpotterConversation";
4657
+ /**
4658
+ * Unpins a previously pinned Spotter conversation. The `conversationId` of the
4659
+ * conversation to unpin is required.
4660
+ *
4661
+ * This feature is available only when chat history is enabled on your ThoughtSpot
4662
+ * instance. Contact your admin or ThoughtSpot Support to enable chat history on your
4663
+ * instance.
4664
+ *
4665
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
4666
+ * @example
4667
+ * ```js
4668
+ * spotterEmbed.trigger(HostEvent.UnpinSpotterConversation, {
4669
+ * conversationId: '<conversation-id>',
4670
+ * });
4671
+ * ```
4672
+ */
4673
+ HostEvent["UnpinSpotterConversation"] = "UnpinSpotterConversation";
4203
4674
  /**
4204
4675
  * @hidden
4205
4676
  * Get the current context of the embedded page.
@@ -4408,6 +4879,7 @@ var Param;
4408
4879
  Param["NumberFormatLocale"] = "numberFormatLocale";
4409
4880
  Param["CurrencyFormat"] = "currencyFormat";
4410
4881
  Param["Enable2ColumnLayout"] = "enable2ColumnLayout";
4882
+ Param["IsLiveboardAlwaysOn12ColLayout"] = "isLiveboardAlwaysOn12ColLayout";
4411
4883
  Param["IsFullAppEmbed"] = "isFullAppEmbed";
4412
4884
  Param["IsOnBeforeGetVizDataInterceptEnabled"] = "isOnBeforeGetVizDataInterceptEnabled";
4413
4885
  Param["FocusSearchBarOnRender"] = "focusSearchBarOnRender";
@@ -4421,6 +4893,7 @@ var Param;
4421
4893
  Param["SpotterEnabled"] = "isSpotterExperienceEnabled";
4422
4894
  Param["IsUnifiedSearchExperienceEnabled"] = "isUnifiedSearchExperienceEnabled";
4423
4895
  Param["OverrideOrgId"] = "orgId";
4896
+ Param["OverrideHistoryState"] = "overrideHistoryState";
4424
4897
  Param["OauthPollingInterval"] = "oAuthPollingInterval";
4425
4898
  Param["IsForceRedirect"] = "isForceRedirect";
4426
4899
  Param["DataSourceId"] = "dataSourceId";
@@ -4430,6 +4903,7 @@ var Param;
4430
4903
  Param["PrimaryAction"] = "primaryAction";
4431
4904
  Param["isSpotterAgentEmbed"] = "isSpotterAgentEmbed";
4432
4905
  Param["IsLiveboardStylingAndGroupingEnabled"] = "isLiveboardStylingAndGroupingEnabled";
4906
+ Param["LiveboardGutter"] = "liveboardGutter";
4433
4907
  Param["IsLazyLoadingForEmbedEnabled"] = "isLazyLoadingForEmbedEnabled";
4434
4908
  Param["RootMarginForLazyLoad"] = "rootMarginForLazyLoad";
4435
4909
  Param["isPNGInScheduledEmailsEnabled"] = "isPNGInScheduledEmailsEnabled";
@@ -4438,9 +4912,12 @@ var Param;
4438
4912
  Param["isGranularXLSXCSVSchedulesEnabled"] = "isGranularXLSXCSVSchedulesEnabled";
4439
4913
  Param["isSendNowLiveboardSchedulingEnabled"] = "isSendNowLiveboardSchedulingEnabled";
4440
4914
  Param["isCentralizedLiveboardFilterUXEnabled"] = "isCentralizedLiveboardFilterUXEnabled";
4915
+ Param["isScopedLiveboardFilteringEnabled"] = "isScopedLiveboardFilteringEnabled";
4441
4916
  Param["isLinkParametersEnabled"] = "isLinkParametersEnabled";
4442
4917
  Param["EnablePastConversationsSidebar"] = "enablePastConversationsSidebar";
4443
4918
  Param["UpdatedSpotterChatPrompt"] = "updatedSpotterChatPrompt";
4919
+ Param["ShowSpotterRadiance"] = "showSpotterRadiance";
4920
+ Param["DefaultQueryMode"] = "defaultQueryMode";
4444
4921
  Param["EnableStopAnswerGenerationEmbed"] = "enableStopAnswerGenerationEmbed";
4445
4922
  Param["SpotterSidebarTitle"] = "spotterSidebarTitle";
4446
4923
  Param["SpotterSidebarDefaultExpanded"] = "spotterSidebarDefaultExpanded";
@@ -4460,14 +4937,19 @@ var Param;
4460
4937
  Param["SpotterFileUploadEnabled"] = "spotterFileUploadEnabled";
4461
4938
  Param["SpotterFileUploadFileTypes"] = "spotterFileUploadFileTypes";
4462
4939
  Param["IsStarterPromptsEnabled"] = "enableStarterPrompts";
4940
+ Param["UpdatedSpotterExperience"] = "updatedSpotterExperience";
4941
+ Param["SpotterDataSources"] = "spotterDataSources";
4942
+ Param["AnalystId"] = "analystId";
4943
+ Param["OpenSpotterOnLiveboardByDefault"] = "openSpotterOnLiveboardByDefault";
4463
4944
  })(Param || (Param = {}));
4464
4945
  /**
4465
4946
  * ThoughtSpot application pages include actions and menu commands
4466
4947
  * for various user-initiated operations. These actions are represented
4467
4948
  * as enumeration members in the SDK. To control actions in the embedded view:
4468
- * - disabledActions — the action is grayed out and still visible, but non-interactive (user can see but not click).
4469
- * - hiddenActions — the action is completely removed from the UI (user cannot see it at all).
4470
- * - visibleActions — allowlist, only these actions are shown; all others are hidden.
4949
+ * - disabledActions — the action is grayed out and still visible, but non-interactive
4950
+ * (user can see but not click). - hiddenActions — the action is completely removed from
4951
+ * the UI (user cannot see it at all). - visibleActions — allowlist, only these actions
4952
+ * are shown; all others are hidden.
4471
4953
  *
4472
4954
  * Use disabledActions to disable (gray out) an action.
4473
4955
  * Use hiddenActions to hide (fully remove) an action.
@@ -4521,6 +5003,17 @@ var Action;
4521
5003
  * ```
4522
5004
  */
4523
5005
  Action["SaveAsView"] = "saveAsView";
5006
+ /**
5007
+ * The **EditInputTable** action on a Liveboard
5008
+ * page. Allows users to edit an input table used in an Answer directly from
5009
+ * a Liveboard.
5010
+ * @example
5011
+ * ```js
5012
+ * disabledActions: [Action.EditInputTable]
5013
+ * ```
5014
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
5015
+ */
5016
+ Action["EditInputTable"] = "editInputTable";
4524
5017
  /**
4525
5018
  * The **Make a copy** action on a Liveboard or Answer
4526
5019
  * page. Creates a copy of the Liveboard.
@@ -5724,6 +6217,19 @@ var Action;
5724
6217
  * @version SDK: 1.36.0 | ThoughtSpot Cloud: 10.6.0.cl
5725
6218
  */
5726
6219
  Action["ChangeFilterVisibilityInTab"] = "changeFilterVisibilityInTab";
6220
+ /**
6221
+ * Action ID to show, hide, or disable all filter surfaces on a Liveboard,
6222
+ * including filter, parameter, and cross-filter chips at the liveboard,
6223
+ * tab, and group levels. Parameter and cross-filter chips are hide-only.
6224
+ *
6225
+ * @example
6226
+ * ```js
6227
+ * hiddenActions: [Action.AllLiveboardFilters]
6228
+ * disabledActions: [Action.AllLiveboardFilters]
6229
+ * ```
6230
+ * @version SDK: 1.53.0 | ThoughtSpot: 26.10.0.cl
6231
+ */
6232
+ Action["AllLiveboardFilters"] = "allLiveboardFilters";
5727
6233
  /**
5728
6234
  * The **Data model instructions** button on the Spotter interface.
5729
6235
  * Allows opening the data model instructions modal.
@@ -5825,6 +6331,10 @@ var Action;
5825
6331
  * The **Add to Coaching** feature allows adding reference questions and
5826
6332
  * business terms to improve Spotter’s responses. This feature is generally available
5827
6333
  * (GA) from version 26.2.0.cl and enabled by default on embed deployments.
6334
+ *
6335
+ * This action governs both the answer-card **Add to memory** CTA and its
6336
+ * Spotter 3 successor, the response-footer **Remember this** CTA
6337
+ * (they are mutually exclusive).
5828
6338
  * @example
5829
6339
  * ```js
5830
6340
  * hiddenAction: [Action.InConversationTraining]
@@ -6059,6 +6569,89 @@ var Action;
6059
6569
  * @version SDK: 1.46.0 | ThoughtSpot Cloud: 26.3.0.cl
6060
6570
  */
6061
6571
  Action["SpotterChatRename"] = "spotterChatRename";
6572
+ /**
6573
+ * Controls visibility and disable state of the Spotter conversation Share
6574
+ * button in the chat header. Only takes effect once sharing is enabled
6575
+ * (enableShareConversation on).
6576
+ * @example
6577
+ * ```js
6578
+ * disabledActions: [Action.SpotterShareConversationButtonHeader]
6579
+ * ```
6580
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6581
+ */
6582
+ Action["SpotterShareConversationButtonHeader"] = "spotterShareConversationButtonHeader";
6583
+ /**
6584
+ * Controls visibility and disable state of the Share item in the Spotter
6585
+ * conversation history (sidebar) edit menu. Independent of the header button
6586
+ * above, so a host can show Share in one entry point and hide it in the other.
6587
+ * @example
6588
+ * ```js
6589
+ * disabledActions: [Action.SpotterShareConversationMenuItemSidebar]
6590
+ * ```
6591
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6592
+ */
6593
+ Action["SpotterShareConversationMenuItemSidebar"] = "spotterShareConversationMenuItemSidebar";
6594
+ /**
6595
+ * Controls visibility of the entire read-only shared-conversation data-access
6596
+ * banner shown when a recipient opens a shared view. Hide-only.
6597
+ * @example
6598
+ * ```js
6599
+ * hiddenActions: [Action.SpotterSharedConversationBanner]
6600
+ * ```
6601
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6602
+ */
6603
+ Action["SpotterSharedConversationBanner"] = "spotterSharedConversationBanner";
6604
+ /**
6605
+ * Controls visibility and disable state of the cross/close button on the
6606
+ * read-only shared-conversation data-access banner (keeps the banner itself).
6607
+ * @example
6608
+ * ```js
6609
+ * hiddenActions: [Action.SpotterSharedConversationBannerDismissButton]
6610
+ * ```
6611
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6612
+ */
6613
+ Action["SpotterSharedConversationBannerDismissButton"] = "spotterSharedConversationBannerDismissButton";
6614
+ /**
6615
+ * Controls visibility and disable state of the Exit button in the read-only
6616
+ * shared-view header. Hiding it does not disable the ExitSpotterSharedConversation
6617
+ * host event.
6618
+ * @example
6619
+ * ```js
6620
+ * hiddenActions: [Action.SpotterSharedConversationExitButton]
6621
+ * ```
6622
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6623
+ */
6624
+ Action["SpotterSharedConversationExitButton"] = "spotterSharedConversationExitButton";
6625
+ /**
6626
+ * Controls visibility of the share-modal footer note ("Chat will be shared up
6627
+ * to the current moment…"). Hide-only.
6628
+ * @example
6629
+ * ```js
6630
+ * hiddenActions: [Action.SpotterShareUpToCurrentInfo]
6631
+ * ```
6632
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6633
+ */
6634
+ Action["SpotterShareUpToCurrentInfo"] = "spotterShareUpToCurrentInfo";
6635
+ /**
6636
+ * Controls visibility and disable state of the share-modal "include new
6637
+ * messages since last shared version" checkbox.
6638
+ * @example
6639
+ * ```js
6640
+ * disabledActions: [Action.SpotterShareIncludeNewMessagesCheckbox]
6641
+ * ```
6642
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6643
+ */
6644
+ Action["SpotterShareIncludeNewMessagesCheckbox"] = "spotterShareIncludeNewMessagesCheckbox";
6645
+ /**
6646
+ * Controls visibility and disable state of the cross on the share-modal
6647
+ * stale-snapshot info banner.
6648
+ * @example
6649
+ * ```js
6650
+ * hiddenActions: [Action.SpotterShareStaleInfoBannerDismissButton]
6651
+ * ```
6652
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6653
+ */
6654
+ Action["SpotterShareStaleInfoBannerDismissButton"] = "spotterShareStaleInfoBannerDismissButton";
6062
6655
  /**
6063
6656
  * Controls visibility and disable state of the delete action
6064
6657
  * in the Spotter conversation edit menu.
@@ -6069,6 +6662,16 @@ var Action;
6069
6662
  * @version SDK: 1.46.0 | ThoughtSpot Cloud: 26.3.0.cl
6070
6663
  */
6071
6664
  Action["SpotterChatDelete"] = "spotterChatDelete";
6665
+ /**
6666
+ * Controls visibility and disable state of the pin/unpin action
6667
+ * in the Spotter conversation edit menu.
6668
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
6669
+ * @example
6670
+ * ```js
6671
+ * disabledActions: [Action.SpotterChatPin]
6672
+ * ```
6673
+ */
6674
+ Action["SpotterChatPin"] = "spotterChatPin";
6072
6675
  /**
6073
6676
  * Controls visibility and disable state of the documentation/best practices
6074
6677
  * link in the Spotter sidebar footer.
@@ -6112,6 +6715,56 @@ var Action;
6112
6715
  * @version SDK: 1.48.0 | ThoughtSpot Cloud: 26.5.0.cl
6113
6716
  */
6114
6717
  Action["SpotterChatModeSwitcher"] = "spotterChatModeSwitcher";
6718
+ /**
6719
+ * The **Basic Search** starter prompt pill.
6720
+ *
6721
+ * Starter prompt pills are the row of category buttons shown above the
6722
+ * Spotter chat input before a conversation starts. They give a new user
6723
+ * ready-made questions to click instead of typing one from scratch, and
6724
+ * disappear once the conversation begins. There are three, one per action
6725
+ * below.
6726
+ *
6727
+ * Clicking this pill opens a card of suggested simple questions; picking one
6728
+ * submits it to Spotter right away. Visible by default, and hidden along
6729
+ * with the other pills when the surface itself is off (see
6730
+ * {@link SpotterChatViewConfig.starterPrompts}).
6731
+ * @example
6732
+ * ```js
6733
+ * hiddenActions: [Action.QuickSearchPill]
6734
+ * ```
6735
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6736
+ */
6737
+ Action["QuickSearchPill"] = "quickSearchPill";
6738
+ /**
6739
+ * The **Deep Analysis** starter prompt pill, next to
6740
+ * {@link Action.QuickSearchPill} above the Spotter chat input.
6741
+ *
6742
+ * Clicking it opens a card of suggested investigative questions ("why did
6743
+ * revenue drop?"). Picking one fills the chat input in Deep Analysis mode
6744
+ * rather than submitting immediately, so the user can edit it first.
6745
+ * Visible by default.
6746
+ * @example
6747
+ * ```js
6748
+ * hiddenActions: [Action.DeepAnalysisPill]
6749
+ * ```
6750
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6751
+ */
6752
+ Action["DeepAnalysisPill"] = "deepAnalysisPill";
6753
+ /**
6754
+ * The **Data Literacy** starter prompt pill, next to
6755
+ * {@link Action.QuickSearchPill} above the Spotter chat input.
6756
+ *
6757
+ * Unlike the other two pills it opens no card: clicking it submits a prompt
6758
+ * that describes the data the model can answer over, helping a user who does
6759
+ * not yet know what is in the data source. The prompt text always comes from
6760
+ * ThoughtSpot, so only its label is customizable. Visible by default.
6761
+ * @example
6762
+ * ```js
6763
+ * hiddenActions: [Action.DataLiteracyPill]
6764
+ * ```
6765
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6766
+ */
6767
+ Action["DataLiteracyPill"] = "dataLiteracyPill";
6115
6768
  /**
6116
6769
  * The **Include current period** checkbox for date filters.
6117
6770
  * Controls the visibility and availability of the option to include
@@ -6237,29 +6890,61 @@ var Action;
6237
6890
  * disabledActions: [Action.SpotterAnalystDelete]
6238
6891
  * ```
6239
6892
  */
6240
- Action["SpotterAnalystDelete"] = "spotterAnalystDelete";
6893
+ Action["SpotterAnalystDelete"] = "spotterAnalystDelete";
6894
+ /**
6895
+ * Controls visibility and disable state of the make a copy action
6896
+ * in the Spotter Analyst interface.
6897
+ * @version SDK: 1.51.0 | ThoughtSpot Cloud: 26.8.0.cl
6898
+ * @example
6899
+ * ```js
6900
+ * hiddenActions: [Action.SpotterAnalystMakeACopy]
6901
+ * disabledActions: [Action.SpotterAnalystMakeACopy]
6902
+ * ```
6903
+ */
6904
+ Action["SpotterAnalystMakeACopy"] = "spotterAnalystMakeACopy";
6905
+ /**
6906
+ * Controls visibility and disable state of the sidebar
6907
+ * in the Spotter Analyst interface.
6908
+ * @version SDK: 1.51.0 | ThoughtSpot Cloud: 26.8.0.cl
6909
+ * @example
6910
+ * ```js
6911
+ * hiddenActions: [Action.SpotterAnalystSidebar]
6912
+ * disabledActions: [Action.SpotterAnalystSidebar]
6913
+ * ```
6914
+ */
6915
+ Action["SpotterAnalystSidebar"] = "spotterAnalystSidebar";
6916
+ /**
6917
+ * Controls visibility and disable state of the analyst list
6918
+ * ("Show all") in the Spotter Analyst interface.
6919
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
6920
+ * @example
6921
+ * ```js
6922
+ * hiddenActions: [Action.SpotterAnalystList]
6923
+ * disabledActions: [Action.SpotterAnalystList]
6924
+ * ```
6925
+ */
6926
+ Action["SpotterAnalystList"] = "spotterAnalystList";
6241
6927
  /**
6242
- * Controls visibility and disable state of the make a copy action
6243
- * in the Spotter Analyst interface.
6244
- * @version SDK: 1.51.0 | ThoughtSpot Cloud: 26.8.0.cl
6928
+ * Controls visibility and disable state of the default Spotter analyst
6929
+ * entry in the Spotter Analyst interface.
6930
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
6245
6931
  * @example
6246
6932
  * ```js
6247
- * hiddenActions: [Action.SpotterAnalystMakeACopy]
6248
- * disabledActions: [Action.SpotterAnalystMakeACopy]
6933
+ * hiddenActions: [Action.SpotterDefaultAnalyst]
6934
+ * disabledActions: [Action.SpotterDefaultAnalyst]
6249
6935
  * ```
6250
6936
  */
6251
- Action["SpotterAnalystMakeACopy"] = "spotterAnalystMakeACopy";
6937
+ Action["SpotterDefaultAnalyst"] = "spotterDefaultAnalyst";
6252
6938
  /**
6253
- * Controls visibility and disable state of the sidebar
6254
- * in the Spotter Analyst interface.
6255
- * @version SDK: 1.51.0 | ThoughtSpot Cloud: 26.8.0.cl
6939
+ * The **Spotter** button in the Liveboard header.
6940
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
6256
6941
  * @example
6257
6942
  * ```js
6258
- * hiddenActions: [Action.SpotterAnalystSidebar]
6259
- * disabledActions: [Action.SpotterAnalystSidebar]
6943
+ * hiddenActions: [Action.SpotterOnLiveboard]
6944
+ * disabledActions: [Action.SpotterOnLiveboard]
6260
6945
  * ```
6261
6946
  */
6262
- Action["SpotterAnalystSidebar"] = "spotterAnalystSidebar";
6947
+ Action["SpotterOnLiveboard"] = "spotterOnLiveboard";
6263
6948
  })(Action || (Action = {}));
6264
6949
  var PrefetchFeatures;
6265
6950
  (function (PrefetchFeatures) {
@@ -6547,6 +7232,8 @@ var EmbedErrorCodes;
6547
7232
  EmbedErrorCodes["UPDATEFILTERS_INVALID_PAYLOAD"] = "UPDATEFILTERS_INVALID_PAYLOAD";
6548
7233
  /** DrillDown payload is invalid - missing or malformed points */
6549
7234
  EmbedErrorCodes["DRILLDOWN_INVALID_PAYLOAD"] = "DRILLDOWN_INVALID_PAYLOAD";
7235
+ /** UpdateParameters payload is invalid - malformed applicability */
7236
+ EmbedErrorCodes["UPDATEPARAMETERS_INVALID_PAYLOAD"] = "UPDATEPARAMETERS_INVALID_PAYLOAD";
6550
7237
  })(EmbedErrorCodes || (EmbedErrorCodes = {}));
6551
7238
  /**
6552
7239
  * Context types for specifying the page context when triggering host events.
@@ -6725,7 +7412,7 @@ var TableContentDensity;
6725
7412
  TableContentDensity["Compact"] = "COMPACT";
6726
7413
  })(TableContentDensity || (TableContentDensity = {}));
6727
7414
 
6728
- var version$1="1.50.0";var pkg = {version:version$1};
7415
+ var version$1="1.51.0-test";var pkg = {version:version$1};
6729
7416
 
6730
7417
  const { version } = pkg;
6731
7418
 
@@ -6801,7 +7488,6 @@ const logger$3 = new Logger();
6801
7488
 
6802
7489
  const ERROR_MESSAGE = {
6803
7490
  INVALID_THOUGHTSPOT_HOST: 'Error parsing ThoughtSpot host. Please provide a valid URL.',
6804
- SPOTTER_EMBED_WORKSHEED_ID_NOT_FOUND: 'Please select a Model to get started',
6805
7491
  LIVEBOARD_VIZ_ID_VALIDATION: 'Please select a Liveboard to embed.',
6806
7492
  TRIGGER_TIMED_OUT: 'Trigger timed-out in getting a response',
6807
7493
  SEARCHEMBED_BETA_WRANING_MESSAGE: 'SearchEmbed is in Beta in this release.',
@@ -6832,6 +7518,7 @@ const ERROR_MESSAGE = {
6832
7518
  INVALID_SPOTTER_DOCUMENTATION_URL: 'Invalid spotterDocumentationUrl. Please provide a valid http or https URL.',
6833
7519
  UPDATEFILTERS_INVALID_PAYLOAD: 'UpdateFilters requires a valid filter or filters array. Expected: { filter: { column, oper, values } } or { filters: [{ column, oper, values }, ...] }',
6834
7520
  DRILLDOWN_INVALID_PAYLOAD: 'DrillDown requires a valid points object. Expected: { points: { clickedPoint?, selectedPoints? }, autoDrillDown?, vizId? }',
7521
+ UPDATEPARAMETERS_INVALID_PAYLOAD: 'UpdateParameters received an invalid applicability. Expected: { level: LIVEBOARD | TAB | GROUP, targetId } where targetId is required for TAB and GROUP levels',
6835
7522
  };
6836
7523
  const CUSTOM_ACTIONS_ERROR_MESSAGE = {
6837
7524
  INVALID_ACTION_OBJECT: 'Custom Action Validation Error: Invalid action object provided',
@@ -6950,7 +7637,7 @@ const getCssDimension = (value) => {
6950
7637
  * @returns true if the value is a valid CSS margin value, false otherwise
6951
7638
  */
6952
7639
  const isValidCssMargin = (value) => {
6953
- if (isUndefined(value)) {
7640
+ if (isUndefined$1(value)) {
6954
7641
  return false;
6955
7642
  }
6956
7643
  if (typeof value !== 'string') {
@@ -7159,7 +7846,7 @@ const removeStyleProperties = (element, styleProperties) => {
7159
7846
  element.style.removeProperty(styleProperty);
7160
7847
  });
7161
7848
  };
7162
- const isUndefined = (value) => value === undefined;
7849
+ const isUndefined$1 = (value) => value === undefined;
7163
7850
  // Return if the value is a string, double or boolean.
7164
7851
  const getTypeFromValue = (value) => {
7165
7852
  if (typeof value === 'string') {
@@ -7464,7 +8151,7 @@ const setParamIfDefined = (queryParams, param, value, asBoolean = false) => {
7464
8151
  };
7465
8152
 
7466
8153
  /** Used for built-in method references. */
7467
- var objectProto$c = Object.prototype;
8154
+ var objectProto$d = Object.prototype;
7468
8155
 
7469
8156
  /**
7470
8157
  * Checks if `value` is likely a prototype object.
@@ -7475,7 +8162,7 @@ var objectProto$c = Object.prototype;
7475
8162
  */
7476
8163
  function isPrototype(value) {
7477
8164
  var Ctor = value && value.constructor,
7478
- proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto$c;
8165
+ proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto$d;
7479
8166
 
7480
8167
  return value === proto;
7481
8168
  }
@@ -7504,10 +8191,10 @@ var nativeKeys = _overArg(Object.keys, Object);
7504
8191
  var _nativeKeys = nativeKeys;
7505
8192
 
7506
8193
  /** Used for built-in method references. */
7507
- var objectProto$b = Object.prototype;
8194
+ var objectProto$c = Object.prototype;
7508
8195
 
7509
8196
  /** Used to check objects for own properties. */
7510
- var hasOwnProperty$a = objectProto$b.hasOwnProperty;
8197
+ var hasOwnProperty$b = objectProto$c.hasOwnProperty;
7511
8198
 
7512
8199
  /**
7513
8200
  * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
@@ -7522,7 +8209,7 @@ function baseKeys(object) {
7522
8209
  }
7523
8210
  var result = [];
7524
8211
  for (var key in Object(object)) {
7525
- if (hasOwnProperty$a.call(object, key) && key != 'constructor') {
8212
+ if (hasOwnProperty$b.call(object, key) && key != 'constructor') {
7526
8213
  result.push(key);
7527
8214
  }
7528
8215
  }
@@ -7558,17 +8245,17 @@ var Symbol$1 = _root.Symbol;
7558
8245
  var _Symbol = Symbol$1;
7559
8246
 
7560
8247
  /** Used for built-in method references. */
7561
- var objectProto$a = Object.prototype;
8248
+ var objectProto$b = Object.prototype;
7562
8249
 
7563
8250
  /** Used to check objects for own properties. */
7564
- var hasOwnProperty$9 = objectProto$a.hasOwnProperty;
8251
+ var hasOwnProperty$a = objectProto$b.hasOwnProperty;
7565
8252
 
7566
8253
  /**
7567
8254
  * Used to resolve the
7568
8255
  * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
7569
8256
  * of values.
7570
8257
  */
7571
- var nativeObjectToString$1 = objectProto$a.toString;
8258
+ var nativeObjectToString$1 = objectProto$b.toString;
7572
8259
 
7573
8260
  /** Built-in value references. */
7574
8261
  var symToStringTag$1 = _Symbol ? _Symbol.toStringTag : undefined;
@@ -7581,7 +8268,7 @@ var symToStringTag$1 = _Symbol ? _Symbol.toStringTag : undefined;
7581
8268
  * @returns {string} Returns the raw `toStringTag`.
7582
8269
  */
7583
8270
  function getRawTag(value) {
7584
- var isOwn = hasOwnProperty$9.call(value, symToStringTag$1),
8271
+ var isOwn = hasOwnProperty$a.call(value, symToStringTag$1),
7585
8272
  tag = value[symToStringTag$1];
7586
8273
 
7587
8274
  try {
@@ -7603,14 +8290,14 @@ function getRawTag(value) {
7603
8290
  var _getRawTag = getRawTag;
7604
8291
 
7605
8292
  /** Used for built-in method references. */
7606
- var objectProto$9 = Object.prototype;
8293
+ var objectProto$a = Object.prototype;
7607
8294
 
7608
8295
  /**
7609
8296
  * Used to resolve the
7610
8297
  * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
7611
8298
  * of values.
7612
8299
  */
7613
- var nativeObjectToString = objectProto$9.toString;
8300
+ var nativeObjectToString = objectProto$a.toString;
7614
8301
 
7615
8302
  /**
7616
8303
  * Converts `value` to a string using `Object.prototype.toString`.
@@ -7742,10 +8429,10 @@ function isMasked(func) {
7742
8429
  var _isMasked = isMasked;
7743
8430
 
7744
8431
  /** Used for built-in method references. */
7745
- var funcProto$1 = Function.prototype;
8432
+ var funcProto$2 = Function.prototype;
7746
8433
 
7747
8434
  /** Used to resolve the decompiled source of functions. */
7748
- var funcToString$1 = funcProto$1.toString;
8435
+ var funcToString$2 = funcProto$2.toString;
7749
8436
 
7750
8437
  /**
7751
8438
  * Converts `func` to its source code.
@@ -7757,7 +8444,7 @@ var funcToString$1 = funcProto$1.toString;
7757
8444
  function toSource(func) {
7758
8445
  if (func != null) {
7759
8446
  try {
7760
- return funcToString$1.call(func);
8447
+ return funcToString$2.call(func);
7761
8448
  } catch (e) {}
7762
8449
  try {
7763
8450
  return (func + '');
@@ -7778,18 +8465,18 @@ var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
7778
8465
  var reIsHostCtor = /^\[object .+?Constructor\]$/;
7779
8466
 
7780
8467
  /** Used for built-in method references. */
7781
- var funcProto = Function.prototype,
7782
- objectProto$8 = Object.prototype;
8468
+ var funcProto$1 = Function.prototype,
8469
+ objectProto$9 = Object.prototype;
7783
8470
 
7784
8471
  /** Used to resolve the decompiled source of functions. */
7785
- var funcToString = funcProto.toString;
8472
+ var funcToString$1 = funcProto$1.toString;
7786
8473
 
7787
8474
  /** Used to check objects for own properties. */
7788
- var hasOwnProperty$8 = objectProto$8.hasOwnProperty;
8475
+ var hasOwnProperty$9 = objectProto$9.hasOwnProperty;
7789
8476
 
7790
8477
  /** Used to detect if a method is native. */
7791
8478
  var reIsNative = RegExp('^' +
7792
- funcToString.call(hasOwnProperty$8).replace(reRegExpChar, '\\$&')
8479
+ funcToString$1.call(hasOwnProperty$9).replace(reRegExpChar, '\\$&')
7793
8480
  .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
7794
8481
  );
7795
8482
 
@@ -7867,7 +8554,7 @@ var _WeakMap = WeakMap;
7867
8554
 
7868
8555
  /** `Object#toString` result references. */
7869
8556
  var mapTag$3 = '[object Map]',
7870
- objectTag$2 = '[object Object]',
8557
+ objectTag$3 = '[object Object]',
7871
8558
  promiseTag = '[object Promise]',
7872
8559
  setTag$3 = '[object Set]',
7873
8560
  weakMapTag$1 = '[object WeakMap]';
@@ -7898,7 +8585,7 @@ if ((_DataView && getTag(new _DataView(new ArrayBuffer(1))) != dataViewTag$2) ||
7898
8585
  (_WeakMap && getTag(new _WeakMap) != weakMapTag$1)) {
7899
8586
  getTag = function(value) {
7900
8587
  var result = _baseGetTag(value),
7901
- Ctor = result == objectTag$2 ? value.constructor : undefined,
8588
+ Ctor = result == objectTag$3 ? value.constructor : undefined,
7902
8589
  ctorString = Ctor ? _toSource(Ctor) : '';
7903
8590
 
7904
8591
  if (ctorString) {
@@ -7963,13 +8650,13 @@ function baseIsArguments(value) {
7963
8650
  var _baseIsArguments = baseIsArguments;
7964
8651
 
7965
8652
  /** Used for built-in method references. */
7966
- var objectProto$7 = Object.prototype;
8653
+ var objectProto$8 = Object.prototype;
7967
8654
 
7968
8655
  /** Used to check objects for own properties. */
7969
- var hasOwnProperty$7 = objectProto$7.hasOwnProperty;
8656
+ var hasOwnProperty$8 = objectProto$8.hasOwnProperty;
7970
8657
 
7971
8658
  /** Built-in value references. */
7972
- var propertyIsEnumerable$1 = objectProto$7.propertyIsEnumerable;
8659
+ var propertyIsEnumerable$1 = objectProto$8.propertyIsEnumerable;
7973
8660
 
7974
8661
  /**
7975
8662
  * Checks if `value` is likely an `arguments` object.
@@ -7990,7 +8677,7 @@ var propertyIsEnumerable$1 = objectProto$7.propertyIsEnumerable;
7990
8677
  * // => false
7991
8678
  */
7992
8679
  var isArguments = _baseIsArguments(function() { return arguments; }()) ? _baseIsArguments : function(value) {
7993
- return isObjectLike_1(value) && hasOwnProperty$7.call(value, 'callee') &&
8680
+ return isObjectLike_1(value) && hasOwnProperty$8.call(value, 'callee') &&
7994
8681
  !propertyIsEnumerable$1.call(value, 'callee');
7995
8682
  };
7996
8683
 
@@ -8156,10 +8843,10 @@ var argsTag$1 = '[object Arguments]',
8156
8843
  funcTag = '[object Function]',
8157
8844
  mapTag$2 = '[object Map]',
8158
8845
  numberTag$1 = '[object Number]',
8159
- objectTag$1 = '[object Object]',
8846
+ objectTag$2 = '[object Object]',
8160
8847
  regexpTag$1 = '[object RegExp]',
8161
8848
  setTag$2 = '[object Set]',
8162
- stringTag$1 = '[object String]',
8849
+ stringTag$2 = '[object String]',
8163
8850
  weakMapTag = '[object WeakMap]';
8164
8851
 
8165
8852
  var arrayBufferTag$1 = '[object ArrayBuffer]',
@@ -8186,8 +8873,8 @@ typedArrayTags[arrayBufferTag$1] = typedArrayTags[boolTag$2] =
8186
8873
  typedArrayTags[dataViewTag$1] = typedArrayTags[dateTag$1] =
8187
8874
  typedArrayTags[errorTag$1] = typedArrayTags[funcTag] =
8188
8875
  typedArrayTags[mapTag$2] = typedArrayTags[numberTag$1] =
8189
- typedArrayTags[objectTag$1] = typedArrayTags[regexpTag$1] =
8190
- typedArrayTags[setTag$2] = typedArrayTags[stringTag$1] =
8876
+ typedArrayTags[objectTag$2] = typedArrayTags[regexpTag$1] =
8877
+ typedArrayTags[setTag$2] = typedArrayTags[stringTag$2] =
8191
8878
  typedArrayTags[weakMapTag] = false;
8192
8879
 
8193
8880
  /**
@@ -8279,10 +8966,10 @@ var mapTag$1 = '[object Map]',
8279
8966
  setTag$1 = '[object Set]';
8280
8967
 
8281
8968
  /** Used for built-in method references. */
8282
- var objectProto$6 = Object.prototype;
8969
+ var objectProto$7 = Object.prototype;
8283
8970
 
8284
8971
  /** Used to check objects for own properties. */
8285
- var hasOwnProperty$6 = objectProto$6.hasOwnProperty;
8972
+ var hasOwnProperty$7 = objectProto$7.hasOwnProperty;
8286
8973
 
8287
8974
  /**
8288
8975
  * Checks if `value` is an empty object, collection, map, or set.
@@ -8334,7 +9021,7 @@ function isEmpty$1(value) {
8334
9021
  return !_baseKeys(value).length;
8335
9022
  }
8336
9023
  for (var key in value) {
8337
- if (hasOwnProperty$6.call(value, key)) {
9024
+ if (hasOwnProperty$7.call(value, key)) {
8338
9025
  return false;
8339
9026
  }
8340
9027
  }
@@ -8343,6 +9030,15 @@ function isEmpty$1(value) {
8343
9030
 
8344
9031
  var isEmpty_1 = isEmpty$1;
8345
9032
 
9033
+ /**
9034
+ * Levels at which a filter or parameter can be applied.
9035
+ */
9036
+ var ApplicabilityLevel;
9037
+ (function (ApplicabilityLevel) {
9038
+ ApplicabilityLevel["Liveboard"] = "LIVEBOARD";
9039
+ ApplicabilityLevel["Tab"] = "TAB";
9040
+ ApplicabilityLevel["Group"] = "GROUP";
9041
+ })(ApplicabilityLevel || (ApplicabilityLevel = {}));
8346
9042
  var UIPassthroughEvent;
8347
9043
  (function (UIPassthroughEvent) {
8348
9044
  UIPassthroughEvent["PinAnswerToLiveboard"] = "addVizToPinboard";
@@ -8360,6 +9056,7 @@ var UIPassthroughEvent;
8360
9056
  UIPassthroughEvent["GetParameters"] = "getParameters";
8361
9057
  UIPassthroughEvent["GetTML"] = "getTML";
8362
9058
  UIPassthroughEvent["GetTabs"] = "getTabs";
9059
+ UIPassthroughEvent["GetGroups"] = "getGroups";
8363
9060
  UIPassthroughEvent["GetExportRequestForCurrentPinboard"] = "getExportRequestForCurrentPinboard";
8364
9061
  })(UIPassthroughEvent || (UIPassthroughEvent = {}));
8365
9062
 
@@ -9295,7 +9992,7 @@ class AnswerService {
9295
9992
  async getTML() {
9296
9993
  const { object } = await this.executeQuery(getAnswerTML, {});
9297
9994
  const edoc = object[0].edoc;
9298
- const YAML = await import('./index-B5xoN6Cp.js');
9995
+ const YAML = await import('./index-Bivg-mDx.js');
9299
9996
  const parsedDoc = YAML.parse(edoc);
9300
9997
  return {
9301
9998
  answer: {
@@ -9580,10 +10277,10 @@ var _hashDelete = hashDelete;
9580
10277
  var HASH_UNDEFINED$2 = '__lodash_hash_undefined__';
9581
10278
 
9582
10279
  /** Used for built-in method references. */
9583
- var objectProto$5 = Object.prototype;
10280
+ var objectProto$6 = Object.prototype;
9584
10281
 
9585
10282
  /** Used to check objects for own properties. */
9586
- var hasOwnProperty$5 = objectProto$5.hasOwnProperty;
10283
+ var hasOwnProperty$6 = objectProto$6.hasOwnProperty;
9587
10284
 
9588
10285
  /**
9589
10286
  * Gets the hash value for `key`.
@@ -9600,16 +10297,16 @@ function hashGet(key) {
9600
10297
  var result = data[key];
9601
10298
  return result === HASH_UNDEFINED$2 ? undefined : result;
9602
10299
  }
9603
- return hasOwnProperty$5.call(data, key) ? data[key] : undefined;
10300
+ return hasOwnProperty$6.call(data, key) ? data[key] : undefined;
9604
10301
  }
9605
10302
 
9606
10303
  var _hashGet = hashGet;
9607
10304
 
9608
10305
  /** Used for built-in method references. */
9609
- var objectProto$4 = Object.prototype;
10306
+ var objectProto$5 = Object.prototype;
9610
10307
 
9611
10308
  /** Used to check objects for own properties. */
9612
- var hasOwnProperty$4 = objectProto$4.hasOwnProperty;
10309
+ var hasOwnProperty$5 = objectProto$5.hasOwnProperty;
9613
10310
 
9614
10311
  /**
9615
10312
  * Checks if a hash value for `key` exists.
@@ -9622,7 +10319,7 @@ var hasOwnProperty$4 = objectProto$4.hasOwnProperty;
9622
10319
  */
9623
10320
  function hashHas(key) {
9624
10321
  var data = this.__data__;
9625
- return _nativeCreate ? (data[key] !== undefined) : hasOwnProperty$4.call(data, key);
10322
+ return _nativeCreate ? (data[key] !== undefined) : hasOwnProperty$5.call(data, key);
9626
10323
  }
9627
10324
 
9628
10325
  var _hashHas = hashHas;
@@ -10597,7 +11294,7 @@ var boolTag$1 = '[object Boolean]',
10597
11294
  numberTag = '[object Number]',
10598
11295
  regexpTag = '[object RegExp]',
10599
11296
  setTag = '[object Set]',
10600
- stringTag = '[object String]',
11297
+ stringTag$1 = '[object String]',
10601
11298
  symbolTag = '[object Symbol]';
10602
11299
 
10603
11300
  var arrayBufferTag = '[object ArrayBuffer]',
@@ -10652,7 +11349,7 @@ function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
10652
11349
  return object.name == other.name && object.message == other.message;
10653
11350
 
10654
11351
  case regexpTag:
10655
- case stringTag:
11352
+ case stringTag$1:
10656
11353
  // Coerce regexes to strings and treat strings, primitives and objects,
10657
11354
  // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring
10658
11355
  // for more details.
@@ -10760,10 +11457,10 @@ function stubArray() {
10760
11457
  var stubArray_1 = stubArray;
10761
11458
 
10762
11459
  /** Used for built-in method references. */
10763
- var objectProto$3 = Object.prototype;
11460
+ var objectProto$4 = Object.prototype;
10764
11461
 
10765
11462
  /** Built-in value references. */
10766
- var propertyIsEnumerable = objectProto$3.propertyIsEnumerable;
11463
+ var propertyIsEnumerable = objectProto$4.propertyIsEnumerable;
10767
11464
 
10768
11465
  /* Built-in method references for those with the same name as other `lodash` methods. */
10769
11466
  var nativeGetSymbols = Object.getOwnPropertySymbols;
@@ -10835,10 +11532,10 @@ function isIndex(value, length) {
10835
11532
  var _isIndex = isIndex;
10836
11533
 
10837
11534
  /** Used for built-in method references. */
10838
- var objectProto$2 = Object.prototype;
11535
+ var objectProto$3 = Object.prototype;
10839
11536
 
10840
11537
  /** Used to check objects for own properties. */
10841
- var hasOwnProperty$3 = objectProto$2.hasOwnProperty;
11538
+ var hasOwnProperty$4 = objectProto$3.hasOwnProperty;
10842
11539
 
10843
11540
  /**
10844
11541
  * Creates an array of the enumerable property names of the array-like `value`.
@@ -10858,7 +11555,7 @@ function arrayLikeKeys(value, inherited) {
10858
11555
  length = result.length;
10859
11556
 
10860
11557
  for (var key in value) {
10861
- if ((inherited || hasOwnProperty$3.call(value, key)) &&
11558
+ if ((inherited || hasOwnProperty$4.call(value, key)) &&
10862
11559
  !(skipIndexes && (
10863
11560
  // Safari 9 has enumerable `arguments.length` in strict mode.
10864
11561
  key == 'length' ||
@@ -10928,10 +11625,10 @@ var _getAllKeys = getAllKeys;
10928
11625
  var COMPARE_PARTIAL_FLAG$3 = 1;
10929
11626
 
10930
11627
  /** Used for built-in method references. */
10931
- var objectProto$1 = Object.prototype;
11628
+ var objectProto$2 = Object.prototype;
10932
11629
 
10933
11630
  /** Used to check objects for own properties. */
10934
- var hasOwnProperty$2 = objectProto$1.hasOwnProperty;
11631
+ var hasOwnProperty$3 = objectProto$2.hasOwnProperty;
10935
11632
 
10936
11633
  /**
10937
11634
  * A specialized version of `baseIsEqualDeep` for objects with support for
@@ -10959,7 +11656,7 @@ function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
10959
11656
  var index = objLength;
10960
11657
  while (index--) {
10961
11658
  var key = objProps[index];
10962
- if (!(isPartial ? key in other : hasOwnProperty$2.call(other, key))) {
11659
+ if (!(isPartial ? key in other : hasOwnProperty$3.call(other, key))) {
10963
11660
  return false;
10964
11661
  }
10965
11662
  }
@@ -11019,13 +11716,13 @@ var COMPARE_PARTIAL_FLAG$2 = 1;
11019
11716
  /** `Object#toString` result references. */
11020
11717
  var argsTag = '[object Arguments]',
11021
11718
  arrayTag = '[object Array]',
11022
- objectTag = '[object Object]';
11719
+ objectTag$1 = '[object Object]';
11023
11720
 
11024
11721
  /** Used for built-in method references. */
11025
- var objectProto = Object.prototype;
11722
+ var objectProto$1 = Object.prototype;
11026
11723
 
11027
11724
  /** Used to check objects for own properties. */
11028
- var hasOwnProperty$1 = objectProto.hasOwnProperty;
11725
+ var hasOwnProperty$2 = objectProto$1.hasOwnProperty;
11029
11726
 
11030
11727
  /**
11031
11728
  * A specialized version of `baseIsEqual` for arrays and objects which performs
@@ -11047,11 +11744,11 @@ function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
11047
11744
  objTag = objIsArr ? arrayTag : _getTag(object),
11048
11745
  othTag = othIsArr ? arrayTag : _getTag(other);
11049
11746
 
11050
- objTag = objTag == argsTag ? objectTag : objTag;
11051
- othTag = othTag == argsTag ? objectTag : othTag;
11747
+ objTag = objTag == argsTag ? objectTag$1 : objTag;
11748
+ othTag = othTag == argsTag ? objectTag$1 : othTag;
11052
11749
 
11053
- var objIsObj = objTag == objectTag,
11054
- othIsObj = othTag == objectTag,
11750
+ var objIsObj = objTag == objectTag$1,
11751
+ othIsObj = othTag == objectTag$1,
11055
11752
  isSameTag = objTag == othTag;
11056
11753
 
11057
11754
  if (isSameTag && isBuffer_1(object)) {
@@ -11068,8 +11765,8 @@ function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
11068
11765
  : _equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
11069
11766
  }
11070
11767
  if (!(bitmask & COMPARE_PARTIAL_FLAG$2)) {
11071
- var objIsWrapped = objIsObj && hasOwnProperty$1.call(object, '__wrapped__'),
11072
- othIsWrapped = othIsObj && hasOwnProperty$1.call(other, '__wrapped__');
11768
+ var objIsWrapped = objIsObj && hasOwnProperty$2.call(object, '__wrapped__'),
11769
+ othIsWrapped = othIsObj && hasOwnProperty$2.call(other, '__wrapped__');
11073
11770
 
11074
11771
  if (objIsWrapped || othIsWrapped) {
11075
11772
  var objUnwrapped = objIsWrapped ? object.value() : object,
@@ -12244,7 +12941,8 @@ const URL_MAX_LENGTH = 2000;
12244
12941
  * The default CSS dimensions of the embedded app
12245
12942
  */
12246
12943
  const DEFAULT_EMBED_WIDTH = '100%';
12247
- const DEFAULT_EMBED_HEIGHT = '100%';
12944
+ const DEFAULT_EMBED_HEIGHT = '100%';
12945
+ const DEFAULT_LAZY_LOADING_MARGIN = '500px 0px';
12248
12946
 
12249
12947
  var Config = {
12250
12948
  DEBUG: false,
@@ -12280,7 +12978,7 @@ var FuncProto = Function.prototype;
12280
12978
  var ObjProto = Object.prototype;
12281
12979
  var slice = ArrayProto.slice;
12282
12980
  var toString = ObjProto.toString;
12283
- var hasOwnProperty = ObjProto.hasOwnProperty;
12981
+ var hasOwnProperty$1 = ObjProto.hasOwnProperty;
12284
12982
  var windowConsole = window$1.console;
12285
12983
  var navigator = window$1.navigator;
12286
12984
  var document$1 = window$1.document;
@@ -12417,7 +13115,7 @@ _.each = function(obj, iterator, context) {
12417
13115
  }
12418
13116
  } else {
12419
13117
  for (var key in obj) {
12420
- if (hasOwnProperty.call(obj, key)) {
13118
+ if (hasOwnProperty$1.call(obj, key)) {
12421
13119
  if (iterator.call(context, obj[key], key, obj) === breaker) {
12422
13120
  return;
12423
13121
  }
@@ -12453,7 +13151,7 @@ _.isFunction = function(f) {
12453
13151
  };
12454
13152
 
12455
13153
  _.isArguments = function(obj) {
12456
- return !!(obj && hasOwnProperty.call(obj, 'callee'));
13154
+ return !!(obj && hasOwnProperty$1.call(obj, 'callee'));
12457
13155
  };
12458
13156
 
12459
13157
  _.toArray = function(iterable) {
@@ -12541,7 +13239,7 @@ _.isObject = function(obj) {
12541
13239
  _.isEmptyObject = function(obj) {
12542
13240
  if (_.isObject(obj)) {
12543
13241
  for (var key in obj) {
12544
- if (hasOwnProperty.call(obj, key)) {
13242
+ if (hasOwnProperty$1.call(obj, key)) {
12545
13243
  return false;
12546
13244
  }
12547
13245
  }
@@ -12733,7 +13431,7 @@ _.JSONEncode = (function() {
12733
13431
 
12734
13432
  // Iterate through all of the keys in the object.
12735
13433
  for (k in value) {
12736
- if (hasOwnProperty.call(value, k)) {
13434
+ if (hasOwnProperty$1.call(value, k)) {
12737
13435
  v = str(k, value);
12738
13436
  if (v) {
12739
13437
  partial.push(quote(k) + (gap ? ': ' : ':') + v);
@@ -18399,7 +19097,12 @@ const MIXPANEL_EVENT = {
18399
19097
  VISUAL_SDK_RENDER_FAILED: 'visual-sdk-render-failed',
18400
19098
  VISUAL_SDK_TRIGGER: 'visual-sdk-trigger',
18401
19099
  VISUAL_SDK_ON: 'visual-sdk-on',
18402
- VISUAL_SDK_EMBED_CREATE: 'visual-sdk-embed-create'};
19100
+ VISUAL_SDK_EMBED_CREATE: 'visual-sdk-embed-create',
19101
+ VISUAL_SDK_RENDER_CALLED: 'visual-sdk-render-called',
19102
+ VISUAL_SDK_PRE_RENDER: 'visual-sdk-pre-render',
19103
+ VISUAL_SDK_SHOW_PRE_RENDER: 'visual-sdk-show-pre-render',
19104
+ VISUAL_SDK_HIDE_PRE_RENDER: 'visual-sdk-hide-pre-render',
19105
+ };
18403
19106
  let isMixpanelInitialized = false;
18404
19107
  let eventQueue = [];
18405
19108
  /**
@@ -19774,7 +20477,7 @@ const getIsInitCalled = () => { var _a; return !!((_a = getValueFromWindow(initF
19774
20477
  /**
19775
20478
  * Initializes the Visual Embed SDK globally and perform
19776
20479
  * authentication if applicable. This function needs to be called before any ThoughtSpot
19777
- * component like Liveboard etc can be embedded. But need not wait for AuthEvent.SUCCESS
20480
+ * component like Liveboard etc can be embedded. But need not wait for AuthStatus.SUCCESS
19778
20481
  * to actually embed. That is handled internally.
19779
20482
  * @param embedConfig The configuration object containing ThoughtSpot host,
19780
20483
  * authentication mechanism and so on.
@@ -19972,6 +20675,154 @@ function processEventData(type, eventData, thoughtSpotHost, containerEl) {
19972
20675
  return eventData;
19973
20676
  }
19974
20677
 
20678
+ /**
20679
+ * Checks if `value` is `null` or `undefined`.
20680
+ *
20681
+ * @static
20682
+ * @memberOf _
20683
+ * @since 4.0.0
20684
+ * @category Lang
20685
+ * @param {*} value The value to check.
20686
+ * @returns {boolean} Returns `true` if `value` is nullish, else `false`.
20687
+ * @example
20688
+ *
20689
+ * _.isNil(null);
20690
+ * // => true
20691
+ *
20692
+ * _.isNil(void 0);
20693
+ * // => true
20694
+ *
20695
+ * _.isNil(NaN);
20696
+ * // => false
20697
+ */
20698
+ function isNil(value) {
20699
+ return value == null;
20700
+ }
20701
+
20702
+ var isNil_1 = isNil;
20703
+
20704
+ /** Built-in value references. */
20705
+ var getPrototype = _overArg(Object.getPrototypeOf, Object);
20706
+
20707
+ var _getPrototype = getPrototype;
20708
+
20709
+ /** `Object#toString` result references. */
20710
+ var objectTag = '[object Object]';
20711
+
20712
+ /** Used for built-in method references. */
20713
+ var funcProto = Function.prototype,
20714
+ objectProto = Object.prototype;
20715
+
20716
+ /** Used to resolve the decompiled source of functions. */
20717
+ var funcToString = funcProto.toString;
20718
+
20719
+ /** Used to check objects for own properties. */
20720
+ var hasOwnProperty = objectProto.hasOwnProperty;
20721
+
20722
+ /** Used to infer the `Object` constructor. */
20723
+ var objectCtorString = funcToString.call(Object);
20724
+
20725
+ /**
20726
+ * Checks if `value` is a plain object, that is, an object created by the
20727
+ * `Object` constructor or one with a `[[Prototype]]` of `null`.
20728
+ *
20729
+ * @static
20730
+ * @memberOf _
20731
+ * @since 0.8.0
20732
+ * @category Lang
20733
+ * @param {*} value The value to check.
20734
+ * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
20735
+ * @example
20736
+ *
20737
+ * function Foo() {
20738
+ * this.a = 1;
20739
+ * }
20740
+ *
20741
+ * _.isPlainObject(new Foo);
20742
+ * // => false
20743
+ *
20744
+ * _.isPlainObject([1, 2, 3]);
20745
+ * // => false
20746
+ *
20747
+ * _.isPlainObject({ 'x': 0, 'y': 0 });
20748
+ * // => true
20749
+ *
20750
+ * _.isPlainObject(Object.create(null));
20751
+ * // => true
20752
+ */
20753
+ function isPlainObject(value) {
20754
+ if (!isObjectLike_1(value) || _baseGetTag(value) != objectTag) {
20755
+ return false;
20756
+ }
20757
+ var proto = _getPrototype(value);
20758
+ if (proto === null) {
20759
+ return true;
20760
+ }
20761
+ var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;
20762
+ return typeof Ctor == 'function' && Ctor instanceof Ctor &&
20763
+ funcToString.call(Ctor) == objectCtorString;
20764
+ }
20765
+
20766
+ var isPlainObject_1 = isPlainObject;
20767
+
20768
+ /** `Object#toString` result references. */
20769
+ var stringTag = '[object String]';
20770
+
20771
+ /**
20772
+ * Checks if `value` is classified as a `String` primitive or object.
20773
+ *
20774
+ * @static
20775
+ * @since 0.1.0
20776
+ * @memberOf _
20777
+ * @category Lang
20778
+ * @param {*} value The value to check.
20779
+ * @returns {boolean} Returns `true` if `value` is a string, else `false`.
20780
+ * @example
20781
+ *
20782
+ * _.isString('abc');
20783
+ * // => true
20784
+ *
20785
+ * _.isString(1);
20786
+ * // => false
20787
+ */
20788
+ function isString(value) {
20789
+ return typeof value == 'string' ||
20790
+ (!isArray_1(value) && isObjectLike_1(value) && _baseGetTag(value) == stringTag);
20791
+ }
20792
+
20793
+ var isString_1 = isString;
20794
+
20795
+ /**
20796
+ * Checks if `value` is `undefined`.
20797
+ *
20798
+ * @static
20799
+ * @since 0.1.0
20800
+ * @memberOf _
20801
+ * @category Lang
20802
+ * @param {*} value The value to check.
20803
+ * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.
20804
+ * @example
20805
+ *
20806
+ * _.isUndefined(void 0);
20807
+ * // => true
20808
+ *
20809
+ * _.isUndefined(null);
20810
+ * // => false
20811
+ */
20812
+ function isUndefined(value) {
20813
+ return value === undefined;
20814
+ }
20815
+
20816
+ var isUndefined_1 = isUndefined;
20817
+
20818
+ const isValidApplicability = (a) => {
20819
+ if (isUndefined_1(a))
20820
+ return true;
20821
+ // targetId is not required at LIVEBOARD level, since the filter applies to the whole Liveboard
20822
+ return isPlainObject_1(a)
20823
+ && Object.values(ApplicabilityLevel).includes(a.level)
20824
+ && (a.level === ApplicabilityLevel.Liveboard || (isString_1(a.targetId) && a.targetId.trim().length > 0));
20825
+ };
19975
20826
  function isValidUpdateFiltersPayload(payload) {
19976
20827
  if (!payload)
19977
20828
  return false;
@@ -19980,12 +20831,23 @@ function isValidUpdateFiltersPayload(payload) {
19980
20831
  const hasOperator = typeof f.oper === 'string' || typeof f.operator === 'string';
19981
20832
  const hasValues = Array.isArray(f.values);
19982
20833
  const validType = !f.type || typeof f.type === 'string';
19983
- return hasColumn && hasOperator && hasValues && validType;
20834
+ return hasColumn && hasOperator && hasValues && validType && isValidApplicability(f.applicability);
19984
20835
  };
19985
20836
  const hasValidFilter = payload.filter && isValidFilter(payload.filter);
19986
20837
  const hasValidFilters = Array.isArray(payload.filters) && payload.filters.length > 0 && payload.filters.every(isValidFilter);
19987
20838
  return !!(hasValidFilter || hasValidFilters);
19988
20839
  }
20840
+ function isValidUpdateParametersPayload(payload) {
20841
+ // Only validates the applicability of each parameter (null treated as absent); the rest is forwarded as-is for backward compatibility.
20842
+ if (!Array.isArray(payload))
20843
+ return true;
20844
+ return payload.every((p) => {
20845
+ if (!isPlainObject_1(p))
20846
+ return true;
20847
+ const { applicability } = p;
20848
+ return isNil_1(applicability) || isValidApplicability(applicability);
20849
+ });
20850
+ }
19989
20851
  function isValidDrillDownPayload(payload) {
19990
20852
  if (!payload)
19991
20853
  return false;
@@ -20016,6 +20878,9 @@ function throwUpdateFiltersValidationError() {
20016
20878
  }
20017
20879
  function throwDrillDownValidationError() {
20018
20880
  createValidationError(ERROR_MESSAGE.DRILLDOWN_INVALID_PAYLOAD);
20881
+ }
20882
+ function throwUpdateParametersValidationError() {
20883
+ createValidationError(ERROR_MESSAGE.UPDATEPARAMETERS_INVALID_PAYLOAD);
20019
20884
  }
20020
20885
 
20021
20886
  /**
@@ -20036,6 +20901,7 @@ const PASSTHROUGH_MAP = {
20036
20901
  [HostEvent.GetParameters]: UIPassthroughEvent.GetParameters,
20037
20902
  [HostEvent.GetTML]: UIPassthroughEvent.GetTML,
20038
20903
  [HostEvent.GetTabs]: UIPassthroughEvent.GetTabs,
20904
+ [HostEvent.GetGroups]: UIPassthroughEvent.GetGroups,
20039
20905
  [HostEvent.getExportRequestForCurrentPinboard]: UIPassthroughEvent.GetExportRequestForCurrentPinboard,
20040
20906
  };
20041
20907
  class HostEventClient {
@@ -20047,6 +20913,7 @@ class HostEventClient {
20047
20913
  [HostEvent.Pin]: (p, c) => this.handlePinEvent(p, c),
20048
20914
  [HostEvent.SaveAnswer]: (p, c) => this.handleSaveAnswerEvent(p, c),
20049
20915
  [HostEvent.UpdateFilters]: (p, c) => this.handleUpdateFiltersEvent(p, c),
20916
+ [HostEvent.UpdateParameters]: (p, c) => this.handleUpdateParametersEvent(p, c),
20050
20917
  [HostEvent.DrillDown]: (p, c) => this.handleDrillDownEvent(p, c),
20051
20918
  };
20052
20919
  }
@@ -20171,6 +21038,13 @@ class HostEventClient {
20171
21038
  }
20172
21039
  return this.handleHostEventWithParam(UIPassthroughEvent.UpdateFilters, payload, context);
20173
21040
  }
21041
+ handleUpdateParametersEvent(payload, context) {
21042
+ if (!isValidUpdateParametersPayload(payload)) {
21043
+ throwUpdateParametersValidationError();
21044
+ }
21045
+ // UpdateParameters has no UI passthrough contract; dispatch over the legacy channel
21046
+ return this.hostEventFallback(HostEvent.UpdateParameters, payload, context);
21047
+ }
20174
21048
  handleDrillDownEvent(payload, context) {
20175
21049
  if (!isValidDrillDownPayload(payload)) {
20176
21050
  throwDrillDownValidationError();
@@ -20430,7 +21304,7 @@ class TsEmbed {
20430
21304
  */
20431
21305
  this.shouldEncodeUrlQueryParams = false;
20432
21306
  this.defaultHiddenActions = [Action.ReportError];
20433
- this.preRenderContainerEl = null;
21307
+ this.preRenderContainerEl = document.body;
20434
21308
  this.containerScrollListener = null;
20435
21309
  /**
20436
21310
  * Handler for fullscreen change events
@@ -20956,7 +21830,7 @@ class TsEmbed {
20956
21830
  if (this.embedConfig.currencyFormat) {
20957
21831
  queryParams[Param.CurrencyFormat] = this.embedConfig.currencyFormat;
20958
21832
  }
20959
- const { disabledActions, disabledActionReason, hiddenActions, visibleActions, hiddenTabs, visibleTabs, showAlerts, additionalFlags: additionalFlagsFromView, locale, customizations, contextMenuTrigger, linkOverride, enableLinkOverridesV2, insertInToSlide, disableRedirectionLinksInNewTab, overrideOrgId, exposeTranslationIDs, primaryAction, } = this.viewConfig;
21833
+ const { disabledActions, disabledActionReason, hiddenActions, visibleActions, hiddenTabs, visibleTabs, showAlerts, additionalFlags: additionalFlagsFromView, locale, customizations, contextMenuTrigger, linkOverride, enableLinkOverridesV2, insertInToSlide, disableRedirectionLinksInNewTab, overrideOrgId, overrideHistoryState, exposeTranslationIDs, primaryAction, } = this.viewConfig;
20960
21834
  const { additionalFlags: additionalFlagsFromInit } = this.embedConfig;
20961
21835
  const additionalFlags = {
20962
21836
  ...additionalFlagsFromInit,
@@ -21044,6 +21918,9 @@ class TsEmbed {
21044
21918
  if (overrideOrgId !== undefined) {
21045
21919
  queryParams[Param.OverrideOrgId] = overrideOrgId;
21046
21920
  }
21921
+ if (overrideHistoryState !== undefined) {
21922
+ queryParams[Param.OverrideHistoryState] = overrideHistoryState;
21923
+ }
21047
21924
  if (this.isPreAuthCacheEnabled()) {
21048
21925
  queryParams[Param.preAuthCache] = true;
21049
21926
  }
@@ -21115,11 +21992,27 @@ class TsEmbed {
21115
21992
  iFrame.name = 'ThoughtSpot Embedded Analytics';
21116
21993
  return iFrame;
21117
21994
  }
21995
+ /**
21996
+ * Returns a merged {@link PreRenderConfig} object where each shared key
21997
+ * prefers `preRenderConfig.key` over the top-level `viewConfig.key` for
21998
+ * backward compatibility.
21999
+ */
22000
+ getPreRenderConfig() {
22001
+ var _a, _b, _c, _d;
22002
+ const viewCfg = this.viewConfig;
22003
+ const preRenderCfg = (_a = viewCfg.preRenderConfig) !== null && _a !== void 0 ? _a : {};
22004
+ return {
22005
+ ...preRenderCfg,
22006
+ preRenderId: (_b = preRenderCfg.preRenderId) !== null && _b !== void 0 ? _b : viewCfg.preRenderId,
22007
+ preRenderContainer: (_c = preRenderCfg.preRenderContainer) !== null && _c !== void 0 ? _c : viewCfg.preRenderContainer,
22008
+ doNotTrackPreRenderSize: (_d = preRenderCfg.doNotTrackPreRenderSize) !== null && _d !== void 0 ? _d : viewCfg.doNotTrackPreRenderSize,
22009
+ };
22010
+ }
21118
22011
  /**
21119
22012
  * Returns true if this embed instance is configured for pre-rendering.
21120
22013
  */
21121
22014
  isPreRenderEmbed() {
21122
- return !!this.viewConfig.preRenderId;
22015
+ return !!this.getPreRenderConfig().preRenderId;
21123
22016
  }
21124
22017
  handleInsertionIntoDOM(child) {
21125
22018
  if (this.isPreRenderEmbed()) {
@@ -21255,6 +22148,7 @@ class TsEmbed {
21255
22148
  this.setIframeElement(this.preRenderChild);
21256
22149
  }
21257
22150
  this.isRendered = true;
22151
+ this.inheritPreRenderContainer();
21258
22152
  }
21259
22153
  return this.isPreRenderConnected();
21260
22154
  }
@@ -21305,7 +22199,7 @@ class TsEmbed {
21305
22199
  */
21306
22200
  resolvePreRenderContainerTarget() {
21307
22201
  var _a;
21308
- const containerConfig = this.viewConfig.preRenderContainer;
22202
+ const containerConfig = this.getPreRenderConfig().preRenderContainer;
21309
22203
  let container = null;
21310
22204
  if (typeof containerConfig === 'string') {
21311
22205
  try {
@@ -21323,15 +22217,35 @@ class TsEmbed {
21323
22217
  }
21324
22218
  return (_a = container) !== null && _a !== void 0 ? _a : document.body;
21325
22219
  }
22220
+ inheritPreRenderContainer() {
22221
+ var _a;
22222
+ const preRenderedObject = this.getPreRenderObj();
22223
+ if (!preRenderedObject || preRenderedObject === this) {
22224
+ return;
22225
+ }
22226
+ const ownerContainer = (_a = preRenderedObject.preRenderContainerEl) !== null && _a !== void 0 ? _a : document.body;
22227
+ if (this.getPreRenderConfig().preRenderContainer
22228
+ && this.resolvePreRenderContainerTarget() !== ownerContainer) {
22229
+ logger$3.warn('preRenderContainer is applied only by the component that creates the preRender; '
22230
+ + 'the one passed here is ignored. Set it on the PreRender component instead.');
22231
+ }
22232
+ this.preRenderContainerEl = ownerContainer;
22233
+ this.applyPreRenderContainerPositioning();
22234
+ }
22235
+ getCustomPreRenderContainer() {
22236
+ const container = this.preRenderContainerEl;
22237
+ return container && container !== document.body ? container : null;
22238
+ }
21326
22239
  /**
21327
- * Makes the container a positioning context for the absolutely positioned
21328
- * wrapper, stashing the original inline `position` on the element (once) so
21329
- * destroy() can restore it exactly, leaving no trace. Recording it on the
21330
- * element rather than per-instance lets the override be reverted even when
21331
- * embeds share the same container.
22240
+ * Makes the resolved container a positioning context for the absolutely
22241
+ * positioned wrapper, stashing the original inline `position` on the element
22242
+ * (once) so destroy() can restore it exactly, leaving no trace. Recording it
22243
+ * on the element rather than per-instance lets the override be reverted even
22244
+ * when embeds share the same container.
21332
22245
  */
21333
- applyPreRenderContainerPositioning(container) {
21334
- if (container === document.body) {
22246
+ applyPreRenderContainerPositioning() {
22247
+ const container = this.getCustomPreRenderContainer();
22248
+ if (!container) {
21335
22249
  return;
21336
22250
  }
21337
22251
  const pos = window.getComputedStyle(container).position;
@@ -21374,11 +22288,11 @@ class TsEmbed {
21374
22288
  resolved.addEventListener('scroll', this.containerScrollListener);
21375
22289
  }
21376
22290
  }
21377
- this.applyPreRenderContainerPositioning(resolved);
22291
+ this.preRenderContainerEl = resolved;
22292
+ this.applyPreRenderContainerPositioning();
21378
22293
  if (wrapper.parentNode !== resolved) {
21379
22294
  resolved.appendChild(wrapper);
21380
22295
  }
21381
- this.preRenderContainerEl = resolved;
21382
22296
  }
21383
22297
  insertIntoDOMForPreRender(child) {
21384
22298
  const preRenderChild = this.createPreRenderChild(child);
@@ -21401,7 +22315,7 @@ class TsEmbed {
21401
22315
  }
21402
22316
  const targetContainer = this.resolvePreRenderContainerTarget();
21403
22317
  this.preRenderContainerEl = targetContainer;
21404
- this.applyPreRenderContainerPositioning(targetContainer);
22318
+ this.applyPreRenderContainerPositioning();
21405
22319
  targetContainer.appendChild(preRenderWrapper);
21406
22320
  }
21407
22321
  insertIntoDOM(child) {
@@ -21729,6 +22643,9 @@ class TsEmbed {
21729
22643
  * @param args
21730
22644
  */
21731
22645
  async render() {
22646
+ uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_RENDER_CALLED, {
22647
+ embedComponentType: this.viewConfig.embedComponentType,
22648
+ });
21732
22649
  if (!getIsInitCalled()) {
21733
22650
  logger$3.error(ERROR_MESSAGE.RENDER_CALLED_BEFORE_INIT);
21734
22651
  }
@@ -21800,7 +22717,11 @@ class TsEmbed {
21800
22717
  * @param showPreRenderByDefault - Show the preRender after render, hidden by default
21801
22718
  */
21802
22719
  async preRender(showPreRenderByDefault = false, replaceExistingPreRender = false) {
21803
- if (!this.viewConfig.preRenderId) {
22720
+ uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_PRE_RENDER, {
22721
+ showPreRenderByDefault,
22722
+ replaceExistingPreRender,
22723
+ });
22724
+ if (!this.getPreRenderConfig().preRenderId) {
21804
22725
  logger$3.error(ERROR_MESSAGE.PRERENDER_ID_MISSING);
21805
22726
  return this;
21806
22727
  }
@@ -21856,7 +22777,7 @@ class TsEmbed {
21856
22777
  }
21857
22778
  // Drop our reference up front so a destroyed embed never pins a
21858
22779
  // detached container in memory; restoration uses the local handle.
21859
- this.preRenderContainerEl = null;
22780
+ this.preRenderContainerEl = document.body;
21860
22781
  const originalPosition = container.dataset[PRERENDER_CONTAINER_ORIGINAL_POSITION_KEY];
21861
22782
  if (originalPosition === undefined) {
21862
22783
  // We never overrode this container's position; nothing to restore.
@@ -21879,9 +22800,7 @@ class TsEmbed {
21879
22800
  if (!this.containerScrollListener) {
21880
22801
  return;
21881
22802
  }
21882
- const customContainer = this.preRenderContainerEl && this.preRenderContainerEl !== document.body
21883
- ? this.preRenderContainerEl
21884
- : null;
22803
+ const customContainer = this.getCustomPreRenderContainer();
21885
22804
  customContainer === null || customContainer === void 0 ? void 0 : customContainer.removeEventListener('scroll', this.containerScrollListener);
21886
22805
  this.containerScrollListener = null;
21887
22806
  }
@@ -21976,10 +22895,14 @@ class TsEmbed {
21976
22895
  * wrapper to overlay it.
21977
22896
  */
21978
22897
  async showPreRender() {
21979
- var _a;
22898
+ var _a, _b;
22899
+ uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_SHOW_PRE_RENDER, {
22900
+ preRenderId: this.getPreRenderConfig().preRenderId,
22901
+ embedComponentType: this.viewConfig.embedComponentType,
22902
+ });
21980
22903
  if (this.shouldWaitForRenderPromise)
21981
22904
  await this.isReadyForRenderPromise;
21982
- if (!this.viewConfig.preRenderId) {
22905
+ if (!this.getPreRenderConfig().preRenderId) {
21983
22906
  logger$3.error(ERROR_MESSAGE.PRERENDER_ID_MISSING);
21984
22907
  return this;
21985
22908
  }
@@ -22000,21 +22923,23 @@ class TsEmbed {
22000
22923
  }
22001
22924
  }
22002
22925
  const placeHolderId = this.getPreRenderIds().placeHolder;
22003
- const oldEle = this.hostElement.querySelector(`#${placeHolderId}`);
22004
- if (oldEle) {
22005
- this.hostElement.removeChild(oldEle);
22006
- }
22926
+ // Remove any stale placeholder from a previous cycle. It is located
22927
+ // via a subtree-wide querySelector, so it may be nested deeper than a
22928
+ // direct child (E.g.: with fullHeight the host app can wrap it). Use
22929
+ // Element.remove() — which detaches from whatever the real parent is —
22930
+ // rather than hostElement.removeChild(), which throws NotFoundError
22931
+ // when the match is not a direct child. Mirrors the wrapper/child
22932
+ // cleanup in createPreRenderWrapper()/createPreRenderChild().
22933
+ (_a = this.hostElement.querySelector(`#${placeHolderId}`)) === null || _a === void 0 ? void 0 : _a.remove();
22007
22934
  this.hostElement.appendChild(this.insertedDomEl);
22008
22935
  this.syncPreRenderStyle();
22009
- const customContainer = this.preRenderContainerEl && this.preRenderContainerEl !== document.body
22010
- ? this.preRenderContainerEl
22011
- : null;
22936
+ const customContainer = this.getCustomPreRenderContainer();
22012
22937
  if (customContainer && !this.containerScrollListener) {
22013
22938
  this.containerScrollListener = () => this.syncPreRenderStyle();
22014
22939
  customContainer.addEventListener('scroll', this.containerScrollListener);
22015
22940
  }
22016
- if (!this.viewConfig.doNotTrackPreRenderSize) {
22017
- const observeTarget = (_a = this.insertedDomEl) !== null && _a !== void 0 ? _a : this.hostElement;
22941
+ if (!this.getPreRenderConfig().doNotTrackPreRenderSize) {
22942
+ const observeTarget = (_b = this.insertedDomEl) !== null && _b !== void 0 ? _b : this.hostElement;
22018
22943
  this.resizeObserver = new ResizeObserver((entries) => {
22019
22944
  entries.forEach((entry) => {
22020
22945
  if (entry.target === observeTarget) {
@@ -22055,13 +22980,15 @@ class TsEmbed {
22055
22980
  logger$3.error(ERROR_MESSAGE.SYNC_STYLE_CALLED_BEFORE_RENDER);
22056
22981
  return;
22057
22982
  }
22983
+ if (!this.getPreRenderPlaceHolderElement().isConnected) {
22984
+ logger$3.debug('syncPreRenderStyle skipped: placeholder is detached');
22985
+ return;
22986
+ }
22058
22987
  // Self-heal if the resolved container was remounted/detached, so we
22059
22988
  // never measure a stale node (which would collapse the wrapper).
22060
22989
  this.reconcilePreRenderContainer();
22061
22990
  const elBoundingClient = this.getPreRenderPlaceHolderElement().getBoundingClientRect();
22062
- const containerEl = this.preRenderContainerEl && this.preRenderContainerEl !== document.body
22063
- ? this.preRenderContainerEl
22064
- : null;
22991
+ const containerEl = this.getCustomPreRenderContainer();
22065
22992
  const containerRect = (_a = containerEl === null || containerEl === void 0 ? void 0 : containerEl.getBoundingClientRect()) !== null && _a !== void 0 ? _a : { x: 0, y: 0 };
22066
22993
  const scrollX = containerEl ? containerEl.scrollLeft : window.scrollX;
22067
22994
  const scrollY = containerEl ? containerEl.scrollTop : window.scrollY;
@@ -22078,16 +23005,21 @@ class TsEmbed {
22078
23005
  * If the component is not preRendered, it issues a warning.
22079
23006
  */
22080
23007
  hidePreRender() {
23008
+ uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_HIDE_PRE_RENDER, {
23009
+ preRenderId: this.getPreRenderConfig().preRenderId,
23010
+ embedComponentType: this.viewConfig.embedComponentType,
23011
+ });
22081
23012
  logger$3.debug('HidePreRender Called');
22082
23013
  if (!this.isPreRenderConnected()) {
22083
23014
  // if the embed component is not preRendered , nothing to hide
22084
23015
  logger$3.warn('PreRender should be called before hiding it using hidePreRender.');
22085
23016
  return;
22086
23017
  }
23018
+ const { zIndex } = this.getPreRenderConfig();
22087
23019
  const preRenderHideStyles = {
22088
23020
  opacity: '0',
22089
23021
  pointerEvents: 'none',
22090
- zIndex: '-1000',
23022
+ zIndex: zIndex !== undefined ? String(zIndex) : '-1000',
22091
23023
  position: 'absolute',
22092
23024
  top: '0',
22093
23025
  left: '0',
@@ -22112,10 +23044,11 @@ class TsEmbed {
22112
23044
  * @property {string} child - The HTML element ID for the PreRender child.
22113
23045
  */
22114
23046
  getPreRenderIds() {
23047
+ const preRenderId = this.getPreRenderConfig().preRenderId;
22115
23048
  return {
22116
- wrapper: `${PRERENDER_WRAPPER_ID_PREFIX}${this.viewConfig.preRenderId}`,
22117
- child: `tsEmbed-pre-render-child-${this.viewConfig.preRenderId}`,
22118
- placeHolder: `tsEmbed-pre-render-placeholder-${this.viewConfig.preRenderId}`,
23049
+ wrapper: `${PRERENDER_WRAPPER_ID_PREFIX}${preRenderId}`,
23050
+ child: `tsEmbed-pre-render-child-${preRenderId}`,
23051
+ placeHolder: `tsEmbed-pre-render-placeholder-${preRenderId}`,
22119
23052
  };
22120
23053
  }
22121
23054
  /**
@@ -22557,6 +23490,31 @@ function buildSpotterSidebarAppInitData(defaultAppInitData, viewConfig, handleEr
22557
23490
  ...(visualOverrides !== undefined ? { visualOverridesParams: visualOverrides } : {}),
22558
23491
  },
22559
23492
  };
23493
+ }
23494
+ function buildSpotterShareConversationAppInitData(initData, viewConfig) {
23495
+ const { spotterShareConversationConfig } = viewConfig;
23496
+ if (!spotterShareConversationConfig)
23497
+ return initData;
23498
+ return {
23499
+ ...initData,
23500
+ embedParams: {
23501
+ ...(initData.embedParams || {}),
23502
+ spotterShareConversationConfig,
23503
+ },
23504
+ };
23505
+ }
23506
+ function buildStarterPromptsAppInitData(initData, viewConfig) {
23507
+ var _a;
23508
+ const starterPrompts = (_a = viewConfig.spotterChatConfig) === null || _a === void 0 ? void 0 : _a.starterPrompts;
23509
+ if (!starterPrompts)
23510
+ return initData;
23511
+ return {
23512
+ ...initData,
23513
+ embedParams: {
23514
+ ...(initData.embedParams || {}),
23515
+ starterPrompts,
23516
+ },
23517
+ };
22560
23518
  }
22561
23519
 
22562
23520
  function buildSpotterVizAppInitData(initData, viewConfig) {
@@ -22618,6 +23576,14 @@ var Page;
22618
23576
  * Monitor Alerts Page
22619
23577
  */
22620
23578
  Page["Monitor"] = "monitor";
23579
+ /**
23580
+ * Collections listing page
23581
+ */
23582
+ Page["Collections"] = "collections";
23583
+ /**
23584
+ * Liveboard schedules listing page
23585
+ */
23586
+ Page["LiveboardSchedules"] = "liveboard-schedules";
22621
23587
  })(Page || (Page = {}));
22622
23588
  /**
22623
23589
  * Define the initial state of column custom group accordions
@@ -22666,6 +23632,9 @@ var HomePage;
22666
23632
  /**
22667
23633
  * Modular (v2) introduces the updated Modular Home Experience.
22668
23634
  * It serves as the foundational version of the home page.
23635
+ * Use {@link HomePage.ModularWithStylingChanges} (V3) or
23636
+ * {@link HomePage.Focused} (V4) instead.
23637
+ * @deprecated V1 and V2 home page experiences are deprecated.
22669
23638
  */
22670
23639
  HomePage["Modular"] = "v2";
22671
23640
  /**
@@ -22760,6 +23729,15 @@ let AppEmbed$1 = class AppEmbed extends V1Embed {
22760
23729
  this.setIFrameHeight(frameHeight || this.defaultHeight);
22761
23730
  };
22762
23731
  if (this.viewConfig.fullHeight === true) {
23732
+ if (this.viewConfig.lazyLoadingForFullHeight === undefined) {
23733
+ this.viewConfig.lazyLoadingForFullHeight = true;
23734
+ }
23735
+ if (this.viewConfig.enableScrollableContainerLazyLoading === undefined) {
23736
+ this.viewConfig.enableScrollableContainerLazyLoading = true;
23737
+ }
23738
+ if (this.viewConfig.lazyLoadingMargin === undefined) {
23739
+ this.viewConfig.lazyLoadingMargin = DEFAULT_LAZY_LOADING_MARGIN;
23740
+ }
22763
23741
  this.on(EmbedEvent.RouteChange, this.setIframeHeightForNonEmbedLiveboard);
22764
23742
  this.on(EmbedEvent.EmbedHeight, this.updateIFrameHeight);
22765
23743
  this.on(EmbedEvent.EmbedIframeCenter, this.embedIframeCenter);
@@ -22781,14 +23759,20 @@ let AppEmbed$1 = class AppEmbed extends V1Embed {
22781
23759
  async getAppInitData() {
22782
23760
  const defaultAppInitData = await super.getAppInitData();
22783
23761
  const sidebarInitData = buildSpotterSidebarAppInitData(defaultAppInitData, this.viewConfig, this.handleError.bind(this));
22784
- return buildSpotterVizAppInitData(sidebarInitData, this.viewConfig);
23762
+ const vizInitData = buildSpotterVizAppInitData(sidebarInitData, this.viewConfig);
23763
+ const shareInitData = buildSpotterShareConversationAppInitData(vizInitData, this.viewConfig);
23764
+ return buildStarterPromptsAppInitData(shareInitData, this.viewConfig);
22785
23765
  }
22786
23766
  /**
22787
23767
  * Constructs a map of parameters to be passed on to the
22788
23768
  * embedded Liveboard or visualization.
22789
23769
  */
22790
23770
  getEmbedParams() {
22791
- 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.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;
23771
+ const params = this.getEmbedParamsObject();
23772
+ return getQueryParamString(params, true);
23773
+ }
23774
+ getEmbedParamsObject() {
23775
+ 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.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;
22792
23776
  let params = {};
22793
23777
  params[Param.PrimaryNavHidden] = !showPrimaryNavbar;
22794
23778
  params[Param.HideProfleAndHelp] = !!disableProfileAndHelp;
@@ -22798,31 +23782,51 @@ let AppEmbed$1 = class AppEmbed extends V1Embed {
22798
23782
  params[Param.ShowLiveboardTitle] = showLiveboardTitle;
22799
23783
  params[Param.ShowLiveboardDescription] = !!showLiveboardDescription;
22800
23784
  params[Param.ShowMaskedFilterChip] = showMaskedFilterChip;
22801
- params[Param.IsLiveboardMasterpiecesEnabled] = isLiveboardMasterpiecesEnabled;
23785
+ if (!isUndefined$1(isLiveboardMasterpiecesEnabled)) {
23786
+ params[Param.IsLiveboardMasterpiecesEnabled] = isLiveboardMasterpiecesEnabled;
23787
+ }
22802
23788
  if (newChartsLibrary !== undefined) {
22803
23789
  params[Param.EnableNewChartLibrary] = newChartsLibrary;
22804
23790
  }
22805
23791
  params[Param.LiveboardHeaderSticky] = isLiveboardHeaderSticky;
22806
23792
  params[Param.IsFullAppEmbed] = true;
22807
- params[Param.LiveboardHeaderV2] = isLiveboardCompactHeaderEnabled;
22808
- params[Param.IsEnhancedFilterInteractivityEnabled] = isEnhancedFilterInteractivityEnabled;
23793
+ if (!isUndefined$1(isLiveboardCompactHeaderEnabled)) {
23794
+ params[Param.LiveboardHeaderV2] = isLiveboardCompactHeaderEnabled;
23795
+ }
23796
+ if (!isUndefined$1(isEnhancedFilterInteractivityEnabled)) {
23797
+ params[Param.IsEnhancedFilterInteractivityEnabled] =
23798
+ isEnhancedFilterInteractivityEnabled;
23799
+ }
22809
23800
  params[Param.ShowLiveboardVerifiedBadge] = showLiveboardVerifiedBadge;
22810
23801
  params[Param.ShowLiveboardReverifyBanner] = showLiveboardReverifyBanner;
22811
- params[Param.HideIrrelevantFiltersInTab] = hideIrrelevantChipsInLiveboardTabs;
23802
+ if (!isUndefined$1(hideIrrelevantChipsInLiveboardTabs)) {
23803
+ params[Param.HideIrrelevantFiltersInTab] = hideIrrelevantChipsInLiveboardTabs;
23804
+ }
22812
23805
  if (isUnifiedSearchExperienceEnabled !== undefined) {
22813
23806
  params[Param.IsUnifiedSearchExperienceEnabled] = isUnifiedSearchExperienceEnabled;
22814
23807
  }
22815
- params[Param.CoverAndFilterOptionInPDF] = !!coverAndFilterOptionInPDF;
23808
+ if (!isUndefined$1(coverAndFilterOptionInPDF)) {
23809
+ params[Param.CoverAndFilterOptionInPDF] = !!coverAndFilterOptionInPDF;
23810
+ }
22816
23811
  params = this.getBaseQueryParams(params);
22817
- if (!isUndefined(updatedSpotterChatPrompt)) {
23812
+ if (!isUndefined$1(updatedSpotterChatPrompt)) {
22818
23813
  params[Param.UpdatedSpotterChatPrompt] = !!updatedSpotterChatPrompt;
22819
23814
  }
22820
- if (!isUndefined(enableStopAnswerGenerationEmbed)) {
23815
+ if (!isUndefined$1(showSpotterRadiance)) {
23816
+ params[Param.ShowSpotterRadiance] = !!showSpotterRadiance;
23817
+ }
23818
+ if (!isUndefined$1(defaultQueryMode)) {
23819
+ params[Param.DefaultQueryMode] = defaultQueryMode;
23820
+ }
23821
+ if (!isUndefined$1(enableStopAnswerGenerationEmbed)) {
22821
23822
  params[Param.EnableStopAnswerGenerationEmbed] = !!enableStopAnswerGenerationEmbed;
22822
23823
  }
23824
+ if (spotterDataSources && spotterDataSources.length) {
23825
+ params[Param.SpotterDataSources] = JSON.stringify(spotterDataSources);
23826
+ }
22823
23827
  // Handle spotterChatConfig params
22824
23828
  if (spotterChatConfig) {
22825
- const { hideToolResponseCardBranding, toolResponseCardBrandingLabel, spotterFileUploadEnabled, spotterFileUploadFileTypes, enableStarterPrompts, } = spotterChatConfig;
23829
+ const { hideToolResponseCardBranding, toolResponseCardBrandingLabel, spotterFileUploadEnabled, spotterFileUploadFileTypes, enableStarterPrompts, openSpotterOnLiveboardByDefault, } = spotterChatConfig;
22826
23830
  setParamIfDefined(params, Param.HideToolResponseCardBranding, hideToolResponseCardBranding, true);
22827
23831
  setParamIfDefined(params, Param.ToolResponseCardBrandingLabel, toolResponseCardBrandingLabel);
22828
23832
  if (spotterFileUploadEnabled !== undefined) {
@@ -22831,10 +23835,16 @@ let AppEmbed$1 = class AppEmbed extends V1Embed {
22831
23835
  if (enableStarterPrompts !== undefined) {
22832
23836
  params[Param.IsStarterPromptsEnabled] = enableStarterPrompts;
22833
23837
  }
23838
+ if (openSpotterOnLiveboardByDefault !== undefined) {
23839
+ params[Param.OpenSpotterOnLiveboardByDefault] = openSpotterOnLiveboardByDefault;
23840
+ }
22834
23841
  if (spotterFileUploadFileTypes !== undefined) {
22835
23842
  params[Param.SpotterFileUploadFileTypes] = JSON.stringify(spotterFileUploadFileTypes);
22836
23843
  }
22837
23844
  }
23845
+ if (!isUndefined$1(updatedSpotterExperience)) {
23846
+ params[Param.UpdatedSpotterExperience] = !!updatedSpotterExperience;
23847
+ }
22838
23848
  if (hideObjectSearch) {
22839
23849
  params[Param.HideObjectSearch] = !!hideObjectSearch;
22840
23850
  }
@@ -22871,6 +23881,9 @@ let AppEmbed$1 = class AppEmbed extends V1Embed {
22871
23881
  if (enable2ColumnLayout !== undefined) {
22872
23882
  params[Param.Enable2ColumnLayout] = enable2ColumnLayout;
22873
23883
  }
23884
+ if (isLiveboardAlwaysOn12ColLayout !== undefined) {
23885
+ params[Param.IsLiveboardAlwaysOn12ColLayout] = isLiveboardAlwaysOn12ColLayout;
23886
+ }
22874
23887
  if (enableAskSage) {
22875
23888
  params[Param.enableAskSage] = enableAskSage;
22876
23889
  }
@@ -22883,6 +23896,9 @@ let AppEmbed$1 = class AppEmbed extends V1Embed {
22883
23896
  if (isLiveboardStylingAndGroupingEnabled !== undefined) {
22884
23897
  params[Param.IsLiveboardStylingAndGroupingEnabled] = isLiveboardStylingAndGroupingEnabled;
22885
23898
  }
23899
+ if (liveboardGutter !== undefined) {
23900
+ params[Param.LiveboardGutter] = liveboardGutter;
23901
+ }
22886
23902
  if (isPNGInScheduledEmailsEnabled !== undefined) {
22887
23903
  params[Param.isPNGInScheduledEmailsEnabled] = isPNGInScheduledEmailsEnabled;
22888
23904
  }
@@ -22901,6 +23917,9 @@ let AppEmbed$1 = class AppEmbed extends V1Embed {
22901
23917
  if (isCentralizedLiveboardFilterUXEnabled != undefined) {
22902
23918
  params[Param.isCentralizedLiveboardFilterUXEnabled] = isCentralizedLiveboardFilterUXEnabled;
22903
23919
  }
23920
+ if (isScopedLiveboardFilteringEnabled !== undefined) {
23921
+ params[Param.isScopedLiveboardFilteringEnabled] = isScopedLiveboardFilteringEnabled;
23922
+ }
22904
23923
  if (isThisPeriodInDateFiltersEnabled !== undefined) {
22905
23924
  params[Param.IsThisPeriodInDateFiltersEnabled] = isThisPeriodInDateFiltersEnabled;
22906
23925
  }
@@ -22916,7 +23935,6 @@ let AppEmbed$1 = class AppEmbed extends V1Embed {
22916
23935
  }
22917
23936
  params[Param.DataPanelV2Enabled] = dataPanelV2;
22918
23937
  params[Param.HideHomepageLeftNav] = hideHomepageLeftNav;
22919
- params[Param.ModularHomeExperienceEnabled] = modularHomeExperience;
22920
23938
  params[Param.CollapseSearchBarInitially] = collapseSearchBarInitially || collapseSearchBar;
22921
23939
  params[Param.EnableCustomColumnGroups] = enableCustomColumnGroups;
22922
23940
  if (dataPanelCustomGroupsAccordionInitialState
@@ -22931,33 +23949,15 @@ let AppEmbed$1 = class AppEmbed extends V1Embed {
22931
23949
  if (modularHomeExperience !== undefined) {
22932
23950
  params[Param.ModularHomeExperienceEnabled] = modularHomeExperience;
22933
23951
  }
22934
- // Set navigation to v2 by default to avoid problems like the app
22935
- // switcher (9-dot menu) not showing when v3 navigation is turned on
22936
- // at the cluster level.
22937
- // To use v3 navigation, we must manually set the discoveryExperience
22938
- // settings.
22939
- params[Param.NavigationVersion] = 'v2';
22940
- // Set homePageVersion to v2 by default to reset the LD flag value
22941
- // for the homepageVersion.
22942
- params[Param.HomepageVersion] = 'v2';
23952
+ // Navigation V1/V2 and home page V1/V2 are deprecated. V3 is now the
23953
+ // default experience, Need to send navigationVersion=v3 and
23954
+ // homepageVersion=v3 even when the no discoveryExperience /
23955
+ // modularHomeExperience config is set. Without these
23956
+ // params, older TSA versions (< 26.7) fall back to V2 for nav and
23957
+ // home page, so the defaults must be sent explicitly from the SDK.
23958
+ params[Param.NavigationVersion] = PrimaryNavbarVersion.Sliding;
23959
+ params[Param.HomepageVersion] = HomePage.ModularWithStylingChanges;
22943
23960
  if (discoveryExperience) {
22944
- // primaryNavbarVersion v3 will enabled the new left navigation
22945
- if (discoveryExperience.primaryNavbarVersion === PrimaryNavbarVersion.Sliding) {
22946
- params[Param.NavigationVersion] = discoveryExperience.primaryNavbarVersion;
22947
- // Enable the modularHomeExperience when Sliding is enabled.
22948
- params[Param.ModularHomeExperienceEnabled] = true;
22949
- }
22950
- // homePage v2 will enable the modular home page
22951
- // and it will override the modularHomeExperience value
22952
- if (discoveryExperience.homePage === HomePage.Modular) {
22953
- params[Param.ModularHomeExperienceEnabled] = true;
22954
- }
22955
- // ModularWithStylingChanges (v3) introduces the styling changes
22956
- // to the Modular Homepage.
22957
- // v3 will be the base version of homePageVersion.
22958
- if (discoveryExperience.homePage === HomePage.ModularWithStylingChanges) {
22959
- params[Param.HomepageVersion] = HomePage.ModularWithStylingChanges;
22960
- }
22961
23961
  // listPageVersion can be changed to v2 or v3
22962
23962
  if (discoveryExperience.listPageVersion !== undefined) {
22963
23963
  params[Param.ListPageVersion] = discoveryExperience.listPageVersion;
@@ -22967,13 +23967,12 @@ let AppEmbed$1 = class AppEmbed extends V1Embed {
22967
23967
  // The Focused (V4) homepage experience requires the updated
22968
23968
  // Spotter chat prompt. Enable it automatically unless the
22969
23969
  // developer has explicitly set updatedSpotterChatPrompt.
22970
- if (isUndefined(updatedSpotterChatPrompt)) {
23970
+ if (isUndefined$1(updatedSpotterChatPrompt)) {
22971
23971
  params[Param.UpdatedSpotterChatPrompt] = true;
22972
23972
  }
22973
23973
  }
22974
23974
  }
22975
- const queryParams = getQueryParamString(params, true);
22976
- return queryParams;
23975
+ return params;
22977
23976
  }
22978
23977
  /**
22979
23978
  * Constructs the URL of the ThoughtSpot app page to be rendered.
@@ -23008,6 +24007,10 @@ let AppEmbed$1 = class AppEmbed extends V1Embed {
23008
24007
  return modularHomeExperience ? 'home/spotiq-analysis' : 'insights/results';
23009
24008
  case Page.Monitor:
23010
24009
  return modularHomeExperience ? 'home/monitor-alerts' : 'insights/monitor-alerts';
24010
+ case Page.Collections:
24011
+ return 'collections';
24012
+ case Page.LiveboardSchedules:
24013
+ return 'home/liveboard-schedules';
23011
24014
  case Page.Home:
23012
24015
  default:
23013
24016
  return 'home';
@@ -23040,11 +24043,13 @@ let AppEmbed$1 = class AppEmbed extends V1Embed {
23040
24043
  * @version SDK: 1.12.0 | ThoughtSpot: 8.4.0.cl, 8.4.1-sw
23041
24044
  */
23042
24045
  navigateToPage(path, noReload = false) {
24046
+ var _a;
23043
24047
  if (!this.iFrame) {
23044
24048
  logger$3.log('Please call render before invoking this method');
23045
24049
  return;
23046
24050
  }
23047
- if (noReload) {
24051
+ const overrideHistoryState = (_a = this.viewConfig) === null || _a === void 0 ? void 0 : _a.overrideHistoryState;
24052
+ if (noReload || overrideHistoryState) {
23048
24053
  this.trigger(HostEvent.Navigate, path);
23049
24054
  }
23050
24055
  else {
@@ -23291,6 +24296,15 @@ let LiveboardEmbed$1 = class LiveboardEmbed extends V1Embed {
23291
24296
  logger$3.warn('Full height is currently only supported for Liveboard embeds.' +
23292
24297
  'Using full height with vizId might lead to unexpected behavior.');
23293
24298
  }
24299
+ if (this.viewConfig.lazyLoadingForFullHeight === undefined) {
24300
+ this.viewConfig.lazyLoadingForFullHeight = true;
24301
+ }
24302
+ if (this.viewConfig.enableScrollableContainerLazyLoading === undefined) {
24303
+ this.viewConfig.enableScrollableContainerLazyLoading = true;
24304
+ }
24305
+ if (this.viewConfig.lazyLoadingMargin === undefined) {
24306
+ this.viewConfig.lazyLoadingMargin = DEFAULT_LAZY_LOADING_MARGIN;
24307
+ }
23294
24308
  this.on(EmbedEvent.RouteChange, this.setIframeHeightForNonEmbedLiveboard);
23295
24309
  this.on(EmbedEvent.EmbedHeight, this.updateIFrameHeight);
23296
24310
  this.on(EmbedEvent.EmbedIframeCenter, this.embedIframeCenter);
@@ -23299,7 +24313,8 @@ let LiveboardEmbed$1 = class LiveboardEmbed extends V1Embed {
23299
24313
  }
23300
24314
  async getAppInitData() {
23301
24315
  const defaultAppInitData = await super.getAppInitData();
23302
- return buildSpotterVizAppInitData(defaultAppInitData, this.viewConfig);
24316
+ const vizInitData = buildSpotterVizAppInitData(defaultAppInitData, this.viewConfig);
24317
+ return buildStarterPromptsAppInitData(vizInitData, this.viewConfig);
23303
24318
  }
23304
24319
  /**
23305
24320
  * Construct a map of params to be passed on to the
@@ -23313,7 +24328,7 @@ let LiveboardEmbed$1 = class LiveboardEmbed extends V1Embed {
23313
24328
  getEmbedParamsObject() {
23314
24329
  let params = {};
23315
24330
  params = this.getBaseQueryParams(params);
23316
- 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;
24331
+ 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;
23317
24332
  const preventLiveboardFilterRemoval = this.viewConfig.preventLiveboardFilterRemoval
23318
24333
  || this.viewConfig.preventPinboardFilterRemoval;
23319
24334
  if (fullHeight === true) {
@@ -23332,10 +24347,13 @@ let LiveboardEmbed$1 = class LiveboardEmbed extends V1Embed {
23332
24347
  if (preventLiveboardFilterRemoval) {
23333
24348
  params[Param.preventLiveboardFilterRemoval] = true;
23334
24349
  }
23335
- if (!isUndefined(updatedSpotterChatPrompt)) {
24350
+ if (!isUndefined$1(updatedSpotterChatPrompt)) {
23336
24351
  params[Param.UpdatedSpotterChatPrompt] = !!updatedSpotterChatPrompt;
23337
24352
  }
23338
- if (!isUndefined(enableStopAnswerGenerationEmbed)) {
24353
+ if (!isUndefined$1(showSpotterRadiance)) {
24354
+ params[Param.ShowSpotterRadiance] = !!showSpotterRadiance;
24355
+ }
24356
+ if (!isUndefined$1(enableStopAnswerGenerationEmbed)) {
23339
24357
  params[Param.EnableStopAnswerGenerationEmbed] = !!enableStopAnswerGenerationEmbed;
23340
24358
  }
23341
24359
  if (visibleVizs) {
@@ -23351,6 +24369,9 @@ let LiveboardEmbed$1 = class LiveboardEmbed extends V1Embed {
23351
24369
  if (enable2ColumnLayout !== undefined) {
23352
24370
  params[Param.Enable2ColumnLayout] = enable2ColumnLayout;
23353
24371
  }
24372
+ if (isLiveboardAlwaysOn12ColLayout !== undefined) {
24373
+ params[Param.IsLiveboardAlwaysOn12ColLayout] = isLiveboardAlwaysOn12ColLayout;
24374
+ }
23354
24375
  if (hideTabPanel) {
23355
24376
  params[Param.HideTabPanel] = hideTabPanel;
23356
24377
  }
@@ -23378,6 +24399,9 @@ let LiveboardEmbed$1 = class LiveboardEmbed extends V1Embed {
23378
24399
  if (isLiveboardStylingAndGroupingEnabled !== undefined) {
23379
24400
  params[Param.IsLiveboardStylingAndGroupingEnabled] = isLiveboardStylingAndGroupingEnabled;
23380
24401
  }
24402
+ if (liveboardGutter !== undefined) {
24403
+ params[Param.LiveboardGutter] = liveboardGutter;
24404
+ }
23381
24405
  if (isPNGInScheduledEmailsEnabled !== undefined) {
23382
24406
  params[Param.isPNGInScheduledEmailsEnabled] = isPNGInScheduledEmailsEnabled;
23383
24407
  }
@@ -23390,9 +24414,12 @@ let LiveboardEmbed$1 = class LiveboardEmbed extends V1Embed {
23390
24414
  if (showSpotterLimitations !== undefined) {
23391
24415
  params[Param.ShowSpotterLimitations] = showSpotterLimitations;
23392
24416
  }
24417
+ if (!isUndefined$1(updatedSpotterExperience)) {
24418
+ params[Param.UpdatedSpotterExperience] = !!updatedSpotterExperience;
24419
+ }
23393
24420
  // Handle spotterChatConfig params
23394
24421
  if (spotterChatConfig) {
23395
- const { hideToolResponseCardBranding, toolResponseCardBrandingLabel, spotterFileUploadEnabled, spotterFileUploadFileTypes, enableStarterPrompts, } = spotterChatConfig;
24422
+ const { hideToolResponseCardBranding, toolResponseCardBrandingLabel, spotterFileUploadEnabled, spotterFileUploadFileTypes, enableStarterPrompts, openSpotterOnLiveboardByDefault, } = spotterChatConfig;
23396
24423
  setParamIfDefined(params, Param.HideToolResponseCardBranding, hideToolResponseCardBranding, true);
23397
24424
  setParamIfDefined(params, Param.ToolResponseCardBrandingLabel, toolResponseCardBrandingLabel);
23398
24425
  if (spotterFileUploadEnabled !== undefined) {
@@ -23401,6 +24428,9 @@ let LiveboardEmbed$1 = class LiveboardEmbed extends V1Embed {
23401
24428
  if (enableStarterPrompts !== undefined) {
23402
24429
  params[Param.IsStarterPromptsEnabled] = enableStarterPrompts;
23403
24430
  }
24431
+ if (openSpotterOnLiveboardByDefault !== undefined) {
24432
+ params[Param.OpenSpotterOnLiveboardByDefault] = openSpotterOnLiveboardByDefault;
24433
+ }
23404
24434
  if (spotterFileUploadFileTypes !== undefined) {
23405
24435
  params[Param.SpotterFileUploadFileTypes] = JSON.stringify(spotterFileUploadFileTypes);
23406
24436
  }
@@ -23411,6 +24441,9 @@ let LiveboardEmbed$1 = class LiveboardEmbed extends V1Embed {
23411
24441
  if (isCentralizedLiveboardFilterUXEnabled !== undefined) {
23412
24442
  params[Param.isCentralizedLiveboardFilterUXEnabled] = isCentralizedLiveboardFilterUXEnabled;
23413
24443
  }
24444
+ if (isScopedLiveboardFilteringEnabled !== undefined) {
24445
+ params[Param.isScopedLiveboardFilteringEnabled] = isScopedLiveboardFilteringEnabled;
24446
+ }
23414
24447
  if (isThisPeriodInDateFiltersEnabled !== undefined) {
23415
24448
  params[Param.IsThisPeriodInDateFiltersEnabled] = isThisPeriodInDateFiltersEnabled;
23416
24449
  }
@@ -23424,16 +24457,27 @@ let LiveboardEmbed$1 = class LiveboardEmbed extends V1Embed {
23424
24457
  params[Param.EnableNewChartLibrary] = newChartsLibrary;
23425
24458
  }
23426
24459
  params[Param.LiveboardHeaderSticky] = isLiveboardHeaderSticky;
23427
- params[Param.LiveboardHeaderV2] = isLiveboardCompactHeaderEnabled;
24460
+ if (!isUndefined$1(isLiveboardCompactHeaderEnabled)) {
24461
+ params[Param.LiveboardHeaderV2] = isLiveboardCompactHeaderEnabled;
24462
+ }
23428
24463
  params[Param.ShowLiveboardVerifiedBadge] = showLiveboardVerifiedBadge;
23429
24464
  params[Param.ShowLiveboardReverifyBanner] = showLiveboardReverifyBanner;
23430
- params[Param.HideIrrelevantFiltersInTab] = hideIrrelevantChipsInLiveboardTabs;
24465
+ if (!isUndefined$1(hideIrrelevantChipsInLiveboardTabs)) {
24466
+ params[Param.HideIrrelevantFiltersInTab] = hideIrrelevantChipsInLiveboardTabs;
24467
+ }
23431
24468
  params[Param.ShowMaskedFilterChip] = showMaskedFilterChip;
23432
- params[Param.IsLiveboardMasterpiecesEnabled] = isLiveboardMasterpiecesEnabled;
23433
- params[Param.IsEnhancedFilterInteractivityEnabled] = isEnhancedFilterInteractivityEnabled;
24469
+ if (!isUndefined$1(isLiveboardMasterpiecesEnabled)) {
24470
+ params[Param.IsLiveboardMasterpiecesEnabled] = isLiveboardMasterpiecesEnabled;
24471
+ }
24472
+ if (!isUndefined$1(isEnhancedFilterInteractivityEnabled)) {
24473
+ params[Param.IsEnhancedFilterInteractivityEnabled] =
24474
+ isEnhancedFilterInteractivityEnabled;
24475
+ }
23434
24476
  params[Param.DataPanelV2Enabled] = dataPanelV2;
23435
24477
  params[Param.EnableCustomColumnGroups] = enableCustomColumnGroups;
23436
- params[Param.CoverAndFilterOptionInPDF] = coverAndFilterOptionInPDF;
24478
+ if (!isUndefined$1(coverAndFilterOptionInPDF)) {
24479
+ params[Param.CoverAndFilterOptionInPDF] = coverAndFilterOptionInPDF;
24480
+ }
23437
24481
  getQueryParamString(params, true);
23438
24482
  return params;
23439
24483
  }
@@ -23536,7 +24580,7 @@ let LiveboardEmbed$1 = class LiveboardEmbed extends V1Embed {
23536
24580
  });
23537
24581
  }
23538
24582
  async handleRenderForPrerender() {
23539
- if (isUndefined(this.viewConfig.liveboardId)) {
24583
+ if (isUndefined$1(this.viewConfig.liveboardId)) {
23540
24584
  return this.prerenderGeneric();
23541
24585
  }
23542
24586
  return super.handleRenderForPrerender();
@@ -23632,7 +24676,7 @@ let LiveboardEmbed$1 = class LiveboardEmbed extends V1Embed {
23632
24676
  if (this.isRendered) {
23633
24677
  this.trigger(HostEvent.Navigate, path.substring(1));
23634
24678
  }
23635
- else if (this.viewConfig.preRenderId) {
24679
+ else if (this.getPreRenderConfig().preRenderId) {
23636
24680
  this.preRender(true);
23637
24681
  }
23638
24682
  else {
@@ -24173,6 +25217,15 @@ function getViewPropsAndListeners(props) {
24173
25217
  });
24174
25218
  }
24175
25219
 
25220
+ /**
25221
+ * The query mode Spotter uses when answering a question.
25222
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
25223
+ */
25224
+ var SpotterQueryMode;
25225
+ (function (SpotterQueryMode) {
25226
+ SpotterQueryMode["FAST_SEARCH"] = "fastSearch";
25227
+ SpotterQueryMode["RESEARCH"] = "research";
25228
+ })(SpotterQueryMode || (SpotterQueryMode = {}));
24176
25229
  /**
24177
25230
  * Embed ThoughtSpot AI Conversation.
24178
25231
  * @version SDK: 1.37.0 | ThoughtSpot: 10.9.0.cl
@@ -24213,18 +25266,12 @@ let SpotterEmbed$1 = class SpotterEmbed extends TsEmbed {
24213
25266
  */
24214
25267
  async getAppInitData() {
24215
25268
  const defaultAppInitData = await super.getAppInitData();
24216
- return buildSpotterSidebarAppInitData(defaultAppInitData, this.viewConfig, this.handleError.bind(this));
25269
+ const sidebarInitData = buildSpotterSidebarAppInitData(defaultAppInitData, this.viewConfig, this.handleError.bind(this));
25270
+ const shareInitData = buildSpotterShareConversationAppInitData(sidebarInitData, this.viewConfig);
25271
+ return buildStarterPromptsAppInitData(shareInitData, this.viewConfig);
24217
25272
  }
24218
25273
  getEmbedParamsObject() {
24219
- const { worksheetId, searchOptions, disableSourceSelection, hideSourceSelection, dataPanelV2, showSpotterLimitations, hideSampleQuestions, runtimeFilters, excludeRuntimeFiltersfromURL, runtimeParameters, excludeRuntimeParametersfromURL, updatedSpotterChatPrompt, enableStopAnswerGenerationEmbed, spotterChatConfig, } = this.viewConfig;
24220
- if (!worksheetId) {
24221
- this.handleError({
24222
- errorType: ErrorDetailsTypes.VALIDATION_ERROR,
24223
- message: ERROR_MESSAGE.SPOTTER_EMBED_WORKSHEED_ID_NOT_FOUND,
24224
- code: EmbedErrorCodes.WORKSHEET_ID_NOT_FOUND,
24225
- error: ERROR_MESSAGE.SPOTTER_EMBED_WORKSHEED_ID_NOT_FOUND,
24226
- });
24227
- }
25274
+ const { searchOptions, disableSourceSelection, hideSourceSelection, dataPanelV2, updatedSpotterExperience, showSpotterLimitations, hideSampleQuestions, runtimeFilters, excludeRuntimeFiltersfromURL, runtimeParameters, excludeRuntimeParametersfromURL, updatedSpotterChatPrompt, showSpotterRadiance, defaultQueryMode, enableStopAnswerGenerationEmbed, spotterChatConfig, spotterAnalystConfig, } = this.viewConfig;
24228
25275
  const queryParams = this.getBaseQueryParams();
24229
25276
  queryParams[Param.SpotterEnabled] = true;
24230
25277
  // Boolean params
@@ -24234,7 +25281,10 @@ let SpotterEmbed$1 = class SpotterEmbed extends TsEmbed {
24234
25281
  setParamIfDefined(queryParams, Param.ShowSpotterLimitations, showSpotterLimitations, true);
24235
25282
  setParamIfDefined(queryParams, Param.HideSampleQuestions, hideSampleQuestions, true);
24236
25283
  setParamIfDefined(queryParams, Param.UpdatedSpotterChatPrompt, updatedSpotterChatPrompt, true);
25284
+ setParamIfDefined(queryParams, Param.ShowSpotterRadiance, showSpotterRadiance, true);
25285
+ setParamIfDefined(queryParams, Param.DefaultQueryMode, defaultQueryMode);
24237
25286
  setParamIfDefined(queryParams, Param.EnableStopAnswerGenerationEmbed, enableStopAnswerGenerationEmbed, true);
25287
+ setParamIfDefined(queryParams, Param.AnalystId, spotterAnalystConfig === null || spotterAnalystConfig === void 0 ? void 0 : spotterAnalystConfig.analystId);
24238
25288
  // Handle spotterChatConfig params
24239
25289
  if (spotterChatConfig) {
24240
25290
  const { hideToolResponseCardBranding, toolResponseCardBrandingLabel, spotterFileUploadEnabled, spotterFileUploadFileTypes, enableStarterPrompts, } = spotterChatConfig;
@@ -24246,11 +25296,18 @@ let SpotterEmbed$1 = class SpotterEmbed extends TsEmbed {
24246
25296
  queryParams[Param.SpotterFileUploadFileTypes] = JSON.stringify(spotterFileUploadFileTypes);
24247
25297
  }
24248
25298
  }
25299
+ setParamIfDefined(queryParams, Param.UpdatedSpotterExperience, updatedSpotterExperience, true);
24249
25300
  return queryParams;
24250
25301
  }
24251
25302
  getIframeSrc() {
24252
- const { worksheetId, searchOptions, runtimeFilters, excludeRuntimeFiltersfromURL, runtimeParameters, excludeRuntimeParametersfromURL, } = this.viewConfig;
24253
- const path = 'insights/conv-assist';
25303
+ const { worksheetId, searchOptions, runtimeFilters, excludeRuntimeFiltersfromURL, runtimeParameters, excludeRuntimeParametersfromURL, sharedConversationId, dataSources, } = this.viewConfig;
25304
+ // Deep-link into the read-only shared-conversation reader view when a
25305
+ // shared conversation id is supplied (e.g. a recipient landing from a
25306
+ // host-configured CONVERSATION_URL share link); otherwise the normal
25307
+ // Spotter conversation surface.
25308
+ const path = sharedConversationId
25309
+ ? `insights/conv-assist/s/${encodeURIComponent(sharedConversationId)}`
25310
+ : 'insights/conv-assist';
24254
25311
  const queryParams = this.getEmbedParamsObject();
24255
25312
  let query = '';
24256
25313
  const queryParamsString = getQueryParamString(queryParams, true);
@@ -24266,8 +25323,12 @@ let SpotterEmbed$1 = class SpotterEmbed extends TsEmbed {
24266
25323
  query += `&${parameterQuery}`;
24267
25324
  }
24268
25325
  const tsPostHashParams = this.getThoughtSpotPostUrlParams({
24269
- worksheet: worksheetId,
24270
- query: (searchOptions === null || searchOptions === void 0 ? void 0 : searchOptions.searchQuery) || '',
25326
+ ...(!(Array.isArray(dataSources) && dataSources.length > 0) && worksheetId
25327
+ && { worksheet: worksheetId }),
25328
+ ...((searchOptions === null || searchOptions === void 0 ? void 0 : searchOptions.searchQuery) && { query: searchOptions.searchQuery }),
25329
+ ...(Array.isArray(dataSources)
25330
+ && dataSources.length > 0
25331
+ && { dataSources: JSON.stringify(dataSources) }),
24271
25332
  });
24272
25333
  return `${this.getEmbedBasePath(query)}/embed/${path}${tsPostHashParams}`;
24273
25334
  }
@@ -24315,15 +25376,17 @@ const componentFactory = (EmbedConstructor,
24315
25376
  // not be destroyed when the component is unmounted.
24316
25377
  isPreRenderedComponent = false) => {
24317
25378
  const Component = React__default.forwardRef((props, forwardedRef) => {
25379
+ var _a, _b;
24318
25380
  const ref = React__default.useRef(null);
24319
25381
  const { className, style, ...embedProps } = props;
24320
25382
  const { viewConfig, listeners } = getViewPropsAndListeners(embedProps);
25383
+ const preRenderId = (_b = (_a = props.preRenderConfig) === null || _a === void 0 ? void 0 : _a.preRenderId) !== null && _b !== void 0 ? _b : props.preRenderId;
24321
25384
  const handleDestroy = (tsEmbed) => {
24322
25385
  // do not destroy if it is a preRender component
24323
25386
  if (isPreRenderedComponent)
24324
25387
  return;
24325
25388
  // if component is connected to a preRendered component
24326
- if (props.preRenderId) {
25389
+ if (preRenderId) {
24327
25390
  tsEmbed.hidePreRender();
24328
25391
  return;
24329
25392
  }
@@ -24334,7 +25397,7 @@ isPreRenderedComponent = false) => {
24334
25397
  };
24335
25398
  const handleDefaultRendering = (tsEmbed) => {
24336
25399
  // if component is connected to a preRendered component
24337
- if (props.preRenderId) {
25400
+ if (preRenderId) {
24338
25401
  tsEmbed.showPreRender();
24339
25402
  return;
24340
25403
  }
@@ -24583,7 +25646,7 @@ const PreRenderedConversationEmbed = componentFactory(SpotterEmbed$1, true);
24583
25646
  * const ref = useEmbedRef();
24584
25647
  * useEffect(() => {
24585
25648
  * ref.current.trigger(
24586
- * EmbedEvent.UpdateRuntimeFilter,
25649
+ * HostEvent.UpdateRuntimeFilters,
24587
25650
  * [{ columnName: 'name', operator: 'EQ', values: ['value']}]);
24588
25651
  * }, [])
24589
25652
  * return <LiveboardEmbed ref={ref} liveboardId={<id>} />