@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
  import * as React from 'react';
4
4
  import React__default, { useRef, useCallback } from 'react';
@@ -374,7 +374,9 @@ var AuthType;
374
374
  })(AuthType || (AuthType = {}));
375
375
  /**
376
376
  *
377
- * **Note**: This attribute is not supported in the classic (V1) homepage experience.
377
+ * **Note**: The classic (V1) and Modular (V2) home page experiences are
378
+ * deprecated. This attribute applies to V3 (ModularWithStylingChanges) and
379
+ * V4 (Focused) home page experiences.
378
380
  *
379
381
  */
380
382
  var HomeLeftNavItem;
@@ -442,6 +444,13 @@ var HomeLeftNavItem;
442
444
  * @version SDK: 1.41.0 | ThoughtSpot: 10.12.0.cl
443
445
  */
444
446
  HomeLeftNavItem["Favorites"] = "favorites";
447
+ /**
448
+ * The *Collections* menu option in
449
+ * the *Insights* left navigation panel.
450
+ * Shown when collections are enabled on the cluster.
451
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
452
+ */
453
+ HomeLeftNavItem["Collections"] = "collections";
445
454
  })(HomeLeftNavItem || (HomeLeftNavItem = {}));
446
455
  /**
447
456
  * A map of the supported runtime filter operations
@@ -514,7 +523,9 @@ var RuntimeFilterOp;
514
523
  * via `hiddenHomepageModules` and reordered via
515
524
  * `reorderedHomepageModules`.
516
525
  *
517
- * **Note**: This option is not supported in the classic (v1) experience.
526
+ * **Note**: The classic (V1) and Modular (V2) home page experiences are
527
+ * deprecated. These modules apply to V3 (ModularWithStylingChanges) and
528
+ * V4 (Focused) home page experiences.
518
529
  * @version SDK: 1.28.0 | ThoughtSpot: 9.12.5.cl, 10.1.0.sw
519
530
  */
520
531
  var HomepageModule;
@@ -1472,11 +1483,19 @@ var EmbedEvent;
1472
1483
  * Emitted when a user changes any filter on a Liveboard.
1473
1484
  * Returns filter type and name, column name and ID, and runtime
1474
1485
  * filter details.
1486
+ * The payload includes an optional `applicability` attribute indicating the
1487
+ * scope of the changed filter. It contains a `level` (`LIVEBOARD`,
1488
+ * `TAB`, or `GROUP`) and, when `level` is `TAB` or `GROUP`, a
1489
+ * `targetId` with the GUID of the target. At `LIVEBOARD` level there
1490
+ * is no `targetId`, since the filter applies to the whole Liveboard.
1491
+ * The `applicability` attribute is available from SDK: 1.53.0 |
1492
+ * ThoughtSpot: 26.10.0.cl.
1475
1493
  * @example
1476
1494
  *
1477
1495
  * ```js
1478
1496
  * LiveboardEmbed.on(EmbedEvent.FilterChanged, (payload) => {
1479
1497
  * console.log('payload', payload);
1498
+ * // payload.data optionally includes applicability: { level, targetId }
1480
1499
  * })
1481
1500
  * ```
1482
1501
  * @version SDK: 1.23.0 | ThoughtSpot: 9.4.0.cl, 9.5.0.sw
@@ -1668,9 +1687,17 @@ var EmbedEvent;
1668
1687
  /**
1669
1688
  * Emitted when parameter changes in an Answer
1670
1689
  * or Liveboard.
1690
+ * The payload includes an optional `applicability` attribute indicating the
1691
+ * scope of the changed parameter. It contains a `level` (`LIVEBOARD`,
1692
+ * `TAB`, or `GROUP`) and, when `level` is `TAB` or `GROUP`, a
1693
+ * `targetId` with the GUID of the target. At `LIVEBOARD` level there
1694
+ * is no `targetId`, since the parameter applies to the whole Liveboard.
1695
+ * The `applicability` attribute is available from SDK: 1.53.0 |
1696
+ * ThoughtSpot: 26.10.0.cl.
1671
1697
  * ```js
1672
1698
  * liveboardEmbed.on(EmbedEvent.ParameterChanged, (payload) => {
1673
1699
  * console.log('payload', payload);
1700
+ * // payload.data optionally includes applicability: { level, targetId }
1674
1701
  * })
1675
1702
  * ```
1676
1703
  * @version SDK: 1.29.0 | ThoughtSpot: 10.3.0.cl
@@ -1972,6 +1999,158 @@ var EmbedEvent;
1972
1999
  * @version SDK: 1.46.0 | ThoughtSpot: 26.3.0.cl
1973
2000
  */
1974
2001
  EmbedEvent["SpotterConversationDeleted"] = "spotterConversationDeleted";
2002
+ /**
2003
+ * Emitted when the header Share button is clicked. Fires `Start` then `End`
2004
+ * to bracket the interaction. App→host counterpart of the
2005
+ * `ShareSpotterConversation` host event (user-driven vs programmatic open).
2006
+ * @example
2007
+ * ```js
2008
+ * spotterEmbed.on(EmbedEvent.SpotterShareConversationButtonHeaderClicked, (payload) => {
2009
+ * // payload: { convId: string }
2010
+ * })
2011
+ * ```
2012
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
2013
+ */
2014
+ EmbedEvent["SpotterShareConversationButtonHeaderClicked"] = "spotterShareConversationButtonHeaderClicked";
2015
+ /**
2016
+ * Emitted when the sidebar Share item is clicked. Fires `Start` then `End`
2017
+ * to bracket the interaction.
2018
+ * @example
2019
+ * ```js
2020
+ * spotterEmbed.on(EmbedEvent.SpotterShareConversationMenuItemSidebarClicked, (payload) => {
2021
+ * // payload: { convId: string }
2022
+ * })
2023
+ * ```
2024
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
2025
+ */
2026
+ EmbedEvent["SpotterShareConversationMenuItemSidebarClicked"] = "spotterShareConversationMenuItemSidebarClicked";
2027
+ /**
2028
+ * Emitted when a Spotter conversation is shared (recipients added, or a new
2029
+ * share created). The host builds its own link from shareId/convId + its
2030
+ * configured CONVERSATION_URL — no link string is sent. Distinct from
2031
+ * `SpotterShareModalConfirmButtonClicked`, which fires at click time before
2032
+ * the save resolves.
2033
+ * @example
2034
+ * ```js
2035
+ * spotterEmbed.on(EmbedEvent.SpotterConversationShared, (payload) => {
2036
+ * // payload: { convId: string, shareId: string,
2037
+ * // recipientsAdded: string[], recipientsRemoved: string[] }
2038
+ * })
2039
+ * ```
2040
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
2041
+ */
2042
+ EmbedEvent["SpotterConversationShared"] = "spotterConversationShared";
2043
+ /**
2044
+ * Emitted when access to a shared Spotter conversation is revoked
2045
+ * (recipients removed). `fullyRevoked` is true when the last sharee is removed
2046
+ * and the share is deleted entirely.
2047
+ * @example
2048
+ * ```js
2049
+ * spotterEmbed.on(EmbedEvent.SpotterConversationShareRevoked, (payload) => {
2050
+ * // payload: { convId: string, shareId: string,
2051
+ * // recipientsRemoved: string[], fullyRevoked: boolean }
2052
+ * })
2053
+ * ```
2054
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
2055
+ */
2056
+ EmbedEvent["SpotterConversationShareRevoked"] = "spotterConversationShareRevoked";
2057
+ /**
2058
+ * Emitted when a recipient opens a shared Spotter conversation (read-only
2059
+ * view). No shareId available viewer-side.
2060
+ * @example
2061
+ * ```js
2062
+ * spotterEmbed.on(EmbedEvent.SpotterSharedConversationViewed, (payload) => {
2063
+ * // payload: { convId: string, sourceConvId: string }
2064
+ * // convId = resolved snapshot conv id; sourceConvId = the shared URL id
2065
+ * })
2066
+ * ```
2067
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
2068
+ */
2069
+ EmbedEvent["SpotterSharedConversationViewed"] = "spotterSharedConversationViewed";
2070
+ /**
2071
+ * Emitted when the user toggles the share-modal "include new messages since
2072
+ * last shared version" checkbox.
2073
+ * @example
2074
+ * ```js
2075
+ * spotterEmbed.on(EmbedEvent.SpotterShareIncludeNewMessagesCheckboxToggled, (payload) => {
2076
+ * // payload: { convId: string, includeNewMessages: boolean }
2077
+ * })
2078
+ * ```
2079
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
2080
+ */
2081
+ EmbedEvent["SpotterShareIncludeNewMessagesCheckboxToggled"] = "spotterShareIncludeNewMessagesCheckboxToggled";
2082
+ /**
2083
+ * Emitted when the user dismisses the stale-snapshot info banner via its
2084
+ * cross (distinct from the include-new-messages checkbox toggle).
2085
+ * @example
2086
+ * ```js
2087
+ * spotterEmbed.on(EmbedEvent.SpotterShareStaleInfoBannerDismissed, (payload) => {
2088
+ * // payload: { convId: string }
2089
+ * })
2090
+ * ```
2091
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
2092
+ */
2093
+ EmbedEvent["SpotterShareStaleInfoBannerDismissed"] = "spotterShareStaleInfoBannerDismissed";
2094
+ /**
2095
+ * Emitted when the modal Share (confirm) button is clicked — fires at click
2096
+ * time, before the save resolves. Distinct from the `SpotterConversationShared`
2097
+ * / `SpotterConversationShareRevoked` result events.
2098
+ * @example
2099
+ * ```js
2100
+ * spotterEmbed.on(EmbedEvent.SpotterShareModalConfirmButtonClicked, (payload) => {
2101
+ * // payload: { convId: string }
2102
+ * })
2103
+ * ```
2104
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
2105
+ */
2106
+ EmbedEvent["SpotterShareModalConfirmButtonClicked"] = "spotterShareModalConfirmButtonClicked";
2107
+ /**
2108
+ * Emitted when the share modal is dismissed via the Cancel button.
2109
+ * @example
2110
+ * ```js
2111
+ * spotterEmbed.on(EmbedEvent.SpotterShareModalCancelButtonClicked, (payload) => {
2112
+ * // payload: { convId: string }
2113
+ * })
2114
+ * ```
2115
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
2116
+ */
2117
+ EmbedEvent["SpotterShareModalCancelButtonClicked"] = "spotterShareModalCancelButtonClicked";
2118
+ /**
2119
+ * Emitted when a recipient leaves the read-only shared view via the Exit
2120
+ * button.
2121
+ * @example
2122
+ * ```js
2123
+ * spotterEmbed.on(EmbedEvent.SpotterSharedConversationExitButtonClicked, (payload) => {
2124
+ * // payload: { convId: string }
2125
+ * })
2126
+ * ```
2127
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
2128
+ */
2129
+ EmbedEvent["SpotterSharedConversationExitButtonClicked"] = "spotterSharedConversationExitButtonClicked";
2130
+ /**
2131
+ * Emitted when a Spotter conversation is pinned.
2132
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
2133
+ * @example
2134
+ * ```js
2135
+ * spotterEmbed.on(EmbedEvent.SpotterConversationPinned, (payload) => {
2136
+ * console.log('Conversation pinned', payload);
2137
+ * // payload: { conversationId: string, pinnedAt: string (ISO 8601) }
2138
+ * })
2139
+ * ```
2140
+ */
2141
+ EmbedEvent["SpotterConversationPinned"] = "spotterConversationPinned";
2142
+ /**
2143
+ * Emitted when a Spotter conversation is unpinned.
2144
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
2145
+ * @example
2146
+ * ```js
2147
+ * spotterEmbed.on(EmbedEvent.SpotterConversationUnpinned, (payload) => {
2148
+ * console.log('Conversation unpinned', payload);
2149
+ * // payload: { conversationId: string, unpinnedAt: string (ISO 8601) }
2150
+ * })
2151
+ * ```
2152
+ */
2153
+ EmbedEvent["SpotterConversationUnpinned"] = "spotterConversationUnpinned";
1975
2154
  /**
1976
2155
  * Emitted when a Spotter conversation is selected/clicked.
1977
2156
  * @example
@@ -1984,6 +2163,30 @@ var EmbedEvent;
1984
2163
  * @version SDK: 1.46.0 | ThoughtSpot: 26.3.0.cl
1985
2164
  */
1986
2165
  EmbedEvent["SpotterConversationSelected"] = "spotterConversationSelected";
2166
+ /**
2167
+ * Emitted when the Spotter agent finishes streaming/rendering a response.
2168
+ * Includes the conversation and message identifiers so the host app can
2169
+ * fetch the full conversation history via the REST API if needed.
2170
+ *
2171
+ * The payload data has the shape `{ convId: string, messageId: string }`.
2172
+ *
2173
+ * Works with SpotterEmbed as well as AppEmbed (when Spotter is reached
2174
+ * inside the full application).
2175
+ * @example
2176
+ * ```js
2177
+ * spotterEmbed.on(EmbedEvent.SpotterResponseComplete, (payload) => {
2178
+ * console.log('Spotter response complete', payload);
2179
+ * })
2180
+ * ```
2181
+ * @example
2182
+ * ```js
2183
+ * appEmbed.on(EmbedEvent.SpotterResponseComplete, (payload) => {
2184
+ * console.log('Spotter response complete', payload);
2185
+ * })
2186
+ * ```
2187
+ * @version SDK: 1.51.0 | ThoughtSpot Cloud: 26.9.0.cl
2188
+ */
2189
+ EmbedEvent["SpotterResponseComplete"] = "spotterResponseComplete";
1987
2190
  /**
1988
2191
  * @hidden
1989
2192
  * Emitted when the auth token is about to get expired and needs to be refreshed.
@@ -2464,6 +2667,17 @@ var HostEvent;
2464
2667
  * name: string,
2465
2668
  * type: ATTRIBUTE/MEASURE,
2466
2669
  * dataType: INT64/CHAR/DATE }
2670
+ *
2671
+ * `applicability` - Optional. Scopes the filter to a specific target,
2672
+ * for example, a single Liveboard tab, so the panel for the correct
2673
+ * scoped filter is opened. Available from SDK: 1.53.0 |
2674
+ * ThoughtSpot: 26.10.0.cl. Includes the following attributes:
2675
+ *
2676
+ * - `level`: The scope of the filter: `LIVEBOARD`, `TAB`, or `GROUP`.
2677
+ * - `targetId`: The GUID of the target, for example, the tab GUID.
2678
+ * Required when `level` is `TAB` or `GROUP`. Do not pass it when
2679
+ * `level` is `LIVEBOARD`, since the filter applies to the whole
2680
+ * Liveboard. Omitting `applicability` targets the `LIVEBOARD` level.
2467
2681
  * @example
2468
2682
  * ```js
2469
2683
  * searchEmbed.trigger(HostEvent.OpenFilter,
@@ -2476,6 +2690,14 @@ var HostEvent;
2476
2690
  * ```
2477
2691
  * @example
2478
2692
  * ```js
2693
+ * // Open a filter scoped to a specific Liveboard tab
2694
+ * liveboardEmbed.trigger(HostEvent.OpenFilter, {
2695
+ * column: { columnId: '<column-GUID>' },
2696
+ * applicability: { level: 'TAB', targetId: '<tab-GUID>' }
2697
+ * });
2698
+ * ```
2699
+ * @example
2700
+ * ```js
2479
2701
  * // Open filter from search context
2480
2702
  * import { ContextType } from '@thoughtspot/visual-embed-sdk';
2481
2703
  * searchEmbed.trigger(HostEvent.OpenFilter, {
@@ -2485,6 +2707,38 @@ var HostEvent;
2485
2707
  * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl
2486
2708
  */
2487
2709
  HostEvent["OpenFilter"] = "openFilter";
2710
+ /**
2711
+ * Open the parameter panel for a particular parameter on a Liveboard.
2712
+ * Mirrors {@link HostEvent.OpenFilter} for parameters.
2713
+ * @param - Includes the following keys:
2714
+ * - `parameter`: An object identifying the parameter to open, for
2715
+ * example, `{ parameterId: '<parameter-GUID>' }`.
2716
+ * - `applicability`: Optional. Scopes the parameter to a specific target,
2717
+ * for example, a single Liveboard tab, so the panel for the correct
2718
+ * scoped parameter is opened. Includes the following attributes:
2719
+ *
2720
+ * - `level`: The scope of the parameter: `LIVEBOARD`, `TAB`, or `GROUP`.
2721
+ * - `targetId`: The GUID of the target, for example, the tab GUID.
2722
+ * Required when `level` is `TAB` or `GROUP`. Do not pass it when
2723
+ * `level` is `LIVEBOARD`, since the parameter applies to the whole
2724
+ * Liveboard. Omitting `applicability` targets the `LIVEBOARD` level.
2725
+ * @example
2726
+ * ```js
2727
+ * liveboardEmbed.trigger(HostEvent.OpenParameter, {
2728
+ * parameter: { parameterId: '<parameter-GUID>' }
2729
+ * });
2730
+ * ```
2731
+ * @example
2732
+ * ```js
2733
+ * // Open a parameter scoped to a specific group
2734
+ * liveboardEmbed.trigger(HostEvent.OpenParameter, {
2735
+ * parameter: { parameterId: '<parameter-GUID>' },
2736
+ * applicability: { level: 'GROUP', targetId: '<group-GUID>' }
2737
+ * });
2738
+ * ```
2739
+ * @version SDK: 1.53.0 | ThoughtSpot: 26.10.0.cl
2740
+ */
2741
+ HostEvent["OpenParameter"] = "openParameter";
2488
2742
  /**
2489
2743
  * Add columns to the current search query.
2490
2744
  * @param - { columnIds: string[] }
@@ -3549,6 +3803,14 @@ var HostEvent;
3549
3803
  /**
3550
3804
  * Get details of filters applied on the Liveboard.
3551
3805
  * Returns arrays containing Liveboard filter and runtime filter elements.
3806
+ * Each Liveboard filter includes an optional `applicability` attribute
3807
+ * indicating the scope of the filter. It contains a `level`
3808
+ * (`LIVEBOARD`, `TAB`, or `GROUP`) and, when `level` is `TAB` or
3809
+ * `GROUP`, a `targetId` with the GUID of the target. At `LIVEBOARD`
3810
+ * level there is no `targetId`, since the filter applies to the
3811
+ * whole Liveboard.
3812
+ * The `applicability` attribute is available from SDK: 1.53.0 |
3813
+ * ThoughtSpot: 26.10.0.cl.
3552
3814
  * @example
3553
3815
  * ```js
3554
3816
  * const data = await liveboardEmbed.trigger(HostEvent.GetFilters);
@@ -3588,6 +3850,16 @@ var HostEvent;
3588
3850
  *
3589
3851
  * `type` - To update filters for date time, specify the date format type.
3590
3852
  * For more information and examples, see link:https://developers.thoughtspot.com/docs/embed-liveboard#_date_filters[Date filters].
3853
+ *
3854
+ * `applicability` - Optional. Scopes the filter to a specific target,
3855
+ * for example, a single Liveboard tab. Available from SDK: 1.53.0 |
3856
+ * ThoughtSpot: 26.10.0.cl. Includes the following attributes:
3857
+ *
3858
+ * - `level`: The scope of the filter: `LIVEBOARD`, `TAB`, or `GROUP`.
3859
+ * - `targetId`: The GUID of the target, for example, the tab GUID.
3860
+ * Required when `level` is `TAB` or `GROUP`. Do not pass it when
3861
+ * `level` is `LIVEBOARD`, since the filter applies to the whole
3862
+ * Liveboard.
3591
3863
  * @example
3592
3864
  * ```js
3593
3865
  *
@@ -3664,6 +3936,21 @@ var HostEvent;
3664
3936
  * }
3665
3937
  * }, ContextType.Liveboard);
3666
3938
  * ```
3939
+ * @example
3940
+ * ```js
3941
+ * // Scope the filter to a specific Liveboard tab
3942
+ * liveboardEmbed.trigger(HostEvent.UpdateFilters, {
3943
+ * filter: {
3944
+ * column: "item type",
3945
+ * oper: "IN",
3946
+ * values: ["bags", "shirts"],
3947
+ * applicability: {
3948
+ * level: "TAB",
3949
+ * targetId: "e0836cad-4fdf-42d4-bd97-567a6b2a6058"
3950
+ * }
3951
+ * }
3952
+ * });
3953
+ * ```
3667
3954
  * @version SDK: 1.23.0 | ThoughtSpot: 9.4.0.cl
3668
3955
  */
3669
3956
  HostEvent["UpdateFilters"] = "updateFilters";
@@ -3688,6 +3975,28 @@ var HostEvent;
3688
3975
  * @version SDK: 1.26.0 | ThoughtSpot: 9.7.0.cl
3689
3976
  */
3690
3977
  HostEvent["GetTabs"] = "getTabs";
3978
+ /**
3979
+ * Get group details for the current Liveboard.
3980
+ * Mirrors {@link HostEvent.GetTabs} for filter/parameter groups.
3981
+ * @example
3982
+ * ```js
3983
+ * liveboardEmbed.trigger(HostEvent.GetGroups).then((groupDetails) => {
3984
+ * console.log(
3985
+ * groupDetails // GroupDetails of current Liveboard
3986
+ * );
3987
+ * })
3988
+ * ```
3989
+ * @example
3990
+ * ```js
3991
+ * // Get groups from liveboard context
3992
+ * import { ContextType } from '@thoughtspot/visual-embed-sdk';
3993
+ * liveboardEmbed.trigger(HostEvent.GetGroups, {}, ContextType.Liveboard).then((groupDetails) => {
3994
+ * console.log('groups', groupDetails);
3995
+ * });
3996
+ * ```
3997
+ * @version SDK: 1.53.0 | ThoughtSpot: 26.10.0.cl
3998
+ */
3999
+ HostEvent["GetGroups"] = "getGroups";
3691
4000
  /**
3692
4001
  * Set the visible tabs on a Liveboard.
3693
4002
  * @param - an array of ids of tabs to show, the IDs not passed
@@ -3815,6 +4124,15 @@ var HostEvent;
3815
4124
  * - `name`: Name of the parameter.
3816
4125
  * - `value`: The value to set for the parameter.
3817
4126
  * - `isVisibleToUser`: Optional. To control the visibility of the parameter chip.
4127
+ * - `applicability`: Optional. Scopes the parameter to a specific target,
4128
+ * for example, a single Liveboard tab. Available from SDK: 1.53.0 |
4129
+ * ThoughtSpot: 26.10.0.cl. Includes the following attributes:
4130
+ *
4131
+ * - `level`: The scope of the parameter: `LIVEBOARD`, `TAB`, or `GROUP`.
4132
+ * - `targetId`: The GUID of the target, for example, the tab GUID.
4133
+ * Required when `level` is `TAB` or `GROUP`. Do not pass it when
4134
+ * `level` is `LIVEBOARD`, since the parameter applies to the whole
4135
+ * Liveboard.
3818
4136
  *
3819
4137
  * @example
3820
4138
  * ```js
@@ -3826,6 +4144,18 @@ var HostEvent;
3826
4144
  * ```
3827
4145
  * @example
3828
4146
  * ```js
4147
+ * // Scope the parameter to a specific Liveboard tab
4148
+ * liveboardEmbed.trigger(HostEvent.UpdateParameters, [{
4149
+ * name: "Integer Range Param",
4150
+ * value: 10,
4151
+ * applicability: {
4152
+ * level: "TAB",
4153
+ * targetId: "e0836cad-4fdf-42d4-bd97-567a6b2a6058"
4154
+ * }
4155
+ * }])
4156
+ * ```
4157
+ * @example
4158
+ * ```js
3829
4159
  * // Update parameters from liveboard context
3830
4160
  * import { ContextType } from '@thoughtspot/visual-embed-sdk';
3831
4161
  * liveboardEmbed.trigger(HostEvent.UpdateParameters, [{
@@ -3839,6 +4169,14 @@ var HostEvent;
3839
4169
  HostEvent["UpdateParameters"] = "UpdateParameters";
3840
4170
  /**
3841
4171
  * Triggers GetParameters to fetch the runtime Parameters.
4172
+ * Each parameter includes an optional `applicability` attribute
4173
+ * indicating the scope of the parameter. It contains a `level`
4174
+ * (`LIVEBOARD`, `TAB`, or `GROUP`) and, when `level` is `TAB` or
4175
+ * `GROUP`, a `targetId` with the GUID of the target. At `LIVEBOARD`
4176
+ * level there is no `targetId`, since the parameter applies to the
4177
+ * whole Liveboard.
4178
+ * The `applicability` attribute is available from SDK: 1.53.0 |
4179
+ * ThoughtSpot: 26.10.0.cl.
3842
4180
  * @param - `vizId` refers to the Answer ID in Spotter embed and is required in Spotter embed.
3843
4181
  * ```js
3844
4182
  * liveboardEmbed.trigger(HostEvent.GetParameters).then((parameter) => {
@@ -4105,6 +4443,36 @@ var HostEvent;
4105
4443
  * @version SDK: 1.40.0 | ThoughtSpot: 10.11.0.cl
4106
4444
  */
4107
4445
  HostEvent["ResetSpotterConversation"] = "ResetSpotterConversation";
4446
+ /**
4447
+ * Opens the Spotter share-conversation modal for the given conversation.
4448
+ * `conversationId` is **mandatory** — you must pass the id of the
4449
+ * conversation to share. Also no-op when sharing is disabled
4450
+ * (enableShareConversation off) or when already in the read-only shared view.
4451
+ * @example
4452
+ * ```js
4453
+ * spotterEmbed.trigger(HostEvent.ShareSpotterConversation, { conversationId: 'abc' });
4454
+ * ```
4455
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
4456
+ */
4457
+ HostEvent["ShareSpotterConversation"] = "ShareSpotterConversation";
4458
+ /**
4459
+ * Closes the Spotter share-conversation modal. No-op if none is open.
4460
+ * @example
4461
+ * ```js
4462
+ * spotterEmbed.trigger(HostEvent.CloseSpotterShareConversation);
4463
+ * ```
4464
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
4465
+ */
4466
+ HostEvent["CloseSpotterShareConversation"] = "CloseSpotterShareConversation";
4467
+ /**
4468
+ * Exits the read-only shared-conversation view.
4469
+ * @example
4470
+ * ```js
4471
+ * spotterEmbed.trigger(HostEvent.ExitSpotterSharedConversation);
4472
+ * ```
4473
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
4474
+ */
4475
+ HostEvent["ExitSpotterSharedConversation"] = "ExitSpotterSharedConversation";
4108
4476
  /**
4109
4477
  * Deletes the last prompt in spotter embed.
4110
4478
  * @example
@@ -4200,6 +4568,41 @@ var HostEvent;
4200
4568
  * @version SDK: 1.45.0 | ThoughtSpot: 26.2.0.cl
4201
4569
  */
4202
4570
  HostEvent["StartNewSpotterConversation"] = "StartNewSpotterConversation";
4571
+ /**
4572
+ * Pins a saved Spotter conversation so it floats to the top of the past
4573
+ * conversations sidebar. The `conversationId` of the conversation to pin is
4574
+ * required.
4575
+ *
4576
+ * This feature is available only when chat history is enabled on your ThoughtSpot
4577
+ * instance. Contact your admin or ThoughtSpot Support to enable chat history on your
4578
+ * instance.
4579
+ *
4580
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
4581
+ * @example
4582
+ * ```js
4583
+ * spotterEmbed.trigger(HostEvent.PinSpotterConversation, {
4584
+ * conversationId: '<conversation-id>',
4585
+ * });
4586
+ * ```
4587
+ */
4588
+ HostEvent["PinSpotterConversation"] = "PinSpotterConversation";
4589
+ /**
4590
+ * Unpins a previously pinned Spotter conversation. The `conversationId` of the
4591
+ * conversation to unpin is required.
4592
+ *
4593
+ * This feature is available only when chat history is enabled on your ThoughtSpot
4594
+ * instance. Contact your admin or ThoughtSpot Support to enable chat history on your
4595
+ * instance.
4596
+ *
4597
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
4598
+ * @example
4599
+ * ```js
4600
+ * spotterEmbed.trigger(HostEvent.UnpinSpotterConversation, {
4601
+ * conversationId: '<conversation-id>',
4602
+ * });
4603
+ * ```
4604
+ */
4605
+ HostEvent["UnpinSpotterConversation"] = "UnpinSpotterConversation";
4203
4606
  /**
4204
4607
  * @hidden
4205
4608
  * Get the current context of the embedded page.
@@ -4421,6 +4824,7 @@ var Param;
4421
4824
  Param["SpotterEnabled"] = "isSpotterExperienceEnabled";
4422
4825
  Param["IsUnifiedSearchExperienceEnabled"] = "isUnifiedSearchExperienceEnabled";
4423
4826
  Param["OverrideOrgId"] = "orgId";
4827
+ Param["OverrideHistoryState"] = "overrideHistoryState";
4424
4828
  Param["OauthPollingInterval"] = "oAuthPollingInterval";
4425
4829
  Param["IsForceRedirect"] = "isForceRedirect";
4426
4830
  Param["DataSourceId"] = "dataSourceId";
@@ -4438,9 +4842,12 @@ var Param;
4438
4842
  Param["isGranularXLSXCSVSchedulesEnabled"] = "isGranularXLSXCSVSchedulesEnabled";
4439
4843
  Param["isSendNowLiveboardSchedulingEnabled"] = "isSendNowLiveboardSchedulingEnabled";
4440
4844
  Param["isCentralizedLiveboardFilterUXEnabled"] = "isCentralizedLiveboardFilterUXEnabled";
4845
+ Param["isScopedLiveboardFilteringEnabled"] = "isScopedLiveboardFilteringEnabled";
4441
4846
  Param["isLinkParametersEnabled"] = "isLinkParametersEnabled";
4442
4847
  Param["EnablePastConversationsSidebar"] = "enablePastConversationsSidebar";
4443
4848
  Param["UpdatedSpotterChatPrompt"] = "updatedSpotterChatPrompt";
4849
+ Param["ShowSpotterRadiance"] = "showSpotterRadiance";
4850
+ Param["DefaultQueryMode"] = "defaultQueryMode";
4444
4851
  Param["EnableStopAnswerGenerationEmbed"] = "enableStopAnswerGenerationEmbed";
4445
4852
  Param["SpotterSidebarTitle"] = "spotterSidebarTitle";
4446
4853
  Param["SpotterSidebarDefaultExpanded"] = "spotterSidebarDefaultExpanded";
@@ -4460,6 +4867,8 @@ var Param;
4460
4867
  Param["SpotterFileUploadEnabled"] = "spotterFileUploadEnabled";
4461
4868
  Param["SpotterFileUploadFileTypes"] = "spotterFileUploadFileTypes";
4462
4869
  Param["IsStarterPromptsEnabled"] = "enableStarterPrompts";
4870
+ Param["UpdatedSpotterExperience"] = "updatedSpotterExperience";
4871
+ Param["SpotterDataSources"] = "spotterDataSources";
4463
4872
  })(Param || (Param = {}));
4464
4873
  /**
4465
4874
  * ThoughtSpot application pages include actions and menu commands
@@ -5724,6 +6133,19 @@ var Action;
5724
6133
  * @version SDK: 1.36.0 | ThoughtSpot Cloud: 10.6.0.cl
5725
6134
  */
5726
6135
  Action["ChangeFilterVisibilityInTab"] = "changeFilterVisibilityInTab";
6136
+ /**
6137
+ * Action ID to show, hide, or disable all filter surfaces on a Liveboard,
6138
+ * including filter, parameter, and cross-filter chips at the liveboard,
6139
+ * tab, and group levels. Parameter and cross-filter chips are hide-only.
6140
+ *
6141
+ * @example
6142
+ * ```js
6143
+ * hiddenActions: [Action.AllLiveboardFilters]
6144
+ * disabledActions: [Action.AllLiveboardFilters]
6145
+ * ```
6146
+ * @version SDK: 1.53.0 | ThoughtSpot: 26.10.0.cl
6147
+ */
6148
+ Action["AllLiveboardFilters"] = "allLiveboardFilters";
5727
6149
  /**
5728
6150
  * The **Data model instructions** button on the Spotter interface.
5729
6151
  * Allows opening the data model instructions modal.
@@ -6059,6 +6481,89 @@ var Action;
6059
6481
  * @version SDK: 1.46.0 | ThoughtSpot Cloud: 26.3.0.cl
6060
6482
  */
6061
6483
  Action["SpotterChatRename"] = "spotterChatRename";
6484
+ /**
6485
+ * Controls visibility and disable state of the Spotter conversation Share
6486
+ * button in the chat header. Only takes effect once sharing is enabled
6487
+ * (enableShareConversation on).
6488
+ * @example
6489
+ * ```js
6490
+ * disabledActions: [Action.SpotterShareConversationButtonHeader]
6491
+ * ```
6492
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6493
+ */
6494
+ Action["SpotterShareConversationButtonHeader"] = "spotterShareConversationButtonHeader";
6495
+ /**
6496
+ * Controls visibility and disable state of the Share item in the Spotter
6497
+ * conversation history (sidebar) edit menu. Independent of the header button
6498
+ * above, so a host can show Share in one entry point and hide it in the other.
6499
+ * @example
6500
+ * ```js
6501
+ * disabledActions: [Action.SpotterShareConversationMenuItemSidebar]
6502
+ * ```
6503
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6504
+ */
6505
+ Action["SpotterShareConversationMenuItemSidebar"] = "spotterShareConversationMenuItemSidebar";
6506
+ /**
6507
+ * Controls visibility of the entire read-only shared-conversation data-access
6508
+ * banner shown when a recipient opens a shared view. Hide-only.
6509
+ * @example
6510
+ * ```js
6511
+ * hiddenActions: [Action.SpotterSharedConversationBanner]
6512
+ * ```
6513
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6514
+ */
6515
+ Action["SpotterSharedConversationBanner"] = "spotterSharedConversationBanner";
6516
+ /**
6517
+ * Controls visibility and disable state of the cross/close button on the
6518
+ * read-only shared-conversation data-access banner (keeps the banner itself).
6519
+ * @example
6520
+ * ```js
6521
+ * hiddenActions: [Action.SpotterSharedConversationBannerDismissButton]
6522
+ * ```
6523
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6524
+ */
6525
+ Action["SpotterSharedConversationBannerDismissButton"] = "spotterSharedConversationBannerDismissButton";
6526
+ /**
6527
+ * Controls visibility and disable state of the Exit button in the read-only
6528
+ * shared-view header. Hiding it does not disable the ExitSpotterSharedConversation
6529
+ * host event.
6530
+ * @example
6531
+ * ```js
6532
+ * hiddenActions: [Action.SpotterSharedConversationExitButton]
6533
+ * ```
6534
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6535
+ */
6536
+ Action["SpotterSharedConversationExitButton"] = "spotterSharedConversationExitButton";
6537
+ /**
6538
+ * Controls visibility of the share-modal footer note ("Chat will be shared up
6539
+ * to the current moment…"). Hide-only.
6540
+ * @example
6541
+ * ```js
6542
+ * hiddenActions: [Action.SpotterShareUpToCurrentInfo]
6543
+ * ```
6544
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6545
+ */
6546
+ Action["SpotterShareUpToCurrentInfo"] = "spotterShareUpToCurrentInfo";
6547
+ /**
6548
+ * Controls visibility and disable state of the share-modal "include new
6549
+ * messages since last shared version" checkbox.
6550
+ * @example
6551
+ * ```js
6552
+ * disabledActions: [Action.SpotterShareIncludeNewMessagesCheckbox]
6553
+ * ```
6554
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6555
+ */
6556
+ Action["SpotterShareIncludeNewMessagesCheckbox"] = "spotterShareIncludeNewMessagesCheckbox";
6557
+ /**
6558
+ * Controls visibility and disable state of the cross on the share-modal
6559
+ * stale-snapshot info banner.
6560
+ * @example
6561
+ * ```js
6562
+ * hiddenActions: [Action.SpotterShareStaleInfoBannerDismissButton]
6563
+ * ```
6564
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
6565
+ */
6566
+ Action["SpotterShareStaleInfoBannerDismissButton"] = "spotterShareStaleInfoBannerDismissButton";
6062
6567
  /**
6063
6568
  * Controls visibility and disable state of the delete action
6064
6569
  * in the Spotter conversation edit menu.
@@ -6069,6 +6574,16 @@ var Action;
6069
6574
  * @version SDK: 1.46.0 | ThoughtSpot Cloud: 26.3.0.cl
6070
6575
  */
6071
6576
  Action["SpotterChatDelete"] = "spotterChatDelete";
6577
+ /**
6578
+ * Controls visibility and disable state of the pin/unpin action
6579
+ * in the Spotter conversation edit menu.
6580
+ * @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.10.0.cl
6581
+ * @example
6582
+ * ```js
6583
+ * disabledActions: [Action.SpotterChatPin]
6584
+ * ```
6585
+ */
6586
+ Action["SpotterChatPin"] = "spotterChatPin";
6072
6587
  /**
6073
6588
  * Controls visibility and disable state of the documentation/best practices
6074
6589
  * link in the Spotter sidebar footer.
@@ -6547,6 +7062,8 @@ var EmbedErrorCodes;
6547
7062
  EmbedErrorCodes["UPDATEFILTERS_INVALID_PAYLOAD"] = "UPDATEFILTERS_INVALID_PAYLOAD";
6548
7063
  /** DrillDown payload is invalid - missing or malformed points */
6549
7064
  EmbedErrorCodes["DRILLDOWN_INVALID_PAYLOAD"] = "DRILLDOWN_INVALID_PAYLOAD";
7065
+ /** UpdateParameters payload is invalid - malformed applicability */
7066
+ EmbedErrorCodes["UPDATEPARAMETERS_INVALID_PAYLOAD"] = "UPDATEPARAMETERS_INVALID_PAYLOAD";
6550
7067
  })(EmbedErrorCodes || (EmbedErrorCodes = {}));
6551
7068
  /**
6552
7069
  * Context types for specifying the page context when triggering host events.
@@ -6725,7 +7242,7 @@ var TableContentDensity;
6725
7242
  TableContentDensity["Compact"] = "COMPACT";
6726
7243
  })(TableContentDensity || (TableContentDensity = {}));
6727
7244
 
6728
- var version$1="1.50.0";var pkg = {version:version$1};
7245
+ var version$1="1.51.0";var pkg = {version:version$1};
6729
7246
 
6730
7247
  const { version } = pkg;
6731
7248
 
@@ -6801,7 +7318,6 @@ const logger$3 = new Logger();
6801
7318
 
6802
7319
  const ERROR_MESSAGE = {
6803
7320
  INVALID_THOUGHTSPOT_HOST: 'Error parsing ThoughtSpot host. Please provide a valid URL.',
6804
- SPOTTER_EMBED_WORKSHEED_ID_NOT_FOUND: 'Please select a Model to get started',
6805
7321
  LIVEBOARD_VIZ_ID_VALIDATION: 'Please select a Liveboard to embed.',
6806
7322
  TRIGGER_TIMED_OUT: 'Trigger timed-out in getting a response',
6807
7323
  SEARCHEMBED_BETA_WRANING_MESSAGE: 'SearchEmbed is in Beta in this release.',
@@ -6832,6 +7348,7 @@ const ERROR_MESSAGE = {
6832
7348
  INVALID_SPOTTER_DOCUMENTATION_URL: 'Invalid spotterDocumentationUrl. Please provide a valid http or https URL.',
6833
7349
  UPDATEFILTERS_INVALID_PAYLOAD: 'UpdateFilters requires a valid filter or filters array. Expected: { filter: { column, oper, values } } or { filters: [{ column, oper, values }, ...] }',
6834
7350
  DRILLDOWN_INVALID_PAYLOAD: 'DrillDown requires a valid points object. Expected: { points: { clickedPoint?, selectedPoints? }, autoDrillDown?, vizId? }',
7351
+ UPDATEPARAMETERS_INVALID_PAYLOAD: 'UpdateParameters received an invalid applicability. Expected: { level: LIVEBOARD | TAB | GROUP, targetId } where targetId is required for TAB and GROUP levels',
6835
7352
  };
6836
7353
  const CUSTOM_ACTIONS_ERROR_MESSAGE = {
6837
7354
  INVALID_ACTION_OBJECT: 'Custom Action Validation Error: Invalid action object provided',
@@ -6950,7 +7467,7 @@ const getCssDimension = (value) => {
6950
7467
  * @returns true if the value is a valid CSS margin value, false otherwise
6951
7468
  */
6952
7469
  const isValidCssMargin = (value) => {
6953
- if (isUndefined(value)) {
7470
+ if (isUndefined$1(value)) {
6954
7471
  return false;
6955
7472
  }
6956
7473
  if (typeof value !== 'string') {
@@ -7159,7 +7676,7 @@ const removeStyleProperties = (element, styleProperties) => {
7159
7676
  element.style.removeProperty(styleProperty);
7160
7677
  });
7161
7678
  };
7162
- const isUndefined = (value) => value === undefined;
7679
+ const isUndefined$1 = (value) => value === undefined;
7163
7680
  // Return if the value is a string, double or boolean.
7164
7681
  const getTypeFromValue = (value) => {
7165
7682
  if (typeof value === 'string') {
@@ -7464,7 +7981,7 @@ const setParamIfDefined = (queryParams, param, value, asBoolean = false) => {
7464
7981
  };
7465
7982
 
7466
7983
  /** Used for built-in method references. */
7467
- var objectProto$c = Object.prototype;
7984
+ var objectProto$d = Object.prototype;
7468
7985
 
7469
7986
  /**
7470
7987
  * Checks if `value` is likely a prototype object.
@@ -7475,7 +7992,7 @@ var objectProto$c = Object.prototype;
7475
7992
  */
7476
7993
  function isPrototype(value) {
7477
7994
  var Ctor = value && value.constructor,
7478
- proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto$c;
7995
+ proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto$d;
7479
7996
 
7480
7997
  return value === proto;
7481
7998
  }
@@ -7504,10 +8021,10 @@ var nativeKeys = _overArg(Object.keys, Object);
7504
8021
  var _nativeKeys = nativeKeys;
7505
8022
 
7506
8023
  /** Used for built-in method references. */
7507
- var objectProto$b = Object.prototype;
8024
+ var objectProto$c = Object.prototype;
7508
8025
 
7509
8026
  /** Used to check objects for own properties. */
7510
- var hasOwnProperty$a = objectProto$b.hasOwnProperty;
8027
+ var hasOwnProperty$b = objectProto$c.hasOwnProperty;
7511
8028
 
7512
8029
  /**
7513
8030
  * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
@@ -7522,7 +8039,7 @@ function baseKeys(object) {
7522
8039
  }
7523
8040
  var result = [];
7524
8041
  for (var key in Object(object)) {
7525
- if (hasOwnProperty$a.call(object, key) && key != 'constructor') {
8042
+ if (hasOwnProperty$b.call(object, key) && key != 'constructor') {
7526
8043
  result.push(key);
7527
8044
  }
7528
8045
  }
@@ -7558,17 +8075,17 @@ var Symbol$1 = _root.Symbol;
7558
8075
  var _Symbol = Symbol$1;
7559
8076
 
7560
8077
  /** Used for built-in method references. */
7561
- var objectProto$a = Object.prototype;
8078
+ var objectProto$b = Object.prototype;
7562
8079
 
7563
8080
  /** Used to check objects for own properties. */
7564
- var hasOwnProperty$9 = objectProto$a.hasOwnProperty;
8081
+ var hasOwnProperty$a = objectProto$b.hasOwnProperty;
7565
8082
 
7566
8083
  /**
7567
8084
  * Used to resolve the
7568
8085
  * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
7569
8086
  * of values.
7570
8087
  */
7571
- var nativeObjectToString$1 = objectProto$a.toString;
8088
+ var nativeObjectToString$1 = objectProto$b.toString;
7572
8089
 
7573
8090
  /** Built-in value references. */
7574
8091
  var symToStringTag$1 = _Symbol ? _Symbol.toStringTag : undefined;
@@ -7581,7 +8098,7 @@ var symToStringTag$1 = _Symbol ? _Symbol.toStringTag : undefined;
7581
8098
  * @returns {string} Returns the raw `toStringTag`.
7582
8099
  */
7583
8100
  function getRawTag(value) {
7584
- var isOwn = hasOwnProperty$9.call(value, symToStringTag$1),
8101
+ var isOwn = hasOwnProperty$a.call(value, symToStringTag$1),
7585
8102
  tag = value[symToStringTag$1];
7586
8103
 
7587
8104
  try {
@@ -7603,14 +8120,14 @@ function getRawTag(value) {
7603
8120
  var _getRawTag = getRawTag;
7604
8121
 
7605
8122
  /** Used for built-in method references. */
7606
- var objectProto$9 = Object.prototype;
8123
+ var objectProto$a = Object.prototype;
7607
8124
 
7608
8125
  /**
7609
8126
  * Used to resolve the
7610
8127
  * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
7611
8128
  * of values.
7612
8129
  */
7613
- var nativeObjectToString = objectProto$9.toString;
8130
+ var nativeObjectToString = objectProto$a.toString;
7614
8131
 
7615
8132
  /**
7616
8133
  * Converts `value` to a string using `Object.prototype.toString`.
@@ -7742,10 +8259,10 @@ function isMasked(func) {
7742
8259
  var _isMasked = isMasked;
7743
8260
 
7744
8261
  /** Used for built-in method references. */
7745
- var funcProto$1 = Function.prototype;
8262
+ var funcProto$2 = Function.prototype;
7746
8263
 
7747
8264
  /** Used to resolve the decompiled source of functions. */
7748
- var funcToString$1 = funcProto$1.toString;
8265
+ var funcToString$2 = funcProto$2.toString;
7749
8266
 
7750
8267
  /**
7751
8268
  * Converts `func` to its source code.
@@ -7757,7 +8274,7 @@ var funcToString$1 = funcProto$1.toString;
7757
8274
  function toSource(func) {
7758
8275
  if (func != null) {
7759
8276
  try {
7760
- return funcToString$1.call(func);
8277
+ return funcToString$2.call(func);
7761
8278
  } catch (e) {}
7762
8279
  try {
7763
8280
  return (func + '');
@@ -7778,18 +8295,18 @@ var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
7778
8295
  var reIsHostCtor = /^\[object .+?Constructor\]$/;
7779
8296
 
7780
8297
  /** Used for built-in method references. */
7781
- var funcProto = Function.prototype,
7782
- objectProto$8 = Object.prototype;
8298
+ var funcProto$1 = Function.prototype,
8299
+ objectProto$9 = Object.prototype;
7783
8300
 
7784
8301
  /** Used to resolve the decompiled source of functions. */
7785
- var funcToString = funcProto.toString;
8302
+ var funcToString$1 = funcProto$1.toString;
7786
8303
 
7787
8304
  /** Used to check objects for own properties. */
7788
- var hasOwnProperty$8 = objectProto$8.hasOwnProperty;
8305
+ var hasOwnProperty$9 = objectProto$9.hasOwnProperty;
7789
8306
 
7790
8307
  /** Used to detect if a method is native. */
7791
8308
  var reIsNative = RegExp('^' +
7792
- funcToString.call(hasOwnProperty$8).replace(reRegExpChar, '\\$&')
8309
+ funcToString$1.call(hasOwnProperty$9).replace(reRegExpChar, '\\$&')
7793
8310
  .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
7794
8311
  );
7795
8312
 
@@ -7867,7 +8384,7 @@ var _WeakMap = WeakMap;
7867
8384
 
7868
8385
  /** `Object#toString` result references. */
7869
8386
  var mapTag$3 = '[object Map]',
7870
- objectTag$2 = '[object Object]',
8387
+ objectTag$3 = '[object Object]',
7871
8388
  promiseTag = '[object Promise]',
7872
8389
  setTag$3 = '[object Set]',
7873
8390
  weakMapTag$1 = '[object WeakMap]';
@@ -7898,7 +8415,7 @@ if ((_DataView && getTag(new _DataView(new ArrayBuffer(1))) != dataViewTag$2) ||
7898
8415
  (_WeakMap && getTag(new _WeakMap) != weakMapTag$1)) {
7899
8416
  getTag = function(value) {
7900
8417
  var result = _baseGetTag(value),
7901
- Ctor = result == objectTag$2 ? value.constructor : undefined,
8418
+ Ctor = result == objectTag$3 ? value.constructor : undefined,
7902
8419
  ctorString = Ctor ? _toSource(Ctor) : '';
7903
8420
 
7904
8421
  if (ctorString) {
@@ -7963,13 +8480,13 @@ function baseIsArguments(value) {
7963
8480
  var _baseIsArguments = baseIsArguments;
7964
8481
 
7965
8482
  /** Used for built-in method references. */
7966
- var objectProto$7 = Object.prototype;
8483
+ var objectProto$8 = Object.prototype;
7967
8484
 
7968
8485
  /** Used to check objects for own properties. */
7969
- var hasOwnProperty$7 = objectProto$7.hasOwnProperty;
8486
+ var hasOwnProperty$8 = objectProto$8.hasOwnProperty;
7970
8487
 
7971
8488
  /** Built-in value references. */
7972
- var propertyIsEnumerable$1 = objectProto$7.propertyIsEnumerable;
8489
+ var propertyIsEnumerable$1 = objectProto$8.propertyIsEnumerable;
7973
8490
 
7974
8491
  /**
7975
8492
  * Checks if `value` is likely an `arguments` object.
@@ -7990,7 +8507,7 @@ var propertyIsEnumerable$1 = objectProto$7.propertyIsEnumerable;
7990
8507
  * // => false
7991
8508
  */
7992
8509
  var isArguments = _baseIsArguments(function() { return arguments; }()) ? _baseIsArguments : function(value) {
7993
- return isObjectLike_1(value) && hasOwnProperty$7.call(value, 'callee') &&
8510
+ return isObjectLike_1(value) && hasOwnProperty$8.call(value, 'callee') &&
7994
8511
  !propertyIsEnumerable$1.call(value, 'callee');
7995
8512
  };
7996
8513
 
@@ -8156,10 +8673,10 @@ var argsTag$1 = '[object Arguments]',
8156
8673
  funcTag = '[object Function]',
8157
8674
  mapTag$2 = '[object Map]',
8158
8675
  numberTag$1 = '[object Number]',
8159
- objectTag$1 = '[object Object]',
8676
+ objectTag$2 = '[object Object]',
8160
8677
  regexpTag$1 = '[object RegExp]',
8161
8678
  setTag$2 = '[object Set]',
8162
- stringTag$1 = '[object String]',
8679
+ stringTag$2 = '[object String]',
8163
8680
  weakMapTag = '[object WeakMap]';
8164
8681
 
8165
8682
  var arrayBufferTag$1 = '[object ArrayBuffer]',
@@ -8186,8 +8703,8 @@ typedArrayTags[arrayBufferTag$1] = typedArrayTags[boolTag$2] =
8186
8703
  typedArrayTags[dataViewTag$1] = typedArrayTags[dateTag$1] =
8187
8704
  typedArrayTags[errorTag$1] = typedArrayTags[funcTag] =
8188
8705
  typedArrayTags[mapTag$2] = typedArrayTags[numberTag$1] =
8189
- typedArrayTags[objectTag$1] = typedArrayTags[regexpTag$1] =
8190
- typedArrayTags[setTag$2] = typedArrayTags[stringTag$1] =
8706
+ typedArrayTags[objectTag$2] = typedArrayTags[regexpTag$1] =
8707
+ typedArrayTags[setTag$2] = typedArrayTags[stringTag$2] =
8191
8708
  typedArrayTags[weakMapTag] = false;
8192
8709
 
8193
8710
  /**
@@ -8279,10 +8796,10 @@ var mapTag$1 = '[object Map]',
8279
8796
  setTag$1 = '[object Set]';
8280
8797
 
8281
8798
  /** Used for built-in method references. */
8282
- var objectProto$6 = Object.prototype;
8799
+ var objectProto$7 = Object.prototype;
8283
8800
 
8284
8801
  /** Used to check objects for own properties. */
8285
- var hasOwnProperty$6 = objectProto$6.hasOwnProperty;
8802
+ var hasOwnProperty$7 = objectProto$7.hasOwnProperty;
8286
8803
 
8287
8804
  /**
8288
8805
  * Checks if `value` is an empty object, collection, map, or set.
@@ -8334,7 +8851,7 @@ function isEmpty$1(value) {
8334
8851
  return !_baseKeys(value).length;
8335
8852
  }
8336
8853
  for (var key in value) {
8337
- if (hasOwnProperty$6.call(value, key)) {
8854
+ if (hasOwnProperty$7.call(value, key)) {
8338
8855
  return false;
8339
8856
  }
8340
8857
  }
@@ -8343,6 +8860,15 @@ function isEmpty$1(value) {
8343
8860
 
8344
8861
  var isEmpty_1 = isEmpty$1;
8345
8862
 
8863
+ /**
8864
+ * Levels at which a filter or parameter can be applied.
8865
+ */
8866
+ var ApplicabilityLevel;
8867
+ (function (ApplicabilityLevel) {
8868
+ ApplicabilityLevel["Liveboard"] = "LIVEBOARD";
8869
+ ApplicabilityLevel["Tab"] = "TAB";
8870
+ ApplicabilityLevel["Group"] = "GROUP";
8871
+ })(ApplicabilityLevel || (ApplicabilityLevel = {}));
8346
8872
  var UIPassthroughEvent;
8347
8873
  (function (UIPassthroughEvent) {
8348
8874
  UIPassthroughEvent["PinAnswerToLiveboard"] = "addVizToPinboard";
@@ -8360,6 +8886,7 @@ var UIPassthroughEvent;
8360
8886
  UIPassthroughEvent["GetParameters"] = "getParameters";
8361
8887
  UIPassthroughEvent["GetTML"] = "getTML";
8362
8888
  UIPassthroughEvent["GetTabs"] = "getTabs";
8889
+ UIPassthroughEvent["GetGroups"] = "getGroups";
8363
8890
  UIPassthroughEvent["GetExportRequestForCurrentPinboard"] = "getExportRequestForCurrentPinboard";
8364
8891
  })(UIPassthroughEvent || (UIPassthroughEvent = {}));
8365
8892
 
@@ -9295,7 +9822,7 @@ class AnswerService {
9295
9822
  async getTML() {
9296
9823
  const { object } = await this.executeQuery(getAnswerTML, {});
9297
9824
  const edoc = object[0].edoc;
9298
- const YAML = await import('./index-B5xoN6Cp.js');
9825
+ const YAML = await import('./index-aBzH5ZwF.js');
9299
9826
  const parsedDoc = YAML.parse(edoc);
9300
9827
  return {
9301
9828
  answer: {
@@ -9580,10 +10107,10 @@ var _hashDelete = hashDelete;
9580
10107
  var HASH_UNDEFINED$2 = '__lodash_hash_undefined__';
9581
10108
 
9582
10109
  /** Used for built-in method references. */
9583
- var objectProto$5 = Object.prototype;
10110
+ var objectProto$6 = Object.prototype;
9584
10111
 
9585
10112
  /** Used to check objects for own properties. */
9586
- var hasOwnProperty$5 = objectProto$5.hasOwnProperty;
10113
+ var hasOwnProperty$6 = objectProto$6.hasOwnProperty;
9587
10114
 
9588
10115
  /**
9589
10116
  * Gets the hash value for `key`.
@@ -9600,16 +10127,16 @@ function hashGet(key) {
9600
10127
  var result = data[key];
9601
10128
  return result === HASH_UNDEFINED$2 ? undefined : result;
9602
10129
  }
9603
- return hasOwnProperty$5.call(data, key) ? data[key] : undefined;
10130
+ return hasOwnProperty$6.call(data, key) ? data[key] : undefined;
9604
10131
  }
9605
10132
 
9606
10133
  var _hashGet = hashGet;
9607
10134
 
9608
10135
  /** Used for built-in method references. */
9609
- var objectProto$4 = Object.prototype;
10136
+ var objectProto$5 = Object.prototype;
9610
10137
 
9611
10138
  /** Used to check objects for own properties. */
9612
- var hasOwnProperty$4 = objectProto$4.hasOwnProperty;
10139
+ var hasOwnProperty$5 = objectProto$5.hasOwnProperty;
9613
10140
 
9614
10141
  /**
9615
10142
  * Checks if a hash value for `key` exists.
@@ -9622,7 +10149,7 @@ var hasOwnProperty$4 = objectProto$4.hasOwnProperty;
9622
10149
  */
9623
10150
  function hashHas(key) {
9624
10151
  var data = this.__data__;
9625
- return _nativeCreate ? (data[key] !== undefined) : hasOwnProperty$4.call(data, key);
10152
+ return _nativeCreate ? (data[key] !== undefined) : hasOwnProperty$5.call(data, key);
9626
10153
  }
9627
10154
 
9628
10155
  var _hashHas = hashHas;
@@ -10597,7 +11124,7 @@ var boolTag$1 = '[object Boolean]',
10597
11124
  numberTag = '[object Number]',
10598
11125
  regexpTag = '[object RegExp]',
10599
11126
  setTag = '[object Set]',
10600
- stringTag = '[object String]',
11127
+ stringTag$1 = '[object String]',
10601
11128
  symbolTag = '[object Symbol]';
10602
11129
 
10603
11130
  var arrayBufferTag = '[object ArrayBuffer]',
@@ -10652,7 +11179,7 @@ function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
10652
11179
  return object.name == other.name && object.message == other.message;
10653
11180
 
10654
11181
  case regexpTag:
10655
- case stringTag:
11182
+ case stringTag$1:
10656
11183
  // Coerce regexes to strings and treat strings, primitives and objects,
10657
11184
  // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring
10658
11185
  // for more details.
@@ -10760,10 +11287,10 @@ function stubArray() {
10760
11287
  var stubArray_1 = stubArray;
10761
11288
 
10762
11289
  /** Used for built-in method references. */
10763
- var objectProto$3 = Object.prototype;
11290
+ var objectProto$4 = Object.prototype;
10764
11291
 
10765
11292
  /** Built-in value references. */
10766
- var propertyIsEnumerable = objectProto$3.propertyIsEnumerable;
11293
+ var propertyIsEnumerable = objectProto$4.propertyIsEnumerable;
10767
11294
 
10768
11295
  /* Built-in method references for those with the same name as other `lodash` methods. */
10769
11296
  var nativeGetSymbols = Object.getOwnPropertySymbols;
@@ -10835,10 +11362,10 @@ function isIndex(value, length) {
10835
11362
  var _isIndex = isIndex;
10836
11363
 
10837
11364
  /** Used for built-in method references. */
10838
- var objectProto$2 = Object.prototype;
11365
+ var objectProto$3 = Object.prototype;
10839
11366
 
10840
11367
  /** Used to check objects for own properties. */
10841
- var hasOwnProperty$3 = objectProto$2.hasOwnProperty;
11368
+ var hasOwnProperty$4 = objectProto$3.hasOwnProperty;
10842
11369
 
10843
11370
  /**
10844
11371
  * Creates an array of the enumerable property names of the array-like `value`.
@@ -10858,7 +11385,7 @@ function arrayLikeKeys(value, inherited) {
10858
11385
  length = result.length;
10859
11386
 
10860
11387
  for (var key in value) {
10861
- if ((inherited || hasOwnProperty$3.call(value, key)) &&
11388
+ if ((inherited || hasOwnProperty$4.call(value, key)) &&
10862
11389
  !(skipIndexes && (
10863
11390
  // Safari 9 has enumerable `arguments.length` in strict mode.
10864
11391
  key == 'length' ||
@@ -10928,10 +11455,10 @@ var _getAllKeys = getAllKeys;
10928
11455
  var COMPARE_PARTIAL_FLAG$3 = 1;
10929
11456
 
10930
11457
  /** Used for built-in method references. */
10931
- var objectProto$1 = Object.prototype;
11458
+ var objectProto$2 = Object.prototype;
10932
11459
 
10933
11460
  /** Used to check objects for own properties. */
10934
- var hasOwnProperty$2 = objectProto$1.hasOwnProperty;
11461
+ var hasOwnProperty$3 = objectProto$2.hasOwnProperty;
10935
11462
 
10936
11463
  /**
10937
11464
  * A specialized version of `baseIsEqualDeep` for objects with support for
@@ -10959,7 +11486,7 @@ function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
10959
11486
  var index = objLength;
10960
11487
  while (index--) {
10961
11488
  var key = objProps[index];
10962
- if (!(isPartial ? key in other : hasOwnProperty$2.call(other, key))) {
11489
+ if (!(isPartial ? key in other : hasOwnProperty$3.call(other, key))) {
10963
11490
  return false;
10964
11491
  }
10965
11492
  }
@@ -11019,13 +11546,13 @@ var COMPARE_PARTIAL_FLAG$2 = 1;
11019
11546
  /** `Object#toString` result references. */
11020
11547
  var argsTag = '[object Arguments]',
11021
11548
  arrayTag = '[object Array]',
11022
- objectTag = '[object Object]';
11549
+ objectTag$1 = '[object Object]';
11023
11550
 
11024
11551
  /** Used for built-in method references. */
11025
- var objectProto = Object.prototype;
11552
+ var objectProto$1 = Object.prototype;
11026
11553
 
11027
11554
  /** Used to check objects for own properties. */
11028
- var hasOwnProperty$1 = objectProto.hasOwnProperty;
11555
+ var hasOwnProperty$2 = objectProto$1.hasOwnProperty;
11029
11556
 
11030
11557
  /**
11031
11558
  * A specialized version of `baseIsEqual` for arrays and objects which performs
@@ -11047,11 +11574,11 @@ function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
11047
11574
  objTag = objIsArr ? arrayTag : _getTag(object),
11048
11575
  othTag = othIsArr ? arrayTag : _getTag(other);
11049
11576
 
11050
- objTag = objTag == argsTag ? objectTag : objTag;
11051
- othTag = othTag == argsTag ? objectTag : othTag;
11577
+ objTag = objTag == argsTag ? objectTag$1 : objTag;
11578
+ othTag = othTag == argsTag ? objectTag$1 : othTag;
11052
11579
 
11053
- var objIsObj = objTag == objectTag,
11054
- othIsObj = othTag == objectTag,
11580
+ var objIsObj = objTag == objectTag$1,
11581
+ othIsObj = othTag == objectTag$1,
11055
11582
  isSameTag = objTag == othTag;
11056
11583
 
11057
11584
  if (isSameTag && isBuffer_1(object)) {
@@ -11068,8 +11595,8 @@ function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
11068
11595
  : _equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
11069
11596
  }
11070
11597
  if (!(bitmask & COMPARE_PARTIAL_FLAG$2)) {
11071
- var objIsWrapped = objIsObj && hasOwnProperty$1.call(object, '__wrapped__'),
11072
- othIsWrapped = othIsObj && hasOwnProperty$1.call(other, '__wrapped__');
11598
+ var objIsWrapped = objIsObj && hasOwnProperty$2.call(object, '__wrapped__'),
11599
+ othIsWrapped = othIsObj && hasOwnProperty$2.call(other, '__wrapped__');
11073
11600
 
11074
11601
  if (objIsWrapped || othIsWrapped) {
11075
11602
  var objUnwrapped = objIsWrapped ? object.value() : object,
@@ -12280,7 +12807,7 @@ var FuncProto = Function.prototype;
12280
12807
  var ObjProto = Object.prototype;
12281
12808
  var slice = ArrayProto.slice;
12282
12809
  var toString = ObjProto.toString;
12283
- var hasOwnProperty = ObjProto.hasOwnProperty;
12810
+ var hasOwnProperty$1 = ObjProto.hasOwnProperty;
12284
12811
  var windowConsole = window$1.console;
12285
12812
  var navigator = window$1.navigator;
12286
12813
  var document$1 = window$1.document;
@@ -12417,7 +12944,7 @@ _.each = function(obj, iterator, context) {
12417
12944
  }
12418
12945
  } else {
12419
12946
  for (var key in obj) {
12420
- if (hasOwnProperty.call(obj, key)) {
12947
+ if (hasOwnProperty$1.call(obj, key)) {
12421
12948
  if (iterator.call(context, obj[key], key, obj) === breaker) {
12422
12949
  return;
12423
12950
  }
@@ -12453,7 +12980,7 @@ _.isFunction = function(f) {
12453
12980
  };
12454
12981
 
12455
12982
  _.isArguments = function(obj) {
12456
- return !!(obj && hasOwnProperty.call(obj, 'callee'));
12983
+ return !!(obj && hasOwnProperty$1.call(obj, 'callee'));
12457
12984
  };
12458
12985
 
12459
12986
  _.toArray = function(iterable) {
@@ -12541,7 +13068,7 @@ _.isObject = function(obj) {
12541
13068
  _.isEmptyObject = function(obj) {
12542
13069
  if (_.isObject(obj)) {
12543
13070
  for (var key in obj) {
12544
- if (hasOwnProperty.call(obj, key)) {
13071
+ if (hasOwnProperty$1.call(obj, key)) {
12545
13072
  return false;
12546
13073
  }
12547
13074
  }
@@ -12733,7 +13260,7 @@ _.JSONEncode = (function() {
12733
13260
 
12734
13261
  // Iterate through all of the keys in the object.
12735
13262
  for (k in value) {
12736
- if (hasOwnProperty.call(value, k)) {
13263
+ if (hasOwnProperty$1.call(value, k)) {
12737
13264
  v = str(k, value);
12738
13265
  if (v) {
12739
13266
  partial.push(quote(k) + (gap ? ': ' : ':') + v);
@@ -18399,7 +18926,12 @@ const MIXPANEL_EVENT = {
18399
18926
  VISUAL_SDK_RENDER_FAILED: 'visual-sdk-render-failed',
18400
18927
  VISUAL_SDK_TRIGGER: 'visual-sdk-trigger',
18401
18928
  VISUAL_SDK_ON: 'visual-sdk-on',
18402
- VISUAL_SDK_EMBED_CREATE: 'visual-sdk-embed-create'};
18929
+ VISUAL_SDK_EMBED_CREATE: 'visual-sdk-embed-create',
18930
+ VISUAL_SDK_RENDER_CALLED: 'visual-sdk-render-called',
18931
+ VISUAL_SDK_PRE_RENDER: 'visual-sdk-pre-render',
18932
+ VISUAL_SDK_SHOW_PRE_RENDER: 'visual-sdk-show-pre-render',
18933
+ VISUAL_SDK_HIDE_PRE_RENDER: 'visual-sdk-hide-pre-render',
18934
+ };
18403
18935
  let isMixpanelInitialized = false;
18404
18936
  let eventQueue = [];
18405
18937
  /**
@@ -19972,6 +20504,154 @@ function processEventData(type, eventData, thoughtSpotHost, containerEl) {
19972
20504
  return eventData;
19973
20505
  }
19974
20506
 
20507
+ /**
20508
+ * Checks if `value` is `null` or `undefined`.
20509
+ *
20510
+ * @static
20511
+ * @memberOf _
20512
+ * @since 4.0.0
20513
+ * @category Lang
20514
+ * @param {*} value The value to check.
20515
+ * @returns {boolean} Returns `true` if `value` is nullish, else `false`.
20516
+ * @example
20517
+ *
20518
+ * _.isNil(null);
20519
+ * // => true
20520
+ *
20521
+ * _.isNil(void 0);
20522
+ * // => true
20523
+ *
20524
+ * _.isNil(NaN);
20525
+ * // => false
20526
+ */
20527
+ function isNil(value) {
20528
+ return value == null;
20529
+ }
20530
+
20531
+ var isNil_1 = isNil;
20532
+
20533
+ /** Built-in value references. */
20534
+ var getPrototype = _overArg(Object.getPrototypeOf, Object);
20535
+
20536
+ var _getPrototype = getPrototype;
20537
+
20538
+ /** `Object#toString` result references. */
20539
+ var objectTag = '[object Object]';
20540
+
20541
+ /** Used for built-in method references. */
20542
+ var funcProto = Function.prototype,
20543
+ objectProto = Object.prototype;
20544
+
20545
+ /** Used to resolve the decompiled source of functions. */
20546
+ var funcToString = funcProto.toString;
20547
+
20548
+ /** Used to check objects for own properties. */
20549
+ var hasOwnProperty = objectProto.hasOwnProperty;
20550
+
20551
+ /** Used to infer the `Object` constructor. */
20552
+ var objectCtorString = funcToString.call(Object);
20553
+
20554
+ /**
20555
+ * Checks if `value` is a plain object, that is, an object created by the
20556
+ * `Object` constructor or one with a `[[Prototype]]` of `null`.
20557
+ *
20558
+ * @static
20559
+ * @memberOf _
20560
+ * @since 0.8.0
20561
+ * @category Lang
20562
+ * @param {*} value The value to check.
20563
+ * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
20564
+ * @example
20565
+ *
20566
+ * function Foo() {
20567
+ * this.a = 1;
20568
+ * }
20569
+ *
20570
+ * _.isPlainObject(new Foo);
20571
+ * // => false
20572
+ *
20573
+ * _.isPlainObject([1, 2, 3]);
20574
+ * // => false
20575
+ *
20576
+ * _.isPlainObject({ 'x': 0, 'y': 0 });
20577
+ * // => true
20578
+ *
20579
+ * _.isPlainObject(Object.create(null));
20580
+ * // => true
20581
+ */
20582
+ function isPlainObject(value) {
20583
+ if (!isObjectLike_1(value) || _baseGetTag(value) != objectTag) {
20584
+ return false;
20585
+ }
20586
+ var proto = _getPrototype(value);
20587
+ if (proto === null) {
20588
+ return true;
20589
+ }
20590
+ var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;
20591
+ return typeof Ctor == 'function' && Ctor instanceof Ctor &&
20592
+ funcToString.call(Ctor) == objectCtorString;
20593
+ }
20594
+
20595
+ var isPlainObject_1 = isPlainObject;
20596
+
20597
+ /** `Object#toString` result references. */
20598
+ var stringTag = '[object String]';
20599
+
20600
+ /**
20601
+ * Checks if `value` is classified as a `String` primitive or object.
20602
+ *
20603
+ * @static
20604
+ * @since 0.1.0
20605
+ * @memberOf _
20606
+ * @category Lang
20607
+ * @param {*} value The value to check.
20608
+ * @returns {boolean} Returns `true` if `value` is a string, else `false`.
20609
+ * @example
20610
+ *
20611
+ * _.isString('abc');
20612
+ * // => true
20613
+ *
20614
+ * _.isString(1);
20615
+ * // => false
20616
+ */
20617
+ function isString(value) {
20618
+ return typeof value == 'string' ||
20619
+ (!isArray_1(value) && isObjectLike_1(value) && _baseGetTag(value) == stringTag);
20620
+ }
20621
+
20622
+ var isString_1 = isString;
20623
+
20624
+ /**
20625
+ * Checks if `value` is `undefined`.
20626
+ *
20627
+ * @static
20628
+ * @since 0.1.0
20629
+ * @memberOf _
20630
+ * @category Lang
20631
+ * @param {*} value The value to check.
20632
+ * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.
20633
+ * @example
20634
+ *
20635
+ * _.isUndefined(void 0);
20636
+ * // => true
20637
+ *
20638
+ * _.isUndefined(null);
20639
+ * // => false
20640
+ */
20641
+ function isUndefined(value) {
20642
+ return value === undefined;
20643
+ }
20644
+
20645
+ var isUndefined_1 = isUndefined;
20646
+
20647
+ const isValidApplicability = (a) => {
20648
+ if (isUndefined_1(a))
20649
+ return true;
20650
+ // targetId is not required at LIVEBOARD level, since the filter applies to the whole Liveboard
20651
+ return isPlainObject_1(a)
20652
+ && Object.values(ApplicabilityLevel).includes(a.level)
20653
+ && (a.level === ApplicabilityLevel.Liveboard || (isString_1(a.targetId) && a.targetId.trim().length > 0));
20654
+ };
19975
20655
  function isValidUpdateFiltersPayload(payload) {
19976
20656
  if (!payload)
19977
20657
  return false;
@@ -19980,12 +20660,23 @@ function isValidUpdateFiltersPayload(payload) {
19980
20660
  const hasOperator = typeof f.oper === 'string' || typeof f.operator === 'string';
19981
20661
  const hasValues = Array.isArray(f.values);
19982
20662
  const validType = !f.type || typeof f.type === 'string';
19983
- return hasColumn && hasOperator && hasValues && validType;
20663
+ return hasColumn && hasOperator && hasValues && validType && isValidApplicability(f.applicability);
19984
20664
  };
19985
20665
  const hasValidFilter = payload.filter && isValidFilter(payload.filter);
19986
20666
  const hasValidFilters = Array.isArray(payload.filters) && payload.filters.length > 0 && payload.filters.every(isValidFilter);
19987
20667
  return !!(hasValidFilter || hasValidFilters);
19988
20668
  }
20669
+ function isValidUpdateParametersPayload(payload) {
20670
+ // Only validates the applicability of each parameter (null treated as absent); the rest is forwarded as-is for backward compatibility.
20671
+ if (!Array.isArray(payload))
20672
+ return true;
20673
+ return payload.every((p) => {
20674
+ if (!isPlainObject_1(p))
20675
+ return true;
20676
+ const { applicability } = p;
20677
+ return isNil_1(applicability) || isValidApplicability(applicability);
20678
+ });
20679
+ }
19989
20680
  function isValidDrillDownPayload(payload) {
19990
20681
  if (!payload)
19991
20682
  return false;
@@ -20016,6 +20707,9 @@ function throwUpdateFiltersValidationError() {
20016
20707
  }
20017
20708
  function throwDrillDownValidationError() {
20018
20709
  createValidationError(ERROR_MESSAGE.DRILLDOWN_INVALID_PAYLOAD);
20710
+ }
20711
+ function throwUpdateParametersValidationError() {
20712
+ createValidationError(ERROR_MESSAGE.UPDATEPARAMETERS_INVALID_PAYLOAD);
20019
20713
  }
20020
20714
 
20021
20715
  /**
@@ -20036,6 +20730,7 @@ const PASSTHROUGH_MAP = {
20036
20730
  [HostEvent.GetParameters]: UIPassthroughEvent.GetParameters,
20037
20731
  [HostEvent.GetTML]: UIPassthroughEvent.GetTML,
20038
20732
  [HostEvent.GetTabs]: UIPassthroughEvent.GetTabs,
20733
+ [HostEvent.GetGroups]: UIPassthroughEvent.GetGroups,
20039
20734
  [HostEvent.getExportRequestForCurrentPinboard]: UIPassthroughEvent.GetExportRequestForCurrentPinboard,
20040
20735
  };
20041
20736
  class HostEventClient {
@@ -20047,6 +20742,7 @@ class HostEventClient {
20047
20742
  [HostEvent.Pin]: (p, c) => this.handlePinEvent(p, c),
20048
20743
  [HostEvent.SaveAnswer]: (p, c) => this.handleSaveAnswerEvent(p, c),
20049
20744
  [HostEvent.UpdateFilters]: (p, c) => this.handleUpdateFiltersEvent(p, c),
20745
+ [HostEvent.UpdateParameters]: (p, c) => this.handleUpdateParametersEvent(p, c),
20050
20746
  [HostEvent.DrillDown]: (p, c) => this.handleDrillDownEvent(p, c),
20051
20747
  };
20052
20748
  }
@@ -20171,6 +20867,13 @@ class HostEventClient {
20171
20867
  }
20172
20868
  return this.handleHostEventWithParam(UIPassthroughEvent.UpdateFilters, payload, context);
20173
20869
  }
20870
+ handleUpdateParametersEvent(payload, context) {
20871
+ if (!isValidUpdateParametersPayload(payload)) {
20872
+ throwUpdateParametersValidationError();
20873
+ }
20874
+ // UpdateParameters has no UI passthrough contract; dispatch over the legacy channel
20875
+ return this.hostEventFallback(HostEvent.UpdateParameters, payload, context);
20876
+ }
20174
20877
  handleDrillDownEvent(payload, context) {
20175
20878
  if (!isValidDrillDownPayload(payload)) {
20176
20879
  throwDrillDownValidationError();
@@ -20956,7 +21659,7 @@ class TsEmbed {
20956
21659
  if (this.embedConfig.currencyFormat) {
20957
21660
  queryParams[Param.CurrencyFormat] = this.embedConfig.currencyFormat;
20958
21661
  }
20959
- const { disabledActions, disabledActionReason, hiddenActions, visibleActions, hiddenTabs, visibleTabs, showAlerts, additionalFlags: additionalFlagsFromView, locale, customizations, contextMenuTrigger, linkOverride, enableLinkOverridesV2, insertInToSlide, disableRedirectionLinksInNewTab, overrideOrgId, exposeTranslationIDs, primaryAction, } = this.viewConfig;
21662
+ const { disabledActions, disabledActionReason, hiddenActions, visibleActions, hiddenTabs, visibleTabs, showAlerts, additionalFlags: additionalFlagsFromView, locale, customizations, contextMenuTrigger, linkOverride, enableLinkOverridesV2, insertInToSlide, disableRedirectionLinksInNewTab, overrideOrgId, overrideHistoryState, exposeTranslationIDs, primaryAction, } = this.viewConfig;
20960
21663
  const { additionalFlags: additionalFlagsFromInit } = this.embedConfig;
20961
21664
  const additionalFlags = {
20962
21665
  ...additionalFlagsFromInit,
@@ -21044,6 +21747,9 @@ class TsEmbed {
21044
21747
  if (overrideOrgId !== undefined) {
21045
21748
  queryParams[Param.OverrideOrgId] = overrideOrgId;
21046
21749
  }
21750
+ if (overrideHistoryState !== undefined) {
21751
+ queryParams[Param.OverrideHistoryState] = overrideHistoryState;
21752
+ }
21047
21753
  if (this.isPreAuthCacheEnabled()) {
21048
21754
  queryParams[Param.preAuthCache] = true;
21049
21755
  }
@@ -21729,6 +22435,9 @@ class TsEmbed {
21729
22435
  * @param args
21730
22436
  */
21731
22437
  async render() {
22438
+ uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_RENDER_CALLED, {
22439
+ embedComponentType: this.viewConfig.embedComponentType,
22440
+ });
21732
22441
  if (!getIsInitCalled()) {
21733
22442
  logger$3.error(ERROR_MESSAGE.RENDER_CALLED_BEFORE_INIT);
21734
22443
  }
@@ -21800,6 +22509,10 @@ class TsEmbed {
21800
22509
  * @param showPreRenderByDefault - Show the preRender after render, hidden by default
21801
22510
  */
21802
22511
  async preRender(showPreRenderByDefault = false, replaceExistingPreRender = false) {
22512
+ uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_PRE_RENDER, {
22513
+ showPreRenderByDefault,
22514
+ replaceExistingPreRender,
22515
+ });
21803
22516
  if (!this.viewConfig.preRenderId) {
21804
22517
  logger$3.error(ERROR_MESSAGE.PRERENDER_ID_MISSING);
21805
22518
  return this;
@@ -21976,7 +22689,11 @@ class TsEmbed {
21976
22689
  * wrapper to overlay it.
21977
22690
  */
21978
22691
  async showPreRender() {
21979
- var _a;
22692
+ var _a, _b;
22693
+ uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_SHOW_PRE_RENDER, {
22694
+ preRenderId: this.viewConfig.preRenderId,
22695
+ embedComponentType: this.viewConfig.embedComponentType,
22696
+ });
21980
22697
  if (this.shouldWaitForRenderPromise)
21981
22698
  await this.isReadyForRenderPromise;
21982
22699
  if (!this.viewConfig.preRenderId) {
@@ -22000,10 +22717,14 @@ class TsEmbed {
22000
22717
  }
22001
22718
  }
22002
22719
  const placeHolderId = this.getPreRenderIds().placeHolder;
22003
- const oldEle = this.hostElement.querySelector(`#${placeHolderId}`);
22004
- if (oldEle) {
22005
- this.hostElement.removeChild(oldEle);
22006
- }
22720
+ // Remove any stale placeholder from a previous cycle. It is located
22721
+ // via a subtree-wide querySelector, so it may be nested deeper than a
22722
+ // direct child (E.g.: with fullHeight the host app can wrap it). Use
22723
+ // Element.remove() — which detaches from whatever the real parent is —
22724
+ // rather than hostElement.removeChild(), which throws NotFoundError
22725
+ // when the match is not a direct child. Mirrors the wrapper/child
22726
+ // cleanup in createPreRenderWrapper()/createPreRenderChild().
22727
+ (_a = this.hostElement.querySelector(`#${placeHolderId}`)) === null || _a === void 0 ? void 0 : _a.remove();
22007
22728
  this.hostElement.appendChild(this.insertedDomEl);
22008
22729
  this.syncPreRenderStyle();
22009
22730
  const customContainer = this.preRenderContainerEl && this.preRenderContainerEl !== document.body
@@ -22014,7 +22735,7 @@ class TsEmbed {
22014
22735
  customContainer.addEventListener('scroll', this.containerScrollListener);
22015
22736
  }
22016
22737
  if (!this.viewConfig.doNotTrackPreRenderSize) {
22017
- const observeTarget = (_a = this.insertedDomEl) !== null && _a !== void 0 ? _a : this.hostElement;
22738
+ const observeTarget = (_b = this.insertedDomEl) !== null && _b !== void 0 ? _b : this.hostElement;
22018
22739
  this.resizeObserver = new ResizeObserver((entries) => {
22019
22740
  entries.forEach((entry) => {
22020
22741
  if (entry.target === observeTarget) {
@@ -22078,6 +22799,10 @@ class TsEmbed {
22078
22799
  * If the component is not preRendered, it issues a warning.
22079
22800
  */
22080
22801
  hidePreRender() {
22802
+ uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_HIDE_PRE_RENDER, {
22803
+ preRenderId: this.viewConfig.preRenderId,
22804
+ embedComponentType: this.viewConfig.embedComponentType,
22805
+ });
22081
22806
  logger$3.debug('HidePreRender Called');
22082
22807
  if (!this.isPreRenderConnected()) {
22083
22808
  // if the embed component is not preRendered , nothing to hide
@@ -22557,6 +23282,18 @@ function buildSpotterSidebarAppInitData(defaultAppInitData, viewConfig, handleEr
22557
23282
  ...(visualOverrides !== undefined ? { visualOverridesParams: visualOverrides } : {}),
22558
23283
  },
22559
23284
  };
23285
+ }
23286
+ function buildSpotterShareConversationAppInitData(initData, viewConfig) {
23287
+ const { spotterShareConversationConfig } = viewConfig;
23288
+ if (!spotterShareConversationConfig)
23289
+ return initData;
23290
+ return {
23291
+ ...initData,
23292
+ embedParams: {
23293
+ ...(initData.embedParams || {}),
23294
+ spotterShareConversationConfig,
23295
+ },
23296
+ };
22560
23297
  }
22561
23298
 
22562
23299
  function buildSpotterVizAppInitData(initData, viewConfig) {
@@ -22618,6 +23355,10 @@ var Page;
22618
23355
  * Monitor Alerts Page
22619
23356
  */
22620
23357
  Page["Monitor"] = "monitor";
23358
+ /**
23359
+ * Collections listing page
23360
+ */
23361
+ Page["Collections"] = "collections";
22621
23362
  })(Page || (Page = {}));
22622
23363
  /**
22623
23364
  * Define the initial state of column custom group accordions
@@ -22666,6 +23407,9 @@ var HomePage;
22666
23407
  /**
22667
23408
  * Modular (v2) introduces the updated Modular Home Experience.
22668
23409
  * It serves as the foundational version of the home page.
23410
+ * Use {@link HomePage.ModularWithStylingChanges} (V3) or
23411
+ * {@link HomePage.Focused} (V4) instead.
23412
+ * @deprecated V1 and V2 home page experiences are deprecated.
22669
23413
  */
22670
23414
  HomePage["Modular"] = "v2";
22671
23415
  /**
@@ -22781,14 +23525,19 @@ let AppEmbed$1 = class AppEmbed extends V1Embed {
22781
23525
  async getAppInitData() {
22782
23526
  const defaultAppInitData = await super.getAppInitData();
22783
23527
  const sidebarInitData = buildSpotterSidebarAppInitData(defaultAppInitData, this.viewConfig, this.handleError.bind(this));
22784
- return buildSpotterVizAppInitData(sidebarInitData, this.viewConfig);
23528
+ const vizInitData = buildSpotterVizAppInitData(sidebarInitData, this.viewConfig);
23529
+ return buildSpotterShareConversationAppInitData(vizInitData, this.viewConfig);
22785
23530
  }
22786
23531
  /**
22787
23532
  * Constructs a map of parameters to be passed on to the
22788
23533
  * embedded Liveboard or visualization.
22789
23534
  */
22790
23535
  getEmbedParams() {
22791
- const { tag, hideTagFilterChips, hideObjects, liveboardV2, showPrimaryNavbar, disableProfileAndHelp, hideHamburger, hideObjectSearch, hideNotification, hideApplicationSwitcher, hideOrgSwitcher, enableSearchAssist, newConnectionsExperience, fullHeight, dataPanelV2 = true, hideLiveboardHeader = false, showLiveboardTitle = true, showLiveboardDescription = true, showMaskedFilterChip = false, isLiveboardMasterpiecesEnabled = false, newChartsLibrary, hideHomepageLeftNav = false, modularHomeExperience = false, isLiveboardHeaderSticky = true, enableAskSage, collapseSearchBarInitially = false, enable2ColumnLayout, enableCustomColumnGroups = false, dataPanelCustomGroupsAccordionInitialState = DataPanelCustomColumnGroupsAccordionState.EXPAND_ALL, collapseSearchBar = true, isLiveboardCompactHeaderEnabled = false, showLiveboardVerifiedBadge = true, showLiveboardReverifyBanner = true, hideIrrelevantChipsInLiveboardTabs = false, isEnhancedFilterInteractivityEnabled = false, homePageSearchBarMode, isUnifiedSearchExperienceEnabled = true, enablePendoHelp = true, discoveryExperience, coverAndFilterOptionInPDF = false, isLiveboardStylingAndGroupingEnabled, isPNGInScheduledEmailsEnabled = false, isLiveboardXLSXCSVDownloadEnabled = false, isGranularXLSXCSVSchedulesEnabled = false, isCentralizedLiveboardFilterUXEnabled = false, isLinkParametersEnabled, updatedSpotterChatPrompt, enableStopAnswerGenerationEmbed, spotterChatConfig, minimumHeight, isThisPeriodInDateFiltersEnabled, enableHomepageAnnouncement = false, isContinuousLiveboardPDFEnabled = false, enableLiveboardDataCache, } = this.viewConfig;
23536
+ const params = this.getEmbedParamsObject();
23537
+ return getQueryParamString(params, true);
23538
+ }
23539
+ getEmbedParamsObject() {
23540
+ 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.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;
22792
23541
  let params = {};
22793
23542
  params[Param.PrimaryNavHidden] = !showPrimaryNavbar;
22794
23543
  params[Param.HideProfleAndHelp] = !!disableProfileAndHelp;
@@ -22798,28 +23547,48 @@ let AppEmbed$1 = class AppEmbed extends V1Embed {
22798
23547
  params[Param.ShowLiveboardTitle] = showLiveboardTitle;
22799
23548
  params[Param.ShowLiveboardDescription] = !!showLiveboardDescription;
22800
23549
  params[Param.ShowMaskedFilterChip] = showMaskedFilterChip;
22801
- params[Param.IsLiveboardMasterpiecesEnabled] = isLiveboardMasterpiecesEnabled;
23550
+ if (!isUndefined$1(isLiveboardMasterpiecesEnabled)) {
23551
+ params[Param.IsLiveboardMasterpiecesEnabled] = isLiveboardMasterpiecesEnabled;
23552
+ }
22802
23553
  if (newChartsLibrary !== undefined) {
22803
23554
  params[Param.EnableNewChartLibrary] = newChartsLibrary;
22804
23555
  }
22805
23556
  params[Param.LiveboardHeaderSticky] = isLiveboardHeaderSticky;
22806
23557
  params[Param.IsFullAppEmbed] = true;
22807
- params[Param.LiveboardHeaderV2] = isLiveboardCompactHeaderEnabled;
22808
- params[Param.IsEnhancedFilterInteractivityEnabled] = isEnhancedFilterInteractivityEnabled;
23558
+ if (!isUndefined$1(isLiveboardCompactHeaderEnabled)) {
23559
+ params[Param.LiveboardHeaderV2] = isLiveboardCompactHeaderEnabled;
23560
+ }
23561
+ if (!isUndefined$1(isEnhancedFilterInteractivityEnabled)) {
23562
+ params[Param.IsEnhancedFilterInteractivityEnabled] =
23563
+ isEnhancedFilterInteractivityEnabled;
23564
+ }
22809
23565
  params[Param.ShowLiveboardVerifiedBadge] = showLiveboardVerifiedBadge;
22810
23566
  params[Param.ShowLiveboardReverifyBanner] = showLiveboardReverifyBanner;
22811
- params[Param.HideIrrelevantFiltersInTab] = hideIrrelevantChipsInLiveboardTabs;
23567
+ if (!isUndefined$1(hideIrrelevantChipsInLiveboardTabs)) {
23568
+ params[Param.HideIrrelevantFiltersInTab] = hideIrrelevantChipsInLiveboardTabs;
23569
+ }
22812
23570
  if (isUnifiedSearchExperienceEnabled !== undefined) {
22813
23571
  params[Param.IsUnifiedSearchExperienceEnabled] = isUnifiedSearchExperienceEnabled;
22814
23572
  }
22815
- params[Param.CoverAndFilterOptionInPDF] = !!coverAndFilterOptionInPDF;
23573
+ if (!isUndefined$1(coverAndFilterOptionInPDF)) {
23574
+ params[Param.CoverAndFilterOptionInPDF] = !!coverAndFilterOptionInPDF;
23575
+ }
22816
23576
  params = this.getBaseQueryParams(params);
22817
- if (!isUndefined(updatedSpotterChatPrompt)) {
23577
+ if (!isUndefined$1(updatedSpotterChatPrompt)) {
22818
23578
  params[Param.UpdatedSpotterChatPrompt] = !!updatedSpotterChatPrompt;
22819
23579
  }
22820
- if (!isUndefined(enableStopAnswerGenerationEmbed)) {
23580
+ if (!isUndefined$1(showSpotterRadiance)) {
23581
+ params[Param.ShowSpotterRadiance] = !!showSpotterRadiance;
23582
+ }
23583
+ if (!isUndefined$1(defaultQueryMode)) {
23584
+ params[Param.DefaultQueryMode] = defaultQueryMode;
23585
+ }
23586
+ if (!isUndefined$1(enableStopAnswerGenerationEmbed)) {
22821
23587
  params[Param.EnableStopAnswerGenerationEmbed] = !!enableStopAnswerGenerationEmbed;
22822
23588
  }
23589
+ if (spotterDataSources && spotterDataSources.length) {
23590
+ params[Param.SpotterDataSources] = JSON.stringify(spotterDataSources);
23591
+ }
22823
23592
  // Handle spotterChatConfig params
22824
23593
  if (spotterChatConfig) {
22825
23594
  const { hideToolResponseCardBranding, toolResponseCardBrandingLabel, spotterFileUploadEnabled, spotterFileUploadFileTypes, enableStarterPrompts, } = spotterChatConfig;
@@ -22835,6 +23604,9 @@ let AppEmbed$1 = class AppEmbed extends V1Embed {
22835
23604
  params[Param.SpotterFileUploadFileTypes] = JSON.stringify(spotterFileUploadFileTypes);
22836
23605
  }
22837
23606
  }
23607
+ if (!isUndefined$1(updatedSpotterExperience)) {
23608
+ params[Param.UpdatedSpotterExperience] = !!updatedSpotterExperience;
23609
+ }
22838
23610
  if (hideObjectSearch) {
22839
23611
  params[Param.HideObjectSearch] = !!hideObjectSearch;
22840
23612
  }
@@ -22901,6 +23673,9 @@ let AppEmbed$1 = class AppEmbed extends V1Embed {
22901
23673
  if (isCentralizedLiveboardFilterUXEnabled != undefined) {
22902
23674
  params[Param.isCentralizedLiveboardFilterUXEnabled] = isCentralizedLiveboardFilterUXEnabled;
22903
23675
  }
23676
+ if (isScopedLiveboardFilteringEnabled !== undefined) {
23677
+ params[Param.isScopedLiveboardFilteringEnabled] = isScopedLiveboardFilteringEnabled;
23678
+ }
22904
23679
  if (isThisPeriodInDateFiltersEnabled !== undefined) {
22905
23680
  params[Param.IsThisPeriodInDateFiltersEnabled] = isThisPeriodInDateFiltersEnabled;
22906
23681
  }
@@ -22916,7 +23691,6 @@ let AppEmbed$1 = class AppEmbed extends V1Embed {
22916
23691
  }
22917
23692
  params[Param.DataPanelV2Enabled] = dataPanelV2;
22918
23693
  params[Param.HideHomepageLeftNav] = hideHomepageLeftNav;
22919
- params[Param.ModularHomeExperienceEnabled] = modularHomeExperience;
22920
23694
  params[Param.CollapseSearchBarInitially] = collapseSearchBarInitially || collapseSearchBar;
22921
23695
  params[Param.EnableCustomColumnGroups] = enableCustomColumnGroups;
22922
23696
  if (dataPanelCustomGroupsAccordionInitialState
@@ -22931,33 +23705,15 @@ let AppEmbed$1 = class AppEmbed extends V1Embed {
22931
23705
  if (modularHomeExperience !== undefined) {
22932
23706
  params[Param.ModularHomeExperienceEnabled] = modularHomeExperience;
22933
23707
  }
22934
- // Set navigation to v2 by default to avoid problems like the app
22935
- // switcher (9-dot menu) not showing when v3 navigation is turned on
22936
- // at the cluster level.
22937
- // To use v3 navigation, we must manually set the discoveryExperience
22938
- // settings.
22939
- params[Param.NavigationVersion] = 'v2';
22940
- // Set homePageVersion to v2 by default to reset the LD flag value
22941
- // for the homepageVersion.
22942
- params[Param.HomepageVersion] = 'v2';
23708
+ // Navigation V1/V2 and home page V1/V2 are deprecated. V3 is now the
23709
+ // default experience, Need to send navigationVersion=v3 and
23710
+ // homepageVersion=v3 even when the no discoveryExperience /
23711
+ // modularHomeExperience config is set. Without these
23712
+ // params, older TSA versions (< 26.7) fall back to V2 for nav and
23713
+ // home page, so the defaults must be sent explicitly from the SDK.
23714
+ params[Param.NavigationVersion] = PrimaryNavbarVersion.Sliding;
23715
+ params[Param.HomepageVersion] = HomePage.ModularWithStylingChanges;
22943
23716
  if (discoveryExperience) {
22944
- // primaryNavbarVersion v3 will enabled the new left navigation
22945
- if (discoveryExperience.primaryNavbarVersion === PrimaryNavbarVersion.Sliding) {
22946
- params[Param.NavigationVersion] = discoveryExperience.primaryNavbarVersion;
22947
- // Enable the modularHomeExperience when Sliding is enabled.
22948
- params[Param.ModularHomeExperienceEnabled] = true;
22949
- }
22950
- // homePage v2 will enable the modular home page
22951
- // and it will override the modularHomeExperience value
22952
- if (discoveryExperience.homePage === HomePage.Modular) {
22953
- params[Param.ModularHomeExperienceEnabled] = true;
22954
- }
22955
- // ModularWithStylingChanges (v3) introduces the styling changes
22956
- // to the Modular Homepage.
22957
- // v3 will be the base version of homePageVersion.
22958
- if (discoveryExperience.homePage === HomePage.ModularWithStylingChanges) {
22959
- params[Param.HomepageVersion] = HomePage.ModularWithStylingChanges;
22960
- }
22961
23717
  // listPageVersion can be changed to v2 or v3
22962
23718
  if (discoveryExperience.listPageVersion !== undefined) {
22963
23719
  params[Param.ListPageVersion] = discoveryExperience.listPageVersion;
@@ -22967,13 +23723,12 @@ let AppEmbed$1 = class AppEmbed extends V1Embed {
22967
23723
  // The Focused (V4) homepage experience requires the updated
22968
23724
  // Spotter chat prompt. Enable it automatically unless the
22969
23725
  // developer has explicitly set updatedSpotterChatPrompt.
22970
- if (isUndefined(updatedSpotterChatPrompt)) {
23726
+ if (isUndefined$1(updatedSpotterChatPrompt)) {
22971
23727
  params[Param.UpdatedSpotterChatPrompt] = true;
22972
23728
  }
22973
23729
  }
22974
23730
  }
22975
- const queryParams = getQueryParamString(params, true);
22976
- return queryParams;
23731
+ return params;
22977
23732
  }
22978
23733
  /**
22979
23734
  * Constructs the URL of the ThoughtSpot app page to be rendered.
@@ -23008,6 +23763,8 @@ let AppEmbed$1 = class AppEmbed extends V1Embed {
23008
23763
  return modularHomeExperience ? 'home/spotiq-analysis' : 'insights/results';
23009
23764
  case Page.Monitor:
23010
23765
  return modularHomeExperience ? 'home/monitor-alerts' : 'insights/monitor-alerts';
23766
+ case Page.Collections:
23767
+ return 'collections';
23011
23768
  case Page.Home:
23012
23769
  default:
23013
23770
  return 'home';
@@ -23040,11 +23797,13 @@ let AppEmbed$1 = class AppEmbed extends V1Embed {
23040
23797
  * @version SDK: 1.12.0 | ThoughtSpot: 8.4.0.cl, 8.4.1-sw
23041
23798
  */
23042
23799
  navigateToPage(path, noReload = false) {
23800
+ var _a;
23043
23801
  if (!this.iFrame) {
23044
23802
  logger$3.log('Please call render before invoking this method');
23045
23803
  return;
23046
23804
  }
23047
- if (noReload) {
23805
+ const overrideHistoryState = (_a = this.viewConfig) === null || _a === void 0 ? void 0 : _a.overrideHistoryState;
23806
+ if (noReload || overrideHistoryState) {
23048
23807
  this.trigger(HostEvent.Navigate, path);
23049
23808
  }
23050
23809
  else {
@@ -23313,7 +24072,7 @@ let LiveboardEmbed$1 = class LiveboardEmbed extends V1Embed {
23313
24072
  getEmbedParamsObject() {
23314
24073
  let params = {};
23315
24074
  params = this.getBaseQueryParams(params);
23316
- const { enableVizTransformations, fullHeight, defaultHeight, minimumHeight, visibleVizs, liveboardV2, vizId, hideTabPanel, activeTabId, hideLiveboardHeader, showLiveboardDescription, showLiveboardTitle, isLiveboardHeaderSticky = true, isLiveboardCompactHeaderEnabled = false, showLiveboardVerifiedBadge = true, showLiveboardReverifyBanner = true, hideIrrelevantChipsInLiveboardTabs = false, showMaskedFilterChip = false, isLiveboardMasterpiecesEnabled = false, newChartsLibrary, isEnhancedFilterInteractivityEnabled = false, enableAskSage, enable2ColumnLayout, dataPanelV2 = true, enableCustomColumnGroups = false, oAuthPollingInterval, isForceRedirect, dataSourceId, coverAndFilterOptionInPDF = false, isLiveboardStylingAndGroupingEnabled, isPNGInScheduledEmailsEnabled = false, isLiveboardXLSXCSVDownloadEnabled = false, isGranularXLSXCSVSchedulesEnabled = false, showSpotterLimitations, isCentralizedLiveboardFilterUXEnabled = false, isLinkParametersEnabled, updatedSpotterChatPrompt, enableStopAnswerGenerationEmbed, spotterChatConfig, isThisPeriodInDateFiltersEnabled, isContinuousLiveboardPDFEnabled = false, enableLiveboardDataCache, } = this.viewConfig;
24075
+ 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;
23317
24076
  const preventLiveboardFilterRemoval = this.viewConfig.preventLiveboardFilterRemoval
23318
24077
  || this.viewConfig.preventPinboardFilterRemoval;
23319
24078
  if (fullHeight === true) {
@@ -23332,10 +24091,13 @@ let LiveboardEmbed$1 = class LiveboardEmbed extends V1Embed {
23332
24091
  if (preventLiveboardFilterRemoval) {
23333
24092
  params[Param.preventLiveboardFilterRemoval] = true;
23334
24093
  }
23335
- if (!isUndefined(updatedSpotterChatPrompt)) {
24094
+ if (!isUndefined$1(updatedSpotterChatPrompt)) {
23336
24095
  params[Param.UpdatedSpotterChatPrompt] = !!updatedSpotterChatPrompt;
23337
24096
  }
23338
- if (!isUndefined(enableStopAnswerGenerationEmbed)) {
24097
+ if (!isUndefined$1(showSpotterRadiance)) {
24098
+ params[Param.ShowSpotterRadiance] = !!showSpotterRadiance;
24099
+ }
24100
+ if (!isUndefined$1(enableStopAnswerGenerationEmbed)) {
23339
24101
  params[Param.EnableStopAnswerGenerationEmbed] = !!enableStopAnswerGenerationEmbed;
23340
24102
  }
23341
24103
  if (visibleVizs) {
@@ -23390,6 +24152,9 @@ let LiveboardEmbed$1 = class LiveboardEmbed extends V1Embed {
23390
24152
  if (showSpotterLimitations !== undefined) {
23391
24153
  params[Param.ShowSpotterLimitations] = showSpotterLimitations;
23392
24154
  }
24155
+ if (!isUndefined$1(updatedSpotterExperience)) {
24156
+ params[Param.UpdatedSpotterExperience] = !!updatedSpotterExperience;
24157
+ }
23393
24158
  // Handle spotterChatConfig params
23394
24159
  if (spotterChatConfig) {
23395
24160
  const { hideToolResponseCardBranding, toolResponseCardBrandingLabel, spotterFileUploadEnabled, spotterFileUploadFileTypes, enableStarterPrompts, } = spotterChatConfig;
@@ -23411,6 +24176,9 @@ let LiveboardEmbed$1 = class LiveboardEmbed extends V1Embed {
23411
24176
  if (isCentralizedLiveboardFilterUXEnabled !== undefined) {
23412
24177
  params[Param.isCentralizedLiveboardFilterUXEnabled] = isCentralizedLiveboardFilterUXEnabled;
23413
24178
  }
24179
+ if (isScopedLiveboardFilteringEnabled !== undefined) {
24180
+ params[Param.isScopedLiveboardFilteringEnabled] = isScopedLiveboardFilteringEnabled;
24181
+ }
23414
24182
  if (isThisPeriodInDateFiltersEnabled !== undefined) {
23415
24183
  params[Param.IsThisPeriodInDateFiltersEnabled] = isThisPeriodInDateFiltersEnabled;
23416
24184
  }
@@ -23424,16 +24192,27 @@ let LiveboardEmbed$1 = class LiveboardEmbed extends V1Embed {
23424
24192
  params[Param.EnableNewChartLibrary] = newChartsLibrary;
23425
24193
  }
23426
24194
  params[Param.LiveboardHeaderSticky] = isLiveboardHeaderSticky;
23427
- params[Param.LiveboardHeaderV2] = isLiveboardCompactHeaderEnabled;
24195
+ if (!isUndefined$1(isLiveboardCompactHeaderEnabled)) {
24196
+ params[Param.LiveboardHeaderV2] = isLiveboardCompactHeaderEnabled;
24197
+ }
23428
24198
  params[Param.ShowLiveboardVerifiedBadge] = showLiveboardVerifiedBadge;
23429
24199
  params[Param.ShowLiveboardReverifyBanner] = showLiveboardReverifyBanner;
23430
- params[Param.HideIrrelevantFiltersInTab] = hideIrrelevantChipsInLiveboardTabs;
24200
+ if (!isUndefined$1(hideIrrelevantChipsInLiveboardTabs)) {
24201
+ params[Param.HideIrrelevantFiltersInTab] = hideIrrelevantChipsInLiveboardTabs;
24202
+ }
23431
24203
  params[Param.ShowMaskedFilterChip] = showMaskedFilterChip;
23432
- params[Param.IsLiveboardMasterpiecesEnabled] = isLiveboardMasterpiecesEnabled;
23433
- params[Param.IsEnhancedFilterInteractivityEnabled] = isEnhancedFilterInteractivityEnabled;
24204
+ if (!isUndefined$1(isLiveboardMasterpiecesEnabled)) {
24205
+ params[Param.IsLiveboardMasterpiecesEnabled] = isLiveboardMasterpiecesEnabled;
24206
+ }
24207
+ if (!isUndefined$1(isEnhancedFilterInteractivityEnabled)) {
24208
+ params[Param.IsEnhancedFilterInteractivityEnabled] =
24209
+ isEnhancedFilterInteractivityEnabled;
24210
+ }
23434
24211
  params[Param.DataPanelV2Enabled] = dataPanelV2;
23435
24212
  params[Param.EnableCustomColumnGroups] = enableCustomColumnGroups;
23436
- params[Param.CoverAndFilterOptionInPDF] = coverAndFilterOptionInPDF;
24213
+ if (!isUndefined$1(coverAndFilterOptionInPDF)) {
24214
+ params[Param.CoverAndFilterOptionInPDF] = coverAndFilterOptionInPDF;
24215
+ }
23437
24216
  getQueryParamString(params, true);
23438
24217
  return params;
23439
24218
  }
@@ -23536,7 +24315,7 @@ let LiveboardEmbed$1 = class LiveboardEmbed extends V1Embed {
23536
24315
  });
23537
24316
  }
23538
24317
  async handleRenderForPrerender() {
23539
- if (isUndefined(this.viewConfig.liveboardId)) {
24318
+ if (isUndefined$1(this.viewConfig.liveboardId)) {
23540
24319
  return this.prerenderGeneric();
23541
24320
  }
23542
24321
  return super.handleRenderForPrerender();
@@ -24173,6 +24952,15 @@ function getViewPropsAndListeners(props) {
24173
24952
  });
24174
24953
  }
24175
24954
 
24955
+ /**
24956
+ * The query mode Spotter uses when answering a question.
24957
+ * @version SDK: 1.52.0 | ThoughtSpot Cloud: 26.9.0.cl
24958
+ */
24959
+ var SpotterQueryMode;
24960
+ (function (SpotterQueryMode) {
24961
+ SpotterQueryMode["FAST_SEARCH"] = "fastSearch";
24962
+ SpotterQueryMode["RESEARCH"] = "research";
24963
+ })(SpotterQueryMode || (SpotterQueryMode = {}));
24176
24964
  /**
24177
24965
  * Embed ThoughtSpot AI Conversation.
24178
24966
  * @version SDK: 1.37.0 | ThoughtSpot: 10.9.0.cl
@@ -24213,18 +25001,11 @@ let SpotterEmbed$1 = class SpotterEmbed extends TsEmbed {
24213
25001
  */
24214
25002
  async getAppInitData() {
24215
25003
  const defaultAppInitData = await super.getAppInitData();
24216
- return buildSpotterSidebarAppInitData(defaultAppInitData, this.viewConfig, this.handleError.bind(this));
25004
+ const sidebarInitData = buildSpotterSidebarAppInitData(defaultAppInitData, this.viewConfig, this.handleError.bind(this));
25005
+ return buildSpotterShareConversationAppInitData(sidebarInitData, this.viewConfig);
24217
25006
  }
24218
25007
  getEmbedParamsObject() {
24219
- const { worksheetId, searchOptions, disableSourceSelection, hideSourceSelection, dataPanelV2, showSpotterLimitations, hideSampleQuestions, runtimeFilters, excludeRuntimeFiltersfromURL, runtimeParameters, excludeRuntimeParametersfromURL, updatedSpotterChatPrompt, enableStopAnswerGenerationEmbed, spotterChatConfig, } = this.viewConfig;
24220
- if (!worksheetId) {
24221
- this.handleError({
24222
- errorType: ErrorDetailsTypes.VALIDATION_ERROR,
24223
- message: ERROR_MESSAGE.SPOTTER_EMBED_WORKSHEED_ID_NOT_FOUND,
24224
- code: EmbedErrorCodes.WORKSHEET_ID_NOT_FOUND,
24225
- error: ERROR_MESSAGE.SPOTTER_EMBED_WORKSHEED_ID_NOT_FOUND,
24226
- });
24227
- }
25008
+ const { searchOptions, disableSourceSelection, hideSourceSelection, dataPanelV2, updatedSpotterExperience, showSpotterLimitations, hideSampleQuestions, runtimeFilters, excludeRuntimeFiltersfromURL, runtimeParameters, excludeRuntimeParametersfromURL, updatedSpotterChatPrompt, showSpotterRadiance, defaultQueryMode, enableStopAnswerGenerationEmbed, spotterChatConfig, } = this.viewConfig;
24228
25009
  const queryParams = this.getBaseQueryParams();
24229
25010
  queryParams[Param.SpotterEnabled] = true;
24230
25011
  // Boolean params
@@ -24234,6 +25015,8 @@ let SpotterEmbed$1 = class SpotterEmbed extends TsEmbed {
24234
25015
  setParamIfDefined(queryParams, Param.ShowSpotterLimitations, showSpotterLimitations, true);
24235
25016
  setParamIfDefined(queryParams, Param.HideSampleQuestions, hideSampleQuestions, true);
24236
25017
  setParamIfDefined(queryParams, Param.UpdatedSpotterChatPrompt, updatedSpotterChatPrompt, true);
25018
+ setParamIfDefined(queryParams, Param.ShowSpotterRadiance, showSpotterRadiance, true);
25019
+ setParamIfDefined(queryParams, Param.DefaultQueryMode, defaultQueryMode);
24237
25020
  setParamIfDefined(queryParams, Param.EnableStopAnswerGenerationEmbed, enableStopAnswerGenerationEmbed, true);
24238
25021
  // Handle spotterChatConfig params
24239
25022
  if (spotterChatConfig) {
@@ -24246,11 +25029,18 @@ let SpotterEmbed$1 = class SpotterEmbed extends TsEmbed {
24246
25029
  queryParams[Param.SpotterFileUploadFileTypes] = JSON.stringify(spotterFileUploadFileTypes);
24247
25030
  }
24248
25031
  }
25032
+ setParamIfDefined(queryParams, Param.UpdatedSpotterExperience, updatedSpotterExperience, true);
24249
25033
  return queryParams;
24250
25034
  }
24251
25035
  getIframeSrc() {
24252
- const { worksheetId, searchOptions, runtimeFilters, excludeRuntimeFiltersfromURL, runtimeParameters, excludeRuntimeParametersfromURL, } = this.viewConfig;
24253
- const path = 'insights/conv-assist';
25036
+ const { worksheetId, searchOptions, runtimeFilters, excludeRuntimeFiltersfromURL, runtimeParameters, excludeRuntimeParametersfromURL, sharedConversationId, dataSources, } = this.viewConfig;
25037
+ // Deep-link into the read-only shared-conversation reader view when a
25038
+ // shared conversation id is supplied (e.g. a recipient landing from a
25039
+ // host-configured CONVERSATION_URL share link); otherwise the normal
25040
+ // Spotter conversation surface.
25041
+ const path = sharedConversationId
25042
+ ? `insights/conv-assist/s/${encodeURIComponent(sharedConversationId)}`
25043
+ : 'insights/conv-assist';
24254
25044
  const queryParams = this.getEmbedParamsObject();
24255
25045
  let query = '';
24256
25046
  const queryParamsString = getQueryParamString(queryParams, true);
@@ -24266,8 +25056,12 @@ let SpotterEmbed$1 = class SpotterEmbed extends TsEmbed {
24266
25056
  query += `&${parameterQuery}`;
24267
25057
  }
24268
25058
  const tsPostHashParams = this.getThoughtSpotPostUrlParams({
24269
- worksheet: worksheetId,
24270
- query: (searchOptions === null || searchOptions === void 0 ? void 0 : searchOptions.searchQuery) || '',
25059
+ ...(!(Array.isArray(dataSources) && dataSources.length > 0) && worksheetId
25060
+ && { worksheet: worksheetId }),
25061
+ ...((searchOptions === null || searchOptions === void 0 ? void 0 : searchOptions.searchQuery) && { query: searchOptions.searchQuery }),
25062
+ ...(Array.isArray(dataSources)
25063
+ && dataSources.length > 0
25064
+ && { dataSources: JSON.stringify(dataSources) }),
24271
25065
  });
24272
25066
  return `${this.getEmbedBasePath(query)}/embed/${path}${tsPostHashParams}`;
24273
25067
  }