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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (285) hide show
  1. package/cjs/package.json +1 -1
  2. package/cjs/src/config.d.ts +1 -0
  3. package/cjs/src/config.d.ts.map +1 -1
  4. package/cjs/src/config.js +2 -1
  5. package/cjs/src/config.js.map +1 -1
  6. package/cjs/src/css-variables.d.ts +122 -0
  7. package/cjs/src/css-variables.d.ts.map +1 -1
  8. package/cjs/src/embed/app.d.ts +176 -24
  9. package/cjs/src/embed/app.d.ts.map +1 -1
  10. package/cjs/src/embed/app.js +86 -38
  11. package/cjs/src/embed/app.js.map +1 -1
  12. package/cjs/src/embed/app.spec.js +672 -150
  13. package/cjs/src/embed/app.spec.js.map +1 -1
  14. package/cjs/src/embed/base.d.ts +1 -1
  15. package/cjs/src/embed/base.js +1 -1
  16. package/cjs/src/embed/conversation.d.ts +401 -2
  17. package/cjs/src/embed/conversation.d.ts.map +1 -1
  18. package/cjs/src/embed/conversation.js +32 -16
  19. package/cjs/src/embed/conversation.js.map +1 -1
  20. package/cjs/src/embed/conversation.spec.js +346 -17
  21. package/cjs/src/embed/conversation.spec.js.map +1 -1
  22. package/cjs/src/embed/events.spec.js +638 -0
  23. package/cjs/src/embed/events.spec.js.map +1 -1
  24. package/cjs/src/embed/host-events.spec.js +187 -0
  25. package/cjs/src/embed/host-events.spec.js.map +1 -1
  26. package/cjs/src/embed/hostEventClient/contracts.d.ts +51 -14
  27. package/cjs/src/embed/hostEventClient/contracts.d.ts.map +1 -1
  28. package/cjs/src/embed/hostEventClient/contracts.js +11 -1
  29. package/cjs/src/embed/hostEventClient/contracts.js.map +1 -1
  30. package/cjs/src/embed/hostEventClient/host-event-client.d.ts +2 -1
  31. package/cjs/src/embed/hostEventClient/host-event-client.d.ts.map +1 -1
  32. package/cjs/src/embed/hostEventClient/host-event-client.js +9 -0
  33. package/cjs/src/embed/hostEventClient/host-event-client.js.map +1 -1
  34. package/cjs/src/embed/hostEventClient/host-event-client.spec.js +236 -0
  35. package/cjs/src/embed/hostEventClient/host-event-client.spec.js.map +1 -1
  36. package/cjs/src/embed/hostEventClient/utils.d.ts +2 -0
  37. package/cjs/src/embed/hostEventClient/utils.d.ts.map +1 -1
  38. package/cjs/src/embed/hostEventClient/utils.js +32 -2
  39. package/cjs/src/embed/hostEventClient/utils.js.map +1 -1
  40. package/cjs/src/embed/hostEventClient/utils.spec.js +178 -0
  41. package/cjs/src/embed/hostEventClient/utils.spec.js.map +1 -1
  42. package/cjs/src/embed/liveboard.d.ts +81 -13
  43. package/cjs/src/embed/liveboard.d.ts.map +1 -1
  44. package/cjs/src/embed/liveboard.js +50 -9
  45. package/cjs/src/embed/liveboard.js.map +1 -1
  46. package/cjs/src/embed/liveboard.spec.js +432 -4
  47. package/cjs/src/embed/liveboard.spec.js.map +1 -1
  48. package/cjs/src/embed/spotter-utils.d.ts +15 -1
  49. package/cjs/src/embed/spotter-utils.d.ts.map +1 -1
  50. package/cjs/src/embed/spotter-utils.js +28 -1
  51. package/cjs/src/embed/spotter-utils.js.map +1 -1
  52. package/cjs/src/embed/spotter-utils.spec.js +129 -0
  53. package/cjs/src/embed/spotter-utils.spec.js.map +1 -1
  54. package/cjs/src/embed/spotter-viz-utils.d.ts +37 -4
  55. package/cjs/src/embed/spotter-viz-utils.d.ts.map +1 -1
  56. package/cjs/src/embed/spotter-viz-utils.js.map +1 -1
  57. package/cjs/src/embed/spotter-viz-utils.spec.js +17 -0
  58. package/cjs/src/embed/spotter-viz-utils.spec.js.map +1 -1
  59. package/cjs/src/embed/ts-embed.d.ts +16 -8
  60. package/cjs/src/embed/ts-embed.d.ts.map +1 -1
  61. package/cjs/src/embed/ts-embed.js +96 -37
  62. package/cjs/src/embed/ts-embed.js.map +1 -1
  63. package/cjs/src/embed/ts-embed.spec.js +683 -3
  64. package/cjs/src/embed/ts-embed.spec.js.map +1 -1
  65. package/cjs/src/errors.d.ts +1 -0
  66. package/cjs/src/errors.d.ts.map +1 -1
  67. package/cjs/src/errors.js +1 -0
  68. package/cjs/src/errors.js.map +1 -1
  69. package/cjs/src/index.d.ts +3 -3
  70. package/cjs/src/index.d.ts.map +1 -1
  71. package/cjs/src/index.js +4 -2
  72. package/cjs/src/index.js.map +1 -1
  73. package/cjs/src/mixpanel-service.d.ts +4 -0
  74. package/cjs/src/mixpanel-service.d.ts.map +1 -1
  75. package/cjs/src/mixpanel-service.js +4 -0
  76. package/cjs/src/mixpanel-service.js.map +1 -1
  77. package/cjs/src/react/all-types-export.d.ts +1 -1
  78. package/cjs/src/react/all-types-export.d.ts.map +1 -1
  79. package/cjs/src/react/all-types-export.js +2 -1
  80. package/cjs/src/react/all-types-export.js.map +1 -1
  81. package/cjs/src/react/all-types-export.parity.spec.d.ts +2 -0
  82. package/cjs/src/react/all-types-export.parity.spec.d.ts.map +1 -0
  83. package/cjs/src/react/all-types-export.parity.spec.js +194 -0
  84. package/cjs/src/react/all-types-export.parity.spec.js.map +1 -0
  85. package/cjs/src/react/index.d.ts +66 -32
  86. package/cjs/src/react/index.d.ts.map +1 -1
  87. package/cjs/src/react/index.js +5 -3
  88. package/cjs/src/react/index.js.map +1 -1
  89. package/cjs/src/react/index.spec.js +101 -0
  90. package/cjs/src/react/index.spec.js.map +1 -1
  91. package/cjs/src/react/util.spec.js +251 -0
  92. package/cjs/src/react/util.spec.js.map +1 -1
  93. package/cjs/src/types.d.ts +902 -28
  94. package/cjs/src/types.d.ts.map +1 -1
  95. package/cjs/src/types.js +701 -14
  96. package/cjs/src/types.js.map +1 -1
  97. package/cjs/src/utils/processData.spec.js +93 -0
  98. package/cjs/src/utils/processData.spec.js.map +1 -1
  99. package/cjs/src/utils/processTrigger.spec.js +61 -0
  100. package/cjs/src/utils/processTrigger.spec.js.map +1 -1
  101. package/cjs/src/utils.spec.js +4 -0
  102. package/cjs/src/utils.spec.js.map +1 -1
  103. package/dist/{index-B5xoN6Cp.js → index-Bivg-mDx.js} +1 -1
  104. package/dist/src/config.d.ts +1 -0
  105. package/dist/src/config.d.ts.map +1 -1
  106. package/dist/src/css-variables.d.ts +122 -0
  107. package/dist/src/css-variables.d.ts.map +1 -1
  108. package/dist/src/embed/app.d.ts +176 -24
  109. package/dist/src/embed/app.d.ts.map +1 -1
  110. package/dist/src/embed/base.d.ts +1 -1
  111. package/dist/src/embed/conversation.d.ts +401 -2
  112. package/dist/src/embed/conversation.d.ts.map +1 -1
  113. package/dist/src/embed/hostEventClient/contracts.d.ts +51 -14
  114. package/dist/src/embed/hostEventClient/contracts.d.ts.map +1 -1
  115. package/dist/src/embed/hostEventClient/host-event-client.d.ts +2 -1
  116. package/dist/src/embed/hostEventClient/host-event-client.d.ts.map +1 -1
  117. package/dist/src/embed/hostEventClient/utils.d.ts +2 -0
  118. package/dist/src/embed/hostEventClient/utils.d.ts.map +1 -1
  119. package/dist/src/embed/liveboard.d.ts +81 -13
  120. package/dist/src/embed/liveboard.d.ts.map +1 -1
  121. package/dist/src/embed/spotter-utils.d.ts +15 -1
  122. package/dist/src/embed/spotter-utils.d.ts.map +1 -1
  123. package/dist/src/embed/spotter-viz-utils.d.ts +37 -4
  124. package/dist/src/embed/spotter-viz-utils.d.ts.map +1 -1
  125. package/dist/src/embed/ts-embed.d.ts +16 -8
  126. package/dist/src/embed/ts-embed.d.ts.map +1 -1
  127. package/dist/src/errors.d.ts +1 -0
  128. package/dist/src/errors.d.ts.map +1 -1
  129. package/dist/src/index.d.ts +3 -3
  130. package/dist/src/index.d.ts.map +1 -1
  131. package/dist/src/mixpanel-service.d.ts +4 -0
  132. package/dist/src/mixpanel-service.d.ts.map +1 -1
  133. package/dist/src/react/all-types-export.d.ts +1 -1
  134. package/dist/src/react/all-types-export.d.ts.map +1 -1
  135. package/dist/src/react/all-types-export.parity.spec.d.ts +2 -0
  136. package/dist/src/react/all-types-export.parity.spec.d.ts.map +1 -0
  137. package/dist/src/react/index.d.ts +66 -32
  138. package/dist/src/react/index.d.ts.map +1 -1
  139. package/dist/src/types.d.ts +902 -28
  140. package/dist/src/types.d.ts.map +1 -1
  141. package/dist/tsembed-react.es.js +1269 -206
  142. package/dist/tsembed-react.js +1268 -205
  143. package/dist/tsembed.es.js +1364 -304
  144. package/dist/tsembed.js +1362 -302
  145. package/dist/visual-embed-sdk-react-full.d.ts +1867 -157
  146. package/dist/visual-embed-sdk-react.d.ts +1872 -161
  147. package/dist/visual-embed-sdk.d.ts +1815 -127
  148. package/lib/package.json +1 -1
  149. package/lib/src/config.d.ts +1 -0
  150. package/lib/src/config.d.ts.map +1 -1
  151. package/lib/src/config.js +1 -0
  152. package/lib/src/config.js.map +1 -1
  153. package/lib/src/css-variables.d.ts +122 -0
  154. package/lib/src/css-variables.d.ts.map +1 -1
  155. package/lib/src/embed/app.d.ts +176 -24
  156. package/lib/src/embed/app.d.ts.map +1 -1
  157. package/lib/src/embed/app.js +87 -39
  158. package/lib/src/embed/app.js.map +1 -1
  159. package/lib/src/embed/app.spec.js +673 -151
  160. package/lib/src/embed/app.spec.js.map +1 -1
  161. package/lib/src/embed/base.d.ts +1 -1
  162. package/lib/src/embed/base.js +1 -1
  163. package/lib/src/embed/conversation.d.ts +401 -2
  164. package/lib/src/embed/conversation.d.ts.map +1 -1
  165. package/lib/src/embed/conversation.js +33 -17
  166. package/lib/src/embed/conversation.js.map +1 -1
  167. package/lib/src/embed/conversation.spec.js +347 -18
  168. package/lib/src/embed/conversation.spec.js.map +1 -1
  169. package/lib/src/embed/events.spec.js +638 -0
  170. package/lib/src/embed/events.spec.js.map +1 -1
  171. package/lib/src/embed/host-events.spec.js +188 -1
  172. package/lib/src/embed/host-events.spec.js.map +1 -1
  173. package/lib/src/embed/hostEventClient/contracts.d.ts +51 -14
  174. package/lib/src/embed/hostEventClient/contracts.d.ts.map +1 -1
  175. package/lib/src/embed/hostEventClient/contracts.js +10 -0
  176. package/lib/src/embed/hostEventClient/contracts.js.map +1 -1
  177. package/lib/src/embed/hostEventClient/host-event-client.d.ts +2 -1
  178. package/lib/src/embed/hostEventClient/host-event-client.d.ts.map +1 -1
  179. package/lib/src/embed/hostEventClient/host-event-client.js +10 -1
  180. package/lib/src/embed/hostEventClient/host-event-client.js.map +1 -1
  181. package/lib/src/embed/hostEventClient/host-event-client.spec.js +236 -0
  182. package/lib/src/embed/hostEventClient/host-event-client.spec.js.map +1 -1
  183. package/lib/src/embed/hostEventClient/utils.d.ts +2 -0
  184. package/lib/src/embed/hostEventClient/utils.d.ts.map +1 -1
  185. package/lib/src/embed/hostEventClient/utils.js +28 -1
  186. package/lib/src/embed/hostEventClient/utils.js.map +1 -1
  187. package/lib/src/embed/hostEventClient/utils.spec.js +179 -1
  188. package/lib/src/embed/hostEventClient/utils.spec.js.map +1 -1
  189. package/lib/src/embed/liveboard.d.ts +81 -13
  190. package/lib/src/embed/liveboard.d.ts.map +1 -1
  191. package/lib/src/embed/liveboard.js +50 -9
  192. package/lib/src/embed/liveboard.js.map +1 -1
  193. package/lib/src/embed/liveboard.spec.js +432 -4
  194. package/lib/src/embed/liveboard.spec.js.map +1 -1
  195. package/lib/src/embed/spotter-utils.d.ts +15 -1
  196. package/lib/src/embed/spotter-utils.d.ts.map +1 -1
  197. package/lib/src/embed/spotter-utils.js +25 -0
  198. package/lib/src/embed/spotter-utils.js.map +1 -1
  199. package/lib/src/embed/spotter-utils.spec.js +130 -1
  200. package/lib/src/embed/spotter-utils.spec.js.map +1 -1
  201. package/lib/src/embed/spotter-viz-utils.d.ts +37 -4
  202. package/lib/src/embed/spotter-viz-utils.d.ts.map +1 -1
  203. package/lib/src/embed/spotter-viz-utils.js.map +1 -1
  204. package/lib/src/embed/spotter-viz-utils.spec.js +17 -0
  205. package/lib/src/embed/spotter-viz-utils.spec.js.map +1 -1
  206. package/lib/src/embed/ts-embed.d.ts +16 -8
  207. package/lib/src/embed/ts-embed.d.ts.map +1 -1
  208. package/lib/src/embed/ts-embed.js +96 -37
  209. package/lib/src/embed/ts-embed.js.map +1 -1
  210. package/lib/src/embed/ts-embed.spec.js +683 -3
  211. package/lib/src/embed/ts-embed.spec.js.map +1 -1
  212. package/lib/src/errors.d.ts +1 -0
  213. package/lib/src/errors.d.ts.map +1 -1
  214. package/lib/src/errors.js +1 -0
  215. package/lib/src/errors.js.map +1 -1
  216. package/lib/src/index.d.ts +3 -3
  217. package/lib/src/index.d.ts.map +1 -1
  218. package/lib/src/index.js +3 -3
  219. package/lib/src/index.js.map +1 -1
  220. package/lib/src/mixpanel-service.d.ts +4 -0
  221. package/lib/src/mixpanel-service.d.ts.map +1 -1
  222. package/lib/src/mixpanel-service.js +4 -0
  223. package/lib/src/mixpanel-service.js.map +1 -1
  224. package/lib/src/react/all-types-export.d.ts +1 -1
  225. package/lib/src/react/all-types-export.d.ts.map +1 -1
  226. package/lib/src/react/all-types-export.js +1 -1
  227. package/lib/src/react/all-types-export.js.map +1 -1
  228. package/lib/src/react/all-types-export.parity.spec.d.ts +2 -0
  229. package/lib/src/react/all-types-export.parity.spec.d.ts.map +1 -0
  230. package/lib/src/react/all-types-export.parity.spec.js +191 -0
  231. package/lib/src/react/all-types-export.parity.spec.js.map +1 -0
  232. package/lib/src/react/index.d.ts +66 -32
  233. package/lib/src/react/index.d.ts.map +1 -1
  234. package/lib/src/react/index.js +5 -3
  235. package/lib/src/react/index.js.map +1 -1
  236. package/lib/src/react/index.spec.js +102 -1
  237. package/lib/src/react/index.spec.js.map +1 -1
  238. package/lib/src/react/util.spec.js +251 -0
  239. package/lib/src/react/util.spec.js.map +1 -1
  240. package/lib/src/types.d.ts +902 -28
  241. package/lib/src/types.d.ts.map +1 -1
  242. package/lib/src/types.js +701 -14
  243. package/lib/src/types.js.map +1 -1
  244. package/lib/src/utils/processData.spec.js +93 -0
  245. package/lib/src/utils/processData.spec.js.map +1 -1
  246. package/lib/src/utils/processTrigger.spec.js +61 -0
  247. package/lib/src/utils/processTrigger.spec.js.map +1 -1
  248. package/lib/src/utils.spec.js +4 -0
  249. package/lib/src/utils.spec.js.map +1 -1
  250. package/lib/src/visual-embed-sdk.d.ts +1815 -127
  251. package/package.json +1 -1
  252. package/src/config.ts +1 -0
  253. package/src/css-variables.ts +150 -0
  254. package/src/embed/app.spec.ts +877 -196
  255. package/src/embed/app.ts +276 -75
  256. package/src/embed/base.ts +1 -1
  257. package/src/embed/conversation.spec.ts +411 -21
  258. package/src/embed/conversation.ts +441 -18
  259. package/src/embed/events.spec.ts +761 -1
  260. package/src/embed/host-events.spec.ts +242 -0
  261. package/src/embed/hostEventClient/contracts.ts +57 -14
  262. package/src/embed/hostEventClient/host-event-client.spec.ts +372 -0
  263. package/src/embed/hostEventClient/host-event-client.ts +18 -2
  264. package/src/embed/hostEventClient/utils.spec.ts +204 -0
  265. package/src/embed/hostEventClient/utils.ts +37 -10
  266. package/src/embed/liveboard.spec.ts +565 -4
  267. package/src/embed/liveboard.ts +155 -28
  268. package/src/embed/spotter-utils.spec.ts +140 -1
  269. package/src/embed/spotter-utils.ts +36 -1
  270. package/src/embed/spotter-viz-utils.spec.ts +17 -0
  271. package/src/embed/spotter-viz-utils.ts +37 -4
  272. package/src/embed/ts-embed.spec.ts +885 -3
  273. package/src/embed/ts-embed.ts +111 -39
  274. package/src/errors.ts +1 -0
  275. package/src/index.ts +45 -2
  276. package/src/mixpanel-service.ts +4 -0
  277. package/src/react/all-types-export.parity.spec.ts +208 -0
  278. package/src/react/all-types-export.ts +22 -0
  279. package/src/react/index.spec.tsx +158 -0
  280. package/src/react/index.tsx +70 -33
  281. package/src/react/util.spec.tsx +255 -0
  282. package/src/types.ts +904 -24
  283. package/src/utils/processData.spec.ts +97 -0
  284. package/src/utils/processTrigger.spec.ts +91 -0
  285. package/src/utils.spec.ts +5 -0
@@ -1,4 +1,4 @@
1
- /* @thoughtspot/visual-embed-sdk version 1.50.0 */
1
+ /* @thoughtspot/visual-embed-sdk version 1.51.0-test */
2
2
  'use client';
3
3
  (function (global, factory) {
4
4
  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react')) :
@@ -396,7 +396,9 @@
396
396
  })(AuthType || (AuthType = {}));
397
397
  /**
398
398
  *
399
- * **Note**: This attribute is not supported in the classic (V1) homepage experience.
399
+ * **Note**: The classic (V1) and Modular (V2) home page experiences are
400
+ * deprecated. This attribute applies to V3 (ModularWithStylingChanges) and
401
+ * V4 (Focused) home page experiences.
400
402
  *
401
403
  */
402
404
  exports.HomeLeftNavItem = void 0;
@@ -464,6 +466,13 @@
464
466
  * @version SDK: 1.41.0 | ThoughtSpot: 10.12.0.cl
465
467
  */
466
468
  HomeLeftNavItem["Favorites"] = "favorites";
469
+ /**
470
+ * The *Collections* menu option in
471
+ * the *Insights* left navigation panel.
472
+ * Shown when collections are enabled on the cluster.
473
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
474
+ */
475
+ HomeLeftNavItem["Collections"] = "collections";
467
476
  })(exports.HomeLeftNavItem || (exports.HomeLeftNavItem = {}));
468
477
  /**
469
478
  * A map of the supported runtime filter operations
@@ -536,7 +545,9 @@
536
545
  * via `hiddenHomepageModules` and reordered via
537
546
  * `reorderedHomepageModules`.
538
547
  *
539
- * **Note**: This option is not supported in the classic (v1) experience.
548
+ * **Note**: The classic (V1) and Modular (V2) home page experiences are
549
+ * deprecated. These modules apply to V3 (ModularWithStylingChanges) and
550
+ * V4 (Focused) home page experiences.
540
551
  * @version SDK: 1.28.0 | ThoughtSpot: 9.12.5.cl, 10.1.0.sw
541
552
  */
542
553
  exports.HomepageModule = void 0;
@@ -714,7 +725,7 @@
714
725
  * @returns nonFilteredColumns - The columns that were not filtered
715
726
  * @example
716
727
  * ```js
717
- * searchEmbed.on(EmbedEvent.DrillDown, {
728
+ * searchEmbed.on(EmbedEvent.Drilldown, {
718
729
  * points: {
719
730
  * clickedPoint,
720
731
  * selectedPoints: selectedPoint
@@ -775,7 +786,7 @@
775
786
  * @version SDK: 1.1.0 | ThoughtSpot: ts7.may.cl, 8.4.1.sw
776
787
  * @example
777
788
  * ```js
778
- * appEmbed.on(EmbedEvent.customAction, payload => {
789
+ * appEmbed.on(EmbedEvent.CustomAction, payload => {
779
790
  * const data = payload.data;
780
791
  * if (data.id === 'insert Custom Action ID here') {
781
792
  * console.log('Custom Action event:', data.embedAnswerData);
@@ -1041,8 +1052,8 @@
1041
1052
  *
1042
1053
  * **Note**: This event is deprecated in v1.21.0.
1043
1054
  * To fire an event when a download action is initiated on a chart or table,
1044
- * use `EmbedEvent.DownloadAsPng`, `EmbedEvent.DownloadAsPDF`,
1045
- * `EmbedEvent.DownloadAsCSV`, or `EmbedEvent.DownloadAsXLSX`
1055
+ * use `EmbedEvent.DownloadAsPng`, `EmbedEvent.DownloadAsPdf`,
1056
+ * `EmbedEvent.DownloadAsCsv`, or `EmbedEvent.DownloadAsXlsx`
1046
1057
  * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw
1047
1058
  * @example
1048
1059
  * ```js
@@ -1092,10 +1103,10 @@
1092
1103
  * @example
1093
1104
  * ```js
1094
1105
  * //emit when action starts
1095
- * searchEmbed.on(EmbedEvent.DownloadAsCSV, payload => {
1106
+ * searchEmbed.on(EmbedEvent.DownloadAsCsv, payload => {
1096
1107
  * console.log('download CSV', payload)}, {start: true })
1097
1108
  * //emit when action ends
1098
- * searchEmbed.on(EmbedEvent.DownloadAsCSV, payload => {
1109
+ * searchEmbed.on(EmbedEvent.DownloadAsCsv, payload => {
1099
1110
  * console.log('download CSV', payload)})
1100
1111
  * ```
1101
1112
  */
@@ -1494,11 +1505,19 @@
1494
1505
  * Emitted when a user changes any filter on a Liveboard.
1495
1506
  * Returns filter type and name, column name and ID, and runtime
1496
1507
  * filter details.
1508
+ * The payload includes an optional `applicability` attribute indicating the
1509
+ * scope of the changed filter. It contains a `level` (`LIVEBOARD`,
1510
+ * `TAB`, or `GROUP`) and, when `level` is `TAB` or `GROUP`, a
1511
+ * `targetId` with the GUID of the target. At `LIVEBOARD` level there
1512
+ * is no `targetId`, since the filter applies to the whole Liveboard.
1513
+ * The `applicability` attribute is available from SDK: 1.53.0 |
1514
+ * ThoughtSpot: 26.10.0.cl.
1497
1515
  * @example
1498
1516
  *
1499
1517
  * ```js
1500
1518
  * LiveboardEmbed.on(EmbedEvent.FilterChanged, (payload) => {
1501
1519
  * console.log('payload', payload);
1520
+ * // payload.data optionally includes applicability: { level, targetId }
1502
1521
  * })
1503
1522
  * ```
1504
1523
  * @version SDK: 1.23.0 | ThoughtSpot: 9.4.0.cl, 9.5.0.sw
@@ -1690,9 +1709,17 @@
1690
1709
  /**
1691
1710
  * Emitted when parameter changes in an Answer
1692
1711
  * or Liveboard.
1712
+ * The payload includes an optional `applicability` attribute indicating the
1713
+ * scope of the changed parameter. It contains a `level` (`LIVEBOARD`,
1714
+ * `TAB`, or `GROUP`) and, when `level` is `TAB` or `GROUP`, a
1715
+ * `targetId` with the GUID of the target. At `LIVEBOARD` level there
1716
+ * is no `targetId`, since the parameter applies to the whole Liveboard.
1717
+ * The `applicability` attribute is available from SDK: 1.53.0 |
1718
+ * ThoughtSpot: 26.10.0.cl.
1693
1719
  * ```js
1694
1720
  * liveboardEmbed.on(EmbedEvent.ParameterChanged, (payload) => {
1695
1721
  * console.log('payload', payload);
1722
+ * // payload.data optionally includes applicability: { level, targetId }
1696
1723
  * })
1697
1724
  * ```
1698
1725
  * @version SDK: 1.29.0 | ThoughtSpot: 10.3.0.cl
@@ -1994,6 +2021,158 @@
1994
2021
  * @version SDK: 1.46.0 | ThoughtSpot: 26.3.0.cl
1995
2022
  */
1996
2023
  EmbedEvent["SpotterConversationDeleted"] = "spotterConversationDeleted";
2024
+ /**
2025
+ * Emitted when the header Share button is clicked. Fires `Start` then `End`
2026
+ * to bracket the interaction. App→host counterpart of the
2027
+ * `ShareSpotterConversation` host event (user-driven vs programmatic open).
2028
+ * @example
2029
+ * ```js
2030
+ * spotterEmbed.on(EmbedEvent.SpotterShareConversationButtonHeaderClicked, (payload) => {
2031
+ * // payload: { convId: string }
2032
+ * })
2033
+ * ```
2034
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
2035
+ */
2036
+ EmbedEvent["SpotterShareConversationButtonHeaderClicked"] = "spotterShareConversationButtonHeaderClicked";
2037
+ /**
2038
+ * Emitted when the sidebar Share item is clicked. Fires `Start` then `End`
2039
+ * to bracket the interaction.
2040
+ * @example
2041
+ * ```js
2042
+ * spotterEmbed.on(EmbedEvent.SpotterShareConversationMenuItemSidebarClicked, (payload) => {
2043
+ * // payload: { convId: string }
2044
+ * })
2045
+ * ```
2046
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
2047
+ */
2048
+ EmbedEvent["SpotterShareConversationMenuItemSidebarClicked"] = "spotterShareConversationMenuItemSidebarClicked";
2049
+ /**
2050
+ * Emitted when a Spotter conversation is shared (recipients added, or a new
2051
+ * share created). The host builds its own link from shareId/convId + its
2052
+ * configured CONVERSATION_URL — no link string is sent. Distinct from
2053
+ * `SpotterShareModalConfirmButtonClicked`, which fires at click time before
2054
+ * the save resolves.
2055
+ * @example
2056
+ * ```js
2057
+ * spotterEmbed.on(EmbedEvent.SpotterConversationShared, (payload) => {
2058
+ * // payload: { convId: string, shareId: string,
2059
+ * // recipientsAdded: string[], recipientsRemoved: string[] }
2060
+ * })
2061
+ * ```
2062
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
2063
+ */
2064
+ EmbedEvent["SpotterConversationShared"] = "spotterConversationShared";
2065
+ /**
2066
+ * Emitted when access to a shared Spotter conversation is revoked
2067
+ * (recipients removed). `fullyRevoked` is true when the last sharee is removed
2068
+ * and the share is deleted entirely.
2069
+ * @example
2070
+ * ```js
2071
+ * spotterEmbed.on(EmbedEvent.SpotterConversationShareRevoked, (payload) => {
2072
+ * // payload: { convId: string, shareId: string,
2073
+ * // recipientsRemoved: string[], fullyRevoked: boolean }
2074
+ * })
2075
+ * ```
2076
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
2077
+ */
2078
+ EmbedEvent["SpotterConversationShareRevoked"] = "spotterConversationShareRevoked";
2079
+ /**
2080
+ * Emitted when a recipient opens a shared Spotter conversation (read-only
2081
+ * view). No shareId available viewer-side.
2082
+ * @example
2083
+ * ```js
2084
+ * spotterEmbed.on(EmbedEvent.SpotterSharedConversationViewed, (payload) => {
2085
+ * // payload: { convId: string, sourceConvId: string }
2086
+ * // convId = resolved snapshot conv id; sourceConvId = the shared URL id
2087
+ * })
2088
+ * ```
2089
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
2090
+ */
2091
+ EmbedEvent["SpotterSharedConversationViewed"] = "spotterSharedConversationViewed";
2092
+ /**
2093
+ * Emitted when the user toggles the share-modal "include new messages since
2094
+ * last shared version" checkbox.
2095
+ * @example
2096
+ * ```js
2097
+ * spotterEmbed.on(EmbedEvent.SpotterShareIncludeNewMessagesCheckboxToggled, (payload) => {
2098
+ * // payload: { convId: string, includeNewMessages: boolean }
2099
+ * })
2100
+ * ```
2101
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
2102
+ */
2103
+ EmbedEvent["SpotterShareIncludeNewMessagesCheckboxToggled"] = "spotterShareIncludeNewMessagesCheckboxToggled";
2104
+ /**
2105
+ * Emitted when the user dismisses the stale-snapshot info banner via its
2106
+ * cross (distinct from the include-new-messages checkbox toggle).
2107
+ * @example
2108
+ * ```js
2109
+ * spotterEmbed.on(EmbedEvent.SpotterShareStaleInfoBannerDismissed, (payload) => {
2110
+ * // payload: { convId: string }
2111
+ * })
2112
+ * ```
2113
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
2114
+ */
2115
+ EmbedEvent["SpotterShareStaleInfoBannerDismissed"] = "spotterShareStaleInfoBannerDismissed";
2116
+ /**
2117
+ * Emitted when the modal Share (confirm) button is clicked — fires at click
2118
+ * time, before the save resolves. Distinct from the `SpotterConversationShared`
2119
+ * / `SpotterConversationShareRevoked` result events.
2120
+ * @example
2121
+ * ```js
2122
+ * spotterEmbed.on(EmbedEvent.SpotterShareModalConfirmButtonClicked, (payload) => {
2123
+ * // payload: { convId: string }
2124
+ * })
2125
+ * ```
2126
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
2127
+ */
2128
+ EmbedEvent["SpotterShareModalConfirmButtonClicked"] = "spotterShareModalConfirmButtonClicked";
2129
+ /**
2130
+ * Emitted when the share modal is dismissed via the Cancel button.
2131
+ * @example
2132
+ * ```js
2133
+ * spotterEmbed.on(EmbedEvent.SpotterShareModalCancelButtonClicked, (payload) => {
2134
+ * // payload: { convId: string }
2135
+ * })
2136
+ * ```
2137
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
2138
+ */
2139
+ EmbedEvent["SpotterShareModalCancelButtonClicked"] = "spotterShareModalCancelButtonClicked";
2140
+ /**
2141
+ * Emitted when a recipient leaves the read-only shared view via the Exit
2142
+ * button.
2143
+ * @example
2144
+ * ```js
2145
+ * spotterEmbed.on(EmbedEvent.SpotterSharedConversationExitButtonClicked, (payload) => {
2146
+ * // payload: { convId: string }
2147
+ * })
2148
+ * ```
2149
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
2150
+ */
2151
+ EmbedEvent["SpotterSharedConversationExitButtonClicked"] = "spotterSharedConversationExitButtonClicked";
2152
+ /**
2153
+ * Emitted when a Spotter conversation is pinned.
2154
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
2155
+ * @example
2156
+ * ```js
2157
+ * spotterEmbed.on(EmbedEvent.SpotterConversationPinned, (payload) => {
2158
+ * console.log('Conversation pinned', payload);
2159
+ * // payload: { conversationId: string, pinnedAt: string (ISO 8601) }
2160
+ * })
2161
+ * ```
2162
+ */
2163
+ EmbedEvent["SpotterConversationPinned"] = "spotterConversationPinned";
2164
+ /**
2165
+ * Emitted when a Spotter conversation is unpinned.
2166
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
2167
+ * @example
2168
+ * ```js
2169
+ * spotterEmbed.on(EmbedEvent.SpotterConversationUnpinned, (payload) => {
2170
+ * console.log('Conversation unpinned', payload);
2171
+ * // payload: { conversationId: string, unpinnedAt: string (ISO 8601) }
2172
+ * })
2173
+ * ```
2174
+ */
2175
+ EmbedEvent["SpotterConversationUnpinned"] = "spotterConversationUnpinned";
1997
2176
  /**
1998
2177
  * Emitted when a Spotter conversation is selected/clicked.
1999
2178
  * @example
@@ -2006,6 +2185,30 @@
2006
2185
  * @version SDK: 1.46.0 | ThoughtSpot: 26.3.0.cl
2007
2186
  */
2008
2187
  EmbedEvent["SpotterConversationSelected"] = "spotterConversationSelected";
2188
+ /**
2189
+ * Emitted when the Spotter agent finishes streaming/rendering a response.
2190
+ * Includes the conversation and message identifiers so the host app can
2191
+ * fetch the full conversation history via the REST API if needed.
2192
+ *
2193
+ * The payload data has the shape `{ convId: string, messageId: string }`.
2194
+ *
2195
+ * Works with SpotterEmbed as well as AppEmbed (when Spotter is reached
2196
+ * inside the full application).
2197
+ * @example
2198
+ * ```js
2199
+ * spotterEmbed.on(EmbedEvent.SpotterResponseComplete, (payload) => {
2200
+ * console.log('Spotter response complete', payload);
2201
+ * })
2202
+ * ```
2203
+ * @example
2204
+ * ```js
2205
+ * appEmbed.on(EmbedEvent.SpotterResponseComplete, (payload) => {
2206
+ * console.log('Spotter response complete', payload);
2207
+ * })
2208
+ * ```
2209
+ * @version SDK: 1.51.0 | ThoughtSpot Cloud: 26.9.0.cl
2210
+ */
2211
+ EmbedEvent["SpotterResponseComplete"] = "spotterResponseComplete";
2009
2212
  /**
2010
2213
  * @hidden
2011
2214
  * Emitted when the auth token is about to get expired and needs to be refreshed.
@@ -2360,6 +2563,7 @@
2360
2563
  * const url = await appEmbed.trigger(HostEvent.GetIframeUrl, {}, ContextType.Answer);
2361
2564
  * console.log("iFrameURL", url);
2362
2565
  * ```
2566
+ * @returns iframeUrl - The URL currently loaded in the embedded iframe.
2363
2567
  * @version SDK: 1.35.0 | ThoughtSpot: 10.4.0.cl
2364
2568
  */
2365
2569
  HostEvent["GetIframeUrl"] = "GetIframeUrl";
@@ -2486,6 +2690,17 @@
2486
2690
  * name: string,
2487
2691
  * type: ATTRIBUTE/MEASURE,
2488
2692
  * dataType: INT64/CHAR/DATE }
2693
+ *
2694
+ * `applicability` - Optional. Scopes the filter to a specific target,
2695
+ * for example, a single Liveboard tab, so the panel for the correct
2696
+ * scoped filter is opened. Available from SDK: 1.53.0 |
2697
+ * ThoughtSpot: 26.10.0.cl. Includes the following attributes:
2698
+ *
2699
+ * - `level`: The scope of the filter: `LIVEBOARD`, `TAB`, or `GROUP`.
2700
+ * - `targetId`: The GUID of the target, for example, the tab GUID.
2701
+ * Required when `level` is `TAB` or `GROUP`. Do not pass it when
2702
+ * `level` is `LIVEBOARD`, since the filter applies to the whole
2703
+ * Liveboard. Omitting `applicability` targets the `LIVEBOARD` level.
2489
2704
  * @example
2490
2705
  * ```js
2491
2706
  * searchEmbed.trigger(HostEvent.OpenFilter,
@@ -2498,6 +2713,14 @@
2498
2713
  * ```
2499
2714
  * @example
2500
2715
  * ```js
2716
+ * // Open a filter scoped to a specific Liveboard tab
2717
+ * liveboardEmbed.trigger(HostEvent.OpenFilter, {
2718
+ * column: { columnId: '<column-GUID>' },
2719
+ * applicability: { level: 'TAB', targetId: '<tab-GUID>' }
2720
+ * });
2721
+ * ```
2722
+ * @example
2723
+ * ```js
2501
2724
  * // Open filter from search context
2502
2725
  * import { ContextType } from '@thoughtspot/visual-embed-sdk';
2503
2726
  * searchEmbed.trigger(HostEvent.OpenFilter, {
@@ -2507,6 +2730,73 @@
2507
2730
  * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl
2508
2731
  */
2509
2732
  HostEvent["OpenFilter"] = "openFilter";
2733
+ /**
2734
+ * Open the add-filter modal of a Liveboard, the same dialog that the
2735
+ * *Add filter* button in the Liveboard edit header opens, so the host
2736
+ * app can start the add-filter flow from its own UI.
2737
+ *
2738
+ * The Liveboard must be in edit mode; the event is ignored otherwise.
2739
+ * Hiding the *Add filter* button with `hiddenActions:
2740
+ * [Action.AddFilter]` does not block this event, but disabling it with
2741
+ * `disabledActions` does.
2742
+ *
2743
+ * Unlike {@link HostEvent.OpenFilter}, which opens the panel of an
2744
+ * existing filter, this event starts the creation of a new filter.
2745
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
2746
+ * @example
2747
+ * ```js
2748
+ * liveboardEmbed.trigger(HostEvent.OpenAddFilterModal);
2749
+ * ```
2750
+ */
2751
+ HostEvent["OpenAddFilterModal"] = "openAddFilterModal";
2752
+ /**
2753
+ * Open the add-parameter panel of a Liveboard, the same panel that the
2754
+ * *Add parameter* button in the Liveboard edit header opens.
2755
+ * Mirrors {@link HostEvent.OpenAddFilterModal} for parameters.
2756
+ *
2757
+ * The Liveboard must be in edit mode; the event is ignored otherwise.
2758
+ * Hiding the *Add parameter* button with `hiddenActions:
2759
+ * [Action.AddParameter]` does not block this event, but disabling it
2760
+ * with `disabledActions` does.
2761
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
2762
+ * @example
2763
+ * ```js
2764
+ * liveboardEmbed.trigger(HostEvent.OpenAddParameterModal);
2765
+ * ```
2766
+ */
2767
+ HostEvent["OpenAddParameterModal"] = "openAddParameterModal";
2768
+ /**
2769
+ * Open the parameter panel for a particular parameter on a Liveboard.
2770
+ * Mirrors {@link HostEvent.OpenFilter} for parameters.
2771
+ * @param - Includes the following keys:
2772
+ * - `parameter`: An object identifying the parameter to open, for
2773
+ * example, `{ parameterId: '<parameter-GUID>' }`.
2774
+ * - `applicability`: Optional. Scopes the parameter to a specific target,
2775
+ * for example, a single Liveboard tab, so the panel for the correct
2776
+ * scoped parameter is opened. Includes the following attributes:
2777
+ *
2778
+ * - `level`: The scope of the parameter: `LIVEBOARD`, `TAB`, or `GROUP`.
2779
+ * - `targetId`: The GUID of the target, for example, the tab GUID.
2780
+ * Required when `level` is `TAB` or `GROUP`. Do not pass it when
2781
+ * `level` is `LIVEBOARD`, since the parameter applies to the whole
2782
+ * Liveboard. Omitting `applicability` targets the `LIVEBOARD` level.
2783
+ * @example
2784
+ * ```js
2785
+ * liveboardEmbed.trigger(HostEvent.OpenParameter, {
2786
+ * parameter: { parameterId: '<parameter-GUID>' }
2787
+ * });
2788
+ * ```
2789
+ * @example
2790
+ * ```js
2791
+ * // Open a parameter scoped to a specific group
2792
+ * liveboardEmbed.trigger(HostEvent.OpenParameter, {
2793
+ * parameter: { parameterId: '<parameter-GUID>' },
2794
+ * applicability: { level: 'GROUP', targetId: '<group-GUID>' }
2795
+ * });
2796
+ * ```
2797
+ * @version SDK: 1.53.0 | ThoughtSpot: 26.10.0.cl
2798
+ */
2799
+ HostEvent["OpenParameter"] = "openParameter";
2510
2800
  /**
2511
2801
  * Add columns to the current search query.
2512
2802
  * @param - { columnIds: string[] }
@@ -2556,6 +2846,10 @@
2556
2846
  * liveboardEmbed.trigger(HostEvent.getExportRequestForCurrentPinboard).then(
2557
2847
  * data=>console.log(data))
2558
2848
  * ```
2849
+ * @returns data - Object with a `v2Content` string: the export request
2850
+ * payload for the current Liveboard.
2851
+ * @returns type - The passthrough event name,
2852
+ * `getExportRequestForCurrentPinboard`.
2559
2853
  * @version SDK: 1.13.0 | ThoughtSpot: 8.5.0.cl, 8.8.1.sw
2560
2854
  */
2561
2855
  HostEvent["getExportRequestForCurrentPinboard"] = "getExportRequestForCurrentPinboard";
@@ -2658,6 +2952,9 @@
2658
2952
  * }, ContextType.Spotter);
2659
2953
  * ```
2660
2954
  *
2955
+ * @returns liveboardId - GUID of the Liveboard the Answer was pinned to.
2956
+ * @returns tabId - GUID of the tab within that Liveboard.
2957
+ * @returns vizId - GUID of the newly created visualization.
2661
2958
  * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw
2662
2959
  */
2663
2960
  HostEvent["Pin"] = "pin";
@@ -2696,13 +2993,13 @@
2696
2993
  * Trigger the **Manage schedule** action on an embedded Liveboard
2697
2994
  * @example
2698
2995
  * ```js
2699
- * liveboardEmbed.trigger(HostEvent.ScheduleList)
2996
+ * liveboardEmbed.trigger(HostEvent.SchedulesList)
2700
2997
  * ```
2701
2998
  * @example
2702
2999
  * ```js
2703
3000
  * // Manage schedules from liveboard context
2704
3001
  * import { ContextType } from '@thoughtspot/visual-embed-sdk';
2705
- * liveboardEmbed.trigger(HostEvent.ScheduleList, {}, ContextType.Liveboard);
3002
+ * liveboardEmbed.trigger(HostEvent.SchedulesList, {}, ContextType.Liveboard);
2706
3003
  * ```
2707
3004
  * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw
2708
3005
  */
@@ -3147,6 +3444,7 @@
3147
3444
  * console.log(tml.answer);
3148
3445
  * });
3149
3446
  * ```
3447
+ * @returns The TML representation of the current Answer, as an object.
3150
3448
  * @version SDK: 1.18.0 | ThoughtSpot: 8.10.0.cl, 9.0.1.sw
3151
3449
  * @important
3152
3450
  */
@@ -3571,6 +3869,14 @@
3571
3869
  /**
3572
3870
  * Get details of filters applied on the Liveboard.
3573
3871
  * Returns arrays containing Liveboard filter and runtime filter elements.
3872
+ * Each Liveboard filter includes an optional `applicability` attribute
3873
+ * indicating the scope of the filter. It contains a `level`
3874
+ * (`LIVEBOARD`, `TAB`, or `GROUP`) and, when `level` is `TAB` or
3875
+ * `GROUP`, a `targetId` with the GUID of the target. At `LIVEBOARD`
3876
+ * level there is no `targetId`, since the filter applies to the
3877
+ * whole Liveboard.
3878
+ * The `applicability` attribute is available from SDK: 1.53.0 |
3879
+ * ThoughtSpot: 26.10.0.cl.
3574
3880
  * @example
3575
3881
  * ```js
3576
3882
  * const data = await liveboardEmbed.trigger(HostEvent.GetFilters);
@@ -3583,6 +3889,8 @@
3583
3889
  * const data = await liveboardEmbed.trigger(HostEvent.GetFilters, {}, ContextType.Liveboard);
3584
3890
  * console.log('filters', data);
3585
3891
  * ```
3892
+ * @returns liveboardFilters - Filters applied on the Liveboard.
3893
+ * @returns runtimeFilters - Runtime filters applied on the Liveboard.
3586
3894
  * @version SDK: 1.23.0 | ThoughtSpot: 9.4.0.cl
3587
3895
  */
3588
3896
  HostEvent["GetFilters"] = "getFilters";
@@ -3610,6 +3918,16 @@
3610
3918
  *
3611
3919
  * `type` - To update filters for date time, specify the date format type.
3612
3920
  * For more information and examples, see link:https://developers.thoughtspot.com/docs/embed-liveboard#_date_filters[Date filters].
3921
+ *
3922
+ * `applicability` - Optional. Scopes the filter to a specific target,
3923
+ * for example, a single Liveboard tab. Available from SDK: 1.53.0 |
3924
+ * ThoughtSpot: 26.10.0.cl. Includes the following attributes:
3925
+ *
3926
+ * - `level`: The scope of the filter: `LIVEBOARD`, `TAB`, or `GROUP`.
3927
+ * - `targetId`: The GUID of the target, for example, the tab GUID.
3928
+ * Required when `level` is `TAB` or `GROUP`. Do not pass it when
3929
+ * `level` is `LIVEBOARD`, since the filter applies to the whole
3930
+ * Liveboard.
3613
3931
  * @example
3614
3932
  * ```js
3615
3933
  *
@@ -3686,6 +4004,21 @@
3686
4004
  * }
3687
4005
  * }, ContextType.Liveboard);
3688
4006
  * ```
4007
+ * @example
4008
+ * ```js
4009
+ * // Scope the filter to a specific Liveboard tab
4010
+ * liveboardEmbed.trigger(HostEvent.UpdateFilters, {
4011
+ * filter: {
4012
+ * column: "item type",
4013
+ * oper: "IN",
4014
+ * values: ["bags", "shirts"],
4015
+ * applicability: {
4016
+ * level: "TAB",
4017
+ * targetId: "e0836cad-4fdf-42d4-bd97-567a6b2a6058"
4018
+ * }
4019
+ * }
4020
+ * });
4021
+ * ```
3689
4022
  * @version SDK: 1.23.0 | ThoughtSpot: 9.4.0.cl
3690
4023
  */
3691
4024
  HostEvent["UpdateFilters"] = "updateFilters";
@@ -3707,9 +4040,37 @@
3707
4040
  * console.log('tabs', tabDetails);
3708
4041
  * });
3709
4042
  * ```
4043
+ * @returns orderedTabIds - Tab GUIDs in the order they appear.
4044
+ * @returns numberOfTabs - Total number of tabs on the Liveboard.
4045
+ * @returns Tabs - Tab details, each with at least `id` and `name`.
3710
4046
  * @version SDK: 1.26.0 | ThoughtSpot: 9.7.0.cl
3711
4047
  */
3712
4048
  HostEvent["GetTabs"] = "getTabs";
4049
+ /**
4050
+ * Get group details for the current Liveboard.
4051
+ * Mirrors {@link HostEvent.GetTabs} for filter/parameter groups.
4052
+ * @example
4053
+ * ```js
4054
+ * liveboardEmbed.trigger(HostEvent.GetGroups).then((groupDetails) => {
4055
+ * console.log(
4056
+ * groupDetails // GroupDetails of current Liveboard
4057
+ * );
4058
+ * })
4059
+ * ```
4060
+ * @example
4061
+ * ```js
4062
+ * // Get groups from liveboard context
4063
+ * import { ContextType } from '@thoughtspot/visual-embed-sdk';
4064
+ * liveboardEmbed.trigger(HostEvent.GetGroups, {}, ContextType.Liveboard).then((groupDetails) => {
4065
+ * console.log('groups', groupDetails);
4066
+ * });
4067
+ * ```
4068
+ * @returns orderedGroupIds - Group GUIDs in the order they appear.
4069
+ * @returns numberOfGroups - Total number of groups on the Liveboard.
4070
+ * @returns Groups - Group details, each with at least `id` and `name`.
4071
+ * @version SDK: 1.53.0 | ThoughtSpot: 26.10.0.cl
4072
+ */
4073
+ HostEvent["GetGroups"] = "getGroups";
3713
4074
  /**
3714
4075
  * Set the visible tabs on a Liveboard.
3715
4076
  * @param - an array of ids of tabs to show, the IDs not passed
@@ -3781,6 +4142,9 @@
3781
4142
  * // Alternative direct usage (not recommended)
3782
4143
  * const {session} = await embed.trigger( HostEvent.GetAnswerSession )
3783
4144
  * ```
4145
+ * @returns session - Session identifier for the Answer, for use with the
4146
+ * `AnswerService`.
4147
+ * @returns embedAnswerData - Data backing the Answer, when available.
3784
4148
  * @version SDK: 1.26.0 | ThoughtSpot: 9.10.0.cl, 10.1.0.sw
3785
4149
  */
3786
4150
  HostEvent["GetAnswerSession"] = "getAnswerSession";
@@ -3837,6 +4201,15 @@
3837
4201
  * - `name`: Name of the parameter.
3838
4202
  * - `value`: The value to set for the parameter.
3839
4203
  * - `isVisibleToUser`: Optional. To control the visibility of the parameter chip.
4204
+ * - `applicability`: Optional. Scopes the parameter to a specific target,
4205
+ * for example, a single Liveboard tab. Available from SDK: 1.53.0 |
4206
+ * ThoughtSpot: 26.10.0.cl. Includes the following attributes:
4207
+ *
4208
+ * - `level`: The scope of the parameter: `LIVEBOARD`, `TAB`, or `GROUP`.
4209
+ * - `targetId`: The GUID of the target, for example, the tab GUID.
4210
+ * Required when `level` is `TAB` or `GROUP`. Do not pass it when
4211
+ * `level` is `LIVEBOARD`, since the parameter applies to the whole
4212
+ * Liveboard.
3840
4213
  *
3841
4214
  * @example
3842
4215
  * ```js
@@ -3848,6 +4221,18 @@
3848
4221
  * ```
3849
4222
  * @example
3850
4223
  * ```js
4224
+ * // Scope the parameter to a specific Liveboard tab
4225
+ * liveboardEmbed.trigger(HostEvent.UpdateParameters, [{
4226
+ * name: "Integer Range Param",
4227
+ * value: 10,
4228
+ * applicability: {
4229
+ * level: "TAB",
4230
+ * targetId: "e0836cad-4fdf-42d4-bd97-567a6b2a6058"
4231
+ * }
4232
+ * }])
4233
+ * ```
4234
+ * @example
4235
+ * ```js
3851
4236
  * // Update parameters from liveboard context
3852
4237
  * import { ContextType } from '@thoughtspot/visual-embed-sdk';
3853
4238
  * liveboardEmbed.trigger(HostEvent.UpdateParameters, [{
@@ -3861,6 +4246,14 @@
3861
4246
  HostEvent["UpdateParameters"] = "UpdateParameters";
3862
4247
  /**
3863
4248
  * Triggers GetParameters to fetch the runtime Parameters.
4249
+ * Each parameter includes an optional `applicability` attribute
4250
+ * indicating the scope of the parameter. It contains a `level`
4251
+ * (`LIVEBOARD`, `TAB`, or `GROUP`) and, when `level` is `TAB` or
4252
+ * `GROUP`, a `targetId` with the GUID of the target. At `LIVEBOARD`
4253
+ * level there is no `targetId`, since the parameter applies to the
4254
+ * whole Liveboard.
4255
+ * The `applicability` attribute is available from SDK: 1.53.0 |
4256
+ * ThoughtSpot: 26.10.0.cl.
3864
4257
  * @param - `vizId` refers to the Answer ID in Spotter embed and is required in Spotter embed.
3865
4258
  * ```js
3866
4259
  * liveboardEmbed.trigger(HostEvent.GetParameters).then((parameter) => {
@@ -3885,12 +4278,16 @@
3885
4278
  * console.log('parameters', parameters);
3886
4279
  * });
3887
4280
  * ```
4281
+ * @returns parameters - Parameters currently applied on the Liveboard.
3888
4282
  * @version SDK: 1.29.0 | ThoughtSpot: 10.1.0.cl, 10.1.0.sw
3889
4283
  */
3890
4284
  HostEvent["GetParameters"] = "GetParameters";
3891
4285
  /**
3892
4286
  * Triggers an event to update a personalized view of a Liveboard.
3893
- * This event is deprecated. Use {@link HostEvent.UpdatePersonalizedView} instead.
4287
+ * This event is deprecated. Use {@link HostEvent.SelectPersonalizedView} instead,
4288
+ * which additionally accepts a `viewName`, resets to the original view when
4289
+ * called with an empty payload, and reports an error when a named view
4290
+ * cannot be found.
3894
4291
  * ```js
3895
4292
  * liveboardEmbed.trigger(HostEvent.UpdatePersonalisedView, {viewId: '1234'})
3896
4293
  * ```
@@ -3908,10 +4305,15 @@
3908
4305
  HostEvent["UpdatePersonalisedView"] = "UpdatePersonalisedView";
3909
4306
  /**
3910
4307
  * Triggers an event to update a personalized view of a Liveboard.
4308
+ * This event is deprecated. Use {@link HostEvent.SelectPersonalizedView} instead,
4309
+ * which additionally accepts a `viewName`, resets to the original view when
4310
+ * called with an empty payload, and reports an error when a named view
4311
+ * cannot be found.
3911
4312
  * ```js
3912
4313
  * liveboardEmbed.trigger(HostEvent.UpdatePersonalisedView, {viewId: '1234'})
3913
4314
  * ```
3914
4315
  * @version SDK: 1.48.0 | ThoughtSpot: 26.5.0.cl
4316
+ * @deprecated SDK: 1.53.0 | ThoughtSpot: 26.10.0.cl
3915
4317
  */
3916
4318
  HostEvent["UpdatePersonalizedView"] = "UpdatePersonalisedView";
3917
4319
  /**
@@ -4014,6 +4416,10 @@
4014
4416
  * description: "Generated from Spotter"
4015
4417
  * }, ContextType.Spotter);
4016
4418
  * ```
4419
+ * @returns answerId - GUID of the saved Answer.
4420
+ * @returns saveResponse - Raw response from the save operation.
4421
+ * @returns shareResponse - Raw response from the share operation, when the
4422
+ * Answer was also made discoverable.
4017
4423
  * @version SDK: 1.36.0 | ThoughtSpot: 10.6.0.cl
4018
4424
  */
4019
4425
  HostEvent["SaveAnswer"] = "saveAnswer";
@@ -4127,6 +4533,36 @@
4127
4533
  * @version SDK: 1.40.0 | ThoughtSpot: 10.11.0.cl
4128
4534
  */
4129
4535
  HostEvent["ResetSpotterConversation"] = "ResetSpotterConversation";
4536
+ /**
4537
+ * Opens the Spotter share-conversation modal for the given conversation.
4538
+ * `conversationId` is **mandatory** — you must pass the id of the
4539
+ * conversation to share. Also no-op when sharing is disabled
4540
+ * (enableShareConversation off) or when already in the read-only shared view.
4541
+ * @example
4542
+ * ```js
4543
+ * spotterEmbed.trigger(HostEvent.ShareSpotterConversation, { conversationId: 'abc' });
4544
+ * ```
4545
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
4546
+ */
4547
+ HostEvent["ShareSpotterConversation"] = "ShareSpotterConversation";
4548
+ /**
4549
+ * Closes the Spotter share-conversation modal. No-op if none is open.
4550
+ * @example
4551
+ * ```js
4552
+ * spotterEmbed.trigger(HostEvent.CloseSpotterShareConversation);
4553
+ * ```
4554
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
4555
+ */
4556
+ HostEvent["CloseSpotterShareConversation"] = "CloseSpotterShareConversation";
4557
+ /**
4558
+ * Exits the read-only shared-conversation view.
4559
+ * @example
4560
+ * ```js
4561
+ * spotterEmbed.trigger(HostEvent.ExitSpotterSharedConversation);
4562
+ * ```
4563
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
4564
+ */
4565
+ HostEvent["ExitSpotterSharedConversation"] = "ExitSpotterSharedConversation";
4130
4566
  /**
4131
4567
  * Deletes the last prompt in spotter embed.
4132
4568
  * @example
@@ -4222,6 +4658,41 @@
4222
4658
  * @version SDK: 1.45.0 | ThoughtSpot: 26.2.0.cl
4223
4659
  */
4224
4660
  HostEvent["StartNewSpotterConversation"] = "StartNewSpotterConversation";
4661
+ /**
4662
+ * Pins a saved Spotter conversation so it floats to the top of the past
4663
+ * conversations sidebar. The `conversationId` of the conversation to pin is
4664
+ * required.
4665
+ *
4666
+ * This feature is available only when chat history is enabled on your ThoughtSpot
4667
+ * instance. Contact your admin or ThoughtSpot Support to enable chat history on your
4668
+ * instance.
4669
+ *
4670
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
4671
+ * @example
4672
+ * ```js
4673
+ * spotterEmbed.trigger(HostEvent.PinSpotterConversation, {
4674
+ * conversationId: '<conversation-id>',
4675
+ * });
4676
+ * ```
4677
+ */
4678
+ HostEvent["PinSpotterConversation"] = "PinSpotterConversation";
4679
+ /**
4680
+ * Unpins a previously pinned Spotter conversation. The `conversationId` of the
4681
+ * conversation to unpin is required.
4682
+ *
4683
+ * This feature is available only when chat history is enabled on your ThoughtSpot
4684
+ * instance. Contact your admin or ThoughtSpot Support to enable chat history on your
4685
+ * instance.
4686
+ *
4687
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
4688
+ * @example
4689
+ * ```js
4690
+ * spotterEmbed.trigger(HostEvent.UnpinSpotterConversation, {
4691
+ * conversationId: '<conversation-id>',
4692
+ * });
4693
+ * ```
4694
+ */
4695
+ HostEvent["UnpinSpotterConversation"] = "UnpinSpotterConversation";
4225
4696
  /**
4226
4697
  * @hidden
4227
4698
  * Get the current context of the embedded page.
@@ -4430,6 +4901,7 @@
4430
4901
  Param["NumberFormatLocale"] = "numberFormatLocale";
4431
4902
  Param["CurrencyFormat"] = "currencyFormat";
4432
4903
  Param["Enable2ColumnLayout"] = "enable2ColumnLayout";
4904
+ Param["IsLiveboardAlwaysOn12ColLayout"] = "isLiveboardAlwaysOn12ColLayout";
4433
4905
  Param["IsFullAppEmbed"] = "isFullAppEmbed";
4434
4906
  Param["IsOnBeforeGetVizDataInterceptEnabled"] = "isOnBeforeGetVizDataInterceptEnabled";
4435
4907
  Param["FocusSearchBarOnRender"] = "focusSearchBarOnRender";
@@ -4443,6 +4915,7 @@
4443
4915
  Param["SpotterEnabled"] = "isSpotterExperienceEnabled";
4444
4916
  Param["IsUnifiedSearchExperienceEnabled"] = "isUnifiedSearchExperienceEnabled";
4445
4917
  Param["OverrideOrgId"] = "orgId";
4918
+ Param["OverrideHistoryState"] = "overrideHistoryState";
4446
4919
  Param["OauthPollingInterval"] = "oAuthPollingInterval";
4447
4920
  Param["IsForceRedirect"] = "isForceRedirect";
4448
4921
  Param["DataSourceId"] = "dataSourceId";
@@ -4452,6 +4925,7 @@
4452
4925
  Param["PrimaryAction"] = "primaryAction";
4453
4926
  Param["isSpotterAgentEmbed"] = "isSpotterAgentEmbed";
4454
4927
  Param["IsLiveboardStylingAndGroupingEnabled"] = "isLiveboardStylingAndGroupingEnabled";
4928
+ Param["LiveboardGutter"] = "liveboardGutter";
4455
4929
  Param["IsLazyLoadingForEmbedEnabled"] = "isLazyLoadingForEmbedEnabled";
4456
4930
  Param["RootMarginForLazyLoad"] = "rootMarginForLazyLoad";
4457
4931
  Param["isPNGInScheduledEmailsEnabled"] = "isPNGInScheduledEmailsEnabled";
@@ -4460,9 +4934,12 @@
4460
4934
  Param["isGranularXLSXCSVSchedulesEnabled"] = "isGranularXLSXCSVSchedulesEnabled";
4461
4935
  Param["isSendNowLiveboardSchedulingEnabled"] = "isSendNowLiveboardSchedulingEnabled";
4462
4936
  Param["isCentralizedLiveboardFilterUXEnabled"] = "isCentralizedLiveboardFilterUXEnabled";
4937
+ Param["isScopedLiveboardFilteringEnabled"] = "isScopedLiveboardFilteringEnabled";
4463
4938
  Param["isLinkParametersEnabled"] = "isLinkParametersEnabled";
4464
4939
  Param["EnablePastConversationsSidebar"] = "enablePastConversationsSidebar";
4465
4940
  Param["UpdatedSpotterChatPrompt"] = "updatedSpotterChatPrompt";
4941
+ Param["ShowSpotterRadiance"] = "showSpotterRadiance";
4942
+ Param["DefaultQueryMode"] = "defaultQueryMode";
4466
4943
  Param["EnableStopAnswerGenerationEmbed"] = "enableStopAnswerGenerationEmbed";
4467
4944
  Param["SpotterSidebarTitle"] = "spotterSidebarTitle";
4468
4945
  Param["SpotterSidebarDefaultExpanded"] = "spotterSidebarDefaultExpanded";
@@ -4482,14 +4959,19 @@
4482
4959
  Param["SpotterFileUploadEnabled"] = "spotterFileUploadEnabled";
4483
4960
  Param["SpotterFileUploadFileTypes"] = "spotterFileUploadFileTypes";
4484
4961
  Param["IsStarterPromptsEnabled"] = "enableStarterPrompts";
4962
+ Param["UpdatedSpotterExperience"] = "updatedSpotterExperience";
4963
+ Param["SpotterDataSources"] = "spotterDataSources";
4964
+ Param["AnalystId"] = "analystId";
4965
+ Param["OpenSpotterOnLiveboardByDefault"] = "openSpotterOnLiveboardByDefault";
4485
4966
  })(Param || (Param = {}));
4486
4967
  /**
4487
4968
  * ThoughtSpot application pages include actions and menu commands
4488
4969
  * for various user-initiated operations. These actions are represented
4489
4970
  * as enumeration members in the SDK. To control actions in the embedded view:
4490
- * - disabledActions — the action is grayed out and still visible, but non-interactive (user can see but not click).
4491
- * - hiddenActions — the action is completely removed from the UI (user cannot see it at all).
4492
- * - visibleActions — allowlist, only these actions are shown; all others are hidden.
4971
+ * - disabledActions — the action is grayed out and still visible, but non-interactive
4972
+ * (user can see but not click). - hiddenActions — the action is completely removed from
4973
+ * the UI (user cannot see it at all). - visibleActions — allowlist, only these actions
4974
+ * are shown; all others are hidden.
4493
4975
  *
4494
4976
  * Use disabledActions to disable (gray out) an action.
4495
4977
  * Use hiddenActions to hide (fully remove) an action.
@@ -4543,6 +5025,17 @@
4543
5025
  * ```
4544
5026
  */
4545
5027
  Action["SaveAsView"] = "saveAsView";
5028
+ /**
5029
+ * The **EditInputTable** action on a Liveboard
5030
+ * page. Allows users to edit an input table used in an Answer directly from
5031
+ * a Liveboard.
5032
+ * @example
5033
+ * ```js
5034
+ * disabledActions: [Action.EditInputTable]
5035
+ * ```
5036
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
5037
+ */
5038
+ Action["EditInputTable"] = "editInputTable";
4546
5039
  /**
4547
5040
  * The **Make a copy** action on a Liveboard or Answer
4548
5041
  * page. Creates a copy of the Liveboard.
@@ -5746,6 +6239,19 @@
5746
6239
  * @version SDK: 1.36.0 | ThoughtSpot Cloud: 10.6.0.cl
5747
6240
  */
5748
6241
  Action["ChangeFilterVisibilityInTab"] = "changeFilterVisibilityInTab";
6242
+ /**
6243
+ * Action ID to show, hide, or disable all filter surfaces on a Liveboard,
6244
+ * including filter, parameter, and cross-filter chips at the liveboard,
6245
+ * tab, and group levels. Parameter and cross-filter chips are hide-only.
6246
+ *
6247
+ * @example
6248
+ * ```js
6249
+ * hiddenActions: [Action.AllLiveboardFilters]
6250
+ * disabledActions: [Action.AllLiveboardFilters]
6251
+ * ```
6252
+ * @version SDK: 1.53.0 | ThoughtSpot: 26.10.0.cl
6253
+ */
6254
+ Action["AllLiveboardFilters"] = "allLiveboardFilters";
5749
6255
  /**
5750
6256
  * The **Data model instructions** button on the Spotter interface.
5751
6257
  * Allows opening the data model instructions modal.
@@ -5847,6 +6353,10 @@
5847
6353
  * The **Add to Coaching** feature allows adding reference questions and
5848
6354
  * business terms to improve Spotter’s responses. This feature is generally available
5849
6355
  * (GA) from version 26.2.0.cl and enabled by default on embed deployments.
6356
+ *
6357
+ * This action governs both the answer-card **Add to memory** CTA and its
6358
+ * Spotter 3 successor, the response-footer **Remember this** CTA
6359
+ * (they are mutually exclusive).
5850
6360
  * @example
5851
6361
  * ```js
5852
6362
  * hiddenAction: [Action.InConversationTraining]
@@ -6081,6 +6591,89 @@
6081
6591
  * @version SDK: 1.46.0 | ThoughtSpot Cloud: 26.3.0.cl
6082
6592
  */
6083
6593
  Action["SpotterChatRename"] = "spotterChatRename";
6594
+ /**
6595
+ * Controls visibility and disable state of the Spotter conversation Share
6596
+ * button in the chat header. Only takes effect once sharing is enabled
6597
+ * (enableShareConversation on).
6598
+ * @example
6599
+ * ```js
6600
+ * disabledActions: [Action.SpotterShareConversationButtonHeader]
6601
+ * ```
6602
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6603
+ */
6604
+ Action["SpotterShareConversationButtonHeader"] = "spotterShareConversationButtonHeader";
6605
+ /**
6606
+ * Controls visibility and disable state of the Share item in the Spotter
6607
+ * conversation history (sidebar) edit menu. Independent of the header button
6608
+ * above, so a host can show Share in one entry point and hide it in the other.
6609
+ * @example
6610
+ * ```js
6611
+ * disabledActions: [Action.SpotterShareConversationMenuItemSidebar]
6612
+ * ```
6613
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6614
+ */
6615
+ Action["SpotterShareConversationMenuItemSidebar"] = "spotterShareConversationMenuItemSidebar";
6616
+ /**
6617
+ * Controls visibility of the entire read-only shared-conversation data-access
6618
+ * banner shown when a recipient opens a shared view. Hide-only.
6619
+ * @example
6620
+ * ```js
6621
+ * hiddenActions: [Action.SpotterSharedConversationBanner]
6622
+ * ```
6623
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6624
+ */
6625
+ Action["SpotterSharedConversationBanner"] = "spotterSharedConversationBanner";
6626
+ /**
6627
+ * Controls visibility and disable state of the cross/close button on the
6628
+ * read-only shared-conversation data-access banner (keeps the banner itself).
6629
+ * @example
6630
+ * ```js
6631
+ * hiddenActions: [Action.SpotterSharedConversationBannerDismissButton]
6632
+ * ```
6633
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6634
+ */
6635
+ Action["SpotterSharedConversationBannerDismissButton"] = "spotterSharedConversationBannerDismissButton";
6636
+ /**
6637
+ * Controls visibility and disable state of the Exit button in the read-only
6638
+ * shared-view header. Hiding it does not disable the ExitSpotterSharedConversation
6639
+ * host event.
6640
+ * @example
6641
+ * ```js
6642
+ * hiddenActions: [Action.SpotterSharedConversationExitButton]
6643
+ * ```
6644
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6645
+ */
6646
+ Action["SpotterSharedConversationExitButton"] = "spotterSharedConversationExitButton";
6647
+ /**
6648
+ * Controls visibility of the share-modal footer note ("Chat will be shared up
6649
+ * to the current moment…"). Hide-only.
6650
+ * @example
6651
+ * ```js
6652
+ * hiddenActions: [Action.SpotterShareUpToCurrentInfo]
6653
+ * ```
6654
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6655
+ */
6656
+ Action["SpotterShareUpToCurrentInfo"] = "spotterShareUpToCurrentInfo";
6657
+ /**
6658
+ * Controls visibility and disable state of the share-modal "include new
6659
+ * messages since last shared version" checkbox.
6660
+ * @example
6661
+ * ```js
6662
+ * disabledActions: [Action.SpotterShareIncludeNewMessagesCheckbox]
6663
+ * ```
6664
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6665
+ */
6666
+ Action["SpotterShareIncludeNewMessagesCheckbox"] = "spotterShareIncludeNewMessagesCheckbox";
6667
+ /**
6668
+ * Controls visibility and disable state of the cross on the share-modal
6669
+ * stale-snapshot info banner.
6670
+ * @example
6671
+ * ```js
6672
+ * hiddenActions: [Action.SpotterShareStaleInfoBannerDismissButton]
6673
+ * ```
6674
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6675
+ */
6676
+ Action["SpotterShareStaleInfoBannerDismissButton"] = "spotterShareStaleInfoBannerDismissButton";
6084
6677
  /**
6085
6678
  * Controls visibility and disable state of the delete action
6086
6679
  * in the Spotter conversation edit menu.
@@ -6091,6 +6684,16 @@
6091
6684
  * @version SDK: 1.46.0 | ThoughtSpot Cloud: 26.3.0.cl
6092
6685
  */
6093
6686
  Action["SpotterChatDelete"] = "spotterChatDelete";
6687
+ /**
6688
+ * Controls visibility and disable state of the pin/unpin action
6689
+ * in the Spotter conversation edit menu.
6690
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
6691
+ * @example
6692
+ * ```js
6693
+ * disabledActions: [Action.SpotterChatPin]
6694
+ * ```
6695
+ */
6696
+ Action["SpotterChatPin"] = "spotterChatPin";
6094
6697
  /**
6095
6698
  * Controls visibility and disable state of the documentation/best practices
6096
6699
  * link in the Spotter sidebar footer.
@@ -6134,6 +6737,56 @@
6134
6737
  * @version SDK: 1.48.0 | ThoughtSpot Cloud: 26.5.0.cl
6135
6738
  */
6136
6739
  Action["SpotterChatModeSwitcher"] = "spotterChatModeSwitcher";
6740
+ /**
6741
+ * The **Basic Search** starter prompt pill.
6742
+ *
6743
+ * Starter prompt pills are the row of category buttons shown above the
6744
+ * Spotter chat input before a conversation starts. They give a new user
6745
+ * ready-made questions to click instead of typing one from scratch, and
6746
+ * disappear once the conversation begins. There are three, one per action
6747
+ * below.
6748
+ *
6749
+ * Clicking this pill opens a card of suggested simple questions; picking one
6750
+ * submits it to Spotter right away. Visible by default, and hidden along
6751
+ * with the other pills when the surface itself is off (see
6752
+ * {@link SpotterChatViewConfig.starterPrompts}).
6753
+ * @example
6754
+ * ```js
6755
+ * hiddenActions: [Action.QuickSearchPill]
6756
+ * ```
6757
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6758
+ */
6759
+ Action["QuickSearchPill"] = "quickSearchPill";
6760
+ /**
6761
+ * The **Deep Analysis** starter prompt pill, next to
6762
+ * {@link Action.QuickSearchPill} above the Spotter chat input.
6763
+ *
6764
+ * Clicking it opens a card of suggested investigative questions ("why did
6765
+ * revenue drop?"). Picking one fills the chat input in Deep Analysis mode
6766
+ * rather than submitting immediately, so the user can edit it first.
6767
+ * Visible by default.
6768
+ * @example
6769
+ * ```js
6770
+ * hiddenActions: [Action.DeepAnalysisPill]
6771
+ * ```
6772
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6773
+ */
6774
+ Action["DeepAnalysisPill"] = "deepAnalysisPill";
6775
+ /**
6776
+ * The **Data Literacy** starter prompt pill, next to
6777
+ * {@link Action.QuickSearchPill} above the Spotter chat input.
6778
+ *
6779
+ * Unlike the other two pills it opens no card: clicking it submits a prompt
6780
+ * that describes the data the model can answer over, helping a user who does
6781
+ * not yet know what is in the data source. The prompt text always comes from
6782
+ * ThoughtSpot, so only its label is customizable. Visible by default.
6783
+ * @example
6784
+ * ```js
6785
+ * hiddenActions: [Action.DataLiteracyPill]
6786
+ * ```
6787
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6788
+ */
6789
+ Action["DataLiteracyPill"] = "dataLiteracyPill";
6137
6790
  /**
6138
6791
  * The **Include current period** checkbox for date filters.
6139
6792
  * Controls the visibility and availability of the option to include
@@ -6259,29 +6912,61 @@
6259
6912
  * disabledActions: [Action.SpotterAnalystDelete]
6260
6913
  * ```
6261
6914
  */
6262
- Action["SpotterAnalystDelete"] = "spotterAnalystDelete";
6915
+ Action["SpotterAnalystDelete"] = "spotterAnalystDelete";
6916
+ /**
6917
+ * Controls visibility and disable state of the make a copy action
6918
+ * in the Spotter Analyst interface.
6919
+ * @version SDK: 1.51.0 | ThoughtSpot Cloud: 26.8.0.cl
6920
+ * @example
6921
+ * ```js
6922
+ * hiddenActions: [Action.SpotterAnalystMakeACopy]
6923
+ * disabledActions: [Action.SpotterAnalystMakeACopy]
6924
+ * ```
6925
+ */
6926
+ Action["SpotterAnalystMakeACopy"] = "spotterAnalystMakeACopy";
6927
+ /**
6928
+ * Controls visibility and disable state of the sidebar
6929
+ * in the Spotter Analyst interface.
6930
+ * @version SDK: 1.51.0 | ThoughtSpot Cloud: 26.8.0.cl
6931
+ * @example
6932
+ * ```js
6933
+ * hiddenActions: [Action.SpotterAnalystSidebar]
6934
+ * disabledActions: [Action.SpotterAnalystSidebar]
6935
+ * ```
6936
+ */
6937
+ Action["SpotterAnalystSidebar"] = "spotterAnalystSidebar";
6938
+ /**
6939
+ * Controls visibility and disable state of the analyst list
6940
+ * ("Show all") in the Spotter Analyst interface.
6941
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
6942
+ * @example
6943
+ * ```js
6944
+ * hiddenActions: [Action.SpotterAnalystList]
6945
+ * disabledActions: [Action.SpotterAnalystList]
6946
+ * ```
6947
+ */
6948
+ Action["SpotterAnalystList"] = "spotterAnalystList";
6263
6949
  /**
6264
- * Controls visibility and disable state of the make a copy action
6265
- * in the Spotter Analyst interface.
6266
- * @version SDK: 1.51.0 | ThoughtSpot Cloud: 26.8.0.cl
6950
+ * Controls visibility and disable state of the default Spotter analyst
6951
+ * entry in the Spotter Analyst interface.
6952
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
6267
6953
  * @example
6268
6954
  * ```js
6269
- * hiddenActions: [Action.SpotterAnalystMakeACopy]
6270
- * disabledActions: [Action.SpotterAnalystMakeACopy]
6955
+ * hiddenActions: [Action.SpotterDefaultAnalyst]
6956
+ * disabledActions: [Action.SpotterDefaultAnalyst]
6271
6957
  * ```
6272
6958
  */
6273
- Action["SpotterAnalystMakeACopy"] = "spotterAnalystMakeACopy";
6959
+ Action["SpotterDefaultAnalyst"] = "spotterDefaultAnalyst";
6274
6960
  /**
6275
- * Controls visibility and disable state of the sidebar
6276
- * in the Spotter Analyst interface.
6277
- * @version SDK: 1.51.0 | ThoughtSpot Cloud: 26.8.0.cl
6961
+ * The **Spotter** button in the Liveboard header.
6962
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
6278
6963
  * @example
6279
6964
  * ```js
6280
- * hiddenActions: [Action.SpotterAnalystSidebar]
6281
- * disabledActions: [Action.SpotterAnalystSidebar]
6965
+ * hiddenActions: [Action.SpotterOnLiveboard]
6966
+ * disabledActions: [Action.SpotterOnLiveboard]
6282
6967
  * ```
6283
6968
  */
6284
- Action["SpotterAnalystSidebar"] = "spotterAnalystSidebar";
6969
+ Action["SpotterOnLiveboard"] = "spotterOnLiveboard";
6285
6970
  })(exports.Action || (exports.Action = {}));
6286
6971
  var PrefetchFeatures;
6287
6972
  (function (PrefetchFeatures) {
@@ -6569,6 +7254,8 @@
6569
7254
  EmbedErrorCodes["UPDATEFILTERS_INVALID_PAYLOAD"] = "UPDATEFILTERS_INVALID_PAYLOAD";
6570
7255
  /** DrillDown payload is invalid - missing or malformed points */
6571
7256
  EmbedErrorCodes["DRILLDOWN_INVALID_PAYLOAD"] = "DRILLDOWN_INVALID_PAYLOAD";
7257
+ /** UpdateParameters payload is invalid - malformed applicability */
7258
+ EmbedErrorCodes["UPDATEPARAMETERS_INVALID_PAYLOAD"] = "UPDATEPARAMETERS_INVALID_PAYLOAD";
6572
7259
  })(EmbedErrorCodes || (EmbedErrorCodes = {}));
6573
7260
  /**
6574
7261
  * Context types for specifying the page context when triggering host events.
@@ -6747,7 +7434,7 @@
6747
7434
  TableContentDensity["Compact"] = "COMPACT";
6748
7435
  })(TableContentDensity || (TableContentDensity = {}));
6749
7436
 
6750
- var version$1="1.50.0";var pkg = {version:version$1};
7437
+ var version$1="1.51.0-test";var pkg = {version:version$1};
6751
7438
 
6752
7439
  const { version } = pkg;
6753
7440
 
@@ -6823,7 +7510,6 @@
6823
7510
 
6824
7511
  const ERROR_MESSAGE = {
6825
7512
  INVALID_THOUGHTSPOT_HOST: 'Error parsing ThoughtSpot host. Please provide a valid URL.',
6826
- SPOTTER_EMBED_WORKSHEED_ID_NOT_FOUND: 'Please select a Model to get started',
6827
7513
  LIVEBOARD_VIZ_ID_VALIDATION: 'Please select a Liveboard to embed.',
6828
7514
  TRIGGER_TIMED_OUT: 'Trigger timed-out in getting a response',
6829
7515
  SEARCHEMBED_BETA_WRANING_MESSAGE: 'SearchEmbed is in Beta in this release.',
@@ -6854,6 +7540,7 @@
6854
7540
  INVALID_SPOTTER_DOCUMENTATION_URL: 'Invalid spotterDocumentationUrl. Please provide a valid http or https URL.',
6855
7541
  UPDATEFILTERS_INVALID_PAYLOAD: 'UpdateFilters requires a valid filter or filters array. Expected: { filter: { column, oper, values } } or { filters: [{ column, oper, values }, ...] }',
6856
7542
  DRILLDOWN_INVALID_PAYLOAD: 'DrillDown requires a valid points object. Expected: { points: { clickedPoint?, selectedPoints? }, autoDrillDown?, vizId? }',
7543
+ UPDATEPARAMETERS_INVALID_PAYLOAD: 'UpdateParameters received an invalid applicability. Expected: { level: LIVEBOARD | TAB | GROUP, targetId } where targetId is required for TAB and GROUP levels',
6857
7544
  };
6858
7545
  const CUSTOM_ACTIONS_ERROR_MESSAGE = {
6859
7546
  INVALID_ACTION_OBJECT: 'Custom Action Validation Error: Invalid action object provided',
@@ -6972,7 +7659,7 @@
6972
7659
  * @returns true if the value is a valid CSS margin value, false otherwise
6973
7660
  */
6974
7661
  const isValidCssMargin = (value) => {
6975
- if (isUndefined(value)) {
7662
+ if (isUndefined$1(value)) {
6976
7663
  return false;
6977
7664
  }
6978
7665
  if (typeof value !== 'string') {
@@ -7181,7 +7868,7 @@
7181
7868
  element.style.removeProperty(styleProperty);
7182
7869
  });
7183
7870
  };
7184
- const isUndefined = (value) => value === undefined;
7871
+ const isUndefined$1 = (value) => value === undefined;
7185
7872
  // Return if the value is a string, double or boolean.
7186
7873
  const getTypeFromValue = (value) => {
7187
7874
  if (typeof value === 'string') {
@@ -7486,7 +8173,7 @@
7486
8173
  };
7487
8174
 
7488
8175
  /** Used for built-in method references. */
7489
- var objectProto$c = Object.prototype;
8176
+ var objectProto$d = Object.prototype;
7490
8177
 
7491
8178
  /**
7492
8179
  * Checks if `value` is likely a prototype object.
@@ -7497,7 +8184,7 @@
7497
8184
  */
7498
8185
  function isPrototype(value) {
7499
8186
  var Ctor = value && value.constructor,
7500
- proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto$c;
8187
+ proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto$d;
7501
8188
 
7502
8189
  return value === proto;
7503
8190
  }
@@ -7526,10 +8213,10 @@
7526
8213
  var _nativeKeys = nativeKeys;
7527
8214
 
7528
8215
  /** Used for built-in method references. */
7529
- var objectProto$b = Object.prototype;
8216
+ var objectProto$c = Object.prototype;
7530
8217
 
7531
8218
  /** Used to check objects for own properties. */
7532
- var hasOwnProperty$a = objectProto$b.hasOwnProperty;
8219
+ var hasOwnProperty$b = objectProto$c.hasOwnProperty;
7533
8220
 
7534
8221
  /**
7535
8222
  * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
@@ -7544,7 +8231,7 @@
7544
8231
  }
7545
8232
  var result = [];
7546
8233
  for (var key in Object(object)) {
7547
- if (hasOwnProperty$a.call(object, key) && key != 'constructor') {
8234
+ if (hasOwnProperty$b.call(object, key) && key != 'constructor') {
7548
8235
  result.push(key);
7549
8236
  }
7550
8237
  }
@@ -7580,17 +8267,17 @@
7580
8267
  var _Symbol = Symbol$1;
7581
8268
 
7582
8269
  /** Used for built-in method references. */
7583
- var objectProto$a = Object.prototype;
8270
+ var objectProto$b = Object.prototype;
7584
8271
 
7585
8272
  /** Used to check objects for own properties. */
7586
- var hasOwnProperty$9 = objectProto$a.hasOwnProperty;
8273
+ var hasOwnProperty$a = objectProto$b.hasOwnProperty;
7587
8274
 
7588
8275
  /**
7589
8276
  * Used to resolve the
7590
8277
  * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
7591
8278
  * of values.
7592
8279
  */
7593
- var nativeObjectToString$1 = objectProto$a.toString;
8280
+ var nativeObjectToString$1 = objectProto$b.toString;
7594
8281
 
7595
8282
  /** Built-in value references. */
7596
8283
  var symToStringTag$1 = _Symbol ? _Symbol.toStringTag : undefined;
@@ -7603,7 +8290,7 @@
7603
8290
  * @returns {string} Returns the raw `toStringTag`.
7604
8291
  */
7605
8292
  function getRawTag(value) {
7606
- var isOwn = hasOwnProperty$9.call(value, symToStringTag$1),
8293
+ var isOwn = hasOwnProperty$a.call(value, symToStringTag$1),
7607
8294
  tag = value[symToStringTag$1];
7608
8295
 
7609
8296
  try {
@@ -7625,14 +8312,14 @@
7625
8312
  var _getRawTag = getRawTag;
7626
8313
 
7627
8314
  /** Used for built-in method references. */
7628
- var objectProto$9 = Object.prototype;
8315
+ var objectProto$a = Object.prototype;
7629
8316
 
7630
8317
  /**
7631
8318
  * Used to resolve the
7632
8319
  * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
7633
8320
  * of values.
7634
8321
  */
7635
- var nativeObjectToString = objectProto$9.toString;
8322
+ var nativeObjectToString = objectProto$a.toString;
7636
8323
 
7637
8324
  /**
7638
8325
  * Converts `value` to a string using `Object.prototype.toString`.
@@ -7764,10 +8451,10 @@
7764
8451
  var _isMasked = isMasked;
7765
8452
 
7766
8453
  /** Used for built-in method references. */
7767
- var funcProto$1 = Function.prototype;
8454
+ var funcProto$2 = Function.prototype;
7768
8455
 
7769
8456
  /** Used to resolve the decompiled source of functions. */
7770
- var funcToString$1 = funcProto$1.toString;
8457
+ var funcToString$2 = funcProto$2.toString;
7771
8458
 
7772
8459
  /**
7773
8460
  * Converts `func` to its source code.
@@ -7779,7 +8466,7 @@
7779
8466
  function toSource(func) {
7780
8467
  if (func != null) {
7781
8468
  try {
7782
- return funcToString$1.call(func);
8469
+ return funcToString$2.call(func);
7783
8470
  } catch (e) {}
7784
8471
  try {
7785
8472
  return (func + '');
@@ -7800,18 +8487,18 @@
7800
8487
  var reIsHostCtor = /^\[object .+?Constructor\]$/;
7801
8488
 
7802
8489
  /** Used for built-in method references. */
7803
- var funcProto = Function.prototype,
7804
- objectProto$8 = Object.prototype;
8490
+ var funcProto$1 = Function.prototype,
8491
+ objectProto$9 = Object.prototype;
7805
8492
 
7806
8493
  /** Used to resolve the decompiled source of functions. */
7807
- var funcToString = funcProto.toString;
8494
+ var funcToString$1 = funcProto$1.toString;
7808
8495
 
7809
8496
  /** Used to check objects for own properties. */
7810
- var hasOwnProperty$8 = objectProto$8.hasOwnProperty;
8497
+ var hasOwnProperty$9 = objectProto$9.hasOwnProperty;
7811
8498
 
7812
8499
  /** Used to detect if a method is native. */
7813
8500
  var reIsNative = RegExp('^' +
7814
- funcToString.call(hasOwnProperty$8).replace(reRegExpChar, '\\$&')
8501
+ funcToString$1.call(hasOwnProperty$9).replace(reRegExpChar, '\\$&')
7815
8502
  .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
7816
8503
  );
7817
8504
 
@@ -7889,7 +8576,7 @@
7889
8576
 
7890
8577
  /** `Object#toString` result references. */
7891
8578
  var mapTag$3 = '[object Map]',
7892
- objectTag$2 = '[object Object]',
8579
+ objectTag$3 = '[object Object]',
7893
8580
  promiseTag = '[object Promise]',
7894
8581
  setTag$3 = '[object Set]',
7895
8582
  weakMapTag$1 = '[object WeakMap]';
@@ -7920,7 +8607,7 @@
7920
8607
  (_WeakMap && getTag(new _WeakMap) != weakMapTag$1)) {
7921
8608
  getTag = function(value) {
7922
8609
  var result = _baseGetTag(value),
7923
- Ctor = result == objectTag$2 ? value.constructor : undefined,
8610
+ Ctor = result == objectTag$3 ? value.constructor : undefined,
7924
8611
  ctorString = Ctor ? _toSource(Ctor) : '';
7925
8612
 
7926
8613
  if (ctorString) {
@@ -7985,13 +8672,13 @@
7985
8672
  var _baseIsArguments = baseIsArguments;
7986
8673
 
7987
8674
  /** Used for built-in method references. */
7988
- var objectProto$7 = Object.prototype;
8675
+ var objectProto$8 = Object.prototype;
7989
8676
 
7990
8677
  /** Used to check objects for own properties. */
7991
- var hasOwnProperty$7 = objectProto$7.hasOwnProperty;
8678
+ var hasOwnProperty$8 = objectProto$8.hasOwnProperty;
7992
8679
 
7993
8680
  /** Built-in value references. */
7994
- var propertyIsEnumerable$1 = objectProto$7.propertyIsEnumerable;
8681
+ var propertyIsEnumerable$1 = objectProto$8.propertyIsEnumerable;
7995
8682
 
7996
8683
  /**
7997
8684
  * Checks if `value` is likely an `arguments` object.
@@ -8012,7 +8699,7 @@
8012
8699
  * // => false
8013
8700
  */
8014
8701
  var isArguments = _baseIsArguments(function() { return arguments; }()) ? _baseIsArguments : function(value) {
8015
- return isObjectLike_1(value) && hasOwnProperty$7.call(value, 'callee') &&
8702
+ return isObjectLike_1(value) && hasOwnProperty$8.call(value, 'callee') &&
8016
8703
  !propertyIsEnumerable$1.call(value, 'callee');
8017
8704
  };
8018
8705
 
@@ -8178,10 +8865,10 @@
8178
8865
  funcTag = '[object Function]',
8179
8866
  mapTag$2 = '[object Map]',
8180
8867
  numberTag$1 = '[object Number]',
8181
- objectTag$1 = '[object Object]',
8868
+ objectTag$2 = '[object Object]',
8182
8869
  regexpTag$1 = '[object RegExp]',
8183
8870
  setTag$2 = '[object Set]',
8184
- stringTag$1 = '[object String]',
8871
+ stringTag$2 = '[object String]',
8185
8872
  weakMapTag = '[object WeakMap]';
8186
8873
 
8187
8874
  var arrayBufferTag$1 = '[object ArrayBuffer]',
@@ -8208,8 +8895,8 @@
8208
8895
  typedArrayTags[dataViewTag$1] = typedArrayTags[dateTag$1] =
8209
8896
  typedArrayTags[errorTag$1] = typedArrayTags[funcTag] =
8210
8897
  typedArrayTags[mapTag$2] = typedArrayTags[numberTag$1] =
8211
- typedArrayTags[objectTag$1] = typedArrayTags[regexpTag$1] =
8212
- typedArrayTags[setTag$2] = typedArrayTags[stringTag$1] =
8898
+ typedArrayTags[objectTag$2] = typedArrayTags[regexpTag$1] =
8899
+ typedArrayTags[setTag$2] = typedArrayTags[stringTag$2] =
8213
8900
  typedArrayTags[weakMapTag] = false;
8214
8901
 
8215
8902
  /**
@@ -8301,10 +8988,10 @@
8301
8988
  setTag$1 = '[object Set]';
8302
8989
 
8303
8990
  /** Used for built-in method references. */
8304
- var objectProto$6 = Object.prototype;
8991
+ var objectProto$7 = Object.prototype;
8305
8992
 
8306
8993
  /** Used to check objects for own properties. */
8307
- var hasOwnProperty$6 = objectProto$6.hasOwnProperty;
8994
+ var hasOwnProperty$7 = objectProto$7.hasOwnProperty;
8308
8995
 
8309
8996
  /**
8310
8997
  * Checks if `value` is an empty object, collection, map, or set.
@@ -8356,7 +9043,7 @@
8356
9043
  return !_baseKeys(value).length;
8357
9044
  }
8358
9045
  for (var key in value) {
8359
- if (hasOwnProperty$6.call(value, key)) {
9046
+ if (hasOwnProperty$7.call(value, key)) {
8360
9047
  return false;
8361
9048
  }
8362
9049
  }
@@ -8365,6 +9052,15 @@
8365
9052
 
8366
9053
  var isEmpty_1 = isEmpty$1;
8367
9054
 
9055
+ /**
9056
+ * Levels at which a filter or parameter can be applied.
9057
+ */
9058
+ var ApplicabilityLevel;
9059
+ (function (ApplicabilityLevel) {
9060
+ ApplicabilityLevel["Liveboard"] = "LIVEBOARD";
9061
+ ApplicabilityLevel["Tab"] = "TAB";
9062
+ ApplicabilityLevel["Group"] = "GROUP";
9063
+ })(ApplicabilityLevel || (ApplicabilityLevel = {}));
8368
9064
  var UIPassthroughEvent;
8369
9065
  (function (UIPassthroughEvent) {
8370
9066
  UIPassthroughEvent["PinAnswerToLiveboard"] = "addVizToPinboard";
@@ -8382,6 +9078,7 @@
8382
9078
  UIPassthroughEvent["GetParameters"] = "getParameters";
8383
9079
  UIPassthroughEvent["GetTML"] = "getTML";
8384
9080
  UIPassthroughEvent["GetTabs"] = "getTabs";
9081
+ UIPassthroughEvent["GetGroups"] = "getGroups";
8385
9082
  UIPassthroughEvent["GetExportRequestForCurrentPinboard"] = "getExportRequestForCurrentPinboard";
8386
9083
  })(UIPassthroughEvent || (UIPassthroughEvent = {}));
8387
9084
 
@@ -9602,10 +10299,10 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
9602
10299
  var HASH_UNDEFINED$2 = '__lodash_hash_undefined__';
9603
10300
 
9604
10301
  /** Used for built-in method references. */
9605
- var objectProto$5 = Object.prototype;
10302
+ var objectProto$6 = Object.prototype;
9606
10303
 
9607
10304
  /** Used to check objects for own properties. */
9608
- var hasOwnProperty$5 = objectProto$5.hasOwnProperty;
10305
+ var hasOwnProperty$6 = objectProto$6.hasOwnProperty;
9609
10306
 
9610
10307
  /**
9611
10308
  * Gets the hash value for `key`.
@@ -9622,16 +10319,16 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
9622
10319
  var result = data[key];
9623
10320
  return result === HASH_UNDEFINED$2 ? undefined : result;
9624
10321
  }
9625
- return hasOwnProperty$5.call(data, key) ? data[key] : undefined;
10322
+ return hasOwnProperty$6.call(data, key) ? data[key] : undefined;
9626
10323
  }
9627
10324
 
9628
10325
  var _hashGet = hashGet;
9629
10326
 
9630
10327
  /** Used for built-in method references. */
9631
- var objectProto$4 = Object.prototype;
10328
+ var objectProto$5 = Object.prototype;
9632
10329
 
9633
10330
  /** Used to check objects for own properties. */
9634
- var hasOwnProperty$4 = objectProto$4.hasOwnProperty;
10331
+ var hasOwnProperty$5 = objectProto$5.hasOwnProperty;
9635
10332
 
9636
10333
  /**
9637
10334
  * Checks if a hash value for `key` exists.
@@ -9644,7 +10341,7 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
9644
10341
  */
9645
10342
  function hashHas(key) {
9646
10343
  var data = this.__data__;
9647
- return _nativeCreate ? (data[key] !== undefined) : hasOwnProperty$4.call(data, key);
10344
+ return _nativeCreate ? (data[key] !== undefined) : hasOwnProperty$5.call(data, key);
9648
10345
  }
9649
10346
 
9650
10347
  var _hashHas = hashHas;
@@ -10619,7 +11316,7 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
10619
11316
  numberTag = '[object Number]',
10620
11317
  regexpTag = '[object RegExp]',
10621
11318
  setTag = '[object Set]',
10622
- stringTag = '[object String]',
11319
+ stringTag$1 = '[object String]',
10623
11320
  symbolTag = '[object Symbol]';
10624
11321
 
10625
11322
  var arrayBufferTag = '[object ArrayBuffer]',
@@ -10674,7 +11371,7 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
10674
11371
  return object.name == other.name && object.message == other.message;
10675
11372
 
10676
11373
  case regexpTag:
10677
- case stringTag:
11374
+ case stringTag$1:
10678
11375
  // Coerce regexes to strings and treat strings, primitives and objects,
10679
11376
  // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring
10680
11377
  // for more details.
@@ -10782,10 +11479,10 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
10782
11479
  var stubArray_1 = stubArray;
10783
11480
 
10784
11481
  /** Used for built-in method references. */
10785
- var objectProto$3 = Object.prototype;
11482
+ var objectProto$4 = Object.prototype;
10786
11483
 
10787
11484
  /** Built-in value references. */
10788
- var propertyIsEnumerable = objectProto$3.propertyIsEnumerable;
11485
+ var propertyIsEnumerable = objectProto$4.propertyIsEnumerable;
10789
11486
 
10790
11487
  /* Built-in method references for those with the same name as other `lodash` methods. */
10791
11488
  var nativeGetSymbols = Object.getOwnPropertySymbols;
@@ -10857,10 +11554,10 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
10857
11554
  var _isIndex = isIndex;
10858
11555
 
10859
11556
  /** Used for built-in method references. */
10860
- var objectProto$2 = Object.prototype;
11557
+ var objectProto$3 = Object.prototype;
10861
11558
 
10862
11559
  /** Used to check objects for own properties. */
10863
- var hasOwnProperty$3 = objectProto$2.hasOwnProperty;
11560
+ var hasOwnProperty$4 = objectProto$3.hasOwnProperty;
10864
11561
 
10865
11562
  /**
10866
11563
  * Creates an array of the enumerable property names of the array-like `value`.
@@ -10880,7 +11577,7 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
10880
11577
  length = result.length;
10881
11578
 
10882
11579
  for (var key in value) {
10883
- if ((inherited || hasOwnProperty$3.call(value, key)) &&
11580
+ if ((inherited || hasOwnProperty$4.call(value, key)) &&
10884
11581
  !(skipIndexes && (
10885
11582
  // Safari 9 has enumerable `arguments.length` in strict mode.
10886
11583
  key == 'length' ||
@@ -10950,10 +11647,10 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
10950
11647
  var COMPARE_PARTIAL_FLAG$3 = 1;
10951
11648
 
10952
11649
  /** Used for built-in method references. */
10953
- var objectProto$1 = Object.prototype;
11650
+ var objectProto$2 = Object.prototype;
10954
11651
 
10955
11652
  /** Used to check objects for own properties. */
10956
- var hasOwnProperty$2 = objectProto$1.hasOwnProperty;
11653
+ var hasOwnProperty$3 = objectProto$2.hasOwnProperty;
10957
11654
 
10958
11655
  /**
10959
11656
  * A specialized version of `baseIsEqualDeep` for objects with support for
@@ -10981,7 +11678,7 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
10981
11678
  var index = objLength;
10982
11679
  while (index--) {
10983
11680
  var key = objProps[index];
10984
- if (!(isPartial ? key in other : hasOwnProperty$2.call(other, key))) {
11681
+ if (!(isPartial ? key in other : hasOwnProperty$3.call(other, key))) {
10985
11682
  return false;
10986
11683
  }
10987
11684
  }
@@ -11041,13 +11738,13 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
11041
11738
  /** `Object#toString` result references. */
11042
11739
  var argsTag = '[object Arguments]',
11043
11740
  arrayTag = '[object Array]',
11044
- objectTag = '[object Object]';
11741
+ objectTag$1 = '[object Object]';
11045
11742
 
11046
11743
  /** Used for built-in method references. */
11047
- var objectProto = Object.prototype;
11744
+ var objectProto$1 = Object.prototype;
11048
11745
 
11049
11746
  /** Used to check objects for own properties. */
11050
- var hasOwnProperty$1 = objectProto.hasOwnProperty;
11747
+ var hasOwnProperty$2 = objectProto$1.hasOwnProperty;
11051
11748
 
11052
11749
  /**
11053
11750
  * A specialized version of `baseIsEqual` for arrays and objects which performs
@@ -11069,11 +11766,11 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
11069
11766
  objTag = objIsArr ? arrayTag : _getTag(object),
11070
11767
  othTag = othIsArr ? arrayTag : _getTag(other);
11071
11768
 
11072
- objTag = objTag == argsTag ? objectTag : objTag;
11073
- othTag = othTag == argsTag ? objectTag : othTag;
11769
+ objTag = objTag == argsTag ? objectTag$1 : objTag;
11770
+ othTag = othTag == argsTag ? objectTag$1 : othTag;
11074
11771
 
11075
- var objIsObj = objTag == objectTag,
11076
- othIsObj = othTag == objectTag,
11772
+ var objIsObj = objTag == objectTag$1,
11773
+ othIsObj = othTag == objectTag$1,
11077
11774
  isSameTag = objTag == othTag;
11078
11775
 
11079
11776
  if (isSameTag && isBuffer_1(object)) {
@@ -11090,8 +11787,8 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
11090
11787
  : _equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
11091
11788
  }
11092
11789
  if (!(bitmask & COMPARE_PARTIAL_FLAG$2)) {
11093
- var objIsWrapped = objIsObj && hasOwnProperty$1.call(object, '__wrapped__'),
11094
- othIsWrapped = othIsObj && hasOwnProperty$1.call(other, '__wrapped__');
11790
+ var objIsWrapped = objIsObj && hasOwnProperty$2.call(object, '__wrapped__'),
11791
+ othIsWrapped = othIsObj && hasOwnProperty$2.call(other, '__wrapped__');
11095
11792
 
11096
11793
  if (objIsWrapped || othIsWrapped) {
11097
11794
  var objUnwrapped = objIsWrapped ? object.value() : object,
@@ -12266,7 +12963,8 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
12266
12963
  * The default CSS dimensions of the embedded app
12267
12964
  */
12268
12965
  const DEFAULT_EMBED_WIDTH = '100%';
12269
- const DEFAULT_EMBED_HEIGHT = '100%';
12966
+ const DEFAULT_EMBED_HEIGHT = '100%';
12967
+ const DEFAULT_LAZY_LOADING_MARGIN = '500px 0px';
12270
12968
 
12271
12969
  var Config = {
12272
12970
  DEBUG: false,
@@ -12302,7 +13000,7 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
12302
13000
  var ObjProto = Object.prototype;
12303
13001
  var slice = ArrayProto.slice;
12304
13002
  var toString = ObjProto.toString;
12305
- var hasOwnProperty = ObjProto.hasOwnProperty;
13003
+ var hasOwnProperty$1 = ObjProto.hasOwnProperty;
12306
13004
  var windowConsole = window$1.console;
12307
13005
  var navigator = window$1.navigator;
12308
13006
  var document$1 = window$1.document;
@@ -12439,7 +13137,7 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
12439
13137
  }
12440
13138
  } else {
12441
13139
  for (var key in obj) {
12442
- if (hasOwnProperty.call(obj, key)) {
13140
+ if (hasOwnProperty$1.call(obj, key)) {
12443
13141
  if (iterator.call(context, obj[key], key, obj) === breaker) {
12444
13142
  return;
12445
13143
  }
@@ -12475,7 +13173,7 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
12475
13173
  };
12476
13174
 
12477
13175
  _.isArguments = function(obj) {
12478
- return !!(obj && hasOwnProperty.call(obj, 'callee'));
13176
+ return !!(obj && hasOwnProperty$1.call(obj, 'callee'));
12479
13177
  };
12480
13178
 
12481
13179
  _.toArray = function(iterable) {
@@ -12563,7 +13261,7 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
12563
13261
  _.isEmptyObject = function(obj) {
12564
13262
  if (_.isObject(obj)) {
12565
13263
  for (var key in obj) {
12566
- if (hasOwnProperty.call(obj, key)) {
13264
+ if (hasOwnProperty$1.call(obj, key)) {
12567
13265
  return false;
12568
13266
  }
12569
13267
  }
@@ -12755,7 +13453,7 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
12755
13453
 
12756
13454
  // Iterate through all of the keys in the object.
12757
13455
  for (k in value) {
12758
- if (hasOwnProperty.call(value, k)) {
13456
+ if (hasOwnProperty$1.call(value, k)) {
12759
13457
  v = str(k, value);
12760
13458
  if (v) {
12761
13459
  partial.push(quote(k) + (gap ? ': ' : ':') + v);
@@ -18421,7 +19119,12 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
18421
19119
  VISUAL_SDK_RENDER_FAILED: 'visual-sdk-render-failed',
18422
19120
  VISUAL_SDK_TRIGGER: 'visual-sdk-trigger',
18423
19121
  VISUAL_SDK_ON: 'visual-sdk-on',
18424
- VISUAL_SDK_EMBED_CREATE: 'visual-sdk-embed-create'};
19122
+ VISUAL_SDK_EMBED_CREATE: 'visual-sdk-embed-create',
19123
+ VISUAL_SDK_RENDER_CALLED: 'visual-sdk-render-called',
19124
+ VISUAL_SDK_PRE_RENDER: 'visual-sdk-pre-render',
19125
+ VISUAL_SDK_SHOW_PRE_RENDER: 'visual-sdk-show-pre-render',
19126
+ VISUAL_SDK_HIDE_PRE_RENDER: 'visual-sdk-hide-pre-render',
19127
+ };
18425
19128
  let isMixpanelInitialized = false;
18426
19129
  let eventQueue = [];
18427
19130
  /**
@@ -19796,7 +20499,7 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
19796
20499
  /**
19797
20500
  * Initializes the Visual Embed SDK globally and perform
19798
20501
  * authentication if applicable. This function needs to be called before any ThoughtSpot
19799
- * component like Liveboard etc can be embedded. But need not wait for AuthEvent.SUCCESS
20502
+ * component like Liveboard etc can be embedded. But need not wait for AuthStatus.SUCCESS
19800
20503
  * to actually embed. That is handled internally.
19801
20504
  * @param embedConfig The configuration object containing ThoughtSpot host,
19802
20505
  * authentication mechanism and so on.
@@ -19994,6 +20697,154 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
19994
20697
  return eventData;
19995
20698
  }
19996
20699
 
20700
+ /**
20701
+ * Checks if `value` is `null` or `undefined`.
20702
+ *
20703
+ * @static
20704
+ * @memberOf _
20705
+ * @since 4.0.0
20706
+ * @category Lang
20707
+ * @param {*} value The value to check.
20708
+ * @returns {boolean} Returns `true` if `value` is nullish, else `false`.
20709
+ * @example
20710
+ *
20711
+ * _.isNil(null);
20712
+ * // => true
20713
+ *
20714
+ * _.isNil(void 0);
20715
+ * // => true
20716
+ *
20717
+ * _.isNil(NaN);
20718
+ * // => false
20719
+ */
20720
+ function isNil(value) {
20721
+ return value == null;
20722
+ }
20723
+
20724
+ var isNil_1 = isNil;
20725
+
20726
+ /** Built-in value references. */
20727
+ var getPrototype = _overArg(Object.getPrototypeOf, Object);
20728
+
20729
+ var _getPrototype = getPrototype;
20730
+
20731
+ /** `Object#toString` result references. */
20732
+ var objectTag = '[object Object]';
20733
+
20734
+ /** Used for built-in method references. */
20735
+ var funcProto = Function.prototype,
20736
+ objectProto = Object.prototype;
20737
+
20738
+ /** Used to resolve the decompiled source of functions. */
20739
+ var funcToString = funcProto.toString;
20740
+
20741
+ /** Used to check objects for own properties. */
20742
+ var hasOwnProperty = objectProto.hasOwnProperty;
20743
+
20744
+ /** Used to infer the `Object` constructor. */
20745
+ var objectCtorString = funcToString.call(Object);
20746
+
20747
+ /**
20748
+ * Checks if `value` is a plain object, that is, an object created by the
20749
+ * `Object` constructor or one with a `[[Prototype]]` of `null`.
20750
+ *
20751
+ * @static
20752
+ * @memberOf _
20753
+ * @since 0.8.0
20754
+ * @category Lang
20755
+ * @param {*} value The value to check.
20756
+ * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
20757
+ * @example
20758
+ *
20759
+ * function Foo() {
20760
+ * this.a = 1;
20761
+ * }
20762
+ *
20763
+ * _.isPlainObject(new Foo);
20764
+ * // => false
20765
+ *
20766
+ * _.isPlainObject([1, 2, 3]);
20767
+ * // => false
20768
+ *
20769
+ * _.isPlainObject({ 'x': 0, 'y': 0 });
20770
+ * // => true
20771
+ *
20772
+ * _.isPlainObject(Object.create(null));
20773
+ * // => true
20774
+ */
20775
+ function isPlainObject(value) {
20776
+ if (!isObjectLike_1(value) || _baseGetTag(value) != objectTag) {
20777
+ return false;
20778
+ }
20779
+ var proto = _getPrototype(value);
20780
+ if (proto === null) {
20781
+ return true;
20782
+ }
20783
+ var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;
20784
+ return typeof Ctor == 'function' && Ctor instanceof Ctor &&
20785
+ funcToString.call(Ctor) == objectCtorString;
20786
+ }
20787
+
20788
+ var isPlainObject_1 = isPlainObject;
20789
+
20790
+ /** `Object#toString` result references. */
20791
+ var stringTag = '[object String]';
20792
+
20793
+ /**
20794
+ * Checks if `value` is classified as a `String` primitive or object.
20795
+ *
20796
+ * @static
20797
+ * @since 0.1.0
20798
+ * @memberOf _
20799
+ * @category Lang
20800
+ * @param {*} value The value to check.
20801
+ * @returns {boolean} Returns `true` if `value` is a string, else `false`.
20802
+ * @example
20803
+ *
20804
+ * _.isString('abc');
20805
+ * // => true
20806
+ *
20807
+ * _.isString(1);
20808
+ * // => false
20809
+ */
20810
+ function isString(value) {
20811
+ return typeof value == 'string' ||
20812
+ (!isArray_1(value) && isObjectLike_1(value) && _baseGetTag(value) == stringTag);
20813
+ }
20814
+
20815
+ var isString_1 = isString;
20816
+
20817
+ /**
20818
+ * Checks if `value` is `undefined`.
20819
+ *
20820
+ * @static
20821
+ * @since 0.1.0
20822
+ * @memberOf _
20823
+ * @category Lang
20824
+ * @param {*} value The value to check.
20825
+ * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.
20826
+ * @example
20827
+ *
20828
+ * _.isUndefined(void 0);
20829
+ * // => true
20830
+ *
20831
+ * _.isUndefined(null);
20832
+ * // => false
20833
+ */
20834
+ function isUndefined(value) {
20835
+ return value === undefined;
20836
+ }
20837
+
20838
+ var isUndefined_1 = isUndefined;
20839
+
20840
+ const isValidApplicability = (a) => {
20841
+ if (isUndefined_1(a))
20842
+ return true;
20843
+ // targetId is not required at LIVEBOARD level, since the filter applies to the whole Liveboard
20844
+ return isPlainObject_1(a)
20845
+ && Object.values(ApplicabilityLevel).includes(a.level)
20846
+ && (a.level === ApplicabilityLevel.Liveboard || (isString_1(a.targetId) && a.targetId.trim().length > 0));
20847
+ };
19997
20848
  function isValidUpdateFiltersPayload(payload) {
19998
20849
  if (!payload)
19999
20850
  return false;
@@ -20002,12 +20853,23 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
20002
20853
  const hasOperator = typeof f.oper === 'string' || typeof f.operator === 'string';
20003
20854
  const hasValues = Array.isArray(f.values);
20004
20855
  const validType = !f.type || typeof f.type === 'string';
20005
- return hasColumn && hasOperator && hasValues && validType;
20856
+ return hasColumn && hasOperator && hasValues && validType && isValidApplicability(f.applicability);
20006
20857
  };
20007
20858
  const hasValidFilter = payload.filter && isValidFilter(payload.filter);
20008
20859
  const hasValidFilters = Array.isArray(payload.filters) && payload.filters.length > 0 && payload.filters.every(isValidFilter);
20009
20860
  return !!(hasValidFilter || hasValidFilters);
20010
20861
  }
20862
+ function isValidUpdateParametersPayload(payload) {
20863
+ // Only validates the applicability of each parameter (null treated as absent); the rest is forwarded as-is for backward compatibility.
20864
+ if (!Array.isArray(payload))
20865
+ return true;
20866
+ return payload.every((p) => {
20867
+ if (!isPlainObject_1(p))
20868
+ return true;
20869
+ const { applicability } = p;
20870
+ return isNil_1(applicability) || isValidApplicability(applicability);
20871
+ });
20872
+ }
20011
20873
  function isValidDrillDownPayload(payload) {
20012
20874
  if (!payload)
20013
20875
  return false;
@@ -20038,6 +20900,9 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
20038
20900
  }
20039
20901
  function throwDrillDownValidationError() {
20040
20902
  createValidationError(ERROR_MESSAGE.DRILLDOWN_INVALID_PAYLOAD);
20903
+ }
20904
+ function throwUpdateParametersValidationError() {
20905
+ createValidationError(ERROR_MESSAGE.UPDATEPARAMETERS_INVALID_PAYLOAD);
20041
20906
  }
20042
20907
 
20043
20908
  /**
@@ -20058,6 +20923,7 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
20058
20923
  [exports.HostEvent.GetParameters]: UIPassthroughEvent.GetParameters,
20059
20924
  [exports.HostEvent.GetTML]: UIPassthroughEvent.GetTML,
20060
20925
  [exports.HostEvent.GetTabs]: UIPassthroughEvent.GetTabs,
20926
+ [exports.HostEvent.GetGroups]: UIPassthroughEvent.GetGroups,
20061
20927
  [exports.HostEvent.getExportRequestForCurrentPinboard]: UIPassthroughEvent.GetExportRequestForCurrentPinboard,
20062
20928
  };
20063
20929
  class HostEventClient {
@@ -20069,6 +20935,7 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
20069
20935
  [exports.HostEvent.Pin]: (p, c) => this.handlePinEvent(p, c),
20070
20936
  [exports.HostEvent.SaveAnswer]: (p, c) => this.handleSaveAnswerEvent(p, c),
20071
20937
  [exports.HostEvent.UpdateFilters]: (p, c) => this.handleUpdateFiltersEvent(p, c),
20938
+ [exports.HostEvent.UpdateParameters]: (p, c) => this.handleUpdateParametersEvent(p, c),
20072
20939
  [exports.HostEvent.DrillDown]: (p, c) => this.handleDrillDownEvent(p, c),
20073
20940
  };
20074
20941
  }
@@ -20193,6 +21060,13 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
20193
21060
  }
20194
21061
  return this.handleHostEventWithParam(UIPassthroughEvent.UpdateFilters, payload, context);
20195
21062
  }
21063
+ handleUpdateParametersEvent(payload, context) {
21064
+ if (!isValidUpdateParametersPayload(payload)) {
21065
+ throwUpdateParametersValidationError();
21066
+ }
21067
+ // UpdateParameters has no UI passthrough contract; dispatch over the legacy channel
21068
+ return this.hostEventFallback(exports.HostEvent.UpdateParameters, payload, context);
21069
+ }
20196
21070
  handleDrillDownEvent(payload, context) {
20197
21071
  if (!isValidDrillDownPayload(payload)) {
20198
21072
  throwDrillDownValidationError();
@@ -20452,7 +21326,7 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
20452
21326
  */
20453
21327
  this.shouldEncodeUrlQueryParams = false;
20454
21328
  this.defaultHiddenActions = [exports.Action.ReportError];
20455
- this.preRenderContainerEl = null;
21329
+ this.preRenderContainerEl = document.body;
20456
21330
  this.containerScrollListener = null;
20457
21331
  /**
20458
21332
  * Handler for fullscreen change events
@@ -20978,7 +21852,7 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
20978
21852
  if (this.embedConfig.currencyFormat) {
20979
21853
  queryParams[Param.CurrencyFormat] = this.embedConfig.currencyFormat;
20980
21854
  }
20981
- const { disabledActions, disabledActionReason, hiddenActions, visibleActions, hiddenTabs, visibleTabs, showAlerts, additionalFlags: additionalFlagsFromView, locale, customizations, contextMenuTrigger, linkOverride, enableLinkOverridesV2, insertInToSlide, disableRedirectionLinksInNewTab, overrideOrgId, exposeTranslationIDs, primaryAction, } = this.viewConfig;
21855
+ const { disabledActions, disabledActionReason, hiddenActions, visibleActions, hiddenTabs, visibleTabs, showAlerts, additionalFlags: additionalFlagsFromView, locale, customizations, contextMenuTrigger, linkOverride, enableLinkOverridesV2, insertInToSlide, disableRedirectionLinksInNewTab, overrideOrgId, overrideHistoryState, exposeTranslationIDs, primaryAction, } = this.viewConfig;
20982
21856
  const { additionalFlags: additionalFlagsFromInit } = this.embedConfig;
20983
21857
  const additionalFlags = {
20984
21858
  ...additionalFlagsFromInit,
@@ -21066,6 +21940,9 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
21066
21940
  if (overrideOrgId !== undefined) {
21067
21941
  queryParams[Param.OverrideOrgId] = overrideOrgId;
21068
21942
  }
21943
+ if (overrideHistoryState !== undefined) {
21944
+ queryParams[Param.OverrideHistoryState] = overrideHistoryState;
21945
+ }
21069
21946
  if (this.isPreAuthCacheEnabled()) {
21070
21947
  queryParams[Param.preAuthCache] = true;
21071
21948
  }
@@ -21137,11 +22014,27 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
21137
22014
  iFrame.name = 'ThoughtSpot Embedded Analytics';
21138
22015
  return iFrame;
21139
22016
  }
22017
+ /**
22018
+ * Returns a merged {@link PreRenderConfig} object where each shared key
22019
+ * prefers `preRenderConfig.key` over the top-level `viewConfig.key` for
22020
+ * backward compatibility.
22021
+ */
22022
+ getPreRenderConfig() {
22023
+ var _a, _b, _c, _d;
22024
+ const viewCfg = this.viewConfig;
22025
+ const preRenderCfg = (_a = viewCfg.preRenderConfig) !== null && _a !== void 0 ? _a : {};
22026
+ return {
22027
+ ...preRenderCfg,
22028
+ preRenderId: (_b = preRenderCfg.preRenderId) !== null && _b !== void 0 ? _b : viewCfg.preRenderId,
22029
+ preRenderContainer: (_c = preRenderCfg.preRenderContainer) !== null && _c !== void 0 ? _c : viewCfg.preRenderContainer,
22030
+ doNotTrackPreRenderSize: (_d = preRenderCfg.doNotTrackPreRenderSize) !== null && _d !== void 0 ? _d : viewCfg.doNotTrackPreRenderSize,
22031
+ };
22032
+ }
21140
22033
  /**
21141
22034
  * Returns true if this embed instance is configured for pre-rendering.
21142
22035
  */
21143
22036
  isPreRenderEmbed() {
21144
- return !!this.viewConfig.preRenderId;
22037
+ return !!this.getPreRenderConfig().preRenderId;
21145
22038
  }
21146
22039
  handleInsertionIntoDOM(child) {
21147
22040
  if (this.isPreRenderEmbed()) {
@@ -21277,6 +22170,7 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
21277
22170
  this.setIframeElement(this.preRenderChild);
21278
22171
  }
21279
22172
  this.isRendered = true;
22173
+ this.inheritPreRenderContainer();
21280
22174
  }
21281
22175
  return this.isPreRenderConnected();
21282
22176
  }
@@ -21327,7 +22221,7 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
21327
22221
  */
21328
22222
  resolvePreRenderContainerTarget() {
21329
22223
  var _a;
21330
- const containerConfig = this.viewConfig.preRenderContainer;
22224
+ const containerConfig = this.getPreRenderConfig().preRenderContainer;
21331
22225
  let container = null;
21332
22226
  if (typeof containerConfig === 'string') {
21333
22227
  try {
@@ -21345,15 +22239,35 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
21345
22239
  }
21346
22240
  return (_a = container) !== null && _a !== void 0 ? _a : document.body;
21347
22241
  }
22242
+ inheritPreRenderContainer() {
22243
+ var _a;
22244
+ const preRenderedObject = this.getPreRenderObj();
22245
+ if (!preRenderedObject || preRenderedObject === this) {
22246
+ return;
22247
+ }
22248
+ const ownerContainer = (_a = preRenderedObject.preRenderContainerEl) !== null && _a !== void 0 ? _a : document.body;
22249
+ if (this.getPreRenderConfig().preRenderContainer
22250
+ && this.resolvePreRenderContainerTarget() !== ownerContainer) {
22251
+ logger$3.warn('preRenderContainer is applied only by the component that creates the preRender; '
22252
+ + 'the one passed here is ignored. Set it on the PreRender component instead.');
22253
+ }
22254
+ this.preRenderContainerEl = ownerContainer;
22255
+ this.applyPreRenderContainerPositioning();
22256
+ }
22257
+ getCustomPreRenderContainer() {
22258
+ const container = this.preRenderContainerEl;
22259
+ return container && container !== document.body ? container : null;
22260
+ }
21348
22261
  /**
21349
- * Makes the container a positioning context for the absolutely positioned
21350
- * wrapper, stashing the original inline `position` on the element (once) so
21351
- * destroy() can restore it exactly, leaving no trace. Recording it on the
21352
- * element rather than per-instance lets the override be reverted even when
21353
- * embeds share the same container.
22262
+ * Makes the resolved container a positioning context for the absolutely
22263
+ * positioned wrapper, stashing the original inline `position` on the element
22264
+ * (once) so destroy() can restore it exactly, leaving no trace. Recording it
22265
+ * on the element rather than per-instance lets the override be reverted even
22266
+ * when embeds share the same container.
21354
22267
  */
21355
- applyPreRenderContainerPositioning(container) {
21356
- if (container === document.body) {
22268
+ applyPreRenderContainerPositioning() {
22269
+ const container = this.getCustomPreRenderContainer();
22270
+ if (!container) {
21357
22271
  return;
21358
22272
  }
21359
22273
  const pos = window.getComputedStyle(container).position;
@@ -21396,11 +22310,11 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
21396
22310
  resolved.addEventListener('scroll', this.containerScrollListener);
21397
22311
  }
21398
22312
  }
21399
- this.applyPreRenderContainerPositioning(resolved);
22313
+ this.preRenderContainerEl = resolved;
22314
+ this.applyPreRenderContainerPositioning();
21400
22315
  if (wrapper.parentNode !== resolved) {
21401
22316
  resolved.appendChild(wrapper);
21402
22317
  }
21403
- this.preRenderContainerEl = resolved;
21404
22318
  }
21405
22319
  insertIntoDOMForPreRender(child) {
21406
22320
  const preRenderChild = this.createPreRenderChild(child);
@@ -21423,7 +22337,7 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
21423
22337
  }
21424
22338
  const targetContainer = this.resolvePreRenderContainerTarget();
21425
22339
  this.preRenderContainerEl = targetContainer;
21426
- this.applyPreRenderContainerPositioning(targetContainer);
22340
+ this.applyPreRenderContainerPositioning();
21427
22341
  targetContainer.appendChild(preRenderWrapper);
21428
22342
  }
21429
22343
  insertIntoDOM(child) {
@@ -21751,6 +22665,9 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
21751
22665
  * @param args
21752
22666
  */
21753
22667
  async render() {
22668
+ uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_RENDER_CALLED, {
22669
+ embedComponentType: this.viewConfig.embedComponentType,
22670
+ });
21754
22671
  if (!getIsInitCalled()) {
21755
22672
  logger$3.error(ERROR_MESSAGE.RENDER_CALLED_BEFORE_INIT);
21756
22673
  }
@@ -21822,7 +22739,11 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
21822
22739
  * @param showPreRenderByDefault - Show the preRender after render, hidden by default
21823
22740
  */
21824
22741
  async preRender(showPreRenderByDefault = false, replaceExistingPreRender = false) {
21825
- if (!this.viewConfig.preRenderId) {
22742
+ uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_PRE_RENDER, {
22743
+ showPreRenderByDefault,
22744
+ replaceExistingPreRender,
22745
+ });
22746
+ if (!this.getPreRenderConfig().preRenderId) {
21826
22747
  logger$3.error(ERROR_MESSAGE.PRERENDER_ID_MISSING);
21827
22748
  return this;
21828
22749
  }
@@ -21878,7 +22799,7 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
21878
22799
  }
21879
22800
  // Drop our reference up front so a destroyed embed never pins a
21880
22801
  // detached container in memory; restoration uses the local handle.
21881
- this.preRenderContainerEl = null;
22802
+ this.preRenderContainerEl = document.body;
21882
22803
  const originalPosition = container.dataset[PRERENDER_CONTAINER_ORIGINAL_POSITION_KEY];
21883
22804
  if (originalPosition === undefined) {
21884
22805
  // We never overrode this container's position; nothing to restore.
@@ -21901,9 +22822,7 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
21901
22822
  if (!this.containerScrollListener) {
21902
22823
  return;
21903
22824
  }
21904
- const customContainer = this.preRenderContainerEl && this.preRenderContainerEl !== document.body
21905
- ? this.preRenderContainerEl
21906
- : null;
22825
+ const customContainer = this.getCustomPreRenderContainer();
21907
22826
  customContainer === null || customContainer === void 0 ? void 0 : customContainer.removeEventListener('scroll', this.containerScrollListener);
21908
22827
  this.containerScrollListener = null;
21909
22828
  }
@@ -21998,10 +22917,14 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
21998
22917
  * wrapper to overlay it.
21999
22918
  */
22000
22919
  async showPreRender() {
22001
- var _a;
22920
+ var _a, _b;
22921
+ uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_SHOW_PRE_RENDER, {
22922
+ preRenderId: this.getPreRenderConfig().preRenderId,
22923
+ embedComponentType: this.viewConfig.embedComponentType,
22924
+ });
22002
22925
  if (this.shouldWaitForRenderPromise)
22003
22926
  await this.isReadyForRenderPromise;
22004
- if (!this.viewConfig.preRenderId) {
22927
+ if (!this.getPreRenderConfig().preRenderId) {
22005
22928
  logger$3.error(ERROR_MESSAGE.PRERENDER_ID_MISSING);
22006
22929
  return this;
22007
22930
  }
@@ -22022,21 +22945,23 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
22022
22945
  }
22023
22946
  }
22024
22947
  const placeHolderId = this.getPreRenderIds().placeHolder;
22025
- const oldEle = this.hostElement.querySelector(`#${placeHolderId}`);
22026
- if (oldEle) {
22027
- this.hostElement.removeChild(oldEle);
22028
- }
22948
+ // Remove any stale placeholder from a previous cycle. It is located
22949
+ // via a subtree-wide querySelector, so it may be nested deeper than a
22950
+ // direct child (E.g.: with fullHeight the host app can wrap it). Use
22951
+ // Element.remove() — which detaches from whatever the real parent is —
22952
+ // rather than hostElement.removeChild(), which throws NotFoundError
22953
+ // when the match is not a direct child. Mirrors the wrapper/child
22954
+ // cleanup in createPreRenderWrapper()/createPreRenderChild().
22955
+ (_a = this.hostElement.querySelector(`#${placeHolderId}`)) === null || _a === void 0 ? void 0 : _a.remove();
22029
22956
  this.hostElement.appendChild(this.insertedDomEl);
22030
22957
  this.syncPreRenderStyle();
22031
- const customContainer = this.preRenderContainerEl && this.preRenderContainerEl !== document.body
22032
- ? this.preRenderContainerEl
22033
- : null;
22958
+ const customContainer = this.getCustomPreRenderContainer();
22034
22959
  if (customContainer && !this.containerScrollListener) {
22035
22960
  this.containerScrollListener = () => this.syncPreRenderStyle();
22036
22961
  customContainer.addEventListener('scroll', this.containerScrollListener);
22037
22962
  }
22038
- if (!this.viewConfig.doNotTrackPreRenderSize) {
22039
- const observeTarget = (_a = this.insertedDomEl) !== null && _a !== void 0 ? _a : this.hostElement;
22963
+ if (!this.getPreRenderConfig().doNotTrackPreRenderSize) {
22964
+ const observeTarget = (_b = this.insertedDomEl) !== null && _b !== void 0 ? _b : this.hostElement;
22040
22965
  this.resizeObserver = new ResizeObserver((entries) => {
22041
22966
  entries.forEach((entry) => {
22042
22967
  if (entry.target === observeTarget) {
@@ -22077,13 +23002,15 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
22077
23002
  logger$3.error(ERROR_MESSAGE.SYNC_STYLE_CALLED_BEFORE_RENDER);
22078
23003
  return;
22079
23004
  }
23005
+ if (!this.getPreRenderPlaceHolderElement().isConnected) {
23006
+ logger$3.debug('syncPreRenderStyle skipped: placeholder is detached');
23007
+ return;
23008
+ }
22080
23009
  // Self-heal if the resolved container was remounted/detached, so we
22081
23010
  // never measure a stale node (which would collapse the wrapper).
22082
23011
  this.reconcilePreRenderContainer();
22083
23012
  const elBoundingClient = this.getPreRenderPlaceHolderElement().getBoundingClientRect();
22084
- const containerEl = this.preRenderContainerEl && this.preRenderContainerEl !== document.body
22085
- ? this.preRenderContainerEl
22086
- : null;
23013
+ const containerEl = this.getCustomPreRenderContainer();
22087
23014
  const containerRect = (_a = containerEl === null || containerEl === void 0 ? void 0 : containerEl.getBoundingClientRect()) !== null && _a !== void 0 ? _a : { x: 0, y: 0 };
22088
23015
  const scrollX = containerEl ? containerEl.scrollLeft : window.scrollX;
22089
23016
  const scrollY = containerEl ? containerEl.scrollTop : window.scrollY;
@@ -22100,16 +23027,21 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
22100
23027
  * If the component is not preRendered, it issues a warning.
22101
23028
  */
22102
23029
  hidePreRender() {
23030
+ uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_HIDE_PRE_RENDER, {
23031
+ preRenderId: this.getPreRenderConfig().preRenderId,
23032
+ embedComponentType: this.viewConfig.embedComponentType,
23033
+ });
22103
23034
  logger$3.debug('HidePreRender Called');
22104
23035
  if (!this.isPreRenderConnected()) {
22105
23036
  // if the embed component is not preRendered , nothing to hide
22106
23037
  logger$3.warn('PreRender should be called before hiding it using hidePreRender.');
22107
23038
  return;
22108
23039
  }
23040
+ const { zIndex } = this.getPreRenderConfig();
22109
23041
  const preRenderHideStyles = {
22110
23042
  opacity: '0',
22111
23043
  pointerEvents: 'none',
22112
- zIndex: '-1000',
23044
+ zIndex: zIndex !== undefined ? String(zIndex) : '-1000',
22113
23045
  position: 'absolute',
22114
23046
  top: '0',
22115
23047
  left: '0',
@@ -22134,10 +23066,11 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
22134
23066
  * @property {string} child - The HTML element ID for the PreRender child.
22135
23067
  */
22136
23068
  getPreRenderIds() {
23069
+ const preRenderId = this.getPreRenderConfig().preRenderId;
22137
23070
  return {
22138
- wrapper: `${PRERENDER_WRAPPER_ID_PREFIX}${this.viewConfig.preRenderId}`,
22139
- child: `tsEmbed-pre-render-child-${this.viewConfig.preRenderId}`,
22140
- placeHolder: `tsEmbed-pre-render-placeholder-${this.viewConfig.preRenderId}`,
23071
+ wrapper: `${PRERENDER_WRAPPER_ID_PREFIX}${preRenderId}`,
23072
+ child: `tsEmbed-pre-render-child-${preRenderId}`,
23073
+ placeHolder: `tsEmbed-pre-render-placeholder-${preRenderId}`,
22141
23074
  };
22142
23075
  }
22143
23076
  /**
@@ -22579,6 +23512,31 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
22579
23512
  ...(visualOverrides !== undefined ? { visualOverridesParams: visualOverrides } : {}),
22580
23513
  },
22581
23514
  };
23515
+ }
23516
+ function buildSpotterShareConversationAppInitData(initData, viewConfig) {
23517
+ const { spotterShareConversationConfig } = viewConfig;
23518
+ if (!spotterShareConversationConfig)
23519
+ return initData;
23520
+ return {
23521
+ ...initData,
23522
+ embedParams: {
23523
+ ...(initData.embedParams || {}),
23524
+ spotterShareConversationConfig,
23525
+ },
23526
+ };
23527
+ }
23528
+ function buildStarterPromptsAppInitData(initData, viewConfig) {
23529
+ var _a;
23530
+ const starterPrompts = (_a = viewConfig.spotterChatConfig) === null || _a === void 0 ? void 0 : _a.starterPrompts;
23531
+ if (!starterPrompts)
23532
+ return initData;
23533
+ return {
23534
+ ...initData,
23535
+ embedParams: {
23536
+ ...(initData.embedParams || {}),
23537
+ starterPrompts,
23538
+ },
23539
+ };
22582
23540
  }
22583
23541
 
22584
23542
  function buildSpotterVizAppInitData(initData, viewConfig) {
@@ -22640,6 +23598,14 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
22640
23598
  * Monitor Alerts Page
22641
23599
  */
22642
23600
  Page["Monitor"] = "monitor";
23601
+ /**
23602
+ * Collections listing page
23603
+ */
23604
+ Page["Collections"] = "collections";
23605
+ /**
23606
+ * Liveboard schedules listing page
23607
+ */
23608
+ Page["LiveboardSchedules"] = "liveboard-schedules";
22643
23609
  })(exports.Page || (exports.Page = {}));
22644
23610
  /**
22645
23611
  * Define the initial state of column custom group accordions
@@ -22688,6 +23654,9 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
22688
23654
  /**
22689
23655
  * Modular (v2) introduces the updated Modular Home Experience.
22690
23656
  * It serves as the foundational version of the home page.
23657
+ * Use {@link HomePage.ModularWithStylingChanges} (V3) or
23658
+ * {@link HomePage.Focused} (V4) instead.
23659
+ * @deprecated V1 and V2 home page experiences are deprecated.
22691
23660
  */
22692
23661
  HomePage["Modular"] = "v2";
22693
23662
  /**
@@ -22782,6 +23751,15 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
22782
23751
  this.setIFrameHeight(frameHeight || this.defaultHeight);
22783
23752
  };
22784
23753
  if (this.viewConfig.fullHeight === true) {
23754
+ if (this.viewConfig.lazyLoadingForFullHeight === undefined) {
23755
+ this.viewConfig.lazyLoadingForFullHeight = true;
23756
+ }
23757
+ if (this.viewConfig.enableScrollableContainerLazyLoading === undefined) {
23758
+ this.viewConfig.enableScrollableContainerLazyLoading = true;
23759
+ }
23760
+ if (this.viewConfig.lazyLoadingMargin === undefined) {
23761
+ this.viewConfig.lazyLoadingMargin = DEFAULT_LAZY_LOADING_MARGIN;
23762
+ }
22785
23763
  this.on(exports.EmbedEvent.RouteChange, this.setIframeHeightForNonEmbedLiveboard);
22786
23764
  this.on(exports.EmbedEvent.EmbedHeight, this.updateIFrameHeight);
22787
23765
  this.on(exports.EmbedEvent.EmbedIframeCenter, this.embedIframeCenter);
@@ -22803,14 +23781,20 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
22803
23781
  async getAppInitData() {
22804
23782
  const defaultAppInitData = await super.getAppInitData();
22805
23783
  const sidebarInitData = buildSpotterSidebarAppInitData(defaultAppInitData, this.viewConfig, this.handleError.bind(this));
22806
- return buildSpotterVizAppInitData(sidebarInitData, this.viewConfig);
23784
+ const vizInitData = buildSpotterVizAppInitData(sidebarInitData, this.viewConfig);
23785
+ const shareInitData = buildSpotterShareConversationAppInitData(vizInitData, this.viewConfig);
23786
+ return buildStarterPromptsAppInitData(shareInitData, this.viewConfig);
22807
23787
  }
22808
23788
  /**
22809
23789
  * Constructs a map of parameters to be passed on to the
22810
23790
  * embedded Liveboard or visualization.
22811
23791
  */
22812
23792
  getEmbedParams() {
22813
- 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;
23793
+ const params = this.getEmbedParamsObject();
23794
+ return getQueryParamString(params, true);
23795
+ }
23796
+ getEmbedParamsObject() {
23797
+ 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;
22814
23798
  let params = {};
22815
23799
  params[Param.PrimaryNavHidden] = !showPrimaryNavbar;
22816
23800
  params[Param.HideProfleAndHelp] = !!disableProfileAndHelp;
@@ -22820,31 +23804,51 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
22820
23804
  params[Param.ShowLiveboardTitle] = showLiveboardTitle;
22821
23805
  params[Param.ShowLiveboardDescription] = !!showLiveboardDescription;
22822
23806
  params[Param.ShowMaskedFilterChip] = showMaskedFilterChip;
22823
- params[Param.IsLiveboardMasterpiecesEnabled] = isLiveboardMasterpiecesEnabled;
23807
+ if (!isUndefined$1(isLiveboardMasterpiecesEnabled)) {
23808
+ params[Param.IsLiveboardMasterpiecesEnabled] = isLiveboardMasterpiecesEnabled;
23809
+ }
22824
23810
  if (newChartsLibrary !== undefined) {
22825
23811
  params[Param.EnableNewChartLibrary] = newChartsLibrary;
22826
23812
  }
22827
23813
  params[Param.LiveboardHeaderSticky] = isLiveboardHeaderSticky;
22828
23814
  params[Param.IsFullAppEmbed] = true;
22829
- params[Param.LiveboardHeaderV2] = isLiveboardCompactHeaderEnabled;
22830
- params[Param.IsEnhancedFilterInteractivityEnabled] = isEnhancedFilterInteractivityEnabled;
23815
+ if (!isUndefined$1(isLiveboardCompactHeaderEnabled)) {
23816
+ params[Param.LiveboardHeaderV2] = isLiveboardCompactHeaderEnabled;
23817
+ }
23818
+ if (!isUndefined$1(isEnhancedFilterInteractivityEnabled)) {
23819
+ params[Param.IsEnhancedFilterInteractivityEnabled] =
23820
+ isEnhancedFilterInteractivityEnabled;
23821
+ }
22831
23822
  params[Param.ShowLiveboardVerifiedBadge] = showLiveboardVerifiedBadge;
22832
23823
  params[Param.ShowLiveboardReverifyBanner] = showLiveboardReverifyBanner;
22833
- params[Param.HideIrrelevantFiltersInTab] = hideIrrelevantChipsInLiveboardTabs;
23824
+ if (!isUndefined$1(hideIrrelevantChipsInLiveboardTabs)) {
23825
+ params[Param.HideIrrelevantFiltersInTab] = hideIrrelevantChipsInLiveboardTabs;
23826
+ }
22834
23827
  if (isUnifiedSearchExperienceEnabled !== undefined) {
22835
23828
  params[Param.IsUnifiedSearchExperienceEnabled] = isUnifiedSearchExperienceEnabled;
22836
23829
  }
22837
- params[Param.CoverAndFilterOptionInPDF] = !!coverAndFilterOptionInPDF;
23830
+ if (!isUndefined$1(coverAndFilterOptionInPDF)) {
23831
+ params[Param.CoverAndFilterOptionInPDF] = !!coverAndFilterOptionInPDF;
23832
+ }
22838
23833
  params = this.getBaseQueryParams(params);
22839
- if (!isUndefined(updatedSpotterChatPrompt)) {
23834
+ if (!isUndefined$1(updatedSpotterChatPrompt)) {
22840
23835
  params[Param.UpdatedSpotterChatPrompt] = !!updatedSpotterChatPrompt;
22841
23836
  }
22842
- if (!isUndefined(enableStopAnswerGenerationEmbed)) {
23837
+ if (!isUndefined$1(showSpotterRadiance)) {
23838
+ params[Param.ShowSpotterRadiance] = !!showSpotterRadiance;
23839
+ }
23840
+ if (!isUndefined$1(defaultQueryMode)) {
23841
+ params[Param.DefaultQueryMode] = defaultQueryMode;
23842
+ }
23843
+ if (!isUndefined$1(enableStopAnswerGenerationEmbed)) {
22843
23844
  params[Param.EnableStopAnswerGenerationEmbed] = !!enableStopAnswerGenerationEmbed;
22844
23845
  }
23846
+ if (spotterDataSources && spotterDataSources.length) {
23847
+ params[Param.SpotterDataSources] = JSON.stringify(spotterDataSources);
23848
+ }
22845
23849
  // Handle spotterChatConfig params
22846
23850
  if (spotterChatConfig) {
22847
- const { hideToolResponseCardBranding, toolResponseCardBrandingLabel, spotterFileUploadEnabled, spotterFileUploadFileTypes, enableStarterPrompts, } = spotterChatConfig;
23851
+ const { hideToolResponseCardBranding, toolResponseCardBrandingLabel, spotterFileUploadEnabled, spotterFileUploadFileTypes, enableStarterPrompts, openSpotterOnLiveboardByDefault, } = spotterChatConfig;
22848
23852
  setParamIfDefined(params, Param.HideToolResponseCardBranding, hideToolResponseCardBranding, true);
22849
23853
  setParamIfDefined(params, Param.ToolResponseCardBrandingLabel, toolResponseCardBrandingLabel);
22850
23854
  if (spotterFileUploadEnabled !== undefined) {
@@ -22853,10 +23857,16 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
22853
23857
  if (enableStarterPrompts !== undefined) {
22854
23858
  params[Param.IsStarterPromptsEnabled] = enableStarterPrompts;
22855
23859
  }
23860
+ if (openSpotterOnLiveboardByDefault !== undefined) {
23861
+ params[Param.OpenSpotterOnLiveboardByDefault] = openSpotterOnLiveboardByDefault;
23862
+ }
22856
23863
  if (spotterFileUploadFileTypes !== undefined) {
22857
23864
  params[Param.SpotterFileUploadFileTypes] = JSON.stringify(spotterFileUploadFileTypes);
22858
23865
  }
22859
23866
  }
23867
+ if (!isUndefined$1(updatedSpotterExperience)) {
23868
+ params[Param.UpdatedSpotterExperience] = !!updatedSpotterExperience;
23869
+ }
22860
23870
  if (hideObjectSearch) {
22861
23871
  params[Param.HideObjectSearch] = !!hideObjectSearch;
22862
23872
  }
@@ -22893,6 +23903,9 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
22893
23903
  if (enable2ColumnLayout !== undefined) {
22894
23904
  params[Param.Enable2ColumnLayout] = enable2ColumnLayout;
22895
23905
  }
23906
+ if (isLiveboardAlwaysOn12ColLayout !== undefined) {
23907
+ params[Param.IsLiveboardAlwaysOn12ColLayout] = isLiveboardAlwaysOn12ColLayout;
23908
+ }
22896
23909
  if (enableAskSage) {
22897
23910
  params[Param.enableAskSage] = enableAskSage;
22898
23911
  }
@@ -22905,6 +23918,9 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
22905
23918
  if (isLiveboardStylingAndGroupingEnabled !== undefined) {
22906
23919
  params[Param.IsLiveboardStylingAndGroupingEnabled] = isLiveboardStylingAndGroupingEnabled;
22907
23920
  }
23921
+ if (liveboardGutter !== undefined) {
23922
+ params[Param.LiveboardGutter] = liveboardGutter;
23923
+ }
22908
23924
  if (isPNGInScheduledEmailsEnabled !== undefined) {
22909
23925
  params[Param.isPNGInScheduledEmailsEnabled] = isPNGInScheduledEmailsEnabled;
22910
23926
  }
@@ -22923,6 +23939,9 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
22923
23939
  if (isCentralizedLiveboardFilterUXEnabled != undefined) {
22924
23940
  params[Param.isCentralizedLiveboardFilterUXEnabled] = isCentralizedLiveboardFilterUXEnabled;
22925
23941
  }
23942
+ if (isScopedLiveboardFilteringEnabled !== undefined) {
23943
+ params[Param.isScopedLiveboardFilteringEnabled] = isScopedLiveboardFilteringEnabled;
23944
+ }
22926
23945
  if (isThisPeriodInDateFiltersEnabled !== undefined) {
22927
23946
  params[Param.IsThisPeriodInDateFiltersEnabled] = isThisPeriodInDateFiltersEnabled;
22928
23947
  }
@@ -22938,7 +23957,6 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
22938
23957
  }
22939
23958
  params[Param.DataPanelV2Enabled] = dataPanelV2;
22940
23959
  params[Param.HideHomepageLeftNav] = hideHomepageLeftNav;
22941
- params[Param.ModularHomeExperienceEnabled] = modularHomeExperience;
22942
23960
  params[Param.CollapseSearchBarInitially] = collapseSearchBarInitially || collapseSearchBar;
22943
23961
  params[Param.EnableCustomColumnGroups] = enableCustomColumnGroups;
22944
23962
  if (dataPanelCustomGroupsAccordionInitialState
@@ -22953,33 +23971,15 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
22953
23971
  if (modularHomeExperience !== undefined) {
22954
23972
  params[Param.ModularHomeExperienceEnabled] = modularHomeExperience;
22955
23973
  }
22956
- // Set navigation to v2 by default to avoid problems like the app
22957
- // switcher (9-dot menu) not showing when v3 navigation is turned on
22958
- // at the cluster level.
22959
- // To use v3 navigation, we must manually set the discoveryExperience
22960
- // settings.
22961
- params[Param.NavigationVersion] = 'v2';
22962
- // Set homePageVersion to v2 by default to reset the LD flag value
22963
- // for the homepageVersion.
22964
- params[Param.HomepageVersion] = 'v2';
23974
+ // Navigation V1/V2 and home page V1/V2 are deprecated. V3 is now the
23975
+ // default experience, Need to send navigationVersion=v3 and
23976
+ // homepageVersion=v3 even when the no discoveryExperience /
23977
+ // modularHomeExperience config is set. Without these
23978
+ // params, older TSA versions (< 26.7) fall back to V2 for nav and
23979
+ // home page, so the defaults must be sent explicitly from the SDK.
23980
+ params[Param.NavigationVersion] = PrimaryNavbarVersion.Sliding;
23981
+ params[Param.HomepageVersion] = HomePage.ModularWithStylingChanges;
22965
23982
  if (discoveryExperience) {
22966
- // primaryNavbarVersion v3 will enabled the new left navigation
22967
- if (discoveryExperience.primaryNavbarVersion === PrimaryNavbarVersion.Sliding) {
22968
- params[Param.NavigationVersion] = discoveryExperience.primaryNavbarVersion;
22969
- // Enable the modularHomeExperience when Sliding is enabled.
22970
- params[Param.ModularHomeExperienceEnabled] = true;
22971
- }
22972
- // homePage v2 will enable the modular home page
22973
- // and it will override the modularHomeExperience value
22974
- if (discoveryExperience.homePage === HomePage.Modular) {
22975
- params[Param.ModularHomeExperienceEnabled] = true;
22976
- }
22977
- // ModularWithStylingChanges (v3) introduces the styling changes
22978
- // to the Modular Homepage.
22979
- // v3 will be the base version of homePageVersion.
22980
- if (discoveryExperience.homePage === HomePage.ModularWithStylingChanges) {
22981
- params[Param.HomepageVersion] = HomePage.ModularWithStylingChanges;
22982
- }
22983
23983
  // listPageVersion can be changed to v2 or v3
22984
23984
  if (discoveryExperience.listPageVersion !== undefined) {
22985
23985
  params[Param.ListPageVersion] = discoveryExperience.listPageVersion;
@@ -22989,13 +23989,12 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
22989
23989
  // The Focused (V4) homepage experience requires the updated
22990
23990
  // Spotter chat prompt. Enable it automatically unless the
22991
23991
  // developer has explicitly set updatedSpotterChatPrompt.
22992
- if (isUndefined(updatedSpotterChatPrompt)) {
23992
+ if (isUndefined$1(updatedSpotterChatPrompt)) {
22993
23993
  params[Param.UpdatedSpotterChatPrompt] = true;
22994
23994
  }
22995
23995
  }
22996
23996
  }
22997
- const queryParams = getQueryParamString(params, true);
22998
- return queryParams;
23997
+ return params;
22999
23998
  }
23000
23999
  /**
23001
24000
  * Constructs the URL of the ThoughtSpot app page to be rendered.
@@ -23030,6 +24029,10 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
23030
24029
  return modularHomeExperience ? 'home/spotiq-analysis' : 'insights/results';
23031
24030
  case exports.Page.Monitor:
23032
24031
  return modularHomeExperience ? 'home/monitor-alerts' : 'insights/monitor-alerts';
24032
+ case exports.Page.Collections:
24033
+ return 'collections';
24034
+ case exports.Page.LiveboardSchedules:
24035
+ return 'home/liveboard-schedules';
23033
24036
  case exports.Page.Home:
23034
24037
  default:
23035
24038
  return 'home';
@@ -23062,11 +24065,13 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
23062
24065
  * @version SDK: 1.12.0 | ThoughtSpot: 8.4.0.cl, 8.4.1-sw
23063
24066
  */
23064
24067
  navigateToPage(path, noReload = false) {
24068
+ var _a;
23065
24069
  if (!this.iFrame) {
23066
24070
  logger$3.log('Please call render before invoking this method');
23067
24071
  return;
23068
24072
  }
23069
- if (noReload) {
24073
+ const overrideHistoryState = (_a = this.viewConfig) === null || _a === void 0 ? void 0 : _a.overrideHistoryState;
24074
+ if (noReload || overrideHistoryState) {
23070
24075
  this.trigger(exports.HostEvent.Navigate, path);
23071
24076
  }
23072
24077
  else {
@@ -23313,6 +24318,15 @@ query GetEurekaVizSnapshots(
23313
24318
  logger$3.warn('Full height is currently only supported for Liveboard embeds.' +
23314
24319
  'Using full height with vizId might lead to unexpected behavior.');
23315
24320
  }
24321
+ if (this.viewConfig.lazyLoadingForFullHeight === undefined) {
24322
+ this.viewConfig.lazyLoadingForFullHeight = true;
24323
+ }
24324
+ if (this.viewConfig.enableScrollableContainerLazyLoading === undefined) {
24325
+ this.viewConfig.enableScrollableContainerLazyLoading = true;
24326
+ }
24327
+ if (this.viewConfig.lazyLoadingMargin === undefined) {
24328
+ this.viewConfig.lazyLoadingMargin = DEFAULT_LAZY_LOADING_MARGIN;
24329
+ }
23316
24330
  this.on(exports.EmbedEvent.RouteChange, this.setIframeHeightForNonEmbedLiveboard);
23317
24331
  this.on(exports.EmbedEvent.EmbedHeight, this.updateIFrameHeight);
23318
24332
  this.on(exports.EmbedEvent.EmbedIframeCenter, this.embedIframeCenter);
@@ -23321,7 +24335,8 @@ query GetEurekaVizSnapshots(
23321
24335
  }
23322
24336
  async getAppInitData() {
23323
24337
  const defaultAppInitData = await super.getAppInitData();
23324
- return buildSpotterVizAppInitData(defaultAppInitData, this.viewConfig);
24338
+ const vizInitData = buildSpotterVizAppInitData(defaultAppInitData, this.viewConfig);
24339
+ return buildStarterPromptsAppInitData(vizInitData, this.viewConfig);
23325
24340
  }
23326
24341
  /**
23327
24342
  * Construct a map of params to be passed on to the
@@ -23335,7 +24350,7 @@ query GetEurekaVizSnapshots(
23335
24350
  getEmbedParamsObject() {
23336
24351
  let params = {};
23337
24352
  params = this.getBaseQueryParams(params);
23338
- 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;
24353
+ 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;
23339
24354
  const preventLiveboardFilterRemoval = this.viewConfig.preventLiveboardFilterRemoval
23340
24355
  || this.viewConfig.preventPinboardFilterRemoval;
23341
24356
  if (fullHeight === true) {
@@ -23354,10 +24369,13 @@ query GetEurekaVizSnapshots(
23354
24369
  if (preventLiveboardFilterRemoval) {
23355
24370
  params[Param.preventLiveboardFilterRemoval] = true;
23356
24371
  }
23357
- if (!isUndefined(updatedSpotterChatPrompt)) {
24372
+ if (!isUndefined$1(updatedSpotterChatPrompt)) {
23358
24373
  params[Param.UpdatedSpotterChatPrompt] = !!updatedSpotterChatPrompt;
23359
24374
  }
23360
- if (!isUndefined(enableStopAnswerGenerationEmbed)) {
24375
+ if (!isUndefined$1(showSpotterRadiance)) {
24376
+ params[Param.ShowSpotterRadiance] = !!showSpotterRadiance;
24377
+ }
24378
+ if (!isUndefined$1(enableStopAnswerGenerationEmbed)) {
23361
24379
  params[Param.EnableStopAnswerGenerationEmbed] = !!enableStopAnswerGenerationEmbed;
23362
24380
  }
23363
24381
  if (visibleVizs) {
@@ -23373,6 +24391,9 @@ query GetEurekaVizSnapshots(
23373
24391
  if (enable2ColumnLayout !== undefined) {
23374
24392
  params[Param.Enable2ColumnLayout] = enable2ColumnLayout;
23375
24393
  }
24394
+ if (isLiveboardAlwaysOn12ColLayout !== undefined) {
24395
+ params[Param.IsLiveboardAlwaysOn12ColLayout] = isLiveboardAlwaysOn12ColLayout;
24396
+ }
23376
24397
  if (hideTabPanel) {
23377
24398
  params[Param.HideTabPanel] = hideTabPanel;
23378
24399
  }
@@ -23400,6 +24421,9 @@ query GetEurekaVizSnapshots(
23400
24421
  if (isLiveboardStylingAndGroupingEnabled !== undefined) {
23401
24422
  params[Param.IsLiveboardStylingAndGroupingEnabled] = isLiveboardStylingAndGroupingEnabled;
23402
24423
  }
24424
+ if (liveboardGutter !== undefined) {
24425
+ params[Param.LiveboardGutter] = liveboardGutter;
24426
+ }
23403
24427
  if (isPNGInScheduledEmailsEnabled !== undefined) {
23404
24428
  params[Param.isPNGInScheduledEmailsEnabled] = isPNGInScheduledEmailsEnabled;
23405
24429
  }
@@ -23412,9 +24436,12 @@ query GetEurekaVizSnapshots(
23412
24436
  if (showSpotterLimitations !== undefined) {
23413
24437
  params[Param.ShowSpotterLimitations] = showSpotterLimitations;
23414
24438
  }
24439
+ if (!isUndefined$1(updatedSpotterExperience)) {
24440
+ params[Param.UpdatedSpotterExperience] = !!updatedSpotterExperience;
24441
+ }
23415
24442
  // Handle spotterChatConfig params
23416
24443
  if (spotterChatConfig) {
23417
- const { hideToolResponseCardBranding, toolResponseCardBrandingLabel, spotterFileUploadEnabled, spotterFileUploadFileTypes, enableStarterPrompts, } = spotterChatConfig;
24444
+ const { hideToolResponseCardBranding, toolResponseCardBrandingLabel, spotterFileUploadEnabled, spotterFileUploadFileTypes, enableStarterPrompts, openSpotterOnLiveboardByDefault, } = spotterChatConfig;
23418
24445
  setParamIfDefined(params, Param.HideToolResponseCardBranding, hideToolResponseCardBranding, true);
23419
24446
  setParamIfDefined(params, Param.ToolResponseCardBrandingLabel, toolResponseCardBrandingLabel);
23420
24447
  if (spotterFileUploadEnabled !== undefined) {
@@ -23423,6 +24450,9 @@ query GetEurekaVizSnapshots(
23423
24450
  if (enableStarterPrompts !== undefined) {
23424
24451
  params[Param.IsStarterPromptsEnabled] = enableStarterPrompts;
23425
24452
  }
24453
+ if (openSpotterOnLiveboardByDefault !== undefined) {
24454
+ params[Param.OpenSpotterOnLiveboardByDefault] = openSpotterOnLiveboardByDefault;
24455
+ }
23426
24456
  if (spotterFileUploadFileTypes !== undefined) {
23427
24457
  params[Param.SpotterFileUploadFileTypes] = JSON.stringify(spotterFileUploadFileTypes);
23428
24458
  }
@@ -23433,6 +24463,9 @@ query GetEurekaVizSnapshots(
23433
24463
  if (isCentralizedLiveboardFilterUXEnabled !== undefined) {
23434
24464
  params[Param.isCentralizedLiveboardFilterUXEnabled] = isCentralizedLiveboardFilterUXEnabled;
23435
24465
  }
24466
+ if (isScopedLiveboardFilteringEnabled !== undefined) {
24467
+ params[Param.isScopedLiveboardFilteringEnabled] = isScopedLiveboardFilteringEnabled;
24468
+ }
23436
24469
  if (isThisPeriodInDateFiltersEnabled !== undefined) {
23437
24470
  params[Param.IsThisPeriodInDateFiltersEnabled] = isThisPeriodInDateFiltersEnabled;
23438
24471
  }
@@ -23446,16 +24479,27 @@ query GetEurekaVizSnapshots(
23446
24479
  params[Param.EnableNewChartLibrary] = newChartsLibrary;
23447
24480
  }
23448
24481
  params[Param.LiveboardHeaderSticky] = isLiveboardHeaderSticky;
23449
- params[Param.LiveboardHeaderV2] = isLiveboardCompactHeaderEnabled;
24482
+ if (!isUndefined$1(isLiveboardCompactHeaderEnabled)) {
24483
+ params[Param.LiveboardHeaderV2] = isLiveboardCompactHeaderEnabled;
24484
+ }
23450
24485
  params[Param.ShowLiveboardVerifiedBadge] = showLiveboardVerifiedBadge;
23451
24486
  params[Param.ShowLiveboardReverifyBanner] = showLiveboardReverifyBanner;
23452
- params[Param.HideIrrelevantFiltersInTab] = hideIrrelevantChipsInLiveboardTabs;
24487
+ if (!isUndefined$1(hideIrrelevantChipsInLiveboardTabs)) {
24488
+ params[Param.HideIrrelevantFiltersInTab] = hideIrrelevantChipsInLiveboardTabs;
24489
+ }
23453
24490
  params[Param.ShowMaskedFilterChip] = showMaskedFilterChip;
23454
- params[Param.IsLiveboardMasterpiecesEnabled] = isLiveboardMasterpiecesEnabled;
23455
- params[Param.IsEnhancedFilterInteractivityEnabled] = isEnhancedFilterInteractivityEnabled;
24491
+ if (!isUndefined$1(isLiveboardMasterpiecesEnabled)) {
24492
+ params[Param.IsLiveboardMasterpiecesEnabled] = isLiveboardMasterpiecesEnabled;
24493
+ }
24494
+ if (!isUndefined$1(isEnhancedFilterInteractivityEnabled)) {
24495
+ params[Param.IsEnhancedFilterInteractivityEnabled] =
24496
+ isEnhancedFilterInteractivityEnabled;
24497
+ }
23456
24498
  params[Param.DataPanelV2Enabled] = dataPanelV2;
23457
24499
  params[Param.EnableCustomColumnGroups] = enableCustomColumnGroups;
23458
- params[Param.CoverAndFilterOptionInPDF] = coverAndFilterOptionInPDF;
24500
+ if (!isUndefined$1(coverAndFilterOptionInPDF)) {
24501
+ params[Param.CoverAndFilterOptionInPDF] = coverAndFilterOptionInPDF;
24502
+ }
23459
24503
  getQueryParamString(params, true);
23460
24504
  return params;
23461
24505
  }
@@ -23558,7 +24602,7 @@ query GetEurekaVizSnapshots(
23558
24602
  });
23559
24603
  }
23560
24604
  async handleRenderForPrerender() {
23561
- if (isUndefined(this.viewConfig.liveboardId)) {
24605
+ if (isUndefined$1(this.viewConfig.liveboardId)) {
23562
24606
  return this.prerenderGeneric();
23563
24607
  }
23564
24608
  return super.handleRenderForPrerender();
@@ -23654,7 +24698,7 @@ query GetEurekaVizSnapshots(
23654
24698
  if (this.isRendered) {
23655
24699
  this.trigger(exports.HostEvent.Navigate, path.substring(1));
23656
24700
  }
23657
- else if (this.viewConfig.preRenderId) {
24701
+ else if (this.getPreRenderConfig().preRenderId) {
23658
24702
  this.preRender(true);
23659
24703
  }
23660
24704
  else {
@@ -24195,6 +25239,15 @@ query SendMessage($params: Input_convassist_SendMessageRequest) {
24195
25239
  });
24196
25240
  }
24197
25241
 
25242
+ /**
25243
+ * The query mode Spotter uses when answering a question.
25244
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
25245
+ */
25246
+ var SpotterQueryMode;
25247
+ (function (SpotterQueryMode) {
25248
+ SpotterQueryMode["FAST_SEARCH"] = "fastSearch";
25249
+ SpotterQueryMode["RESEARCH"] = "research";
25250
+ })(SpotterQueryMode || (SpotterQueryMode = {}));
24198
25251
  /**
24199
25252
  * Embed ThoughtSpot AI Conversation.
24200
25253
  * @version SDK: 1.37.0 | ThoughtSpot: 10.9.0.cl
@@ -24235,18 +25288,12 @@ query SendMessage($params: Input_convassist_SendMessageRequest) {
24235
25288
  */
24236
25289
  async getAppInitData() {
24237
25290
  const defaultAppInitData = await super.getAppInitData();
24238
- return buildSpotterSidebarAppInitData(defaultAppInitData, this.viewConfig, this.handleError.bind(this));
25291
+ const sidebarInitData = buildSpotterSidebarAppInitData(defaultAppInitData, this.viewConfig, this.handleError.bind(this));
25292
+ const shareInitData = buildSpotterShareConversationAppInitData(sidebarInitData, this.viewConfig);
25293
+ return buildStarterPromptsAppInitData(shareInitData, this.viewConfig);
24239
25294
  }
24240
25295
  getEmbedParamsObject() {
24241
- const { worksheetId, searchOptions, disableSourceSelection, hideSourceSelection, dataPanelV2, showSpotterLimitations, hideSampleQuestions, runtimeFilters, excludeRuntimeFiltersfromURL, runtimeParameters, excludeRuntimeParametersfromURL, updatedSpotterChatPrompt, enableStopAnswerGenerationEmbed, spotterChatConfig, } = this.viewConfig;
24242
- if (!worksheetId) {
24243
- this.handleError({
24244
- errorType: ErrorDetailsTypes.VALIDATION_ERROR,
24245
- message: ERROR_MESSAGE.SPOTTER_EMBED_WORKSHEED_ID_NOT_FOUND,
24246
- code: EmbedErrorCodes.WORKSHEET_ID_NOT_FOUND,
24247
- error: ERROR_MESSAGE.SPOTTER_EMBED_WORKSHEED_ID_NOT_FOUND,
24248
- });
24249
- }
25296
+ const { searchOptions, disableSourceSelection, hideSourceSelection, dataPanelV2, updatedSpotterExperience, showSpotterLimitations, hideSampleQuestions, runtimeFilters, excludeRuntimeFiltersfromURL, runtimeParameters, excludeRuntimeParametersfromURL, updatedSpotterChatPrompt, showSpotterRadiance, defaultQueryMode, enableStopAnswerGenerationEmbed, spotterChatConfig, spotterAnalystConfig, } = this.viewConfig;
24250
25297
  const queryParams = this.getBaseQueryParams();
24251
25298
  queryParams[Param.SpotterEnabled] = true;
24252
25299
  // Boolean params
@@ -24256,7 +25303,10 @@ query SendMessage($params: Input_convassist_SendMessageRequest) {
24256
25303
  setParamIfDefined(queryParams, Param.ShowSpotterLimitations, showSpotterLimitations, true);
24257
25304
  setParamIfDefined(queryParams, Param.HideSampleQuestions, hideSampleQuestions, true);
24258
25305
  setParamIfDefined(queryParams, Param.UpdatedSpotterChatPrompt, updatedSpotterChatPrompt, true);
25306
+ setParamIfDefined(queryParams, Param.ShowSpotterRadiance, showSpotterRadiance, true);
25307
+ setParamIfDefined(queryParams, Param.DefaultQueryMode, defaultQueryMode);
24259
25308
  setParamIfDefined(queryParams, Param.EnableStopAnswerGenerationEmbed, enableStopAnswerGenerationEmbed, true);
25309
+ setParamIfDefined(queryParams, Param.AnalystId, spotterAnalystConfig === null || spotterAnalystConfig === void 0 ? void 0 : spotterAnalystConfig.analystId);
24260
25310
  // Handle spotterChatConfig params
24261
25311
  if (spotterChatConfig) {
24262
25312
  const { hideToolResponseCardBranding, toolResponseCardBrandingLabel, spotterFileUploadEnabled, spotterFileUploadFileTypes, enableStarterPrompts, } = spotterChatConfig;
@@ -24268,11 +25318,18 @@ query SendMessage($params: Input_convassist_SendMessageRequest) {
24268
25318
  queryParams[Param.SpotterFileUploadFileTypes] = JSON.stringify(spotterFileUploadFileTypes);
24269
25319
  }
24270
25320
  }
25321
+ setParamIfDefined(queryParams, Param.UpdatedSpotterExperience, updatedSpotterExperience, true);
24271
25322
  return queryParams;
24272
25323
  }
24273
25324
  getIframeSrc() {
24274
- const { worksheetId, searchOptions, runtimeFilters, excludeRuntimeFiltersfromURL, runtimeParameters, excludeRuntimeParametersfromURL, } = this.viewConfig;
24275
- const path = 'insights/conv-assist';
25325
+ const { worksheetId, searchOptions, runtimeFilters, excludeRuntimeFiltersfromURL, runtimeParameters, excludeRuntimeParametersfromURL, sharedConversationId, dataSources, } = this.viewConfig;
25326
+ // Deep-link into the read-only shared-conversation reader view when a
25327
+ // shared conversation id is supplied (e.g. a recipient landing from a
25328
+ // host-configured CONVERSATION_URL share link); otherwise the normal
25329
+ // Spotter conversation surface.
25330
+ const path = sharedConversationId
25331
+ ? `insights/conv-assist/s/${encodeURIComponent(sharedConversationId)}`
25332
+ : 'insights/conv-assist';
24276
25333
  const queryParams = this.getEmbedParamsObject();
24277
25334
  let query = '';
24278
25335
  const queryParamsString = getQueryParamString(queryParams, true);
@@ -24288,8 +25345,12 @@ query SendMessage($params: Input_convassist_SendMessageRequest) {
24288
25345
  query += `&${parameterQuery}`;
24289
25346
  }
24290
25347
  const tsPostHashParams = this.getThoughtSpotPostUrlParams({
24291
- worksheet: worksheetId,
24292
- query: (searchOptions === null || searchOptions === void 0 ? void 0 : searchOptions.searchQuery) || '',
25348
+ ...(!(Array.isArray(dataSources) && dataSources.length > 0) && worksheetId
25349
+ && { worksheet: worksheetId }),
25350
+ ...((searchOptions === null || searchOptions === void 0 ? void 0 : searchOptions.searchQuery) && { query: searchOptions.searchQuery }),
25351
+ ...(Array.isArray(dataSources)
25352
+ && dataSources.length > 0
25353
+ && { dataSources: JSON.stringify(dataSources) }),
24293
25354
  });
24294
25355
  return `${this.getEmbedBasePath(query)}/embed/${path}${tsPostHashParams}`;
24295
25356
  }
@@ -24337,15 +25398,17 @@ query SendMessage($params: Input_convassist_SendMessageRequest) {
24337
25398
  // not be destroyed when the component is unmounted.
24338
25399
  isPreRenderedComponent = false) => {
24339
25400
  const Component = React.forwardRef((props, forwardedRef) => {
25401
+ var _a, _b;
24340
25402
  const ref = React.useRef(null);
24341
25403
  const { className, style, ...embedProps } = props;
24342
25404
  const { viewConfig, listeners } = getViewPropsAndListeners(embedProps);
25405
+ const preRenderId = (_b = (_a = props.preRenderConfig) === null || _a === void 0 ? void 0 : _a.preRenderId) !== null && _b !== void 0 ? _b : props.preRenderId;
24343
25406
  const handleDestroy = (tsEmbed) => {
24344
25407
  // do not destroy if it is a preRender component
24345
25408
  if (isPreRenderedComponent)
24346
25409
  return;
24347
25410
  // if component is connected to a preRendered component
24348
- if (props.preRenderId) {
25411
+ if (preRenderId) {
24349
25412
  tsEmbed.hidePreRender();
24350
25413
  return;
24351
25414
  }
@@ -24356,7 +25419,7 @@ query SendMessage($params: Input_convassist_SendMessageRequest) {
24356
25419
  };
24357
25420
  const handleDefaultRendering = (tsEmbed) => {
24358
25421
  // if component is connected to a preRendered component
24359
- if (props.preRenderId) {
25422
+ if (preRenderId) {
24360
25423
  tsEmbed.showPreRender();
24361
25424
  return;
24362
25425
  }
@@ -24605,7 +25668,7 @@ query SendMessage($params: Input_convassist_SendMessageRequest) {
24605
25668
  * const ref = useEmbedRef();
24606
25669
  * useEffect(() => {
24607
25670
  * ref.current.trigger(
24608
- * EmbedEvent.UpdateRuntimeFilter,
25671
+ * HostEvent.UpdateRuntimeFilters,
24609
25672
  * [{ columnName: 'name', operator: 'EQ', values: ['value']}]);
24610
25673
  * }, [])
24611
25674
  * return <LiveboardEmbed ref={ref} liveboardId={<id>} />