@thoughtspot/visual-embed-sdk 1.46.4 → 1.46.5

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 (255) hide show
  1. package/cjs/package.json +3 -3
  2. package/cjs/src/auth.d.ts +2 -1
  3. package/cjs/src/auth.d.ts.map +1 -1
  4. package/cjs/src/auth.js +2 -1
  5. package/cjs/src/auth.js.map +1 -1
  6. package/cjs/src/authToken.d.ts.map +1 -1
  7. package/cjs/src/authToken.js.map +1 -1
  8. package/cjs/src/css-variables.d.ts +87 -17
  9. package/cjs/src/css-variables.d.ts.map +1 -1
  10. package/cjs/src/embed/app.d.ts +41 -1
  11. package/cjs/src/embed/app.d.ts.map +1 -1
  12. package/cjs/src/embed/app.js +25 -36
  13. package/cjs/src/embed/app.js.map +1 -1
  14. package/cjs/src/embed/app.spec.js +35 -23
  15. package/cjs/src/embed/app.spec.js.map +1 -1
  16. package/cjs/src/embed/base.d.ts.map +1 -1
  17. package/cjs/src/embed/base.js.map +1 -1
  18. package/cjs/src/embed/base.spec.js.map +1 -1
  19. package/cjs/src/embed/conversation.d.ts +23 -1
  20. package/cjs/src/embed/conversation.d.ts.map +1 -1
  21. package/cjs/src/embed/conversation.js +18 -33
  22. package/cjs/src/embed/conversation.js.map +1 -1
  23. package/cjs/src/embed/conversation.spec.js +129 -97
  24. package/cjs/src/embed/conversation.spec.js.map +1 -1
  25. package/cjs/src/embed/events.spec.js +72 -0
  26. package/cjs/src/embed/events.spec.js.map +1 -1
  27. package/cjs/src/embed/hostEventClient/contracts.d.ts +105 -3
  28. package/cjs/src/embed/hostEventClient/contracts.d.ts.map +1 -1
  29. package/cjs/src/embed/hostEventClient/contracts.js +9 -0
  30. package/cjs/src/embed/hostEventClient/contracts.js.map +1 -1
  31. package/cjs/src/embed/hostEventClient/host-event-client.d.ts +28 -0
  32. package/cjs/src/embed/hostEventClient/host-event-client.d.ts.map +1 -1
  33. package/cjs/src/embed/hostEventClient/host-event-client.js +106 -9
  34. package/cjs/src/embed/hostEventClient/host-event-client.js.map +1 -1
  35. package/cjs/src/embed/hostEventClient/host-event-client.spec.js +327 -6
  36. package/cjs/src/embed/hostEventClient/host-event-client.spec.js.map +1 -1
  37. package/cjs/src/embed/hostEventClient/utils.d.ts +22 -0
  38. package/cjs/src/embed/hostEventClient/utils.d.ts.map +1 -0
  39. package/cjs/src/embed/hostEventClient/utils.js +51 -0
  40. package/cjs/src/embed/hostEventClient/utils.js.map +1 -0
  41. package/cjs/src/embed/hostEventClient/utils.spec.d.ts +2 -0
  42. package/cjs/src/embed/hostEventClient/utils.spec.d.ts.map +1 -0
  43. package/cjs/src/embed/hostEventClient/utils.spec.js +115 -0
  44. package/cjs/src/embed/hostEventClient/utils.spec.js.map +1 -0
  45. package/cjs/src/embed/liveboard.d.ts +18 -0
  46. package/cjs/src/embed/liveboard.d.ts.map +1 -1
  47. package/cjs/src/embed/liveboard.js +10 -3
  48. package/cjs/src/embed/liveboard.js.map +1 -1
  49. package/cjs/src/embed/liveboard.spec.js +54 -2
  50. package/cjs/src/embed/liveboard.spec.js.map +1 -1
  51. package/cjs/src/embed/sage.d.ts.map +1 -1
  52. package/cjs/src/embed/sage.js.map +1 -1
  53. package/cjs/src/embed/search.spec.js.map +1 -1
  54. package/cjs/src/embed/spotter-utils.d.ts +20 -0
  55. package/cjs/src/embed/spotter-utils.d.ts.map +1 -0
  56. package/cjs/src/embed/spotter-utils.js +52 -0
  57. package/cjs/src/embed/spotter-utils.js.map +1 -0
  58. package/cjs/src/embed/spotter-utils.spec.d.ts +2 -0
  59. package/cjs/src/embed/spotter-utils.spec.d.ts.map +1 -0
  60. package/cjs/src/embed/spotter-utils.spec.js +54 -0
  61. package/cjs/src/embed/spotter-utils.spec.js.map +1 -0
  62. package/cjs/src/embed/ts-embed.d.ts +41 -2
  63. package/cjs/src/embed/ts-embed.d.ts.map +1 -1
  64. package/cjs/src/embed/ts-embed.js +54 -3
  65. package/cjs/src/embed/ts-embed.js.map +1 -1
  66. package/cjs/src/errors.d.ts +2 -0
  67. package/cjs/src/errors.d.ts.map +1 -1
  68. package/cjs/src/errors.js +2 -0
  69. package/cjs/src/errors.js.map +1 -1
  70. package/cjs/src/react/index.d.ts.map +1 -1
  71. package/cjs/src/react/index.js +58 -53
  72. package/cjs/src/react/index.js.map +1 -1
  73. package/cjs/src/types.d.ts +832 -33
  74. package/cjs/src/types.d.ts.map +1 -1
  75. package/cjs/src/types.js +835 -3
  76. package/cjs/src/types.js.map +1 -1
  77. package/cjs/src/utils/graphql/answerService/answerService.d.ts +4 -2
  78. package/cjs/src/utils/graphql/answerService/answerService.d.ts.map +1 -1
  79. package/cjs/src/utils/graphql/answerService/answerService.js +4 -2
  80. package/cjs/src/utils/graphql/answerService/answerService.js.map +1 -1
  81. package/cjs/src/utils/graphql/preview-service.d.ts.map +1 -1
  82. package/cjs/src/utils/graphql/preview-service.js.map +1 -1
  83. package/cjs/src/utils/processData.d.ts.map +1 -1
  84. package/cjs/src/utils/processData.js.map +1 -1
  85. package/cjs/src/utils.d.ts +0 -9
  86. package/cjs/src/utils.d.ts.map +1 -1
  87. package/cjs/src/utils.js +1 -10
  88. package/cjs/src/utils.js.map +1 -1
  89. package/dist/index-ChNydfIz.js +7371 -0
  90. package/dist/index-DW2wEHqy.js +7371 -0
  91. package/dist/src/auth.d.ts +2 -1
  92. package/dist/src/auth.d.ts.map +1 -1
  93. package/dist/src/authToken.d.ts.map +1 -1
  94. package/dist/src/css-variables.d.ts +87 -17
  95. package/dist/src/css-variables.d.ts.map +1 -1
  96. package/dist/src/embed/app.d.ts +41 -1
  97. package/dist/src/embed/app.d.ts.map +1 -1
  98. package/dist/src/embed/base.d.ts.map +1 -1
  99. package/dist/src/embed/conversation.d.ts +23 -1
  100. package/dist/src/embed/conversation.d.ts.map +1 -1
  101. package/dist/src/embed/hostEventClient/contracts.d.ts +105 -3
  102. package/dist/src/embed/hostEventClient/contracts.d.ts.map +1 -1
  103. package/dist/src/embed/hostEventClient/host-event-client.d.ts +28 -0
  104. package/dist/src/embed/hostEventClient/host-event-client.d.ts.map +1 -1
  105. package/dist/src/embed/hostEventClient/utils.d.ts +22 -0
  106. package/dist/src/embed/hostEventClient/utils.d.ts.map +1 -0
  107. package/dist/src/embed/hostEventClient/utils.spec.d.ts +2 -0
  108. package/dist/src/embed/hostEventClient/utils.spec.d.ts.map +1 -0
  109. package/dist/src/embed/liveboard.d.ts +18 -0
  110. package/dist/src/embed/liveboard.d.ts.map +1 -1
  111. package/dist/src/embed/sage.d.ts.map +1 -1
  112. package/dist/src/embed/spotter-utils.d.ts +20 -0
  113. package/dist/src/embed/spotter-utils.d.ts.map +1 -0
  114. package/dist/src/embed/spotter-utils.spec.d.ts +2 -0
  115. package/dist/src/embed/spotter-utils.spec.d.ts.map +1 -0
  116. package/dist/src/embed/ts-embed.d.ts +41 -2
  117. package/dist/src/embed/ts-embed.d.ts.map +1 -1
  118. package/dist/src/errors.d.ts +2 -0
  119. package/dist/src/errors.d.ts.map +1 -1
  120. package/dist/src/react/index.d.ts.map +1 -1
  121. package/dist/src/types.d.ts +832 -33
  122. package/dist/src/types.d.ts.map +1 -1
  123. package/dist/src/utils/graphql/answerService/answerService.d.ts +4 -2
  124. package/dist/src/utils/graphql/answerService/answerService.d.ts.map +1 -1
  125. package/dist/src/utils/graphql/preview-service.d.ts.map +1 -1
  126. package/dist/src/utils/processData.d.ts.map +1 -1
  127. package/dist/src/utils.d.ts +0 -9
  128. package/dist/src/utils.d.ts.map +1 -1
  129. package/dist/tsembed-react.es.js +1208 -154
  130. package/dist/tsembed-react.js +1206 -152
  131. package/dist/tsembed.es.js +1150 -101
  132. package/dist/tsembed.js +1148 -99
  133. package/dist/visual-embed-sdk-react-full.d.ts +1156 -55
  134. package/dist/visual-embed-sdk-react.d.ts +1156 -55
  135. package/dist/visual-embed-sdk.d.ts +1179 -60
  136. package/lib/package.json +3 -3
  137. package/lib/src/auth.d.ts +2 -1
  138. package/lib/src/auth.d.ts.map +1 -1
  139. package/lib/src/auth.js +2 -1
  140. package/lib/src/auth.js.map +1 -1
  141. package/lib/src/authToken.d.ts.map +1 -1
  142. package/lib/src/authToken.js.map +1 -1
  143. package/lib/src/css-variables.d.ts +87 -17
  144. package/lib/src/css-variables.d.ts.map +1 -1
  145. package/lib/src/embed/app.d.ts +41 -1
  146. package/lib/src/embed/app.d.ts.map +1 -1
  147. package/lib/src/embed/app.js +27 -38
  148. package/lib/src/embed/app.js.map +1 -1
  149. package/lib/src/embed/app.spec.js +35 -23
  150. package/lib/src/embed/app.spec.js.map +1 -1
  151. package/lib/src/embed/base.d.ts.map +1 -1
  152. package/lib/src/embed/base.js.map +1 -1
  153. package/lib/src/embed/base.spec.js.map +1 -1
  154. package/lib/src/embed/conversation.d.ts +23 -1
  155. package/lib/src/embed/conversation.d.ts.map +1 -1
  156. package/lib/src/embed/conversation.js +19 -34
  157. package/lib/src/embed/conversation.js.map +1 -1
  158. package/lib/src/embed/conversation.spec.js +131 -99
  159. package/lib/src/embed/conversation.spec.js.map +1 -1
  160. package/lib/src/embed/events.spec.js +73 -1
  161. package/lib/src/embed/events.spec.js.map +1 -1
  162. package/lib/src/embed/hostEventClient/contracts.d.ts +105 -3
  163. package/lib/src/embed/hostEventClient/contracts.d.ts.map +1 -1
  164. package/lib/src/embed/hostEventClient/contracts.js +9 -0
  165. package/lib/src/embed/hostEventClient/contracts.js.map +1 -1
  166. package/lib/src/embed/hostEventClient/host-event-client.d.ts +28 -0
  167. package/lib/src/embed/hostEventClient/host-event-client.d.ts.map +1 -1
  168. package/lib/src/embed/hostEventClient/host-event-client.js +106 -9
  169. package/lib/src/embed/hostEventClient/host-event-client.js.map +1 -1
  170. package/lib/src/embed/hostEventClient/host-event-client.spec.js +327 -6
  171. package/lib/src/embed/hostEventClient/host-event-client.spec.js.map +1 -1
  172. package/lib/src/embed/hostEventClient/utils.d.ts +22 -0
  173. package/lib/src/embed/hostEventClient/utils.d.ts.map +1 -0
  174. package/lib/src/embed/hostEventClient/utils.js +43 -0
  175. package/lib/src/embed/hostEventClient/utils.js.map +1 -0
  176. package/lib/src/embed/hostEventClient/utils.spec.d.ts +2 -0
  177. package/lib/src/embed/hostEventClient/utils.spec.d.ts.map +1 -0
  178. package/lib/src/embed/hostEventClient/utils.spec.js +113 -0
  179. package/lib/src/embed/hostEventClient/utils.spec.js.map +1 -0
  180. package/lib/src/embed/liveboard.d.ts +18 -0
  181. package/lib/src/embed/liveboard.d.ts.map +1 -1
  182. package/lib/src/embed/liveboard.js +10 -3
  183. package/lib/src/embed/liveboard.js.map +1 -1
  184. package/lib/src/embed/liveboard.spec.js +54 -2
  185. package/lib/src/embed/liveboard.spec.js.map +1 -1
  186. package/lib/src/embed/sage.d.ts.map +1 -1
  187. package/lib/src/embed/sage.js.map +1 -1
  188. package/lib/src/embed/search.spec.js.map +1 -1
  189. package/lib/src/embed/spotter-utils.d.ts +20 -0
  190. package/lib/src/embed/spotter-utils.d.ts.map +1 -0
  191. package/lib/src/embed/spotter-utils.js +47 -0
  192. package/lib/src/embed/spotter-utils.js.map +1 -0
  193. package/lib/src/embed/spotter-utils.spec.d.ts +2 -0
  194. package/lib/src/embed/spotter-utils.spec.d.ts.map +1 -0
  195. package/lib/src/embed/spotter-utils.spec.js +52 -0
  196. package/lib/src/embed/spotter-utils.spec.js.map +1 -0
  197. package/lib/src/embed/ts-embed.d.ts +41 -2
  198. package/lib/src/embed/ts-embed.d.ts.map +1 -1
  199. package/lib/src/embed/ts-embed.js +55 -4
  200. package/lib/src/embed/ts-embed.js.map +1 -1
  201. package/lib/src/errors.d.ts +2 -0
  202. package/lib/src/errors.d.ts.map +1 -1
  203. package/lib/src/errors.js +2 -0
  204. package/lib/src/errors.js.map +1 -1
  205. package/lib/src/react/index.d.ts.map +1 -1
  206. package/lib/src/react/index.js +58 -53
  207. package/lib/src/react/index.js.map +1 -1
  208. package/lib/src/types.d.ts +832 -33
  209. package/lib/src/types.d.ts.map +1 -1
  210. package/lib/src/types.js +835 -3
  211. package/lib/src/types.js.map +1 -1
  212. package/lib/src/utils/graphql/answerService/answerService.d.ts +4 -2
  213. package/lib/src/utils/graphql/answerService/answerService.d.ts.map +1 -1
  214. package/lib/src/utils/graphql/answerService/answerService.js +4 -2
  215. package/lib/src/utils/graphql/answerService/answerService.js.map +1 -1
  216. package/lib/src/utils/graphql/preview-service.d.ts.map +1 -1
  217. package/lib/src/utils/graphql/preview-service.js.map +1 -1
  218. package/lib/src/utils/processData.d.ts.map +1 -1
  219. package/lib/src/utils/processData.js.map +1 -1
  220. package/lib/src/utils.d.ts +0 -9
  221. package/lib/src/utils.d.ts.map +1 -1
  222. package/lib/src/utils.js +0 -8
  223. package/lib/src/utils.js.map +1 -1
  224. package/lib/src/visual-embed-sdk.d.ts +1179 -60
  225. package/package.json +3 -3
  226. package/src/auth.spec.ts +1 -1
  227. package/src/auth.ts +2 -1
  228. package/src/authToken.ts +0 -1
  229. package/src/css-variables.ts +96 -17
  230. package/src/embed/app.spec.ts +48 -30
  231. package/src/embed/app.ts +59 -54
  232. package/src/embed/base.spec.ts +1 -2
  233. package/src/embed/base.ts +1 -4
  234. package/src/embed/conversation.spec.ts +150 -119
  235. package/src/embed/conversation.ts +30 -54
  236. package/src/embed/events.spec.ts +88 -0
  237. package/src/embed/hostEventClient/contracts.ts +105 -2
  238. package/src/embed/hostEventClient/host-event-client.spec.ts +504 -6
  239. package/src/embed/hostEventClient/host-event-client.ts +146 -15
  240. package/src/embed/hostEventClient/utils.spec.ts +137 -0
  241. package/src/embed/hostEventClient/utils.ts +61 -0
  242. package/src/embed/liveboard.spec.ts +71 -2
  243. package/src/embed/liveboard.ts +29 -2
  244. package/src/embed/sage.ts +0 -1
  245. package/src/embed/search.spec.ts +0 -2
  246. package/src/embed/spotter-utils.spec.ts +56 -0
  247. package/src/embed/spotter-utils.ts +65 -0
  248. package/src/embed/ts-embed.ts +58 -4
  249. package/src/errors.ts +2 -0
  250. package/src/react/index.tsx +76 -72
  251. package/src/types.ts +843 -31
  252. package/src/utils/graphql/answerService/answerService.ts +4 -5
  253. package/src/utils/graphql/preview-service.ts +0 -1
  254. package/src/utils/processData.ts +0 -5
  255. package/src/utils.ts +0 -14
@@ -0,0 +1,65 @@
1
+ import { DefaultAppInitData, ErrorDetailsTypes, EmbedErrorCodes } from '../types';
2
+ import { validateHttpUrl } from '../utils';
3
+ import { ERROR_MESSAGE } from '../errors';
4
+ import type { SpotterSidebarViewConfig } from './conversation';
5
+
6
+ /**
7
+ * Resolves enablePastConversationsSidebar with
8
+ * spotterSidebarConfig taking precedence over the
9
+ * standalone flag.
10
+ */
11
+ export const resolveEnablePastConversationsSidebar = (params: {
12
+ spotterSidebarConfigValue?: boolean;
13
+ standaloneValue?: boolean;
14
+ }): boolean | undefined => (
15
+ params.spotterSidebarConfigValue !== undefined
16
+ ? params.spotterSidebarConfigValue
17
+ : params.standaloneValue
18
+ );
19
+
20
+ export function buildSpotterSidebarAppInitData<T extends DefaultAppInitData>(
21
+ defaultAppInitData: T,
22
+ viewConfig: {
23
+ spotterSidebarConfig?: SpotterSidebarViewConfig;
24
+ enablePastConversationsSidebar?: boolean;
25
+ },
26
+ handleError: (err: any) => void,
27
+ ): T & { embedParams?: { spotterSidebarConfig?: SpotterSidebarViewConfig } } {
28
+ const { spotterSidebarConfig, enablePastConversationsSidebar } = viewConfig;
29
+
30
+ const resolvedEnablePastConversations = resolveEnablePastConversationsSidebar({
31
+ spotterSidebarConfigValue: spotterSidebarConfig?.enablePastConversationsSidebar,
32
+ standaloneValue: enablePastConversationsSidebar,
33
+ });
34
+
35
+ const hasConfig = spotterSidebarConfig || resolvedEnablePastConversations !== undefined;
36
+ if (!hasConfig) return defaultAppInitData;
37
+
38
+ const resolvedSidebarConfig: SpotterSidebarViewConfig = {
39
+ ...spotterSidebarConfig,
40
+ ...(resolvedEnablePastConversations !== undefined && {
41
+ enablePastConversationsSidebar: resolvedEnablePastConversations,
42
+ }),
43
+ };
44
+
45
+ if (resolvedSidebarConfig.spotterDocumentationUrl !== undefined) {
46
+ const [isValid, validationError] = validateHttpUrl(resolvedSidebarConfig.spotterDocumentationUrl);
47
+ if (!isValid) {
48
+ handleError({
49
+ errorType: ErrorDetailsTypes.VALIDATION_ERROR,
50
+ message: ERROR_MESSAGE.INVALID_SPOTTER_DOCUMENTATION_URL,
51
+ code: EmbedErrorCodes.INVALID_URL,
52
+ error: validationError?.message || ERROR_MESSAGE.INVALID_SPOTTER_DOCUMENTATION_URL,
53
+ });
54
+ delete resolvedSidebarConfig.spotterDocumentationUrl;
55
+ }
56
+ }
57
+
58
+ return {
59
+ ...defaultAppInitData,
60
+ embedParams: {
61
+ ...((defaultAppInitData as any).embedParams || {}),
62
+ spotterSidebarConfig: resolvedSidebarConfig,
63
+ },
64
+ };
65
+ }
@@ -34,7 +34,8 @@ import {
34
34
  setStyleProperties,
35
35
  removeStyleProperties,
36
36
  isUndefined,
37
- getHostEventsConfig } from '../utils';
37
+ getHostEventsConfig,
38
+ } from '../utils';
38
39
  import { getCustomActions } from '../utils/custom-actions';
39
40
  import {
40
41
  getThoughtSpotHost,
@@ -1392,7 +1393,21 @@ export class TsEmbed {
1392
1393
  * Triggers an event to the embedded app
1393
1394
  * @param {HostEvent} messageType The event type
1394
1395
  * @param {any} data The payload to send with the message
1396
+ * @param {ContextType} context Optional context type to specify the context from which the event is triggered.
1397
+ * Use ContextType.Search for search answer context, ContextType.Answer for answer/explore context,
1398
+ * ContextType.Liveboard for liveboard context, or ContextType.Spotter for spotter context.
1399
+ * Available from SDK version 1.45.2 | ThoughtSpot: 26.3.0.cl
1395
1400
  * @returns A promise that resolves with the response from the embedded app
1401
+ * @example
1402
+ * ```js
1403
+ * // Trigger Pin event with context (SDK: 1.45.2+)
1404
+ * import { HostEvent, ContextType } from '@thoughtspot/visual-embed-sdk';
1405
+ * embed.trigger(HostEvent.Pin, {
1406
+ * vizId: "123",
1407
+ * liveboardId: "456"
1408
+ * }, ContextType.Search);
1409
+ * ```
1410
+ * @version SDK: 1.45.2 | ThoughtSpot: 26.3.0.cl (for context parameter)
1396
1411
  */
1397
1412
  public async trigger<HostEventT extends HostEvent, PayloadT, ContextT extends ContextType>(
1398
1413
  messageType: HostEventT,
@@ -1431,7 +1446,21 @@ export class TsEmbed {
1431
1446
  }
1432
1447
 
1433
1448
  // send an empty object, this is needed for liveboard default handlers
1434
- return this.hostEventClient.triggerHostEvent(messageType, data, context);
1449
+ return this.hostEventClient.triggerHostEvent(messageType, data, context).catch((err: Error & {
1450
+ isValidationError?: boolean;
1451
+ embedErrorDetails?: { errorType: ErrorDetailsTypes; message: string; code: EmbedErrorCodes; error: string };
1452
+ }): Promise<null> => {
1453
+ if (err?.isValidationError) {
1454
+ const errorDetails = err.embedErrorDetails ?? {
1455
+ errorType: ErrorDetailsTypes.VALIDATION_ERROR,
1456
+ message: err.message || ERROR_MESSAGE.UPDATEFILTERS_INVALID_PAYLOAD,
1457
+ code: EmbedErrorCodes.UPDATEFILTERS_INVALID_PAYLOAD,
1458
+ error: err.message,
1459
+ };
1460
+ this.handleError(errorDetails);
1461
+ }
1462
+ throw err;
1463
+ });
1435
1464
  }
1436
1465
 
1437
1466
  /**
@@ -1474,8 +1503,33 @@ export class TsEmbed {
1474
1503
  }
1475
1504
 
1476
1505
  /**
1477
- * Get the current context of the embedded TS component.
1478
- * @returns The current context object containing the page type and object ids.
1506
+ * Context object for the embedded component.
1507
+ * @returns {ContextObject} The current context object containing the page type and object ids.
1508
+ * @example
1509
+ * ```js
1510
+ * const context = await embed.getCurrentContext();
1511
+ * console.log(context);
1512
+ *
1513
+ * // Example output
1514
+ * {
1515
+ * stack: [
1516
+ * {
1517
+ * name: 'Liveboard',
1518
+ * type: ContextType.Liveboard,
1519
+ * objectIds: {
1520
+ * liveboardId: '123',
1521
+ * },
1522
+ * },
1523
+ * ],
1524
+ * currentContext: {
1525
+ * name: 'Liveboard',
1526
+ * type: ContextType.Liveboard,
1527
+ * objectIds: {
1528
+ * liveboardId: '123',
1529
+ * },
1530
+ * },
1531
+ * }
1532
+ * ```
1479
1533
  * @version SDK: 1.45.2 | ThoughtSpot: 26.3.0.cl
1480
1534
  */
1481
1535
  public async getCurrentContext(): Promise<ContextObject> {
package/src/errors.ts CHANGED
@@ -30,6 +30,8 @@ export const ERROR_MESSAGE = {
30
30
  SSR_ENVIRONMENT_ERROR: 'SSR environment detected. This function cannot be called in SSR environment.',
31
31
  UPDATE_PARAMS_FAILED: 'Failed to update embed parameters',
32
32
  INVALID_SPOTTER_DOCUMENTATION_URL: 'Invalid spotterDocumentationUrl. Please provide a valid http or https URL.',
33
+ UPDATEFILTERS_INVALID_PAYLOAD: 'UpdateFilters requires a valid filter or filters array. Expected: { filter: { column, oper, values } } or { filters: [{ column, oper, values }, ...] }',
34
+ DRILLDOWN_INVALID_PAYLOAD: 'DrillDown requires a valid points object. Expected: { points: { clickedPoint?, selectedPoints? }, autoDrillDown?, vizId? }',
33
35
  };
34
36
 
35
37
  export const CUSTOM_ACTIONS_ERROR_MESSAGE = {
@@ -25,84 +25,87 @@ const componentFactory = <T extends typeof TsEmbed, U extends EmbedProps, V exte
25
25
  // Embed.preRender() method instead of the usual render method, and it will
26
26
  // not be destroyed when the component is unmounted.
27
27
  isPreRenderedComponent = false,
28
- ) => React.forwardRef<InstanceType<T>, U>(
29
- (props: U, forwardedRef: React.MutableRefObject<InstanceType<T>>) => {
30
- const ref = React.useRef<HTMLDivElement>(null);
31
- const { className, style, ...embedProps } = props;
32
- const { viewConfig, listeners } = getViewPropsAndListeners<Omit<U, 'className' | 'style'>, V>(
33
- embedProps,
34
- );
35
-
36
- const handleDestroy = (tsEmbed: InstanceType<T>) => {
37
- // do not destroy if it is a preRender component
38
- if (isPreRenderedComponent) return;
39
-
40
- // if component is connected to a preRendered component
41
- if (props.preRenderId) {
42
- tsEmbed.hidePreRender();
43
- return;
44
- }
45
-
46
- tsEmbed.destroy();
47
- };
48
-
49
- const handlePreRenderRendering = (tsEmbed: InstanceType<T>) => {
50
- tsEmbed.preRender();
51
- };
28
+ ) => {
29
+ const Component = React.forwardRef<InstanceType<T>, U>(
30
+ (props: U, forwardedRef: React.MutableRefObject<InstanceType<T>>) => {
31
+ const ref = React.useRef<HTMLDivElement>(null);
32
+ const { className, style, ...embedProps } = props;
33
+ const { viewConfig, listeners } = getViewPropsAndListeners<Omit<U, 'className' | 'style'>, V>(
34
+ embedProps,
35
+ );
36
+
37
+ const handleDestroy = (tsEmbed: InstanceType<T>) => {
38
+ // do not destroy if it is a preRender component
39
+ if (isPreRenderedComponent) return;
40
+
41
+ // if component is connected to a preRendered component
42
+ if (props.preRenderId) {
43
+ tsEmbed.hidePreRender();
44
+ return;
45
+ }
46
+
47
+ tsEmbed.destroy();
48
+ };
52
49
 
53
- const handleDefaultRendering = (tsEmbed: InstanceType<T>) => {
54
- // if component is connected to a preRendered component
55
- if (props.preRenderId) {
56
- tsEmbed.showPreRender();
57
- return;
58
- }
50
+ const handlePreRenderRendering = (tsEmbed: InstanceType<T>) => {
51
+ tsEmbed.preRender();
52
+ };
59
53
 
60
- tsEmbed.render();
61
- };
54
+ const handleDefaultRendering = (tsEmbed: InstanceType<T>) => {
55
+ // if component is connected to a preRendered component
56
+ if (props.preRenderId) {
57
+ tsEmbed.showPreRender();
58
+ return;
59
+ }
62
60
 
63
- const handleRendering = (tsEmbed: InstanceType<T>) => {
64
- if (isPreRenderedComponent) {
65
- handlePreRenderRendering(tsEmbed);
66
- return;
67
- }
68
- handleDefaultRendering(tsEmbed);
69
- };
70
-
71
- useDeepCompareEffect(() => {
72
- const tsEmbed = new EmbedConstructor(
73
- ref!.current,
74
- deepMerge(
75
- {
76
- insertAsSibling: viewConfig.insertAsSibling,
77
- frameParams: {
78
- class: viewConfig.insertAsSibling ? className || '' : '',
79
- },
80
- },
81
- viewConfig,
82
- ),
83
- ) as InstanceType<T>;
84
- Object.keys(listeners).forEach((eventName) => {
85
- tsEmbed.on(eventName as EmbedEvent, listeners[eventName as EmbedEvent]);
86
- });
87
- handleRendering(tsEmbed);
88
- if (forwardedRef) {
89
-
90
- forwardedRef.current = tsEmbed;
91
- }
92
- return () => {
93
- handleDestroy(tsEmbed);
61
+ tsEmbed.render();
94
62
  };
95
- }, [viewConfig, listeners]);
96
63
 
97
- const preRenderStyles = isPreRenderedComponent ? { display: 'none' } : {};
64
+ const handleRendering = (tsEmbed: InstanceType<T>) => {
65
+ if (isPreRenderedComponent) {
66
+ handlePreRenderRendering(tsEmbed);
67
+ return;
68
+ }
69
+ handleDefaultRendering(tsEmbed);
70
+ };
98
71
 
99
- return viewConfig.insertAsSibling ? (
100
- <span data-testid="tsEmbed" ref={ref} style={{ position: 'absolute', ...preRenderStyles }}></span>
101
- ) : (
102
- <div data-testid="tsEmbed" ref={ref} style={{ ...style, ...preRenderStyles }} className={`ts-embed-container ${className}`}></div>
103
- );
104
- },
105
- );
72
+ useDeepCompareEffect(() => {
73
+ const tsEmbed = new EmbedConstructor(
74
+ ref!.current,
75
+ deepMerge(
76
+ {
77
+ insertAsSibling: viewConfig.insertAsSibling,
78
+ frameParams: {
79
+ class: viewConfig.insertAsSibling ? className || '' : '',
80
+ },
81
+ },
82
+ viewConfig,
83
+ ),
84
+ ) as InstanceType<T>;
85
+ Object.keys(listeners).forEach((eventName) => {
86
+ tsEmbed.on(eventName as EmbedEvent, listeners[eventName as EmbedEvent]);
87
+ });
88
+ handleRendering(tsEmbed);
89
+ if (forwardedRef) {
90
+ forwardedRef.current = tsEmbed;
91
+ }
92
+ return () => {
93
+ handleDestroy(tsEmbed);
94
+ };
95
+ }, [viewConfig, listeners]);
96
+
97
+ const preRenderStyles = isPreRenderedComponent ? { display: 'none' } : {};
98
+
99
+ return viewConfig.insertAsSibling ? (
100
+ <span data-testid="tsEmbed" ref={ref} style={{ position: 'absolute', ...preRenderStyles }}></span>
101
+ ) : (
102
+ <div data-testid="tsEmbed" ref={ref} style={{ ...style, ...preRenderStyles }} className={`ts-embed-container ${className}`}></div>
103
+ );
104
+ },
105
+ );
106
+ Component.displayName = EmbedConstructor.name || 'EmbedComponent';
107
+ return Component;
108
+ };
106
109
 
107
110
  interface SearchProps extends EmbedProps, SearchViewConfig { }
108
111
 
@@ -442,6 +445,7 @@ export const SpotterMessage = React.forwardRef<
442
445
  />
443
446
  );
444
447
  });
448
+ SpotterMessage.displayName = 'SpotterMessage';
445
449
 
446
450
  /**
447
451
  * React component for PreRendered Conversation embed.