@thoughtspot/visual-embed-sdk 1.50.0 → 1.51.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (222) hide show
  1. package/cjs/package.json +1 -1
  2. package/cjs/src/css-variables.d.ts +95 -0
  3. package/cjs/src/css-variables.d.ts.map +1 -1
  4. package/cjs/src/embed/app.d.ts +136 -15
  5. package/cjs/src/embed/app.d.ts.map +1 -1
  6. package/cjs/src/embed/app.js +59 -37
  7. package/cjs/src/embed/app.js.map +1 -1
  8. package/cjs/src/embed/app.spec.js +419 -149
  9. package/cjs/src/embed/app.spec.js.map +1 -1
  10. package/cjs/src/embed/conversation.d.ts +230 -1
  11. package/cjs/src/embed/conversation.d.ts.map +1 -1
  12. package/cjs/src/embed/conversation.js +30 -16
  13. package/cjs/src/embed/conversation.js.map +1 -1
  14. package/cjs/src/embed/conversation.spec.js +221 -17
  15. package/cjs/src/embed/conversation.spec.js.map +1 -1
  16. package/cjs/src/embed/events.spec.js +635 -0
  17. package/cjs/src/embed/events.spec.js.map +1 -1
  18. package/cjs/src/embed/host-events.spec.js +151 -0
  19. package/cjs/src/embed/host-events.spec.js.map +1 -1
  20. package/cjs/src/embed/hostEventClient/contracts.d.ts +51 -14
  21. package/cjs/src/embed/hostEventClient/contracts.d.ts.map +1 -1
  22. package/cjs/src/embed/hostEventClient/contracts.js +11 -1
  23. package/cjs/src/embed/hostEventClient/contracts.js.map +1 -1
  24. package/cjs/src/embed/hostEventClient/host-event-client.d.ts +1 -0
  25. package/cjs/src/embed/hostEventClient/host-event-client.d.ts.map +1 -1
  26. package/cjs/src/embed/hostEventClient/host-event-client.js +9 -0
  27. package/cjs/src/embed/hostEventClient/host-event-client.js.map +1 -1
  28. package/cjs/src/embed/hostEventClient/host-event-client.spec.js +218 -0
  29. package/cjs/src/embed/hostEventClient/host-event-client.spec.js.map +1 -1
  30. package/cjs/src/embed/hostEventClient/utils.d.ts +2 -0
  31. package/cjs/src/embed/hostEventClient/utils.d.ts.map +1 -1
  32. package/cjs/src/embed/hostEventClient/utils.js +32 -2
  33. package/cjs/src/embed/hostEventClient/utils.js.map +1 -1
  34. package/cjs/src/embed/hostEventClient/utils.spec.js +178 -0
  35. package/cjs/src/embed/hostEventClient/utils.spec.js.map +1 -1
  36. package/cjs/src/embed/liveboard.d.ts +42 -1
  37. package/cjs/src/embed/liveboard.d.ts.map +1 -1
  38. package/cjs/src/embed/liveboard.js +26 -6
  39. package/cjs/src/embed/liveboard.js.map +1 -1
  40. package/cjs/src/embed/liveboard.spec.js +83 -2
  41. package/cjs/src/embed/liveboard.spec.js.map +1 -1
  42. package/cjs/src/embed/spotter-utils.d.ts +8 -1
  43. package/cjs/src/embed/spotter-utils.d.ts.map +1 -1
  44. package/cjs/src/embed/spotter-utils.js +14 -1
  45. package/cjs/src/embed/spotter-utils.js.map +1 -1
  46. package/cjs/src/embed/spotter-utils.spec.js +61 -0
  47. package/cjs/src/embed/spotter-utils.spec.js.map +1 -1
  48. package/cjs/src/embed/spotter-viz-utils.d.ts +34 -0
  49. package/cjs/src/embed/spotter-viz-utils.d.ts.map +1 -1
  50. package/cjs/src/embed/spotter-viz-utils.js.map +1 -1
  51. package/cjs/src/embed/spotter-viz-utils.spec.js +17 -0
  52. package/cjs/src/embed/spotter-viz-utils.spec.js.map +1 -1
  53. package/cjs/src/embed/ts-embed.d.ts.map +1 -1
  54. package/cjs/src/embed/ts-embed.js +29 -7
  55. package/cjs/src/embed/ts-embed.js.map +1 -1
  56. package/cjs/src/embed/ts-embed.spec.js +146 -0
  57. package/cjs/src/embed/ts-embed.spec.js.map +1 -1
  58. package/cjs/src/errors.d.ts +1 -0
  59. package/cjs/src/errors.d.ts.map +1 -1
  60. package/cjs/src/errors.js +1 -0
  61. package/cjs/src/errors.js.map +1 -1
  62. package/cjs/src/index.d.ts +2 -2
  63. package/cjs/src/index.d.ts.map +1 -1
  64. package/cjs/src/index.js +3 -2
  65. package/cjs/src/index.js.map +1 -1
  66. package/cjs/src/mixpanel-service.d.ts +4 -0
  67. package/cjs/src/mixpanel-service.d.ts.map +1 -1
  68. package/cjs/src/mixpanel-service.js +4 -0
  69. package/cjs/src/mixpanel-service.js.map +1 -1
  70. package/cjs/src/react/util.spec.js +251 -0
  71. package/cjs/src/react/util.spec.js.map +1 -1
  72. package/cjs/src/types.d.ts +573 -11
  73. package/cjs/src/types.d.ts.map +1 -1
  74. package/cjs/src/types.js +519 -2
  75. package/cjs/src/types.js.map +1 -1
  76. package/cjs/src/utils/processData.spec.js +93 -0
  77. package/cjs/src/utils/processData.spec.js.map +1 -1
  78. package/cjs/src/utils/processTrigger.spec.js +61 -0
  79. package/cjs/src/utils/processTrigger.spec.js.map +1 -1
  80. package/dist/{index-B5xoN6Cp.js → index-aBzH5ZwF.js} +1 -1
  81. package/dist/src/css-variables.d.ts +95 -0
  82. package/dist/src/css-variables.d.ts.map +1 -1
  83. package/dist/src/embed/app.d.ts +136 -15
  84. package/dist/src/embed/app.d.ts.map +1 -1
  85. package/dist/src/embed/conversation.d.ts +230 -1
  86. package/dist/src/embed/conversation.d.ts.map +1 -1
  87. package/dist/src/embed/hostEventClient/contracts.d.ts +51 -14
  88. package/dist/src/embed/hostEventClient/contracts.d.ts.map +1 -1
  89. package/dist/src/embed/hostEventClient/host-event-client.d.ts +1 -0
  90. package/dist/src/embed/hostEventClient/host-event-client.d.ts.map +1 -1
  91. package/dist/src/embed/hostEventClient/utils.d.ts +2 -0
  92. package/dist/src/embed/hostEventClient/utils.d.ts.map +1 -1
  93. package/dist/src/embed/liveboard.d.ts +42 -1
  94. package/dist/src/embed/liveboard.d.ts.map +1 -1
  95. package/dist/src/embed/spotter-utils.d.ts +8 -1
  96. package/dist/src/embed/spotter-utils.d.ts.map +1 -1
  97. package/dist/src/embed/spotter-viz-utils.d.ts +34 -0
  98. package/dist/src/embed/spotter-viz-utils.d.ts.map +1 -1
  99. package/dist/src/embed/ts-embed.d.ts.map +1 -1
  100. package/dist/src/errors.d.ts +1 -0
  101. package/dist/src/errors.d.ts.map +1 -1
  102. package/dist/src/index.d.ts +2 -2
  103. package/dist/src/index.d.ts.map +1 -1
  104. package/dist/src/mixpanel-service.d.ts +4 -0
  105. package/dist/src/mixpanel-service.d.ts.map +1 -1
  106. package/dist/src/types.d.ts +573 -11
  107. package/dist/src/types.d.ts.map +1 -1
  108. package/dist/tsembed-react.es.js +936 -142
  109. package/dist/tsembed-react.js +935 -141
  110. package/dist/tsembed.es.js +935 -142
  111. package/dist/tsembed.js +933 -140
  112. package/dist/visual-embed-sdk-react-full.d.ts +1147 -44
  113. package/dist/visual-embed-sdk-react.d.ts +1153 -46
  114. package/dist/visual-embed-sdk.d.ts +1161 -46
  115. package/lib/package.json +1 -1
  116. package/lib/src/css-variables.d.ts +95 -0
  117. package/lib/src/css-variables.d.ts.map +1 -1
  118. package/lib/src/embed/app.d.ts +136 -15
  119. package/lib/src/embed/app.d.ts.map +1 -1
  120. package/lib/src/embed/app.js +60 -38
  121. package/lib/src/embed/app.js.map +1 -1
  122. package/lib/src/embed/app.spec.js +420 -150
  123. package/lib/src/embed/app.spec.js.map +1 -1
  124. package/lib/src/embed/conversation.d.ts +230 -1
  125. package/lib/src/embed/conversation.d.ts.map +1 -1
  126. package/lib/src/embed/conversation.js +31 -17
  127. package/lib/src/embed/conversation.js.map +1 -1
  128. package/lib/src/embed/conversation.spec.js +222 -18
  129. package/lib/src/embed/conversation.spec.js.map +1 -1
  130. package/lib/src/embed/events.spec.js +635 -0
  131. package/lib/src/embed/events.spec.js.map +1 -1
  132. package/lib/src/embed/host-events.spec.js +152 -1
  133. package/lib/src/embed/host-events.spec.js.map +1 -1
  134. package/lib/src/embed/hostEventClient/contracts.d.ts +51 -14
  135. package/lib/src/embed/hostEventClient/contracts.d.ts.map +1 -1
  136. package/lib/src/embed/hostEventClient/contracts.js +10 -0
  137. package/lib/src/embed/hostEventClient/contracts.js.map +1 -1
  138. package/lib/src/embed/hostEventClient/host-event-client.d.ts +1 -0
  139. package/lib/src/embed/hostEventClient/host-event-client.d.ts.map +1 -1
  140. package/lib/src/embed/hostEventClient/host-event-client.js +10 -1
  141. package/lib/src/embed/hostEventClient/host-event-client.js.map +1 -1
  142. package/lib/src/embed/hostEventClient/host-event-client.spec.js +218 -0
  143. package/lib/src/embed/hostEventClient/host-event-client.spec.js.map +1 -1
  144. package/lib/src/embed/hostEventClient/utils.d.ts +2 -0
  145. package/lib/src/embed/hostEventClient/utils.d.ts.map +1 -1
  146. package/lib/src/embed/hostEventClient/utils.js +28 -1
  147. package/lib/src/embed/hostEventClient/utils.js.map +1 -1
  148. package/lib/src/embed/hostEventClient/utils.spec.js +179 -1
  149. package/lib/src/embed/hostEventClient/utils.spec.js.map +1 -1
  150. package/lib/src/embed/liveboard.d.ts +42 -1
  151. package/lib/src/embed/liveboard.d.ts.map +1 -1
  152. package/lib/src/embed/liveboard.js +26 -6
  153. package/lib/src/embed/liveboard.js.map +1 -1
  154. package/lib/src/embed/liveboard.spec.js +83 -2
  155. package/lib/src/embed/liveboard.spec.js.map +1 -1
  156. package/lib/src/embed/spotter-utils.d.ts +8 -1
  157. package/lib/src/embed/spotter-utils.d.ts.map +1 -1
  158. package/lib/src/embed/spotter-utils.js +12 -0
  159. package/lib/src/embed/spotter-utils.js.map +1 -1
  160. package/lib/src/embed/spotter-utils.spec.js +62 -1
  161. package/lib/src/embed/spotter-utils.spec.js.map +1 -1
  162. package/lib/src/embed/spotter-viz-utils.d.ts +34 -0
  163. package/lib/src/embed/spotter-viz-utils.d.ts.map +1 -1
  164. package/lib/src/embed/spotter-viz-utils.js.map +1 -1
  165. package/lib/src/embed/spotter-viz-utils.spec.js +17 -0
  166. package/lib/src/embed/spotter-viz-utils.spec.js.map +1 -1
  167. package/lib/src/embed/ts-embed.d.ts.map +1 -1
  168. package/lib/src/embed/ts-embed.js +29 -7
  169. package/lib/src/embed/ts-embed.js.map +1 -1
  170. package/lib/src/embed/ts-embed.spec.js +146 -0
  171. package/lib/src/embed/ts-embed.spec.js.map +1 -1
  172. package/lib/src/errors.d.ts +1 -0
  173. package/lib/src/errors.d.ts.map +1 -1
  174. package/lib/src/errors.js +1 -0
  175. package/lib/src/errors.js.map +1 -1
  176. package/lib/src/index.d.ts +2 -2
  177. package/lib/src/index.d.ts.map +1 -1
  178. package/lib/src/index.js +2 -2
  179. package/lib/src/index.js.map +1 -1
  180. package/lib/src/mixpanel-service.d.ts +4 -0
  181. package/lib/src/mixpanel-service.d.ts.map +1 -1
  182. package/lib/src/mixpanel-service.js +4 -0
  183. package/lib/src/mixpanel-service.js.map +1 -1
  184. package/lib/src/react/util.spec.js +251 -0
  185. package/lib/src/react/util.spec.js.map +1 -1
  186. package/lib/src/types.d.ts +573 -11
  187. package/lib/src/types.d.ts.map +1 -1
  188. package/lib/src/types.js +519 -2
  189. package/lib/src/types.js.map +1 -1
  190. package/lib/src/utils/processData.spec.js +93 -0
  191. package/lib/src/utils/processData.spec.js.map +1 -1
  192. package/lib/src/utils/processTrigger.spec.js +61 -0
  193. package/lib/src/utils/processTrigger.spec.js.map +1 -1
  194. package/lib/src/visual-embed-sdk.d.ts +1161 -46
  195. package/package.json +1 -1
  196. package/src/css-variables.ts +118 -0
  197. package/src/embed/app.spec.ts +530 -183
  198. package/src/embed/app.ts +209 -66
  199. package/src/embed/conversation.spec.ts +275 -21
  200. package/src/embed/conversation.ts +262 -17
  201. package/src/embed/events.spec.ts +757 -1
  202. package/src/embed/host-events.spec.ts +194 -0
  203. package/src/embed/hostEventClient/contracts.ts +57 -14
  204. package/src/embed/hostEventClient/host-event-client.spec.ts +338 -0
  205. package/src/embed/hostEventClient/host-event-client.ts +16 -0
  206. package/src/embed/hostEventClient/utils.spec.ts +204 -0
  207. package/src/embed/hostEventClient/utils.ts +37 -10
  208. package/src/embed/liveboard.spec.ts +108 -2
  209. package/src/embed/liveboard.ts +82 -14
  210. package/src/embed/spotter-utils.spec.ts +68 -1
  211. package/src/embed/spotter-utils.ts +16 -1
  212. package/src/embed/spotter-viz-utils.spec.ts +17 -0
  213. package/src/embed/spotter-viz-utils.ts +34 -0
  214. package/src/embed/ts-embed.spec.ts +186 -0
  215. package/src/embed/ts-embed.ts +30 -4
  216. package/src/errors.ts +1 -0
  217. package/src/index.ts +3 -1
  218. package/src/mixpanel-service.ts +4 -0
  219. package/src/react/util.spec.tsx +255 -0
  220. package/src/types.ts +575 -8
  221. package/src/utils/processData.spec.ts +97 -0
  222. package/src/utils/processTrigger.spec.ts +91 -0
@@ -1,4 +1,4 @@
1
- /* @thoughtspot/visual-embed-sdk version 1.50.0 */
1
+ /* @thoughtspot/visual-embed-sdk version 1.51.0 */
2
2
  'use client';
3
3
  function _mergeNamespaces(n, m) {
4
4
  m.forEach(function (e) {
@@ -189,7 +189,9 @@ var AuthType;
189
189
  })(AuthType || (AuthType = {}));
190
190
  /**
191
191
  *
192
- * **Note**: This attribute is not supported in the classic (V1) homepage experience.
192
+ * **Note**: The classic (V1) and Modular (V2) home page experiences are
193
+ * deprecated. This attribute applies to V3 (ModularWithStylingChanges) and
194
+ * V4 (Focused) home page experiences.
193
195
  *
194
196
  */
195
197
  var HomeLeftNavItem;
@@ -257,6 +259,13 @@ var HomeLeftNavItem;
257
259
  * @version SDK: 1.41.0 | ThoughtSpot: 10.12.0.cl
258
260
  */
259
261
  HomeLeftNavItem["Favorites"] = "favorites";
262
+ /**
263
+ * The *Collections* menu option in
264
+ * the *Insights* left navigation panel.
265
+ * Shown when collections are enabled on the cluster.
266
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
267
+ */
268
+ HomeLeftNavItem["Collections"] = "collections";
260
269
  })(HomeLeftNavItem || (HomeLeftNavItem = {}));
261
270
  /**
262
271
  * A map of the supported runtime filter operations
@@ -329,7 +338,9 @@ var RuntimeFilterOp;
329
338
  * via `hiddenHomepageModules` and reordered via
330
339
  * `reorderedHomepageModules`.
331
340
  *
332
- * **Note**: This option is not supported in the classic (v1) experience.
341
+ * **Note**: The classic (V1) and Modular (V2) home page experiences are
342
+ * deprecated. These modules apply to V3 (ModularWithStylingChanges) and
343
+ * V4 (Focused) home page experiences.
333
344
  * @version SDK: 1.28.0 | ThoughtSpot: 9.12.5.cl, 10.1.0.sw
334
345
  */
335
346
  var HomepageModule;
@@ -1287,11 +1298,19 @@ var EmbedEvent;
1287
1298
  * Emitted when a user changes any filter on a Liveboard.
1288
1299
  * Returns filter type and name, column name and ID, and runtime
1289
1300
  * filter details.
1301
+ * The payload includes an optional `applicability` attribute indicating the
1302
+ * scope of the changed filter. It contains a `level` (`LIVEBOARD`,
1303
+ * `TAB`, or `GROUP`) and, when `level` is `TAB` or `GROUP`, a
1304
+ * `targetId` with the GUID of the target. At `LIVEBOARD` level there
1305
+ * is no `targetId`, since the filter applies to the whole Liveboard.
1306
+ * The `applicability` attribute is available from SDK: 1.53.0 |
1307
+ * ThoughtSpot: 26.10.0.cl.
1290
1308
  * @example
1291
1309
  *
1292
1310
  * ```js
1293
1311
  * LiveboardEmbed.on(EmbedEvent.FilterChanged, (payload) => {
1294
1312
  * console.log('payload', payload);
1313
+ * // payload.data optionally includes applicability: { level, targetId }
1295
1314
  * })
1296
1315
  * ```
1297
1316
  * @version SDK: 1.23.0 | ThoughtSpot: 9.4.0.cl, 9.5.0.sw
@@ -1483,9 +1502,17 @@ var EmbedEvent;
1483
1502
  /**
1484
1503
  * Emitted when parameter changes in an Answer
1485
1504
  * or Liveboard.
1505
+ * The payload includes an optional `applicability` attribute indicating the
1506
+ * scope of the changed parameter. It contains a `level` (`LIVEBOARD`,
1507
+ * `TAB`, or `GROUP`) and, when `level` is `TAB` or `GROUP`, a
1508
+ * `targetId` with the GUID of the target. At `LIVEBOARD` level there
1509
+ * is no `targetId`, since the parameter applies to the whole Liveboard.
1510
+ * The `applicability` attribute is available from SDK: 1.53.0 |
1511
+ * ThoughtSpot: 26.10.0.cl.
1486
1512
  * ```js
1487
1513
  * liveboardEmbed.on(EmbedEvent.ParameterChanged, (payload) => {
1488
1514
  * console.log('payload', payload);
1515
+ * // payload.data optionally includes applicability: { level, targetId }
1489
1516
  * })
1490
1517
  * ```
1491
1518
  * @version SDK: 1.29.0 | ThoughtSpot: 10.3.0.cl
@@ -1787,6 +1814,158 @@ var EmbedEvent;
1787
1814
  * @version SDK: 1.46.0 | ThoughtSpot: 26.3.0.cl
1788
1815
  */
1789
1816
  EmbedEvent["SpotterConversationDeleted"] = "spotterConversationDeleted";
1817
+ /**
1818
+ * Emitted when the header Share button is clicked. Fires `Start` then `End`
1819
+ * to bracket the interaction. App→host counterpart of the
1820
+ * `ShareSpotterConversation` host event (user-driven vs programmatic open).
1821
+ * @example
1822
+ * ```js
1823
+ * spotterEmbed.on(EmbedEvent.SpotterShareConversationButtonHeaderClicked, (payload) => {
1824
+ * // payload: { convId: string }
1825
+ * })
1826
+ * ```
1827
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
1828
+ */
1829
+ EmbedEvent["SpotterShareConversationButtonHeaderClicked"] = "spotterShareConversationButtonHeaderClicked";
1830
+ /**
1831
+ * Emitted when the sidebar Share item is clicked. Fires `Start` then `End`
1832
+ * to bracket the interaction.
1833
+ * @example
1834
+ * ```js
1835
+ * spotterEmbed.on(EmbedEvent.SpotterShareConversationMenuItemSidebarClicked, (payload) => {
1836
+ * // payload: { convId: string }
1837
+ * })
1838
+ * ```
1839
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
1840
+ */
1841
+ EmbedEvent["SpotterShareConversationMenuItemSidebarClicked"] = "spotterShareConversationMenuItemSidebarClicked";
1842
+ /**
1843
+ * Emitted when a Spotter conversation is shared (recipients added, or a new
1844
+ * share created). The host builds its own link from shareId/convId + its
1845
+ * configured CONVERSATION_URL — no link string is sent. Distinct from
1846
+ * `SpotterShareModalConfirmButtonClicked`, which fires at click time before
1847
+ * the save resolves.
1848
+ * @example
1849
+ * ```js
1850
+ * spotterEmbed.on(EmbedEvent.SpotterConversationShared, (payload) => {
1851
+ * // payload: { convId: string, shareId: string,
1852
+ * // recipientsAdded: string[], recipientsRemoved: string[] }
1853
+ * })
1854
+ * ```
1855
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
1856
+ */
1857
+ EmbedEvent["SpotterConversationShared"] = "spotterConversationShared";
1858
+ /**
1859
+ * Emitted when access to a shared Spotter conversation is revoked
1860
+ * (recipients removed). `fullyRevoked` is true when the last sharee is removed
1861
+ * and the share is deleted entirely.
1862
+ * @example
1863
+ * ```js
1864
+ * spotterEmbed.on(EmbedEvent.SpotterConversationShareRevoked, (payload) => {
1865
+ * // payload: { convId: string, shareId: string,
1866
+ * // recipientsRemoved: string[], fullyRevoked: boolean }
1867
+ * })
1868
+ * ```
1869
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
1870
+ */
1871
+ EmbedEvent["SpotterConversationShareRevoked"] = "spotterConversationShareRevoked";
1872
+ /**
1873
+ * Emitted when a recipient opens a shared Spotter conversation (read-only
1874
+ * view). No shareId available viewer-side.
1875
+ * @example
1876
+ * ```js
1877
+ * spotterEmbed.on(EmbedEvent.SpotterSharedConversationViewed, (payload) => {
1878
+ * // payload: { convId: string, sourceConvId: string }
1879
+ * // convId = resolved snapshot conv id; sourceConvId = the shared URL id
1880
+ * })
1881
+ * ```
1882
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
1883
+ */
1884
+ EmbedEvent["SpotterSharedConversationViewed"] = "spotterSharedConversationViewed";
1885
+ /**
1886
+ * Emitted when the user toggles the share-modal "include new messages since
1887
+ * last shared version" checkbox.
1888
+ * @example
1889
+ * ```js
1890
+ * spotterEmbed.on(EmbedEvent.SpotterShareIncludeNewMessagesCheckboxToggled, (payload) => {
1891
+ * // payload: { convId: string, includeNewMessages: boolean }
1892
+ * })
1893
+ * ```
1894
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
1895
+ */
1896
+ EmbedEvent["SpotterShareIncludeNewMessagesCheckboxToggled"] = "spotterShareIncludeNewMessagesCheckboxToggled";
1897
+ /**
1898
+ * Emitted when the user dismisses the stale-snapshot info banner via its
1899
+ * cross (distinct from the include-new-messages checkbox toggle).
1900
+ * @example
1901
+ * ```js
1902
+ * spotterEmbed.on(EmbedEvent.SpotterShareStaleInfoBannerDismissed, (payload) => {
1903
+ * // payload: { convId: string }
1904
+ * })
1905
+ * ```
1906
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
1907
+ */
1908
+ EmbedEvent["SpotterShareStaleInfoBannerDismissed"] = "spotterShareStaleInfoBannerDismissed";
1909
+ /**
1910
+ * Emitted when the modal Share (confirm) button is clicked — fires at click
1911
+ * time, before the save resolves. Distinct from the `SpotterConversationShared`
1912
+ * / `SpotterConversationShareRevoked` result events.
1913
+ * @example
1914
+ * ```js
1915
+ * spotterEmbed.on(EmbedEvent.SpotterShareModalConfirmButtonClicked, (payload) => {
1916
+ * // payload: { convId: string }
1917
+ * })
1918
+ * ```
1919
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
1920
+ */
1921
+ EmbedEvent["SpotterShareModalConfirmButtonClicked"] = "spotterShareModalConfirmButtonClicked";
1922
+ /**
1923
+ * Emitted when the share modal is dismissed via the Cancel button.
1924
+ * @example
1925
+ * ```js
1926
+ * spotterEmbed.on(EmbedEvent.SpotterShareModalCancelButtonClicked, (payload) => {
1927
+ * // payload: { convId: string }
1928
+ * })
1929
+ * ```
1930
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
1931
+ */
1932
+ EmbedEvent["SpotterShareModalCancelButtonClicked"] = "spotterShareModalCancelButtonClicked";
1933
+ /**
1934
+ * Emitted when a recipient leaves the read-only shared view via the Exit
1935
+ * button.
1936
+ * @example
1937
+ * ```js
1938
+ * spotterEmbed.on(EmbedEvent.SpotterSharedConversationExitButtonClicked, (payload) => {
1939
+ * // payload: { convId: string }
1940
+ * })
1941
+ * ```
1942
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
1943
+ */
1944
+ EmbedEvent["SpotterSharedConversationExitButtonClicked"] = "spotterSharedConversationExitButtonClicked";
1945
+ /**
1946
+ * Emitted when a Spotter conversation is pinned.
1947
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
1948
+ * @example
1949
+ * ```js
1950
+ * spotterEmbed.on(EmbedEvent.SpotterConversationPinned, (payload) => {
1951
+ * console.log('Conversation pinned', payload);
1952
+ * // payload: { conversationId: string, pinnedAt: string (ISO 8601) }
1953
+ * })
1954
+ * ```
1955
+ */
1956
+ EmbedEvent["SpotterConversationPinned"] = "spotterConversationPinned";
1957
+ /**
1958
+ * Emitted when a Spotter conversation is unpinned.
1959
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
1960
+ * @example
1961
+ * ```js
1962
+ * spotterEmbed.on(EmbedEvent.SpotterConversationUnpinned, (payload) => {
1963
+ * console.log('Conversation unpinned', payload);
1964
+ * // payload: { conversationId: string, unpinnedAt: string (ISO 8601) }
1965
+ * })
1966
+ * ```
1967
+ */
1968
+ EmbedEvent["SpotterConversationUnpinned"] = "spotterConversationUnpinned";
1790
1969
  /**
1791
1970
  * Emitted when a Spotter conversation is selected/clicked.
1792
1971
  * @example
@@ -1799,6 +1978,30 @@ var EmbedEvent;
1799
1978
  * @version SDK: 1.46.0 | ThoughtSpot: 26.3.0.cl
1800
1979
  */
1801
1980
  EmbedEvent["SpotterConversationSelected"] = "spotterConversationSelected";
1981
+ /**
1982
+ * Emitted when the Spotter agent finishes streaming/rendering a response.
1983
+ * Includes the conversation and message identifiers so the host app can
1984
+ * fetch the full conversation history via the REST API if needed.
1985
+ *
1986
+ * The payload data has the shape `{ convId: string, messageId: string }`.
1987
+ *
1988
+ * Works with SpotterEmbed as well as AppEmbed (when Spotter is reached
1989
+ * inside the full application).
1990
+ * @example
1991
+ * ```js
1992
+ * spotterEmbed.on(EmbedEvent.SpotterResponseComplete, (payload) => {
1993
+ * console.log('Spotter response complete', payload);
1994
+ * })
1995
+ * ```
1996
+ * @example
1997
+ * ```js
1998
+ * appEmbed.on(EmbedEvent.SpotterResponseComplete, (payload) => {
1999
+ * console.log('Spotter response complete', payload);
2000
+ * })
2001
+ * ```
2002
+ * @version SDK: 1.51.0 | ThoughtSpot Cloud: 26.9.0.cl
2003
+ */
2004
+ EmbedEvent["SpotterResponseComplete"] = "spotterResponseComplete";
1802
2005
  /**
1803
2006
  * @hidden
1804
2007
  * Emitted when the auth token is about to get expired and needs to be refreshed.
@@ -2279,6 +2482,17 @@ var HostEvent;
2279
2482
  * name: string,
2280
2483
  * type: ATTRIBUTE/MEASURE,
2281
2484
  * dataType: INT64/CHAR/DATE }
2485
+ *
2486
+ * `applicability` - Optional. Scopes the filter to a specific target,
2487
+ * for example, a single Liveboard tab, so the panel for the correct
2488
+ * scoped filter is opened. Available from SDK: 1.53.0 |
2489
+ * ThoughtSpot: 26.10.0.cl. Includes the following attributes:
2490
+ *
2491
+ * - `level`: The scope of the filter: `LIVEBOARD`, `TAB`, or `GROUP`.
2492
+ * - `targetId`: The GUID of the target, for example, the tab GUID.
2493
+ * Required when `level` is `TAB` or `GROUP`. Do not pass it when
2494
+ * `level` is `LIVEBOARD`, since the filter applies to the whole
2495
+ * Liveboard. Omitting `applicability` targets the `LIVEBOARD` level.
2282
2496
  * @example
2283
2497
  * ```js
2284
2498
  * searchEmbed.trigger(HostEvent.OpenFilter,
@@ -2291,6 +2505,14 @@ var HostEvent;
2291
2505
  * ```
2292
2506
  * @example
2293
2507
  * ```js
2508
+ * // Open a filter scoped to a specific Liveboard tab
2509
+ * liveboardEmbed.trigger(HostEvent.OpenFilter, {
2510
+ * column: { columnId: '<column-GUID>' },
2511
+ * applicability: { level: 'TAB', targetId: '<tab-GUID>' }
2512
+ * });
2513
+ * ```
2514
+ * @example
2515
+ * ```js
2294
2516
  * // Open filter from search context
2295
2517
  * import { ContextType } from '@thoughtspot/visual-embed-sdk';
2296
2518
  * searchEmbed.trigger(HostEvent.OpenFilter, {
@@ -2300,6 +2522,38 @@ var HostEvent;
2300
2522
  * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl
2301
2523
  */
2302
2524
  HostEvent["OpenFilter"] = "openFilter";
2525
+ /**
2526
+ * Open the parameter panel for a particular parameter on a Liveboard.
2527
+ * Mirrors {@link HostEvent.OpenFilter} for parameters.
2528
+ * @param - Includes the following keys:
2529
+ * - `parameter`: An object identifying the parameter to open, for
2530
+ * example, `{ parameterId: '<parameter-GUID>' }`.
2531
+ * - `applicability`: Optional. Scopes the parameter to a specific target,
2532
+ * for example, a single Liveboard tab, so the panel for the correct
2533
+ * scoped parameter is opened. Includes the following attributes:
2534
+ *
2535
+ * - `level`: The scope of the parameter: `LIVEBOARD`, `TAB`, or `GROUP`.
2536
+ * - `targetId`: The GUID of the target, for example, the tab GUID.
2537
+ * Required when `level` is `TAB` or `GROUP`. Do not pass it when
2538
+ * `level` is `LIVEBOARD`, since the parameter applies to the whole
2539
+ * Liveboard. Omitting `applicability` targets the `LIVEBOARD` level.
2540
+ * @example
2541
+ * ```js
2542
+ * liveboardEmbed.trigger(HostEvent.OpenParameter, {
2543
+ * parameter: { parameterId: '<parameter-GUID>' }
2544
+ * });
2545
+ * ```
2546
+ * @example
2547
+ * ```js
2548
+ * // Open a parameter scoped to a specific group
2549
+ * liveboardEmbed.trigger(HostEvent.OpenParameter, {
2550
+ * parameter: { parameterId: '<parameter-GUID>' },
2551
+ * applicability: { level: 'GROUP', targetId: '<group-GUID>' }
2552
+ * });
2553
+ * ```
2554
+ * @version SDK: 1.53.0 | ThoughtSpot: 26.10.0.cl
2555
+ */
2556
+ HostEvent["OpenParameter"] = "openParameter";
2303
2557
  /**
2304
2558
  * Add columns to the current search query.
2305
2559
  * @param - { columnIds: string[] }
@@ -3364,6 +3618,14 @@ var HostEvent;
3364
3618
  /**
3365
3619
  * Get details of filters applied on the Liveboard.
3366
3620
  * Returns arrays containing Liveboard filter and runtime filter elements.
3621
+ * Each Liveboard filter includes an optional `applicability` attribute
3622
+ * indicating the scope of the filter. It contains a `level`
3623
+ * (`LIVEBOARD`, `TAB`, or `GROUP`) and, when `level` is `TAB` or
3624
+ * `GROUP`, a `targetId` with the GUID of the target. At `LIVEBOARD`
3625
+ * level there is no `targetId`, since the filter applies to the
3626
+ * whole Liveboard.
3627
+ * The `applicability` attribute is available from SDK: 1.53.0 |
3628
+ * ThoughtSpot: 26.10.0.cl.
3367
3629
  * @example
3368
3630
  * ```js
3369
3631
  * const data = await liveboardEmbed.trigger(HostEvent.GetFilters);
@@ -3403,6 +3665,16 @@ var HostEvent;
3403
3665
  *
3404
3666
  * `type` - To update filters for date time, specify the date format type.
3405
3667
  * For more information and examples, see link:https://developers.thoughtspot.com/docs/embed-liveboard#_date_filters[Date filters].
3668
+ *
3669
+ * `applicability` - Optional. Scopes the filter to a specific target,
3670
+ * for example, a single Liveboard tab. Available from SDK: 1.53.0 |
3671
+ * ThoughtSpot: 26.10.0.cl. Includes the following attributes:
3672
+ *
3673
+ * - `level`: The scope of the filter: `LIVEBOARD`, `TAB`, or `GROUP`.
3674
+ * - `targetId`: The GUID of the target, for example, the tab GUID.
3675
+ * Required when `level` is `TAB` or `GROUP`. Do not pass it when
3676
+ * `level` is `LIVEBOARD`, since the filter applies to the whole
3677
+ * Liveboard.
3406
3678
  * @example
3407
3679
  * ```js
3408
3680
  *
@@ -3479,6 +3751,21 @@ var HostEvent;
3479
3751
  * }
3480
3752
  * }, ContextType.Liveboard);
3481
3753
  * ```
3754
+ * @example
3755
+ * ```js
3756
+ * // Scope the filter to a specific Liveboard tab
3757
+ * liveboardEmbed.trigger(HostEvent.UpdateFilters, {
3758
+ * filter: {
3759
+ * column: "item type",
3760
+ * oper: "IN",
3761
+ * values: ["bags", "shirts"],
3762
+ * applicability: {
3763
+ * level: "TAB",
3764
+ * targetId: "e0836cad-4fdf-42d4-bd97-567a6b2a6058"
3765
+ * }
3766
+ * }
3767
+ * });
3768
+ * ```
3482
3769
  * @version SDK: 1.23.0 | ThoughtSpot: 9.4.0.cl
3483
3770
  */
3484
3771
  HostEvent["UpdateFilters"] = "updateFilters";
@@ -3503,6 +3790,28 @@ var HostEvent;
3503
3790
  * @version SDK: 1.26.0 | ThoughtSpot: 9.7.0.cl
3504
3791
  */
3505
3792
  HostEvent["GetTabs"] = "getTabs";
3793
+ /**
3794
+ * Get group details for the current Liveboard.
3795
+ * Mirrors {@link HostEvent.GetTabs} for filter/parameter groups.
3796
+ * @example
3797
+ * ```js
3798
+ * liveboardEmbed.trigger(HostEvent.GetGroups).then((groupDetails) => {
3799
+ * console.log(
3800
+ * groupDetails // GroupDetails of current Liveboard
3801
+ * );
3802
+ * })
3803
+ * ```
3804
+ * @example
3805
+ * ```js
3806
+ * // Get groups from liveboard context
3807
+ * import { ContextType } from '@thoughtspot/visual-embed-sdk';
3808
+ * liveboardEmbed.trigger(HostEvent.GetGroups, {}, ContextType.Liveboard).then((groupDetails) => {
3809
+ * console.log('groups', groupDetails);
3810
+ * });
3811
+ * ```
3812
+ * @version SDK: 1.53.0 | ThoughtSpot: 26.10.0.cl
3813
+ */
3814
+ HostEvent["GetGroups"] = "getGroups";
3506
3815
  /**
3507
3816
  * Set the visible tabs on a Liveboard.
3508
3817
  * @param - an array of ids of tabs to show, the IDs not passed
@@ -3630,6 +3939,15 @@ var HostEvent;
3630
3939
  * - `name`: Name of the parameter.
3631
3940
  * - `value`: The value to set for the parameter.
3632
3941
  * - `isVisibleToUser`: Optional. To control the visibility of the parameter chip.
3942
+ * - `applicability`: Optional. Scopes the parameter to a specific target,
3943
+ * for example, a single Liveboard tab. Available from SDK: 1.53.0 |
3944
+ * ThoughtSpot: 26.10.0.cl. Includes the following attributes:
3945
+ *
3946
+ * - `level`: The scope of the parameter: `LIVEBOARD`, `TAB`, or `GROUP`.
3947
+ * - `targetId`: The GUID of the target, for example, the tab GUID.
3948
+ * Required when `level` is `TAB` or `GROUP`. Do not pass it when
3949
+ * `level` is `LIVEBOARD`, since the parameter applies to the whole
3950
+ * Liveboard.
3633
3951
  *
3634
3952
  * @example
3635
3953
  * ```js
@@ -3641,6 +3959,18 @@ var HostEvent;
3641
3959
  * ```
3642
3960
  * @example
3643
3961
  * ```js
3962
+ * // Scope the parameter to a specific Liveboard tab
3963
+ * liveboardEmbed.trigger(HostEvent.UpdateParameters, [{
3964
+ * name: "Integer Range Param",
3965
+ * value: 10,
3966
+ * applicability: {
3967
+ * level: "TAB",
3968
+ * targetId: "e0836cad-4fdf-42d4-bd97-567a6b2a6058"
3969
+ * }
3970
+ * }])
3971
+ * ```
3972
+ * @example
3973
+ * ```js
3644
3974
  * // Update parameters from liveboard context
3645
3975
  * import { ContextType } from '@thoughtspot/visual-embed-sdk';
3646
3976
  * liveboardEmbed.trigger(HostEvent.UpdateParameters, [{
@@ -3654,6 +3984,14 @@ var HostEvent;
3654
3984
  HostEvent["UpdateParameters"] = "UpdateParameters";
3655
3985
  /**
3656
3986
  * Triggers GetParameters to fetch the runtime Parameters.
3987
+ * Each parameter includes an optional `applicability` attribute
3988
+ * indicating the scope of the parameter. It contains a `level`
3989
+ * (`LIVEBOARD`, `TAB`, or `GROUP`) and, when `level` is `TAB` or
3990
+ * `GROUP`, a `targetId` with the GUID of the target. At `LIVEBOARD`
3991
+ * level there is no `targetId`, since the parameter applies to the
3992
+ * whole Liveboard.
3993
+ * The `applicability` attribute is available from SDK: 1.53.0 |
3994
+ * ThoughtSpot: 26.10.0.cl.
3657
3995
  * @param - `vizId` refers to the Answer ID in Spotter embed and is required in Spotter embed.
3658
3996
  * ```js
3659
3997
  * liveboardEmbed.trigger(HostEvent.GetParameters).then((parameter) => {
@@ -3920,6 +4258,36 @@ var HostEvent;
3920
4258
  * @version SDK: 1.40.0 | ThoughtSpot: 10.11.0.cl
3921
4259
  */
3922
4260
  HostEvent["ResetSpotterConversation"] = "ResetSpotterConversation";
4261
+ /**
4262
+ * Opens the Spotter share-conversation modal for the given conversation.
4263
+ * `conversationId` is **mandatory** — you must pass the id of the
4264
+ * conversation to share. Also no-op when sharing is disabled
4265
+ * (enableShareConversation off) or when already in the read-only shared view.
4266
+ * @example
4267
+ * ```js
4268
+ * spotterEmbed.trigger(HostEvent.ShareSpotterConversation, { conversationId: 'abc' });
4269
+ * ```
4270
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
4271
+ */
4272
+ HostEvent["ShareSpotterConversation"] = "ShareSpotterConversation";
4273
+ /**
4274
+ * Closes the Spotter share-conversation modal. No-op if none is open.
4275
+ * @example
4276
+ * ```js
4277
+ * spotterEmbed.trigger(HostEvent.CloseSpotterShareConversation);
4278
+ * ```
4279
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
4280
+ */
4281
+ HostEvent["CloseSpotterShareConversation"] = "CloseSpotterShareConversation";
4282
+ /**
4283
+ * Exits the read-only shared-conversation view.
4284
+ * @example
4285
+ * ```js
4286
+ * spotterEmbed.trigger(HostEvent.ExitSpotterSharedConversation);
4287
+ * ```
4288
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
4289
+ */
4290
+ HostEvent["ExitSpotterSharedConversation"] = "ExitSpotterSharedConversation";
3923
4291
  /**
3924
4292
  * Deletes the last prompt in spotter embed.
3925
4293
  * @example
@@ -4015,6 +4383,41 @@ var HostEvent;
4015
4383
  * @version SDK: 1.45.0 | ThoughtSpot: 26.2.0.cl
4016
4384
  */
4017
4385
  HostEvent["StartNewSpotterConversation"] = "StartNewSpotterConversation";
4386
+ /**
4387
+ * Pins a saved Spotter conversation so it floats to the top of the past
4388
+ * conversations sidebar. The `conversationId` of the conversation to pin is
4389
+ * required.
4390
+ *
4391
+ * This feature is available only when chat history is enabled on your ThoughtSpot
4392
+ * instance. Contact your admin or ThoughtSpot Support to enable chat history on your
4393
+ * instance.
4394
+ *
4395
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
4396
+ * @example
4397
+ * ```js
4398
+ * spotterEmbed.trigger(HostEvent.PinSpotterConversation, {
4399
+ * conversationId: '<conversation-id>',
4400
+ * });
4401
+ * ```
4402
+ */
4403
+ HostEvent["PinSpotterConversation"] = "PinSpotterConversation";
4404
+ /**
4405
+ * Unpins a previously pinned Spotter conversation. The `conversationId` of the
4406
+ * conversation to unpin is required.
4407
+ *
4408
+ * This feature is available only when chat history is enabled on your ThoughtSpot
4409
+ * instance. Contact your admin or ThoughtSpot Support to enable chat history on your
4410
+ * instance.
4411
+ *
4412
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
4413
+ * @example
4414
+ * ```js
4415
+ * spotterEmbed.trigger(HostEvent.UnpinSpotterConversation, {
4416
+ * conversationId: '<conversation-id>',
4417
+ * });
4418
+ * ```
4419
+ */
4420
+ HostEvent["UnpinSpotterConversation"] = "UnpinSpotterConversation";
4018
4421
  /**
4019
4422
  * @hidden
4020
4423
  * Get the current context of the embedded page.
@@ -4236,6 +4639,7 @@ var Param;
4236
4639
  Param["SpotterEnabled"] = "isSpotterExperienceEnabled";
4237
4640
  Param["IsUnifiedSearchExperienceEnabled"] = "isUnifiedSearchExperienceEnabled";
4238
4641
  Param["OverrideOrgId"] = "orgId";
4642
+ Param["OverrideHistoryState"] = "overrideHistoryState";
4239
4643
  Param["OauthPollingInterval"] = "oAuthPollingInterval";
4240
4644
  Param["IsForceRedirect"] = "isForceRedirect";
4241
4645
  Param["DataSourceId"] = "dataSourceId";
@@ -4253,9 +4657,12 @@ var Param;
4253
4657
  Param["isGranularXLSXCSVSchedulesEnabled"] = "isGranularXLSXCSVSchedulesEnabled";
4254
4658
  Param["isSendNowLiveboardSchedulingEnabled"] = "isSendNowLiveboardSchedulingEnabled";
4255
4659
  Param["isCentralizedLiveboardFilterUXEnabled"] = "isCentralizedLiveboardFilterUXEnabled";
4660
+ Param["isScopedLiveboardFilteringEnabled"] = "isScopedLiveboardFilteringEnabled";
4256
4661
  Param["isLinkParametersEnabled"] = "isLinkParametersEnabled";
4257
4662
  Param["EnablePastConversationsSidebar"] = "enablePastConversationsSidebar";
4258
4663
  Param["UpdatedSpotterChatPrompt"] = "updatedSpotterChatPrompt";
4664
+ Param["ShowSpotterRadiance"] = "showSpotterRadiance";
4665
+ Param["DefaultQueryMode"] = "defaultQueryMode";
4259
4666
  Param["EnableStopAnswerGenerationEmbed"] = "enableStopAnswerGenerationEmbed";
4260
4667
  Param["SpotterSidebarTitle"] = "spotterSidebarTitle";
4261
4668
  Param["SpotterSidebarDefaultExpanded"] = "spotterSidebarDefaultExpanded";
@@ -4275,6 +4682,8 @@ var Param;
4275
4682
  Param["SpotterFileUploadEnabled"] = "spotterFileUploadEnabled";
4276
4683
  Param["SpotterFileUploadFileTypes"] = "spotterFileUploadFileTypes";
4277
4684
  Param["IsStarterPromptsEnabled"] = "enableStarterPrompts";
4685
+ Param["UpdatedSpotterExperience"] = "updatedSpotterExperience";
4686
+ Param["SpotterDataSources"] = "spotterDataSources";
4278
4687
  })(Param || (Param = {}));
4279
4688
  /**
4280
4689
  * ThoughtSpot application pages include actions and menu commands
@@ -5539,6 +5948,19 @@ var Action;
5539
5948
  * @version SDK: 1.36.0 | ThoughtSpot Cloud: 10.6.0.cl
5540
5949
  */
5541
5950
  Action["ChangeFilterVisibilityInTab"] = "changeFilterVisibilityInTab";
5951
+ /**
5952
+ * Action ID to show, hide, or disable all filter surfaces on a Liveboard,
5953
+ * including filter, parameter, and cross-filter chips at the liveboard,
5954
+ * tab, and group levels. Parameter and cross-filter chips are hide-only.
5955
+ *
5956
+ * @example
5957
+ * ```js
5958
+ * hiddenActions: [Action.AllLiveboardFilters]
5959
+ * disabledActions: [Action.AllLiveboardFilters]
5960
+ * ```
5961
+ * @version SDK: 1.53.0 | ThoughtSpot: 26.10.0.cl
5962
+ */
5963
+ Action["AllLiveboardFilters"] = "allLiveboardFilters";
5542
5964
  /**
5543
5965
  * The **Data model instructions** button on the Spotter interface.
5544
5966
  * Allows opening the data model instructions modal.
@@ -5874,6 +6296,89 @@ var Action;
5874
6296
  * @version SDK: 1.46.0 | ThoughtSpot Cloud: 26.3.0.cl
5875
6297
  */
5876
6298
  Action["SpotterChatRename"] = "spotterChatRename";
6299
+ /**
6300
+ * Controls visibility and disable state of the Spotter conversation Share
6301
+ * button in the chat header. Only takes effect once sharing is enabled
6302
+ * (enableShareConversation on).
6303
+ * @example
6304
+ * ```js
6305
+ * disabledActions: [Action.SpotterShareConversationButtonHeader]
6306
+ * ```
6307
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6308
+ */
6309
+ Action["SpotterShareConversationButtonHeader"] = "spotterShareConversationButtonHeader";
6310
+ /**
6311
+ * Controls visibility and disable state of the Share item in the Spotter
6312
+ * conversation history (sidebar) edit menu. Independent of the header button
6313
+ * above, so a host can show Share in one entry point and hide it in the other.
6314
+ * @example
6315
+ * ```js
6316
+ * disabledActions: [Action.SpotterShareConversationMenuItemSidebar]
6317
+ * ```
6318
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6319
+ */
6320
+ Action["SpotterShareConversationMenuItemSidebar"] = "spotterShareConversationMenuItemSidebar";
6321
+ /**
6322
+ * Controls visibility of the entire read-only shared-conversation data-access
6323
+ * banner shown when a recipient opens a shared view. Hide-only.
6324
+ * @example
6325
+ * ```js
6326
+ * hiddenActions: [Action.SpotterSharedConversationBanner]
6327
+ * ```
6328
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6329
+ */
6330
+ Action["SpotterSharedConversationBanner"] = "spotterSharedConversationBanner";
6331
+ /**
6332
+ * Controls visibility and disable state of the cross/close button on the
6333
+ * read-only shared-conversation data-access banner (keeps the banner itself).
6334
+ * @example
6335
+ * ```js
6336
+ * hiddenActions: [Action.SpotterSharedConversationBannerDismissButton]
6337
+ * ```
6338
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6339
+ */
6340
+ Action["SpotterSharedConversationBannerDismissButton"] = "spotterSharedConversationBannerDismissButton";
6341
+ /**
6342
+ * Controls visibility and disable state of the Exit button in the read-only
6343
+ * shared-view header. Hiding it does not disable the ExitSpotterSharedConversation
6344
+ * host event.
6345
+ * @example
6346
+ * ```js
6347
+ * hiddenActions: [Action.SpotterSharedConversationExitButton]
6348
+ * ```
6349
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6350
+ */
6351
+ Action["SpotterSharedConversationExitButton"] = "spotterSharedConversationExitButton";
6352
+ /**
6353
+ * Controls visibility of the share-modal footer note ("Chat will be shared up
6354
+ * to the current moment…"). Hide-only.
6355
+ * @example
6356
+ * ```js
6357
+ * hiddenActions: [Action.SpotterShareUpToCurrentInfo]
6358
+ * ```
6359
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6360
+ */
6361
+ Action["SpotterShareUpToCurrentInfo"] = "spotterShareUpToCurrentInfo";
6362
+ /**
6363
+ * Controls visibility and disable state of the share-modal "include new
6364
+ * messages since last shared version" checkbox.
6365
+ * @example
6366
+ * ```js
6367
+ * disabledActions: [Action.SpotterShareIncludeNewMessagesCheckbox]
6368
+ * ```
6369
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6370
+ */
6371
+ Action["SpotterShareIncludeNewMessagesCheckbox"] = "spotterShareIncludeNewMessagesCheckbox";
6372
+ /**
6373
+ * Controls visibility and disable state of the cross on the share-modal
6374
+ * stale-snapshot info banner.
6375
+ * @example
6376
+ * ```js
6377
+ * hiddenActions: [Action.SpotterShareStaleInfoBannerDismissButton]
6378
+ * ```
6379
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6380
+ */
6381
+ Action["SpotterShareStaleInfoBannerDismissButton"] = "spotterShareStaleInfoBannerDismissButton";
5877
6382
  /**
5878
6383
  * Controls visibility and disable state of the delete action
5879
6384
  * in the Spotter conversation edit menu.
@@ -5884,6 +6389,16 @@ var Action;
5884
6389
  * @version SDK: 1.46.0 | ThoughtSpot Cloud: 26.3.0.cl
5885
6390
  */
5886
6391
  Action["SpotterChatDelete"] = "spotterChatDelete";
6392
+ /**
6393
+ * Controls visibility and disable state of the pin/unpin action
6394
+ * in the Spotter conversation edit menu.
6395
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
6396
+ * @example
6397
+ * ```js
6398
+ * disabledActions: [Action.SpotterChatPin]
6399
+ * ```
6400
+ */
6401
+ Action["SpotterChatPin"] = "spotterChatPin";
5887
6402
  /**
5888
6403
  * Controls visibility and disable state of the documentation/best practices
5889
6404
  * link in the Spotter sidebar footer.
@@ -6362,6 +6877,8 @@ var EmbedErrorCodes;
6362
6877
  EmbedErrorCodes["UPDATEFILTERS_INVALID_PAYLOAD"] = "UPDATEFILTERS_INVALID_PAYLOAD";
6363
6878
  /** DrillDown payload is invalid - missing or malformed points */
6364
6879
  EmbedErrorCodes["DRILLDOWN_INVALID_PAYLOAD"] = "DRILLDOWN_INVALID_PAYLOAD";
6880
+ /** UpdateParameters payload is invalid - malformed applicability */
6881
+ EmbedErrorCodes["UPDATEPARAMETERS_INVALID_PAYLOAD"] = "UPDATEPARAMETERS_INVALID_PAYLOAD";
6365
6882
  })(EmbedErrorCodes || (EmbedErrorCodes = {}));
6366
6883
  /**
6367
6884
  * Context types for specifying the page context when triggering host events.
@@ -6540,7 +7057,7 @@ var TableContentDensity;
6540
7057
  TableContentDensity["Compact"] = "COMPACT";
6541
7058
  })(TableContentDensity || (TableContentDensity = {}));
6542
7059
 
6543
- var version$1="1.50.0";var pkg = {version:version$1};
7060
+ var version$1="1.51.0";var pkg = {version:version$1};
6544
7061
 
6545
7062
  const { version } = pkg;
6546
7063
 
@@ -6686,7 +7203,6 @@ merge$1.withOptions = (options, ...objects) => {
6686
7203
 
6687
7204
  const ERROR_MESSAGE = {
6688
7205
  INVALID_THOUGHTSPOT_HOST: 'Error parsing ThoughtSpot host. Please provide a valid URL.',
6689
- SPOTTER_EMBED_WORKSHEED_ID_NOT_FOUND: 'Please select a Model to get started',
6690
7206
  LIVEBOARD_VIZ_ID_VALIDATION: 'Please select a Liveboard to embed.',
6691
7207
  TRIGGER_TIMED_OUT: 'Trigger timed-out in getting a response',
6692
7208
  SEARCHEMBED_BETA_WRANING_MESSAGE: 'SearchEmbed is in Beta in this release.',
@@ -6716,6 +7232,7 @@ const ERROR_MESSAGE = {
6716
7232
  INVALID_SPOTTER_DOCUMENTATION_URL: 'Invalid spotterDocumentationUrl. Please provide a valid http or https URL.',
6717
7233
  UPDATEFILTERS_INVALID_PAYLOAD: 'UpdateFilters requires a valid filter or filters array. Expected: { filter: { column, oper, values } } or { filters: [{ column, oper, values }, ...] }',
6718
7234
  DRILLDOWN_INVALID_PAYLOAD: 'DrillDown requires a valid points object. Expected: { points: { clickedPoint?, selectedPoints? }, autoDrillDown?, vizId? }',
7235
+ UPDATEPARAMETERS_INVALID_PAYLOAD: 'UpdateParameters received an invalid applicability. Expected: { level: LIVEBOARD | TAB | GROUP, targetId } where targetId is required for TAB and GROUP levels',
6719
7236
  };
6720
7237
  const CUSTOM_ACTIONS_ERROR_MESSAGE = {
6721
7238
  INVALID_ACTION_OBJECT: 'Custom Action Validation Error: Invalid action object provided',
@@ -6834,7 +7351,7 @@ const getCssDimension = (value) => {
6834
7351
  * @returns true if the value is a valid CSS margin value, false otherwise
6835
7352
  */
6836
7353
  const isValidCssMargin = (value) => {
6837
- if (isUndefined(value)) {
7354
+ if (isUndefined$1(value)) {
6838
7355
  return false;
6839
7356
  }
6840
7357
  if (typeof value !== 'string') {
@@ -7043,7 +7560,7 @@ const removeStyleProperties = (element, styleProperties) => {
7043
7560
  element.style.removeProperty(styleProperty);
7044
7561
  });
7045
7562
  };
7046
- const isUndefined = (value) => value === undefined;
7563
+ const isUndefined$1 = (value) => value === undefined;
7047
7564
  // Return if the value is a string, double or boolean.
7048
7565
  const getTypeFromValue = (value) => {
7049
7566
  if (typeof value === 'string') {
@@ -7348,7 +7865,7 @@ const setParamIfDefined = (queryParams, param, value, asBoolean = false) => {
7348
7865
  };
7349
7866
 
7350
7867
  /** Used for built-in method references. */
7351
- var objectProto$c = Object.prototype;
7868
+ var objectProto$d = Object.prototype;
7352
7869
 
7353
7870
  /**
7354
7871
  * Checks if `value` is likely a prototype object.
@@ -7359,7 +7876,7 @@ var objectProto$c = Object.prototype;
7359
7876
  */
7360
7877
  function isPrototype(value) {
7361
7878
  var Ctor = value && value.constructor,
7362
- proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto$c;
7879
+ proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto$d;
7363
7880
 
7364
7881
  return value === proto;
7365
7882
  }
@@ -7388,10 +7905,10 @@ var nativeKeys = _overArg(Object.keys, Object);
7388
7905
  var _nativeKeys = nativeKeys;
7389
7906
 
7390
7907
  /** Used for built-in method references. */
7391
- var objectProto$b = Object.prototype;
7908
+ var objectProto$c = Object.prototype;
7392
7909
 
7393
7910
  /** Used to check objects for own properties. */
7394
- var hasOwnProperty$a = objectProto$b.hasOwnProperty;
7911
+ var hasOwnProperty$b = objectProto$c.hasOwnProperty;
7395
7912
 
7396
7913
  /**
7397
7914
  * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
@@ -7406,7 +7923,7 @@ function baseKeys(object) {
7406
7923
  }
7407
7924
  var result = [];
7408
7925
  for (var key in Object(object)) {
7409
- if (hasOwnProperty$a.call(object, key) && key != 'constructor') {
7926
+ if (hasOwnProperty$b.call(object, key) && key != 'constructor') {
7410
7927
  result.push(key);
7411
7928
  }
7412
7929
  }
@@ -7442,17 +7959,17 @@ var Symbol$1 = _root.Symbol;
7442
7959
  var _Symbol = Symbol$1;
7443
7960
 
7444
7961
  /** Used for built-in method references. */
7445
- var objectProto$a = Object.prototype;
7962
+ var objectProto$b = Object.prototype;
7446
7963
 
7447
7964
  /** Used to check objects for own properties. */
7448
- var hasOwnProperty$9 = objectProto$a.hasOwnProperty;
7965
+ var hasOwnProperty$a = objectProto$b.hasOwnProperty;
7449
7966
 
7450
7967
  /**
7451
7968
  * Used to resolve the
7452
7969
  * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
7453
7970
  * of values.
7454
7971
  */
7455
- var nativeObjectToString$1 = objectProto$a.toString;
7972
+ var nativeObjectToString$1 = objectProto$b.toString;
7456
7973
 
7457
7974
  /** Built-in value references. */
7458
7975
  var symToStringTag$1 = _Symbol ? _Symbol.toStringTag : undefined;
@@ -7465,7 +7982,7 @@ var symToStringTag$1 = _Symbol ? _Symbol.toStringTag : undefined;
7465
7982
  * @returns {string} Returns the raw `toStringTag`.
7466
7983
  */
7467
7984
  function getRawTag(value) {
7468
- var isOwn = hasOwnProperty$9.call(value, symToStringTag$1),
7985
+ var isOwn = hasOwnProperty$a.call(value, symToStringTag$1),
7469
7986
  tag = value[symToStringTag$1];
7470
7987
 
7471
7988
  try {
@@ -7487,14 +8004,14 @@ function getRawTag(value) {
7487
8004
  var _getRawTag = getRawTag;
7488
8005
 
7489
8006
  /** Used for built-in method references. */
7490
- var objectProto$9 = Object.prototype;
8007
+ var objectProto$a = Object.prototype;
7491
8008
 
7492
8009
  /**
7493
8010
  * Used to resolve the
7494
8011
  * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
7495
8012
  * of values.
7496
8013
  */
7497
- var nativeObjectToString = objectProto$9.toString;
8014
+ var nativeObjectToString = objectProto$a.toString;
7498
8015
 
7499
8016
  /**
7500
8017
  * Converts `value` to a string using `Object.prototype.toString`.
@@ -7626,10 +8143,10 @@ function isMasked(func) {
7626
8143
  var _isMasked = isMasked;
7627
8144
 
7628
8145
  /** Used for built-in method references. */
7629
- var funcProto$1 = Function.prototype;
8146
+ var funcProto$2 = Function.prototype;
7630
8147
 
7631
8148
  /** Used to resolve the decompiled source of functions. */
7632
- var funcToString$1 = funcProto$1.toString;
8149
+ var funcToString$2 = funcProto$2.toString;
7633
8150
 
7634
8151
  /**
7635
8152
  * Converts `func` to its source code.
@@ -7641,7 +8158,7 @@ var funcToString$1 = funcProto$1.toString;
7641
8158
  function toSource(func) {
7642
8159
  if (func != null) {
7643
8160
  try {
7644
- return funcToString$1.call(func);
8161
+ return funcToString$2.call(func);
7645
8162
  } catch (e) {}
7646
8163
  try {
7647
8164
  return (func + '');
@@ -7662,18 +8179,18 @@ var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
7662
8179
  var reIsHostCtor = /^\[object .+?Constructor\]$/;
7663
8180
 
7664
8181
  /** Used for built-in method references. */
7665
- var funcProto = Function.prototype,
7666
- objectProto$8 = Object.prototype;
8182
+ var funcProto$1 = Function.prototype,
8183
+ objectProto$9 = Object.prototype;
7667
8184
 
7668
8185
  /** Used to resolve the decompiled source of functions. */
7669
- var funcToString = funcProto.toString;
8186
+ var funcToString$1 = funcProto$1.toString;
7670
8187
 
7671
8188
  /** Used to check objects for own properties. */
7672
- var hasOwnProperty$8 = objectProto$8.hasOwnProperty;
8189
+ var hasOwnProperty$9 = objectProto$9.hasOwnProperty;
7673
8190
 
7674
8191
  /** Used to detect if a method is native. */
7675
8192
  var reIsNative = RegExp('^' +
7676
- funcToString.call(hasOwnProperty$8).replace(reRegExpChar, '\\$&')
8193
+ funcToString$1.call(hasOwnProperty$9).replace(reRegExpChar, '\\$&')
7677
8194
  .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
7678
8195
  );
7679
8196
 
@@ -7751,7 +8268,7 @@ var _WeakMap = WeakMap;
7751
8268
 
7752
8269
  /** `Object#toString` result references. */
7753
8270
  var mapTag$3 = '[object Map]',
7754
- objectTag$2 = '[object Object]',
8271
+ objectTag$3 = '[object Object]',
7755
8272
  promiseTag = '[object Promise]',
7756
8273
  setTag$3 = '[object Set]',
7757
8274
  weakMapTag$1 = '[object WeakMap]';
@@ -7782,7 +8299,7 @@ if ((_DataView && getTag(new _DataView(new ArrayBuffer(1))) != dataViewTag$2) ||
7782
8299
  (_WeakMap && getTag(new _WeakMap) != weakMapTag$1)) {
7783
8300
  getTag = function(value) {
7784
8301
  var result = _baseGetTag(value),
7785
- Ctor = result == objectTag$2 ? value.constructor : undefined,
8302
+ Ctor = result == objectTag$3 ? value.constructor : undefined,
7786
8303
  ctorString = Ctor ? _toSource(Ctor) : '';
7787
8304
 
7788
8305
  if (ctorString) {
@@ -7847,13 +8364,13 @@ function baseIsArguments(value) {
7847
8364
  var _baseIsArguments = baseIsArguments;
7848
8365
 
7849
8366
  /** Used for built-in method references. */
7850
- var objectProto$7 = Object.prototype;
8367
+ var objectProto$8 = Object.prototype;
7851
8368
 
7852
8369
  /** Used to check objects for own properties. */
7853
- var hasOwnProperty$7 = objectProto$7.hasOwnProperty;
8370
+ var hasOwnProperty$8 = objectProto$8.hasOwnProperty;
7854
8371
 
7855
8372
  /** Built-in value references. */
7856
- var propertyIsEnumerable$1 = objectProto$7.propertyIsEnumerable;
8373
+ var propertyIsEnumerable$1 = objectProto$8.propertyIsEnumerable;
7857
8374
 
7858
8375
  /**
7859
8376
  * Checks if `value` is likely an `arguments` object.
@@ -7874,7 +8391,7 @@ var propertyIsEnumerable$1 = objectProto$7.propertyIsEnumerable;
7874
8391
  * // => false
7875
8392
  */
7876
8393
  var isArguments = _baseIsArguments(function() { return arguments; }()) ? _baseIsArguments : function(value) {
7877
- return isObjectLike_1(value) && hasOwnProperty$7.call(value, 'callee') &&
8394
+ return isObjectLike_1(value) && hasOwnProperty$8.call(value, 'callee') &&
7878
8395
  !propertyIsEnumerable$1.call(value, 'callee');
7879
8396
  };
7880
8397
 
@@ -8040,10 +8557,10 @@ var argsTag$1 = '[object Arguments]',
8040
8557
  funcTag = '[object Function]',
8041
8558
  mapTag$2 = '[object Map]',
8042
8559
  numberTag$1 = '[object Number]',
8043
- objectTag$1 = '[object Object]',
8560
+ objectTag$2 = '[object Object]',
8044
8561
  regexpTag$1 = '[object RegExp]',
8045
8562
  setTag$2 = '[object Set]',
8046
- stringTag$1 = '[object String]',
8563
+ stringTag$2 = '[object String]',
8047
8564
  weakMapTag = '[object WeakMap]';
8048
8565
 
8049
8566
  var arrayBufferTag$1 = '[object ArrayBuffer]',
@@ -8070,8 +8587,8 @@ typedArrayTags[arrayBufferTag$1] = typedArrayTags[boolTag$2] =
8070
8587
  typedArrayTags[dataViewTag$1] = typedArrayTags[dateTag$1] =
8071
8588
  typedArrayTags[errorTag$1] = typedArrayTags[funcTag] =
8072
8589
  typedArrayTags[mapTag$2] = typedArrayTags[numberTag$1] =
8073
- typedArrayTags[objectTag$1] = typedArrayTags[regexpTag$1] =
8074
- typedArrayTags[setTag$2] = typedArrayTags[stringTag$1] =
8590
+ typedArrayTags[objectTag$2] = typedArrayTags[regexpTag$1] =
8591
+ typedArrayTags[setTag$2] = typedArrayTags[stringTag$2] =
8075
8592
  typedArrayTags[weakMapTag] = false;
8076
8593
 
8077
8594
  /**
@@ -8163,10 +8680,10 @@ var mapTag$1 = '[object Map]',
8163
8680
  setTag$1 = '[object Set]';
8164
8681
 
8165
8682
  /** Used for built-in method references. */
8166
- var objectProto$6 = Object.prototype;
8683
+ var objectProto$7 = Object.prototype;
8167
8684
 
8168
8685
  /** Used to check objects for own properties. */
8169
- var hasOwnProperty$6 = objectProto$6.hasOwnProperty;
8686
+ var hasOwnProperty$7 = objectProto$7.hasOwnProperty;
8170
8687
 
8171
8688
  /**
8172
8689
  * Checks if `value` is an empty object, collection, map, or set.
@@ -8218,7 +8735,7 @@ function isEmpty$1(value) {
8218
8735
  return !_baseKeys(value).length;
8219
8736
  }
8220
8737
  for (var key in value) {
8221
- if (hasOwnProperty$6.call(value, key)) {
8738
+ if (hasOwnProperty$7.call(value, key)) {
8222
8739
  return false;
8223
8740
  }
8224
8741
  }
@@ -8227,6 +8744,15 @@ function isEmpty$1(value) {
8227
8744
 
8228
8745
  var isEmpty_1 = isEmpty$1;
8229
8746
 
8747
+ /**
8748
+ * Levels at which a filter or parameter can be applied.
8749
+ */
8750
+ var ApplicabilityLevel;
8751
+ (function (ApplicabilityLevel) {
8752
+ ApplicabilityLevel["Liveboard"] = "LIVEBOARD";
8753
+ ApplicabilityLevel["Tab"] = "TAB";
8754
+ ApplicabilityLevel["Group"] = "GROUP";
8755
+ })(ApplicabilityLevel || (ApplicabilityLevel = {}));
8230
8756
  var UIPassthroughEvent;
8231
8757
  (function (UIPassthroughEvent) {
8232
8758
  UIPassthroughEvent["PinAnswerToLiveboard"] = "addVizToPinboard";
@@ -8244,6 +8770,7 @@ var UIPassthroughEvent;
8244
8770
  UIPassthroughEvent["GetParameters"] = "getParameters";
8245
8771
  UIPassthroughEvent["GetTML"] = "getTML";
8246
8772
  UIPassthroughEvent["GetTabs"] = "getTabs";
8773
+ UIPassthroughEvent["GetGroups"] = "getGroups";
8247
8774
  UIPassthroughEvent["GetExportRequestForCurrentPinboard"] = "getExportRequestForCurrentPinboard";
8248
8775
  })(UIPassthroughEvent || (UIPassthroughEvent = {}));
8249
8776
 
@@ -9179,7 +9706,7 @@ class AnswerService {
9179
9706
  async getTML() {
9180
9707
  const { object } = await this.executeQuery(getAnswerTML, {});
9181
9708
  const edoc = object[0].edoc;
9182
- const YAML = await import('./index-B5xoN6Cp.js');
9709
+ const YAML = await import('./index-aBzH5ZwF.js');
9183
9710
  const parsedDoc = YAML.parse(edoc);
9184
9711
  return {
9185
9712
  answer: {
@@ -9464,10 +9991,10 @@ var _hashDelete = hashDelete;
9464
9991
  var HASH_UNDEFINED$2 = '__lodash_hash_undefined__';
9465
9992
 
9466
9993
  /** Used for built-in method references. */
9467
- var objectProto$5 = Object.prototype;
9994
+ var objectProto$6 = Object.prototype;
9468
9995
 
9469
9996
  /** Used to check objects for own properties. */
9470
- var hasOwnProperty$5 = objectProto$5.hasOwnProperty;
9997
+ var hasOwnProperty$6 = objectProto$6.hasOwnProperty;
9471
9998
 
9472
9999
  /**
9473
10000
  * Gets the hash value for `key`.
@@ -9484,16 +10011,16 @@ function hashGet(key) {
9484
10011
  var result = data[key];
9485
10012
  return result === HASH_UNDEFINED$2 ? undefined : result;
9486
10013
  }
9487
- return hasOwnProperty$5.call(data, key) ? data[key] : undefined;
10014
+ return hasOwnProperty$6.call(data, key) ? data[key] : undefined;
9488
10015
  }
9489
10016
 
9490
10017
  var _hashGet = hashGet;
9491
10018
 
9492
10019
  /** Used for built-in method references. */
9493
- var objectProto$4 = Object.prototype;
10020
+ var objectProto$5 = Object.prototype;
9494
10021
 
9495
10022
  /** Used to check objects for own properties. */
9496
- var hasOwnProperty$4 = objectProto$4.hasOwnProperty;
10023
+ var hasOwnProperty$5 = objectProto$5.hasOwnProperty;
9497
10024
 
9498
10025
  /**
9499
10026
  * Checks if a hash value for `key` exists.
@@ -9506,7 +10033,7 @@ var hasOwnProperty$4 = objectProto$4.hasOwnProperty;
9506
10033
  */
9507
10034
  function hashHas(key) {
9508
10035
  var data = this.__data__;
9509
- return _nativeCreate ? (data[key] !== undefined) : hasOwnProperty$4.call(data, key);
10036
+ return _nativeCreate ? (data[key] !== undefined) : hasOwnProperty$5.call(data, key);
9510
10037
  }
9511
10038
 
9512
10039
  var _hashHas = hashHas;
@@ -10481,7 +11008,7 @@ var boolTag$1 = '[object Boolean]',
10481
11008
  numberTag = '[object Number]',
10482
11009
  regexpTag = '[object RegExp]',
10483
11010
  setTag = '[object Set]',
10484
- stringTag = '[object String]',
11011
+ stringTag$1 = '[object String]',
10485
11012
  symbolTag = '[object Symbol]';
10486
11013
 
10487
11014
  var arrayBufferTag = '[object ArrayBuffer]',
@@ -10536,7 +11063,7 @@ function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
10536
11063
  return object.name == other.name && object.message == other.message;
10537
11064
 
10538
11065
  case regexpTag:
10539
- case stringTag:
11066
+ case stringTag$1:
10540
11067
  // Coerce regexes to strings and treat strings, primitives and objects,
10541
11068
  // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring
10542
11069
  // for more details.
@@ -10644,10 +11171,10 @@ function stubArray() {
10644
11171
  var stubArray_1 = stubArray;
10645
11172
 
10646
11173
  /** Used for built-in method references. */
10647
- var objectProto$3 = Object.prototype;
11174
+ var objectProto$4 = Object.prototype;
10648
11175
 
10649
11176
  /** Built-in value references. */
10650
- var propertyIsEnumerable = objectProto$3.propertyIsEnumerable;
11177
+ var propertyIsEnumerable = objectProto$4.propertyIsEnumerable;
10651
11178
 
10652
11179
  /* Built-in method references for those with the same name as other `lodash` methods. */
10653
11180
  var nativeGetSymbols = Object.getOwnPropertySymbols;
@@ -10719,10 +11246,10 @@ function isIndex(value, length) {
10719
11246
  var _isIndex = isIndex;
10720
11247
 
10721
11248
  /** Used for built-in method references. */
10722
- var objectProto$2 = Object.prototype;
11249
+ var objectProto$3 = Object.prototype;
10723
11250
 
10724
11251
  /** Used to check objects for own properties. */
10725
- var hasOwnProperty$3 = objectProto$2.hasOwnProperty;
11252
+ var hasOwnProperty$4 = objectProto$3.hasOwnProperty;
10726
11253
 
10727
11254
  /**
10728
11255
  * Creates an array of the enumerable property names of the array-like `value`.
@@ -10742,7 +11269,7 @@ function arrayLikeKeys(value, inherited) {
10742
11269
  length = result.length;
10743
11270
 
10744
11271
  for (var key in value) {
10745
- if ((inherited || hasOwnProperty$3.call(value, key)) &&
11272
+ if ((inherited || hasOwnProperty$4.call(value, key)) &&
10746
11273
  !(skipIndexes && (
10747
11274
  // Safari 9 has enumerable `arguments.length` in strict mode.
10748
11275
  key == 'length' ||
@@ -10812,10 +11339,10 @@ var _getAllKeys = getAllKeys;
10812
11339
  var COMPARE_PARTIAL_FLAG$3 = 1;
10813
11340
 
10814
11341
  /** Used for built-in method references. */
10815
- var objectProto$1 = Object.prototype;
11342
+ var objectProto$2 = Object.prototype;
10816
11343
 
10817
11344
  /** Used to check objects for own properties. */
10818
- var hasOwnProperty$2 = objectProto$1.hasOwnProperty;
11345
+ var hasOwnProperty$3 = objectProto$2.hasOwnProperty;
10819
11346
 
10820
11347
  /**
10821
11348
  * A specialized version of `baseIsEqualDeep` for objects with support for
@@ -10843,7 +11370,7 @@ function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
10843
11370
  var index = objLength;
10844
11371
  while (index--) {
10845
11372
  var key = objProps[index];
10846
- if (!(isPartial ? key in other : hasOwnProperty$2.call(other, key))) {
11373
+ if (!(isPartial ? key in other : hasOwnProperty$3.call(other, key))) {
10847
11374
  return false;
10848
11375
  }
10849
11376
  }
@@ -10903,13 +11430,13 @@ var COMPARE_PARTIAL_FLAG$2 = 1;
10903
11430
  /** `Object#toString` result references. */
10904
11431
  var argsTag = '[object Arguments]',
10905
11432
  arrayTag = '[object Array]',
10906
- objectTag = '[object Object]';
11433
+ objectTag$1 = '[object Object]';
10907
11434
 
10908
11435
  /** Used for built-in method references. */
10909
- var objectProto = Object.prototype;
11436
+ var objectProto$1 = Object.prototype;
10910
11437
 
10911
11438
  /** Used to check objects for own properties. */
10912
- var hasOwnProperty$1 = objectProto.hasOwnProperty;
11439
+ var hasOwnProperty$2 = objectProto$1.hasOwnProperty;
10913
11440
 
10914
11441
  /**
10915
11442
  * A specialized version of `baseIsEqual` for arrays and objects which performs
@@ -10931,11 +11458,11 @@ function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
10931
11458
  objTag = objIsArr ? arrayTag : _getTag(object),
10932
11459
  othTag = othIsArr ? arrayTag : _getTag(other);
10933
11460
 
10934
- objTag = objTag == argsTag ? objectTag : objTag;
10935
- othTag = othTag == argsTag ? objectTag : othTag;
11461
+ objTag = objTag == argsTag ? objectTag$1 : objTag;
11462
+ othTag = othTag == argsTag ? objectTag$1 : othTag;
10936
11463
 
10937
- var objIsObj = objTag == objectTag,
10938
- othIsObj = othTag == objectTag,
11464
+ var objIsObj = objTag == objectTag$1,
11465
+ othIsObj = othTag == objectTag$1,
10939
11466
  isSameTag = objTag == othTag;
10940
11467
 
10941
11468
  if (isSameTag && isBuffer_1(object)) {
@@ -10952,8 +11479,8 @@ function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
10952
11479
  : _equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
10953
11480
  }
10954
11481
  if (!(bitmask & COMPARE_PARTIAL_FLAG$2)) {
10955
- var objIsWrapped = objIsObj && hasOwnProperty$1.call(object, '__wrapped__'),
10956
- othIsWrapped = othIsObj && hasOwnProperty$1.call(other, '__wrapped__');
11482
+ var objIsWrapped = objIsObj && hasOwnProperty$2.call(object, '__wrapped__'),
11483
+ othIsWrapped = othIsObj && hasOwnProperty$2.call(other, '__wrapped__');
10957
11484
 
10958
11485
  if (objIsWrapped || othIsWrapped) {
10959
11486
  var objUnwrapped = objIsWrapped ? object.value() : object,
@@ -12164,7 +12691,7 @@ var FuncProto = Function.prototype;
12164
12691
  var ObjProto = Object.prototype;
12165
12692
  var slice = ArrayProto.slice;
12166
12693
  var toString = ObjProto.toString;
12167
- var hasOwnProperty = ObjProto.hasOwnProperty;
12694
+ var hasOwnProperty$1 = ObjProto.hasOwnProperty;
12168
12695
  var windowConsole = window$1.console;
12169
12696
  var navigator = window$1.navigator;
12170
12697
  var document$1 = window$1.document;
@@ -12301,7 +12828,7 @@ _.each = function(obj, iterator, context) {
12301
12828
  }
12302
12829
  } else {
12303
12830
  for (var key in obj) {
12304
- if (hasOwnProperty.call(obj, key)) {
12831
+ if (hasOwnProperty$1.call(obj, key)) {
12305
12832
  if (iterator.call(context, obj[key], key, obj) === breaker) {
12306
12833
  return;
12307
12834
  }
@@ -12337,7 +12864,7 @@ _.isFunction = function(f) {
12337
12864
  };
12338
12865
 
12339
12866
  _.isArguments = function(obj) {
12340
- return !!(obj && hasOwnProperty.call(obj, 'callee'));
12867
+ return !!(obj && hasOwnProperty$1.call(obj, 'callee'));
12341
12868
  };
12342
12869
 
12343
12870
  _.toArray = function(iterable) {
@@ -12425,7 +12952,7 @@ _.isObject = function(obj) {
12425
12952
  _.isEmptyObject = function(obj) {
12426
12953
  if (_.isObject(obj)) {
12427
12954
  for (var key in obj) {
12428
- if (hasOwnProperty.call(obj, key)) {
12955
+ if (hasOwnProperty$1.call(obj, key)) {
12429
12956
  return false;
12430
12957
  }
12431
12958
  }
@@ -12617,7 +13144,7 @@ _.JSONEncode = (function() {
12617
13144
 
12618
13145
  // Iterate through all of the keys in the object.
12619
13146
  for (k in value) {
12620
- if (hasOwnProperty.call(value, k)) {
13147
+ if (hasOwnProperty$1.call(value, k)) {
12621
13148
  v = str(k, value);
12622
13149
  if (v) {
12623
13150
  partial.push(quote(k) + (gap ? ': ' : ':') + v);
@@ -18286,6 +18813,10 @@ const MIXPANEL_EVENT = {
18286
18813
  VISUAL_SDK_IFRAME_LOAD_PERFORMANCE: 'visual-sdk-iframe-load-performance',
18287
18814
  VISUAL_SDK_EMBED_CREATE: 'visual-sdk-embed-create',
18288
18815
  VERCEL_INTEGRATION_COMPLETED: 'vercel-integration-completed',
18816
+ VISUAL_SDK_RENDER_CALLED: 'visual-sdk-render-called',
18817
+ VISUAL_SDK_PRE_RENDER: 'visual-sdk-pre-render',
18818
+ VISUAL_SDK_SHOW_PRE_RENDER: 'visual-sdk-show-pre-render',
18819
+ VISUAL_SDK_HIDE_PRE_RENDER: 'visual-sdk-hide-pre-render',
18289
18820
  };
18290
18821
  let isMixpanelInitialized = false;
18291
18822
  let eventQueue = [];
@@ -20038,6 +20569,154 @@ function processEventData(type, eventData, thoughtSpotHost, containerEl) {
20038
20569
  return eventData;
20039
20570
  }
20040
20571
 
20572
+ /**
20573
+ * Checks if `value` is `null` or `undefined`.
20574
+ *
20575
+ * @static
20576
+ * @memberOf _
20577
+ * @since 4.0.0
20578
+ * @category Lang
20579
+ * @param {*} value The value to check.
20580
+ * @returns {boolean} Returns `true` if `value` is nullish, else `false`.
20581
+ * @example
20582
+ *
20583
+ * _.isNil(null);
20584
+ * // => true
20585
+ *
20586
+ * _.isNil(void 0);
20587
+ * // => true
20588
+ *
20589
+ * _.isNil(NaN);
20590
+ * // => false
20591
+ */
20592
+ function isNil(value) {
20593
+ return value == null;
20594
+ }
20595
+
20596
+ var isNil_1 = isNil;
20597
+
20598
+ /** Built-in value references. */
20599
+ var getPrototype = _overArg(Object.getPrototypeOf, Object);
20600
+
20601
+ var _getPrototype = getPrototype;
20602
+
20603
+ /** `Object#toString` result references. */
20604
+ var objectTag = '[object Object]';
20605
+
20606
+ /** Used for built-in method references. */
20607
+ var funcProto = Function.prototype,
20608
+ objectProto = Object.prototype;
20609
+
20610
+ /** Used to resolve the decompiled source of functions. */
20611
+ var funcToString = funcProto.toString;
20612
+
20613
+ /** Used to check objects for own properties. */
20614
+ var hasOwnProperty = objectProto.hasOwnProperty;
20615
+
20616
+ /** Used to infer the `Object` constructor. */
20617
+ var objectCtorString = funcToString.call(Object);
20618
+
20619
+ /**
20620
+ * Checks if `value` is a plain object, that is, an object created by the
20621
+ * `Object` constructor or one with a `[[Prototype]]` of `null`.
20622
+ *
20623
+ * @static
20624
+ * @memberOf _
20625
+ * @since 0.8.0
20626
+ * @category Lang
20627
+ * @param {*} value The value to check.
20628
+ * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
20629
+ * @example
20630
+ *
20631
+ * function Foo() {
20632
+ * this.a = 1;
20633
+ * }
20634
+ *
20635
+ * _.isPlainObject(new Foo);
20636
+ * // => false
20637
+ *
20638
+ * _.isPlainObject([1, 2, 3]);
20639
+ * // => false
20640
+ *
20641
+ * _.isPlainObject({ 'x': 0, 'y': 0 });
20642
+ * // => true
20643
+ *
20644
+ * _.isPlainObject(Object.create(null));
20645
+ * // => true
20646
+ */
20647
+ function isPlainObject(value) {
20648
+ if (!isObjectLike_1(value) || _baseGetTag(value) != objectTag) {
20649
+ return false;
20650
+ }
20651
+ var proto = _getPrototype(value);
20652
+ if (proto === null) {
20653
+ return true;
20654
+ }
20655
+ var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;
20656
+ return typeof Ctor == 'function' && Ctor instanceof Ctor &&
20657
+ funcToString.call(Ctor) == objectCtorString;
20658
+ }
20659
+
20660
+ var isPlainObject_1 = isPlainObject;
20661
+
20662
+ /** `Object#toString` result references. */
20663
+ var stringTag = '[object String]';
20664
+
20665
+ /**
20666
+ * Checks if `value` is classified as a `String` primitive or object.
20667
+ *
20668
+ * @static
20669
+ * @since 0.1.0
20670
+ * @memberOf _
20671
+ * @category Lang
20672
+ * @param {*} value The value to check.
20673
+ * @returns {boolean} Returns `true` if `value` is a string, else `false`.
20674
+ * @example
20675
+ *
20676
+ * _.isString('abc');
20677
+ * // => true
20678
+ *
20679
+ * _.isString(1);
20680
+ * // => false
20681
+ */
20682
+ function isString(value) {
20683
+ return typeof value == 'string' ||
20684
+ (!isArray_1(value) && isObjectLike_1(value) && _baseGetTag(value) == stringTag);
20685
+ }
20686
+
20687
+ var isString_1 = isString;
20688
+
20689
+ /**
20690
+ * Checks if `value` is `undefined`.
20691
+ *
20692
+ * @static
20693
+ * @since 0.1.0
20694
+ * @memberOf _
20695
+ * @category Lang
20696
+ * @param {*} value The value to check.
20697
+ * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.
20698
+ * @example
20699
+ *
20700
+ * _.isUndefined(void 0);
20701
+ * // => true
20702
+ *
20703
+ * _.isUndefined(null);
20704
+ * // => false
20705
+ */
20706
+ function isUndefined(value) {
20707
+ return value === undefined;
20708
+ }
20709
+
20710
+ var isUndefined_1 = isUndefined;
20711
+
20712
+ const isValidApplicability = (a) => {
20713
+ if (isUndefined_1(a))
20714
+ return true;
20715
+ // targetId is not required at LIVEBOARD level, since the filter applies to the whole Liveboard
20716
+ return isPlainObject_1(a)
20717
+ && Object.values(ApplicabilityLevel).includes(a.level)
20718
+ && (a.level === ApplicabilityLevel.Liveboard || (isString_1(a.targetId) && a.targetId.trim().length > 0));
20719
+ };
20041
20720
  function isValidUpdateFiltersPayload(payload) {
20042
20721
  if (!payload)
20043
20722
  return false;
@@ -20046,12 +20725,23 @@ function isValidUpdateFiltersPayload(payload) {
20046
20725
  const hasOperator = typeof f.oper === 'string' || typeof f.operator === 'string';
20047
20726
  const hasValues = Array.isArray(f.values);
20048
20727
  const validType = !f.type || typeof f.type === 'string';
20049
- return hasColumn && hasOperator && hasValues && validType;
20728
+ return hasColumn && hasOperator && hasValues && validType && isValidApplicability(f.applicability);
20050
20729
  };
20051
20730
  const hasValidFilter = payload.filter && isValidFilter(payload.filter);
20052
20731
  const hasValidFilters = Array.isArray(payload.filters) && payload.filters.length > 0 && payload.filters.every(isValidFilter);
20053
20732
  return !!(hasValidFilter || hasValidFilters);
20054
20733
  }
20734
+ function isValidUpdateParametersPayload(payload) {
20735
+ // Only validates the applicability of each parameter (null treated as absent); the rest is forwarded as-is for backward compatibility.
20736
+ if (!Array.isArray(payload))
20737
+ return true;
20738
+ return payload.every((p) => {
20739
+ if (!isPlainObject_1(p))
20740
+ return true;
20741
+ const { applicability } = p;
20742
+ return isNil_1(applicability) || isValidApplicability(applicability);
20743
+ });
20744
+ }
20055
20745
  function isValidDrillDownPayload(payload) {
20056
20746
  if (!payload)
20057
20747
  return false;
@@ -20082,6 +20772,9 @@ function throwUpdateFiltersValidationError() {
20082
20772
  }
20083
20773
  function throwDrillDownValidationError() {
20084
20774
  createValidationError(ERROR_MESSAGE.DRILLDOWN_INVALID_PAYLOAD);
20775
+ }
20776
+ function throwUpdateParametersValidationError() {
20777
+ createValidationError(ERROR_MESSAGE.UPDATEPARAMETERS_INVALID_PAYLOAD);
20085
20778
  }
20086
20779
 
20087
20780
  /**
@@ -20102,6 +20795,7 @@ const PASSTHROUGH_MAP = {
20102
20795
  [HostEvent.GetParameters]: UIPassthroughEvent.GetParameters,
20103
20796
  [HostEvent.GetTML]: UIPassthroughEvent.GetTML,
20104
20797
  [HostEvent.GetTabs]: UIPassthroughEvent.GetTabs,
20798
+ [HostEvent.GetGroups]: UIPassthroughEvent.GetGroups,
20105
20799
  [HostEvent.getExportRequestForCurrentPinboard]: UIPassthroughEvent.GetExportRequestForCurrentPinboard,
20106
20800
  };
20107
20801
  class HostEventClient {
@@ -20113,6 +20807,7 @@ class HostEventClient {
20113
20807
  [HostEvent.Pin]: (p, c) => this.handlePinEvent(p, c),
20114
20808
  [HostEvent.SaveAnswer]: (p, c) => this.handleSaveAnswerEvent(p, c),
20115
20809
  [HostEvent.UpdateFilters]: (p, c) => this.handleUpdateFiltersEvent(p, c),
20810
+ [HostEvent.UpdateParameters]: (p, c) => this.handleUpdateParametersEvent(p, c),
20116
20811
  [HostEvent.DrillDown]: (p, c) => this.handleDrillDownEvent(p, c),
20117
20812
  };
20118
20813
  }
@@ -20237,6 +20932,13 @@ class HostEventClient {
20237
20932
  }
20238
20933
  return this.handleHostEventWithParam(UIPassthroughEvent.UpdateFilters, payload, context);
20239
20934
  }
20935
+ handleUpdateParametersEvent(payload, context) {
20936
+ if (!isValidUpdateParametersPayload(payload)) {
20937
+ throwUpdateParametersValidationError();
20938
+ }
20939
+ // UpdateParameters has no UI passthrough contract; dispatch over the legacy channel
20940
+ return this.hostEventFallback(HostEvent.UpdateParameters, payload, context);
20941
+ }
20240
20942
  handleDrillDownEvent(payload, context) {
20241
20943
  if (!isValidDrillDownPayload(payload)) {
20242
20944
  throwDrillDownValidationError();
@@ -21022,7 +21724,7 @@ class TsEmbed {
21022
21724
  if (this.embedConfig.currencyFormat) {
21023
21725
  queryParams[Param.CurrencyFormat] = this.embedConfig.currencyFormat;
21024
21726
  }
21025
- const { disabledActions, disabledActionReason, hiddenActions, visibleActions, hiddenTabs, visibleTabs, showAlerts, additionalFlags: additionalFlagsFromView, locale, customizations, contextMenuTrigger, linkOverride, enableLinkOverridesV2, insertInToSlide, disableRedirectionLinksInNewTab, overrideOrgId, exposeTranslationIDs, primaryAction, } = this.viewConfig;
21727
+ const { disabledActions, disabledActionReason, hiddenActions, visibleActions, hiddenTabs, visibleTabs, showAlerts, additionalFlags: additionalFlagsFromView, locale, customizations, contextMenuTrigger, linkOverride, enableLinkOverridesV2, insertInToSlide, disableRedirectionLinksInNewTab, overrideOrgId, overrideHistoryState, exposeTranslationIDs, primaryAction, } = this.viewConfig;
21026
21728
  const { additionalFlags: additionalFlagsFromInit } = this.embedConfig;
21027
21729
  const additionalFlags = {
21028
21730
  ...additionalFlagsFromInit,
@@ -21110,6 +21812,9 @@ class TsEmbed {
21110
21812
  if (overrideOrgId !== undefined) {
21111
21813
  queryParams[Param.OverrideOrgId] = overrideOrgId;
21112
21814
  }
21815
+ if (overrideHistoryState !== undefined) {
21816
+ queryParams[Param.OverrideHistoryState] = overrideHistoryState;
21817
+ }
21113
21818
  if (this.isPreAuthCacheEnabled()) {
21114
21819
  queryParams[Param.preAuthCache] = true;
21115
21820
  }
@@ -21795,6 +22500,9 @@ class TsEmbed {
21795
22500
  * @param args
21796
22501
  */
21797
22502
  async render() {
22503
+ uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_RENDER_CALLED, {
22504
+ embedComponentType: this.viewConfig.embedComponentType,
22505
+ });
21798
22506
  if (!getIsInitCalled()) {
21799
22507
  logger$3.error(ERROR_MESSAGE.RENDER_CALLED_BEFORE_INIT);
21800
22508
  }
@@ -21866,6 +22574,10 @@ class TsEmbed {
21866
22574
  * @param showPreRenderByDefault - Show the preRender after render, hidden by default
21867
22575
  */
21868
22576
  async preRender(showPreRenderByDefault = false, replaceExistingPreRender = false) {
22577
+ uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_PRE_RENDER, {
22578
+ showPreRenderByDefault,
22579
+ replaceExistingPreRender,
22580
+ });
21869
22581
  if (!this.viewConfig.preRenderId) {
21870
22582
  logger$3.error(ERROR_MESSAGE.PRERENDER_ID_MISSING);
21871
22583
  return this;
@@ -22042,7 +22754,11 @@ class TsEmbed {
22042
22754
  * wrapper to overlay it.
22043
22755
  */
22044
22756
  async showPreRender() {
22045
- var _a;
22757
+ var _a, _b;
22758
+ uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_SHOW_PRE_RENDER, {
22759
+ preRenderId: this.viewConfig.preRenderId,
22760
+ embedComponentType: this.viewConfig.embedComponentType,
22761
+ });
22046
22762
  if (this.shouldWaitForRenderPromise)
22047
22763
  await this.isReadyForRenderPromise;
22048
22764
  if (!this.viewConfig.preRenderId) {
@@ -22066,10 +22782,14 @@ class TsEmbed {
22066
22782
  }
22067
22783
  }
22068
22784
  const placeHolderId = this.getPreRenderIds().placeHolder;
22069
- const oldEle = this.hostElement.querySelector(`#${placeHolderId}`);
22070
- if (oldEle) {
22071
- this.hostElement.removeChild(oldEle);
22072
- }
22785
+ // Remove any stale placeholder from a previous cycle. It is located
22786
+ // via a subtree-wide querySelector, so it may be nested deeper than a
22787
+ // direct child (E.g.: with fullHeight the host app can wrap it). Use
22788
+ // Element.remove() — which detaches from whatever the real parent is —
22789
+ // rather than hostElement.removeChild(), which throws NotFoundError
22790
+ // when the match is not a direct child. Mirrors the wrapper/child
22791
+ // cleanup in createPreRenderWrapper()/createPreRenderChild().
22792
+ (_a = this.hostElement.querySelector(`#${placeHolderId}`)) === null || _a === void 0 ? void 0 : _a.remove();
22073
22793
  this.hostElement.appendChild(this.insertedDomEl);
22074
22794
  this.syncPreRenderStyle();
22075
22795
  const customContainer = this.preRenderContainerEl && this.preRenderContainerEl !== document.body
@@ -22080,7 +22800,7 @@ class TsEmbed {
22080
22800
  customContainer.addEventListener('scroll', this.containerScrollListener);
22081
22801
  }
22082
22802
  if (!this.viewConfig.doNotTrackPreRenderSize) {
22083
- const observeTarget = (_a = this.insertedDomEl) !== null && _a !== void 0 ? _a : this.hostElement;
22803
+ const observeTarget = (_b = this.insertedDomEl) !== null && _b !== void 0 ? _b : this.hostElement;
22084
22804
  this.resizeObserver = new ResizeObserver((entries) => {
22085
22805
  entries.forEach((entry) => {
22086
22806
  if (entry.target === observeTarget) {
@@ -22144,6 +22864,10 @@ class TsEmbed {
22144
22864
  * If the component is not preRendered, it issues a warning.
22145
22865
  */
22146
22866
  hidePreRender() {
22867
+ uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_HIDE_PRE_RENDER, {
22868
+ preRenderId: this.viewConfig.preRenderId,
22869
+ embedComponentType: this.viewConfig.embedComponentType,
22870
+ });
22147
22871
  logger$3.debug('HidePreRender Called');
22148
22872
  if (!this.isPreRenderConnected()) {
22149
22873
  // if the embed component is not preRendered , nothing to hide
@@ -22351,6 +23075,18 @@ function buildSpotterSidebarAppInitData(defaultAppInitData, viewConfig, handleEr
22351
23075
  ...(visualOverrides !== undefined ? { visualOverridesParams: visualOverrides } : {}),
22352
23076
  },
22353
23077
  };
23078
+ }
23079
+ function buildSpotterShareConversationAppInitData(initData, viewConfig) {
23080
+ const { spotterShareConversationConfig } = viewConfig;
23081
+ if (!spotterShareConversationConfig)
23082
+ return initData;
23083
+ return {
23084
+ ...initData,
23085
+ embedParams: {
23086
+ ...(initData.embedParams || {}),
23087
+ spotterShareConversationConfig,
23088
+ },
23089
+ };
22354
23090
  }
22355
23091
 
22356
23092
  function buildSpotterVizAppInitData(initData, viewConfig) {
@@ -22412,6 +23148,10 @@ var Page;
22412
23148
  * Monitor Alerts Page
22413
23149
  */
22414
23150
  Page["Monitor"] = "monitor";
23151
+ /**
23152
+ * Collections listing page
23153
+ */
23154
+ Page["Collections"] = "collections";
22415
23155
  })(Page || (Page = {}));
22416
23156
  /**
22417
23157
  * Define the initial state of column custom group accordions
@@ -22460,6 +23200,9 @@ var HomePage;
22460
23200
  /**
22461
23201
  * Modular (v2) introduces the updated Modular Home Experience.
22462
23202
  * It serves as the foundational version of the home page.
23203
+ * Use {@link HomePage.ModularWithStylingChanges} (V3) or
23204
+ * {@link HomePage.Focused} (V4) instead.
23205
+ * @deprecated V1 and V2 home page experiences are deprecated.
22463
23206
  */
22464
23207
  HomePage["Modular"] = "v2";
22465
23208
  /**
@@ -22575,14 +23318,19 @@ class AppEmbed extends V1Embed {
22575
23318
  async getAppInitData() {
22576
23319
  const defaultAppInitData = await super.getAppInitData();
22577
23320
  const sidebarInitData = buildSpotterSidebarAppInitData(defaultAppInitData, this.viewConfig, this.handleError.bind(this));
22578
- return buildSpotterVizAppInitData(sidebarInitData, this.viewConfig);
23321
+ const vizInitData = buildSpotterVizAppInitData(sidebarInitData, this.viewConfig);
23322
+ return buildSpotterShareConversationAppInitData(vizInitData, this.viewConfig);
22579
23323
  }
22580
23324
  /**
22581
23325
  * Constructs a map of parameters to be passed on to the
22582
23326
  * embedded Liveboard or visualization.
22583
23327
  */
22584
23328
  getEmbedParams() {
22585
- const { tag, hideTagFilterChips, hideObjects, liveboardV2, showPrimaryNavbar, disableProfileAndHelp, hideHamburger, hideObjectSearch, hideNotification, hideApplicationSwitcher, hideOrgSwitcher, enableSearchAssist, newConnectionsExperience, fullHeight, dataPanelV2 = true, hideLiveboardHeader = false, showLiveboardTitle = true, showLiveboardDescription = true, showMaskedFilterChip = false, isLiveboardMasterpiecesEnabled = false, newChartsLibrary, hideHomepageLeftNav = false, modularHomeExperience = false, isLiveboardHeaderSticky = true, enableAskSage, collapseSearchBarInitially = false, enable2ColumnLayout, enableCustomColumnGroups = false, dataPanelCustomGroupsAccordionInitialState = DataPanelCustomColumnGroupsAccordionState$1.EXPAND_ALL, collapseSearchBar = true, isLiveboardCompactHeaderEnabled = false, showLiveboardVerifiedBadge = true, showLiveboardReverifyBanner = true, hideIrrelevantChipsInLiveboardTabs = false, isEnhancedFilterInteractivityEnabled = false, homePageSearchBarMode, isUnifiedSearchExperienceEnabled = true, enablePendoHelp = true, discoveryExperience, coverAndFilterOptionInPDF = false, isLiveboardStylingAndGroupingEnabled, isPNGInScheduledEmailsEnabled = false, isLiveboardXLSXCSVDownloadEnabled = false, isGranularXLSXCSVSchedulesEnabled = false, isCentralizedLiveboardFilterUXEnabled = false, isLinkParametersEnabled, updatedSpotterChatPrompt, enableStopAnswerGenerationEmbed, spotterChatConfig, minimumHeight, isThisPeriodInDateFiltersEnabled, enableHomepageAnnouncement = false, isContinuousLiveboardPDFEnabled = false, enableLiveboardDataCache, } = this.viewConfig;
23329
+ const params = this.getEmbedParamsObject();
23330
+ return getQueryParamString(params, true);
23331
+ }
23332
+ getEmbedParamsObject() {
23333
+ 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, enableCustomColumnGroups = false, dataPanelCustomGroupsAccordionInitialState = DataPanelCustomColumnGroupsAccordionState$1.EXPAND_ALL, collapseSearchBar = true, isLiveboardCompactHeaderEnabled, showLiveboardVerifiedBadge = true, showLiveboardReverifyBanner = true, hideIrrelevantChipsInLiveboardTabs, isEnhancedFilterInteractivityEnabled, homePageSearchBarMode, isUnifiedSearchExperienceEnabled = true, enablePendoHelp = true, discoveryExperience, coverAndFilterOptionInPDF, isLiveboardStylingAndGroupingEnabled, isPNGInScheduledEmailsEnabled = false, isLiveboardXLSXCSVDownloadEnabled, isGranularXLSXCSVSchedulesEnabled, isCentralizedLiveboardFilterUXEnabled = false, isScopedLiveboardFilteringEnabled, isLinkParametersEnabled, updatedSpotterChatPrompt, showSpotterRadiance, defaultQueryMode, enableStopAnswerGenerationEmbed, spotterChatConfig, spotterDataSources, minimumHeight, isThisPeriodInDateFiltersEnabled, enableHomepageAnnouncement = false, isContinuousLiveboardPDFEnabled, enableLiveboardDataCache, } = this.viewConfig;
22586
23334
  let params = {};
22587
23335
  params[Param.PrimaryNavHidden] = !showPrimaryNavbar;
22588
23336
  params[Param.HideProfleAndHelp] = !!disableProfileAndHelp;
@@ -22592,28 +23340,48 @@ class AppEmbed extends V1Embed {
22592
23340
  params[Param.ShowLiveboardTitle] = showLiveboardTitle;
22593
23341
  params[Param.ShowLiveboardDescription] = !!showLiveboardDescription;
22594
23342
  params[Param.ShowMaskedFilterChip] = showMaskedFilterChip;
22595
- params[Param.IsLiveboardMasterpiecesEnabled] = isLiveboardMasterpiecesEnabled;
23343
+ if (!isUndefined$1(isLiveboardMasterpiecesEnabled)) {
23344
+ params[Param.IsLiveboardMasterpiecesEnabled] = isLiveboardMasterpiecesEnabled;
23345
+ }
22596
23346
  if (newChartsLibrary !== undefined) {
22597
23347
  params[Param.EnableNewChartLibrary] = newChartsLibrary;
22598
23348
  }
22599
23349
  params[Param.LiveboardHeaderSticky] = isLiveboardHeaderSticky;
22600
23350
  params[Param.IsFullAppEmbed] = true;
22601
- params[Param.LiveboardHeaderV2] = isLiveboardCompactHeaderEnabled;
22602
- params[Param.IsEnhancedFilterInteractivityEnabled] = isEnhancedFilterInteractivityEnabled;
23351
+ if (!isUndefined$1(isLiveboardCompactHeaderEnabled)) {
23352
+ params[Param.LiveboardHeaderV2] = isLiveboardCompactHeaderEnabled;
23353
+ }
23354
+ if (!isUndefined$1(isEnhancedFilterInteractivityEnabled)) {
23355
+ params[Param.IsEnhancedFilterInteractivityEnabled] =
23356
+ isEnhancedFilterInteractivityEnabled;
23357
+ }
22603
23358
  params[Param.ShowLiveboardVerifiedBadge] = showLiveboardVerifiedBadge;
22604
23359
  params[Param.ShowLiveboardReverifyBanner] = showLiveboardReverifyBanner;
22605
- params[Param.HideIrrelevantFiltersInTab] = hideIrrelevantChipsInLiveboardTabs;
23360
+ if (!isUndefined$1(hideIrrelevantChipsInLiveboardTabs)) {
23361
+ params[Param.HideIrrelevantFiltersInTab] = hideIrrelevantChipsInLiveboardTabs;
23362
+ }
22606
23363
  if (isUnifiedSearchExperienceEnabled !== undefined) {
22607
23364
  params[Param.IsUnifiedSearchExperienceEnabled] = isUnifiedSearchExperienceEnabled;
22608
23365
  }
22609
- params[Param.CoverAndFilterOptionInPDF] = !!coverAndFilterOptionInPDF;
23366
+ if (!isUndefined$1(coverAndFilterOptionInPDF)) {
23367
+ params[Param.CoverAndFilterOptionInPDF] = !!coverAndFilterOptionInPDF;
23368
+ }
22610
23369
  params = this.getBaseQueryParams(params);
22611
- if (!isUndefined(updatedSpotterChatPrompt)) {
23370
+ if (!isUndefined$1(updatedSpotterChatPrompt)) {
22612
23371
  params[Param.UpdatedSpotterChatPrompt] = !!updatedSpotterChatPrompt;
22613
23372
  }
22614
- if (!isUndefined(enableStopAnswerGenerationEmbed)) {
23373
+ if (!isUndefined$1(showSpotterRadiance)) {
23374
+ params[Param.ShowSpotterRadiance] = !!showSpotterRadiance;
23375
+ }
23376
+ if (!isUndefined$1(defaultQueryMode)) {
23377
+ params[Param.DefaultQueryMode] = defaultQueryMode;
23378
+ }
23379
+ if (!isUndefined$1(enableStopAnswerGenerationEmbed)) {
22615
23380
  params[Param.EnableStopAnswerGenerationEmbed] = !!enableStopAnswerGenerationEmbed;
22616
23381
  }
23382
+ if (spotterDataSources && spotterDataSources.length) {
23383
+ params[Param.SpotterDataSources] = JSON.stringify(spotterDataSources);
23384
+ }
22617
23385
  // Handle spotterChatConfig params
22618
23386
  if (spotterChatConfig) {
22619
23387
  const { hideToolResponseCardBranding, toolResponseCardBrandingLabel, spotterFileUploadEnabled, spotterFileUploadFileTypes, enableStarterPrompts, } = spotterChatConfig;
@@ -22629,6 +23397,9 @@ class AppEmbed extends V1Embed {
22629
23397
  params[Param.SpotterFileUploadFileTypes] = JSON.stringify(spotterFileUploadFileTypes);
22630
23398
  }
22631
23399
  }
23400
+ if (!isUndefined$1(updatedSpotterExperience)) {
23401
+ params[Param.UpdatedSpotterExperience] = !!updatedSpotterExperience;
23402
+ }
22632
23403
  if (hideObjectSearch) {
22633
23404
  params[Param.HideObjectSearch] = !!hideObjectSearch;
22634
23405
  }
@@ -22695,6 +23466,9 @@ class AppEmbed extends V1Embed {
22695
23466
  if (isCentralizedLiveboardFilterUXEnabled != undefined) {
22696
23467
  params[Param.isCentralizedLiveboardFilterUXEnabled] = isCentralizedLiveboardFilterUXEnabled;
22697
23468
  }
23469
+ if (isScopedLiveboardFilteringEnabled !== undefined) {
23470
+ params[Param.isScopedLiveboardFilteringEnabled] = isScopedLiveboardFilteringEnabled;
23471
+ }
22698
23472
  if (isThisPeriodInDateFiltersEnabled !== undefined) {
22699
23473
  params[Param.IsThisPeriodInDateFiltersEnabled] = isThisPeriodInDateFiltersEnabled;
22700
23474
  }
@@ -22710,7 +23484,6 @@ class AppEmbed extends V1Embed {
22710
23484
  }
22711
23485
  params[Param.DataPanelV2Enabled] = dataPanelV2;
22712
23486
  params[Param.HideHomepageLeftNav] = hideHomepageLeftNav;
22713
- params[Param.ModularHomeExperienceEnabled] = modularHomeExperience;
22714
23487
  params[Param.CollapseSearchBarInitially] = collapseSearchBarInitially || collapseSearchBar;
22715
23488
  params[Param.EnableCustomColumnGroups] = enableCustomColumnGroups;
22716
23489
  if (dataPanelCustomGroupsAccordionInitialState
@@ -22725,33 +23498,15 @@ class AppEmbed extends V1Embed {
22725
23498
  if (modularHomeExperience !== undefined) {
22726
23499
  params[Param.ModularHomeExperienceEnabled] = modularHomeExperience;
22727
23500
  }
22728
- // Set navigation to v2 by default to avoid problems like the app
22729
- // switcher (9-dot menu) not showing when v3 navigation is turned on
22730
- // at the cluster level.
22731
- // To use v3 navigation, we must manually set the discoveryExperience
22732
- // settings.
22733
- params[Param.NavigationVersion] = 'v2';
22734
- // Set homePageVersion to v2 by default to reset the LD flag value
22735
- // for the homepageVersion.
22736
- params[Param.HomepageVersion] = 'v2';
23501
+ // Navigation V1/V2 and home page V1/V2 are deprecated. V3 is now the
23502
+ // default experience, Need to send navigationVersion=v3 and
23503
+ // homepageVersion=v3 even when the no discoveryExperience /
23504
+ // modularHomeExperience config is set. Without these
23505
+ // params, older TSA versions (< 26.7) fall back to V2 for nav and
23506
+ // home page, so the defaults must be sent explicitly from the SDK.
23507
+ params[Param.NavigationVersion] = PrimaryNavbarVersion.Sliding;
23508
+ params[Param.HomepageVersion] = HomePage.ModularWithStylingChanges;
22737
23509
  if (discoveryExperience) {
22738
- // primaryNavbarVersion v3 will enabled the new left navigation
22739
- if (discoveryExperience.primaryNavbarVersion === PrimaryNavbarVersion.Sliding) {
22740
- params[Param.NavigationVersion] = discoveryExperience.primaryNavbarVersion;
22741
- // Enable the modularHomeExperience when Sliding is enabled.
22742
- params[Param.ModularHomeExperienceEnabled] = true;
22743
- }
22744
- // homePage v2 will enable the modular home page
22745
- // and it will override the modularHomeExperience value
22746
- if (discoveryExperience.homePage === HomePage.Modular) {
22747
- params[Param.ModularHomeExperienceEnabled] = true;
22748
- }
22749
- // ModularWithStylingChanges (v3) introduces the styling changes
22750
- // to the Modular Homepage.
22751
- // v3 will be the base version of homePageVersion.
22752
- if (discoveryExperience.homePage === HomePage.ModularWithStylingChanges) {
22753
- params[Param.HomepageVersion] = HomePage.ModularWithStylingChanges;
22754
- }
22755
23510
  // listPageVersion can be changed to v2 or v3
22756
23511
  if (discoveryExperience.listPageVersion !== undefined) {
22757
23512
  params[Param.ListPageVersion] = discoveryExperience.listPageVersion;
@@ -22761,13 +23516,12 @@ class AppEmbed extends V1Embed {
22761
23516
  // The Focused (V4) homepage experience requires the updated
22762
23517
  // Spotter chat prompt. Enable it automatically unless the
22763
23518
  // developer has explicitly set updatedSpotterChatPrompt.
22764
- if (isUndefined(updatedSpotterChatPrompt)) {
23519
+ if (isUndefined$1(updatedSpotterChatPrompt)) {
22765
23520
  params[Param.UpdatedSpotterChatPrompt] = true;
22766
23521
  }
22767
23522
  }
22768
23523
  }
22769
- const queryParams = getQueryParamString(params, true);
22770
- return queryParams;
23524
+ return params;
22771
23525
  }
22772
23526
  /**
22773
23527
  * Constructs the URL of the ThoughtSpot app page to be rendered.
@@ -22802,6 +23556,8 @@ class AppEmbed extends V1Embed {
22802
23556
  return modularHomeExperience ? 'home/spotiq-analysis' : 'insights/results';
22803
23557
  case Page.Monitor:
22804
23558
  return modularHomeExperience ? 'home/monitor-alerts' : 'insights/monitor-alerts';
23559
+ case Page.Collections:
23560
+ return 'collections';
22805
23561
  case Page.Home:
22806
23562
  default:
22807
23563
  return 'home';
@@ -22834,11 +23590,13 @@ class AppEmbed extends V1Embed {
22834
23590
  * @version SDK: 1.12.0 | ThoughtSpot: 8.4.0.cl, 8.4.1-sw
22835
23591
  */
22836
23592
  navigateToPage(path, noReload = false) {
23593
+ var _a;
22837
23594
  if (!this.iFrame) {
22838
23595
  logger$3.log('Please call render before invoking this method');
22839
23596
  return;
22840
23597
  }
22841
- if (noReload) {
23598
+ const overrideHistoryState = (_a = this.viewConfig) === null || _a === void 0 ? void 0 : _a.overrideHistoryState;
23599
+ if (noReload || overrideHistoryState) {
22842
23600
  this.trigger(HostEvent.Navigate, path);
22843
23601
  }
22844
23602
  else {
@@ -23107,7 +23865,7 @@ class LiveboardEmbed extends V1Embed {
23107
23865
  getEmbedParamsObject() {
23108
23866
  let params = {};
23109
23867
  params = this.getBaseQueryParams(params);
23110
- const { enableVizTransformations, fullHeight, defaultHeight, minimumHeight, visibleVizs, liveboardV2, vizId, hideTabPanel, activeTabId, hideLiveboardHeader, showLiveboardDescription, showLiveboardTitle, isLiveboardHeaderSticky = true, isLiveboardCompactHeaderEnabled = false, showLiveboardVerifiedBadge = true, showLiveboardReverifyBanner = true, hideIrrelevantChipsInLiveboardTabs = false, showMaskedFilterChip = false, isLiveboardMasterpiecesEnabled = false, newChartsLibrary, isEnhancedFilterInteractivityEnabled = false, enableAskSage, enable2ColumnLayout, dataPanelV2 = true, enableCustomColumnGroups = false, oAuthPollingInterval, isForceRedirect, dataSourceId, coverAndFilterOptionInPDF = false, isLiveboardStylingAndGroupingEnabled, isPNGInScheduledEmailsEnabled = false, isLiveboardXLSXCSVDownloadEnabled = false, isGranularXLSXCSVSchedulesEnabled = false, showSpotterLimitations, isCentralizedLiveboardFilterUXEnabled = false, isLinkParametersEnabled, updatedSpotterChatPrompt, enableStopAnswerGenerationEmbed, spotterChatConfig, isThisPeriodInDateFiltersEnabled, isContinuousLiveboardPDFEnabled = false, enableLiveboardDataCache, } = this.viewConfig;
23868
+ 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, dataPanelV2 = true, updatedSpotterExperience, enableCustomColumnGroups = false, oAuthPollingInterval, isForceRedirect, dataSourceId, coverAndFilterOptionInPDF, isLiveboardStylingAndGroupingEnabled, isPNGInScheduledEmailsEnabled = false, isLiveboardXLSXCSVDownloadEnabled, isGranularXLSXCSVSchedulesEnabled, showSpotterLimitations, isCentralizedLiveboardFilterUXEnabled = false, isScopedLiveboardFilteringEnabled, isLinkParametersEnabled, updatedSpotterChatPrompt, showSpotterRadiance, enableStopAnswerGenerationEmbed, spotterChatConfig, isThisPeriodInDateFiltersEnabled, isContinuousLiveboardPDFEnabled, enableLiveboardDataCache, } = this.viewConfig;
23111
23869
  const preventLiveboardFilterRemoval = this.viewConfig.preventLiveboardFilterRemoval
23112
23870
  || this.viewConfig.preventPinboardFilterRemoval;
23113
23871
  if (fullHeight === true) {
@@ -23126,10 +23884,13 @@ class LiveboardEmbed extends V1Embed {
23126
23884
  if (preventLiveboardFilterRemoval) {
23127
23885
  params[Param.preventLiveboardFilterRemoval] = true;
23128
23886
  }
23129
- if (!isUndefined(updatedSpotterChatPrompt)) {
23887
+ if (!isUndefined$1(updatedSpotterChatPrompt)) {
23130
23888
  params[Param.UpdatedSpotterChatPrompt] = !!updatedSpotterChatPrompt;
23131
23889
  }
23132
- if (!isUndefined(enableStopAnswerGenerationEmbed)) {
23890
+ if (!isUndefined$1(showSpotterRadiance)) {
23891
+ params[Param.ShowSpotterRadiance] = !!showSpotterRadiance;
23892
+ }
23893
+ if (!isUndefined$1(enableStopAnswerGenerationEmbed)) {
23133
23894
  params[Param.EnableStopAnswerGenerationEmbed] = !!enableStopAnswerGenerationEmbed;
23134
23895
  }
23135
23896
  if (visibleVizs) {
@@ -23184,6 +23945,9 @@ class LiveboardEmbed extends V1Embed {
23184
23945
  if (showSpotterLimitations !== undefined) {
23185
23946
  params[Param.ShowSpotterLimitations] = showSpotterLimitations;
23186
23947
  }
23948
+ if (!isUndefined$1(updatedSpotterExperience)) {
23949
+ params[Param.UpdatedSpotterExperience] = !!updatedSpotterExperience;
23950
+ }
23187
23951
  // Handle spotterChatConfig params
23188
23952
  if (spotterChatConfig) {
23189
23953
  const { hideToolResponseCardBranding, toolResponseCardBrandingLabel, spotterFileUploadEnabled, spotterFileUploadFileTypes, enableStarterPrompts, } = spotterChatConfig;
@@ -23205,6 +23969,9 @@ class LiveboardEmbed extends V1Embed {
23205
23969
  if (isCentralizedLiveboardFilterUXEnabled !== undefined) {
23206
23970
  params[Param.isCentralizedLiveboardFilterUXEnabled] = isCentralizedLiveboardFilterUXEnabled;
23207
23971
  }
23972
+ if (isScopedLiveboardFilteringEnabled !== undefined) {
23973
+ params[Param.isScopedLiveboardFilteringEnabled] = isScopedLiveboardFilteringEnabled;
23974
+ }
23208
23975
  if (isThisPeriodInDateFiltersEnabled !== undefined) {
23209
23976
  params[Param.IsThisPeriodInDateFiltersEnabled] = isThisPeriodInDateFiltersEnabled;
23210
23977
  }
@@ -23218,16 +23985,27 @@ class LiveboardEmbed extends V1Embed {
23218
23985
  params[Param.EnableNewChartLibrary] = newChartsLibrary;
23219
23986
  }
23220
23987
  params[Param.LiveboardHeaderSticky] = isLiveboardHeaderSticky;
23221
- params[Param.LiveboardHeaderV2] = isLiveboardCompactHeaderEnabled;
23988
+ if (!isUndefined$1(isLiveboardCompactHeaderEnabled)) {
23989
+ params[Param.LiveboardHeaderV2] = isLiveboardCompactHeaderEnabled;
23990
+ }
23222
23991
  params[Param.ShowLiveboardVerifiedBadge] = showLiveboardVerifiedBadge;
23223
23992
  params[Param.ShowLiveboardReverifyBanner] = showLiveboardReverifyBanner;
23224
- params[Param.HideIrrelevantFiltersInTab] = hideIrrelevantChipsInLiveboardTabs;
23993
+ if (!isUndefined$1(hideIrrelevantChipsInLiveboardTabs)) {
23994
+ params[Param.HideIrrelevantFiltersInTab] = hideIrrelevantChipsInLiveboardTabs;
23995
+ }
23225
23996
  params[Param.ShowMaskedFilterChip] = showMaskedFilterChip;
23226
- params[Param.IsLiveboardMasterpiecesEnabled] = isLiveboardMasterpiecesEnabled;
23227
- params[Param.IsEnhancedFilterInteractivityEnabled] = isEnhancedFilterInteractivityEnabled;
23997
+ if (!isUndefined$1(isLiveboardMasterpiecesEnabled)) {
23998
+ params[Param.IsLiveboardMasterpiecesEnabled] = isLiveboardMasterpiecesEnabled;
23999
+ }
24000
+ if (!isUndefined$1(isEnhancedFilterInteractivityEnabled)) {
24001
+ params[Param.IsEnhancedFilterInteractivityEnabled] =
24002
+ isEnhancedFilterInteractivityEnabled;
24003
+ }
23228
24004
  params[Param.DataPanelV2Enabled] = dataPanelV2;
23229
24005
  params[Param.EnableCustomColumnGroups] = enableCustomColumnGroups;
23230
- params[Param.CoverAndFilterOptionInPDF] = coverAndFilterOptionInPDF;
24006
+ if (!isUndefined$1(coverAndFilterOptionInPDF)) {
24007
+ params[Param.CoverAndFilterOptionInPDF] = coverAndFilterOptionInPDF;
24008
+ }
23231
24009
  getQueryParamString(params, true);
23232
24010
  return params;
23233
24011
  }
@@ -23330,7 +24108,7 @@ class LiveboardEmbed extends V1Embed {
23330
24108
  });
23331
24109
  }
23332
24110
  async handleRenderForPrerender() {
23333
- if (isUndefined(this.viewConfig.liveboardId)) {
24111
+ if (isUndefined$1(this.viewConfig.liveboardId)) {
23334
24112
  return this.prerenderGeneric();
23335
24113
  }
23336
24114
  return super.handleRenderForPrerender();
@@ -24249,6 +25027,15 @@ class BodylessConversation extends SpotterAgentEmbed {
24249
25027
  }
24250
25028
  }
24251
25029
 
25030
+ /**
25031
+ * The query mode Spotter uses when answering a question.
25032
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
25033
+ */
25034
+ var SpotterQueryMode;
25035
+ (function (SpotterQueryMode) {
25036
+ SpotterQueryMode["FAST_SEARCH"] = "fastSearch";
25037
+ SpotterQueryMode["RESEARCH"] = "research";
25038
+ })(SpotterQueryMode || (SpotterQueryMode = {}));
24252
25039
  /**
24253
25040
  * Embed ThoughtSpot AI Conversation.
24254
25041
  * @version SDK: 1.37.0 | ThoughtSpot: 10.9.0.cl
@@ -24289,18 +25076,11 @@ class SpotterEmbed extends TsEmbed {
24289
25076
  */
24290
25077
  async getAppInitData() {
24291
25078
  const defaultAppInitData = await super.getAppInitData();
24292
- return buildSpotterSidebarAppInitData(defaultAppInitData, this.viewConfig, this.handleError.bind(this));
25079
+ const sidebarInitData = buildSpotterSidebarAppInitData(defaultAppInitData, this.viewConfig, this.handleError.bind(this));
25080
+ return buildSpotterShareConversationAppInitData(sidebarInitData, this.viewConfig);
24293
25081
  }
24294
25082
  getEmbedParamsObject() {
24295
- const { worksheetId, searchOptions, disableSourceSelection, hideSourceSelection, dataPanelV2, showSpotterLimitations, hideSampleQuestions, runtimeFilters, excludeRuntimeFiltersfromURL, runtimeParameters, excludeRuntimeParametersfromURL, updatedSpotterChatPrompt, enableStopAnswerGenerationEmbed, spotterChatConfig, } = this.viewConfig;
24296
- if (!worksheetId) {
24297
- this.handleError({
24298
- errorType: ErrorDetailsTypes.VALIDATION_ERROR,
24299
- message: ERROR_MESSAGE.SPOTTER_EMBED_WORKSHEED_ID_NOT_FOUND,
24300
- code: EmbedErrorCodes.WORKSHEET_ID_NOT_FOUND,
24301
- error: ERROR_MESSAGE.SPOTTER_EMBED_WORKSHEED_ID_NOT_FOUND,
24302
- });
24303
- }
25083
+ const { searchOptions, disableSourceSelection, hideSourceSelection, dataPanelV2, updatedSpotterExperience, showSpotterLimitations, hideSampleQuestions, runtimeFilters, excludeRuntimeFiltersfromURL, runtimeParameters, excludeRuntimeParametersfromURL, updatedSpotterChatPrompt, showSpotterRadiance, defaultQueryMode, enableStopAnswerGenerationEmbed, spotterChatConfig, } = this.viewConfig;
24304
25084
  const queryParams = this.getBaseQueryParams();
24305
25085
  queryParams[Param.SpotterEnabled] = true;
24306
25086
  // Boolean params
@@ -24310,6 +25090,8 @@ class SpotterEmbed extends TsEmbed {
24310
25090
  setParamIfDefined(queryParams, Param.ShowSpotterLimitations, showSpotterLimitations, true);
24311
25091
  setParamIfDefined(queryParams, Param.HideSampleQuestions, hideSampleQuestions, true);
24312
25092
  setParamIfDefined(queryParams, Param.UpdatedSpotterChatPrompt, updatedSpotterChatPrompt, true);
25093
+ setParamIfDefined(queryParams, Param.ShowSpotterRadiance, showSpotterRadiance, true);
25094
+ setParamIfDefined(queryParams, Param.DefaultQueryMode, defaultQueryMode);
24313
25095
  setParamIfDefined(queryParams, Param.EnableStopAnswerGenerationEmbed, enableStopAnswerGenerationEmbed, true);
24314
25096
  // Handle spotterChatConfig params
24315
25097
  if (spotterChatConfig) {
@@ -24322,11 +25104,18 @@ class SpotterEmbed extends TsEmbed {
24322
25104
  queryParams[Param.SpotterFileUploadFileTypes] = JSON.stringify(spotterFileUploadFileTypes);
24323
25105
  }
24324
25106
  }
25107
+ setParamIfDefined(queryParams, Param.UpdatedSpotterExperience, updatedSpotterExperience, true);
24325
25108
  return queryParams;
24326
25109
  }
24327
25110
  getIframeSrc() {
24328
- const { worksheetId, searchOptions, runtimeFilters, excludeRuntimeFiltersfromURL, runtimeParameters, excludeRuntimeParametersfromURL, } = this.viewConfig;
24329
- const path = 'insights/conv-assist';
25111
+ const { worksheetId, searchOptions, runtimeFilters, excludeRuntimeFiltersfromURL, runtimeParameters, excludeRuntimeParametersfromURL, sharedConversationId, dataSources, } = this.viewConfig;
25112
+ // Deep-link into the read-only shared-conversation reader view when a
25113
+ // shared conversation id is supplied (e.g. a recipient landing from a
25114
+ // host-configured CONVERSATION_URL share link); otherwise the normal
25115
+ // Spotter conversation surface.
25116
+ const path = sharedConversationId
25117
+ ? `insights/conv-assist/s/${encodeURIComponent(sharedConversationId)}`
25118
+ : 'insights/conv-assist';
24330
25119
  const queryParams = this.getEmbedParamsObject();
24331
25120
  let query = '';
24332
25121
  const queryParamsString = getQueryParamString(queryParams, true);
@@ -24342,8 +25131,12 @@ class SpotterEmbed extends TsEmbed {
24342
25131
  query += `&${parameterQuery}`;
24343
25132
  }
24344
25133
  const tsPostHashParams = this.getThoughtSpotPostUrlParams({
24345
- worksheet: worksheetId,
24346
- query: (searchOptions === null || searchOptions === void 0 ? void 0 : searchOptions.searchQuery) || '',
25134
+ ...(!(Array.isArray(dataSources) && dataSources.length > 0) && worksheetId
25135
+ && { worksheet: worksheetId }),
25136
+ ...((searchOptions === null || searchOptions === void 0 ? void 0 : searchOptions.searchQuery) && { query: searchOptions.searchQuery }),
25137
+ ...(Array.isArray(dataSources)
25138
+ && dataSources.length > 0
25139
+ && { dataSources: JSON.stringify(dataSources) }),
24347
25140
  });
24348
25141
  return `${this.getEmbedBasePath(query)}/embed/${path}${tsPostHashParams}`;
24349
25142
  }
@@ -25049,4 +25842,4 @@ class AutoFrameRenderer extends TsEmbed {
25049
25842
  }
25050
25843
  }
25051
25844
 
25052
- export { Action, AnswerService, AppEmbed, AuthEvent, AuthFailureType, AuthStatus, AuthType, BackgroundFormatType, BodylessConversation, ConditionalFormattingComparisonType, ConditionalFormattingOperator, ContextMenuTriggerOptions, ContextType, ConversationEmbed, CustomActionTarget, CustomActionsPosition, DataLabelFilterOperator, DataPanelCustomColumnGroupsAccordionState$1 as DataPanelCustomColumnGroupsAccordionState, DataSourceVisualMode, EmbedErrorCodes, EmbedEvent, ErrorDetailsTypes, HomeLeftNavItem, HomePage, HomePageSearchBarMode, HomepageModule, HostEvent, InterceptedApiType, LegendPosition, ListPage, ListPageColumns, LiveboardEmbed, LogLevel, MIXPANEL_EVENT, Page, PinboardEmbed, PrefetchFeatures, PrimaryNavbarVersion, RuntimeFilterOp, SearchBarEmbed, SearchEmbed, SpotterAgentEmbed, SpotterEmbed, TableContentDensity, TableTheme, UIPassthroughEvent, createLiveboardWithAnswers, executeTML, exportTML, getAnswerFromQuery, getEmbedConfig as getInitConfig, getSessionInfo, init, logout, prefetch, reloadIframe, resetCachedAuthToken, startAutoMCPFrameRenderer, tokenizedFetch, uploadMixpanelEvent };
25845
+ export { Action, AnswerService, AppEmbed, AuthEvent, AuthFailureType, AuthStatus, AuthType, BackgroundFormatType, BodylessConversation, ConditionalFormattingComparisonType, ConditionalFormattingOperator, ContextMenuTriggerOptions, ContextType, ConversationEmbed, CustomActionTarget, CustomActionsPosition, DataLabelFilterOperator, DataPanelCustomColumnGroupsAccordionState$1 as DataPanelCustomColumnGroupsAccordionState, DataSourceVisualMode, EmbedErrorCodes, EmbedEvent, ErrorDetailsTypes, HomeLeftNavItem, HomePage, HomePageSearchBarMode, HomepageModule, HostEvent, InterceptedApiType, LegendPosition, ListPage, ListPageColumns, LiveboardEmbed, LogLevel, MIXPANEL_EVENT, Page, PinboardEmbed, PrefetchFeatures, PrimaryNavbarVersion, RuntimeFilterOp, SearchBarEmbed, SearchEmbed, SpotterAgentEmbed, SpotterEmbed, SpotterQueryMode, TableContentDensity, TableTheme, UIPassthroughEvent, createLiveboardWithAnswers, executeTML, exportTML, getAnswerFromQuery, getEmbedConfig as getInitConfig, getSessionInfo, init, logout, prefetch, reloadIframe, resetCachedAuthToken, startAutoMCPFrameRenderer, tokenizedFetch, uploadMixpanelEvent };