@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
@@ -771,6 +771,7 @@ export class TsEmbed {
771
771
  insertInToSlide,
772
772
  disableRedirectionLinksInNewTab,
773
773
  overrideOrgId,
774
+ overrideHistoryState,
774
775
  exposeTranslationIDs,
775
776
  primaryAction,
776
777
  } = this.viewConfig;
@@ -869,6 +870,9 @@ export class TsEmbed {
869
870
  if (overrideOrgId !== undefined) {
870
871
  queryParams[Param.OverrideOrgId] = overrideOrgId;
871
872
  }
873
+ if (overrideHistoryState !== undefined) {
874
+ queryParams[Param.OverrideHistoryState] = overrideHistoryState;
875
+ }
872
876
 
873
877
  if (this.isPreAuthCacheEnabled()) {
874
878
  queryParams[Param.preAuthCache] = true;
@@ -1706,6 +1710,9 @@ export class TsEmbed {
1706
1710
  * @param args
1707
1711
  */
1708
1712
  public async render(): Promise<TsEmbed> {
1713
+ uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_RENDER_CALLED, {
1714
+ embedComponentType: this.viewConfig.embedComponentType,
1715
+ });
1709
1716
  if (!getIsInitCalled()) {
1710
1717
  logger.error(ERROR_MESSAGE.RENDER_CALLED_BEFORE_INIT);
1711
1718
  }
@@ -1786,6 +1793,10 @@ export class TsEmbed {
1786
1793
  showPreRenderByDefault = false,
1787
1794
  replaceExistingPreRender = false,
1788
1795
  ): Promise<TsEmbed> {
1796
+ uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_PRE_RENDER, {
1797
+ showPreRenderByDefault,
1798
+ replaceExistingPreRender,
1799
+ });
1789
1800
  if (!this.viewConfig.preRenderId) {
1790
1801
  logger.error(ERROR_MESSAGE.PRERENDER_ID_MISSING);
1791
1802
  return this;
@@ -1974,8 +1985,14 @@ export class TsEmbed {
1974
1985
  * wrapper to overlay it.
1975
1986
  */
1976
1987
  public async showPreRender(): Promise<TsEmbed> {
1988
+ uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_SHOW_PRE_RENDER, {
1989
+ preRenderId: this.viewConfig.preRenderId,
1990
+ embedComponentType: this.viewConfig.embedComponentType,
1991
+ });
1992
+
1977
1993
  if (this.shouldWaitForRenderPromise) await this.isReadyForRenderPromise;
1978
1994
 
1995
+
1979
1996
  if (!this.viewConfig.preRenderId) {
1980
1997
  logger.error(ERROR_MESSAGE.PRERENDER_ID_MISSING);
1981
1998
  return this;
@@ -1999,10 +2016,14 @@ export class TsEmbed {
1999
2016
  }
2000
2017
 
2001
2018
  const placeHolderId = this.getPreRenderIds().placeHolder;
2002
- const oldEle = this.hostElement.querySelector(`#${placeHolderId}`);
2003
- if (oldEle) {
2004
- this.hostElement.removeChild(oldEle);
2005
- }
2019
+ // Remove any stale placeholder from a previous cycle. It is located
2020
+ // via a subtree-wide querySelector, so it may be nested deeper than a
2021
+ // direct child (E.g.: with fullHeight the host app can wrap it). Use
2022
+ // Element.remove() — which detaches from whatever the real parent is —
2023
+ // rather than hostElement.removeChild(), which throws NotFoundError
2024
+ // when the match is not a direct child. Mirrors the wrapper/child
2025
+ // cleanup in createPreRenderWrapper()/createPreRenderChild().
2026
+ this.hostElement.querySelector(`#${placeHolderId}`)?.remove();
2006
2027
 
2007
2028
  this.hostElement.appendChild(this.insertedDomEl);
2008
2029
 
@@ -2090,6 +2111,11 @@ export class TsEmbed {
2090
2111
  * If the component is not preRendered, it issues a warning.
2091
2112
  */
2092
2113
  public hidePreRender(): void {
2114
+ uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_HIDE_PRE_RENDER, {
2115
+ preRenderId: this.viewConfig.preRenderId,
2116
+ embedComponentType: this.viewConfig.embedComponentType,
2117
+ });
2118
+
2093
2119
  logger.debug('HidePreRender Called');
2094
2120
  if (!this.isPreRenderConnected()) {
2095
2121
  // if the embed component is not preRendered , nothing to hide
package/src/errors.ts CHANGED
@@ -31,6 +31,7 @@ export const ERROR_MESSAGE = {
31
31
  INVALID_SPOTTER_DOCUMENTATION_URL: 'Invalid spotterDocumentationUrl. Please provide a valid http or https URL.',
32
32
  UPDATEFILTERS_INVALID_PAYLOAD: 'UpdateFilters requires a valid filter or filters array. Expected: { filter: { column, oper, values } } or { filters: [{ column, oper, values }, ...] }',
33
33
  DRILLDOWN_INVALID_PAYLOAD: 'DrillDown requires a valid points object. Expected: { points: { clickedPoint?, selectedPoints? }, autoDrillDown?, vizId? }',
34
+ UPDATEPARAMETERS_INVALID_PAYLOAD: 'UpdateParameters received an invalid applicability. Expected: { level: LIVEBOARD | TAB | GROUP, targetId } where targetId is required for TAB and GROUP levels',
34
35
  };
35
36
 
36
37
  export const CUSTOM_ACTIONS_ERROR_MESSAGE = {
package/src/index.ts CHANGED
@@ -32,7 +32,7 @@ import { PinboardEmbed, LiveboardViewConfig, LiveboardEmbed } from './embed/live
32
32
  import { SearchEmbed, SearchViewConfig } from './embed/search';
33
33
  import { SearchBarEmbed, SearchBarViewConfig } from './embed/search-bar';
34
34
  import { SpotterAgentEmbed, SpotterAgentEmbedViewConfig, BodylessConversation, BodylessConversationViewConfig} from './embed/bodyless-conversation';
35
- import { SpotterEmbed, SpotterEmbedViewConfig, SpotterChatViewConfig, SpotterSidebarViewConfig, ConversationEmbed, ConversationViewConfig } from './embed/conversation';
35
+ import { SpotterEmbed, SpotterEmbedViewConfig, SpotterChatViewConfig, SpotterSidebarViewConfig, SpotterQueryMode, SpotterShareConversationConfig, ConversationEmbed, ConversationViewConfig } from './embed/conversation';
36
36
  import { SpotterVizConfig, SpotterVizStarterPrompt, SpotterVizLoaderTip } from './embed/spotter-viz-utils';
37
37
  import {
38
38
  AuthFailureType, AuthStatus, AuthEvent, AuthEventEmitter,
@@ -117,6 +117,8 @@ export {
117
117
  SpotterEmbedViewConfig,
118
118
  SpotterChatViewConfig,
119
119
  SpotterSidebarViewConfig,
120
+ SpotterQueryMode,
121
+ SpotterShareConversationConfig,
120
122
  ConversationViewConfig,
121
123
  ConversationEmbed,
122
124
  AuthFailureType,
@@ -26,6 +26,10 @@ export const MIXPANEL_EVENT = {
26
26
  VISUAL_SDK_IFRAME_LOAD_PERFORMANCE: 'visual-sdk-iframe-load-performance',
27
27
  VISUAL_SDK_EMBED_CREATE: 'visual-sdk-embed-create',
28
28
  VERCEL_INTEGRATION_COMPLETED: 'vercel-integration-completed',
29
+ VISUAL_SDK_RENDER_CALLED: 'visual-sdk-render-called',
30
+ VISUAL_SDK_PRE_RENDER: 'visual-sdk-pre-render',
31
+ VISUAL_SDK_SHOW_PRE_RENDER: 'visual-sdk-show-pre-render',
32
+ VISUAL_SDK_HIDE_PRE_RENDER: 'visual-sdk-hide-pre-render',
29
33
  };
30
34
 
31
35
  let isMixpanelInitialized = false;
@@ -84,5 +84,260 @@ describe('React util functions', () => {
84
84
  [EmbedEvent.QueryChanged]: onQueryChanged,
85
85
  });
86
86
  });
87
+
88
+ test('all onX props map to their correct EmbedEvent listener keys', () => {
89
+ const onDrilldown: MessageCallback = jest.fn();
90
+ const onDataSourceSelected: MessageCallback = jest.fn();
91
+ const onAddRemoveColumns: MessageCallback = jest.fn();
92
+ const onVizPointDoubleClick: MessageCallback = jest.fn();
93
+ const onVizPointClick: MessageCallback = jest.fn();
94
+ const onAlert: MessageCallback = jest.fn();
95
+ const onGetDataClick: MessageCallback = jest.fn();
96
+ const onDialogClose: MessageCallback = jest.fn();
97
+ const onDownload: MessageCallback = jest.fn();
98
+ const onDownloadAsPng: MessageCallback = jest.fn();
99
+ const onDownloadAsPdf: MessageCallback = jest.fn();
100
+ const onDownloadAsCsv: MessageCallback = jest.fn();
101
+ const onDownloadAsXlsx: MessageCallback = jest.fn();
102
+ const onDownloadLiveboardAsContinuousPDF: MessageCallback = jest.fn();
103
+ const onAnswerDelete: MessageCallback = jest.fn();
104
+ const onAIHighlights: MessageCallback = jest.fn();
105
+ const onPin: MessageCallback = jest.fn();
106
+ const onSpotIQAnalyze: MessageCallback = jest.fn();
107
+ const onShare: MessageCallback = jest.fn();
108
+ const onDrillInclude: MessageCallback = jest.fn();
109
+ const onDrillExclude: MessageCallback = jest.fn();
110
+ const onCopyToClipboard: MessageCallback = jest.fn();
111
+ const onUpdateTML: MessageCallback = jest.fn();
112
+ const onEditTML: MessageCallback = jest.fn();
113
+ const onExportTML: MessageCallback = jest.fn();
114
+ const onSaveAsView: MessageCallback = jest.fn();
115
+ const onCopyAEdit: MessageCallback = jest.fn();
116
+ const onShowUnderlyingData: MessageCallback = jest.fn();
117
+ const onAnswerChartSwitcher: MessageCallback = jest.fn();
118
+ const onLiveboardInfo: MessageCallback = jest.fn();
119
+ const onAddToFavorites: MessageCallback = jest.fn();
120
+ const onSchedule: MessageCallback = jest.fn();
121
+ const onEdit: MessageCallback = jest.fn();
122
+ const onMakeACopy: MessageCallback = jest.fn();
123
+ const onPresent: MessageCallback = jest.fn();
124
+ const onDelete: MessageCallback = jest.fn();
125
+ const onSchedulesList: MessageCallback = jest.fn();
126
+ const onCancel: MessageCallback = jest.fn();
127
+ const onExplore: MessageCallback = jest.fn();
128
+ const onCopyLink: MessageCallback = jest.fn();
129
+ const onCrossFilterChanged: MessageCallback = jest.fn();
130
+ const onVizPointRightClick: MessageCallback = jest.fn();
131
+ const onInsertIntoSlide: MessageCallback = jest.fn();
132
+ const onFilterChanged: MessageCallback = jest.fn();
133
+ const onUpdateConnection: MessageCallback = jest.fn();
134
+ const onCreateConnection: MessageCallback = jest.fn();
135
+ const onResetLiveboard: MessageCallback = jest.fn();
136
+ const onChangePersonalizedView: MessageCallback = jest.fn();
137
+ const onCreateWorksheet: MessageCallback = jest.fn();
138
+ const onAskSageInit: MessageCallback = jest.fn();
139
+ const onRename: MessageCallback = jest.fn();
140
+ const onParameterChanged: MessageCallback = jest.fn();
141
+ const onTableVizRendered: MessageCallback = jest.fn();
142
+ const onCreateLiveboard: MessageCallback = jest.fn();
143
+ const onCreateModel: MessageCallback = jest.fn();
144
+ const onSpotterData: MessageCallback = jest.fn();
145
+ const onPreviewSpotterData: MessageCallback = jest.fn();
146
+ const onAddToCoaching: MessageCallback = jest.fn();
147
+ const onDataModelInstructions: MessageCallback = jest.fn();
148
+ const onSpotterQueryTriggered: MessageCallback = jest.fn();
149
+ const onLastPromptEdited: MessageCallback = jest.fn();
150
+ const onLastPromptDeleted: MessageCallback = jest.fn();
151
+ const onResetSpotterConversation: MessageCallback = jest.fn();
152
+ const onSpotterInit: MessageCallback = jest.fn();
153
+ const onSpotterLoadComplete: MessageCallback = jest.fn();
154
+ const onOrgSwitched: MessageCallback = jest.fn();
155
+ const onSpotterConversationRenamed: MessageCallback = jest.fn();
156
+ const onSpotterConversationDeleted: MessageCallback = jest.fn();
157
+ const onSpotterConversationSelected: MessageCallback = jest.fn();
158
+ const onEmbedPageContextChanged: MessageCallback = jest.fn();
159
+ const onSubscribed: MessageCallback = jest.fn();
160
+ const onSendTestScheduleEmail: MessageCallback = jest.fn();
161
+ const onSpotterVizInit: MessageCallback = jest.fn();
162
+ const onSpotterVizQueryTriggered: MessageCallback = jest.fn();
163
+ const onSpotterVizResponseComplete: MessageCallback = jest.fn();
164
+ const onSpotterVizCheckpointCreated: MessageCallback = jest.fn();
165
+ const onSpotterVizCheckpointRestored: MessageCallback = jest.fn();
166
+ const onSpotterVizError: MessageCallback = jest.fn();
167
+ const onSpotterVizClosed: MessageCallback = jest.fn();
168
+ const onRefreshLiveboardBrowserCache: MessageCallback = jest.fn();
169
+ const onV1Data: MessageCallback = jest.fn();
170
+
171
+ const props = {
172
+ onDrilldown,
173
+ onDataSourceSelected,
174
+ onAddRemoveColumns,
175
+ onVizPointDoubleClick,
176
+ onVizPointClick,
177
+ onAlert,
178
+ onGetDataClick,
179
+ onDialogClose,
180
+ onDownload,
181
+ onDownloadAsPng,
182
+ onDownloadAsPdf,
183
+ onDownloadAsCsv,
184
+ onDownloadAsXlsx,
185
+ onDownloadLiveboardAsContinuousPDF,
186
+ onAnswerDelete,
187
+ onAIHighlights,
188
+ onPin,
189
+ onSpotIQAnalyze,
190
+ onShare,
191
+ onDrillInclude,
192
+ onDrillExclude,
193
+ onCopyToClipboard,
194
+ onUpdateTML,
195
+ onEditTML,
196
+ onExportTML,
197
+ onSaveAsView,
198
+ onCopyAEdit,
199
+ onShowUnderlyingData,
200
+ onAnswerChartSwitcher,
201
+ onLiveboardInfo,
202
+ onAddToFavorites,
203
+ onSchedule,
204
+ onEdit,
205
+ onMakeACopy,
206
+ onPresent,
207
+ onDelete,
208
+ onSchedulesList,
209
+ onCancel,
210
+ onExplore,
211
+ onCopyLink,
212
+ onCrossFilterChanged,
213
+ onVizPointRightClick,
214
+ onInsertIntoSlide,
215
+ onFilterChanged,
216
+ onUpdateConnection,
217
+ onCreateConnection,
218
+ onResetLiveboard,
219
+ onChangePersonalizedView,
220
+ onCreateWorksheet,
221
+ onAskSageInit,
222
+ onRename,
223
+ onParameterChanged,
224
+ onTableVizRendered,
225
+ onCreateLiveboard,
226
+ onCreateModel,
227
+ onSpotterData,
228
+ onPreviewSpotterData,
229
+ onAddToCoaching,
230
+ onDataModelInstructions,
231
+ onSpotterQueryTriggered,
232
+ onLastPromptEdited,
233
+ onLastPromptDeleted,
234
+ onResetSpotterConversation,
235
+ onSpotterInit,
236
+ onSpotterLoadComplete,
237
+ onOrgSwitched,
238
+ onSpotterConversationRenamed,
239
+ onSpotterConversationDeleted,
240
+ onSpotterConversationSelected,
241
+ onEmbedPageContextChanged,
242
+ onSubscribed,
243
+ onSendTestScheduleEmail,
244
+ onSpotterVizInit,
245
+ onSpotterVizQueryTriggered,
246
+ onSpotterVizResponseComplete,
247
+ onSpotterVizCheckpointCreated,
248
+ onSpotterVizCheckpointRestored,
249
+ onSpotterVizError,
250
+ onSpotterVizClosed,
251
+ onRefreshLiveboardBrowserCache,
252
+ onV1Data,
253
+ };
254
+
255
+ const result = getViewPropsAndListeners(props);
256
+
257
+ expect(result.viewConfig).toEqual({});
258
+ expect(result.listeners).toEqual({
259
+ [EmbedEvent.Drilldown]: onDrilldown,
260
+ [EmbedEvent.DataSourceSelected]: onDataSourceSelected,
261
+ [EmbedEvent.AddRemoveColumns]: onAddRemoveColumns,
262
+ [EmbedEvent.VizPointDoubleClick]: onVizPointDoubleClick,
263
+ [EmbedEvent.VizPointClick]: onVizPointClick,
264
+ [EmbedEvent.Alert]: onAlert,
265
+ [EmbedEvent.GetDataClick]: onGetDataClick,
266
+ [EmbedEvent.DialogClose]: onDialogClose,
267
+ [EmbedEvent.Download]: onDownload,
268
+ [EmbedEvent.DownloadAsPng]: onDownloadAsPng,
269
+ [EmbedEvent.DownloadAsPdf]: onDownloadAsPdf,
270
+ [EmbedEvent.DownloadAsCsv]: onDownloadAsCsv,
271
+ [EmbedEvent.DownloadAsXlsx]: onDownloadAsXlsx,
272
+ [EmbedEvent.DownloadLiveboardAsContinuousPDF]: onDownloadLiveboardAsContinuousPDF,
273
+ [EmbedEvent.AnswerDelete]: onAnswerDelete,
274
+ [EmbedEvent.AIHighlights]: onAIHighlights,
275
+ [EmbedEvent.Pin]: onPin,
276
+ [EmbedEvent.SpotIQAnalyze]: onSpotIQAnalyze,
277
+ [EmbedEvent.Share]: onShare,
278
+ [EmbedEvent.DrillInclude]: onDrillInclude,
279
+ [EmbedEvent.DrillExclude]: onDrillExclude,
280
+ [EmbedEvent.CopyToClipboard]: onCopyToClipboard,
281
+ [EmbedEvent.UpdateTML]: onUpdateTML,
282
+ [EmbedEvent.EditTML]: onEditTML,
283
+ [EmbedEvent.ExportTML]: onExportTML,
284
+ [EmbedEvent.SaveAsView]: onSaveAsView,
285
+ [EmbedEvent.CopyAEdit]: onCopyAEdit,
286
+ [EmbedEvent.ShowUnderlyingData]: onShowUnderlyingData,
287
+ [EmbedEvent.AnswerChartSwitcher]: onAnswerChartSwitcher,
288
+ [EmbedEvent.LiveboardInfo]: onLiveboardInfo,
289
+ [EmbedEvent.AddToFavorites]: onAddToFavorites,
290
+ [EmbedEvent.Schedule]: onSchedule,
291
+ [EmbedEvent.Edit]: onEdit,
292
+ [EmbedEvent.MakeACopy]: onMakeACopy,
293
+ [EmbedEvent.Present]: onPresent,
294
+ [EmbedEvent.Delete]: onDelete,
295
+ [EmbedEvent.SchedulesList]: onSchedulesList,
296
+ [EmbedEvent.Cancel]: onCancel,
297
+ [EmbedEvent.Explore]: onExplore,
298
+ [EmbedEvent.CopyLink]: onCopyLink,
299
+ [EmbedEvent.CrossFilterChanged]: onCrossFilterChanged,
300
+ [EmbedEvent.VizPointRightClick]: onVizPointRightClick,
301
+ [EmbedEvent.InsertIntoSlide]: onInsertIntoSlide,
302
+ [EmbedEvent.FilterChanged]: onFilterChanged,
303
+ [EmbedEvent.UpdateConnection]: onUpdateConnection,
304
+ [EmbedEvent.CreateConnection]: onCreateConnection,
305
+ [EmbedEvent.ResetLiveboard]: onResetLiveboard,
306
+ [EmbedEvent.ChangePersonalizedView]: onChangePersonalizedView,
307
+ [EmbedEvent.CreateWorksheet]: onCreateWorksheet,
308
+ [EmbedEvent.AskSageInit]: onAskSageInit,
309
+ [EmbedEvent.Rename]: onRename,
310
+ [EmbedEvent.ParameterChanged]: onParameterChanged,
311
+ [EmbedEvent.TableVizRendered]: onTableVizRendered,
312
+ [EmbedEvent.CreateLiveboard]: onCreateLiveboard,
313
+ [EmbedEvent.CreateModel]: onCreateModel,
314
+ [EmbedEvent.SpotterData]: onSpotterData,
315
+ [EmbedEvent.PreviewSpotterData]: onPreviewSpotterData,
316
+ [EmbedEvent.AddToCoaching]: onAddToCoaching,
317
+ [EmbedEvent.DataModelInstructions]: onDataModelInstructions,
318
+ [EmbedEvent.SpotterQueryTriggered]: onSpotterQueryTriggered,
319
+ [EmbedEvent.LastPromptEdited]: onLastPromptEdited,
320
+ [EmbedEvent.LastPromptDeleted]: onLastPromptDeleted,
321
+ [EmbedEvent.ResetSpotterConversation]: onResetSpotterConversation,
322
+ [EmbedEvent.SpotterInit]: onSpotterInit,
323
+ [EmbedEvent.SpotterLoadComplete]: onSpotterLoadComplete,
324
+ [EmbedEvent.OrgSwitched]: onOrgSwitched,
325
+ [EmbedEvent.SpotterConversationRenamed]: onSpotterConversationRenamed,
326
+ [EmbedEvent.SpotterConversationDeleted]: onSpotterConversationDeleted,
327
+ [EmbedEvent.SpotterConversationSelected]: onSpotterConversationSelected,
328
+ [EmbedEvent.EmbedPageContextChanged]: onEmbedPageContextChanged,
329
+ [EmbedEvent.Subscribed]: onSubscribed,
330
+ [EmbedEvent.SendTestScheduleEmail]: onSendTestScheduleEmail,
331
+ [EmbedEvent.SpotterVizInit]: onSpotterVizInit,
332
+ [EmbedEvent.SpotterVizQueryTriggered]: onSpotterVizQueryTriggered,
333
+ [EmbedEvent.SpotterVizResponseComplete]: onSpotterVizResponseComplete,
334
+ [EmbedEvent.SpotterVizCheckpointCreated]: onSpotterVizCheckpointCreated,
335
+ [EmbedEvent.SpotterVizCheckpointRestored]: onSpotterVizCheckpointRestored,
336
+ [EmbedEvent.SpotterVizError]: onSpotterVizError,
337
+ [EmbedEvent.SpotterVizClosed]: onSpotterVizClosed,
338
+ [EmbedEvent.RefreshLiveboardBrowserCache]: onRefreshLiveboardBrowserCache,
339
+ [EmbedEvent.V1Data]: onV1Data,
340
+ });
341
+ });
87
342
  });
88
343
  });