@thoughtspot/visual-embed-sdk 1.45.2 → 1.45.3-mcp.2

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 (250) hide show
  1. package/cjs/package.json +2 -2
  2. package/cjs/src/css-variables.d.ts +48 -0
  3. package/cjs/src/css-variables.d.ts.map +1 -1
  4. package/cjs/src/embed/app.d.ts +37 -0
  5. package/cjs/src/embed/app.d.ts.map +1 -1
  6. package/cjs/src/embed/app.js +37 -1
  7. package/cjs/src/embed/app.js.map +1 -1
  8. package/cjs/src/embed/app.spec.js +24 -0
  9. package/cjs/src/embed/app.spec.js.map +1 -1
  10. package/cjs/src/embed/auto-frame-renderer.d.ts +3 -0
  11. package/cjs/src/embed/auto-frame-renderer.d.ts.map +1 -0
  12. package/cjs/src/embed/auto-frame-renderer.js +70 -0
  13. package/cjs/src/embed/auto-frame-renderer.js.map +1 -0
  14. package/cjs/src/embed/base.d.ts.map +1 -1
  15. package/cjs/src/embed/base.js.map +1 -1
  16. package/cjs/src/embed/conversation.d.ts +128 -10
  17. package/cjs/src/embed/conversation.d.ts.map +1 -1
  18. package/cjs/src/embed/conversation.js +41 -18
  19. package/cjs/src/embed/conversation.js.map +1 -1
  20. package/cjs/src/embed/conversation.spec.js +96 -3
  21. package/cjs/src/embed/conversation.spec.js.map +1 -1
  22. package/cjs/src/embed/liveboard.d.ts +38 -1
  23. package/cjs/src/embed/liveboard.d.ts.map +1 -1
  24. package/cjs/src/embed/liveboard.js +38 -10
  25. package/cjs/src/embed/liveboard.js.map +1 -1
  26. package/cjs/src/embed/liveboard.spec.js +179 -7
  27. package/cjs/src/embed/liveboard.spec.js.map +1 -1
  28. package/cjs/src/embed/searchEmbed-basic-auth.spec.d.ts +2 -0
  29. package/cjs/src/embed/searchEmbed-basic-auth.spec.d.ts.map +1 -0
  30. package/cjs/src/embed/searchEmbed-basic-auth.spec.js +104 -0
  31. package/cjs/src/embed/searchEmbed-basic-auth.spec.js.map +1 -0
  32. package/cjs/src/errors.d.ts +1 -0
  33. package/cjs/src/errors.d.ts.map +1 -1
  34. package/cjs/src/errors.js +1 -0
  35. package/cjs/src/errors.js.map +1 -1
  36. package/cjs/src/index.d.ts +4 -3
  37. package/cjs/src/index.d.ts.map +1 -1
  38. package/cjs/src/index.js +3 -1
  39. package/cjs/src/index.js.map +1 -1
  40. package/cjs/src/types.d.ts +196 -41
  41. package/cjs/src/types.d.ts.map +1 -1
  42. package/cjs/src/types.js +185 -19
  43. package/cjs/src/types.js.map +1 -1
  44. package/cjs/src/utils/answerService/answerService.d.ts +34 -0
  45. package/cjs/src/utils/answerService/answerService.d.ts.map +1 -0
  46. package/cjs/src/utils/answerService/answerService.js +142 -0
  47. package/cjs/src/utils/answerService/answerService.js.map +1 -0
  48. package/cjs/src/utils/answerService/answerService.spec.d.ts +1 -0
  49. package/cjs/src/utils/answerService/answerService.spec.d.ts.map +1 -0
  50. package/cjs/src/utils/answerService/answerService.spec.js +1 -0
  51. package/cjs/src/utils/answerService/answerService.spec.js.map +1 -0
  52. package/cjs/src/utils/answerService/graphql-queries.d.ts +6 -0
  53. package/cjs/src/utils/answerService/graphql-queries.d.ts.map +1 -0
  54. package/cjs/src/utils/answerService/graphql-queries.js +123 -0
  55. package/cjs/src/utils/answerService/graphql-queries.js.map +1 -0
  56. package/cjs/src/utils/answerService.d.ts +10 -0
  57. package/cjs/src/utils/answerService.d.ts.map +1 -0
  58. package/cjs/src/utils/answerService.js +61 -0
  59. package/cjs/src/utils/answerService.js.map +1 -0
  60. package/cjs/src/utils/answerService.spec.d.ts +2 -0
  61. package/cjs/src/utils/answerService.spec.d.ts.map +1 -0
  62. package/cjs/src/utils/answerService.spec.js +31 -0
  63. package/cjs/src/utils/answerService.spec.js.map +1 -0
  64. package/cjs/src/utils/authService.d.ts +37 -0
  65. package/cjs/src/utils/authService.d.ts.map +1 -0
  66. package/cjs/src/utils/authService.js +106 -0
  67. package/cjs/src/utils/authService.js.map +1 -0
  68. package/cjs/src/utils/authService.spec.d.ts +2 -0
  69. package/cjs/src/utils/authService.spec.d.ts.map +1 -0
  70. package/cjs/src/utils/authService.spec.js +72 -0
  71. package/cjs/src/utils/authService.spec.js.map +1 -0
  72. package/cjs/src/utils/graphql/answerService/answer-queries.d.ts +1 -0
  73. package/cjs/src/utils/graphql/answerService/answer-queries.d.ts.map +1 -1
  74. package/cjs/src/utils/graphql/answerService/answer-queries.js +23 -1
  75. package/cjs/src/utils/graphql/answerService/answer-queries.js.map +1 -1
  76. package/cjs/src/utils/graphql/answerService/answerService.d.ts +2 -1
  77. package/cjs/src/utils/graphql/answerService/answerService.d.ts.map +1 -1
  78. package/cjs/src/utils/graphql/answerService/answerService.js +9 -1
  79. package/cjs/src/utils/graphql/answerService/answerService.js.map +1 -1
  80. package/cjs/src/utils/graphql/answerService/answerService.spec.js +73 -0
  81. package/cjs/src/utils/graphql/answerService/answerService.spec.js.map +1 -1
  82. package/cjs/src/utils/graphql/answerService/graphql-queries.d.ts +5 -0
  83. package/cjs/src/utils/graphql/answerService/graphql-queries.d.ts.map +1 -0
  84. package/cjs/src/utils/graphql/answerService/graphql-queries.js +80 -0
  85. package/cjs/src/utils/graphql/answerService/graphql-queries.js.map +1 -0
  86. package/cjs/src/utils/graphql/conversationService/conversation-queries.d.ts +3 -0
  87. package/cjs/src/utils/graphql/conversationService/conversation-queries.d.ts.map +1 -0
  88. package/cjs/src/utils/graphql/conversationService/conversation-queries.js +318 -0
  89. package/cjs/src/utils/graphql/conversationService/conversation-queries.js.map +1 -0
  90. package/cjs/src/utils/graphql/conversationService/conversation-service.d.ts +12 -0
  91. package/cjs/src/utils/graphql/conversationService/conversation-service.d.ts.map +1 -0
  92. package/cjs/src/utils/graphql/conversationService/conversation-service.js +89 -0
  93. package/cjs/src/utils/graphql/conversationService/conversation-service.js.map +1 -0
  94. package/cjs/src/utils/graphql/spotterService/conversation-queries.d.ts +3 -0
  95. package/cjs/src/utils/graphql/spotterService/conversation-queries.d.ts.map +1 -0
  96. package/cjs/src/utils/graphql/spotterService/conversation-queries.js +318 -0
  97. package/cjs/src/utils/graphql/spotterService/conversation-queries.js.map +1 -0
  98. package/cjs/src/utils/graphql/spotterService/conversation-service.d.ts +12 -0
  99. package/cjs/src/utils/graphql/spotterService/conversation-service.d.ts.map +1 -0
  100. package/cjs/src/utils/graphql/spotterService/conversation-service.js +89 -0
  101. package/cjs/src/utils/graphql/spotterService/conversation-service.js.map +1 -0
  102. package/cjs/src/utils/graphql/spotterService/nls-answer-queries.d.ts +2 -0
  103. package/cjs/src/utils/graphql/spotterService/nls-answer-queries.d.ts.map +1 -0
  104. package/cjs/src/utils/graphql/spotterService/nls-answer-queries.js +403 -0
  105. package/cjs/src/utils/graphql/spotterService/nls-answer-queries.js.map +1 -0
  106. package/cjs/src/utils/graphql/spotterService/nls-answer-service.d.ts +12 -0
  107. package/cjs/src/utils/graphql/spotterService/nls-answer-service.d.ts.map +1 -0
  108. package/cjs/src/utils/graphql/spotterService/nls-answer-service.js +55 -0
  109. package/cjs/src/utils/graphql/spotterService/nls-answer-service.js.map +1 -0
  110. package/cjs/src/utils.d.ts +15 -0
  111. package/cjs/src/utils.d.ts.map +1 -1
  112. package/cjs/src/utils.js +33 -1
  113. package/cjs/src/utils.js.map +1 -1
  114. package/cjs/src/utils.spec.js +49 -0
  115. package/cjs/src/utils.spec.js.map +1 -1
  116. package/dist/{index-BdkKLLo1.js → index-0serzuii.js} +1 -1
  117. package/dist/index-CqrIh3Vj.js +7370 -0
  118. package/dist/index-aFN9fe8V.js +7371 -0
  119. package/dist/src/css-variables.d.ts +48 -0
  120. package/dist/src/css-variables.d.ts.map +1 -1
  121. package/dist/src/embed/app.d.ts +37 -0
  122. package/dist/src/embed/app.d.ts.map +1 -1
  123. package/dist/src/embed/auto-frame-renderer.d.ts +3 -0
  124. package/dist/src/embed/auto-frame-renderer.d.ts.map +1 -0
  125. package/dist/src/embed/base.d.ts.map +1 -1
  126. package/dist/src/embed/conversation.d.ts +128 -10
  127. package/dist/src/embed/conversation.d.ts.map +1 -1
  128. package/dist/src/embed/liveboard.d.ts +38 -1
  129. package/dist/src/embed/liveboard.d.ts.map +1 -1
  130. package/dist/src/errors.d.ts +1 -0
  131. package/dist/src/errors.d.ts.map +1 -1
  132. package/dist/src/index.d.ts +4 -3
  133. package/dist/src/index.d.ts.map +1 -1
  134. package/dist/src/types.d.ts +196 -41
  135. package/dist/src/types.d.ts.map +1 -1
  136. package/dist/src/utils/graphql/answerService/answer-queries.d.ts +1 -0
  137. package/dist/src/utils/graphql/answerService/answer-queries.d.ts.map +1 -1
  138. package/dist/src/utils/graphql/answerService/answerService.d.ts +2 -1
  139. package/dist/src/utils/graphql/answerService/answerService.d.ts.map +1 -1
  140. package/dist/src/utils.d.ts +15 -0
  141. package/dist/src/utils.d.ts.map +1 -1
  142. package/dist/tsembed-react.es.js +365 -52
  143. package/dist/tsembed-react.js +364 -51
  144. package/dist/tsembed.es.js +429 -53
  145. package/dist/tsembed.js +428 -51
  146. package/dist/visual-embed-sdk-react-full.d.ts +697 -343
  147. package/dist/visual-embed-sdk-react.d.ts +686 -332
  148. package/dist/visual-embed-sdk.d.ts +761 -380
  149. package/lib/package.json +2 -2
  150. package/lib/src/css-variables.d.ts +48 -0
  151. package/lib/src/css-variables.d.ts.map +1 -1
  152. package/lib/src/embed/app.d.ts +37 -0
  153. package/lib/src/embed/app.d.ts.map +1 -1
  154. package/lib/src/embed/app.js +39 -3
  155. package/lib/src/embed/app.js.map +1 -1
  156. package/lib/src/embed/app.spec.js +24 -0
  157. package/lib/src/embed/app.spec.js.map +1 -1
  158. package/lib/src/embed/auto-frame-renderer.d.ts +3 -0
  159. package/lib/src/embed/auto-frame-renderer.d.ts.map +1 -0
  160. package/lib/src/embed/auto-frame-renderer.js +66 -0
  161. package/lib/src/embed/auto-frame-renderer.js.map +1 -0
  162. package/lib/src/embed/base.d.ts.map +1 -1
  163. package/lib/src/embed/base.js.map +1 -1
  164. package/lib/src/embed/conversation.d.ts +128 -10
  165. package/lib/src/embed/conversation.d.ts.map +1 -1
  166. package/lib/src/embed/conversation.js +42 -19
  167. package/lib/src/embed/conversation.js.map +1 -1
  168. package/lib/src/embed/conversation.spec.js +96 -3
  169. package/lib/src/embed/conversation.spec.js.map +1 -1
  170. package/lib/src/embed/liveboard.d.ts +38 -1
  171. package/lib/src/embed/liveboard.d.ts.map +1 -1
  172. package/lib/src/embed/liveboard.js +39 -11
  173. package/lib/src/embed/liveboard.js.map +1 -1
  174. package/lib/src/embed/liveboard.spec.js +179 -7
  175. package/lib/src/embed/liveboard.spec.js.map +1 -1
  176. package/lib/src/embed/searchEmbed-basic-auth.spec.d.ts +2 -0
  177. package/lib/src/embed/searchEmbed-basic-auth.spec.d.ts.map +1 -0
  178. package/lib/src/embed/searchEmbed-basic-auth.spec.js +101 -0
  179. package/lib/src/embed/searchEmbed-basic-auth.spec.js.map +1 -0
  180. package/lib/src/errors.d.ts +1 -0
  181. package/lib/src/errors.d.ts.map +1 -1
  182. package/lib/src/errors.js +1 -0
  183. package/lib/src/errors.js.map +1 -1
  184. package/lib/src/index.d.ts +4 -3
  185. package/lib/src/index.d.ts.map +1 -1
  186. package/lib/src/index.js +1 -0
  187. package/lib/src/index.js.map +1 -1
  188. package/lib/src/types.d.ts +196 -41
  189. package/lib/src/types.d.ts.map +1 -1
  190. package/lib/src/types.js +185 -19
  191. package/lib/src/types.js.map +1 -1
  192. package/lib/src/utils/graphql/answerService/answer-queries.d.ts +1 -0
  193. package/lib/src/utils/graphql/answerService/answer-queries.d.ts.map +1 -1
  194. package/lib/src/utils/graphql/answerService/answer-queries.js +22 -0
  195. package/lib/src/utils/graphql/answerService/answer-queries.js.map +1 -1
  196. package/lib/src/utils/graphql/answerService/answerService.d.ts +2 -1
  197. package/lib/src/utils/graphql/answerService/answerService.d.ts.map +1 -1
  198. package/lib/src/utils/graphql/answerService/answerService.js +9 -1
  199. package/lib/src/utils/graphql/answerService/answerService.js.map +1 -1
  200. package/lib/src/utils/graphql/answerService/answerService.spec.js +73 -0
  201. package/lib/src/utils/graphql/answerService/answerService.spec.js.map +1 -1
  202. package/lib/src/utils/graphql/conversationService/conversation-queries.d.ts +3 -0
  203. package/lib/src/utils/graphql/conversationService/conversation-queries.d.ts.map +1 -0
  204. package/lib/src/utils/graphql/conversationService/conversation-queries.js +315 -0
  205. package/lib/src/utils/graphql/conversationService/conversation-queries.js.map +1 -0
  206. package/lib/src/utils/graphql/conversationService/conversation-service.d.ts +12 -0
  207. package/lib/src/utils/graphql/conversationService/conversation-service.d.ts.map +1 -0
  208. package/lib/src/utils/graphql/conversationService/conversation-service.js +84 -0
  209. package/lib/src/utils/graphql/conversationService/conversation-service.js.map +1 -0
  210. package/lib/src/utils/graphql/spotterService/conversation-queries.d.ts +3 -0
  211. package/lib/src/utils/graphql/spotterService/conversation-queries.d.ts.map +1 -0
  212. package/lib/src/utils/graphql/spotterService/conversation-queries.js +315 -0
  213. package/lib/src/utils/graphql/spotterService/conversation-queries.js.map +1 -0
  214. package/lib/src/utils/graphql/spotterService/conversation-service.d.ts +12 -0
  215. package/lib/src/utils/graphql/spotterService/conversation-service.d.ts.map +1 -0
  216. package/lib/src/utils/graphql/spotterService/conversation-service.js +84 -0
  217. package/lib/src/utils/graphql/spotterService/conversation-service.js.map +1 -0
  218. package/lib/src/utils/graphql/spotterService/nls-answer-queries.d.ts +2 -0
  219. package/lib/src/utils/graphql/spotterService/nls-answer-queries.d.ts.map +1 -0
  220. package/lib/src/utils/graphql/spotterService/nls-answer-queries.js +400 -0
  221. package/lib/src/utils/graphql/spotterService/nls-answer-queries.js.map +1 -0
  222. package/lib/src/utils/graphql/spotterService/nls-answer-service.d.ts +12 -0
  223. package/lib/src/utils/graphql/spotterService/nls-answer-service.d.ts.map +1 -0
  224. package/lib/src/utils/graphql/spotterService/nls-answer-service.js +50 -0
  225. package/lib/src/utils/graphql/spotterService/nls-answer-service.js.map +1 -0
  226. package/lib/src/utils.d.ts +15 -0
  227. package/lib/src/utils.d.ts.map +1 -1
  228. package/lib/src/utils.js +30 -0
  229. package/lib/src/utils.js.map +1 -1
  230. package/lib/src/utils.spec.js +50 -1
  231. package/lib/src/utils.spec.js.map +1 -1
  232. package/lib/src/visual-embed-sdk.d.ts +7186 -0
  233. package/package.json +3 -3
  234. package/src/css-variables.ts +60 -0
  235. package/src/embed/app.spec.ts +32 -0
  236. package/src/embed/app.ts +97 -1
  237. package/src/embed/auto-frame-renderer.ts +78 -0
  238. package/src/embed/base.ts +1 -0
  239. package/src/embed/conversation.spec.ts +117 -3
  240. package/src/embed/conversation.ts +189 -30
  241. package/src/embed/liveboard.spec.ts +264 -10
  242. package/src/embed/liveboard.ts +100 -11
  243. package/src/errors.ts +1 -0
  244. package/src/index.ts +8 -1
  245. package/src/types.ts +198 -42
  246. package/src/utils/graphql/answerService/answer-queries.ts +23 -0
  247. package/src/utils/graphql/answerService/answerService.spec.ts +87 -0
  248. package/src/utils/graphql/answerService/answerService.ts +13 -1
  249. package/src/utils.spec.ts +56 -0
  250. package/src/utils.ts +36 -0
@@ -2,7 +2,7 @@ import isUndefined from 'lodash/isUndefined';
2
2
  import { ERROR_MESSAGE } from '../errors';
3
3
  import { Param, BaseViewConfig, RuntimeFilter, RuntimeParameter, ErrorDetailsTypes, EmbedErrorCodes } from '../types';
4
4
  import { TsEmbed } from './ts-embed';
5
- import { getQueryParamString, getFilterQuery, getRuntimeParameters } from '../utils';
5
+ import { getQueryParamString, getFilterQuery, getRuntimeParameters, validateHttpUrl, setParamIfDefined } from '../utils';
6
6
 
7
7
  /**
8
8
  * Configuration for search options
@@ -14,6 +14,106 @@ export interface SearchOptions {
14
14
  searchQuery: string;
15
15
  }
16
16
 
17
+ /**
18
+ * Configuration for the Spotter sidebar.
19
+ * Can be used in SpotterEmbed and AppEmbed.
20
+ * @group Embed components
21
+ * @version SDK: 1.46.0 | ThoughtSpot: 26.3.0.cl
22
+ */
23
+ export interface SpotterSidebarViewConfig {
24
+ /**
25
+ * Controls the visibility of the past conversations sidebar.
26
+ * @default false
27
+ * @version SDK: 1.45.0 | ThoughtSpot: 26.2.0.cl
28
+ */
29
+ enablePastConversationsSidebar?: boolean;
30
+ /**
31
+ * Custom title text for the sidebar header.
32
+ * Defaults to translated "Spotter" text.
33
+ * @version SDK: 1.46.0 | ThoughtSpot: 26.3.0.cl
34
+ */
35
+ spotterSidebarTitle?: string;
36
+ /**
37
+ * Boolean to set the default expanded state of the sidebar.
38
+ * @default false
39
+ * @version SDK: 1.46.0 | ThoughtSpot: 26.3.0.cl
40
+ */
41
+ spotterSidebarDefaultExpanded?: boolean;
42
+ /**
43
+ * Custom label text for the rename action in the conversation edit menu.
44
+ * Defaults to translated "Rename" text.
45
+ * @version SDK: 1.46.0 | ThoughtSpot: 26.3.0.cl
46
+ */
47
+ spotterChatRenameLabel?: string;
48
+ /**
49
+ * Custom label text for the delete action in the conversation edit menu.
50
+ * Defaults to translated "DELETE" text.
51
+ * @version SDK: 1.46.0 | ThoughtSpot: 26.3.0.cl
52
+ */
53
+ spotterChatDeleteLabel?: string;
54
+ /**
55
+ * Custom title text for the delete conversation confirmation modal.
56
+ * Defaults to translated "Delete chat" text.
57
+ * @version SDK: 1.46.0 | ThoughtSpot: 26.3.0.cl
58
+ */
59
+ spotterDeleteConversationModalTitle?: string;
60
+ /**
61
+ * Custom message text for the past conversation banner alert.
62
+ * Defaults to translated alert message.
63
+ * @version SDK: 1.46.0 | ThoughtSpot: 26.3.0.cl
64
+ */
65
+ spotterPastConversationAlertMessage?: string;
66
+ /**
67
+ * Custom URL for the documentation/best practices link.
68
+ * Defaults to ThoughtSpot docs URL based on release version.
69
+ * Note: URL must include the protocol (e.g., `https://www.example.com`).
70
+ * @version SDK: 1.46.0 | ThoughtSpot: 26.3.0.cl
71
+ */
72
+ spotterDocumentationUrl?: string;
73
+ /**
74
+ * Custom label text for the best practices button in the footer.
75
+ * Defaults to translated "Best Practices" text.
76
+ * @version SDK: 1.46.0 | ThoughtSpot: 26.3.0.cl
77
+ */
78
+ spotterBestPracticesLabel?: string;
79
+ /**
80
+ * Number of conversations to fetch per batch when loading conversation history.
81
+ * @default 30
82
+ * @version SDK: 1.46.0 | ThoughtSpot: 26.3.0.cl
83
+ */
84
+ spotterConversationsBatchSize?: number;
85
+ /**
86
+ * Custom title text for the "New Chat" button in the sidebar.
87
+ * Defaults to translated "New Chat" text.
88
+ * @version SDK: 1.46.0 | ThoughtSpot: 26.3.0.cl
89
+ */
90
+ spotterNewChatButtonTitle?: string;
91
+ }
92
+
93
+ /**
94
+ * Configuration for customizing Spotter chat UI branding.
95
+ * @group Embed components
96
+ * @version SDK: 1.46.0 | ThoughtSpot: 26.4.0.cl
97
+ */
98
+ export interface SpotterChatViewConfig {
99
+ /**
100
+ * Hides the ThoughtSpot logo/icon in tool response
101
+ * cards. The branding label prefix is controlled
102
+ * separately via `toolResponseCardBrandingLabel`.
103
+ * External MCP tool branding is not affected.
104
+ * @default false
105
+ */
106
+ hideToolResponseCardBranding?: boolean;
107
+ /**
108
+ * Custom label to replace the "ThoughtSpot" prefix
109
+ * in tool response cards. Set to an empty string
110
+ * `''` to hide the prefix entirely. Works
111
+ * independently of `hideToolResponseCardBranding`.
112
+ * External MCP tool branding is not affected.
113
+ */
114
+ toolResponseCardBrandingLabel?: string;
115
+ }
116
+
17
117
  /**
18
118
  * The configuration for the embedded spotterEmbed options.
19
119
  * @group Embed components
@@ -62,7 +162,7 @@ export interface SpotterEmbedViewConfig extends Omit<BaseViewConfig, 'primaryAct
62
162
  *
63
163
  * Supported embed types: `SageEmbed`, `AppEmbed`, `SearchBarEmbed`, `LiveboardEmbed`, `SearchEmbed`
64
164
  * @default true
65
- * @version SDK: 1.41.1 | ThoughtSpot Cloud: 10.14.0.cl
165
+ * @deprecated from SDK 1.46.0 | ThoughtSpot Cloud: 26.3.0.cl
66
166
  * @example
67
167
  * ```js
68
168
  * // Replace <EmbedComponent> with embed component name. For example, SageEmbed, AppEmbed, or SearchBarEmbed
@@ -169,8 +269,7 @@ export interface SpotterEmbedViewConfig extends Omit<BaseViewConfig, 'primaryAct
169
269
  */
170
270
  excludeRuntimeParametersfromURL?: boolean;
171
271
  /**
172
- * enablePastConversationsSidebar : Controls the visibility of the past conversations
173
- * sidebar.
272
+ * updatedSpotterChatPrompt : Controls the updated spotter chat prompt.
174
273
  *
175
274
  * Supported embed types: `SpotterEmbed`
176
275
  * @default false
@@ -178,28 +277,48 @@ export interface SpotterEmbedViewConfig extends Omit<BaseViewConfig, 'primaryAct
178
277
  * ```js
179
278
  * const embed = new SpotterEmbed('#tsEmbed', {
180
279
  * ... //other embed view config
181
- * enablePastConversationsSidebar : true,
280
+ * updatedSpotterChatPrompt : true,
182
281
  * })
183
282
  * ```
184
283
  * @version SDK: 1.45.0 | ThoughtSpot: 26.2.0.cl
185
284
  */
186
- enablePastConversationsSidebar?: boolean;
187
-
285
+ updatedSpotterChatPrompt?: boolean;
188
286
  /**
189
- * updatedSpotterChatPrompt : Controls the updated spotter chat prompt.
287
+ * Configuration for the Spotter sidebar UI customization.
288
+ *
289
+ * Supported embed types: `SpotterEmbed`, `AppEmbed`
290
+ * @example
291
+ * ```js
292
+ * const embed = new SpotterEmbed('#tsEmbed', {
293
+ * ... //other embed view config
294
+ * spotterSidebarConfig: {
295
+ * enablePastConversationsSidebar: true,
296
+ * spotterSidebarTitle: 'My Conversations',
297
+ * spotterSidebarDefaultExpanded: true,
298
+ * },
299
+ * })
300
+ * ```
301
+ * @version SDK: 1.46.0 | ThoughtSpot: 26.3.0.cl
302
+ */
303
+ spotterSidebarConfig?: SpotterSidebarViewConfig;
304
+ /**
305
+ * Configuration for customizing Spotter chat UI
306
+ * branding in tool response cards.
190
307
  *
191
308
  * Supported embed types: `SpotterEmbed`
192
- * @default false
193
309
  * @example
194
310
  * ```js
195
311
  * const embed = new SpotterEmbed('#tsEmbed', {
196
312
  * ... //other embed view config
197
- * updatedSpotterChatPrompt : true,
313
+ * spotterChatConfig: {
314
+ * hideToolResponseCardBranding: true,
315
+ * toolResponseCardBrandingLabel: 'MyBrand',
316
+ * },
198
317
  * })
199
318
  * ```
200
- * @version SDK: 1.45.0 | ThoughtSpot: 26.2.0.cl
319
+ * @version SDK: 1.46.0 | ThoughtSpot: 26.4.0.cl
201
320
  */
202
- updatedSpotterChatPrompt?: boolean;
321
+ spotterChatConfig?: SpotterChatViewConfig;
203
322
  }
204
323
 
205
324
  /**
@@ -246,14 +365,30 @@ export class SpotterEmbed extends TsEmbed {
246
365
  dataPanelV2,
247
366
  showSpotterLimitations,
248
367
  hideSampleQuestions,
249
- enablePastConversationsSidebar,
250
368
  runtimeFilters,
251
369
  excludeRuntimeFiltersfromURL,
252
370
  runtimeParameters,
253
371
  excludeRuntimeParametersfromURL,
254
372
  updatedSpotterChatPrompt,
373
+ spotterSidebarConfig,
374
+ spotterChatConfig,
255
375
  } = this.viewConfig;
256
376
 
377
+ // Extract sidebar config properties
378
+ const {
379
+ enablePastConversationsSidebar,
380
+ spotterSidebarTitle,
381
+ spotterSidebarDefaultExpanded,
382
+ spotterChatRenameLabel,
383
+ spotterChatDeleteLabel,
384
+ spotterDeleteConversationModalTitle,
385
+ spotterPastConversationAlertMessage,
386
+ spotterDocumentationUrl,
387
+ spotterBestPracticesLabel,
388
+ spotterConversationsBatchSize,
389
+ spotterNewChatButtonTitle,
390
+ } = spotterSidebarConfig || {};
391
+
257
392
  if (!worksheetId) {
258
393
  this.handleError({
259
394
  errorType: ErrorDetailsTypes.VALIDATION_ERROR,
@@ -264,27 +399,50 @@ export class SpotterEmbed extends TsEmbed {
264
399
  }
265
400
  const queryParams = this.getBaseQueryParams();
266
401
  queryParams[Param.SpotterEnabled] = true;
267
- if (!isUndefined(disableSourceSelection)) {
268
- queryParams[Param.DisableSourceSelection] = !!disableSourceSelection;
269
- }
270
- if (!isUndefined(hideSourceSelection)) {
271
- queryParams[Param.HideSourceSelection] = !!hideSourceSelection;
272
- }
273
402
 
274
- if (!isUndefined(dataPanelV2)) {
275
- queryParams[Param.DataPanelV2Enabled] = !!dataPanelV2;
276
- }
403
+ // Boolean params
404
+ setParamIfDefined(queryParams, Param.DisableSourceSelection, disableSourceSelection, true);
405
+ setParamIfDefined(queryParams, Param.HideSourceSelection, hideSourceSelection, true);
406
+ setParamIfDefined(queryParams, Param.DataPanelV2Enabled, dataPanelV2, true);
407
+ setParamIfDefined(queryParams, Param.ShowSpotterLimitations, showSpotterLimitations, true);
408
+ setParamIfDefined(queryParams, Param.HideSampleQuestions, hideSampleQuestions, true);
409
+ setParamIfDefined(queryParams, Param.UpdatedSpotterChatPrompt, updatedSpotterChatPrompt, true);
410
+ setParamIfDefined(queryParams, Param.SpotterSidebarDefaultExpanded, spotterSidebarDefaultExpanded, true);
277
411
 
278
- if (!isUndefined(showSpotterLimitations)) {
279
- queryParams[Param.ShowSpotterLimitations] = !!showSpotterLimitations;
280
- }
412
+ // String params
413
+ setParamIfDefined(queryParams, Param.SpotterSidebarTitle, spotterSidebarTitle);
414
+ setParamIfDefined(queryParams, Param.SpotterChatRenameLabel, spotterChatRenameLabel);
415
+ setParamIfDefined(queryParams, Param.SpotterChatDeleteLabel, spotterChatDeleteLabel);
416
+ setParamIfDefined(queryParams, Param.SpotterDeleteConversationModalTitle, spotterDeleteConversationModalTitle);
417
+ setParamIfDefined(queryParams, Param.SpotterPastConversationAlertMessage, spotterPastConversationAlertMessage);
418
+ setParamIfDefined(queryParams, Param.SpotterBestPracticesLabel, spotterBestPracticesLabel);
419
+ setParamIfDefined(queryParams, Param.SpotterConversationsBatchSize, spotterConversationsBatchSize);
420
+ setParamIfDefined(queryParams, Param.SpotterNewChatButtonTitle, spotterNewChatButtonTitle);
281
421
 
282
- if (!isUndefined(hideSampleQuestions)) {
283
- queryParams[Param.HideSampleQuestions] = !!hideSampleQuestions;
422
+ // URL param with validation
423
+ if (spotterDocumentationUrl !== undefined) {
424
+ const [isValid, validationError] = validateHttpUrl(spotterDocumentationUrl);
425
+ if (isValid) {
426
+ queryParams[Param.SpotterDocumentationUrl] = spotterDocumentationUrl;
427
+ } else {
428
+ this.handleError({
429
+ errorType: ErrorDetailsTypes.VALIDATION_ERROR,
430
+ message: ERROR_MESSAGE.INVALID_SPOTTER_DOCUMENTATION_URL,
431
+ code: EmbedErrorCodes.INVALID_URL,
432
+ error: validationError?.message || ERROR_MESSAGE.INVALID_SPOTTER_DOCUMENTATION_URL,
433
+ });
434
+ }
284
435
  }
285
436
 
286
- if (!isUndefined(updatedSpotterChatPrompt)) {
287
- queryParams[Param.UpdatedSpotterChatPrompt] = !!updatedSpotterChatPrompt;
437
+ // Handle spotterChatConfig params
438
+ if (spotterChatConfig) {
439
+ const {
440
+ hideToolResponseCardBranding,
441
+ toolResponseCardBrandingLabel,
442
+ } = spotterChatConfig;
443
+
444
+ setParamIfDefined(queryParams, Param.HideToolResponseCardBranding, hideToolResponseCardBranding, true);
445
+ setParamIfDefined(queryParams, Param.ToolResponseCardBrandingLabel, toolResponseCardBrandingLabel);
288
446
  }
289
447
 
290
448
  return queryParams;
@@ -298,11 +456,12 @@ export class SpotterEmbed extends TsEmbed {
298
456
  excludeRuntimeFiltersfromURL,
299
457
  runtimeParameters,
300
458
  excludeRuntimeParametersfromURL,
301
- enablePastConversationsSidebar,
459
+ spotterSidebarConfig,
302
460
  } = this.viewConfig;
303
461
  const path = 'insights/conv-assist';
304
462
  const queryParams = this.getEmbedParamsObject();
305
463
 
464
+ const enablePastConversationsSidebar = spotterSidebarConfig?.enablePastConversationsSidebar;
306
465
  if (!isUndefined(enablePastConversationsSidebar)) {
307
466
  queryParams[Param.EnablePastConversationsSidebar] = !!enablePastConversationsSidebar;
308
467
  }
@@ -855,6 +855,187 @@ describe('Liveboard/viz embed tests', () => {
855
855
  });
856
856
  });
857
857
 
858
+ describe('personalizedViewId functionality', () => {
859
+ const personalizedViewId = 'view-456-guid';
860
+
861
+ test('should render liveboard with personalizedViewId', async () => {
862
+ const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
863
+ ...defaultViewConfig,
864
+ liveboardId,
865
+ personalizedViewId,
866
+ } as LiveboardViewConfig);
867
+ liveboardEmbed.render();
868
+ await executeAfterWait(() => {
869
+ expectUrlToHaveParamsWithValues(getIFrameSrc(), { view: personalizedViewId });
870
+ });
871
+ });
872
+
873
+ test('should render liveboard with personalizedViewId and activeTabId together', async () => {
874
+ const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
875
+ ...defaultViewConfig,
876
+ liveboardId,
877
+ personalizedViewId,
878
+ activeTabId,
879
+ } as LiveboardViewConfig);
880
+ liveboardEmbed.render();
881
+ await executeAfterWait(() => {
882
+ // URL should be: #/embed/viz/{id}/tab/{tabId}?view={viewId}
883
+ expect(getIFrameSrc()).toMatch(
884
+ new RegExp(
885
+ `#/embed/viz/${liveboardId}/tab/${activeTabId}\\?view=${personalizedViewId}`,
886
+ ),
887
+ );
888
+ });
889
+ });
890
+
891
+ test('should render liveboard with personalizedViewId and vizId together', async () => {
892
+ const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
893
+ ...defaultViewConfig,
894
+ liveboardId,
895
+ personalizedViewId,
896
+ vizId,
897
+ } as LiveboardViewConfig);
898
+ liveboardEmbed.render();
899
+ await executeAfterWait(() => {
900
+ // URL should be: #/embed/viz/{id}/{vizId}?view={viewId}
901
+ expect(getIFrameSrc()).toMatch(
902
+ new RegExp(`#/embed/viz/${liveboardId}/${vizId}\\?view=${personalizedViewId}`),
903
+ );
904
+ });
905
+ });
906
+
907
+ test('should render liveboard with personalizedViewId, activeTabId, and vizId together', async () => {
908
+ const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
909
+ ...defaultViewConfig,
910
+ liveboardId,
911
+ personalizedViewId,
912
+ activeTabId,
913
+ vizId,
914
+ } as LiveboardViewConfig);
915
+ liveboardEmbed.render();
916
+ await executeAfterWait(() => {
917
+ // URL should be: #/embed/viz/{id}/tab/{tabId}/{vizId}?view={viewId}
918
+ expect(getIFrameSrc()).toMatch(
919
+ new RegExp(
920
+ `#/embed/viz/${liveboardId}/tab/${activeTabId}/${vizId}\\?view=${personalizedViewId}`,
921
+ ),
922
+ );
923
+ });
924
+ });
925
+
926
+ test('should not include view param when personalizedViewId is not provided', async () => {
927
+ const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
928
+ ...defaultViewConfig,
929
+ liveboardId,
930
+ } as LiveboardViewConfig);
931
+ liveboardEmbed.render();
932
+ await executeAfterWait(() => {
933
+ expect(getIFrameSrc()).not.toContain('view=');
934
+ });
935
+ });
936
+
937
+ test('should include personalizedViewId in getLiveboardUrl', async () => {
938
+ const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
939
+ ...defaultViewConfig,
940
+ liveboardId,
941
+ personalizedViewId,
942
+ } as LiveboardViewConfig);
943
+ await liveboardEmbed.render();
944
+ expect(liveboardEmbed.getLiveboardUrl()).toBe(
945
+ `http://${thoughtSpotHost}/#/pinboard/${liveboardId}?view=${personalizedViewId}`,
946
+ );
947
+ });
948
+
949
+ test('should include personalizedViewId with activeTabId in getLiveboardUrl', async () => {
950
+ const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
951
+ ...defaultViewConfig,
952
+ liveboardId,
953
+ personalizedViewId,
954
+ activeTabId,
955
+ } as LiveboardViewConfig);
956
+ await liveboardEmbed.render();
957
+ expect(liveboardEmbed.getLiveboardUrl()).toBe(
958
+ `http://${thoughtSpotHost}/#/pinboard/${liveboardId}/tab/${activeTabId}?view=${personalizedViewId}`,
959
+ );
960
+ });
961
+
962
+ test('personalizedViewId should work with runtime filters', async () => {
963
+ const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
964
+ ...defaultViewConfig,
965
+ liveboardId,
966
+ personalizedViewId,
967
+ runtimeFilters: [
968
+ {
969
+ columnName: 'sales',
970
+ operator: RuntimeFilterOp.EQ,
971
+ values: [1000],
972
+ },
973
+ ],
974
+ excludeRuntimeFiltersfromURL: false,
975
+ } as LiveboardViewConfig);
976
+ liveboardEmbed.render();
977
+ await executeAfterWait(() => {
978
+ expectUrlToHaveParamsWithValues(getIFrameSrc(), {
979
+ view: personalizedViewId,
980
+ col1: 'sales',
981
+ op1: 'EQ',
982
+ val1: '1000',
983
+ });
984
+ });
985
+ });
986
+
987
+ describe('backward compatibility with liveboardId?view= workaround', () => {
988
+ const workaroundViewId = 'workaround-view-id';
989
+ const liveboardIdWithView = `${liveboardId}?view=${workaroundViewId}`;
990
+
991
+ test('should extract view from workaround and add at end of URL', async () => {
992
+ const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
993
+ ...defaultViewConfig,
994
+ liveboardId: liveboardIdWithView,
995
+ } as LiveboardViewConfig);
996
+ liveboardEmbed.render();
997
+ await executeAfterWait(() => {
998
+ // URL: #/embed/viz/{cleanId}?view={workaroundViewId}
999
+ expect(getIFrameSrc()).toMatch(
1000
+ new RegExp(`#/embed/viz/${liveboardId}\\?view=${workaroundViewId}`),
1001
+ );
1002
+ });
1003
+ });
1004
+
1005
+ test('should extract view and place after tab when activeTabId is provided', async () => {
1006
+ const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
1007
+ ...defaultViewConfig,
1008
+ liveboardId: liveboardIdWithView,
1009
+ activeTabId,
1010
+ } as LiveboardViewConfig);
1011
+ liveboardEmbed.render();
1012
+ await executeAfterWait(() => {
1013
+ // URL: #/embed/viz/{id}/tab/{tabId}?view={viewId} (view at END, not middle)
1014
+ expect(getIFrameSrc()).toMatch(
1015
+ new RegExp(
1016
+ `#/embed/viz/${liveboardId}/tab/${activeTabId}\\?view=${workaroundViewId}`,
1017
+ ),
1018
+ );
1019
+ });
1020
+ });
1021
+
1022
+ test('should use personalizedViewId over workaround when both provided', async () => {
1023
+ const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
1024
+ ...defaultViewConfig,
1025
+ liveboardId: liveboardIdWithView,
1026
+ personalizedViewId,
1027
+ } as LiveboardViewConfig);
1028
+ liveboardEmbed.render();
1029
+ await executeAfterWait(() => {
1030
+ // personalizedViewId wins, workaround stripped
1031
+ expect(getIFrameSrc()).toMatch(
1032
+ new RegExp(`#/embed/viz/${liveboardId}\\?view=${personalizedViewId}`),
1033
+ );
1034
+ });
1035
+ });
1036
+ });
1037
+ });
1038
+
858
1039
  test('navigateToLiveboard should trigger the navigate event with the correct path', async () => {
859
1040
  mockMessageChannel();
860
1041
  // mock getSessionInfo
@@ -979,6 +1160,40 @@ describe('Liveboard/viz embed tests', () => {
979
1160
  });
980
1161
  });
981
1162
 
1163
+ test('should set hideToolResponseCardBranding parameter in url params via spotterChatConfig', async () => {
1164
+ const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
1165
+ ...defaultViewConfig,
1166
+ liveboardId,
1167
+ spotterChatConfig: {
1168
+ hideToolResponseCardBranding: true,
1169
+ },
1170
+ } as LiveboardViewConfig);
1171
+ await liveboardEmbed.render();
1172
+ await executeAfterWait(() => {
1173
+ expectUrlMatchesWithParams(
1174
+ getIFrameSrc(),
1175
+ `http://${thoughtSpotHost}/?embedApp=true${defaultParams}${prefixParams}&hideToolResponseCardBranding=true#/embed/viz/${liveboardId}`,
1176
+ );
1177
+ });
1178
+ });
1179
+
1180
+ test('should set toolResponseCardBrandingLabel parameter in url params via spotterChatConfig', async () => {
1181
+ const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
1182
+ ...defaultViewConfig,
1183
+ liveboardId,
1184
+ spotterChatConfig: {
1185
+ toolResponseCardBrandingLabel: 'MyBrand',
1186
+ },
1187
+ } as LiveboardViewConfig);
1188
+ await liveboardEmbed.render();
1189
+ await executeAfterWait(() => {
1190
+ expectUrlMatchesWithParams(
1191
+ getIFrameSrc(),
1192
+ `http://${thoughtSpotHost}/?embedApp=true${defaultParams}${prefixParams}&toolResponseCardBrandingLabel=MyBrand#/embed/viz/${liveboardId}`,
1193
+ );
1194
+ });
1195
+ });
1196
+
982
1197
  test('SetActiveTab Hostevent should not trigger the navigate event with the correct path, for vizEmbed', async () => {
983
1198
  const mockProcessTrigger = jest.spyOn(tsEmbed.TsEmbed.prototype, 'trigger');
984
1199
  const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
@@ -1137,7 +1352,12 @@ describe('Liveboard/viz embed tests', () => {
1137
1352
  ) as HTMLIFrameElement;
1138
1353
 
1139
1354
  // should render the generic link
1140
- expect(navigateToLiveboardSpy).toHaveBeenCalledWith(testLiveboardId, 'testVizId', 'testActiveTabId');
1355
+ expect(navigateToLiveboardSpy).toHaveBeenCalledWith(
1356
+ testLiveboardId,
1357
+ 'testVizId',
1358
+ 'testActiveTabId',
1359
+ undefined,
1360
+ );
1141
1361
  expect(iFrame.src).toMatch(/http:\/\/tshost\/.*&isLiveboardEmbed=true.*#$/);
1142
1362
 
1143
1363
  expect(consoleSpy).toHaveBeenCalledTimes(0);
@@ -1195,7 +1415,12 @@ describe('Liveboard/viz embed tests', () => {
1195
1415
  libEmbed.getPreRenderIds().child,
1196
1416
  ) as HTMLIFrameElement;
1197
1417
  // should render the generic link
1198
- expect(navigateToLiveboardSpy).toHaveBeenCalledWith(testLiveboardId, 'testVizId', 'testActiveTabId');
1418
+ expect(navigateToLiveboardSpy).toHaveBeenCalledWith(
1419
+ testLiveboardId,
1420
+ 'testVizId',
1421
+ 'testActiveTabId',
1422
+ undefined,
1423
+ );
1199
1424
  expect(iFrame.src).toMatch(/http:\/\/tshost\/.*&isLiveboardEmbed=true.*#$/);
1200
1425
  expect(consoleSpy).toHaveBeenCalledTimes(0);
1201
1426
  }, 1005);
@@ -1528,9 +1753,13 @@ describe('Liveboard/viz embed tests', () => {
1528
1753
  mockProcessTrigger.mockResolvedValue({ session: 'test' });
1529
1754
  await executeAfterWait(async () => {
1530
1755
  await liveboardEmbed.trigger(HostEvent.Save);
1531
- expect(mockProcessTrigger).toHaveBeenCalledWith(HostEvent.Save, {
1532
- vizId: 'testViz',
1533
- }, undefined);
1756
+ expect(mockProcessTrigger).toHaveBeenCalledWith(
1757
+ HostEvent.Save,
1758
+ {
1759
+ vizId: 'testViz',
1760
+ },
1761
+ undefined,
1762
+ );
1534
1763
  });
1535
1764
  });
1536
1765
  });
@@ -1564,7 +1793,12 @@ describe('Liveboard/viz embed tests', () => {
1564
1793
  liveboardEmbed['executeEmbedContainerReadyCallbacks']();
1565
1794
 
1566
1795
  // Now navigateToLiveboard should be called
1567
- expect(navigateToLiveboardSpy).toHaveBeenCalledWith(liveboardId, vizId, activeTabId);
1796
+ expect(navigateToLiveboardSpy).toHaveBeenCalledWith(
1797
+ liveboardId,
1798
+ vizId,
1799
+ activeTabId,
1800
+ undefined,
1801
+ );
1568
1802
  });
1569
1803
 
1570
1804
  test('should update currentLiveboardState for prerender object when embed container loads', async () => {
@@ -1617,7 +1851,12 @@ describe('Liveboard/viz embed tests', () => {
1617
1851
  liveboardEmbed['beforePrerenderVisible']();
1618
1852
 
1619
1853
  // navigateToLiveboard should be called immediately
1620
- expect(navigateToLiveboardSpy).toHaveBeenCalledWith(liveboardId, vizId, activeTabId);
1854
+ expect(navigateToLiveboardSpy).toHaveBeenCalledWith(
1855
+ liveboardId,
1856
+ vizId,
1857
+ activeTabId,
1858
+ undefined,
1859
+ );
1621
1860
  });
1622
1861
 
1623
1862
  test('should handle beforePrerenderVisible without prerender object', async () => {
@@ -1642,7 +1881,12 @@ describe('Liveboard/viz embed tests', () => {
1642
1881
  liveboardEmbed['executeEmbedContainerReadyCallbacks']();
1643
1882
 
1644
1883
  // navigateToLiveboard should still be called
1645
- expect(navigateToLiveboardSpy).toHaveBeenCalledWith(liveboardId, vizId, activeTabId);
1884
+ expect(navigateToLiveboardSpy).toHaveBeenCalledWith(
1885
+ liveboardId,
1886
+ vizId,
1887
+ activeTabId,
1888
+ undefined,
1889
+ );
1646
1890
  });
1647
1891
 
1648
1892
  test('should work with all liveboard parameters', async () => {
@@ -1666,7 +1910,12 @@ describe('Liveboard/viz embed tests', () => {
1666
1910
  liveboardEmbed['beforePrerenderVisible']();
1667
1911
 
1668
1912
  // Check that all parameters are passed correctly
1669
- expect(navigateToLiveboardSpy).toHaveBeenCalledWith(customLiveboardId, customVizId, customActiveTabId);
1913
+ expect(navigateToLiveboardSpy).toHaveBeenCalledWith(
1914
+ customLiveboardId,
1915
+ customVizId,
1916
+ customActiveTabId,
1917
+ undefined,
1918
+ );
1670
1919
  });
1671
1920
 
1672
1921
  test('should work with minimal liveboard parameters', async () => {
@@ -1684,7 +1933,12 @@ describe('Liveboard/viz embed tests', () => {
1684
1933
  liveboardEmbed['beforePrerenderVisible']();
1685
1934
 
1686
1935
  // Check that undefined parameters are passed correctly
1687
- expect(navigateToLiveboardSpy).toHaveBeenCalledWith(liveboardId, undefined, undefined);
1936
+ expect(navigateToLiveboardSpy).toHaveBeenCalledWith(
1937
+ liveboardId,
1938
+ undefined,
1939
+ undefined,
1940
+ undefined,
1941
+ );
1688
1942
  });
1689
1943
  });
1690
1944