@thoughtspot/visual-embed-sdk 1.47.2 → 1.48.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 (190) hide show
  1. package/cjs/package.json +1 -1
  2. package/cjs/src/auth.d.ts.map +1 -1
  3. package/cjs/src/auth.js +11 -1
  4. package/cjs/src/auth.js.map +1 -1
  5. package/cjs/src/auth.spec.js +38 -0
  6. package/cjs/src/auth.spec.js.map +1 -1
  7. package/cjs/src/authToken.d.ts +2 -0
  8. package/cjs/src/authToken.d.ts.map +1 -1
  9. package/cjs/src/authToken.js +7 -5
  10. package/cjs/src/authToken.js.map +1 -1
  11. package/cjs/src/embed/app.d.ts +7 -2
  12. package/cjs/src/embed/app.d.ts.map +1 -1
  13. package/cjs/src/embed/app.js +4 -1
  14. package/cjs/src/embed/app.js.map +1 -1
  15. package/cjs/src/embed/app.spec.js +121 -0
  16. package/cjs/src/embed/app.spec.js.map +1 -1
  17. package/cjs/src/embed/conversation.d.ts +2 -1
  18. package/cjs/src/embed/conversation.d.ts.map +1 -1
  19. package/cjs/src/embed/conversation.js.map +1 -1
  20. package/cjs/src/embed/liveboard.d.ts +1 -1
  21. package/cjs/src/embed/liveboard.d.ts.map +1 -1
  22. package/cjs/src/embed/liveboard.js +4 -1
  23. package/cjs/src/embed/liveboard.js.map +1 -1
  24. package/cjs/src/embed/liveboard.spec.js +32 -0
  25. package/cjs/src/embed/liveboard.spec.js.map +1 -1
  26. package/cjs/src/embed/search.d.ts +24 -1
  27. package/cjs/src/embed/search.d.ts.map +1 -1
  28. package/cjs/src/embed/search.js +15 -2
  29. package/cjs/src/embed/search.js.map +1 -1
  30. package/cjs/src/embed/search.spec.js +99 -0
  31. package/cjs/src/embed/search.spec.js.map +1 -1
  32. package/cjs/src/embed/spotter-utils.d.ts +3 -0
  33. package/cjs/src/embed/spotter-utils.d.ts.map +1 -1
  34. package/cjs/src/embed/spotter-utils.js +11 -3
  35. package/cjs/src/embed/spotter-utils.js.map +1 -1
  36. package/cjs/src/embed/spotter-utils.spec.js +51 -0
  37. package/cjs/src/embed/spotter-utils.spec.js.map +1 -1
  38. package/cjs/src/embed/ts-embed.d.ts +1 -0
  39. package/cjs/src/embed/ts-embed.d.ts.map +1 -1
  40. package/cjs/src/embed/ts-embed.js +17 -5
  41. package/cjs/src/embed/ts-embed.js.map +1 -1
  42. package/cjs/src/embed/ts-embed.spec.js +168 -0
  43. package/cjs/src/embed/ts-embed.spec.js.map +1 -1
  44. package/cjs/src/index.d.ts +2 -2
  45. package/cjs/src/index.d.ts.map +1 -1
  46. package/cjs/src/index.js +8 -1
  47. package/cjs/src/index.js.map +1 -1
  48. package/cjs/src/mixpanel-service.d.ts.map +1 -1
  49. package/cjs/src/mixpanel-service.js +2 -0
  50. package/cjs/src/mixpanel-service.js.map +1 -1
  51. package/cjs/src/mixpanel-service.spec.js +2 -0
  52. package/cjs/src/mixpanel-service.spec.js.map +1 -1
  53. package/cjs/src/test/test-utils.d.ts +1 -0
  54. package/cjs/src/test/test-utils.d.ts.map +1 -1
  55. package/cjs/src/test/test-utils.js +26 -1
  56. package/cjs/src/test/test-utils.js.map +1 -1
  57. package/cjs/src/tokenizedFetch.d.ts.map +1 -1
  58. package/cjs/src/tokenizedFetch.js +12 -9
  59. package/cjs/src/tokenizedFetch.js.map +1 -1
  60. package/cjs/src/tokenizedFetch.spec.d.ts +2 -0
  61. package/cjs/src/tokenizedFetch.spec.d.ts.map +1 -0
  62. package/cjs/src/tokenizedFetch.spec.js +68 -0
  63. package/cjs/src/tokenizedFetch.spec.js.map +1 -0
  64. package/cjs/src/types.d.ts +466 -13
  65. package/cjs/src/types.d.ts.map +1 -1
  66. package/cjs/src/types.js +149 -5
  67. package/cjs/src/types.js.map +1 -1
  68. package/dist/{index-CFZ7RDZ9.js → index-Ck-r09gt.js} +1 -1
  69. package/dist/src/auth.d.ts.map +1 -1
  70. package/dist/src/authToken.d.ts +2 -0
  71. package/dist/src/authToken.d.ts.map +1 -1
  72. package/dist/src/embed/app.d.ts +7 -2
  73. package/dist/src/embed/app.d.ts.map +1 -1
  74. package/dist/src/embed/conversation.d.ts +2 -1
  75. package/dist/src/embed/conversation.d.ts.map +1 -1
  76. package/dist/src/embed/liveboard.d.ts +1 -1
  77. package/dist/src/embed/liveboard.d.ts.map +1 -1
  78. package/dist/src/embed/search.d.ts +24 -1
  79. package/dist/src/embed/search.d.ts.map +1 -1
  80. package/dist/src/embed/spotter-utils.d.ts +3 -0
  81. package/dist/src/embed/spotter-utils.d.ts.map +1 -1
  82. package/dist/src/embed/ts-embed.d.ts +1 -0
  83. package/dist/src/embed/ts-embed.d.ts.map +1 -1
  84. package/dist/src/index.d.ts +2 -2
  85. package/dist/src/index.d.ts.map +1 -1
  86. package/dist/src/mixpanel-service.d.ts.map +1 -1
  87. package/dist/src/test/test-utils.d.ts +1 -0
  88. package/dist/src/test/test-utils.d.ts.map +1 -1
  89. package/dist/src/tokenizedFetch.d.ts.map +1 -1
  90. package/dist/src/tokenizedFetch.spec.d.ts +2 -0
  91. package/dist/src/tokenizedFetch.spec.d.ts.map +1 -0
  92. package/dist/src/types.d.ts +466 -13
  93. package/dist/src/types.d.ts.map +1 -1
  94. package/dist/tsembed-react.es.js +226 -29
  95. package/dist/tsembed-react.js +225 -28
  96. package/dist/tsembed.es.js +227 -30
  97. package/dist/tsembed.js +225 -28
  98. package/dist/visual-embed-sdk-react-full.d.ts +469 -15
  99. package/dist/visual-embed-sdk-react.d.ts +469 -15
  100. package/dist/visual-embed-sdk.d.ts +497 -15
  101. package/lib/package.json +1 -1
  102. package/lib/src/auth.d.ts.map +1 -1
  103. package/lib/src/auth.js +12 -2
  104. package/lib/src/auth.js.map +1 -1
  105. package/lib/src/auth.spec.js +38 -0
  106. package/lib/src/auth.spec.js.map +1 -1
  107. package/lib/src/authToken.d.ts +2 -0
  108. package/lib/src/authToken.d.ts.map +1 -1
  109. package/lib/src/authToken.js +2 -2
  110. package/lib/src/authToken.js.map +1 -1
  111. package/lib/src/embed/app.d.ts +7 -2
  112. package/lib/src/embed/app.d.ts.map +1 -1
  113. package/lib/src/embed/app.js +4 -1
  114. package/lib/src/embed/app.js.map +1 -1
  115. package/lib/src/embed/app.spec.js +122 -1
  116. package/lib/src/embed/app.spec.js.map +1 -1
  117. package/lib/src/embed/conversation.d.ts +2 -1
  118. package/lib/src/embed/conversation.d.ts.map +1 -1
  119. package/lib/src/embed/conversation.js.map +1 -1
  120. package/lib/src/embed/liveboard.d.ts +1 -1
  121. package/lib/src/embed/liveboard.d.ts.map +1 -1
  122. package/lib/src/embed/liveboard.js +4 -1
  123. package/lib/src/embed/liveboard.js.map +1 -1
  124. package/lib/src/embed/liveboard.spec.js +32 -0
  125. package/lib/src/embed/liveboard.spec.js.map +1 -1
  126. package/lib/src/embed/search.d.ts +24 -1
  127. package/lib/src/embed/search.d.ts.map +1 -1
  128. package/lib/src/embed/search.js +15 -2
  129. package/lib/src/embed/search.js.map +1 -1
  130. package/lib/src/embed/search.spec.js +100 -1
  131. package/lib/src/embed/search.spec.js.map +1 -1
  132. package/lib/src/embed/spotter-utils.d.ts +3 -0
  133. package/lib/src/embed/spotter-utils.d.ts.map +1 -1
  134. package/lib/src/embed/spotter-utils.js +11 -3
  135. package/lib/src/embed/spotter-utils.js.map +1 -1
  136. package/lib/src/embed/spotter-utils.spec.js +51 -0
  137. package/lib/src/embed/spotter-utils.spec.js.map +1 -1
  138. package/lib/src/embed/ts-embed.d.ts +1 -0
  139. package/lib/src/embed/ts-embed.d.ts.map +1 -1
  140. package/lib/src/embed/ts-embed.js +16 -4
  141. package/lib/src/embed/ts-embed.js.map +1 -1
  142. package/lib/src/embed/ts-embed.spec.js +168 -0
  143. package/lib/src/embed/ts-embed.spec.js.map +1 -1
  144. package/lib/src/index.d.ts +2 -2
  145. package/lib/src/index.d.ts.map +1 -1
  146. package/lib/src/index.js +2 -2
  147. package/lib/src/index.js.map +1 -1
  148. package/lib/src/mixpanel-service.d.ts.map +1 -1
  149. package/lib/src/mixpanel-service.js +2 -0
  150. package/lib/src/mixpanel-service.js.map +1 -1
  151. package/lib/src/mixpanel-service.spec.js +2 -0
  152. package/lib/src/mixpanel-service.spec.js.map +1 -1
  153. package/lib/src/test/test-utils.d.ts +1 -0
  154. package/lib/src/test/test-utils.d.ts.map +1 -1
  155. package/lib/src/test/test-utils.js +25 -1
  156. package/lib/src/test/test-utils.js.map +1 -1
  157. package/lib/src/tokenizedFetch.d.ts.map +1 -1
  158. package/lib/src/tokenizedFetch.js +13 -10
  159. package/lib/src/tokenizedFetch.js.map +1 -1
  160. package/lib/src/tokenizedFetch.spec.d.ts +2 -0
  161. package/lib/src/tokenizedFetch.spec.d.ts.map +1 -0
  162. package/lib/src/tokenizedFetch.spec.js +65 -0
  163. package/lib/src/tokenizedFetch.spec.js.map +1 -0
  164. package/lib/src/types.d.ts +466 -13
  165. package/lib/src/types.d.ts.map +1 -1
  166. package/lib/src/types.js +148 -4
  167. package/lib/src/types.js.map +1 -1
  168. package/lib/src/visual-embed-sdk.d.ts +497 -15
  169. package/package.json +1 -1
  170. package/src/auth.spec.ts +55 -1
  171. package/src/auth.ts +11 -2
  172. package/src/authToken.ts +2 -2
  173. package/src/embed/app.spec.ts +154 -0
  174. package/src/embed/app.ts +13 -2
  175. package/src/embed/conversation.ts +2 -1
  176. package/src/embed/liveboard.spec.ts +46 -0
  177. package/src/embed/liveboard.ts +9 -4
  178. package/src/embed/search.spec.ts +118 -0
  179. package/src/embed/search.ts +43 -1
  180. package/src/embed/spotter-utils.spec.ts +52 -0
  181. package/src/embed/spotter-utils.ts +19 -3
  182. package/src/embed/ts-embed.spec.ts +220 -0
  183. package/src/embed/ts-embed.ts +15 -4
  184. package/src/index.ts +16 -0
  185. package/src/mixpanel-service.spec.ts +2 -0
  186. package/src/mixpanel-service.ts +2 -0
  187. package/src/test/test-utils.ts +33 -1
  188. package/src/tokenizedFetch.spec.ts +81 -0
  189. package/src/tokenizedFetch.ts +14 -11
  190. package/src/types.ts +496 -13
package/src/types.ts CHANGED
@@ -926,9 +926,10 @@ export interface BaseViewConfig extends ApiInterceptFlags {
926
926
  styleSheet__unstable?: string;
927
927
  /**
928
928
  * The list of actions to disable from the primary menu, more menu
929
- * (...), and the contextual menu. These actions will be disabled
930
- * for the user.
931
- * Use this to disable actions.
929
+ * (...), and the contextual menu. Disabled actions are grayed out
930
+ * and still visible to the user, but cannot be clicked.
931
+ * Use this when you want to disable an action (keep it visible but non-interactive).
932
+ * To completely remove an action from the UI, use {@link hiddenActions} instead.
932
933
  *
933
934
  * Supported embed types: `AppEmbed`, `LiveboardEmbed`, `SearchEmbed`, `SpotterAgentEmbed`, `SpotterEmbed`, `SearchBarEmbed`
934
935
  * @version SDK: 1.6.0 | ThoughtSpot: ts8.nov.cl, 8.4.1.sw
@@ -959,9 +960,10 @@ export interface BaseViewConfig extends ApiInterceptFlags {
959
960
  */
960
961
  disabledActionReason?: string;
961
962
  /**
962
- * The list of actions to hide from the embedded view.
963
- * These actions will be hidden from the user.
964
- * Use this to hide an action.
963
+ * The list of actions to completely remove from the embedded view.
964
+ * Hidden actions are not visible to the user at all (fully removed from the UI).
965
+ * Use this when you want to remove an action entirely.
966
+ * To keep an action visible but non-interactive (grayed out), use {@link disabledActions} instead.
965
967
  *
966
968
  * Supported embed types: `AppEmbed`, `LiveboardEmbed`, `SearchEmbed`, `SpotterAgentEmbed`, `SpotterEmbed`, `SearchBarEmbed`
967
969
  * @version SDK: 1.6.0 | ThoughtSpot: ts8.nov.cl, 8.4.1.sw
@@ -980,9 +982,8 @@ export interface BaseViewConfig extends ApiInterceptFlags {
980
982
  * The list of actions to display from the primary menu, more menu
981
983
  * (...), and the contextual menu. These will be only actions that
982
984
  * are visible to the user.
983
- * Use this to hide all actions except the ones you want to show.
984
- *
985
- * Use either this or hiddenActions.
985
+ * Use this as an allowlist only the actions listed here will be shown.
986
+ * All other actions will be hidden. Use either this or {@link hiddenActions}, not both.
986
987
  *
987
988
  * Supported embed types: `AppEmbed`, `LiveboardEmbed`, `SearchEmbed`, `SpotterAgentEmbed`, `SpotterEmbed`, `SearchBarEmbed`
988
989
  * @version SDK: 1.6.0 | ThoughtSpot: ts8.nov.cl, 8.4.1.sw
@@ -1437,6 +1438,7 @@ export interface BaseViewConfig extends ApiInterceptFlags {
1437
1438
  /**
1438
1439
  * Refresh the auth token when the token is near expiry.
1439
1440
  * @version SDK: 1.45.2 | ThoughtSpot: 26.3.0.cl
1441
+ * @default true
1440
1442
  * @example
1441
1443
  * ```js
1442
1444
  * const embed = new AppEmbed('#tsEmbed', {
@@ -1994,6 +1996,22 @@ export interface LiveboardAppEmbedViewConfig {
1994
1996
  * ```
1995
1997
  */
1996
1998
  isLiveboardMasterpiecesEnabled?: boolean;
1999
+ /**
2000
+ * Enable or disable Muze chart phase 1 GA
2001
+ *
2002
+ * Supported embed types: `AppEmbed`, `LiveboardEmbed`
2003
+ * @version SDK: 1.49.0 | ThoughtSpot Cloud: 26.6.0.cl
2004
+ * @default false
2005
+ * @example
2006
+ * ```js
2007
+ * // Replace <EmbedComponent> with embed component name. For example, AppEmbed or LiveboardEmbed
2008
+ * const embed = new <EmbedComponent>('#tsEmbed', {
2009
+ * ... // other embed view config
2010
+ * newChartsLibrary: true,
2011
+ * })
2012
+ * ```
2013
+ */
2014
+ newChartsLibrary?: boolean;
1997
2015
  }
1998
2016
 
1999
2017
  export interface AllEmbedViewConfig
@@ -5862,6 +5880,7 @@ export enum Param {
5862
5880
  ShowLiveboardTitle = 'showLiveboardTitle',
5863
5881
  ShowMaskedFilterChip = 'showMaskedFilterChip',
5864
5882
  IsLiveboardMasterpiecesEnabled = 'isLiveboardMasterpiecesEnabled',
5883
+ EnableNewChartLibrary = 'muzeChartPhase1EnabledGA',
5865
5884
  HiddenTabs = 'hideTabs',
5866
5885
  VisibleTabs = 'visibleTabs',
5867
5886
  HideTabPanel = 'hideTabPanel',
@@ -5943,10 +5962,14 @@ export enum Param {
5943
5962
  /**
5944
5963
  * ThoughtSpot application pages include actions and menu commands
5945
5964
  * for various user-initiated operations. These actions are represented
5946
- * as enumeration members in the SDK. To show, hide, or disable
5947
- * specific actions in the embedded view, define the Action
5948
- * enumeration members in the `disabledActions`, `visibleActions`,
5949
- * or `hiddenActions` array.
5965
+ * as enumeration members in the SDK. To control actions in the embedded view:
5966
+ * - disabledActions the action is grayed out and still visible, but non-interactive (user can see but not click).
5967
+ * - hiddenActions the action is completely removed from the UI (user cannot see it at all).
5968
+ * - visibleActions — allowlist, only these actions are shown; all others are hidden.
5969
+ *
5970
+ * Use disabledActions to disable (gray out) an action.
5971
+ * Use hiddenActions to hide (fully remove) an action.
5972
+ * Use visibleActions to show only specific actions.
5950
5973
  * @example
5951
5974
  * ```js
5952
5975
  * const embed = new LiveboardEmbed('#tsEmbed', {
@@ -6797,6 +6820,26 @@ export enum Action {
6797
6820
  * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.5.1.sw
6798
6821
  */
6799
6822
  AxisMenuRemove = 'axisMenuRemove',
6823
+ /**
6824
+ * The **Compare with** action in the chart axis customization menu.
6825
+ * Allows comparing data across dimensions or measures.
6826
+ * @example
6827
+ * ```js
6828
+ * disabledActions: [Action.AxisMenuCompare]
6829
+ * ```
6830
+ * @version SDK: 1.50.0 | ThoughtSpot: 26.7.0.cl
6831
+ */
6832
+ AxisMenuCompare = 'axisMenuCompare',
6833
+ /**
6834
+ * The **Merge with** action in the chart axis customization menu.
6835
+ * Allows merging data across dimensions or measures.
6836
+ * @example
6837
+ * ```js
6838
+ * disabledActions: [Action.AxisMenuMerge]
6839
+ * ```
6840
+ * @version SDK: 1.50.0 | ThoughtSpot: 26.7.0.cl
6841
+ */
6842
+ AxisMenuMerge = 'axisMenuMerge',
6800
6843
  /**
6801
6844
  * @hidden
6802
6845
  */
@@ -8076,6 +8119,9 @@ export interface DefaultAppInitData {
8076
8119
  customActions: CustomAction[];
8077
8120
  interceptTimeout: number | undefined;
8078
8121
  interceptUrls: (string | InterceptedApiType)[];
8122
+ embedExpiryInAuthToken:boolean;
8123
+ shouldBypassPayloadValidation?:boolean
8124
+ useHostEventsV2?:boolean
8079
8125
  }
8080
8126
 
8081
8127
  /**
@@ -8197,3 +8243,440 @@ export interface ContextObject {
8197
8243
  objectIds: ObjectIds;
8198
8244
  };
8199
8245
  }
8246
+
8247
+
8248
+ // ─── Visual Overrides ────────────────────────────────────────────────────────
8249
+
8250
+ export interface FontProperties {
8251
+ color?: string;
8252
+ bold?: boolean;
8253
+ italic?: boolean;
8254
+ strikeThrough?: boolean;
8255
+ underline?: boolean;
8256
+ }
8257
+
8258
+ export interface SolidBackgroundAttrs {
8259
+ color?: string;
8260
+ }
8261
+
8262
+ export interface GradientBackgroundAttrs {
8263
+ backgroundFormatMidpoint?: number;
8264
+ colors?: string[];
8265
+ backgroundFormatRange?: number[];
8266
+ isAutoScaled?: boolean;
8267
+ }
8268
+
8269
+ /**
8270
+ * Data label filter operators
8271
+ * @group Visual Overrides
8272
+ */
8273
+ export enum DataLabelFilterOperator {
8274
+ /** Greater than */
8275
+ GreaterThan = 'GREATER_THAN',
8276
+ /** Less than */
8277
+ LessThan = 'LESS_THAN',
8278
+ /** Greater than or equal to */
8279
+ GreaterThanOrEqualTo = 'GREATER_THAN_OR_EQUAL_TO',
8280
+ /** Less than or equal to */
8281
+ LessThanOrEqualTo = 'LESS_THAN_OR_EQUAL_TO',
8282
+ /** Equal to */
8283
+ EqualTo = 'EQUAL_TO',
8284
+ /** Not equal to */
8285
+ NotEqualTo = 'NOT_EQUAL_TO',
8286
+ }
8287
+
8288
+ /**
8289
+ * Conditional formatting operators
8290
+ * @group Visual Overrides
8291
+ */
8292
+ export enum ConditionalFormattingOperator {
8293
+ /** Is equal to */
8294
+ Is = 'IS',
8295
+ /** Is not equal to */
8296
+ IsNot = 'IS_NOT',
8297
+ /** Contains */
8298
+ Contains = 'CONTAINS',
8299
+ /** Does not contain */
8300
+ DoesNotContain = 'DOES_NOT_CONTAIN',
8301
+ /** Starts with */
8302
+ StartsWith = 'STARTS_WITH',
8303
+ /** Ends with */
8304
+ EndsWith = 'ENDS_WITH',
8305
+ /** Greater than */
8306
+ GreaterThan = 'GREATER_THAN',
8307
+ /** Less than */
8308
+ LessThan = 'LESS_THAN',
8309
+ /** Greater than or equal to */
8310
+ GreaterThanEqualTo = 'GREATER_THAN_EQUAL_TO',
8311
+ /** Less than or equal to */
8312
+ LessThanEqualTo = 'LESS_THAN_EQUAL_TO',
8313
+ /** Equal to */
8314
+ EqualTo = 'EQUAL_TO',
8315
+ /** Not equal to */
8316
+ NotEqualTo = 'NOT_EQUAL_TO',
8317
+ /** Is between */
8318
+ IsBetween = 'IS_BETWEEN',
8319
+ /** Is null */
8320
+ IsNull = 'IS_NULL',
8321
+ /** Is not null */
8322
+ IsNotNull = 'IS_NOT_NULL',
8323
+ }
8324
+
8325
+ /**
8326
+ * Background format types for conditional formatting
8327
+ * @group Visual Overrides
8328
+ */
8329
+ export enum BackgroundFormatType {
8330
+ /** Solid color background */
8331
+ Solid = 'SOLID',
8332
+ /** Gradient background */
8333
+ Gradient = 'GRADIENT',
8334
+ }
8335
+
8336
+ /**
8337
+ * Comparison types for conditional formatting
8338
+ * @group Visual Overrides
8339
+ */
8340
+ export enum ConditionalFormattingComparisonType {
8341
+ /** Value-based comparison */
8342
+ ValueBased = 'VALUE_BASED',
8343
+ /** Column-based comparison */
8344
+ ColumnBased = 'COLUMN_BASED',
8345
+ /** Parameter-based comparison */
8346
+ ParameterBased = 'PARAMETER_BASED',
8347
+ }
8348
+
8349
+ /**
8350
+ * A single conditional formatting rule row
8351
+ * @group Visual Overrides
8352
+ */
8353
+ export interface ConditionalFormattingRow {
8354
+ /** Comparison operator */
8355
+ operator: ConditionalFormattingOperator | string;
8356
+ /** Value to compare against */
8357
+ value?: string;
8358
+ /** Range values for range-based comparisons */
8359
+ rangeValues?: { min: number; max: number };
8360
+ /** Plot the formatting as a band/area */
8361
+ plotAsBand?: boolean;
8362
+ /** Highlight this row if the condition is met */
8363
+ isHighlightRow?: boolean;
8364
+ /** Type of comparison: value-based, column-based, or parameter-based */
8365
+ comparisonType?: ConditionalFormattingComparisonType | string;
8366
+ /** Column ID to apply the formatting to (left-hand side) */
8367
+ lhsColumnId?: string;
8368
+ /** Column name to compare against (right-hand side) */
8369
+ columnToCompare?: string;
8370
+ /** Parameter ID to compare against */
8371
+ comparisonParameterId?: string;
8372
+ /** Font properties to apply (color, bold, italic, etc.) */
8373
+ fontProperties?: FontProperties;
8374
+ /** Background format type: solid color or gradient */
8375
+ backgroundFormatType?: BackgroundFormatType | string;
8376
+ /** Solid background color attributes */
8377
+ solidBackgroundAttrs?: SolidBackgroundAttrs;
8378
+ /** Gradient background attributes */
8379
+ gradientBackgroundAttrs?: GradientBackgroundAttrs;
8380
+ }
8381
+
8382
+ /**
8383
+ * Conditional formatting configuration
8384
+ * @group Visual Overrides
8385
+ */
8386
+ export interface ConditionalFormatting {
8387
+ /** Array of conditional formatting rules */
8388
+ rows?: ConditionalFormattingRow[];
8389
+ }
8390
+
8391
+ /**
8392
+ * Color palette for charts
8393
+ * @group Visual Overrides
8394
+ */
8395
+ export interface ColorPalette {
8396
+ /** Array of color values (hex codes or color names) */
8397
+ colors?: string[];
8398
+ }
8399
+
8400
+ /**
8401
+ * Legend position options
8402
+ * @group Visual Overrides
8403
+ */
8404
+ export enum LegendPosition {
8405
+ /** Position legend at the top */
8406
+ Top = 'top',
8407
+ /** Position legend at the bottom */
8408
+ Bottom = 'bottom',
8409
+ /** Position legend on the left */
8410
+ Left = 'left',
8411
+ /** Position legend on the right */
8412
+ Right = 'right',
8413
+ }
8414
+
8415
+ /**
8416
+ * Table theme options
8417
+ * @group Visual Overrides
8418
+ */
8419
+ export enum TableTheme {
8420
+ /** Outline theme */
8421
+ Outline = 'OUTLINE',
8422
+ /** Row theme */
8423
+ Row = 'ROW',
8424
+ /** Zebra theme */
8425
+ Zebra = 'ZEBRA',
8426
+ }
8427
+
8428
+ /**
8429
+ * Table content density options
8430
+ * @group Visual Overrides
8431
+ */
8432
+ export enum TableContentDensity {
8433
+ /** Regular density */
8434
+ Regular = 'REGULAR',
8435
+ /** Compact density */
8436
+ Compact = 'COMPACT',
8437
+ }
8438
+
8439
+ /**
8440
+ * Chart legend configuration
8441
+ * @group Visual Overrides
8442
+ */
8443
+ export interface ChartLegend {
8444
+ /** Show or hide the legend */
8445
+ show?: boolean;
8446
+ /** Position of the legend */
8447
+ position?: LegendPosition | string;
8448
+ /** Color palette to use for legend colors */
8449
+ colorPalette?: ColorPalette;
8450
+ }
8451
+
8452
+ /**
8453
+ * Filter for data labels
8454
+ * @group Visual Overrides
8455
+ */
8456
+ export interface DataLabelFilter {
8457
+ /** Filter threshold value */
8458
+ value?: number;
8459
+ /** Filter operator */
8460
+ operator?: DataLabelFilterOperator | string;
8461
+ }
8462
+
8463
+ /**
8464
+ * Data label configuration for a specific column
8465
+ * @group Visual Overrides
8466
+ */
8467
+ export interface ColumnDataLabel {
8468
+ /** Column name to apply data label overrides to */
8469
+ name: string;
8470
+ /** Show or hide data labels for this column */
8471
+ visible?: boolean;
8472
+ /** Filter to apply to data labels */
8473
+ filter?: DataLabelFilter | null;
8474
+ }
8475
+
8476
+ /**
8477
+ * Chart data label configuration
8478
+ * @group Visual Overrides
8479
+ */
8480
+ export interface ChartDataLabel {
8481
+ /** Show labels for all data points */
8482
+ allLabels?: boolean;
8483
+ /** Show labels for stacked values */
8484
+ stackLabels?: boolean;
8485
+ /** Per-column data label configurations */
8486
+ columnDataLabel?: ColumnDataLabel[];
8487
+ }
8488
+
8489
+ /**
8490
+ * Chart summaries and totals configuration
8491
+ * @group Visual Overrides
8492
+ */
8493
+ export interface ChartSummaries {
8494
+ /** Show row totals */
8495
+ showRowTotals?: boolean;
8496
+ /** Show column totals */
8497
+ showColumnTotals?: boolean;
8498
+ /** Show row grand totals */
8499
+ showRowGrandTotals?: boolean;
8500
+ /** Show column grand totals */
8501
+ showColumnGrandTotals?: boolean;
8502
+ }
8503
+
8504
+ /**
8505
+ * Gridline configuration
8506
+ * @group Visual Overrides
8507
+ */
8508
+ export interface GridLine {
8509
+ /** Show vertical gridlines */
8510
+ x?: boolean;
8511
+ /** Show horizontal gridlines */
8512
+ y?: boolean;
8513
+ }
8514
+
8515
+ /**
8516
+ * Chart display configuration
8517
+ * @group Visual Overrides
8518
+ */
8519
+ export interface ChartDisplay {
8520
+ /** Summary and totals configuration */
8521
+ summaries?: ChartSummaries;
8522
+ /** Show regression line on chart */
8523
+ regressionLine?: boolean;
8524
+ /** Gridline visibility configuration */
8525
+ gridLine?: GridLine;
8526
+ }
8527
+
8528
+ /**
8529
+ * Y-axis range configuration
8530
+ * @group Visual Overrides
8531
+ */
8532
+ export interface YAxisRange {
8533
+ /** Minimum value for Y-axis */
8534
+ min?: number;
8535
+ /** Maximum value for Y-axis */
8536
+ max?: number;
8537
+ }
8538
+
8539
+ /**
8540
+ * Chart axis configuration
8541
+ * @group Visual Overrides
8542
+ */
8543
+ export interface ChartAxis {
8544
+ /** Column names to link to this axis */
8545
+ linkedColumns?: string[];
8546
+ /** Show the axis name */
8547
+ showName?: boolean;
8548
+ /** Show the axis label values */
8549
+ showLabelValue?: boolean;
8550
+ /** Y-axis range configuration */
8551
+ yAxisRange?: YAxisRange;
8552
+ }
8553
+
8554
+ /**
8555
+ * Chart column override configuration
8556
+ * @group Visual Overrides
8557
+ */
8558
+ export interface ChartColumn {
8559
+ /** Column name to apply overrides to */
8560
+ name: string;
8561
+ /** Color for the column (hex code) */
8562
+ color?: string;
8563
+ /** Conditional formatting rules to apply to the column */
8564
+ conditionalFormatting?: ConditionalFormatting;
8565
+ }
8566
+
8567
+ /**
8568
+ * Chart visualization overrides
8569
+ * @group Visual Overrides
8570
+ */
8571
+ export interface ChartOverrides {
8572
+ /** Legend configuration */
8573
+ legend?: ChartLegend;
8574
+ /** Data label configuration */
8575
+ dataLabel?: ChartDataLabel;
8576
+ /** Display properties (summaries, regression line, gridlines) */
8577
+ display?: ChartDisplay;
8578
+ /** Per-axis configurations */
8579
+ axis?: ChartAxis[];
8580
+ /** Per-column configurations */
8581
+ columns?: ChartColumn[];
8582
+ /** Update mask paths for partial updates */
8583
+ updateMaskPaths?: string[];
8584
+ }
8585
+
8586
+ /**
8587
+ * Table column override configuration
8588
+ * @group Visual Overrides
8589
+ */
8590
+ export interface TableColumn {
8591
+ /**
8592
+ * Name of the column to apply overrides to
8593
+ */
8594
+ name: string;
8595
+ /**
8596
+ * Enable or disable text wrapping for the column
8597
+ */
8598
+ wrapText?: boolean;
8599
+ /**
8600
+ * Show or hide the column
8601
+ */
8602
+ show?: boolean;
8603
+ /**
8604
+ * Conditional formatting rules to apply to the column
8605
+ */
8606
+ conditionalFormatting?: ConditionalFormatting;
8607
+ }
8608
+
8609
+ /**
8610
+ * Table display configuration
8611
+ * @group Visual Overrides
8612
+ */
8613
+ export interface TableDisplay {
8614
+ /** Table theme */
8615
+ tableTheme?: TableTheme | string;
8616
+ /** Table content density */
8617
+ tableContentDensity?: TableContentDensity | string;
8618
+ }
8619
+
8620
+ /**
8621
+ * Column summary visibility configuration
8622
+ * @group Visual Overrides
8623
+ */
8624
+ export interface ColumnSummaryVisibility {
8625
+ /** Column ID to control summary visibility for */
8626
+ columnId: string;
8627
+ /** Show or hide summary for this column */
8628
+ visible: boolean;
8629
+ }
8630
+
8631
+ /**
8632
+ * Display summary configuration
8633
+ * @group Visual Overrides
8634
+ */
8635
+ export interface DisplaySummaryConfig {
8636
+ /** Show all column summaries by default */
8637
+ showAllSummaries?: boolean;
8638
+ /** Per-column summary visibility overrides */
8639
+ columnVisibility?: ColumnSummaryVisibility[];
8640
+ }
8641
+
8642
+ /**
8643
+ * Table visualization overrides
8644
+ * @group Visual Overrides
8645
+ */
8646
+ export interface TableOverrides {
8647
+ /** Per-column configurations (properties, conditional formatting) */
8648
+ columns?: TableColumn[];
8649
+ /** Table display properties (theme, density) */
8650
+ display?: TableDisplay;
8651
+ /** Summary/headline column visibility configuration */
8652
+ displaySummaryConfig?: DisplaySummaryConfig;
8653
+ /** Update mask paths for partial updates */
8654
+ updateMaskPaths?: string[];
8655
+ }
8656
+
8657
+ /**
8658
+ * Visualization overrides to customize chart and table rendering
8659
+ * within embedded ThoughtSpot components.
8660
+ *
8661
+ * @group Visual Overrides
8662
+ * @example
8663
+ * ```js
8664
+ * const embed = new AppEmbed('#tsEmbed', {
8665
+ * visualOverrides: {
8666
+ * chart: {
8667
+ * legend: { show: true, position: 'bottom' },
8668
+ * columns: [{ name: 'Revenue', color: '#1f77b4' }],
8669
+ * },
8670
+ * table: {
8671
+ * display: { tableTheme: 'ZEBRA', tableContentDensity: 'COMPACT' },
8672
+ * },
8673
+ * },
8674
+ * });
8675
+ * ```
8676
+ */
8677
+ export interface VisualizationOverrides {
8678
+ /** Chart visualization overrides */
8679
+ chart?: ChartOverrides;
8680
+ /** Table visualization overrides */
8681
+ table?: TableOverrides;
8682
+ }