@thoughtspot/visual-embed-sdk 1.24.0-sage.3 → 1.24.1

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 (308) hide show
  1. package/README.md +1 -1
  2. package/cjs/package.json +10 -3
  3. package/cjs/src/auth.d.ts.map +1 -1
  4. package/cjs/src/auth.js +3 -0
  5. package/cjs/src/auth.js.map +1 -1
  6. package/cjs/src/css-variables.d.ts +38 -0
  7. package/cjs/src/css-variables.d.ts.map +1 -1
  8. package/cjs/src/embed/app.d.ts +33 -1
  9. package/cjs/src/embed/app.d.ts.map +1 -1
  10. package/cjs/src/embed/app.js +12 -8
  11. package/cjs/src/embed/app.js.map +1 -1
  12. package/cjs/src/embed/app.spec.js +46 -0
  13. package/cjs/src/embed/app.spec.js.map +1 -1
  14. package/cjs/src/embed/base.d.ts +6 -1
  15. package/cjs/src/embed/base.d.ts.map +1 -1
  16. package/cjs/src/embed/base.js +8 -3
  17. package/cjs/src/embed/base.js.map +1 -1
  18. package/cjs/src/embed/liveboard.d.ts +6 -1
  19. package/cjs/src/embed/liveboard.d.ts.map +1 -1
  20. package/cjs/src/embed/liveboard.js +6 -2
  21. package/cjs/src/embed/liveboard.js.map +1 -1
  22. package/cjs/src/embed/liveboard.spec.js +23 -7
  23. package/cjs/src/embed/liveboard.spec.js.map +1 -1
  24. package/cjs/src/embed/sage.d.ts +1 -0
  25. package/cjs/src/embed/sage.d.ts.map +1 -1
  26. package/cjs/src/embed/sage.js +1 -0
  27. package/cjs/src/embed/sage.js.map +1 -1
  28. package/cjs/src/embed/search-bar.d.ts +7 -0
  29. package/cjs/src/embed/search-bar.d.ts.map +1 -1
  30. package/cjs/src/embed/search-bar.js +6 -2
  31. package/cjs/src/embed/search-bar.js.map +1 -1
  32. package/cjs/src/embed/search.d.ts +16 -2
  33. package/cjs/src/embed/search.d.ts.map +1 -1
  34. package/cjs/src/embed/search.js +9 -2
  35. package/cjs/src/embed/search.js.map +1 -1
  36. package/cjs/src/embed/search.spec.js +49 -0
  37. package/cjs/src/embed/search.spec.js.map +1 -1
  38. package/cjs/src/embed/ts-embed.d.ts +4 -1
  39. package/cjs/src/embed/ts-embed.d.ts.map +1 -1
  40. package/cjs/src/embed/ts-embed.js +31 -8
  41. package/cjs/src/embed/ts-embed.js.map +1 -1
  42. package/cjs/src/embed/ts-embed.spec.js +186 -3
  43. package/cjs/src/embed/ts-embed.spec.js.map +1 -1
  44. package/cjs/src/index.d.ts +4 -3
  45. package/cjs/src/index.d.ts.map +1 -1
  46. package/cjs/src/index.js +5 -1
  47. package/cjs/src/index.js.map +1 -1
  48. package/cjs/src/mixpanel-service.d.ts +1 -0
  49. package/cjs/src/mixpanel-service.d.ts.map +1 -1
  50. package/cjs/src/mixpanel-service.js +12 -3
  51. package/cjs/src/mixpanel-service.js.map +1 -1
  52. package/cjs/src/mixpanel-service.spec.js +13 -3
  53. package/cjs/src/mixpanel-service.spec.js.map +1 -1
  54. package/cjs/src/react/index.d.ts +15 -15
  55. package/cjs/src/react/index.d.ts.map +1 -1
  56. package/cjs/src/react/index.js +7 -3
  57. package/cjs/src/react/index.js.map +1 -1
  58. package/cjs/src/react/index.spec.js +12 -0
  59. package/cjs/src/react/index.spec.js.map +1 -1
  60. package/cjs/src/types.d.ts +216 -21
  61. package/cjs/src/types.d.ts.map +1 -1
  62. package/cjs/src/types.js +133 -13
  63. package/cjs/src/types.js.map +1 -1
  64. package/cjs/src/utils/answerService/answerService.d.ts +34 -0
  65. package/cjs/src/utils/answerService/answerService.d.ts.map +1 -0
  66. package/cjs/src/utils/answerService/answerService.js +142 -0
  67. package/cjs/src/utils/answerService/answerService.js.map +1 -0
  68. package/cjs/src/utils/answerService/answerService.spec.d.ts +1 -0
  69. package/cjs/src/utils/answerService/answerService.spec.d.ts.map +1 -0
  70. package/cjs/src/utils/answerService/answerService.spec.js +1 -0
  71. package/cjs/src/utils/answerService/answerService.spec.js.map +1 -0
  72. package/cjs/src/utils/answerService/graphql-queries.d.ts +6 -0
  73. package/cjs/src/utils/answerService/graphql-queries.d.ts.map +1 -0
  74. package/cjs/src/utils/answerService/graphql-queries.js +123 -0
  75. package/cjs/src/utils/answerService/graphql-queries.js.map +1 -0
  76. package/cjs/src/utils/graphql/answerService/answer-queries.d.ts +5 -0
  77. package/cjs/src/utils/graphql/answerService/answer-queries.d.ts.map +1 -0
  78. package/cjs/src/utils/graphql/answerService/answer-queries.js +80 -0
  79. package/cjs/src/utils/graphql/answerService/answer-queries.js.map +1 -0
  80. package/cjs/src/utils/graphql/answerService/answerService.d.ts +61 -0
  81. package/cjs/src/utils/graphql/answerService/answerService.d.ts.map +1 -0
  82. package/cjs/src/utils/graphql/answerService/answerService.js +182 -0
  83. package/cjs/src/utils/graphql/answerService/answerService.js.map +1 -0
  84. package/cjs/src/utils/graphql/answerService/answerService.spec.d.ts +2 -0
  85. package/cjs/src/utils/graphql/answerService/answerService.spec.d.ts.map +1 -0
  86. package/cjs/src/utils/graphql/answerService/answerService.spec.js +201 -0
  87. package/cjs/src/utils/graphql/answerService/answerService.spec.js.map +1 -0
  88. package/cjs/src/utils/graphql/answerService/graphql-queries.d.ts +5 -0
  89. package/cjs/src/utils/graphql/answerService/graphql-queries.d.ts.map +1 -0
  90. package/cjs/src/utils/graphql/answerService/graphql-queries.js +80 -0
  91. package/cjs/src/utils/graphql/answerService/graphql-queries.js.map +1 -0
  92. package/cjs/src/utils/graphql/graphql-request.d.ts +15 -0
  93. package/cjs/src/utils/graphql/graphql-request.d.ts.map +1 -0
  94. package/cjs/src/utils/graphql/graphql-request.js +40 -0
  95. package/cjs/src/utils/graphql/graphql-request.js.map +1 -0
  96. package/cjs/src/utils/graphql/sourceService.d.ts +8 -0
  97. package/cjs/src/utils/graphql/sourceService.d.ts.map +1 -0
  98. package/cjs/src/utils/graphql/sourceService.js +69 -0
  99. package/cjs/src/utils/graphql/sourceService.js.map +1 -0
  100. package/cjs/src/utils/graphql/sourceService.spec.d.ts +2 -0
  101. package/cjs/src/utils/graphql/sourceService.spec.d.ts.map +1 -0
  102. package/cjs/src/utils/graphql/sourceService.spec.js +12 -0
  103. package/cjs/src/utils/graphql/sourceService.spec.js.map +1 -0
  104. package/cjs/src/utils/processData.d.ts.map +1 -1
  105. package/cjs/src/utils/processData.js +7 -11
  106. package/cjs/src/utils/processData.js.map +1 -1
  107. package/cjs/src/utils/processData.spec.js +13 -17
  108. package/cjs/src/utils/processData.spec.js.map +1 -1
  109. package/cjs/src/utils.d.ts +13 -1
  110. package/cjs/src/utils.d.ts.map +1 -1
  111. package/cjs/src/utils.js +45 -1
  112. package/cjs/src/utils.js.map +1 -1
  113. package/cjs/src/utils.spec.js +24 -0
  114. package/cjs/src/utils.spec.js.map +1 -1
  115. package/dist/src/auth.d.ts.map +1 -1
  116. package/dist/src/css-variables.d.ts +38 -0
  117. package/dist/src/css-variables.d.ts.map +1 -1
  118. package/dist/src/embed/app.d.ts +33 -1
  119. package/dist/src/embed/app.d.ts.map +1 -1
  120. package/dist/src/embed/base.d.ts +6 -1
  121. package/dist/src/embed/base.d.ts.map +1 -1
  122. package/dist/src/embed/liveboard.d.ts +6 -1
  123. package/dist/src/embed/liveboard.d.ts.map +1 -1
  124. package/dist/src/embed/sage.d.ts +1 -0
  125. package/dist/src/embed/sage.d.ts.map +1 -1
  126. package/dist/src/embed/search-bar.d.ts +7 -0
  127. package/dist/src/embed/search-bar.d.ts.map +1 -1
  128. package/dist/src/embed/search.d.ts +16 -2
  129. package/dist/src/embed/search.d.ts.map +1 -1
  130. package/dist/src/embed/ts-embed.d.ts +4 -1
  131. package/dist/src/embed/ts-embed.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/mixpanel-service.d.ts +1 -0
  135. package/dist/src/mixpanel-service.d.ts.map +1 -1
  136. package/dist/src/react/index.d.ts +15 -15
  137. package/dist/src/react/index.d.ts.map +1 -1
  138. package/dist/src/types.d.ts +216 -21
  139. package/dist/src/types.d.ts.map +1 -1
  140. package/dist/src/utils/graphql/answerService/answer-queries.d.ts +5 -0
  141. package/dist/src/utils/graphql/answerService/answer-queries.d.ts.map +1 -0
  142. package/dist/src/utils/graphql/answerService/answerService.d.ts +61 -0
  143. package/dist/src/utils/graphql/answerService/answerService.d.ts.map +1 -0
  144. package/dist/src/utils/graphql/answerService/answerService.spec.d.ts +2 -0
  145. package/dist/src/utils/graphql/answerService/answerService.spec.d.ts.map +1 -0
  146. package/dist/src/utils/graphql/graphql-request.d.ts +15 -0
  147. package/dist/src/utils/graphql/graphql-request.d.ts.map +1 -0
  148. package/dist/src/utils/graphql/sourceService.d.ts +8 -0
  149. package/dist/src/utils/graphql/sourceService.d.ts.map +1 -0
  150. package/dist/src/utils/graphql/sourceService.spec.d.ts +2 -0
  151. package/dist/src/utils/graphql/sourceService.spec.d.ts.map +1 -0
  152. package/dist/src/utils/processData.d.ts.map +1 -1
  153. package/dist/src/utils.d.ts +13 -1
  154. package/dist/src/utils.d.ts.map +1 -1
  155. package/dist/tsembed-react.es.js +603 -96
  156. package/dist/tsembed-react.js +596 -95
  157. package/dist/tsembed.es.js +655 -100
  158. package/dist/tsembed.js +649 -99
  159. package/dist/visual-embed-sdk-react-full.d.ts +615 -260
  160. package/dist/visual-embed-sdk-react.d.ts +617 -262
  161. package/dist/visual-embed-sdk.d.ts +380 -26
  162. package/lib/package.json +10 -3
  163. package/lib/src/.index.d.ts.swp +0 -0
  164. package/lib/src/auth.d.ts.map +1 -1
  165. package/lib/src/auth.js +3 -0
  166. package/lib/src/auth.js.map +1 -1
  167. package/lib/src/css-variables.d.ts +38 -0
  168. package/lib/src/css-variables.d.ts.map +1 -1
  169. package/lib/src/embed/app.d.ts +33 -1
  170. package/lib/src/embed/app.d.ts.map +1 -1
  171. package/lib/src/embed/app.js +12 -8
  172. package/lib/src/embed/app.js.map +1 -1
  173. package/lib/src/embed/app.spec.js +46 -0
  174. package/lib/src/embed/app.spec.js.map +1 -1
  175. package/lib/src/embed/base.d.ts +6 -1
  176. package/lib/src/embed/base.d.ts.map +1 -1
  177. package/lib/src/embed/base.js +8 -3
  178. package/lib/src/embed/base.js.map +1 -1
  179. package/lib/src/embed/liveboard.d.ts +6 -1
  180. package/lib/src/embed/liveboard.d.ts.map +1 -1
  181. package/lib/src/embed/liveboard.js +7 -3
  182. package/lib/src/embed/liveboard.js.map +1 -1
  183. package/lib/src/embed/liveboard.spec.js +23 -7
  184. package/lib/src/embed/liveboard.spec.js.map +1 -1
  185. package/lib/src/embed/sage.d.ts +1 -0
  186. package/lib/src/embed/sage.d.ts.map +1 -1
  187. package/lib/src/embed/sage.js +1 -0
  188. package/lib/src/embed/sage.js.map +1 -1
  189. package/lib/src/embed/search-bar.d.ts +7 -0
  190. package/lib/src/embed/search-bar.d.ts.map +1 -1
  191. package/lib/src/embed/search-bar.js +7 -3
  192. package/lib/src/embed/search-bar.js.map +1 -1
  193. package/lib/src/embed/search.d.ts +16 -2
  194. package/lib/src/embed/search.d.ts.map +1 -1
  195. package/lib/src/embed/search.js +10 -3
  196. package/lib/src/embed/search.js.map +1 -1
  197. package/lib/src/embed/search.spec.js +49 -0
  198. package/lib/src/embed/search.spec.js.map +1 -1
  199. package/lib/src/embed/ts-embed.d.ts +4 -1
  200. package/lib/src/embed/ts-embed.d.ts.map +1 -1
  201. package/lib/src/embed/ts-embed.js +32 -9
  202. package/lib/src/embed/ts-embed.js.map +1 -1
  203. package/lib/src/embed/ts-embed.spec.js +187 -4
  204. package/lib/src/embed/ts-embed.spec.js.map +1 -1
  205. package/lib/src/index.d.ts +4 -3
  206. package/lib/src/index.d.ts.map +1 -1
  207. package/lib/src/index.js +4 -3
  208. package/lib/src/index.js.map +1 -1
  209. package/lib/src/mixpanel-service.d.ts +1 -0
  210. package/lib/src/mixpanel-service.d.ts.map +1 -1
  211. package/lib/src/mixpanel-service.js +12 -3
  212. package/lib/src/mixpanel-service.js.map +1 -1
  213. package/lib/src/mixpanel-service.spec.js +13 -3
  214. package/lib/src/mixpanel-service.spec.js.map +1 -1
  215. package/lib/src/react/index.d.ts +15 -15
  216. package/lib/src/react/index.d.ts.map +1 -1
  217. package/lib/src/react/index.js +5 -3
  218. package/lib/src/react/index.js.map +1 -1
  219. package/lib/src/react/index.spec.js +13 -1
  220. package/lib/src/react/index.spec.js.map +1 -1
  221. package/lib/src/types.d.ts +216 -21
  222. package/lib/src/types.d.ts.map +1 -1
  223. package/lib/src/types.js +132 -12
  224. package/lib/src/types.js.map +1 -1
  225. package/lib/src/utils/answerService/answerService.d.ts +34 -0
  226. package/lib/src/utils/answerService/answerService.d.ts.map +1 -0
  227. package/lib/src/utils/answerService/answerService.js +137 -0
  228. package/lib/src/utils/answerService/answerService.js.map +1 -0
  229. package/lib/src/utils/answerService/answerService.spec.d.ts +1 -0
  230. package/lib/src/utils/answerService/answerService.spec.d.ts.map +1 -0
  231. package/lib/src/utils/answerService/answerService.spec.js +1 -0
  232. package/lib/src/utils/answerService/answerService.spec.js.map +1 -0
  233. package/lib/src/utils/answerService/graphql-queries.d.ts +6 -0
  234. package/lib/src/utils/answerService/graphql-queries.d.ts.map +1 -0
  235. package/lib/src/utils/answerService/graphql-queries.js +120 -0
  236. package/lib/src/utils/answerService/graphql-queries.js.map +1 -0
  237. package/lib/src/utils/graphql/answerService/answer-queries.d.ts +5 -0
  238. package/lib/src/utils/graphql/answerService/answer-queries.d.ts.map +1 -0
  239. package/lib/src/utils/graphql/answerService/answer-queries.js +77 -0
  240. package/lib/src/utils/graphql/answerService/answer-queries.js.map +1 -0
  241. package/lib/src/utils/graphql/answerService/answerService.d.ts +61 -0
  242. package/lib/src/utils/graphql/answerService/answerService.d.ts.map +1 -0
  243. package/lib/src/utils/graphql/answerService/answerService.js +177 -0
  244. package/lib/src/utils/graphql/answerService/answerService.js.map +1 -0
  245. package/lib/src/utils/graphql/answerService/answerService.spec.d.ts +2 -0
  246. package/lib/src/utils/graphql/answerService/answerService.spec.d.ts.map +1 -0
  247. package/lib/src/utils/graphql/answerService/answerService.spec.js +199 -0
  248. package/lib/src/utils/graphql/answerService/answerService.spec.js.map +1 -0
  249. package/lib/src/utils/graphql/answerService/graphql-queries.d.ts +5 -0
  250. package/lib/src/utils/graphql/answerService/graphql-queries.d.ts.map +1 -0
  251. package/lib/src/utils/graphql/answerService/graphql-queries.js +77 -0
  252. package/lib/src/utils/graphql/answerService/graphql-queries.js.map +1 -0
  253. package/lib/src/utils/graphql/graphql-request.d.ts +15 -0
  254. package/lib/src/utils/graphql/graphql-request.d.ts.map +1 -0
  255. package/lib/src/utils/graphql/graphql-request.js +36 -0
  256. package/lib/src/utils/graphql/graphql-request.js.map +1 -0
  257. package/lib/src/utils/graphql/sourceService.d.ts +8 -0
  258. package/lib/src/utils/graphql/sourceService.d.ts.map +1 -0
  259. package/lib/src/utils/graphql/sourceService.js +65 -0
  260. package/lib/src/utils/graphql/sourceService.js.map +1 -0
  261. package/lib/src/utils/graphql/sourceService.spec.d.ts +2 -0
  262. package/lib/src/utils/graphql/sourceService.spec.d.ts.map +1 -0
  263. package/lib/src/utils/graphql/sourceService.spec.js +10 -0
  264. package/lib/src/utils/graphql/sourceService.spec.js.map +1 -0
  265. package/lib/src/utils/processData.d.ts.map +1 -1
  266. package/lib/src/utils/processData.js +8 -12
  267. package/lib/src/utils/processData.js.map +1 -1
  268. package/lib/src/utils/processData.spec.js +14 -18
  269. package/lib/src/utils/processData.spec.js.map +1 -1
  270. package/lib/src/utils.d.ts +13 -1
  271. package/lib/src/utils.d.ts.map +1 -1
  272. package/lib/src/utils.js +41 -0
  273. package/lib/src/utils.js.map +1 -1
  274. package/lib/src/utils.spec.js +25 -1
  275. package/lib/src/utils.spec.js.map +1 -1
  276. package/lib/src/visual-embed-sdk.d.ts +389 -30
  277. package/package.json +10 -3
  278. package/src/auth.ts +6 -3
  279. package/src/css-variables.ts +47 -0
  280. package/src/embed/app.spec.ts +63 -0
  281. package/src/embed/app.ts +52 -15
  282. package/src/embed/base.ts +11 -6
  283. package/src/embed/liveboard.spec.ts +29 -10
  284. package/src/embed/liveboard.ts +13 -2
  285. package/src/embed/sage.ts +2 -0
  286. package/src/embed/search-bar.tsx +21 -6
  287. package/src/embed/search.spec.ts +61 -0
  288. package/src/embed/search.ts +36 -3
  289. package/src/embed/ts-embed.spec.ts +211 -8
  290. package/src/embed/ts-embed.ts +34 -9
  291. package/src/index.ts +9 -0
  292. package/src/mixpanel-service.spec.ts +13 -3
  293. package/src/mixpanel-service.ts +11 -3
  294. package/src/react/index.spec.tsx +33 -2
  295. package/src/react/index.tsx +37 -26
  296. package/src/types.ts +305 -103
  297. package/src/utils/graphql/answerService/answer-queries.ts +80 -0
  298. package/src/utils/graphql/answerService/answerService.spec.ts +231 -0
  299. package/src/utils/graphql/answerService/answerService.ts +234 -0
  300. package/src/utils/graphql/graphql-request.ts +45 -0
  301. package/src/utils/graphql/sourceService.spec.ts +10 -0
  302. package/src/utils/graphql/sourceService.ts +71 -0
  303. package/src/utils/processData.spec.ts +15 -25
  304. package/src/utils/processData.ts +13 -15
  305. package/src/utils.spec.ts +31 -0
  306. package/src/utils.ts +47 -0
  307. package/src/utils/answerService.spec.ts +0 -41
  308. package/src/utils/answerService.ts +0 -63
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thoughtspot/visual-embed-sdk",
3
- "version": "1.24.0-sage.3",
3
+ "version": "1.24.1",
4
4
  "description": "ThoughtSpot Embed SDK",
5
5
  "module": "lib/src/index.js",
6
6
  "main": "dist/tsembed.js",
@@ -35,6 +35,12 @@
35
35
  ]
36
36
  }
37
37
  },
38
+ "size-limit": [
39
+ {
40
+ "path": "dist/tsembed.js",
41
+ "limit": "40 kB"
42
+ }
43
+ ],
38
44
  "scripts": {
39
45
  "lint": "eslint 'src/**'",
40
46
  "lint:fix": "eslint 'src/**/*.*' --fix",
@@ -59,6 +65,7 @@
59
65
  "posttest": "cat ./coverage/sdk/lcov.info | coveralls",
60
66
  "is-publish-allowed": "node scripts/is-publish-allowed.js",
61
67
  "prepublishOnly": "npm run is-publish-allowed && npm run test && npm run tsc && npm run bundle-dts-file && npm run bundle-dts && npm run bundle-dts-react && npm run bundle-dts-react-full && npm run build",
68
+ "check-size": "npm run build && size-limit",
62
69
  "publish-dev": "npm publish --tag dev",
63
70
  "publish-prod": "npm publish --tag latest"
64
71
  },
@@ -89,6 +96,7 @@
89
96
  "@rollup/plugin-json": "^4.1.0",
90
97
  "@rollup/plugin-node-resolve": "^11.2.1",
91
98
  "@rollup/plugin-replace": "^5.0.2",
99
+ "@size-limit/preset-big-lib": "^8.2.6",
92
100
  "@testing-library/dom": "^7.31.0",
93
101
  "@testing-library/jest-dom": "^5.14.1",
94
102
  "@testing-library/react": "^11.2.7",
@@ -131,11 +139,10 @@
131
139
  "identity-obj-proxy": "^3.0.0",
132
140
  "istanbul-merge": "^1.1.1",
133
141
  "jest": "^26.6.3",
134
- "jest-puppeteer": "^4.4.0",
142
+ "jest-fetch-mock": "^3.0.3",
135
143
  "jsdom": "^17.0.0",
136
144
  "node-sass": "^8.0.0",
137
145
  "prettier": "2.1.2",
138
- "puppeteer": "^7.0.1",
139
146
  "react": "^16.14.0",
140
147
  "react-dom": "^16.14.0",
141
148
  "react-resizable": "^1.11.0",
package/src/auth.ts CHANGED
@@ -22,7 +22,7 @@ export let samlAuthWindow: Window = null;
22
22
  export let samlCompletionPromise: Promise<void> = null;
23
23
  let sessionInfo: sessionInfoInterface = null;
24
24
  let sessionInfoResolver: (value: sessionInfoInterface) => void = null;
25
- const sessionInfoPromise = new Promise((resolve:(value: sessionInfoInterface) => void) => {
25
+ const sessionInfoPromise = new Promise((resolve: (value: sessionInfoInterface) => void) => {
26
26
  sessionInfoResolver = resolve;
27
27
  });
28
28
  let releaseVersion = '';
@@ -44,7 +44,7 @@ interface sessionInfoInterface {
44
44
  userGUID: any;
45
45
  isPublicUser: any;
46
46
  mixpanelToken: any;
47
- [key:string]:any;
47
+ [key: string]: any;
48
48
  }
49
49
 
50
50
  /**
@@ -213,7 +213,7 @@ export const initSession = (sessionDetails: sessionInfoInterface) => {
213
213
  }
214
214
  };
215
215
 
216
- export const getSessionDetails = (sessionInfoResp: any):sessionInfoInterface => {
216
+ export const getSessionDetails = (sessionInfoResp: any): sessionInfoInterface => {
217
217
  const devMixpanelToken = sessionInfoResp.configInfo.mixpanelConfig.devSdkKey;
218
218
  const prodMixpanelToken = sessionInfoResp.configInfo.mixpanelConfig.prodSdkKey;
219
219
  const mixpanelToken = sessionInfoResp.configInfo.mixpanelConfig.production
@@ -223,6 +223,9 @@ export const getSessionDetails = (sessionInfoResp: any):sessionInfoInterface =>
223
223
  userGUID: sessionInfoResp.userGUID,
224
224
  mixpanelToken,
225
225
  isPublicUser: sessionInfoResp.configInfo.isPublicUser,
226
+ releaseVersion: sessionInfoResp.releaseVersion,
227
+ clusterId: sessionInfoResp.configInfo.selfClusterId,
228
+ clusterName: sessionInfoResp.configInfo.selfClusterName,
226
229
  ...sessionInfoResp,
227
230
  };
228
231
  };
@@ -23,6 +23,13 @@ export interface CustomCssVariables {
23
23
  */
24
24
  '--ts-var-root-text-transform'?: string;
25
25
 
26
+ /**
27
+ * application color, it replaces #2770EF which is rd-color(blue,base) and
28
+ * its similar colors like rd-color(blue,60), rd-color(accent, base) and
29
+ * rd-color(text, accent) in the app.
30
+ */
31
+ '--ts-var-application-color'?: string;
32
+
26
33
  /**
27
34
  * Background color of the top navigation panel.
28
35
  */
@@ -345,6 +352,11 @@ export interface CustomCssVariables {
345
352
  */
346
353
  '--ts-var-menu--hover-background'?: string;
347
354
 
355
+ /**
356
+ * Text color for selected menu items.
357
+ */
358
+ '--ts-var-menu-selected-text-color'?: string;
359
+
348
360
  /**
349
361
  * Background color of the dialogs.
350
362
  */
@@ -369,4 +381,39 @@ export interface CustomCssVariables {
369
381
  * Background color of the footer area on dialogs.
370
382
  */
371
383
  '--ts-var-dialog-footer-background'?: string;
384
+
385
+ /**
386
+ * Background for selected state in list
387
+ */
388
+ '--ts-var-list-selected-background'?: string;
389
+
390
+ /**
391
+ * Background for hover state in list
392
+ */
393
+ '--ts-var-list-hover-background'?: string;
394
+
395
+ /**
396
+ * Background for hover state in segment control.
397
+ */
398
+ '--ts-var-segment-control-hover-background'?: string;
399
+
400
+ /**
401
+ * Text color for slected item in modular home's watchlist.
402
+ */
403
+ '--ts-var-home-watchlist-selected-text-color'?: string;
404
+
405
+ /**
406
+ * Text color for favorite carousel find your favorites card in modular home.
407
+ */
408
+ '--ts-var-home-favorite-suggestion-card-text-color'?: string;
409
+
410
+ /**
411
+ * Icon color for favorite carousel find your favorites card in modular home.
412
+ */
413
+ '--ts-var-home-favorite-suggestion-card-icon-color'?: string;
414
+
415
+ /**
416
+ * Background for favorite carousel find your favorites card in modular home.
417
+ */
418
+ '--ts-var-home-favorite-suggestion-card-background'?: string;
372
419
  }
@@ -144,6 +144,39 @@ describe('App embed tests', () => {
144
144
  });
145
145
  });
146
146
  }
147
+
148
+ const pageRouteMapForModularHome = {
149
+ [Page.Search]: 'answer',
150
+ [Page.Answers]: 'home/answers',
151
+ [Page.Pinboards]: 'home/liveboards',
152
+ [Page.Liveboards]: 'home/liveboards',
153
+ [Page.Data]: 'data/tables',
154
+ [Page.Home]: 'home',
155
+ [Page.SpotIQ]: 'home/spotiq-analysis',
156
+ };
157
+
158
+ const pageIdsForModularHomes = Object.keys(pageRouteMapForModularHome);
159
+ for (let i = 0; i < pageIdsForModularHomes.length; i++) {
160
+ const pageIdsForModularHome = pageIdsForModularHomes[i];
161
+
162
+ test(`${pageIdsForModularHome}`, async () => {
163
+ const route = pageRouteMap[pageIdsForModularHome];
164
+ const appEmbed = new AppEmbed(getRootEl(), {
165
+ ...defaultViewConfig,
166
+ modularHomeExperience: true,
167
+ pageId: pageIdsForModularHome as Page,
168
+ } as AppViewConfig);
169
+ appEmbed.render();
170
+
171
+ await executeAfterWait(() => {
172
+ expectUrlMatchesWithParams(
173
+ getIFrameSrc(),
174
+ `http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=true&profileAndHelpInNavBarHidden=false${defaultParams}${defaultParamsPost}#/${route}`,
175
+ );
176
+ cleanUp();
177
+ });
178
+ });
179
+ }
147
180
  });
148
181
 
149
182
  test('should navigate to a path', async () => {
@@ -269,6 +302,36 @@ describe('App embed tests', () => {
269
302
  });
270
303
  });
271
304
 
305
+ test('Should add modularHomeExperience flag to the iframe src', async () => {
306
+ const appEmbed = new AppEmbed(getRootEl(), {
307
+ ...defaultViewConfig,
308
+ modularHomeExperience: true,
309
+ } as AppViewConfig);
310
+
311
+ appEmbed.render();
312
+ await executeAfterWait(() => {
313
+ expectUrlMatchesWithParams(
314
+ getIFrameSrc(),
315
+ `http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=true&profileAndHelpInNavBarHidden=false&modularHomeExperience=true${defaultParams}${defaultParamsPost}#/home`,
316
+ );
317
+ });
318
+ });
319
+
320
+ test('Should add hideHomepageLeftNav flag to the iframe src', async () => {
321
+ const appEmbed = new AppEmbed(getRootEl(), {
322
+ ...defaultViewConfig,
323
+ hideHomepageLeftNav: false,
324
+ } as AppViewConfig);
325
+
326
+ appEmbed.render();
327
+ await executeAfterWait(() => {
328
+ expectUrlMatchesWithParams(
329
+ getIFrameSrc(),
330
+ `http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=true&profileAndHelpInNavBarHidden=false&modularHomeExperience=false&hideHomepageLeftNav=false${defaultParams}${defaultParamsPost}#/home`,
331
+ );
332
+ });
333
+ });
334
+
272
335
  test('should register event handlers to adjust iframe height', async () => {
273
336
  const onSpy = jest.spyOn(AppEmbed.prototype, 'on')
274
337
  .mockImplementation((event, callback) => {
package/src/embed/app.ts CHANGED
@@ -59,8 +59,19 @@ export interface AppViewConfig extends ViewConfig {
59
59
  /**
60
60
  * If true, the main navigation bar within the ThoughtSpot app
61
61
  * is displayed. By default, the navigation bar is hidden.
62
+ * This flag also control the homepage left nav-bar.
62
63
  */
63
64
  showPrimaryNavbar?: boolean;
65
+ /**
66
+ * Flag to control Homepage Left Nav Bar
67
+ * If showPrimaryNavbar is true, ie navigation bar(Global nav-bar) and Homepage left
68
+ * nav-bar is visible, this flag will only hide the homepage left nav.
69
+ * Precedence of showPrimaryNavbar flag > hideHomepageLeftNav flag.
70
+ *
71
+ * @default false
72
+ * @version SDK: 1.27.0 | Thoughtspot: 9.8.0.cl
73
+ */
74
+ hideHomepageLeftNav?: boolean;
64
75
  /**
65
76
  * If true, help and profile buttons will hide on NavBar. By default,
66
77
  * they are shown.
@@ -79,12 +90,24 @@ export interface AppViewConfig extends ViewConfig {
79
90
  /**
80
91
  * A URL path within the app that is to be embedded.
81
92
  * If both path and pageId attributes are defined, the path definition
82
- * takes precedence.
93
+ * takes precedence. This is the path post the `#/` in the URL of the standalone
94
+ * ThoughtSpot app. Use this to open the embedded view to a specific path.
95
+ *
96
+ * For eg, if you want the component to open to a specific liveboard
97
+ * you could set the path to `pinboard/<liveboardId>/tab/<tabId>`.
98
+ *
99
+ * @example
100
+ * ```
101
+ * <AppEmbed path="pinboard/1234/tab/7464" />
102
+ * ```
83
103
  */
84
104
  path?: string;
85
105
  /**
86
106
  * The application page to set as the start page
87
107
  * in the embedded view.
108
+ *
109
+ * Use this to open to particular page in the app. To open to a specific
110
+ * path within the app, use the `path` attribute which is more flexible.
88
111
  */
89
112
  pageId?: Page;
90
113
  /**
@@ -111,13 +134,13 @@ export interface AppViewConfig extends ViewConfig {
111
134
  * @version SDK: 1.13.0 | ThoughtSpot: 8.5.0.cl, 8.8.1-sw
112
135
  */
113
136
  enableSearchAssist?: boolean;
114
- /**
115
- * If set to true, the embedded object container dynamically resizes
116
- * according to the height of the pages which support fullHeight mode.
117
- *
118
- * @version SDK: 1.21.0 | ThoughtSpot: 9.4.0.cl, 9.4.0-sw
119
- */
120
- fullHeight?:boolean;
137
+ /**
138
+ * If set to true, the embedded object container dynamically resizes
139
+ * according to the height of the pages which support fullHeight mode.
140
+ *
141
+ * @version SDK: 1.21.0 | ThoughtSpot: 9.4.0.cl, 9.4.0-sw
142
+ */
143
+ fullHeight?: boolean;
121
144
  /**
122
145
  * Flag to control Data panel experience
123
146
  *
@@ -126,6 +149,13 @@ export interface AppViewConfig extends ViewConfig {
126
149
  * @hidden
127
150
  */
128
151
  dataPanelV2?: boolean;
152
+ /**
153
+ * Flag to control new Modular Home experience
154
+ *
155
+ * @default false
156
+ * @version SDK: 1.27.0 | Thoughtspot: 9.8.0.cl
157
+ */
158
+ modularHomeExperience?: boolean;
129
159
  }
130
160
 
131
161
  /**
@@ -138,6 +168,8 @@ export class AppEmbed extends V1Embed {
138
168
 
139
169
  private defaultHeight = '100%';
140
170
 
171
+ protected embedComponentType = 'AppEmbed';
172
+
141
173
  // eslint-disable-next-line no-useless-constructor
142
174
  constructor(domSelector: DOMSelector, viewConfig: AppViewConfig) {
143
175
  super(domSelector, viewConfig);
@@ -164,6 +196,8 @@ export class AppEmbed extends V1Embed {
164
196
  enableSearchAssist,
165
197
  fullHeight,
166
198
  dataPanelV2 = false,
199
+ hideHomepageLeftNav = false,
200
+ modularHomeExperience = false,
167
201
  } = this.viewConfig;
168
202
 
169
203
  let params = {};
@@ -194,6 +228,8 @@ export class AppEmbed extends V1Embed {
194
228
  }
195
229
 
196
230
  params[Param.DataPanelV2Enabled] = dataPanelV2;
231
+ params[Param.HideHomepageLeftNav] = hideHomepageLeftNav;
232
+ params[Param.ModularHomeExperienceEnabled] = modularHomeExperience;
197
233
  const queryParams = getQueryParamString(params, true);
198
234
 
199
235
  return queryParams;
@@ -205,8 +241,8 @@ export class AppEmbed extends V1Embed {
205
241
  * @param pageId The ID of the page to be embedded.
206
242
  */
207
243
  private getIFrameSrc() {
208
- const { pageId, path } = this.viewConfig;
209
- const pageRoute = this.formatPath(path) || this.getPageRoute(pageId);
244
+ const { pageId, path, modularHomeExperience } = this.viewConfig;
245
+ const pageRoute = this.formatPath(path) || this.getPageRoute(pageId, modularHomeExperience);
210
246
  let url = `${this.getRootIframeSrc()}/${pageRoute}`;
211
247
 
212
248
  const tsPostHashParams = this.getThoughtSpotPostUrlParams();
@@ -243,21 +279,22 @@ export class AppEmbed extends V1Embed {
243
279
  * Gets the ThoughtSpot route of the page for a particular page ID.
244
280
  *
245
281
  * @param pageId The identifier for a page in the ThoughtSpot app.
282
+ * @param modularHomeExperience
246
283
  */
247
- private getPageRoute(pageId: Page) {
284
+ private getPageRoute(pageId: Page, modularHomeExperience = false) {
248
285
  switch (pageId) {
249
286
  case Page.Search:
250
287
  return 'answer';
251
288
  case Page.Answers:
252
- return 'answers';
289
+ return modularHomeExperience ? 'home/answers' : 'answers';
253
290
  case Page.Liveboards:
254
- return 'pinboards';
291
+ return modularHomeExperience ? 'home/liveboards' : 'pinboards';
255
292
  case Page.Pinboards:
256
- return 'pinboards';
293
+ return modularHomeExperience ? 'home/liveboards' : 'pinboards';
257
294
  case Page.Data:
258
295
  return 'data/tables';
259
296
  case Page.SpotIQ:
260
- return 'insights/results';
297
+ return modularHomeExperience ? 'home/spotiq-analysis' : 'insights/results';
261
298
  case Page.Home:
262
299
  default:
263
300
  return 'home';
package/src/embed/base.ts CHANGED
@@ -44,13 +44,13 @@ export interface executeTMLInput {
44
44
 
45
45
  export interface exportTMLInput {
46
46
  metadata: {
47
- identifier: string;
48
- type?: 'LIVEBOARD' | 'ANSWER' | 'LOGICAL_TABLE' | 'CONNECTION';
47
+ identifier: string;
48
+ type?: 'LIVEBOARD' | 'ANSWER' | 'LOGICAL_TABLE' | 'CONNECTION';
49
49
  }[];
50
50
  export_associated?: boolean;
51
51
  export_fqn?: boolean;
52
52
  edoc_format?: 'YAML' | 'JSON';
53
- }
53
+ }
54
54
 
55
55
  export let authPromise: Promise<boolean>;
56
56
  /**
@@ -192,9 +192,9 @@ export const init = (embedConfig: EmbedConfig): AuthEventEmitter => {
192
192
  setAuthEE(authEE);
193
193
  handleAuth();
194
194
 
195
+ const { password, ...configToTrack } = config;
195
196
  uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_CALLED_INIT, {
196
- authType: config.authType,
197
- host: config.thoughtSpotHost,
197
+ ...configToTrack,
198
198
  usedCustomizationSheet: embedConfig.customizations?.style?.customCSSUrl != null,
199
199
  usedCustomizationVariables: embedConfig.customizations?.style?.customCSS?.variables != null,
200
200
  usedCustomizationRules:
@@ -258,8 +258,10 @@ export const renderInQueue = (fn: (next?: (val?: any) => void) => Promise<any>):
258
258
 
259
259
  /**
260
260
  * Imports TML representation of the metadata objects into ThoughtSpot.
261
+ *
261
262
  * @param data
262
263
  * @version SDK: 1.23.0 | ThoughtSpot: 9.4.0.cl
264
+ * @group Global methods
263
265
  */
264
266
  export const executeTML = async (data: executeTMLInput): Promise<any> => {
265
267
  const { thoughtSpotHost, authType } = config;
@@ -305,9 +307,12 @@ export const executeTML = async (data: executeTMLInput): Promise<any> => {
305
307
  };
306
308
 
307
309
  /**
308
- * Exports TML representation of the metadata objects from ThoughtSpot in JSON or YAML format.
310
+ * Exports TML representation of the metadata objects from ThoughtSpot in JSON or YAML
311
+ * format.
312
+ *
309
313
  * @param data
310
314
  * @version SDK: 1.23.0 | ThoughtSpot: 9.4.0.cl
315
+ * @group Global methods
311
316
  */
312
317
  export const exportTML = async (data: exportTMLInput): Promise<any> => {
313
318
  const { thoughtSpotHost, authType } = config;
@@ -337,22 +337,22 @@ describe('Liveboard/viz embed tests', () => {
337
337
  done();
338
338
  });
339
339
  });
340
-
341
- test('SetActiveTab Hostevent trigger the navigate event with the correct path, not vizEmbed', async () => {
342
- const mockProcessTrigger = jest.spyOn(tsEmbed.TsEmbed.prototype, 'trigger');
340
+ test('should set runtime parametere values in url params', async () => {
343
341
  const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
344
- enableVizTransformations: true,
345
342
  ...defaultViewConfig,
346
343
  liveboardId,
344
+ runtimeParameters: [
345
+ {
346
+ name: 'Integer Date Range',
347
+ value: 1,
348
+ },
349
+ ],
347
350
  } as LiveboardViewConfig);
348
351
  liveboardEmbed.render();
349
352
  await executeAfterWait(() => {
350
- const result = liveboardEmbed.trigger(HostEvent.SetActiveTab, {
351
- tabId: newActiveTabId,
352
- });
353
- expect(mockProcessTrigger).toHaveBeenCalledWith(
354
- HostEvent.Navigate,
355
- `embed/viz/${liveboardId}/tab/${newActiveTabId}`,
353
+ expectUrlMatchesWithParams(
354
+ getIFrameSrc(),
355
+ `http://${thoughtSpotHost}/?embedApp=true${defaultParams}${prefixParams}&param1=Integer%20Date%20Range&paramVal1=1#/embed/viz/${liveboardId}`,
356
356
  );
357
357
  });
358
358
  });
@@ -373,4 +373,23 @@ describe('Liveboard/viz embed tests', () => {
373
373
  expect(mockProcessTrigger).not.toBeCalled();
374
374
  });
375
375
  });
376
+
377
+ test('SetActiveTab Hostevent trigger the navigate event with the correct path, not vizEmbed', async () => {
378
+ const mockProcessTrigger = jest.spyOn(tsEmbed.TsEmbed.prototype, 'trigger');
379
+ const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
380
+ enableVizTransformations: true,
381
+ ...defaultViewConfig,
382
+ liveboardId,
383
+ } as LiveboardViewConfig);
384
+ liveboardEmbed.render();
385
+ await executeAfterWait(() => {
386
+ const result = liveboardEmbed.trigger(HostEvent.SetActiveTab, {
387
+ tabId: newActiveTabId,
388
+ });
389
+ expect(mockProcessTrigger).toHaveBeenCalledWith(
390
+ HostEvent.Navigate,
391
+ `embed/viz/${liveboardId}/tab/${newActiveTabId}`,
392
+ );
393
+ });
394
+ });
376
395
  });
@@ -15,11 +15,12 @@ import {
15
15
  MessagePayload,
16
16
  Param,
17
17
  RuntimeFilter,
18
+ RuntimeParameter,
18
19
  DOMSelector,
19
20
  HostEvent,
20
21
  ViewConfig,
21
22
  } from '../types';
22
- import { getQueryParamString } from '../utils';
23
+ import { getQueryParamString, getRuntimeParameters } from '../utils';
23
24
  import { getAuthPromise } from './base';
24
25
  import { V1Embed } from './ts-embed';
25
26
 
@@ -105,6 +106,10 @@ export interface LiveboardViewConfig extends ViewConfig {
105
106
  * @version SDK: 1.25.0 | Thoughtspot: 9.6.0.cl
106
107
  */
107
108
  hideTabPanel?: boolean;
109
+ /**
110
+ * The list of parameter override to apply to a Liveboard.
111
+ */
112
+ runtimeParameters?: RuntimeParameter[];
108
113
  }
109
114
 
110
115
  /**
@@ -127,6 +132,8 @@ export class LiveboardEmbed extends V1Embed {
127
132
 
128
133
  private defaultHeight = 500;
129
134
 
135
+ protected embedComponentType = 'LiveboardEmbed';
136
+
130
137
  // eslint-disable-next-line no-useless-constructor
131
138
  constructor(domSelector: DOMSelector, viewConfig: LiveboardViewConfig) {
132
139
  super(domSelector, viewConfig);
@@ -154,6 +161,7 @@ export class LiveboardEmbed extends V1Embed {
154
161
  vizId,
155
162
  hideTabPanel,
156
163
  activeTabId,
164
+ runtimeParameters,
157
165
  } = this.viewConfig;
158
166
 
159
167
  const preventLiveboardFilterRemoval = this.viewConfig.preventLiveboardFilterRemoval
@@ -184,7 +192,10 @@ export class LiveboardEmbed extends V1Embed {
184
192
  if (hideTabPanel) {
185
193
  params[Param.HideTabPanel] = hideTabPanel;
186
194
  }
187
- const queryParams = getQueryParamString(params, true);
195
+ let queryParams = getQueryParamString(params, true);
196
+
197
+ const parameterQuery = getRuntimeParameters(runtimeParameters || []);
198
+ if (parameterQuery) queryParams += `&${parameterQuery}`;
188
199
 
189
200
  return queryParams;
190
201
  }
package/src/embed/sage.ts CHANGED
@@ -100,6 +100,8 @@ export class SageEmbed extends V1Embed {
100
100
  */
101
101
  protected viewConfig: SageViewConfig;
102
102
 
103
+ protected embedComponentType = 'SageEmbed';
104
+
103
105
  // eslint-disable-next-line no-useless-constructor
104
106
  constructor(domSelector: DOMSelector, viewConfig: SageViewConfig) {
105
107
  super(domSelector, viewConfig);
@@ -1,6 +1,4 @@
1
- import {
2
- DOMSelector, Param, Action, ViewConfig,
3
- } from '../types';
1
+ import { Param, ViewConfig } from '../types';
4
2
  import { getQueryParamString } from '../utils';
5
3
  import { TsEmbed } from './ts-embed';
6
4
  import { SearchOptions } from './search';
@@ -8,7 +6,8 @@ import { SearchOptions } from './search';
8
6
  /**
9
7
  * @group Embed components
10
8
  */
11
- export interface SearchBarViewConfig extends Omit<ViewConfig, 'runtimeFilters' | 'showAlerts' | 'dataPanelV2'> {
9
+ export interface SearchBarViewConfig
10
+ extends Omit<ViewConfig, 'runtimeFilters' | 'showAlerts' | 'dataPanelV2'> {
12
11
  /**
13
12
  * The array of data source GUIDs to set on load.
14
13
  * Only a single dataSource supported currently.
@@ -22,6 +21,12 @@ export interface SearchBarViewConfig extends Omit<ViewConfig, 'runtimeFilters' |
22
21
  * @version: SDK: 1.19.0
23
22
  */
24
23
  dataSource?: string;
24
+ /**
25
+ * Flag to set if last selected dataSource should be used
26
+ *
27
+ * @version: SDK: 1.24.0
28
+ */
29
+ useLastSelectedSources?: boolean;
25
30
  /**
26
31
  * Configuration for search options
27
32
  */
@@ -40,6 +45,8 @@ export class SearchBarEmbed extends TsEmbed {
40
45
  */
41
46
  protected viewConfig: SearchBarViewConfig;
42
47
 
48
+ protected embedComponentType = 'SearchBarEmbed';
49
+
43
50
  constructor(domSelector: string, viewConfig: SearchBarViewConfig) {
44
51
  super(domSelector);
45
52
  this.viewConfig = viewConfig;
@@ -52,7 +59,12 @@ export class SearchBarEmbed extends TsEmbed {
52
59
  * @param dataSources A list of data source GUIDs
53
60
  */
54
61
  private getIFrameSrc() {
55
- const { searchOptions, dataSource, dataSources } = this.viewConfig;
62
+ const {
63
+ searchOptions,
64
+ dataSource,
65
+ dataSources,
66
+ useLastSelectedSources = false,
67
+ } = this.viewConfig;
56
68
  const path = 'search-bar-embed';
57
69
  const queryParams = this.getBaseQueryParams();
58
70
 
@@ -74,7 +86,10 @@ export class SearchBarEmbed extends TsEmbed {
74
86
  }
75
87
  }
76
88
 
77
- queryParams[Param.UseLastSelectedDataSource] = false;
89
+ queryParams[Param.UseLastSelectedDataSource] = useLastSelectedSources;
90
+ if (dataSource || dataSources) {
91
+ queryParams[Param.UseLastSelectedDataSource] = false;
92
+ }
78
93
  queryParams[Param.searchEmbed] = true;
79
94
  let query = '';
80
95
  const queryParamsString = getQueryParamString(queryParams, true);
@@ -350,4 +350,65 @@ describe('Search embed tests', () => {
350
350
  );
351
351
  });
352
352
  });
353
+ test('should set useLastSelectedSources to true if useLastSelectedSources flag is true', async () => {
354
+ const searchEmbed = new SearchEmbed(getRootEl(), {
355
+ ...defaultViewConfig,
356
+ useLastSelectedSources: true,
357
+ });
358
+ searchEmbed.render();
359
+ await executeAfterWait(() => {
360
+ expectUrlMatchesWithParams(
361
+ getIFrameSrc(),
362
+ `http://${thoughtSpotHost}/v2/?${defaultParamsWithHiddenActions}&dataSourceMode=expand&enableDataPanelV2=false&useLastSelectedSources=true${prefixParams}#/embed/saved-answer/${answerId}`,
363
+ );
364
+ });
365
+ });
366
+ test('should set useLastSelectedSources to false if datasource is given irrespective of useLastSelectedSources', async () => {
367
+ const dataSource = 'data-source-1';
368
+ const searchEmbed = new SearchEmbed(getRootEl(), {
369
+ ...defaultViewConfig,
370
+ useLastSelectedSources: true,
371
+ dataSource,
372
+ });
373
+ searchEmbed.render();
374
+ await executeAfterWait(() => {
375
+ expectUrlMatchesWithParams(
376
+ getIFrameSrc(),
377
+ `http://${thoughtSpotHost}/v2/?${defaultParamsWithHiddenActions}&dataSources=[%22data-source-1%22]&dataSourceMode=expand&enableDataPanelV2=false&useLastSelectedSources=false${prefixParams}#/embed/saved-answer/${answerId}`,
378
+ );
379
+ });
380
+ });
381
+ test('should set useLastSelectedSources to false if datasources are given irrespective of useLastSelectedSources', async () => {
382
+ const dataSources = ['data-source-1'];
383
+ const searchEmbed = new SearchEmbed(getRootEl(), {
384
+ ...defaultViewConfig,
385
+ useLastSelectedSources: true,
386
+ dataSources,
387
+ });
388
+ searchEmbed.render();
389
+ await executeAfterWait(() => {
390
+ expectUrlMatchesWithParams(
391
+ getIFrameSrc(),
392
+ `http://${thoughtSpotHost}/v2/?${defaultParamsWithHiddenActions}&dataSources=[%22data-source-1%22]&dataSourceMode=expand&enableDataPanelV2=false&useLastSelectedSources=false${prefixParams}#/embed/saved-answer/${answerId}`,
393
+ );
394
+ });
395
+ });
396
+ test('should set runtime parametere values in url params', async () => {
397
+ const searchEmbed = new SearchEmbed(getRootEl(), {
398
+ ...defaultViewConfig,
399
+ runtimeParameters: [
400
+ {
401
+ name: 'Integer Date Range',
402
+ value: 1,
403
+ },
404
+ ],
405
+ });
406
+ searchEmbed.render();
407
+ await executeAfterWait(() => {
408
+ expectUrlMatchesWithParams(
409
+ getIFrameSrc(),
410
+ `http://${thoughtSpotHost}/v2/?${defaultParamsWithHiddenActions}&dataSourceMode=expand&useLastSelectedSources=false${prefixParams}&param1=Integer%20Date%20Range&paramVal1=1#/embed/saved-answer/${answerId}`,
411
+ );
412
+ });
413
+ });
353
414
  });