@thoughtspot/visual-embed-sdk 1.50.1 → 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 (238) 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 +63 -0
  7. package/cjs/src/css-variables.d.ts.map +1 -1
  8. package/cjs/src/embed/app.d.ts +148 -25
  9. package/cjs/src/embed/app.d.ts.map +1 -1
  10. package/cjs/src/embed/app.js +74 -37
  11. package/cjs/src/embed/app.js.map +1 -1
  12. package/cjs/src/embed/app.spec.js +571 -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 +375 -2
  17. package/cjs/src/embed/conversation.d.ts.map +1 -1
  18. package/cjs/src/embed/conversation.js +21 -15
  19. package/cjs/src/embed/conversation.js.map +1 -1
  20. package/cjs/src/embed/conversation.spec.js +323 -17
  21. package/cjs/src/embed/conversation.spec.js.map +1 -1
  22. package/cjs/src/embed/events.spec.js +45 -0
  23. package/cjs/src/embed/events.spec.js.map +1 -1
  24. package/cjs/src/embed/host-events.spec.js +81 -0
  25. package/cjs/src/embed/host-events.spec.js.map +1 -1
  26. package/cjs/src/embed/hostEventClient/contracts.d.ts +15 -0
  27. package/cjs/src/embed/hostEventClient/contracts.d.ts.map +1 -1
  28. package/cjs/src/embed/hostEventClient/contracts.js +1 -0
  29. package/cjs/src/embed/hostEventClient/contracts.js.map +1 -1
  30. package/cjs/src/embed/hostEventClient/host-event-client.d.ts +1 -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 +1 -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 +27 -0
  35. package/cjs/src/embed/hostEventClient/host-event-client.spec.js.map +1 -1
  36. package/cjs/src/embed/liveboard.d.ts +76 -14
  37. package/cjs/src/embed/liveboard.d.ts.map +1 -1
  38. package/cjs/src/embed/liveboard.js +50 -9
  39. package/cjs/src/embed/liveboard.js.map +1 -1
  40. package/cjs/src/embed/liveboard.spec.js +432 -4
  41. package/cjs/src/embed/liveboard.spec.js.map +1 -1
  42. package/cjs/src/embed/spotter-utils.d.ts +15 -1
  43. package/cjs/src/embed/spotter-utils.d.ts.map +1 -1
  44. package/cjs/src/embed/spotter-utils.js +28 -1
  45. package/cjs/src/embed/spotter-utils.js.map +1 -1
  46. package/cjs/src/embed/spotter-utils.spec.js +129 -0
  47. package/cjs/src/embed/spotter-utils.spec.js.map +1 -1
  48. package/cjs/src/embed/spotter-viz-utils.d.ts +9 -10
  49. package/cjs/src/embed/spotter-viz-utils.d.ts.map +1 -1
  50. package/cjs/src/embed/spotter-viz-utils.js.map +1 -1
  51. package/cjs/src/embed/ts-embed.d.ts +16 -8
  52. package/cjs/src/embed/ts-embed.d.ts.map +1 -1
  53. package/cjs/src/embed/ts-embed.js +82 -30
  54. package/cjs/src/embed/ts-embed.js.map +1 -1
  55. package/cjs/src/embed/ts-embed.spec.js +537 -3
  56. package/cjs/src/embed/ts-embed.spec.js.map +1 -1
  57. package/cjs/src/index.d.ts +3 -3
  58. package/cjs/src/index.d.ts.map +1 -1
  59. package/cjs/src/index.js +3 -2
  60. package/cjs/src/index.js.map +1 -1
  61. package/cjs/src/mixpanel-service.d.ts +4 -0
  62. package/cjs/src/mixpanel-service.d.ts.map +1 -1
  63. package/cjs/src/mixpanel-service.js +4 -0
  64. package/cjs/src/mixpanel-service.js.map +1 -1
  65. package/cjs/src/react/all-types-export.d.ts +1 -1
  66. package/cjs/src/react/all-types-export.d.ts.map +1 -1
  67. package/cjs/src/react/all-types-export.js +2 -1
  68. package/cjs/src/react/all-types-export.js.map +1 -1
  69. package/cjs/src/react/all-types-export.parity.spec.d.ts +2 -0
  70. package/cjs/src/react/all-types-export.parity.spec.d.ts.map +1 -0
  71. package/cjs/src/react/all-types-export.parity.spec.js +194 -0
  72. package/cjs/src/react/all-types-export.parity.spec.js.map +1 -0
  73. package/cjs/src/react/index.d.ts +66 -32
  74. package/cjs/src/react/index.d.ts.map +1 -1
  75. package/cjs/src/react/index.js +5 -3
  76. package/cjs/src/react/index.js.map +1 -1
  77. package/cjs/src/react/index.spec.js +101 -0
  78. package/cjs/src/react/index.spec.js.map +1 -1
  79. package/cjs/src/types.d.ts +789 -32
  80. package/cjs/src/types.d.ts.map +1 -1
  81. package/cjs/src/types.js +610 -20
  82. package/cjs/src/types.js.map +1 -1
  83. package/cjs/src/utils.spec.js +4 -0
  84. package/cjs/src/utils.spec.js.map +1 -1
  85. package/dist/{index-fCne7kmU.js → index-Bivg-mDx.js} +1 -1
  86. package/dist/src/config.d.ts +1 -0
  87. package/dist/src/config.d.ts.map +1 -1
  88. package/dist/src/css-variables.d.ts +63 -0
  89. package/dist/src/css-variables.d.ts.map +1 -1
  90. package/dist/src/embed/app.d.ts +148 -25
  91. package/dist/src/embed/app.d.ts.map +1 -1
  92. package/dist/src/embed/base.d.ts +1 -1
  93. package/dist/src/embed/conversation.d.ts +375 -2
  94. package/dist/src/embed/conversation.d.ts.map +1 -1
  95. package/dist/src/embed/hostEventClient/contracts.d.ts +15 -0
  96. package/dist/src/embed/hostEventClient/contracts.d.ts.map +1 -1
  97. package/dist/src/embed/hostEventClient/host-event-client.d.ts +1 -1
  98. package/dist/src/embed/hostEventClient/host-event-client.d.ts.map +1 -1
  99. package/dist/src/embed/liveboard.d.ts +76 -14
  100. package/dist/src/embed/liveboard.d.ts.map +1 -1
  101. package/dist/src/embed/spotter-utils.d.ts +15 -1
  102. package/dist/src/embed/spotter-utils.d.ts.map +1 -1
  103. package/dist/src/embed/spotter-viz-utils.d.ts +9 -10
  104. package/dist/src/embed/spotter-viz-utils.d.ts.map +1 -1
  105. package/dist/src/embed/ts-embed.d.ts +16 -8
  106. package/dist/src/embed/ts-embed.d.ts.map +1 -1
  107. package/dist/src/index.d.ts +3 -3
  108. package/dist/src/index.d.ts.map +1 -1
  109. package/dist/src/mixpanel-service.d.ts +4 -0
  110. package/dist/src/mixpanel-service.d.ts.map +1 -1
  111. package/dist/src/react/all-types-export.d.ts +1 -1
  112. package/dist/src/react/all-types-export.d.ts.map +1 -1
  113. package/dist/src/react/all-types-export.parity.spec.d.ts +2 -0
  114. package/dist/src/react/all-types-export.parity.spec.d.ts.map +1 -0
  115. package/dist/src/react/index.d.ts +66 -32
  116. package/dist/src/react/index.d.ts.map +1 -1
  117. package/dist/src/types.d.ts +789 -32
  118. package/dist/src/types.d.ts.map +1 -1
  119. package/dist/tsembed-react.es.js +878 -120
  120. package/dist/tsembed-react.js +877 -119
  121. package/dist/tsembed.es.js +936 -181
  122. package/dist/tsembed.js +938 -183
  123. package/dist/visual-embed-sdk-react-full.d.ts +1553 -128
  124. package/dist/visual-embed-sdk-react.d.ts +1555 -129
  125. package/dist/visual-embed-sdk.d.ts +1499 -100
  126. package/lib/package.json +1 -1
  127. package/lib/src/config.d.ts +1 -0
  128. package/lib/src/config.d.ts.map +1 -1
  129. package/lib/src/config.js +1 -0
  130. package/lib/src/config.js.map +1 -1
  131. package/lib/src/css-variables.d.ts +63 -0
  132. package/lib/src/css-variables.d.ts.map +1 -1
  133. package/lib/src/embed/app.d.ts +148 -25
  134. package/lib/src/embed/app.d.ts.map +1 -1
  135. package/lib/src/embed/app.js +75 -38
  136. package/lib/src/embed/app.js.map +1 -1
  137. package/lib/src/embed/app.spec.js +572 -151
  138. package/lib/src/embed/app.spec.js.map +1 -1
  139. package/lib/src/embed/base.d.ts +1 -1
  140. package/lib/src/embed/base.js +1 -1
  141. package/lib/src/embed/conversation.d.ts +375 -2
  142. package/lib/src/embed/conversation.d.ts.map +1 -1
  143. package/lib/src/embed/conversation.js +23 -17
  144. package/lib/src/embed/conversation.js.map +1 -1
  145. package/lib/src/embed/conversation.spec.js +323 -17
  146. package/lib/src/embed/conversation.spec.js.map +1 -1
  147. package/lib/src/embed/events.spec.js +45 -0
  148. package/lib/src/embed/events.spec.js.map +1 -1
  149. package/lib/src/embed/host-events.spec.js +81 -0
  150. package/lib/src/embed/host-events.spec.js.map +1 -1
  151. package/lib/src/embed/hostEventClient/contracts.d.ts +15 -0
  152. package/lib/src/embed/hostEventClient/contracts.d.ts.map +1 -1
  153. package/lib/src/embed/hostEventClient/contracts.js +1 -0
  154. package/lib/src/embed/hostEventClient/contracts.js.map +1 -1
  155. package/lib/src/embed/hostEventClient/host-event-client.d.ts +1 -1
  156. package/lib/src/embed/hostEventClient/host-event-client.d.ts.map +1 -1
  157. package/lib/src/embed/hostEventClient/host-event-client.js +1 -0
  158. package/lib/src/embed/hostEventClient/host-event-client.js.map +1 -1
  159. package/lib/src/embed/hostEventClient/host-event-client.spec.js +27 -0
  160. package/lib/src/embed/hostEventClient/host-event-client.spec.js.map +1 -1
  161. package/lib/src/embed/liveboard.d.ts +76 -14
  162. package/lib/src/embed/liveboard.d.ts.map +1 -1
  163. package/lib/src/embed/liveboard.js +50 -9
  164. package/lib/src/embed/liveboard.js.map +1 -1
  165. package/lib/src/embed/liveboard.spec.js +432 -4
  166. package/lib/src/embed/liveboard.spec.js.map +1 -1
  167. package/lib/src/embed/spotter-utils.d.ts +15 -1
  168. package/lib/src/embed/spotter-utils.d.ts.map +1 -1
  169. package/lib/src/embed/spotter-utils.js +25 -0
  170. package/lib/src/embed/spotter-utils.js.map +1 -1
  171. package/lib/src/embed/spotter-utils.spec.js +130 -1
  172. package/lib/src/embed/spotter-utils.spec.js.map +1 -1
  173. package/lib/src/embed/spotter-viz-utils.d.ts +9 -10
  174. package/lib/src/embed/spotter-viz-utils.d.ts.map +1 -1
  175. package/lib/src/embed/spotter-viz-utils.js.map +1 -1
  176. package/lib/src/embed/ts-embed.d.ts +16 -8
  177. package/lib/src/embed/ts-embed.d.ts.map +1 -1
  178. package/lib/src/embed/ts-embed.js +82 -30
  179. package/lib/src/embed/ts-embed.js.map +1 -1
  180. package/lib/src/embed/ts-embed.spec.js +537 -3
  181. package/lib/src/embed/ts-embed.spec.js.map +1 -1
  182. package/lib/src/index.d.ts +3 -3
  183. package/lib/src/index.d.ts.map +1 -1
  184. package/lib/src/index.js +2 -2
  185. package/lib/src/index.js.map +1 -1
  186. package/lib/src/mixpanel-service.d.ts +4 -0
  187. package/lib/src/mixpanel-service.d.ts.map +1 -1
  188. package/lib/src/mixpanel-service.js +4 -0
  189. package/lib/src/mixpanel-service.js.map +1 -1
  190. package/lib/src/react/all-types-export.d.ts +1 -1
  191. package/lib/src/react/all-types-export.d.ts.map +1 -1
  192. package/lib/src/react/all-types-export.js +1 -1
  193. package/lib/src/react/all-types-export.js.map +1 -1
  194. package/lib/src/react/all-types-export.parity.spec.d.ts +2 -0
  195. package/lib/src/react/all-types-export.parity.spec.d.ts.map +1 -0
  196. package/lib/src/react/all-types-export.parity.spec.js +191 -0
  197. package/lib/src/react/all-types-export.parity.spec.js.map +1 -0
  198. package/lib/src/react/index.d.ts +66 -32
  199. package/lib/src/react/index.d.ts.map +1 -1
  200. package/lib/src/react/index.js +5 -3
  201. package/lib/src/react/index.js.map +1 -1
  202. package/lib/src/react/index.spec.js +102 -1
  203. package/lib/src/react/index.spec.js.map +1 -1
  204. package/lib/src/types.d.ts +789 -32
  205. package/lib/src/types.d.ts.map +1 -1
  206. package/lib/src/types.js +610 -20
  207. package/lib/src/types.js.map +1 -1
  208. package/lib/src/utils.spec.js +4 -0
  209. package/lib/src/utils.spec.js.map +1 -1
  210. package/lib/src/visual-embed-sdk.d.ts +1499 -100
  211. package/package.json +1 -1
  212. package/src/config.ts +1 -0
  213. package/src/css-variables.ts +77 -0
  214. package/src/embed/app.spec.ts +729 -188
  215. package/src/embed/app.ts +240 -75
  216. package/src/embed/base.ts +1 -1
  217. package/src/embed/conversation.spec.ts +379 -20
  218. package/src/embed/conversation.ts +412 -18
  219. package/src/embed/events.spec.ts +56 -0
  220. package/src/embed/host-events.spec.ts +118 -0
  221. package/src/embed/hostEventClient/contracts.ts +16 -0
  222. package/src/embed/hostEventClient/host-event-client.spec.ts +46 -0
  223. package/src/embed/hostEventClient/host-event-client.ts +3 -2
  224. package/src/embed/liveboard.spec.ts +565 -4
  225. package/src/embed/liveboard.ts +150 -29
  226. package/src/embed/spotter-utils.spec.ts +140 -1
  227. package/src/embed/spotter-utils.ts +36 -1
  228. package/src/embed/spotter-viz-utils.ts +9 -10
  229. package/src/embed/ts-embed.spec.ts +699 -3
  230. package/src/embed/ts-embed.ts +99 -35
  231. package/src/index.ts +44 -2
  232. package/src/mixpanel-service.ts +4 -0
  233. package/src/react/all-types-export.parity.spec.ts +208 -0
  234. package/src/react/all-types-export.ts +22 -0
  235. package/src/react/index.spec.tsx +158 -0
  236. package/src/react/index.tsx +70 -33
  237. package/src/types.ts +791 -30
  238. package/src/utils.spec.ts +5 -0
package/dist/tsembed.js CHANGED
@@ -1,4 +1,4 @@
1
- /* @thoughtspot/visual-embed-sdk version 1.50.1 */
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) :
@@ -195,7 +195,9 @@
195
195
  })(exports.AuthType || (exports.AuthType = {}));
196
196
  /**
197
197
  *
198
- * **Note**: This attribute is not supported in the classic (V1) homepage experience.
198
+ * **Note**: The classic (V1) and Modular (V2) home page experiences are
199
+ * deprecated. This attribute applies to V3 (ModularWithStylingChanges) and
200
+ * V4 (Focused) home page experiences.
199
201
  *
200
202
  */
201
203
  exports.HomeLeftNavItem = void 0;
@@ -342,7 +344,9 @@
342
344
  * via `hiddenHomepageModules` and reordered via
343
345
  * `reorderedHomepageModules`.
344
346
  *
345
- * **Note**: This option is not supported in the classic (v1) experience.
347
+ * **Note**: The classic (V1) and Modular (V2) home page experiences are
348
+ * deprecated. These modules apply to V3 (ModularWithStylingChanges) and
349
+ * V4 (Focused) home page experiences.
346
350
  * @version SDK: 1.28.0 | ThoughtSpot: 9.12.5.cl, 10.1.0.sw
347
351
  */
348
352
  exports.HomepageModule = void 0;
@@ -520,7 +524,7 @@
520
524
  * @returns nonFilteredColumns - The columns that were not filtered
521
525
  * @example
522
526
  * ```js
523
- * searchEmbed.on(EmbedEvent.DrillDown, {
527
+ * searchEmbed.on(EmbedEvent.Drilldown, {
524
528
  * points: {
525
529
  * clickedPoint,
526
530
  * selectedPoints: selectedPoint
@@ -581,7 +585,7 @@
581
585
  * @version SDK: 1.1.0 | ThoughtSpot: ts7.may.cl, 8.4.1.sw
582
586
  * @example
583
587
  * ```js
584
- * appEmbed.on(EmbedEvent.customAction, payload => {
588
+ * appEmbed.on(EmbedEvent.CustomAction, payload => {
585
589
  * const data = payload.data;
586
590
  * if (data.id === 'insert Custom Action ID here') {
587
591
  * console.log('Custom Action event:', data.embedAnswerData);
@@ -847,8 +851,8 @@
847
851
  *
848
852
  * **Note**: This event is deprecated in v1.21.0.
849
853
  * To fire an event when a download action is initiated on a chart or table,
850
- * use `EmbedEvent.DownloadAsPng`, `EmbedEvent.DownloadAsPDF`,
851
- * `EmbedEvent.DownloadAsCSV`, or `EmbedEvent.DownloadAsXLSX`
854
+ * use `EmbedEvent.DownloadAsPng`, `EmbedEvent.DownloadAsPdf`,
855
+ * `EmbedEvent.DownloadAsCsv`, or `EmbedEvent.DownloadAsXlsx`
852
856
  * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw
853
857
  * @example
854
858
  * ```js
@@ -898,10 +902,10 @@
898
902
  * @example
899
903
  * ```js
900
904
  * //emit when action starts
901
- * searchEmbed.on(EmbedEvent.DownloadAsCSV, payload => {
905
+ * searchEmbed.on(EmbedEvent.DownloadAsCsv, payload => {
902
906
  * console.log('download CSV', payload)}, {start: true })
903
907
  * //emit when action ends
904
- * searchEmbed.on(EmbedEvent.DownloadAsCSV, payload => {
908
+ * searchEmbed.on(EmbedEvent.DownloadAsCsv, payload => {
905
909
  * console.log('download CSV', payload)})
906
910
  * ```
907
911
  */
@@ -1300,11 +1304,19 @@
1300
1304
  * Emitted when a user changes any filter on a Liveboard.
1301
1305
  * Returns filter type and name, column name and ID, and runtime
1302
1306
  * filter details.
1307
+ * The payload includes an optional `applicability` attribute indicating the
1308
+ * scope of the changed filter. It contains a `level` (`LIVEBOARD`,
1309
+ * `TAB`, or `GROUP`) and, when `level` is `TAB` or `GROUP`, a
1310
+ * `targetId` with the GUID of the target. At `LIVEBOARD` level there
1311
+ * is no `targetId`, since the filter applies to the whole Liveboard.
1312
+ * The `applicability` attribute is available from SDK: 1.53.0 |
1313
+ * ThoughtSpot: 26.10.0.cl.
1303
1314
  * @example
1304
1315
  *
1305
1316
  * ```js
1306
1317
  * LiveboardEmbed.on(EmbedEvent.FilterChanged, (payload) => {
1307
1318
  * console.log('payload', payload);
1319
+ * // payload.data optionally includes applicability: { level, targetId }
1308
1320
  * })
1309
1321
  * ```
1310
1322
  * @version SDK: 1.23.0 | ThoughtSpot: 9.4.0.cl, 9.5.0.sw
@@ -1496,9 +1508,17 @@
1496
1508
  /**
1497
1509
  * Emitted when parameter changes in an Answer
1498
1510
  * or Liveboard.
1511
+ * The payload includes an optional `applicability` attribute indicating the
1512
+ * scope of the changed parameter. It contains a `level` (`LIVEBOARD`,
1513
+ * `TAB`, or `GROUP`) and, when `level` is `TAB` or `GROUP`, a
1514
+ * `targetId` with the GUID of the target. At `LIVEBOARD` level there
1515
+ * is no `targetId`, since the parameter applies to the whole Liveboard.
1516
+ * The `applicability` attribute is available from SDK: 1.53.0 |
1517
+ * ThoughtSpot: 26.10.0.cl.
1499
1518
  * ```js
1500
1519
  * liveboardEmbed.on(EmbedEvent.ParameterChanged, (payload) => {
1501
1520
  * console.log('payload', payload);
1521
+ * // payload.data optionally includes applicability: { level, targetId }
1502
1522
  * })
1503
1523
  * ```
1504
1524
  * @version SDK: 1.29.0 | ThoughtSpot: 10.3.0.cl
@@ -1800,6 +1820,158 @@
1800
1820
  * @version SDK: 1.46.0 | ThoughtSpot: 26.3.0.cl
1801
1821
  */
1802
1822
  EmbedEvent["SpotterConversationDeleted"] = "spotterConversationDeleted";
1823
+ /**
1824
+ * Emitted when the header Share button is clicked. Fires `Start` then `End`
1825
+ * to bracket the interaction. App→host counterpart of the
1826
+ * `ShareSpotterConversation` host event (user-driven vs programmatic open).
1827
+ * @example
1828
+ * ```js
1829
+ * spotterEmbed.on(EmbedEvent.SpotterShareConversationButtonHeaderClicked, (payload) => {
1830
+ * // payload: { convId: string }
1831
+ * })
1832
+ * ```
1833
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
1834
+ */
1835
+ EmbedEvent["SpotterShareConversationButtonHeaderClicked"] = "spotterShareConversationButtonHeaderClicked";
1836
+ /**
1837
+ * Emitted when the sidebar Share item is clicked. Fires `Start` then `End`
1838
+ * to bracket the interaction.
1839
+ * @example
1840
+ * ```js
1841
+ * spotterEmbed.on(EmbedEvent.SpotterShareConversationMenuItemSidebarClicked, (payload) => {
1842
+ * // payload: { convId: string }
1843
+ * })
1844
+ * ```
1845
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
1846
+ */
1847
+ EmbedEvent["SpotterShareConversationMenuItemSidebarClicked"] = "spotterShareConversationMenuItemSidebarClicked";
1848
+ /**
1849
+ * Emitted when a Spotter conversation is shared (recipients added, or a new
1850
+ * share created). The host builds its own link from shareId/convId + its
1851
+ * configured CONVERSATION_URL — no link string is sent. Distinct from
1852
+ * `SpotterShareModalConfirmButtonClicked`, which fires at click time before
1853
+ * the save resolves.
1854
+ * @example
1855
+ * ```js
1856
+ * spotterEmbed.on(EmbedEvent.SpotterConversationShared, (payload) => {
1857
+ * // payload: { convId: string, shareId: string,
1858
+ * // recipientsAdded: string[], recipientsRemoved: string[] }
1859
+ * })
1860
+ * ```
1861
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
1862
+ */
1863
+ EmbedEvent["SpotterConversationShared"] = "spotterConversationShared";
1864
+ /**
1865
+ * Emitted when access to a shared Spotter conversation is revoked
1866
+ * (recipients removed). `fullyRevoked` is true when the last sharee is removed
1867
+ * and the share is deleted entirely.
1868
+ * @example
1869
+ * ```js
1870
+ * spotterEmbed.on(EmbedEvent.SpotterConversationShareRevoked, (payload) => {
1871
+ * // payload: { convId: string, shareId: string,
1872
+ * // recipientsRemoved: string[], fullyRevoked: boolean }
1873
+ * })
1874
+ * ```
1875
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
1876
+ */
1877
+ EmbedEvent["SpotterConversationShareRevoked"] = "spotterConversationShareRevoked";
1878
+ /**
1879
+ * Emitted when a recipient opens a shared Spotter conversation (read-only
1880
+ * view). No shareId available viewer-side.
1881
+ * @example
1882
+ * ```js
1883
+ * spotterEmbed.on(EmbedEvent.SpotterSharedConversationViewed, (payload) => {
1884
+ * // payload: { convId: string, sourceConvId: string }
1885
+ * // convId = resolved snapshot conv id; sourceConvId = the shared URL id
1886
+ * })
1887
+ * ```
1888
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
1889
+ */
1890
+ EmbedEvent["SpotterSharedConversationViewed"] = "spotterSharedConversationViewed";
1891
+ /**
1892
+ * Emitted when the user toggles the share-modal "include new messages since
1893
+ * last shared version" checkbox.
1894
+ * @example
1895
+ * ```js
1896
+ * spotterEmbed.on(EmbedEvent.SpotterShareIncludeNewMessagesCheckboxToggled, (payload) => {
1897
+ * // payload: { convId: string, includeNewMessages: boolean }
1898
+ * })
1899
+ * ```
1900
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
1901
+ */
1902
+ EmbedEvent["SpotterShareIncludeNewMessagesCheckboxToggled"] = "spotterShareIncludeNewMessagesCheckboxToggled";
1903
+ /**
1904
+ * Emitted when the user dismisses the stale-snapshot info banner via its
1905
+ * cross (distinct from the include-new-messages checkbox toggle).
1906
+ * @example
1907
+ * ```js
1908
+ * spotterEmbed.on(EmbedEvent.SpotterShareStaleInfoBannerDismissed, (payload) => {
1909
+ * // payload: { convId: string }
1910
+ * })
1911
+ * ```
1912
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
1913
+ */
1914
+ EmbedEvent["SpotterShareStaleInfoBannerDismissed"] = "spotterShareStaleInfoBannerDismissed";
1915
+ /**
1916
+ * Emitted when the modal Share (confirm) button is clicked — fires at click
1917
+ * time, before the save resolves. Distinct from the `SpotterConversationShared`
1918
+ * / `SpotterConversationShareRevoked` result events.
1919
+ * @example
1920
+ * ```js
1921
+ * spotterEmbed.on(EmbedEvent.SpotterShareModalConfirmButtonClicked, (payload) => {
1922
+ * // payload: { convId: string }
1923
+ * })
1924
+ * ```
1925
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
1926
+ */
1927
+ EmbedEvent["SpotterShareModalConfirmButtonClicked"] = "spotterShareModalConfirmButtonClicked";
1928
+ /**
1929
+ * Emitted when the share modal is dismissed via the Cancel button.
1930
+ * @example
1931
+ * ```js
1932
+ * spotterEmbed.on(EmbedEvent.SpotterShareModalCancelButtonClicked, (payload) => {
1933
+ * // payload: { convId: string }
1934
+ * })
1935
+ * ```
1936
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
1937
+ */
1938
+ EmbedEvent["SpotterShareModalCancelButtonClicked"] = "spotterShareModalCancelButtonClicked";
1939
+ /**
1940
+ * Emitted when a recipient leaves the read-only shared view via the Exit
1941
+ * button.
1942
+ * @example
1943
+ * ```js
1944
+ * spotterEmbed.on(EmbedEvent.SpotterSharedConversationExitButtonClicked, (payload) => {
1945
+ * // payload: { convId: string }
1946
+ * })
1947
+ * ```
1948
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
1949
+ */
1950
+ EmbedEvent["SpotterSharedConversationExitButtonClicked"] = "spotterSharedConversationExitButtonClicked";
1951
+ /**
1952
+ * Emitted when a Spotter conversation is pinned.
1953
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
1954
+ * @example
1955
+ * ```js
1956
+ * spotterEmbed.on(EmbedEvent.SpotterConversationPinned, (payload) => {
1957
+ * console.log('Conversation pinned', payload);
1958
+ * // payload: { conversationId: string, pinnedAt: string (ISO 8601) }
1959
+ * })
1960
+ * ```
1961
+ */
1962
+ EmbedEvent["SpotterConversationPinned"] = "spotterConversationPinned";
1963
+ /**
1964
+ * Emitted when a Spotter conversation is unpinned.
1965
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
1966
+ * @example
1967
+ * ```js
1968
+ * spotterEmbed.on(EmbedEvent.SpotterConversationUnpinned, (payload) => {
1969
+ * console.log('Conversation unpinned', payload);
1970
+ * // payload: { conversationId: string, unpinnedAt: string (ISO 8601) }
1971
+ * })
1972
+ * ```
1973
+ */
1974
+ EmbedEvent["SpotterConversationUnpinned"] = "spotterConversationUnpinned";
1803
1975
  /**
1804
1976
  * Emitted when a Spotter conversation is selected/clicked.
1805
1977
  * @example
@@ -2190,6 +2362,7 @@
2190
2362
  * const url = await appEmbed.trigger(HostEvent.GetIframeUrl, {}, ContextType.Answer);
2191
2363
  * console.log("iFrameURL", url);
2192
2364
  * ```
2365
+ * @returns iframeUrl - The URL currently loaded in the embedded iframe.
2193
2366
  * @version SDK: 1.35.0 | ThoughtSpot: 10.4.0.cl
2194
2367
  */
2195
2368
  HostEvent["GetIframeUrl"] = "GetIframeUrl";
@@ -2316,6 +2489,17 @@
2316
2489
  * name: string,
2317
2490
  * type: ATTRIBUTE/MEASURE,
2318
2491
  * dataType: INT64/CHAR/DATE }
2492
+ *
2493
+ * `applicability` - Optional. Scopes the filter to a specific target,
2494
+ * for example, a single Liveboard tab, so the panel for the correct
2495
+ * scoped filter is opened. Available from SDK: 1.53.0 |
2496
+ * ThoughtSpot: 26.10.0.cl. Includes the following attributes:
2497
+ *
2498
+ * - `level`: The scope of the filter: `LIVEBOARD`, `TAB`, or `GROUP`.
2499
+ * - `targetId`: The GUID of the target, for example, the tab GUID.
2500
+ * Required when `level` is `TAB` or `GROUP`. Do not pass it when
2501
+ * `level` is `LIVEBOARD`, since the filter applies to the whole
2502
+ * Liveboard. Omitting `applicability` targets the `LIVEBOARD` level.
2319
2503
  * @example
2320
2504
  * ```js
2321
2505
  * searchEmbed.trigger(HostEvent.OpenFilter,
@@ -2328,6 +2512,14 @@
2328
2512
  * ```
2329
2513
  * @example
2330
2514
  * ```js
2515
+ * // Open a filter scoped to a specific Liveboard tab
2516
+ * liveboardEmbed.trigger(HostEvent.OpenFilter, {
2517
+ * column: { columnId: '<column-GUID>' },
2518
+ * applicability: { level: 'TAB', targetId: '<tab-GUID>' }
2519
+ * });
2520
+ * ```
2521
+ * @example
2522
+ * ```js
2331
2523
  * // Open filter from search context
2332
2524
  * import { ContextType } from '@thoughtspot/visual-embed-sdk';
2333
2525
  * searchEmbed.trigger(HostEvent.OpenFilter, {
@@ -2337,6 +2529,73 @@
2337
2529
  * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl
2338
2530
  */
2339
2531
  HostEvent["OpenFilter"] = "openFilter";
2532
+ /**
2533
+ * Open the add-filter modal of a Liveboard, the same dialog that the
2534
+ * *Add filter* button in the Liveboard edit header opens, so the host
2535
+ * app can start the add-filter flow from its own UI.
2536
+ *
2537
+ * The Liveboard must be in edit mode; the event is ignored otherwise.
2538
+ * Hiding the *Add filter* button with `hiddenActions:
2539
+ * [Action.AddFilter]` does not block this event, but disabling it with
2540
+ * `disabledActions` does.
2541
+ *
2542
+ * Unlike {@link HostEvent.OpenFilter}, which opens the panel of an
2543
+ * existing filter, this event starts the creation of a new filter.
2544
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
2545
+ * @example
2546
+ * ```js
2547
+ * liveboardEmbed.trigger(HostEvent.OpenAddFilterModal);
2548
+ * ```
2549
+ */
2550
+ HostEvent["OpenAddFilterModal"] = "openAddFilterModal";
2551
+ /**
2552
+ * Open the add-parameter panel of a Liveboard, the same panel that the
2553
+ * *Add parameter* button in the Liveboard edit header opens.
2554
+ * Mirrors {@link HostEvent.OpenAddFilterModal} for parameters.
2555
+ *
2556
+ * The Liveboard must be in edit mode; the event is ignored otherwise.
2557
+ * Hiding the *Add parameter* button with `hiddenActions:
2558
+ * [Action.AddParameter]` does not block this event, but disabling it
2559
+ * with `disabledActions` does.
2560
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
2561
+ * @example
2562
+ * ```js
2563
+ * liveboardEmbed.trigger(HostEvent.OpenAddParameterModal);
2564
+ * ```
2565
+ */
2566
+ HostEvent["OpenAddParameterModal"] = "openAddParameterModal";
2567
+ /**
2568
+ * Open the parameter panel for a particular parameter on a Liveboard.
2569
+ * Mirrors {@link HostEvent.OpenFilter} for parameters.
2570
+ * @param - Includes the following keys:
2571
+ * - `parameter`: An object identifying the parameter to open, for
2572
+ * example, `{ parameterId: '<parameter-GUID>' }`.
2573
+ * - `applicability`: Optional. Scopes the parameter to a specific target,
2574
+ * for example, a single Liveboard tab, so the panel for the correct
2575
+ * scoped parameter is opened. Includes the following attributes:
2576
+ *
2577
+ * - `level`: The scope of the parameter: `LIVEBOARD`, `TAB`, or `GROUP`.
2578
+ * - `targetId`: The GUID of the target, for example, the tab GUID.
2579
+ * Required when `level` is `TAB` or `GROUP`. Do not pass it when
2580
+ * `level` is `LIVEBOARD`, since the parameter applies to the whole
2581
+ * Liveboard. Omitting `applicability` targets the `LIVEBOARD` level.
2582
+ * @example
2583
+ * ```js
2584
+ * liveboardEmbed.trigger(HostEvent.OpenParameter, {
2585
+ * parameter: { parameterId: '<parameter-GUID>' }
2586
+ * });
2587
+ * ```
2588
+ * @example
2589
+ * ```js
2590
+ * // Open a parameter scoped to a specific group
2591
+ * liveboardEmbed.trigger(HostEvent.OpenParameter, {
2592
+ * parameter: { parameterId: '<parameter-GUID>' },
2593
+ * applicability: { level: 'GROUP', targetId: '<group-GUID>' }
2594
+ * });
2595
+ * ```
2596
+ * @version SDK: 1.53.0 | ThoughtSpot: 26.10.0.cl
2597
+ */
2598
+ HostEvent["OpenParameter"] = "openParameter";
2340
2599
  /**
2341
2600
  * Add columns to the current search query.
2342
2601
  * @param - { columnIds: string[] }
@@ -2386,6 +2645,10 @@
2386
2645
  * liveboardEmbed.trigger(HostEvent.getExportRequestForCurrentPinboard).then(
2387
2646
  * data=>console.log(data))
2388
2647
  * ```
2648
+ * @returns data - Object with a `v2Content` string: the export request
2649
+ * payload for the current Liveboard.
2650
+ * @returns type - The passthrough event name,
2651
+ * `getExportRequestForCurrentPinboard`.
2389
2652
  * @version SDK: 1.13.0 | ThoughtSpot: 8.5.0.cl, 8.8.1.sw
2390
2653
  */
2391
2654
  HostEvent["getExportRequestForCurrentPinboard"] = "getExportRequestForCurrentPinboard";
@@ -2488,6 +2751,9 @@
2488
2751
  * }, ContextType.Spotter);
2489
2752
  * ```
2490
2753
  *
2754
+ * @returns liveboardId - GUID of the Liveboard the Answer was pinned to.
2755
+ * @returns tabId - GUID of the tab within that Liveboard.
2756
+ * @returns vizId - GUID of the newly created visualization.
2491
2757
  * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw
2492
2758
  */
2493
2759
  HostEvent["Pin"] = "pin";
@@ -2526,13 +2792,13 @@
2526
2792
  * Trigger the **Manage schedule** action on an embedded Liveboard
2527
2793
  * @example
2528
2794
  * ```js
2529
- * liveboardEmbed.trigger(HostEvent.ScheduleList)
2795
+ * liveboardEmbed.trigger(HostEvent.SchedulesList)
2530
2796
  * ```
2531
2797
  * @example
2532
2798
  * ```js
2533
2799
  * // Manage schedules from liveboard context
2534
2800
  * import { ContextType } from '@thoughtspot/visual-embed-sdk';
2535
- * liveboardEmbed.trigger(HostEvent.ScheduleList, {}, ContextType.Liveboard);
2801
+ * liveboardEmbed.trigger(HostEvent.SchedulesList, {}, ContextType.Liveboard);
2536
2802
  * ```
2537
2803
  * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw
2538
2804
  */
@@ -2977,6 +3243,7 @@
2977
3243
  * console.log(tml.answer);
2978
3244
  * });
2979
3245
  * ```
3246
+ * @returns The TML representation of the current Answer, as an object.
2980
3247
  * @version SDK: 1.18.0 | ThoughtSpot: 8.10.0.cl, 9.0.1.sw
2981
3248
  * @important
2982
3249
  */
@@ -3401,13 +3668,13 @@
3401
3668
  /**
3402
3669
  * Get details of filters applied on the Liveboard.
3403
3670
  * Returns arrays containing Liveboard filter and runtime filter elements.
3404
- * Each Liveboard filter may include an `applicability` attribute
3671
+ * Each Liveboard filter includes an optional `applicability` attribute
3405
3672
  * indicating the scope of the filter. It contains a `level`
3406
3673
  * (`LIVEBOARD`, `TAB`, or `GROUP`) and, when `level` is `TAB` or
3407
3674
  * `GROUP`, a `targetId` with the GUID of the target. At `LIVEBOARD`
3408
3675
  * level there is no `targetId`, since the filter applies to the
3409
3676
  * whole Liveboard.
3410
- * The `applicability` attribute is available from SDK: 1.51.0 |
3677
+ * The `applicability` attribute is available from SDK: 1.53.0 |
3411
3678
  * ThoughtSpot: 26.10.0.cl.
3412
3679
  * @example
3413
3680
  * ```js
@@ -3421,6 +3688,8 @@
3421
3688
  * const data = await liveboardEmbed.trigger(HostEvent.GetFilters, {}, ContextType.Liveboard);
3422
3689
  * console.log('filters', data);
3423
3690
  * ```
3691
+ * @returns liveboardFilters - Filters applied on the Liveboard.
3692
+ * @returns runtimeFilters - Runtime filters applied on the Liveboard.
3424
3693
  * @version SDK: 1.23.0 | ThoughtSpot: 9.4.0.cl
3425
3694
  */
3426
3695
  HostEvent["GetFilters"] = "getFilters";
@@ -3450,7 +3719,7 @@
3450
3719
  * For more information and examples, see link:https://developers.thoughtspot.com/docs/embed-liveboard#_date_filters[Date filters].
3451
3720
  *
3452
3721
  * `applicability` - Optional. Scopes the filter to a specific target,
3453
- * for example, a single Liveboard tab. Available from SDK: 1.51.0 |
3722
+ * for example, a single Liveboard tab. Available from SDK: 1.53.0 |
3454
3723
  * ThoughtSpot: 26.10.0.cl. Includes the following attributes:
3455
3724
  *
3456
3725
  * - `level`: The scope of the filter: `LIVEBOARD`, `TAB`, or `GROUP`.
@@ -3570,9 +3839,37 @@
3570
3839
  * console.log('tabs', tabDetails);
3571
3840
  * });
3572
3841
  * ```
3842
+ * @returns orderedTabIds - Tab GUIDs in the order they appear.
3843
+ * @returns numberOfTabs - Total number of tabs on the Liveboard.
3844
+ * @returns Tabs - Tab details, each with at least `id` and `name`.
3573
3845
  * @version SDK: 1.26.0 | ThoughtSpot: 9.7.0.cl
3574
3846
  */
3575
3847
  HostEvent["GetTabs"] = "getTabs";
3848
+ /**
3849
+ * Get group details for the current Liveboard.
3850
+ * Mirrors {@link HostEvent.GetTabs} for filter/parameter groups.
3851
+ * @example
3852
+ * ```js
3853
+ * liveboardEmbed.trigger(HostEvent.GetGroups).then((groupDetails) => {
3854
+ * console.log(
3855
+ * groupDetails // GroupDetails of current Liveboard
3856
+ * );
3857
+ * })
3858
+ * ```
3859
+ * @example
3860
+ * ```js
3861
+ * // Get groups from liveboard context
3862
+ * import { ContextType } from '@thoughtspot/visual-embed-sdk';
3863
+ * liveboardEmbed.trigger(HostEvent.GetGroups, {}, ContextType.Liveboard).then((groupDetails) => {
3864
+ * console.log('groups', groupDetails);
3865
+ * });
3866
+ * ```
3867
+ * @returns orderedGroupIds - Group GUIDs in the order they appear.
3868
+ * @returns numberOfGroups - Total number of groups on the Liveboard.
3869
+ * @returns Groups - Group details, each with at least `id` and `name`.
3870
+ * @version SDK: 1.53.0 | ThoughtSpot: 26.10.0.cl
3871
+ */
3872
+ HostEvent["GetGroups"] = "getGroups";
3576
3873
  /**
3577
3874
  * Set the visible tabs on a Liveboard.
3578
3875
  * @param - an array of ids of tabs to show, the IDs not passed
@@ -3644,6 +3941,9 @@
3644
3941
  * // Alternative direct usage (not recommended)
3645
3942
  * const {session} = await embed.trigger( HostEvent.GetAnswerSession )
3646
3943
  * ```
3944
+ * @returns session - Session identifier for the Answer, for use with the
3945
+ * `AnswerService`.
3946
+ * @returns embedAnswerData - Data backing the Answer, when available.
3647
3947
  * @version SDK: 1.26.0 | ThoughtSpot: 9.10.0.cl, 10.1.0.sw
3648
3948
  */
3649
3949
  HostEvent["GetAnswerSession"] = "getAnswerSession";
@@ -3701,7 +4001,7 @@
3701
4001
  * - `value`: The value to set for the parameter.
3702
4002
  * - `isVisibleToUser`: Optional. To control the visibility of the parameter chip.
3703
4003
  * - `applicability`: Optional. Scopes the parameter to a specific target,
3704
- * for example, a single Liveboard tab. Available from SDK: 1.51.0 |
4004
+ * for example, a single Liveboard tab. Available from SDK: 1.53.0 |
3705
4005
  * ThoughtSpot: 26.10.0.cl. Includes the following attributes:
3706
4006
  *
3707
4007
  * - `level`: The scope of the parameter: `LIVEBOARD`, `TAB`, or `GROUP`.
@@ -3745,13 +4045,13 @@
3745
4045
  HostEvent["UpdateParameters"] = "UpdateParameters";
3746
4046
  /**
3747
4047
  * Triggers GetParameters to fetch the runtime Parameters.
3748
- * Each parameter may include an `applicability` attribute
4048
+ * Each parameter includes an optional `applicability` attribute
3749
4049
  * indicating the scope of the parameter. It contains a `level`
3750
4050
  * (`LIVEBOARD`, `TAB`, or `GROUP`) and, when `level` is `TAB` or
3751
4051
  * `GROUP`, a `targetId` with the GUID of the target. At `LIVEBOARD`
3752
4052
  * level there is no `targetId`, since the parameter applies to the
3753
4053
  * whole Liveboard.
3754
- * The `applicability` attribute is available from SDK: 1.51.0 |
4054
+ * The `applicability` attribute is available from SDK: 1.53.0 |
3755
4055
  * ThoughtSpot: 26.10.0.cl.
3756
4056
  * @param - `vizId` refers to the Answer ID in Spotter embed and is required in Spotter embed.
3757
4057
  * ```js
@@ -3777,12 +4077,16 @@
3777
4077
  * console.log('parameters', parameters);
3778
4078
  * });
3779
4079
  * ```
4080
+ * @returns parameters - Parameters currently applied on the Liveboard.
3780
4081
  * @version SDK: 1.29.0 | ThoughtSpot: 10.1.0.cl, 10.1.0.sw
3781
4082
  */
3782
4083
  HostEvent["GetParameters"] = "GetParameters";
3783
4084
  /**
3784
4085
  * Triggers an event to update a personalized view of a Liveboard.
3785
- * This event is deprecated. Use {@link HostEvent.UpdatePersonalizedView} instead.
4086
+ * This event is deprecated. Use {@link HostEvent.SelectPersonalizedView} instead,
4087
+ * which additionally accepts a `viewName`, resets to the original view when
4088
+ * called with an empty payload, and reports an error when a named view
4089
+ * cannot be found.
3786
4090
  * ```js
3787
4091
  * liveboardEmbed.trigger(HostEvent.UpdatePersonalisedView, {viewId: '1234'})
3788
4092
  * ```
@@ -3800,10 +4104,15 @@
3800
4104
  HostEvent["UpdatePersonalisedView"] = "UpdatePersonalisedView";
3801
4105
  /**
3802
4106
  * Triggers an event to update a personalized view of a Liveboard.
4107
+ * This event is deprecated. Use {@link HostEvent.SelectPersonalizedView} instead,
4108
+ * which additionally accepts a `viewName`, resets to the original view when
4109
+ * called with an empty payload, and reports an error when a named view
4110
+ * cannot be found.
3803
4111
  * ```js
3804
4112
  * liveboardEmbed.trigger(HostEvent.UpdatePersonalisedView, {viewId: '1234'})
3805
4113
  * ```
3806
4114
  * @version SDK: 1.48.0 | ThoughtSpot: 26.5.0.cl
4115
+ * @deprecated SDK: 1.53.0 | ThoughtSpot: 26.10.0.cl
3807
4116
  */
3808
4117
  HostEvent["UpdatePersonalizedView"] = "UpdatePersonalisedView";
3809
4118
  /**
@@ -3906,6 +4215,10 @@
3906
4215
  * description: "Generated from Spotter"
3907
4216
  * }, ContextType.Spotter);
3908
4217
  * ```
4218
+ * @returns answerId - GUID of the saved Answer.
4219
+ * @returns saveResponse - Raw response from the save operation.
4220
+ * @returns shareResponse - Raw response from the share operation, when the
4221
+ * Answer was also made discoverable.
3909
4222
  * @version SDK: 1.36.0 | ThoughtSpot: 10.6.0.cl
3910
4223
  */
3911
4224
  HostEvent["SaveAnswer"] = "saveAnswer";
@@ -4019,6 +4332,36 @@
4019
4332
  * @version SDK: 1.40.0 | ThoughtSpot: 10.11.0.cl
4020
4333
  */
4021
4334
  HostEvent["ResetSpotterConversation"] = "ResetSpotterConversation";
4335
+ /**
4336
+ * Opens the Spotter share-conversation modal for the given conversation.
4337
+ * `conversationId` is **mandatory** — you must pass the id of the
4338
+ * conversation to share. Also no-op when sharing is disabled
4339
+ * (enableShareConversation off) or when already in the read-only shared view.
4340
+ * @example
4341
+ * ```js
4342
+ * spotterEmbed.trigger(HostEvent.ShareSpotterConversation, { conversationId: 'abc' });
4343
+ * ```
4344
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
4345
+ */
4346
+ HostEvent["ShareSpotterConversation"] = "ShareSpotterConversation";
4347
+ /**
4348
+ * Closes the Spotter share-conversation modal. No-op if none is open.
4349
+ * @example
4350
+ * ```js
4351
+ * spotterEmbed.trigger(HostEvent.CloseSpotterShareConversation);
4352
+ * ```
4353
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
4354
+ */
4355
+ HostEvent["CloseSpotterShareConversation"] = "CloseSpotterShareConversation";
4356
+ /**
4357
+ * Exits the read-only shared-conversation view.
4358
+ * @example
4359
+ * ```js
4360
+ * spotterEmbed.trigger(HostEvent.ExitSpotterSharedConversation);
4361
+ * ```
4362
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
4363
+ */
4364
+ HostEvent["ExitSpotterSharedConversation"] = "ExitSpotterSharedConversation";
4022
4365
  /**
4023
4366
  * Deletes the last prompt in spotter embed.
4024
4367
  * @example
@@ -4114,6 +4457,41 @@
4114
4457
  * @version SDK: 1.45.0 | ThoughtSpot: 26.2.0.cl
4115
4458
  */
4116
4459
  HostEvent["StartNewSpotterConversation"] = "StartNewSpotterConversation";
4460
+ /**
4461
+ * Pins a saved Spotter conversation so it floats to the top of the past
4462
+ * conversations sidebar. The `conversationId` of the conversation to pin is
4463
+ * required.
4464
+ *
4465
+ * This feature is available only when chat history is enabled on your ThoughtSpot
4466
+ * instance. Contact your admin or ThoughtSpot Support to enable chat history on your
4467
+ * instance.
4468
+ *
4469
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
4470
+ * @example
4471
+ * ```js
4472
+ * spotterEmbed.trigger(HostEvent.PinSpotterConversation, {
4473
+ * conversationId: '<conversation-id>',
4474
+ * });
4475
+ * ```
4476
+ */
4477
+ HostEvent["PinSpotterConversation"] = "PinSpotterConversation";
4478
+ /**
4479
+ * Unpins a previously pinned Spotter conversation. The `conversationId` of the
4480
+ * conversation to unpin is required.
4481
+ *
4482
+ * This feature is available only when chat history is enabled on your ThoughtSpot
4483
+ * instance. Contact your admin or ThoughtSpot Support to enable chat history on your
4484
+ * instance.
4485
+ *
4486
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
4487
+ * @example
4488
+ * ```js
4489
+ * spotterEmbed.trigger(HostEvent.UnpinSpotterConversation, {
4490
+ * conversationId: '<conversation-id>',
4491
+ * });
4492
+ * ```
4493
+ */
4494
+ HostEvent["UnpinSpotterConversation"] = "UnpinSpotterConversation";
4117
4495
  /**
4118
4496
  * @hidden
4119
4497
  * Get the current context of the embedded page.
@@ -4322,6 +4700,7 @@
4322
4700
  Param["NumberFormatLocale"] = "numberFormatLocale";
4323
4701
  Param["CurrencyFormat"] = "currencyFormat";
4324
4702
  Param["Enable2ColumnLayout"] = "enable2ColumnLayout";
4703
+ Param["IsLiveboardAlwaysOn12ColLayout"] = "isLiveboardAlwaysOn12ColLayout";
4325
4704
  Param["IsFullAppEmbed"] = "isFullAppEmbed";
4326
4705
  Param["IsOnBeforeGetVizDataInterceptEnabled"] = "isOnBeforeGetVizDataInterceptEnabled";
4327
4706
  Param["FocusSearchBarOnRender"] = "focusSearchBarOnRender";
@@ -4345,6 +4724,7 @@
4345
4724
  Param["PrimaryAction"] = "primaryAction";
4346
4725
  Param["isSpotterAgentEmbed"] = "isSpotterAgentEmbed";
4347
4726
  Param["IsLiveboardStylingAndGroupingEnabled"] = "isLiveboardStylingAndGroupingEnabled";
4727
+ Param["LiveboardGutter"] = "liveboardGutter";
4348
4728
  Param["IsLazyLoadingForEmbedEnabled"] = "isLazyLoadingForEmbedEnabled";
4349
4729
  Param["RootMarginForLazyLoad"] = "rootMarginForLazyLoad";
4350
4730
  Param["isPNGInScheduledEmailsEnabled"] = "isPNGInScheduledEmailsEnabled";
@@ -4353,9 +4733,11 @@
4353
4733
  Param["isGranularXLSXCSVSchedulesEnabled"] = "isGranularXLSXCSVSchedulesEnabled";
4354
4734
  Param["isSendNowLiveboardSchedulingEnabled"] = "isSendNowLiveboardSchedulingEnabled";
4355
4735
  Param["isCentralizedLiveboardFilterUXEnabled"] = "isCentralizedLiveboardFilterUXEnabled";
4736
+ Param["isScopedLiveboardFilteringEnabled"] = "isScopedLiveboardFilteringEnabled";
4356
4737
  Param["isLinkParametersEnabled"] = "isLinkParametersEnabled";
4357
4738
  Param["EnablePastConversationsSidebar"] = "enablePastConversationsSidebar";
4358
4739
  Param["UpdatedSpotterChatPrompt"] = "updatedSpotterChatPrompt";
4740
+ Param["ShowSpotterRadiance"] = "showSpotterRadiance";
4359
4741
  Param["DefaultQueryMode"] = "defaultQueryMode";
4360
4742
  Param["EnableStopAnswerGenerationEmbed"] = "enableStopAnswerGenerationEmbed";
4361
4743
  Param["SpotterSidebarTitle"] = "spotterSidebarTitle";
@@ -4376,14 +4758,19 @@
4376
4758
  Param["SpotterFileUploadEnabled"] = "spotterFileUploadEnabled";
4377
4759
  Param["SpotterFileUploadFileTypes"] = "spotterFileUploadFileTypes";
4378
4760
  Param["IsStarterPromptsEnabled"] = "enableStarterPrompts";
4761
+ Param["UpdatedSpotterExperience"] = "updatedSpotterExperience";
4762
+ Param["SpotterDataSources"] = "spotterDataSources";
4763
+ Param["AnalystId"] = "analystId";
4764
+ Param["OpenSpotterOnLiveboardByDefault"] = "openSpotterOnLiveboardByDefault";
4379
4765
  })(Param || (Param = {}));
4380
4766
  /**
4381
4767
  * ThoughtSpot application pages include actions and menu commands
4382
4768
  * for various user-initiated operations. These actions are represented
4383
4769
  * as enumeration members in the SDK. To control actions in the embedded view:
4384
- * - disabledActions — the action is grayed out and still visible, but non-interactive (user can see but not click).
4385
- * - hiddenActions — the action is completely removed from the UI (user cannot see it at all).
4386
- * - visibleActions — allowlist, only these actions are shown; all others are hidden.
4770
+ * - disabledActions — the action is grayed out and still visible, but non-interactive
4771
+ * (user can see but not click). - hiddenActions — the action is completely removed from
4772
+ * the UI (user cannot see it at all). - visibleActions — allowlist, only these actions
4773
+ * are shown; all others are hidden.
4387
4774
  *
4388
4775
  * Use disabledActions to disable (gray out) an action.
4389
4776
  * Use hiddenActions to hide (fully remove) an action.
@@ -4437,6 +4824,17 @@
4437
4824
  * ```
4438
4825
  */
4439
4826
  Action["SaveAsView"] = "saveAsView";
4827
+ /**
4828
+ * The **EditInputTable** action on a Liveboard
4829
+ * page. Allows users to edit an input table used in an Answer directly from
4830
+ * a Liveboard.
4831
+ * @example
4832
+ * ```js
4833
+ * disabledActions: [Action.EditInputTable]
4834
+ * ```
4835
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
4836
+ */
4837
+ Action["EditInputTable"] = "editInputTable";
4440
4838
  /**
4441
4839
  * The **Make a copy** action on a Liveboard or Answer
4442
4840
  * page. Creates a copy of the Liveboard.
@@ -5640,6 +6038,19 @@
5640
6038
  * @version SDK: 1.36.0 | ThoughtSpot Cloud: 10.6.0.cl
5641
6039
  */
5642
6040
  Action["ChangeFilterVisibilityInTab"] = "changeFilterVisibilityInTab";
6041
+ /**
6042
+ * Action ID to show, hide, or disable all filter surfaces on a Liveboard,
6043
+ * including filter, parameter, and cross-filter chips at the liveboard,
6044
+ * tab, and group levels. Parameter and cross-filter chips are hide-only.
6045
+ *
6046
+ * @example
6047
+ * ```js
6048
+ * hiddenActions: [Action.AllLiveboardFilters]
6049
+ * disabledActions: [Action.AllLiveboardFilters]
6050
+ * ```
6051
+ * @version SDK: 1.53.0 | ThoughtSpot: 26.10.0.cl
6052
+ */
6053
+ Action["AllLiveboardFilters"] = "allLiveboardFilters";
5643
6054
  /**
5644
6055
  * The **Data model instructions** button on the Spotter interface.
5645
6056
  * Allows opening the data model instructions modal.
@@ -5741,6 +6152,10 @@
5741
6152
  * The **Add to Coaching** feature allows adding reference questions and
5742
6153
  * business terms to improve Spotter’s responses. This feature is generally available
5743
6154
  * (GA) from version 26.2.0.cl and enabled by default on embed deployments.
6155
+ *
6156
+ * This action governs both the answer-card **Add to memory** CTA and its
6157
+ * Spotter 3 successor, the response-footer **Remember this** CTA
6158
+ * (they are mutually exclusive).
5744
6159
  * @example
5745
6160
  * ```js
5746
6161
  * hiddenAction: [Action.InConversationTraining]
@@ -5975,6 +6390,89 @@
5975
6390
  * @version SDK: 1.46.0 | ThoughtSpot Cloud: 26.3.0.cl
5976
6391
  */
5977
6392
  Action["SpotterChatRename"] = "spotterChatRename";
6393
+ /**
6394
+ * Controls visibility and disable state of the Spotter conversation Share
6395
+ * button in the chat header. Only takes effect once sharing is enabled
6396
+ * (enableShareConversation on).
6397
+ * @example
6398
+ * ```js
6399
+ * disabledActions: [Action.SpotterShareConversationButtonHeader]
6400
+ * ```
6401
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6402
+ */
6403
+ Action["SpotterShareConversationButtonHeader"] = "spotterShareConversationButtonHeader";
6404
+ /**
6405
+ * Controls visibility and disable state of the Share item in the Spotter
6406
+ * conversation history (sidebar) edit menu. Independent of the header button
6407
+ * above, so a host can show Share in one entry point and hide it in the other.
6408
+ * @example
6409
+ * ```js
6410
+ * disabledActions: [Action.SpotterShareConversationMenuItemSidebar]
6411
+ * ```
6412
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6413
+ */
6414
+ Action["SpotterShareConversationMenuItemSidebar"] = "spotterShareConversationMenuItemSidebar";
6415
+ /**
6416
+ * Controls visibility of the entire read-only shared-conversation data-access
6417
+ * banner shown when a recipient opens a shared view. Hide-only.
6418
+ * @example
6419
+ * ```js
6420
+ * hiddenActions: [Action.SpotterSharedConversationBanner]
6421
+ * ```
6422
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6423
+ */
6424
+ Action["SpotterSharedConversationBanner"] = "spotterSharedConversationBanner";
6425
+ /**
6426
+ * Controls visibility and disable state of the cross/close button on the
6427
+ * read-only shared-conversation data-access banner (keeps the banner itself).
6428
+ * @example
6429
+ * ```js
6430
+ * hiddenActions: [Action.SpotterSharedConversationBannerDismissButton]
6431
+ * ```
6432
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6433
+ */
6434
+ Action["SpotterSharedConversationBannerDismissButton"] = "spotterSharedConversationBannerDismissButton";
6435
+ /**
6436
+ * Controls visibility and disable state of the Exit button in the read-only
6437
+ * shared-view header. Hiding it does not disable the ExitSpotterSharedConversation
6438
+ * host event.
6439
+ * @example
6440
+ * ```js
6441
+ * hiddenActions: [Action.SpotterSharedConversationExitButton]
6442
+ * ```
6443
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6444
+ */
6445
+ Action["SpotterSharedConversationExitButton"] = "spotterSharedConversationExitButton";
6446
+ /**
6447
+ * Controls visibility of the share-modal footer note ("Chat will be shared up
6448
+ * to the current moment…"). Hide-only.
6449
+ * @example
6450
+ * ```js
6451
+ * hiddenActions: [Action.SpotterShareUpToCurrentInfo]
6452
+ * ```
6453
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6454
+ */
6455
+ Action["SpotterShareUpToCurrentInfo"] = "spotterShareUpToCurrentInfo";
6456
+ /**
6457
+ * Controls visibility and disable state of the share-modal "include new
6458
+ * messages since last shared version" checkbox.
6459
+ * @example
6460
+ * ```js
6461
+ * disabledActions: [Action.SpotterShareIncludeNewMessagesCheckbox]
6462
+ * ```
6463
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6464
+ */
6465
+ Action["SpotterShareIncludeNewMessagesCheckbox"] = "spotterShareIncludeNewMessagesCheckbox";
6466
+ /**
6467
+ * Controls visibility and disable state of the cross on the share-modal
6468
+ * stale-snapshot info banner.
6469
+ * @example
6470
+ * ```js
6471
+ * hiddenActions: [Action.SpotterShareStaleInfoBannerDismissButton]
6472
+ * ```
6473
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6474
+ */
6475
+ Action["SpotterShareStaleInfoBannerDismissButton"] = "spotterShareStaleInfoBannerDismissButton";
5978
6476
  /**
5979
6477
  * Controls visibility and disable state of the delete action
5980
6478
  * in the Spotter conversation edit menu.
@@ -5985,6 +6483,16 @@
5985
6483
  * @version SDK: 1.46.0 | ThoughtSpot Cloud: 26.3.0.cl
5986
6484
  */
5987
6485
  Action["SpotterChatDelete"] = "spotterChatDelete";
6486
+ /**
6487
+ * Controls visibility and disable state of the pin/unpin action
6488
+ * in the Spotter conversation edit menu.
6489
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
6490
+ * @example
6491
+ * ```js
6492
+ * disabledActions: [Action.SpotterChatPin]
6493
+ * ```
6494
+ */
6495
+ Action["SpotterChatPin"] = "spotterChatPin";
5988
6496
  /**
5989
6497
  * Controls visibility and disable state of the documentation/best practices
5990
6498
  * link in the Spotter sidebar footer.
@@ -6028,6 +6536,56 @@
6028
6536
  * @version SDK: 1.48.0 | ThoughtSpot Cloud: 26.5.0.cl
6029
6537
  */
6030
6538
  Action["SpotterChatModeSwitcher"] = "spotterChatModeSwitcher";
6539
+ /**
6540
+ * The **Basic Search** starter prompt pill.
6541
+ *
6542
+ * Starter prompt pills are the row of category buttons shown above the
6543
+ * Spotter chat input before a conversation starts. They give a new user
6544
+ * ready-made questions to click instead of typing one from scratch, and
6545
+ * disappear once the conversation begins. There are three, one per action
6546
+ * below.
6547
+ *
6548
+ * Clicking this pill opens a card of suggested simple questions; picking one
6549
+ * submits it to Spotter right away. Visible by default, and hidden along
6550
+ * with the other pills when the surface itself is off (see
6551
+ * {@link SpotterChatViewConfig.starterPrompts}).
6552
+ * @example
6553
+ * ```js
6554
+ * hiddenActions: [Action.QuickSearchPill]
6555
+ * ```
6556
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6557
+ */
6558
+ Action["QuickSearchPill"] = "quickSearchPill";
6559
+ /**
6560
+ * The **Deep Analysis** starter prompt pill, next to
6561
+ * {@link Action.QuickSearchPill} above the Spotter chat input.
6562
+ *
6563
+ * Clicking it opens a card of suggested investigative questions ("why did
6564
+ * revenue drop?"). Picking one fills the chat input in Deep Analysis mode
6565
+ * rather than submitting immediately, so the user can edit it first.
6566
+ * Visible by default.
6567
+ * @example
6568
+ * ```js
6569
+ * hiddenActions: [Action.DeepAnalysisPill]
6570
+ * ```
6571
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6572
+ */
6573
+ Action["DeepAnalysisPill"] = "deepAnalysisPill";
6574
+ /**
6575
+ * The **Data Literacy** starter prompt pill, next to
6576
+ * {@link Action.QuickSearchPill} above the Spotter chat input.
6577
+ *
6578
+ * Unlike the other two pills it opens no card: clicking it submits a prompt
6579
+ * that describes the data the model can answer over, helping a user who does
6580
+ * not yet know what is in the data source. The prompt text always comes from
6581
+ * ThoughtSpot, so only its label is customizable. Visible by default.
6582
+ * @example
6583
+ * ```js
6584
+ * hiddenActions: [Action.DataLiteracyPill]
6585
+ * ```
6586
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6587
+ */
6588
+ Action["DataLiteracyPill"] = "dataLiteracyPill";
6031
6589
  /**
6032
6590
  * The **Include current period** checkbox for date filters.
6033
6591
  * Controls the visibility and availability of the option to include
@@ -6176,6 +6734,38 @@
6176
6734
  * ```
6177
6735
  */
6178
6736
  Action["SpotterAnalystSidebar"] = "spotterAnalystSidebar";
6737
+ /**
6738
+ * Controls visibility and disable state of the analyst list
6739
+ * ("Show all") in the Spotter Analyst interface.
6740
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
6741
+ * @example
6742
+ * ```js
6743
+ * hiddenActions: [Action.SpotterAnalystList]
6744
+ * disabledActions: [Action.SpotterAnalystList]
6745
+ * ```
6746
+ */
6747
+ Action["SpotterAnalystList"] = "spotterAnalystList";
6748
+ /**
6749
+ * Controls visibility and disable state of the default Spotter analyst
6750
+ * entry in the Spotter Analyst interface.
6751
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
6752
+ * @example
6753
+ * ```js
6754
+ * hiddenActions: [Action.SpotterDefaultAnalyst]
6755
+ * disabledActions: [Action.SpotterDefaultAnalyst]
6756
+ * ```
6757
+ */
6758
+ Action["SpotterDefaultAnalyst"] = "spotterDefaultAnalyst";
6759
+ /**
6760
+ * The **Spotter** button in the Liveboard header.
6761
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
6762
+ * @example
6763
+ * ```js
6764
+ * hiddenActions: [Action.SpotterOnLiveboard]
6765
+ * disabledActions: [Action.SpotterOnLiveboard]
6766
+ * ```
6767
+ */
6768
+ Action["SpotterOnLiveboard"] = "spotterOnLiveboard";
6179
6769
  })(exports.Action || (exports.Action = {}));
6180
6770
  exports.PrefetchFeatures = void 0;
6181
6771
  (function (PrefetchFeatures) {
@@ -6643,7 +7233,7 @@
6643
7233
  TableContentDensity["Compact"] = "COMPACT";
6644
7234
  })(exports.TableContentDensity || (exports.TableContentDensity = {}));
6645
7235
 
6646
- var version$1="1.50.1";var pkg = {version:version$1};
7236
+ var version$1="1.51.0-test";var pkg = {version:version$1};
6647
7237
 
6648
7238
  const { version } = pkg;
6649
7239
 
@@ -6789,7 +7379,6 @@
6789
7379
 
6790
7380
  const ERROR_MESSAGE = {
6791
7381
  INVALID_THOUGHTSPOT_HOST: 'Error parsing ThoughtSpot host. Please provide a valid URL.',
6792
- SPOTTER_EMBED_WORKSHEED_ID_NOT_FOUND: 'Please select a Model to get started',
6793
7382
  LIVEBOARD_VIZ_ID_VALIDATION: 'Please select a Liveboard to embed.',
6794
7383
  TRIGGER_TIMED_OUT: 'Trigger timed-out in getting a response',
6795
7384
  SEARCHEMBED_BETA_WRANING_MESSAGE: 'SearchEmbed is in Beta in this release.',
@@ -7451,6 +8040,72 @@
7451
8040
  }
7452
8041
  };
7453
8042
 
8043
+ /**
8044
+ * Copyright (c) 2023
8045
+ *
8046
+ * Utilities related to reading configuration objects
8047
+ * @summary Config-related utils
8048
+ * @author Ayon Ghosh <ayon.ghosh@thoughtspot.com>
8049
+ */
8050
+ const urlRegex = new RegExp([
8051
+ '(^(https?:)//)?',
8052
+ '(([^:/?#]*)(?::([0-9]+))?)',
8053
+ '(/{0,1}[^?#]*)',
8054
+ '(\\?[^#]*|)',
8055
+ '(#.*|)$', // hash
8056
+ ].join(''));
8057
+ /**
8058
+ * Parse and construct the ThoughtSpot hostname or IP address
8059
+ * from the embed configuration object.
8060
+ * @param config
8061
+ */
8062
+ const getThoughtSpotHost = (config) => {
8063
+ if (!config.thoughtSpotHost) {
8064
+ throw new Error(ERROR_MESSAGE.INVALID_THOUGHTSPOT_HOST);
8065
+ }
8066
+ const urlParts = config.thoughtSpotHost.match(urlRegex);
8067
+ if (!urlParts) {
8068
+ throw new Error(ERROR_MESSAGE.INVALID_THOUGHTSPOT_HOST);
8069
+ }
8070
+ const protocol = urlParts[2] || window.location.protocol;
8071
+ const host = urlParts[3];
8072
+ let path = urlParts[6];
8073
+ // Lose the trailing / if any
8074
+ if (path.charAt(path.length - 1) === '/') {
8075
+ path = path.substring(0, path.length - 1);
8076
+ }
8077
+ // const urlParams = urlParts[7];
8078
+ // const hash = urlParts[8];
8079
+ return `${protocol}//${host}${path}`;
8080
+ };
8081
+ const getV2BasePath = (config) => {
8082
+ if (config.basepath) {
8083
+ return config.basepath;
8084
+ }
8085
+ const tsHost = getThoughtSpotHost(config);
8086
+ // This is to handle when e2e's. Search is run on pods for
8087
+ // comp-blink-test-pipeline with baseUrl=https://localhost:8443.
8088
+ // This is to handle when the developer is developing in their local
8089
+ // environment.
8090
+ if (tsHost.includes('://localhost') && !tsHost.includes(':8443')) {
8091
+ return '';
8092
+ }
8093
+ return 'v2';
8094
+ };
8095
+ /**
8096
+ * It is a good idea to keep URLs under 2000 chars.
8097
+ * If this is ever breached, since we pass view configuration through
8098
+ * URL params, we would like to log a warning.
8099
+ * Reference: https://stackoverflow.com/questions/417142/what-is-the-maximum-length-of-a-url-in-different-browsers
8100
+ */
8101
+ const URL_MAX_LENGTH = 2000;
8102
+ /**
8103
+ * The default CSS dimensions of the embedded app
8104
+ */
8105
+ const DEFAULT_EMBED_WIDTH = '100%';
8106
+ const DEFAULT_EMBED_HEIGHT = '100%';
8107
+ const DEFAULT_LAZY_LOADING_MARGIN = '500px 0px';
8108
+
7454
8109
  /** Used for built-in method references. */
7455
8110
  var objectProto$d = Object.prototype;
7456
8111
 
@@ -8334,12 +8989,12 @@
8334
8989
  /**
8335
8990
  * Levels at which a filter or parameter can be applied.
8336
8991
  */
8337
- var ApplicabilityLevel;
8992
+ exports.ApplicabilityLevel = void 0;
8338
8993
  (function (ApplicabilityLevel) {
8339
8994
  ApplicabilityLevel["Liveboard"] = "LIVEBOARD";
8340
8995
  ApplicabilityLevel["Tab"] = "TAB";
8341
8996
  ApplicabilityLevel["Group"] = "GROUP";
8342
- })(ApplicabilityLevel || (ApplicabilityLevel = {}));
8997
+ })(exports.ApplicabilityLevel || (exports.ApplicabilityLevel = {}));
8343
8998
  exports.UIPassthroughEvent = void 0;
8344
8999
  (function (UIPassthroughEvent) {
8345
9000
  UIPassthroughEvent["PinAnswerToLiveboard"] = "addVizToPinboard";
@@ -8357,6 +9012,7 @@
8357
9012
  UIPassthroughEvent["GetParameters"] = "getParameters";
8358
9013
  UIPassthroughEvent["GetTML"] = "getTML";
8359
9014
  UIPassthroughEvent["GetTabs"] = "getTabs";
9015
+ UIPassthroughEvent["GetGroups"] = "getGroups";
8360
9016
  UIPassthroughEvent["GetExportRequestForCurrentPinboard"] = "getExportRequestForCurrentPinboard";
8361
9017
  })(exports.UIPassthroughEvent || (exports.UIPassthroughEvent = {}));
8362
9018
 
@@ -12178,71 +12834,6 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
12178
12834
  };
12179
12835
  };
12180
12836
 
12181
- /**
12182
- * Copyright (c) 2023
12183
- *
12184
- * Utilities related to reading configuration objects
12185
- * @summary Config-related utils
12186
- * @author Ayon Ghosh <ayon.ghosh@thoughtspot.com>
12187
- */
12188
- const urlRegex = new RegExp([
12189
- '(^(https?:)//)?',
12190
- '(([^:/?#]*)(?::([0-9]+))?)',
12191
- '(/{0,1}[^?#]*)',
12192
- '(\\?[^#]*|)',
12193
- '(#.*|)$', // hash
12194
- ].join(''));
12195
- /**
12196
- * Parse and construct the ThoughtSpot hostname or IP address
12197
- * from the embed configuration object.
12198
- * @param config
12199
- */
12200
- const getThoughtSpotHost = (config) => {
12201
- if (!config.thoughtSpotHost) {
12202
- throw new Error(ERROR_MESSAGE.INVALID_THOUGHTSPOT_HOST);
12203
- }
12204
- const urlParts = config.thoughtSpotHost.match(urlRegex);
12205
- if (!urlParts) {
12206
- throw new Error(ERROR_MESSAGE.INVALID_THOUGHTSPOT_HOST);
12207
- }
12208
- const protocol = urlParts[2] || window.location.protocol;
12209
- const host = urlParts[3];
12210
- let path = urlParts[6];
12211
- // Lose the trailing / if any
12212
- if (path.charAt(path.length - 1) === '/') {
12213
- path = path.substring(0, path.length - 1);
12214
- }
12215
- // const urlParams = urlParts[7];
12216
- // const hash = urlParts[8];
12217
- return `${protocol}//${host}${path}`;
12218
- };
12219
- const getV2BasePath = (config) => {
12220
- if (config.basepath) {
12221
- return config.basepath;
12222
- }
12223
- const tsHost = getThoughtSpotHost(config);
12224
- // This is to handle when e2e's. Search is run on pods for
12225
- // comp-blink-test-pipeline with baseUrl=https://localhost:8443.
12226
- // This is to handle when the developer is developing in their local
12227
- // environment.
12228
- if (tsHost.includes('://localhost') && !tsHost.includes(':8443')) {
12229
- return '';
12230
- }
12231
- return 'v2';
12232
- };
12233
- /**
12234
- * It is a good idea to keep URLs under 2000 chars.
12235
- * If this is ever breached, since we pass view configuration through
12236
- * URL params, we would like to log a warning.
12237
- * Reference: https://stackoverflow.com/questions/417142/what-is-the-maximum-length-of-a-url-in-different-browsers
12238
- */
12239
- const URL_MAX_LENGTH = 2000;
12240
- /**
12241
- * The default CSS dimensions of the embedded app
12242
- */
12243
- const DEFAULT_EMBED_WIDTH = '100%';
12244
- const DEFAULT_EMBED_HEIGHT = '100%';
12245
-
12246
12837
  var Config = {
12247
12838
  DEBUG: false,
12248
12839
  LIB_VERSION: '2.47.0'
@@ -18399,6 +18990,10 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
18399
18990
  VISUAL_SDK_IFRAME_LOAD_PERFORMANCE: 'visual-sdk-iframe-load-performance',
18400
18991
  VISUAL_SDK_EMBED_CREATE: 'visual-sdk-embed-create',
18401
18992
  VERCEL_INTEGRATION_COMPLETED: 'vercel-integration-completed',
18993
+ VISUAL_SDK_RENDER_CALLED: 'visual-sdk-render-called',
18994
+ VISUAL_SDK_PRE_RENDER: 'visual-sdk-pre-render',
18995
+ VISUAL_SDK_SHOW_PRE_RENDER: 'visual-sdk-show-pre-render',
18996
+ VISUAL_SDK_HIDE_PRE_RENDER: 'visual-sdk-hide-pre-render',
18402
18997
  };
18403
18998
  let isMixpanelInitialized = false;
18404
18999
  let eventQueue = [];
@@ -19800,7 +20395,7 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
19800
20395
  /**
19801
20396
  * Initializes the Visual Embed SDK globally and perform
19802
20397
  * authentication if applicable. This function needs to be called before any ThoughtSpot
19803
- * component like Liveboard etc can be embedded. But need not wait for AuthEvent.SUCCESS
20398
+ * component like Liveboard etc can be embedded. But need not wait for AuthStatus.SUCCESS
19804
20399
  * to actually embed. That is handled internally.
19805
20400
  * @param embedConfig The configuration object containing ThoughtSpot host,
19806
20401
  * authentication mechanism and so on.
@@ -20296,8 +20891,8 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
20296
20891
  return true;
20297
20892
  // targetId is not required at LIVEBOARD level, since the filter applies to the whole Liveboard
20298
20893
  return isPlainObject_1(a)
20299
- && Object.values(ApplicabilityLevel).includes(a.level)
20300
- && (a.level === ApplicabilityLevel.Liveboard || (isString_1(a.targetId) && a.targetId.trim().length > 0));
20894
+ && Object.values(exports.ApplicabilityLevel).includes(a.level)
20895
+ && (a.level === exports.ApplicabilityLevel.Liveboard || (isString_1(a.targetId) && a.targetId.trim().length > 0));
20301
20896
  };
20302
20897
  function isValidUpdateFiltersPayload(payload) {
20303
20898
  if (!payload)
@@ -20377,6 +20972,7 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
20377
20972
  [exports.HostEvent.GetParameters]: exports.UIPassthroughEvent.GetParameters,
20378
20973
  [exports.HostEvent.GetTML]: exports.UIPassthroughEvent.GetTML,
20379
20974
  [exports.HostEvent.GetTabs]: exports.UIPassthroughEvent.GetTabs,
20975
+ [exports.HostEvent.GetGroups]: exports.UIPassthroughEvent.GetGroups,
20380
20976
  [exports.HostEvent.getExportRequestForCurrentPinboard]: exports.UIPassthroughEvent.GetExportRequestForCurrentPinboard,
20381
20977
  };
20382
20978
  class HostEventClient {
@@ -20779,7 +21375,7 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
20779
21375
  */
20780
21376
  this.shouldEncodeUrlQueryParams = false;
20781
21377
  this.defaultHiddenActions = [exports.Action.ReportError];
20782
- this.preRenderContainerEl = null;
21378
+ this.preRenderContainerEl = document.body;
20783
21379
  this.containerScrollListener = null;
20784
21380
  /**
20785
21381
  * Handler for fullscreen change events
@@ -21467,11 +22063,27 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
21467
22063
  iFrame.name = 'ThoughtSpot Embedded Analytics';
21468
22064
  return iFrame;
21469
22065
  }
22066
+ /**
22067
+ * Returns a merged {@link PreRenderConfig} object where each shared key
22068
+ * prefers `preRenderConfig.key` over the top-level `viewConfig.key` for
22069
+ * backward compatibility.
22070
+ */
22071
+ getPreRenderConfig() {
22072
+ var _a, _b, _c, _d;
22073
+ const viewCfg = this.viewConfig;
22074
+ const preRenderCfg = (_a = viewCfg.preRenderConfig) !== null && _a !== void 0 ? _a : {};
22075
+ return {
22076
+ ...preRenderCfg,
22077
+ preRenderId: (_b = preRenderCfg.preRenderId) !== null && _b !== void 0 ? _b : viewCfg.preRenderId,
22078
+ preRenderContainer: (_c = preRenderCfg.preRenderContainer) !== null && _c !== void 0 ? _c : viewCfg.preRenderContainer,
22079
+ doNotTrackPreRenderSize: (_d = preRenderCfg.doNotTrackPreRenderSize) !== null && _d !== void 0 ? _d : viewCfg.doNotTrackPreRenderSize,
22080
+ };
22081
+ }
21470
22082
  /**
21471
22083
  * Returns true if this embed instance is configured for pre-rendering.
21472
22084
  */
21473
22085
  isPreRenderEmbed() {
21474
- return !!this.viewConfig.preRenderId;
22086
+ return !!this.getPreRenderConfig().preRenderId;
21475
22087
  }
21476
22088
  handleInsertionIntoDOM(child) {
21477
22089
  if (this.isPreRenderEmbed()) {
@@ -21607,6 +22219,7 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
21607
22219
  this.setIframeElement(this.preRenderChild);
21608
22220
  }
21609
22221
  this.isRendered = true;
22222
+ this.inheritPreRenderContainer();
21610
22223
  }
21611
22224
  return this.isPreRenderConnected();
21612
22225
  }
@@ -21657,7 +22270,7 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
21657
22270
  */
21658
22271
  resolvePreRenderContainerTarget() {
21659
22272
  var _a;
21660
- const containerConfig = this.viewConfig.preRenderContainer;
22273
+ const containerConfig = this.getPreRenderConfig().preRenderContainer;
21661
22274
  let container = null;
21662
22275
  if (typeof containerConfig === 'string') {
21663
22276
  try {
@@ -21675,15 +22288,35 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
21675
22288
  }
21676
22289
  return (_a = container) !== null && _a !== void 0 ? _a : document.body;
21677
22290
  }
22291
+ inheritPreRenderContainer() {
22292
+ var _a;
22293
+ const preRenderedObject = this.getPreRenderObj();
22294
+ if (!preRenderedObject || preRenderedObject === this) {
22295
+ return;
22296
+ }
22297
+ const ownerContainer = (_a = preRenderedObject.preRenderContainerEl) !== null && _a !== void 0 ? _a : document.body;
22298
+ if (this.getPreRenderConfig().preRenderContainer
22299
+ && this.resolvePreRenderContainerTarget() !== ownerContainer) {
22300
+ logger$3.warn('preRenderContainer is applied only by the component that creates the preRender; '
22301
+ + 'the one passed here is ignored. Set it on the PreRender component instead.');
22302
+ }
22303
+ this.preRenderContainerEl = ownerContainer;
22304
+ this.applyPreRenderContainerPositioning();
22305
+ }
22306
+ getCustomPreRenderContainer() {
22307
+ const container = this.preRenderContainerEl;
22308
+ return container && container !== document.body ? container : null;
22309
+ }
21678
22310
  /**
21679
- * Makes the container a positioning context for the absolutely positioned
21680
- * wrapper, stashing the original inline `position` on the element (once) so
21681
- * destroy() can restore it exactly, leaving no trace. Recording it on the
21682
- * element rather than per-instance lets the override be reverted even when
21683
- * embeds share the same container.
22311
+ * Makes the resolved container a positioning context for the absolutely
22312
+ * positioned wrapper, stashing the original inline `position` on the element
22313
+ * (once) so destroy() can restore it exactly, leaving no trace. Recording it
22314
+ * on the element rather than per-instance lets the override be reverted even
22315
+ * when embeds share the same container.
21684
22316
  */
21685
- applyPreRenderContainerPositioning(container) {
21686
- if (container === document.body) {
22317
+ applyPreRenderContainerPositioning() {
22318
+ const container = this.getCustomPreRenderContainer();
22319
+ if (!container) {
21687
22320
  return;
21688
22321
  }
21689
22322
  const pos = window.getComputedStyle(container).position;
@@ -21726,11 +22359,11 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
21726
22359
  resolved.addEventListener('scroll', this.containerScrollListener);
21727
22360
  }
21728
22361
  }
21729
- this.applyPreRenderContainerPositioning(resolved);
22362
+ this.preRenderContainerEl = resolved;
22363
+ this.applyPreRenderContainerPositioning();
21730
22364
  if (wrapper.parentNode !== resolved) {
21731
22365
  resolved.appendChild(wrapper);
21732
22366
  }
21733
- this.preRenderContainerEl = resolved;
21734
22367
  }
21735
22368
  insertIntoDOMForPreRender(child) {
21736
22369
  const preRenderChild = this.createPreRenderChild(child);
@@ -21753,7 +22386,7 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
21753
22386
  }
21754
22387
  const targetContainer = this.resolvePreRenderContainerTarget();
21755
22388
  this.preRenderContainerEl = targetContainer;
21756
- this.applyPreRenderContainerPositioning(targetContainer);
22389
+ this.applyPreRenderContainerPositioning();
21757
22390
  targetContainer.appendChild(preRenderWrapper);
21758
22391
  }
21759
22392
  insertIntoDOM(child) {
@@ -22081,6 +22714,9 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
22081
22714
  * @param args
22082
22715
  */
22083
22716
  async render() {
22717
+ uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_RENDER_CALLED, {
22718
+ embedComponentType: this.viewConfig.embedComponentType,
22719
+ });
22084
22720
  if (!getIsInitCalled()) {
22085
22721
  logger$3.error(ERROR_MESSAGE.RENDER_CALLED_BEFORE_INIT);
22086
22722
  }
@@ -22152,7 +22788,11 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
22152
22788
  * @param showPreRenderByDefault - Show the preRender after render, hidden by default
22153
22789
  */
22154
22790
  async preRender(showPreRenderByDefault = false, replaceExistingPreRender = false) {
22155
- if (!this.viewConfig.preRenderId) {
22791
+ uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_PRE_RENDER, {
22792
+ showPreRenderByDefault,
22793
+ replaceExistingPreRender,
22794
+ });
22795
+ if (!this.getPreRenderConfig().preRenderId) {
22156
22796
  logger$3.error(ERROR_MESSAGE.PRERENDER_ID_MISSING);
22157
22797
  return this;
22158
22798
  }
@@ -22208,7 +22848,7 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
22208
22848
  }
22209
22849
  // Drop our reference up front so a destroyed embed never pins a
22210
22850
  // detached container in memory; restoration uses the local handle.
22211
- this.preRenderContainerEl = null;
22851
+ this.preRenderContainerEl = document.body;
22212
22852
  const originalPosition = container.dataset[PRERENDER_CONTAINER_ORIGINAL_POSITION_KEY];
22213
22853
  if (originalPosition === undefined) {
22214
22854
  // We never overrode this container's position; nothing to restore.
@@ -22231,9 +22871,7 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
22231
22871
  if (!this.containerScrollListener) {
22232
22872
  return;
22233
22873
  }
22234
- const customContainer = this.preRenderContainerEl && this.preRenderContainerEl !== document.body
22235
- ? this.preRenderContainerEl
22236
- : null;
22874
+ const customContainer = this.getCustomPreRenderContainer();
22237
22875
  customContainer === null || customContainer === void 0 ? void 0 : customContainer.removeEventListener('scroll', this.containerScrollListener);
22238
22876
  this.containerScrollListener = null;
22239
22877
  }
@@ -22329,9 +22967,13 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
22329
22967
  */
22330
22968
  async showPreRender() {
22331
22969
  var _a, _b;
22970
+ uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_SHOW_PRE_RENDER, {
22971
+ preRenderId: this.getPreRenderConfig().preRenderId,
22972
+ embedComponentType: this.viewConfig.embedComponentType,
22973
+ });
22332
22974
  if (this.shouldWaitForRenderPromise)
22333
22975
  await this.isReadyForRenderPromise;
22334
- if (!this.viewConfig.preRenderId) {
22976
+ if (!this.getPreRenderConfig().preRenderId) {
22335
22977
  logger$3.error(ERROR_MESSAGE.PRERENDER_ID_MISSING);
22336
22978
  return this;
22337
22979
  }
@@ -22362,14 +23004,12 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
22362
23004
  (_a = this.hostElement.querySelector(`#${placeHolderId}`)) === null || _a === void 0 ? void 0 : _a.remove();
22363
23005
  this.hostElement.appendChild(this.insertedDomEl);
22364
23006
  this.syncPreRenderStyle();
22365
- const customContainer = this.preRenderContainerEl && this.preRenderContainerEl !== document.body
22366
- ? this.preRenderContainerEl
22367
- : null;
23007
+ const customContainer = this.getCustomPreRenderContainer();
22368
23008
  if (customContainer && !this.containerScrollListener) {
22369
23009
  this.containerScrollListener = () => this.syncPreRenderStyle();
22370
23010
  customContainer.addEventListener('scroll', this.containerScrollListener);
22371
23011
  }
22372
- if (!this.viewConfig.doNotTrackPreRenderSize) {
23012
+ if (!this.getPreRenderConfig().doNotTrackPreRenderSize) {
22373
23013
  const observeTarget = (_b = this.insertedDomEl) !== null && _b !== void 0 ? _b : this.hostElement;
22374
23014
  this.resizeObserver = new ResizeObserver((entries) => {
22375
23015
  entries.forEach((entry) => {
@@ -22411,13 +23051,15 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
22411
23051
  logger$3.error(ERROR_MESSAGE.SYNC_STYLE_CALLED_BEFORE_RENDER);
22412
23052
  return;
22413
23053
  }
23054
+ if (!this.getPreRenderPlaceHolderElement().isConnected) {
23055
+ logger$3.debug('syncPreRenderStyle skipped: placeholder is detached');
23056
+ return;
23057
+ }
22414
23058
  // Self-heal if the resolved container was remounted/detached, so we
22415
23059
  // never measure a stale node (which would collapse the wrapper).
22416
23060
  this.reconcilePreRenderContainer();
22417
23061
  const elBoundingClient = this.getPreRenderPlaceHolderElement().getBoundingClientRect();
22418
- const containerEl = this.preRenderContainerEl && this.preRenderContainerEl !== document.body
22419
- ? this.preRenderContainerEl
22420
- : null;
23062
+ const containerEl = this.getCustomPreRenderContainer();
22421
23063
  const containerRect = (_a = containerEl === null || containerEl === void 0 ? void 0 : containerEl.getBoundingClientRect()) !== null && _a !== void 0 ? _a : { x: 0, y: 0 };
22422
23064
  const scrollX = containerEl ? containerEl.scrollLeft : window.scrollX;
22423
23065
  const scrollY = containerEl ? containerEl.scrollTop : window.scrollY;
@@ -22434,16 +23076,21 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
22434
23076
  * If the component is not preRendered, it issues a warning.
22435
23077
  */
22436
23078
  hidePreRender() {
23079
+ uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_HIDE_PRE_RENDER, {
23080
+ preRenderId: this.getPreRenderConfig().preRenderId,
23081
+ embedComponentType: this.viewConfig.embedComponentType,
23082
+ });
22437
23083
  logger$3.debug('HidePreRender Called');
22438
23084
  if (!this.isPreRenderConnected()) {
22439
23085
  // if the embed component is not preRendered , nothing to hide
22440
23086
  logger$3.warn('PreRender should be called before hiding it using hidePreRender.');
22441
23087
  return;
22442
23088
  }
23089
+ const { zIndex } = this.getPreRenderConfig();
22443
23090
  const preRenderHideStyles = {
22444
23091
  opacity: '0',
22445
23092
  pointerEvents: 'none',
22446
- zIndex: '-1000',
23093
+ zIndex: zIndex !== undefined ? String(zIndex) : '-1000',
22447
23094
  position: 'absolute',
22448
23095
  top: '0',
22449
23096
  left: '0',
@@ -22468,10 +23115,11 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
22468
23115
  * @property {string} child - The HTML element ID for the PreRender child.
22469
23116
  */
22470
23117
  getPreRenderIds() {
23118
+ const preRenderId = this.getPreRenderConfig().preRenderId;
22471
23119
  return {
22472
- wrapper: `${PRERENDER_WRAPPER_ID_PREFIX}${this.viewConfig.preRenderId}`,
22473
- child: `tsEmbed-pre-render-child-${this.viewConfig.preRenderId}`,
22474
- placeHolder: `tsEmbed-pre-render-placeholder-${this.viewConfig.preRenderId}`,
23120
+ wrapper: `${PRERENDER_WRAPPER_ID_PREFIX}${preRenderId}`,
23121
+ child: `tsEmbed-pre-render-child-${preRenderId}`,
23122
+ placeHolder: `tsEmbed-pre-render-placeholder-${preRenderId}`,
22475
23123
  };
22476
23124
  }
22477
23125
  /**
@@ -22641,6 +23289,31 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
22641
23289
  ...(visualOverrides !== undefined ? { visualOverridesParams: visualOverrides } : {}),
22642
23290
  },
22643
23291
  };
23292
+ }
23293
+ function buildSpotterShareConversationAppInitData(initData, viewConfig) {
23294
+ const { spotterShareConversationConfig } = viewConfig;
23295
+ if (!spotterShareConversationConfig)
23296
+ return initData;
23297
+ return {
23298
+ ...initData,
23299
+ embedParams: {
23300
+ ...(initData.embedParams || {}),
23301
+ spotterShareConversationConfig,
23302
+ },
23303
+ };
23304
+ }
23305
+ function buildStarterPromptsAppInitData(initData, viewConfig) {
23306
+ var _a;
23307
+ const starterPrompts = (_a = viewConfig.spotterChatConfig) === null || _a === void 0 ? void 0 : _a.starterPrompts;
23308
+ if (!starterPrompts)
23309
+ return initData;
23310
+ return {
23311
+ ...initData,
23312
+ embedParams: {
23313
+ ...(initData.embedParams || {}),
23314
+ starterPrompts,
23315
+ },
23316
+ };
22644
23317
  }
22645
23318
 
22646
23319
  function buildSpotterVizAppInitData(initData, viewConfig) {
@@ -22706,6 +23379,10 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
22706
23379
  * Collections listing page
22707
23380
  */
22708
23381
  Page["Collections"] = "collections";
23382
+ /**
23383
+ * Liveboard schedules listing page
23384
+ */
23385
+ Page["LiveboardSchedules"] = "liveboard-schedules";
22709
23386
  })(exports.Page || (exports.Page = {}));
22710
23387
  /**
22711
23388
  * Define the initial state of column custom group accordions
@@ -22754,6 +23431,9 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
22754
23431
  /**
22755
23432
  * Modular (v2) introduces the updated Modular Home Experience.
22756
23433
  * It serves as the foundational version of the home page.
23434
+ * Use {@link HomePage.ModularWithStylingChanges} (V3) or
23435
+ * {@link HomePage.Focused} (V4) instead.
23436
+ * @deprecated V1 and V2 home page experiences are deprecated.
22757
23437
  */
22758
23438
  HomePage["Modular"] = "v2";
22759
23439
  /**
@@ -22848,6 +23528,15 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
22848
23528
  this.setIFrameHeight(frameHeight || this.defaultHeight);
22849
23529
  };
22850
23530
  if (this.viewConfig.fullHeight === true) {
23531
+ if (this.viewConfig.lazyLoadingForFullHeight === undefined) {
23532
+ this.viewConfig.lazyLoadingForFullHeight = true;
23533
+ }
23534
+ if (this.viewConfig.enableScrollableContainerLazyLoading === undefined) {
23535
+ this.viewConfig.enableScrollableContainerLazyLoading = true;
23536
+ }
23537
+ if (this.viewConfig.lazyLoadingMargin === undefined) {
23538
+ this.viewConfig.lazyLoadingMargin = DEFAULT_LAZY_LOADING_MARGIN;
23539
+ }
22851
23540
  this.on(exports.EmbedEvent.RouteChange, this.setIframeHeightForNonEmbedLiveboard);
22852
23541
  this.on(exports.EmbedEvent.EmbedHeight, this.updateIFrameHeight);
22853
23542
  this.on(exports.EmbedEvent.EmbedIframeCenter, this.embedIframeCenter);
@@ -22869,14 +23558,20 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
22869
23558
  async getAppInitData() {
22870
23559
  const defaultAppInitData = await super.getAppInitData();
22871
23560
  const sidebarInitData = buildSpotterSidebarAppInitData(defaultAppInitData, this.viewConfig, this.handleError.bind(this));
22872
- return buildSpotterVizAppInitData(sidebarInitData, this.viewConfig);
23561
+ const vizInitData = buildSpotterVizAppInitData(sidebarInitData, this.viewConfig);
23562
+ const shareInitData = buildSpotterShareConversationAppInitData(vizInitData, this.viewConfig);
23563
+ return buildStarterPromptsAppInitData(shareInitData, this.viewConfig);
22873
23564
  }
22874
23565
  /**
22875
23566
  * Constructs a map of parameters to be passed on to the
22876
23567
  * embedded Liveboard or visualization.
22877
23568
  */
22878
23569
  getEmbedParams() {
22879
- 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 = exports.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, defaultQueryMode, enableStopAnswerGenerationEmbed, spotterChatConfig, minimumHeight, isThisPeriodInDateFiltersEnabled, enableHomepageAnnouncement = false, isContinuousLiveboardPDFEnabled = false, enableLiveboardDataCache, } = this.viewConfig;
23570
+ const params = this.getEmbedParamsObject();
23571
+ return getQueryParamString(params, true);
23572
+ }
23573
+ getEmbedParamsObject() {
23574
+ 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 = exports.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;
22880
23575
  let params = {};
22881
23576
  params[Param.PrimaryNavHidden] = !showPrimaryNavbar;
22882
23577
  params[Param.HideProfleAndHelp] = !!disableProfileAndHelp;
@@ -22886,34 +23581,51 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
22886
23581
  params[Param.ShowLiveboardTitle] = showLiveboardTitle;
22887
23582
  params[Param.ShowLiveboardDescription] = !!showLiveboardDescription;
22888
23583
  params[Param.ShowMaskedFilterChip] = showMaskedFilterChip;
22889
- params[Param.IsLiveboardMasterpiecesEnabled] = isLiveboardMasterpiecesEnabled;
23584
+ if (!isUndefined$1(isLiveboardMasterpiecesEnabled)) {
23585
+ params[Param.IsLiveboardMasterpiecesEnabled] = isLiveboardMasterpiecesEnabled;
23586
+ }
22890
23587
  if (newChartsLibrary !== undefined) {
22891
23588
  params[Param.EnableNewChartLibrary] = newChartsLibrary;
22892
23589
  }
22893
23590
  params[Param.LiveboardHeaderSticky] = isLiveboardHeaderSticky;
22894
23591
  params[Param.IsFullAppEmbed] = true;
22895
- params[Param.LiveboardHeaderV2] = isLiveboardCompactHeaderEnabled;
22896
- params[Param.IsEnhancedFilterInteractivityEnabled] = isEnhancedFilterInteractivityEnabled;
23592
+ if (!isUndefined$1(isLiveboardCompactHeaderEnabled)) {
23593
+ params[Param.LiveboardHeaderV2] = isLiveboardCompactHeaderEnabled;
23594
+ }
23595
+ if (!isUndefined$1(isEnhancedFilterInteractivityEnabled)) {
23596
+ params[Param.IsEnhancedFilterInteractivityEnabled] =
23597
+ isEnhancedFilterInteractivityEnabled;
23598
+ }
22897
23599
  params[Param.ShowLiveboardVerifiedBadge] = showLiveboardVerifiedBadge;
22898
23600
  params[Param.ShowLiveboardReverifyBanner] = showLiveboardReverifyBanner;
22899
- params[Param.HideIrrelevantFiltersInTab] = hideIrrelevantChipsInLiveboardTabs;
23601
+ if (!isUndefined$1(hideIrrelevantChipsInLiveboardTabs)) {
23602
+ params[Param.HideIrrelevantFiltersInTab] = hideIrrelevantChipsInLiveboardTabs;
23603
+ }
22900
23604
  if (isUnifiedSearchExperienceEnabled !== undefined) {
22901
23605
  params[Param.IsUnifiedSearchExperienceEnabled] = isUnifiedSearchExperienceEnabled;
22902
23606
  }
22903
- params[Param.CoverAndFilterOptionInPDF] = !!coverAndFilterOptionInPDF;
23607
+ if (!isUndefined$1(coverAndFilterOptionInPDF)) {
23608
+ params[Param.CoverAndFilterOptionInPDF] = !!coverAndFilterOptionInPDF;
23609
+ }
22904
23610
  params = this.getBaseQueryParams(params);
22905
23611
  if (!isUndefined$1(updatedSpotterChatPrompt)) {
22906
23612
  params[Param.UpdatedSpotterChatPrompt] = !!updatedSpotterChatPrompt;
22907
23613
  }
23614
+ if (!isUndefined$1(showSpotterRadiance)) {
23615
+ params[Param.ShowSpotterRadiance] = !!showSpotterRadiance;
23616
+ }
22908
23617
  if (!isUndefined$1(defaultQueryMode)) {
22909
23618
  params[Param.DefaultQueryMode] = defaultQueryMode;
22910
23619
  }
22911
23620
  if (!isUndefined$1(enableStopAnswerGenerationEmbed)) {
22912
23621
  params[Param.EnableStopAnswerGenerationEmbed] = !!enableStopAnswerGenerationEmbed;
22913
23622
  }
23623
+ if (spotterDataSources && spotterDataSources.length) {
23624
+ params[Param.SpotterDataSources] = JSON.stringify(spotterDataSources);
23625
+ }
22914
23626
  // Handle spotterChatConfig params
22915
23627
  if (spotterChatConfig) {
22916
- const { hideToolResponseCardBranding, toolResponseCardBrandingLabel, spotterFileUploadEnabled, spotterFileUploadFileTypes, enableStarterPrompts, } = spotterChatConfig;
23628
+ const { hideToolResponseCardBranding, toolResponseCardBrandingLabel, spotterFileUploadEnabled, spotterFileUploadFileTypes, enableStarterPrompts, openSpotterOnLiveboardByDefault, } = spotterChatConfig;
22917
23629
  setParamIfDefined(params, Param.HideToolResponseCardBranding, hideToolResponseCardBranding, true);
22918
23630
  setParamIfDefined(params, Param.ToolResponseCardBrandingLabel, toolResponseCardBrandingLabel);
22919
23631
  if (spotterFileUploadEnabled !== undefined) {
@@ -22922,10 +23634,16 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
22922
23634
  if (enableStarterPrompts !== undefined) {
22923
23635
  params[Param.IsStarterPromptsEnabled] = enableStarterPrompts;
22924
23636
  }
23637
+ if (openSpotterOnLiveboardByDefault !== undefined) {
23638
+ params[Param.OpenSpotterOnLiveboardByDefault] = openSpotterOnLiveboardByDefault;
23639
+ }
22925
23640
  if (spotterFileUploadFileTypes !== undefined) {
22926
23641
  params[Param.SpotterFileUploadFileTypes] = JSON.stringify(spotterFileUploadFileTypes);
22927
23642
  }
22928
23643
  }
23644
+ if (!isUndefined$1(updatedSpotterExperience)) {
23645
+ params[Param.UpdatedSpotterExperience] = !!updatedSpotterExperience;
23646
+ }
22929
23647
  if (hideObjectSearch) {
22930
23648
  params[Param.HideObjectSearch] = !!hideObjectSearch;
22931
23649
  }
@@ -22962,6 +23680,9 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
22962
23680
  if (enable2ColumnLayout !== undefined) {
22963
23681
  params[Param.Enable2ColumnLayout] = enable2ColumnLayout;
22964
23682
  }
23683
+ if (isLiveboardAlwaysOn12ColLayout !== undefined) {
23684
+ params[Param.IsLiveboardAlwaysOn12ColLayout] = isLiveboardAlwaysOn12ColLayout;
23685
+ }
22965
23686
  if (enableAskSage) {
22966
23687
  params[Param.enableAskSage] = enableAskSage;
22967
23688
  }
@@ -22974,6 +23695,9 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
22974
23695
  if (isLiveboardStylingAndGroupingEnabled !== undefined) {
22975
23696
  params[Param.IsLiveboardStylingAndGroupingEnabled] = isLiveboardStylingAndGroupingEnabled;
22976
23697
  }
23698
+ if (liveboardGutter !== undefined) {
23699
+ params[Param.LiveboardGutter] = liveboardGutter;
23700
+ }
22977
23701
  if (isPNGInScheduledEmailsEnabled !== undefined) {
22978
23702
  params[Param.isPNGInScheduledEmailsEnabled] = isPNGInScheduledEmailsEnabled;
22979
23703
  }
@@ -22992,6 +23716,9 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
22992
23716
  if (isCentralizedLiveboardFilterUXEnabled != undefined) {
22993
23717
  params[Param.isCentralizedLiveboardFilterUXEnabled] = isCentralizedLiveboardFilterUXEnabled;
22994
23718
  }
23719
+ if (isScopedLiveboardFilteringEnabled !== undefined) {
23720
+ params[Param.isScopedLiveboardFilteringEnabled] = isScopedLiveboardFilteringEnabled;
23721
+ }
22995
23722
  if (isThisPeriodInDateFiltersEnabled !== undefined) {
22996
23723
  params[Param.IsThisPeriodInDateFiltersEnabled] = isThisPeriodInDateFiltersEnabled;
22997
23724
  }
@@ -23007,7 +23734,6 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
23007
23734
  }
23008
23735
  params[Param.DataPanelV2Enabled] = dataPanelV2;
23009
23736
  params[Param.HideHomepageLeftNav] = hideHomepageLeftNav;
23010
- params[Param.ModularHomeExperienceEnabled] = modularHomeExperience;
23011
23737
  params[Param.CollapseSearchBarInitially] = collapseSearchBarInitially || collapseSearchBar;
23012
23738
  params[Param.EnableCustomColumnGroups] = enableCustomColumnGroups;
23013
23739
  if (dataPanelCustomGroupsAccordionInitialState
@@ -23022,33 +23748,15 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
23022
23748
  if (modularHomeExperience !== undefined) {
23023
23749
  params[Param.ModularHomeExperienceEnabled] = modularHomeExperience;
23024
23750
  }
23025
- // Set navigation to v2 by default to avoid problems like the app
23026
- // switcher (9-dot menu) not showing when v3 navigation is turned on
23027
- // at the cluster level.
23028
- // To use v3 navigation, we must manually set the discoveryExperience
23029
- // settings.
23030
- params[Param.NavigationVersion] = 'v2';
23031
- // Set homePageVersion to v2 by default to reset the LD flag value
23032
- // for the homepageVersion.
23033
- params[Param.HomepageVersion] = 'v2';
23751
+ // Navigation V1/V2 and home page V1/V2 are deprecated. V3 is now the
23752
+ // default experience, Need to send navigationVersion=v3 and
23753
+ // homepageVersion=v3 even when the no discoveryExperience /
23754
+ // modularHomeExperience config is set. Without these
23755
+ // params, older TSA versions (< 26.7) fall back to V2 for nav and
23756
+ // home page, so the defaults must be sent explicitly from the SDK.
23757
+ params[Param.NavigationVersion] = exports.PrimaryNavbarVersion.Sliding;
23758
+ params[Param.HomepageVersion] = exports.HomePage.ModularWithStylingChanges;
23034
23759
  if (discoveryExperience) {
23035
- // primaryNavbarVersion v3 will enabled the new left navigation
23036
- if (discoveryExperience.primaryNavbarVersion === exports.PrimaryNavbarVersion.Sliding) {
23037
- params[Param.NavigationVersion] = discoveryExperience.primaryNavbarVersion;
23038
- // Enable the modularHomeExperience when Sliding is enabled.
23039
- params[Param.ModularHomeExperienceEnabled] = true;
23040
- }
23041
- // homePage v2 will enable the modular home page
23042
- // and it will override the modularHomeExperience value
23043
- if (discoveryExperience.homePage === exports.HomePage.Modular) {
23044
- params[Param.ModularHomeExperienceEnabled] = true;
23045
- }
23046
- // ModularWithStylingChanges (v3) introduces the styling changes
23047
- // to the Modular Homepage.
23048
- // v3 will be the base version of homePageVersion.
23049
- if (discoveryExperience.homePage === exports.HomePage.ModularWithStylingChanges) {
23050
- params[Param.HomepageVersion] = exports.HomePage.ModularWithStylingChanges;
23051
- }
23052
23760
  // listPageVersion can be changed to v2 or v3
23053
23761
  if (discoveryExperience.listPageVersion !== undefined) {
23054
23762
  params[Param.ListPageVersion] = discoveryExperience.listPageVersion;
@@ -23063,8 +23771,7 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
23063
23771
  }
23064
23772
  }
23065
23773
  }
23066
- const queryParams = getQueryParamString(params, true);
23067
- return queryParams;
23774
+ return params;
23068
23775
  }
23069
23776
  /**
23070
23777
  * Constructs the URL of the ThoughtSpot app page to be rendered.
@@ -23101,6 +23808,8 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
23101
23808
  return modularHomeExperience ? 'home/monitor-alerts' : 'insights/monitor-alerts';
23102
23809
  case exports.Page.Collections:
23103
23810
  return 'collections';
23811
+ case exports.Page.LiveboardSchedules:
23812
+ return 'home/liveboard-schedules';
23104
23813
  case exports.Page.Home:
23105
23814
  default:
23106
23815
  return 'home';
@@ -23386,6 +24095,15 @@ query GetEurekaVizSnapshots(
23386
24095
  logger$3.warn('Full height is currently only supported for Liveboard embeds.' +
23387
24096
  'Using full height with vizId might lead to unexpected behavior.');
23388
24097
  }
24098
+ if (this.viewConfig.lazyLoadingForFullHeight === undefined) {
24099
+ this.viewConfig.lazyLoadingForFullHeight = true;
24100
+ }
24101
+ if (this.viewConfig.enableScrollableContainerLazyLoading === undefined) {
24102
+ this.viewConfig.enableScrollableContainerLazyLoading = true;
24103
+ }
24104
+ if (this.viewConfig.lazyLoadingMargin === undefined) {
24105
+ this.viewConfig.lazyLoadingMargin = DEFAULT_LAZY_LOADING_MARGIN;
24106
+ }
23389
24107
  this.on(exports.EmbedEvent.RouteChange, this.setIframeHeightForNonEmbedLiveboard);
23390
24108
  this.on(exports.EmbedEvent.EmbedHeight, this.updateIFrameHeight);
23391
24109
  this.on(exports.EmbedEvent.EmbedIframeCenter, this.embedIframeCenter);
@@ -23394,7 +24112,8 @@ query GetEurekaVizSnapshots(
23394
24112
  }
23395
24113
  async getAppInitData() {
23396
24114
  const defaultAppInitData = await super.getAppInitData();
23397
- return buildSpotterVizAppInitData(defaultAppInitData, this.viewConfig);
24115
+ const vizInitData = buildSpotterVizAppInitData(defaultAppInitData, this.viewConfig);
24116
+ return buildStarterPromptsAppInitData(vizInitData, this.viewConfig);
23398
24117
  }
23399
24118
  /**
23400
24119
  * Construct a map of params to be passed on to the
@@ -23408,7 +24127,7 @@ query GetEurekaVizSnapshots(
23408
24127
  getEmbedParamsObject() {
23409
24128
  let params = {};
23410
24129
  params = this.getBaseQueryParams(params);
23411
- 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;
24130
+ 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;
23412
24131
  const preventLiveboardFilterRemoval = this.viewConfig.preventLiveboardFilterRemoval
23413
24132
  || this.viewConfig.preventPinboardFilterRemoval;
23414
24133
  if (fullHeight === true) {
@@ -23430,6 +24149,9 @@ query GetEurekaVizSnapshots(
23430
24149
  if (!isUndefined$1(updatedSpotterChatPrompt)) {
23431
24150
  params[Param.UpdatedSpotterChatPrompt] = !!updatedSpotterChatPrompt;
23432
24151
  }
24152
+ if (!isUndefined$1(showSpotterRadiance)) {
24153
+ params[Param.ShowSpotterRadiance] = !!showSpotterRadiance;
24154
+ }
23433
24155
  if (!isUndefined$1(enableStopAnswerGenerationEmbed)) {
23434
24156
  params[Param.EnableStopAnswerGenerationEmbed] = !!enableStopAnswerGenerationEmbed;
23435
24157
  }
@@ -23446,6 +24168,9 @@ query GetEurekaVizSnapshots(
23446
24168
  if (enable2ColumnLayout !== undefined) {
23447
24169
  params[Param.Enable2ColumnLayout] = enable2ColumnLayout;
23448
24170
  }
24171
+ if (isLiveboardAlwaysOn12ColLayout !== undefined) {
24172
+ params[Param.IsLiveboardAlwaysOn12ColLayout] = isLiveboardAlwaysOn12ColLayout;
24173
+ }
23449
24174
  if (hideTabPanel) {
23450
24175
  params[Param.HideTabPanel] = hideTabPanel;
23451
24176
  }
@@ -23473,6 +24198,9 @@ query GetEurekaVizSnapshots(
23473
24198
  if (isLiveboardStylingAndGroupingEnabled !== undefined) {
23474
24199
  params[Param.IsLiveboardStylingAndGroupingEnabled] = isLiveboardStylingAndGroupingEnabled;
23475
24200
  }
24201
+ if (liveboardGutter !== undefined) {
24202
+ params[Param.LiveboardGutter] = liveboardGutter;
24203
+ }
23476
24204
  if (isPNGInScheduledEmailsEnabled !== undefined) {
23477
24205
  params[Param.isPNGInScheduledEmailsEnabled] = isPNGInScheduledEmailsEnabled;
23478
24206
  }
@@ -23485,9 +24213,12 @@ query GetEurekaVizSnapshots(
23485
24213
  if (showSpotterLimitations !== undefined) {
23486
24214
  params[Param.ShowSpotterLimitations] = showSpotterLimitations;
23487
24215
  }
24216
+ if (!isUndefined$1(updatedSpotterExperience)) {
24217
+ params[Param.UpdatedSpotterExperience] = !!updatedSpotterExperience;
24218
+ }
23488
24219
  // Handle spotterChatConfig params
23489
24220
  if (spotterChatConfig) {
23490
- const { hideToolResponseCardBranding, toolResponseCardBrandingLabel, spotterFileUploadEnabled, spotterFileUploadFileTypes, enableStarterPrompts, } = spotterChatConfig;
24221
+ const { hideToolResponseCardBranding, toolResponseCardBrandingLabel, spotterFileUploadEnabled, spotterFileUploadFileTypes, enableStarterPrompts, openSpotterOnLiveboardByDefault, } = spotterChatConfig;
23491
24222
  setParamIfDefined(params, Param.HideToolResponseCardBranding, hideToolResponseCardBranding, true);
23492
24223
  setParamIfDefined(params, Param.ToolResponseCardBrandingLabel, toolResponseCardBrandingLabel);
23493
24224
  if (spotterFileUploadEnabled !== undefined) {
@@ -23496,6 +24227,9 @@ query GetEurekaVizSnapshots(
23496
24227
  if (enableStarterPrompts !== undefined) {
23497
24228
  params[Param.IsStarterPromptsEnabled] = enableStarterPrompts;
23498
24229
  }
24230
+ if (openSpotterOnLiveboardByDefault !== undefined) {
24231
+ params[Param.OpenSpotterOnLiveboardByDefault] = openSpotterOnLiveboardByDefault;
24232
+ }
23499
24233
  if (spotterFileUploadFileTypes !== undefined) {
23500
24234
  params[Param.SpotterFileUploadFileTypes] = JSON.stringify(spotterFileUploadFileTypes);
23501
24235
  }
@@ -23506,6 +24240,9 @@ query GetEurekaVizSnapshots(
23506
24240
  if (isCentralizedLiveboardFilterUXEnabled !== undefined) {
23507
24241
  params[Param.isCentralizedLiveboardFilterUXEnabled] = isCentralizedLiveboardFilterUXEnabled;
23508
24242
  }
24243
+ if (isScopedLiveboardFilteringEnabled !== undefined) {
24244
+ params[Param.isScopedLiveboardFilteringEnabled] = isScopedLiveboardFilteringEnabled;
24245
+ }
23509
24246
  if (isThisPeriodInDateFiltersEnabled !== undefined) {
23510
24247
  params[Param.IsThisPeriodInDateFiltersEnabled] = isThisPeriodInDateFiltersEnabled;
23511
24248
  }
@@ -23519,16 +24256,27 @@ query GetEurekaVizSnapshots(
23519
24256
  params[Param.EnableNewChartLibrary] = newChartsLibrary;
23520
24257
  }
23521
24258
  params[Param.LiveboardHeaderSticky] = isLiveboardHeaderSticky;
23522
- params[Param.LiveboardHeaderV2] = isLiveboardCompactHeaderEnabled;
24259
+ if (!isUndefined$1(isLiveboardCompactHeaderEnabled)) {
24260
+ params[Param.LiveboardHeaderV2] = isLiveboardCompactHeaderEnabled;
24261
+ }
23523
24262
  params[Param.ShowLiveboardVerifiedBadge] = showLiveboardVerifiedBadge;
23524
24263
  params[Param.ShowLiveboardReverifyBanner] = showLiveboardReverifyBanner;
23525
- params[Param.HideIrrelevantFiltersInTab] = hideIrrelevantChipsInLiveboardTabs;
24264
+ if (!isUndefined$1(hideIrrelevantChipsInLiveboardTabs)) {
24265
+ params[Param.HideIrrelevantFiltersInTab] = hideIrrelevantChipsInLiveboardTabs;
24266
+ }
23526
24267
  params[Param.ShowMaskedFilterChip] = showMaskedFilterChip;
23527
- params[Param.IsLiveboardMasterpiecesEnabled] = isLiveboardMasterpiecesEnabled;
23528
- params[Param.IsEnhancedFilterInteractivityEnabled] = isEnhancedFilterInteractivityEnabled;
24268
+ if (!isUndefined$1(isLiveboardMasterpiecesEnabled)) {
24269
+ params[Param.IsLiveboardMasterpiecesEnabled] = isLiveboardMasterpiecesEnabled;
24270
+ }
24271
+ if (!isUndefined$1(isEnhancedFilterInteractivityEnabled)) {
24272
+ params[Param.IsEnhancedFilterInteractivityEnabled] =
24273
+ isEnhancedFilterInteractivityEnabled;
24274
+ }
23529
24275
  params[Param.DataPanelV2Enabled] = dataPanelV2;
23530
24276
  params[Param.EnableCustomColumnGroups] = enableCustomColumnGroups;
23531
- params[Param.CoverAndFilterOptionInPDF] = coverAndFilterOptionInPDF;
24277
+ if (!isUndefined$1(coverAndFilterOptionInPDF)) {
24278
+ params[Param.CoverAndFilterOptionInPDF] = coverAndFilterOptionInPDF;
24279
+ }
23532
24280
  getQueryParamString(params, true);
23533
24281
  return params;
23534
24282
  }
@@ -23727,7 +24475,7 @@ query GetEurekaVizSnapshots(
23727
24475
  if (this.isRendered) {
23728
24476
  this.trigger(exports.HostEvent.Navigate, path.substring(1));
23729
24477
  }
23730
- else if (this.viewConfig.preRenderId) {
24478
+ else if (this.getPreRenderConfig().preRenderId) {
23731
24479
  this.preRender(true);
23732
24480
  }
23733
24481
  else {
@@ -24599,18 +25347,12 @@ query SendMessage($params: Input_convassist_SendMessageRequest) {
24599
25347
  */
24600
25348
  async getAppInitData() {
24601
25349
  const defaultAppInitData = await super.getAppInitData();
24602
- return buildSpotterSidebarAppInitData(defaultAppInitData, this.viewConfig, this.handleError.bind(this));
25350
+ const sidebarInitData = buildSpotterSidebarAppInitData(defaultAppInitData, this.viewConfig, this.handleError.bind(this));
25351
+ const shareInitData = buildSpotterShareConversationAppInitData(sidebarInitData, this.viewConfig);
25352
+ return buildStarterPromptsAppInitData(shareInitData, this.viewConfig);
24603
25353
  }
24604
25354
  getEmbedParamsObject() {
24605
- const { worksheetId, searchOptions, disableSourceSelection, hideSourceSelection, dataPanelV2, showSpotterLimitations, hideSampleQuestions, runtimeFilters, excludeRuntimeFiltersfromURL, runtimeParameters, excludeRuntimeParametersfromURL, updatedSpotterChatPrompt, defaultQueryMode, enableStopAnswerGenerationEmbed, spotterChatConfig, } = this.viewConfig;
24606
- if (!worksheetId) {
24607
- this.handleError({
24608
- errorType: exports.ErrorDetailsTypes.VALIDATION_ERROR,
24609
- message: ERROR_MESSAGE.SPOTTER_EMBED_WORKSHEED_ID_NOT_FOUND,
24610
- code: exports.EmbedErrorCodes.WORKSHEET_ID_NOT_FOUND,
24611
- error: ERROR_MESSAGE.SPOTTER_EMBED_WORKSHEED_ID_NOT_FOUND,
24612
- });
24613
- }
25355
+ const { searchOptions, disableSourceSelection, hideSourceSelection, dataPanelV2, updatedSpotterExperience, showSpotterLimitations, hideSampleQuestions, runtimeFilters, excludeRuntimeFiltersfromURL, runtimeParameters, excludeRuntimeParametersfromURL, updatedSpotterChatPrompt, showSpotterRadiance, defaultQueryMode, enableStopAnswerGenerationEmbed, spotterChatConfig, spotterAnalystConfig, } = this.viewConfig;
24614
25356
  const queryParams = this.getBaseQueryParams();
24615
25357
  queryParams[Param.SpotterEnabled] = true;
24616
25358
  // Boolean params
@@ -24620,8 +25362,10 @@ query SendMessage($params: Input_convassist_SendMessageRequest) {
24620
25362
  setParamIfDefined(queryParams, Param.ShowSpotterLimitations, showSpotterLimitations, true);
24621
25363
  setParamIfDefined(queryParams, Param.HideSampleQuestions, hideSampleQuestions, true);
24622
25364
  setParamIfDefined(queryParams, Param.UpdatedSpotterChatPrompt, updatedSpotterChatPrompt, true);
25365
+ setParamIfDefined(queryParams, Param.ShowSpotterRadiance, showSpotterRadiance, true);
24623
25366
  setParamIfDefined(queryParams, Param.DefaultQueryMode, defaultQueryMode);
24624
25367
  setParamIfDefined(queryParams, Param.EnableStopAnswerGenerationEmbed, enableStopAnswerGenerationEmbed, true);
25368
+ setParamIfDefined(queryParams, Param.AnalystId, spotterAnalystConfig === null || spotterAnalystConfig === void 0 ? void 0 : spotterAnalystConfig.analystId);
24625
25369
  // Handle spotterChatConfig params
24626
25370
  if (spotterChatConfig) {
24627
25371
  const { hideToolResponseCardBranding, toolResponseCardBrandingLabel, spotterFileUploadEnabled, spotterFileUploadFileTypes, enableStarterPrompts, } = spotterChatConfig;
@@ -24633,11 +25377,18 @@ query SendMessage($params: Input_convassist_SendMessageRequest) {
24633
25377
  queryParams[Param.SpotterFileUploadFileTypes] = JSON.stringify(spotterFileUploadFileTypes);
24634
25378
  }
24635
25379
  }
25380
+ setParamIfDefined(queryParams, Param.UpdatedSpotterExperience, updatedSpotterExperience, true);
24636
25381
  return queryParams;
24637
25382
  }
24638
25383
  getIframeSrc() {
24639
- const { worksheetId, searchOptions, runtimeFilters, excludeRuntimeFiltersfromURL, runtimeParameters, excludeRuntimeParametersfromURL, } = this.viewConfig;
24640
- const path = 'insights/conv-assist';
25384
+ const { worksheetId, searchOptions, runtimeFilters, excludeRuntimeFiltersfromURL, runtimeParameters, excludeRuntimeParametersfromURL, sharedConversationId, dataSources, } = this.viewConfig;
25385
+ // Deep-link into the read-only shared-conversation reader view when a
25386
+ // shared conversation id is supplied (e.g. a recipient landing from a
25387
+ // host-configured CONVERSATION_URL share link); otherwise the normal
25388
+ // Spotter conversation surface.
25389
+ const path = sharedConversationId
25390
+ ? `insights/conv-assist/s/${encodeURIComponent(sharedConversationId)}`
25391
+ : 'insights/conv-assist';
24641
25392
  const queryParams = this.getEmbedParamsObject();
24642
25393
  let query = '';
24643
25394
  const queryParamsString = getQueryParamString(queryParams, true);
@@ -24653,8 +25404,12 @@ query SendMessage($params: Input_convassist_SendMessageRequest) {
24653
25404
  query += `&${parameterQuery}`;
24654
25405
  }
24655
25406
  const tsPostHashParams = this.getThoughtSpotPostUrlParams({
24656
- worksheet: worksheetId,
24657
- query: (searchOptions === null || searchOptions === void 0 ? void 0 : searchOptions.searchQuery) || '',
25407
+ ...(!(Array.isArray(dataSources) && dataSources.length > 0) && worksheetId
25408
+ && { worksheet: worksheetId }),
25409
+ ...((searchOptions === null || searchOptions === void 0 ? void 0 : searchOptions.searchQuery) && { query: searchOptions.searchQuery }),
25410
+ ...(Array.isArray(dataSources)
25411
+ && dataSources.length > 0
25412
+ && { dataSources: JSON.stringify(dataSources) }),
24658
25413
  });
24659
25414
  return `${this.getEmbedBasePath(query)}/embed/${path}${tsPostHashParams}`;
24660
25415
  }