@thoughtspot/visual-embed-sdk 1.20.1 → 1.20.3

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 (368) hide show
  1. package/README.md +1 -1
  2. package/cjs/package.json +171 -0
  3. package/cjs/src/auth.d.ts +183 -0
  4. package/cjs/src/auth.d.ts.map +1 -0
  5. package/cjs/src/auth.js +457 -0
  6. package/cjs/src/auth.js.map +1 -0
  7. package/cjs/src/auth.spec.d.ts +13 -0
  8. package/cjs/src/auth.spec.d.ts.map +1 -0
  9. package/cjs/src/auth.spec.js +397 -0
  10. package/cjs/src/auth.spec.js.map +1 -0
  11. package/cjs/src/config.d.ts +22 -0
  12. package/cjs/src/config.d.ts.map +1 -0
  13. package/cjs/src/config.js +70 -0
  14. package/cjs/src/config.js.map +1 -0
  15. package/cjs/src/config.spec.d.ts +5 -0
  16. package/cjs/src/config.spec.d.ts.map +1 -0
  17. package/cjs/src/config.spec.js +65 -0
  18. package/cjs/src/config.spec.js.map +1 -0
  19. package/cjs/src/embed/app.d.ts +168 -0
  20. package/cjs/src/embed/app.d.ts.map +1 -0
  21. package/cjs/src/embed/app.js +215 -0
  22. package/cjs/src/embed/app.js.map +1 -0
  23. package/cjs/src/embed/app.spec.d.ts +2 -0
  24. package/cjs/src/embed/app.spec.d.ts.map +1 -0
  25. package/cjs/src/embed/app.spec.js +239 -0
  26. package/cjs/src/embed/app.spec.js.map +1 -0
  27. package/cjs/src/embed/base.d.ts +79 -0
  28. package/cjs/src/embed/base.d.ts.map +1 -0
  29. package/cjs/src/embed/base.js +229 -0
  30. package/cjs/src/embed/base.js.map +1 -0
  31. package/cjs/src/embed/base.spec.d.ts +2 -0
  32. package/cjs/src/embed/base.spec.d.ts.map +1 -0
  33. package/cjs/src/embed/base.spec.js +198 -0
  34. package/cjs/src/embed/base.spec.js.map +1 -0
  35. package/cjs/src/embed/embed.spec.d.ts +2 -0
  36. package/cjs/src/embed/embed.spec.d.ts.map +1 -0
  37. package/cjs/src/embed/embed.spec.js +74 -0
  38. package/cjs/src/embed/embed.spec.js.map +1 -0
  39. package/cjs/src/embed/events.spec.d.ts +2 -0
  40. package/cjs/src/embed/events.spec.d.ts.map +1 -0
  41. package/cjs/src/embed/events.spec.js +238 -0
  42. package/cjs/src/embed/events.spec.js.map +1 -0
  43. package/cjs/src/embed/liveboard.d.ts +150 -0
  44. package/cjs/src/embed/liveboard.d.ts.map +1 -0
  45. package/cjs/src/embed/liveboard.js +168 -0
  46. package/cjs/src/embed/liveboard.js.map +1 -0
  47. package/cjs/src/embed/liveboard.spec.d.ts +2 -0
  48. package/cjs/src/embed/liveboard.spec.d.ts.map +1 -0
  49. package/cjs/src/embed/liveboard.spec.js +229 -0
  50. package/cjs/src/embed/liveboard.spec.js.map +1 -0
  51. package/cjs/src/embed/pinboard.spec.d.ts +2 -0
  52. package/cjs/src/embed/pinboard.spec.d.ts.map +1 -0
  53. package/cjs/src/embed/pinboard.spec.js +148 -0
  54. package/cjs/src/embed/pinboard.spec.js.map +1 -0
  55. package/cjs/src/embed/search-bar.d.ts +50 -0
  56. package/cjs/src/embed/search-bar.d.ts.map +1 -0
  57. package/cjs/src/embed/search-bar.js +63 -0
  58. package/cjs/src/embed/search-bar.js.map +1 -0
  59. package/cjs/src/embed/search.d.ts +129 -0
  60. package/cjs/src/embed/search.d.ts.map +1 -0
  61. package/cjs/src/embed/search.js +121 -0
  62. package/cjs/src/embed/search.js.map +1 -0
  63. package/cjs/src/embed/search.spec.d.ts +2 -0
  64. package/cjs/src/embed/search.spec.d.ts.map +1 -0
  65. package/cjs/src/embed/search.spec.js +238 -0
  66. package/cjs/src/embed/search.spec.js.map +1 -0
  67. package/cjs/src/embed/searchEmbed-basic-auth.spec.d.ts +2 -0
  68. package/cjs/src/embed/searchEmbed-basic-auth.spec.d.ts.map +1 -0
  69. package/cjs/src/embed/searchEmbed-basic-auth.spec.js +103 -0
  70. package/cjs/src/embed/searchEmbed-basic-auth.spec.js.map +1 -0
  71. package/cjs/src/embed/ts-embed.d.ts +323 -0
  72. package/cjs/src/embed/ts-embed.d.ts.map +1 -0
  73. package/cjs/src/embed/ts-embed.js +719 -0
  74. package/cjs/src/embed/ts-embed.js.map +1 -0
  75. package/cjs/src/embed/ts-embed.spec.d.ts +2 -0
  76. package/cjs/src/embed/ts-embed.spec.d.ts.map +1 -0
  77. package/cjs/src/embed/ts-embed.spec.js +771 -0
  78. package/cjs/src/embed/ts-embed.spec.js.map +1 -0
  79. package/cjs/src/errors.d.ts +7 -0
  80. package/cjs/src/errors.d.ts.map +1 -0
  81. package/cjs/src/errors.js +10 -0
  82. package/cjs/src/errors.js.map +1 -0
  83. package/cjs/src/index.d.ts +18 -0
  84. package/cjs/src/index.d.ts.map +1 -0
  85. package/cjs/src/index.js +42 -0
  86. package/cjs/src/index.js.map +1 -0
  87. package/cjs/src/mixpanel-service.d.ts +29 -0
  88. package/cjs/src/mixpanel-service.d.ts.map +1 -0
  89. package/cjs/src/mixpanel-service.js +76 -0
  90. package/cjs/src/mixpanel-service.js.map +1 -0
  91. package/cjs/src/mixpanel-service.spec.d.ts +2 -0
  92. package/cjs/src/mixpanel-service.spec.d.ts.map +1 -0
  93. package/cjs/src/mixpanel-service.spec.js +63 -0
  94. package/cjs/src/mixpanel-service.spec.js.map +1 -0
  95. package/cjs/src/react/all-types-export.d.ts +3 -0
  96. package/cjs/src/react/all-types-export.d.ts.map +1 -0
  97. package/cjs/src/react/all-types-export.js +29 -0
  98. package/cjs/src/react/all-types-export.js.map +1 -0
  99. package/cjs/src/react/all-types-export.spec.d.ts +2 -0
  100. package/cjs/src/react/all-types-export.spec.d.ts.map +1 -0
  101. package/cjs/src/react/all-types-export.spec.js +13 -0
  102. package/cjs/src/react/all-types-export.spec.js.map +1 -0
  103. package/cjs/src/react/index.d.ts +95 -0
  104. package/cjs/src/react/index.d.ts.map +1 -0
  105. package/cjs/src/react/index.js +121 -0
  106. package/cjs/src/react/index.js.map +1 -0
  107. package/cjs/src/react/index.spec.d.ts +3 -0
  108. package/cjs/src/react/index.spec.d.ts.map +1 -0
  109. package/cjs/src/react/index.spec.js +138 -0
  110. package/cjs/src/react/index.spec.js.map +1 -0
  111. package/cjs/src/react/util.d.ts +19 -0
  112. package/cjs/src/react/util.d.ts.map +1 -0
  113. package/cjs/src/react/util.js +25 -0
  114. package/cjs/src/react/util.js.map +1 -0
  115. package/cjs/src/test/test-utils.d.ts +48 -0
  116. package/cjs/src/test/test-utils.d.ts.map +1 -0
  117. package/cjs/src/test/test-utils.js +108 -0
  118. package/cjs/src/test/test-utils.js.map +1 -0
  119. package/cjs/src/types.d.ts +2020 -0
  120. package/cjs/src/types.d.ts.map +1 -0
  121. package/cjs/src/types.js +1543 -0
  122. package/cjs/src/types.js.map +1 -0
  123. package/cjs/src/utils/answerService.d.ts +10 -0
  124. package/cjs/src/utils/answerService.d.ts.map +1 -0
  125. package/cjs/src/utils/answerService.js +61 -0
  126. package/cjs/src/utils/answerService.js.map +1 -0
  127. package/cjs/src/utils/answerService.spec.d.ts +2 -0
  128. package/cjs/src/utils/answerService.spec.d.ts.map +1 -0
  129. package/cjs/src/utils/answerService.spec.js +31 -0
  130. package/cjs/src/utils/answerService.spec.js.map +1 -0
  131. package/cjs/src/utils/authService.d.ts +37 -0
  132. package/cjs/src/utils/authService.d.ts.map +1 -0
  133. package/cjs/src/utils/authService.js +106 -0
  134. package/cjs/src/utils/authService.js.map +1 -0
  135. package/cjs/src/utils/authService.spec.d.ts +2 -0
  136. package/cjs/src/utils/authService.spec.d.ts.map +1 -0
  137. package/cjs/src/utils/authService.spec.js +72 -0
  138. package/cjs/src/utils/authService.spec.js.map +1 -0
  139. package/cjs/src/utils/processData.d.ts +16 -0
  140. package/cjs/src/utils/processData.d.ts.map +1 -0
  141. package/cjs/src/utils/processData.js +110 -0
  142. package/cjs/src/utils/processData.js.map +1 -0
  143. package/cjs/src/utils/processData.spec.d.ts +2 -0
  144. package/cjs/src/utils/processData.spec.d.ts.map +1 -0
  145. package/cjs/src/utils/processData.spec.js +142 -0
  146. package/cjs/src/utils/processData.spec.js.map +1 -0
  147. package/cjs/src/utils/processTrigger.d.ts +10 -0
  148. package/cjs/src/utils/processTrigger.d.ts.map +1 -0
  149. package/cjs/src/utils/processTrigger.js +63 -0
  150. package/cjs/src/utils/processTrigger.js.map +1 -0
  151. package/cjs/src/utils/processTrigger.spec.d.ts +2 -0
  152. package/cjs/src/utils/processTrigger.spec.d.ts.map +1 -0
  153. package/cjs/src/utils/processTrigger.spec.js +58 -0
  154. package/cjs/src/utils/processTrigger.spec.js.map +1 -0
  155. package/cjs/src/utils.d.ts +68 -0
  156. package/cjs/src/utils.d.ts.map +1 -0
  157. package/cjs/src/utils.js +196 -0
  158. package/cjs/src/utils.js.map +1 -0
  159. package/cjs/src/utils.spec.d.ts +5 -0
  160. package/cjs/src/utils.spec.d.ts.map +1 -0
  161. package/cjs/src/utils.spec.js +98 -0
  162. package/cjs/src/utils.spec.js.map +1 -0
  163. package/dist/src/auth.d.ts +54 -5
  164. package/dist/src/auth.d.ts.map +1 -1
  165. package/dist/src/auth.spec.d.ts +3 -0
  166. package/dist/src/auth.spec.d.ts.map +1 -1
  167. package/dist/src/config.d.ts +1 -0
  168. package/dist/src/config.d.ts.map +1 -1
  169. package/dist/src/embed/app.d.ts +35 -6
  170. package/dist/src/embed/app.d.ts.map +1 -1
  171. package/dist/src/embed/base.d.ts +23 -10
  172. package/dist/src/embed/base.d.ts.map +1 -1
  173. package/dist/src/embed/liveboard.d.ts +28 -6
  174. package/dist/src/embed/liveboard.d.ts.map +1 -1
  175. package/dist/src/embed/search-bar.d.ts +3 -0
  176. package/dist/src/embed/search-bar.d.ts.map +1 -1
  177. package/dist/src/embed/search.d.ts +9 -1
  178. package/dist/src/embed/search.d.ts.map +1 -1
  179. package/dist/src/embed/ts-embed.d.ts +65 -7
  180. package/dist/src/embed/ts-embed.d.ts.map +1 -1
  181. package/dist/src/errors.d.ts.map +1 -1
  182. package/dist/src/index.d.ts +2 -2
  183. package/dist/src/index.d.ts.map +1 -1
  184. package/dist/src/mixpanel-service.d.ts +8 -0
  185. package/dist/src/mixpanel-service.d.ts.map +1 -1
  186. package/dist/src/react/all-types-export.d.ts +3 -0
  187. package/dist/src/react/all-types-export.d.ts.map +1 -0
  188. package/dist/src/react/all-types-export.spec.d.ts +2 -0
  189. package/dist/src/react/all-types-export.spec.d.ts.map +1 -0
  190. package/dist/src/react/index.d.ts +72 -0
  191. package/dist/src/react/index.d.ts.map +1 -1
  192. package/dist/src/react/util.d.ts +4 -0
  193. package/dist/src/react/util.d.ts.map +1 -1
  194. package/dist/src/test/test-utils.d.ts +11 -2
  195. package/dist/src/test/test-utils.d.ts.map +1 -1
  196. package/dist/src/types.d.ts +540 -98
  197. package/dist/src/types.d.ts.map +1 -1
  198. package/dist/src/utils/answerService.d.ts +7 -0
  199. package/dist/src/utils/answerService.d.ts.map +1 -1
  200. package/dist/src/utils/authService.d.ts +30 -0
  201. package/dist/src/utils/authService.d.ts.map +1 -1
  202. package/dist/src/utils/processData.d.ts +12 -0
  203. package/dist/src/utils/processData.d.ts.map +1 -1
  204. package/dist/src/utils/processTrigger.d.ts +7 -0
  205. package/dist/src/utils/processTrigger.d.ts.map +1 -1
  206. package/dist/src/utils.d.ts +12 -0
  207. package/dist/src/utils.d.ts.map +1 -1
  208. package/dist/tsembed-react.es.js +28024 -0
  209. package/dist/tsembed-react.js +27966 -0
  210. package/dist/tsembed.es.js +18163 -303
  211. package/dist/tsembed.js +18120 -308
  212. package/dist/visual-embed-sdk-react-full.d.ts +3092 -0
  213. package/dist/visual-embed-sdk-react.d.ts +2781 -0
  214. package/dist/visual-embed-sdk.d.ts +2944 -0
  215. package/lib/package.json +15 -14
  216. package/lib/src/auth.d.ts +54 -5
  217. package/lib/src/auth.d.ts.map +1 -1
  218. package/lib/src/auth.js +91 -31
  219. package/lib/src/auth.js.map +1 -1
  220. package/lib/src/auth.spec.d.ts +3 -0
  221. package/lib/src/auth.spec.d.ts.map +1 -1
  222. package/lib/src/auth.spec.js +37 -6
  223. package/lib/src/auth.spec.js.map +1 -1
  224. package/lib/src/config.d.ts +1 -0
  225. package/lib/src/config.d.ts.map +1 -1
  226. package/lib/src/config.js +5 -3
  227. package/lib/src/config.js.map +1 -1
  228. package/lib/src/config.spec.js.map +1 -1
  229. package/lib/src/embed/app.d.ts +35 -6
  230. package/lib/src/embed/app.d.ts.map +1 -1
  231. package/lib/src/embed/app.js +55 -16
  232. package/lib/src/embed/app.js.map +1 -1
  233. package/lib/src/embed/app.spec.js +41 -12
  234. package/lib/src/embed/app.spec.js.map +1 -1
  235. package/lib/src/embed/base.d.ts +23 -10
  236. package/lib/src/embed/base.d.ts.map +1 -1
  237. package/lib/src/embed/base.js +34 -16
  238. package/lib/src/embed/base.js.map +1 -1
  239. package/lib/src/embed/base.spec.js.map +1 -1
  240. package/lib/src/embed/embed.spec.js +1 -1
  241. package/lib/src/embed/embed.spec.js.map +1 -1
  242. package/lib/src/embed/liveboard.d.ts +28 -6
  243. package/lib/src/embed/liveboard.d.ts.map +1 -1
  244. package/lib/src/embed/liveboard.js +60 -38
  245. package/lib/src/embed/liveboard.js.map +1 -1
  246. package/lib/src/embed/liveboard.spec.js +37 -30
  247. package/lib/src/embed/liveboard.spec.js.map +1 -1
  248. package/lib/src/embed/pinboard.spec.js +14 -26
  249. package/lib/src/embed/pinboard.spec.js.map +1 -1
  250. package/lib/src/embed/search-bar.d.ts +3 -0
  251. package/lib/src/embed/search-bar.d.ts.map +1 -1
  252. package/lib/src/embed/search-bar.js +5 -6
  253. package/lib/src/embed/search-bar.js.map +1 -1
  254. package/lib/src/embed/search.d.ts +9 -1
  255. package/lib/src/embed/search.d.ts.map +1 -1
  256. package/lib/src/embed/search.js +18 -14
  257. package/lib/src/embed/search.js.map +1 -1
  258. package/lib/src/embed/search.spec.js +16 -19
  259. package/lib/src/embed/search.spec.js.map +1 -1
  260. package/lib/src/embed/searchEmbed-basic-auth.spec.js +4 -0
  261. package/lib/src/embed/searchEmbed-basic-auth.spec.js.map +1 -1
  262. package/lib/src/embed/ts-embed.d.ts +65 -7
  263. package/lib/src/embed/ts-embed.d.ts.map +1 -1
  264. package/lib/src/embed/ts-embed.js +154 -77
  265. package/lib/src/embed/ts-embed.js.map +1 -1
  266. package/lib/src/embed/ts-embed.spec.js +46 -24
  267. package/lib/src/embed/ts-embed.spec.js.map +1 -1
  268. package/lib/src/errors.d.ts.map +1 -1
  269. package/lib/src/errors.js.map +1 -1
  270. package/lib/src/index.d.ts +2 -2
  271. package/lib/src/index.d.ts.map +1 -1
  272. package/lib/src/index.js +4 -4
  273. package/lib/src/index.js.map +1 -1
  274. package/lib/src/mixpanel-service.d.ts +8 -0
  275. package/lib/src/mixpanel-service.d.ts.map +1 -1
  276. package/lib/src/mixpanel-service.js +13 -1
  277. package/lib/src/mixpanel-service.js.map +1 -1
  278. package/lib/src/mixpanel-service.spec.js.map +1 -1
  279. package/lib/src/react/all-types-export.d.ts +3 -0
  280. package/lib/src/react/all-types-export.d.ts.map +1 -0
  281. package/lib/src/react/all-types-export.js +5 -0
  282. package/lib/src/react/all-types-export.js.map +1 -0
  283. package/lib/src/react/all-types-export.spec.d.ts +2 -0
  284. package/lib/src/react/all-types-export.spec.d.ts.map +1 -0
  285. package/lib/src/react/all-types-export.spec.js +10 -0
  286. package/lib/src/react/all-types-export.spec.js.map +1 -0
  287. package/lib/src/react/index.d.ts +72 -0
  288. package/lib/src/react/index.d.ts.map +1 -1
  289. package/lib/src/react/index.js +79 -7
  290. package/lib/src/react/index.js.map +1 -1
  291. package/lib/src/react/index.spec.js +27 -6
  292. package/lib/src/react/index.spec.js.map +1 -1
  293. package/lib/src/react/util.d.ts +4 -0
  294. package/lib/src/react/util.d.ts.map +1 -1
  295. package/lib/src/react/util.js +4 -0
  296. package/lib/src/react/util.js.map +1 -1
  297. package/lib/src/test/test-utils.d.ts +11 -2
  298. package/lib/src/test/test-utils.d.ts.map +1 -1
  299. package/lib/src/test/test-utils.js +36 -25
  300. package/lib/src/test/test-utils.js.map +1 -1
  301. package/lib/src/types.d.ts +540 -98
  302. package/lib/src/types.d.ts.map +1 -1
  303. package/lib/src/types.js +415 -70
  304. package/lib/src/types.js.map +1 -1
  305. package/lib/src/utils/answerService.d.ts +7 -0
  306. package/lib/src/utils/answerService.d.ts.map +1 -1
  307. package/lib/src/utils/answerService.js +7 -0
  308. package/lib/src/utils/answerService.js.map +1 -1
  309. package/lib/src/utils/answerService.spec.js.map +1 -1
  310. package/lib/src/utils/authService.d.ts +30 -0
  311. package/lib/src/utils/authService.d.ts.map +1 -1
  312. package/lib/src/utils/authService.js +39 -2
  313. package/lib/src/utils/authService.js.map +1 -1
  314. package/lib/src/utils/authService.spec.js.map +1 -1
  315. package/lib/src/utils/processData.d.ts +12 -0
  316. package/lib/src/utils/processData.d.ts.map +1 -1
  317. package/lib/src/utils/processData.js +33 -5
  318. package/lib/src/utils/processData.js.map +1 -1
  319. package/lib/src/utils/processData.spec.js.map +1 -1
  320. package/lib/src/utils/processTrigger.d.ts +7 -0
  321. package/lib/src/utils/processTrigger.d.ts.map +1 -1
  322. package/lib/src/utils/processTrigger.js +17 -3
  323. package/lib/src/utils/processTrigger.js.map +1 -1
  324. package/lib/src/utils/processTrigger.spec.js.map +1 -1
  325. package/lib/src/utils.d.ts +12 -0
  326. package/lib/src/utils.d.ts.map +1 -1
  327. package/lib/src/utils.js +24 -19
  328. package/lib/src/utils.js.map +1 -1
  329. package/lib/src/utils.spec.js.map +1 -1
  330. package/package.json +15 -14
  331. package/src/auth.spec.ts +83 -133
  332. package/src/auth.ts +148 -115
  333. package/src/config.spec.ts +2 -4
  334. package/src/config.ts +5 -3
  335. package/src/embed/app.spec.ts +57 -14
  336. package/src/embed/app.ts +91 -36
  337. package/src/embed/base.spec.ts +3 -9
  338. package/src/embed/base.ts +55 -55
  339. package/src/embed/embed.spec.ts +5 -6
  340. package/src/embed/liveboard.spec.ts +56 -37
  341. package/src/embed/liveboard.ts +77 -65
  342. package/src/embed/pinboard.spec.ts +26 -29
  343. package/src/embed/search-bar.tsx +10 -8
  344. package/src/embed/search.spec.ts +31 -21
  345. package/src/embed/search.ts +26 -20
  346. package/src/embed/searchEmbed-basic-auth.spec.ts +22 -28
  347. package/src/embed/ts-embed.spec.ts +99 -144
  348. package/src/embed/ts-embed.ts +188 -162
  349. package/src/errors.ts +3 -6
  350. package/src/index.ts +6 -10
  351. package/src/mixpanel-service.spec.ts +1 -3
  352. package/src/mixpanel-service.ts +13 -1
  353. package/src/react/index.spec.tsx +66 -13
  354. package/src/react/index.tsx +111 -62
  355. package/src/react/util.ts +8 -4
  356. package/src/test/test-utils.ts +43 -39
  357. package/src/types.ts +537 -98
  358. package/src/utils/answerService.spec.ts +3 -5
  359. package/src/utils/answerService.ts +21 -17
  360. package/src/utils/authService.spec.ts +26 -41
  361. package/src/utils/authService.ts +47 -21
  362. package/src/utils/processData.spec.ts +26 -59
  363. package/src/utils/processData.ts +36 -14
  364. package/src/utils/processTrigger.spec.ts +1 -6
  365. package/src/utils/processTrigger.ts +18 -9
  366. package/src/utils.spec.ts +8 -12
  367. package/src/utils.ts +25 -26
  368. package/lib/src/visual-embed-sdk.d.ts +0 -2368
@@ -0,0 +1,168 @@
1
+ /**
2
+ * Copyright (c) 2022
3
+ *
4
+ * Full application embedding
5
+ * https://developers.thoughtspot.com/docs/?pageid=full-embed
6
+ *
7
+ * @summary Full app embed
8
+ * @module
9
+ * @author Ayon Ghosh <ayon.ghosh@thoughtspot.com>
10
+ */
11
+ import { DOMSelector, ViewConfig, MessagePayload } from '../types';
12
+ import { V1Embed } from './ts-embed';
13
+ /**
14
+ * Pages within the ThoughtSpot app that can be embedded.
15
+ */
16
+ export declare enum Page {
17
+ /**
18
+ * Home page
19
+ */
20
+ Home = "home",
21
+ /**
22
+ * Search page
23
+ */
24
+ Search = "search",
25
+ /**
26
+ * Saved answers listing page
27
+ */
28
+ Answers = "answers",
29
+ /**
30
+ * Liveboards listing page
31
+ */
32
+ Liveboards = "liveboards",
33
+ /**
34
+ * @hidden
35
+ */
36
+ Pinboards = "pinboards",
37
+ /**
38
+ * Data management page
39
+ */
40
+ Data = "data",
41
+ /**
42
+ * SpotIQ listing page
43
+ */
44
+ SpotIQ = "spotiq"
45
+ }
46
+ /**
47
+ * The view configuration for full app embedding.
48
+ *
49
+ * @group Embed components
50
+ */
51
+ export interface AppViewConfig extends ViewConfig {
52
+ /**
53
+ * If true, the main navigation bar within the ThoughtSpot app
54
+ * is displayed. By default, the navigation bar is hidden.
55
+ */
56
+ showPrimaryNavbar?: boolean;
57
+ /**
58
+ * If true, help and profile buttons will hide on NavBar. By default,
59
+ * they are shown.
60
+ */
61
+ disableProfileAndHelp?: boolean;
62
+ /**
63
+ * A URL path within the app that is to be embedded.
64
+ * If both path and pageId attributes are defined, the path definition
65
+ * takes precedence.
66
+ */
67
+ path?: string;
68
+ /**
69
+ * The application page to set as the start page
70
+ * in the embedded view.
71
+ */
72
+ pageId?: Page;
73
+ /**
74
+ * This puts a filter tag on the application. All metadata lists in the
75
+ * application, such as Liveboards and answers, would be filtered by this
76
+ * tag.
77
+ */
78
+ tag?: string;
79
+ /**
80
+ * The array of GUIDs to be hidden
81
+ */
82
+ hideObjects?: string[];
83
+ /**
84
+ * Render liveboards using the new v2 rendering mode
85
+ * This is a transient flag which is primarily meant for internal use
86
+ *
87
+ * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1-sw
88
+ * @hidden
89
+ */
90
+ liveboardV2?: boolean;
91
+ /**
92
+ * If set to true, the Search Assist feature is enabled.
93
+ *
94
+ * @version SDK: 1.13.0 | ThoughtSpot: 8.5.0.cl, 8.8.1-sw
95
+ */
96
+ enableSearchAssist?: boolean;
97
+ /**
98
+ * If set to true, the embedded object container dynamically resizes
99
+ * according to the height of the pages which support fullHeight mode.
100
+ *
101
+ * @version SDK: 1.21.0 | ThoughtSpot: 9.4.0.cl, 9.4.0-sw
102
+ */
103
+ fullHeight?: boolean;
104
+ }
105
+ /**
106
+ * Embeds full ThoughtSpot experience in a host application.
107
+ *
108
+ * @group Embed components
109
+ */
110
+ export declare class AppEmbed extends V1Embed {
111
+ protected viewConfig: AppViewConfig;
112
+ private defaultHeight;
113
+ constructor(domSelector: DOMSelector, viewConfig: AppViewConfig);
114
+ /**
115
+ * Constructs a map of parameters to be passed on to the
116
+ * embedded Liveboard or visualization.
117
+ */
118
+ protected getEmbedParams(): string;
119
+ /**
120
+ * Constructs the URL of the ThoughtSpot app page to be rendered.
121
+ *
122
+ * @param pageId The ID of the page to be embedded.
123
+ */
124
+ private getIFrameSrc;
125
+ /**
126
+ * Set the iframe height as per the computed height received
127
+ * from the ThoughtSpot app.
128
+ *
129
+ * @param data The event payload
130
+ */
131
+ protected updateIFrameHeight: (data: MessagePayload) => void;
132
+ private embedIframeCenter;
133
+ private setIframeHeightForNonEmbedLiveboard;
134
+ /**
135
+ * Gets the ThoughtSpot route of the page for a particular page ID.
136
+ *
137
+ * @param pageId The identifier for a page in the ThoughtSpot app.
138
+ */
139
+ private getPageRoute;
140
+ /**
141
+ * Formats the path provided by the user.
142
+ *
143
+ * @param path The URL path.
144
+ * @returns The URL path that the embedded app understands.
145
+ */
146
+ private formatPath;
147
+ /**
148
+ * Navigate to particular page for app embed. eg:answers/pinboards/home
149
+ * This is used for embedding answers, pinboards, visualizations and full application
150
+ * only.
151
+ *
152
+ * @param path string | number The string, set to iframe src and navigate to new page
153
+ * eg: appEmbed.navigateToPage('pinboards')
154
+ * When used with `noReload` (default: true) this can also be a number
155
+ * like 1/-1 to go forward/back.
156
+ * @param noReload boolean Trigger the navigation without reloading the page
157
+ * @version SDK: 1.12.0 | ThoughtSpot: 8.4.0.cl, 8.4.1-sw
158
+ */
159
+ navigateToPage(path: string | number, noReload?: boolean): void;
160
+ /**
161
+ * Renders the embedded application pages in the ThoughtSpot app.
162
+ *
163
+ * @param renderOptions An object containing the page ID
164
+ * to be embedded.
165
+ */
166
+ render(): AppEmbed;
167
+ }
168
+ //# sourceMappingURL=app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/embed/app.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EACI,WAAW,EAAa,UAAU,EAAc,cAAc,EACxE,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC;;GAEG;AAEH,oBAAY,IAAI;IACZ;;OAEG;IACH,IAAI,SAAS;IACb;;OAEG;IACH,MAAM,WAAW;IACjB;;OAEG;IACH,OAAO,YAAY;IACnB;;OAEG;IACH,UAAU,eAAe;IACzB;;OAEG;IACH,SAAS,cAAc;IACvB;;OAEG;IACH,IAAI,SAAS;IACb;;OAEG;IACH,MAAM,WAAW;CACpB;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAc,SAAQ,UAAU;IAC7C;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,MAAM,CAAC,EAAE,IAAI,CAAC;IACd;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;;OAKG;IACJ,UAAU,CAAC,EAAC,OAAO,CAAC;CACvB;AAED;;;;GAIG;AACH,qBAAa,QAAS,SAAQ,OAAO;IACjC,SAAS,CAAC,UAAU,EAAE,aAAa,CAAC;IAEpC,OAAO,CAAC,aAAa,CAAU;gBAGnB,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa;IAS/D;;;OAGG;IACH,SAAS,CAAC,cAAc;IAyCxB;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAWpB;;;;;OAKG;IACH,SAAS,CAAC,kBAAkB,SAAU,cAAc,UAEnD;IAED,OAAO,CAAC,iBAAiB,CAGvB;IAEF,OAAO,CAAC,mCAAmC,CAOzC;IAEF;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAoBpB;;;;;OAKG;IACH,OAAO,CAAC,UAAU;IAalB;;;;;;;;;;;OAWG;IACI,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,UAAQ,GAAG,IAAI;IAsBpE;;;;;OAKG;IACI,MAAM,IAAI,QAAQ;CAO5B"}
@@ -0,0 +1,215 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright (c) 2022
4
+ *
5
+ * Full application embedding
6
+ * https://developers.thoughtspot.com/docs/?pageid=full-embed
7
+ *
8
+ * @summary Full app embed
9
+ * @module
10
+ * @author Ayon Ghosh <ayon.ghosh@thoughtspot.com>
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.AppEmbed = exports.Page = void 0;
14
+ const utils_1 = require("../utils");
15
+ const types_1 = require("../types");
16
+ const ts_embed_1 = require("./ts-embed");
17
+ /**
18
+ * Pages within the ThoughtSpot app that can be embedded.
19
+ */
20
+ // eslint-disable-next-line no-shadow
21
+ var Page;
22
+ (function (Page) {
23
+ /**
24
+ * Home page
25
+ */
26
+ Page["Home"] = "home";
27
+ /**
28
+ * Search page
29
+ */
30
+ Page["Search"] = "search";
31
+ /**
32
+ * Saved answers listing page
33
+ */
34
+ Page["Answers"] = "answers";
35
+ /**
36
+ * Liveboards listing page
37
+ */
38
+ Page["Liveboards"] = "liveboards";
39
+ /**
40
+ * @hidden
41
+ */
42
+ Page["Pinboards"] = "pinboards";
43
+ /**
44
+ * Data management page
45
+ */
46
+ Page["Data"] = "data";
47
+ /**
48
+ * SpotIQ listing page
49
+ */
50
+ Page["SpotIQ"] = "spotiq";
51
+ })(Page = exports.Page || (exports.Page = {}));
52
+ /**
53
+ * Embeds full ThoughtSpot experience in a host application.
54
+ *
55
+ * @group Embed components
56
+ */
57
+ class AppEmbed extends ts_embed_1.V1Embed {
58
+ // eslint-disable-next-line no-useless-constructor
59
+ constructor(domSelector, viewConfig) {
60
+ super(domSelector, viewConfig);
61
+ this.defaultHeight = '100%';
62
+ /**
63
+ * Set the iframe height as per the computed height received
64
+ * from the ThoughtSpot app.
65
+ *
66
+ * @param data The event payload
67
+ */
68
+ this.updateIFrameHeight = (data) => {
69
+ var _a;
70
+ this.setIFrameHeight(Math.max(data.data, (_a = this.iFrame) === null || _a === void 0 ? void 0 : _a.scrollHeight));
71
+ };
72
+ this.embedIframeCenter = (data, responder) => {
73
+ const obj = this.getIframeCenter();
74
+ responder({ type: types_1.EmbedEvent.EmbedIframeCenter, data: obj });
75
+ };
76
+ this.setIframeHeightForNonEmbedLiveboard = (data) => {
77
+ const { height: frameHeight, ...restParams } = this.viewConfig.frameParams || {};
78
+ if (!data.data.currentPath.startsWith('/pinboard/')) {
79
+ this.setIFrameHeight(frameHeight || this.defaultHeight);
80
+ }
81
+ };
82
+ if (this.viewConfig.fullHeight === true) {
83
+ this.on(types_1.EmbedEvent.RouteChange, this.setIframeHeightForNonEmbedLiveboard);
84
+ this.on(types_1.EmbedEvent.EmbedHeight, this.updateIFrameHeight);
85
+ this.on(types_1.EmbedEvent.EmbedIframeCenter, this.embedIframeCenter);
86
+ }
87
+ }
88
+ /**
89
+ * Constructs a map of parameters to be passed on to the
90
+ * embedded Liveboard or visualization.
91
+ */
92
+ getEmbedParams() {
93
+ const { tag, hideObjects, liveboardV2, showPrimaryNavbar, disableProfileAndHelp, enableSearchAssist, fullHeight, } = this.viewConfig;
94
+ let params = {};
95
+ params[types_1.Param.EmbedApp] = true;
96
+ params[types_1.Param.PrimaryNavHidden] = !showPrimaryNavbar;
97
+ params[types_1.Param.HideProfleAndHelp] = !!disableProfileAndHelp;
98
+ params = this.getBaseQueryParams(params);
99
+ if (fullHeight === true) {
100
+ params[types_1.Param.fullHeight] = true;
101
+ }
102
+ if (tag) {
103
+ params[types_1.Param.Tag] = tag;
104
+ }
105
+ if (hideObjects && hideObjects.length) {
106
+ params[types_1.Param.HideObjects] = JSON.stringify(hideObjects);
107
+ }
108
+ if (liveboardV2 !== undefined) {
109
+ params[types_1.Param.LiveboardV2Enabled] = liveboardV2;
110
+ }
111
+ if (enableSearchAssist !== undefined) {
112
+ params[types_1.Param.EnableSearchAssist] = enableSearchAssist;
113
+ }
114
+ const queryParams = (0, utils_1.getQueryParamString)(params, true);
115
+ return queryParams;
116
+ }
117
+ /**
118
+ * Constructs the URL of the ThoughtSpot app page to be rendered.
119
+ *
120
+ * @param pageId The ID of the page to be embedded.
121
+ */
122
+ getIFrameSrc() {
123
+ const { pageId, path } = this.viewConfig;
124
+ const pageRoute = this.formatPath(path) || this.getPageRoute(pageId);
125
+ let url = `${this.getRootIframeSrc()}/${pageRoute}`;
126
+ const tsPostHashParams = this.getThoughtSpotPostUrlParams();
127
+ url = `${url}${tsPostHashParams}`;
128
+ return url;
129
+ }
130
+ /**
131
+ * Gets the ThoughtSpot route of the page for a particular page ID.
132
+ *
133
+ * @param pageId The identifier for a page in the ThoughtSpot app.
134
+ */
135
+ getPageRoute(pageId) {
136
+ switch (pageId) {
137
+ case Page.Search:
138
+ return 'answer';
139
+ case Page.Answers:
140
+ return 'answers';
141
+ case Page.Liveboards:
142
+ return 'pinboards';
143
+ case Page.Pinboards:
144
+ return 'pinboards';
145
+ case Page.Data:
146
+ return 'data/tables';
147
+ case Page.SpotIQ:
148
+ return 'insights/results';
149
+ case Page.Home:
150
+ default:
151
+ return 'home';
152
+ }
153
+ }
154
+ /**
155
+ * Formats the path provided by the user.
156
+ *
157
+ * @param path The URL path.
158
+ * @returns The URL path that the embedded app understands.
159
+ */
160
+ formatPath(path) {
161
+ if (!path) {
162
+ return null;
163
+ }
164
+ // remove leading slash
165
+ if (path.indexOf('/') === 0) {
166
+ return path.substring(1);
167
+ }
168
+ return path;
169
+ }
170
+ /**
171
+ * Navigate to particular page for app embed. eg:answers/pinboards/home
172
+ * This is used for embedding answers, pinboards, visualizations and full application
173
+ * only.
174
+ *
175
+ * @param path string | number The string, set to iframe src and navigate to new page
176
+ * eg: appEmbed.navigateToPage('pinboards')
177
+ * When used with `noReload` (default: true) this can also be a number
178
+ * like 1/-1 to go forward/back.
179
+ * @param noReload boolean Trigger the navigation without reloading the page
180
+ * @version SDK: 1.12.0 | ThoughtSpot: 8.4.0.cl, 8.4.1-sw
181
+ */
182
+ navigateToPage(path, noReload = false) {
183
+ if (!this.iFrame) {
184
+ console.log('Please call render before invoking this method');
185
+ return;
186
+ }
187
+ if (noReload) {
188
+ this.trigger(types_1.HostEvent.Navigate, path);
189
+ }
190
+ else {
191
+ if (typeof path !== 'string') {
192
+ console.warn('Path can only by a string when triggered without noReload');
193
+ return;
194
+ }
195
+ const iframeSrc = this.iFrame.src;
196
+ const embedPath = '#/embed';
197
+ const currentPath = iframeSrc.includes(embedPath) ? embedPath : '#';
198
+ this.iFrame.src = `${iframeSrc.split(currentPath)[0]}${currentPath}/${path.replace(/^\/?#?\//, '')}`;
199
+ }
200
+ }
201
+ /**
202
+ * Renders the embedded application pages in the ThoughtSpot app.
203
+ *
204
+ * @param renderOptions An object containing the page ID
205
+ * to be embedded.
206
+ */
207
+ render() {
208
+ super.render();
209
+ const src = this.getIFrameSrc();
210
+ this.renderV1Embed(src);
211
+ return this;
212
+ }
213
+ }
214
+ exports.AppEmbed = AppEmbed;
215
+ //# sourceMappingURL=app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/embed/app.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=app.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.spec.d.ts","sourceRoot":"","sources":["../../../src/embed/app.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,239 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const app_1 = require("./app");
5
+ const index_1 = require("../index");
6
+ const types_1 = require("../types");
7
+ const test_utils_1 = require("../test/test-utils");
8
+ const config = tslib_1.__importStar(require("../config"));
9
+ const ts_embed_1 = require("./ts-embed");
10
+ const defaultViewConfig = {
11
+ frameParams: {
12
+ width: 1280,
13
+ height: 720,
14
+ },
15
+ };
16
+ const thoughtSpotHost = 'tshost';
17
+ const defaultParamsPost = '';
18
+ beforeAll(() => {
19
+ (0, index_1.init)({
20
+ thoughtSpotHost,
21
+ authType: types_1.AuthType.None,
22
+ });
23
+ });
24
+ const cleanUp = () => {
25
+ document.body.innerHTML = (0, test_utils_1.getDocumentBody)();
26
+ };
27
+ describe('App embed tests', () => {
28
+ beforeEach(() => {
29
+ cleanUp();
30
+ });
31
+ test('should render home page by default', async () => {
32
+ const appEmbed = new app_1.AppEmbed((0, test_utils_1.getRootEl)(), defaultViewConfig);
33
+ appEmbed.render();
34
+ await (0, test_utils_1.executeAfterWait)(() => {
35
+ (0, test_utils_1.expectUrlMatchesWithParams)((0, test_utils_1.getIFrameSrc)(), `http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=true&profileAndHelpInNavBarHidden=false${test_utils_1.defaultParams}${defaultParamsPost}#/home`);
36
+ });
37
+ });
38
+ test('should hide the primary nav bar', async () => {
39
+ const appEmbed = new app_1.AppEmbed((0, test_utils_1.getRootEl)(), {
40
+ ...defaultViewConfig,
41
+ showPrimaryNavbar: true,
42
+ });
43
+ appEmbed.render();
44
+ await (0, test_utils_1.executeAfterWait)(() => {
45
+ (0, test_utils_1.expectUrlMatchesWithParams)((0, test_utils_1.getIFrameSrc)(), `http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=false&profileAndHelpInNavBarHidden=false${test_utils_1.defaultParams}${defaultParamsPost}#/home`);
46
+ });
47
+ });
48
+ test('should hide the help and profile buttons from nav bar', async () => {
49
+ const appEmbed = new app_1.AppEmbed((0, test_utils_1.getRootEl)(), {
50
+ ...defaultViewConfig,
51
+ disableProfileAndHelp: true,
52
+ });
53
+ appEmbed.render();
54
+ await (0, test_utils_1.executeAfterWait)(() => {
55
+ (0, test_utils_1.expectUrlMatchesWithParams)((0, test_utils_1.getIFrameSrc)(), `http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=true&profileAndHelpInNavBarHidden=true${test_utils_1.defaultParams}${defaultParamsPost}#/home`);
56
+ });
57
+ });
58
+ describe('should render the correct routes for pages', () => {
59
+ /* eslint-disable no-loop-func */
60
+ const pageRouteMap = {
61
+ [app_1.Page.Search]: 'answer',
62
+ [app_1.Page.Answers]: 'answers',
63
+ [app_1.Page.Pinboards]: 'pinboards',
64
+ [app_1.Page.Liveboards]: 'pinboards',
65
+ [app_1.Page.Data]: 'data/tables',
66
+ [app_1.Page.Home]: 'home',
67
+ [app_1.Page.SpotIQ]: 'insights/results',
68
+ };
69
+ const pageIds = Object.keys(pageRouteMap);
70
+ for (let i = 0; i < pageIds.length; i++) {
71
+ const pageId = pageIds[i];
72
+ test(`${pageId}`, async () => {
73
+ const route = pageRouteMap[pageId];
74
+ const appEmbed = new app_1.AppEmbed((0, test_utils_1.getRootEl)(), {
75
+ ...defaultViewConfig,
76
+ pageId: pageId,
77
+ });
78
+ appEmbed.render();
79
+ await (0, test_utils_1.executeAfterWait)(() => {
80
+ (0, test_utils_1.expectUrlMatchesWithParams)((0, test_utils_1.getIFrameSrc)(), `http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=true&profileAndHelpInNavBarHidden=false${test_utils_1.defaultParams}${defaultParamsPost}#/${route}`);
81
+ cleanUp();
82
+ });
83
+ });
84
+ }
85
+ });
86
+ test('should navigate to a path', async () => {
87
+ const appEmbed = new app_1.AppEmbed((0, test_utils_1.getRootEl)(), {
88
+ ...defaultViewConfig,
89
+ path: 'foo/bar',
90
+ });
91
+ appEmbed.render();
92
+ await (0, test_utils_1.executeAfterWait)(() => {
93
+ (0, test_utils_1.expectUrlMatchesWithParams)((0, test_utils_1.getIFrameSrc)(), `http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=true&profileAndHelpInNavBarHidden=false${test_utils_1.defaultParams}${defaultParamsPost}#/foo/bar`);
94
+ });
95
+ });
96
+ test('should apply runtime filters', async () => {
97
+ const appEmbed = new app_1.AppEmbed((0, test_utils_1.getRootEl)(), {
98
+ ...defaultViewConfig,
99
+ showPrimaryNavbar: true,
100
+ runtimeFilters: [
101
+ {
102
+ columnName: 'sales',
103
+ operator: types_1.RuntimeFilterOp.EQ,
104
+ values: [1000],
105
+ },
106
+ ],
107
+ });
108
+ appEmbed.render();
109
+ await (0, test_utils_1.executeAfterWait)(() => {
110
+ (0, test_utils_1.expectUrlMatchesWithParams)((0, test_utils_1.getIFrameSrc)(), `http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=false&profileAndHelpInNavBarHidden=false&col1=sales&op1=EQ&val1=1000${test_utils_1.defaultParams}${defaultParamsPost}#/home`);
111
+ });
112
+ });
113
+ test('should disable and hide actions', async () => {
114
+ const appEmbed = new app_1.AppEmbed((0, test_utils_1.getRootEl)(), {
115
+ ...defaultViewConfig,
116
+ showPrimaryNavbar: true,
117
+ disabledActions: [types_1.Action.Save, types_1.Action.Update],
118
+ disabledActionReason: 'Access denied',
119
+ hiddenActions: [types_1.Action.Download],
120
+ });
121
+ appEmbed.render();
122
+ await (0, test_utils_1.executeAfterWait)(() => {
123
+ (0, test_utils_1.expectUrlMatchesWithParams)((0, test_utils_1.getIFrameSrc)(), `http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=false&profileAndHelpInNavBarHidden=false&${test_utils_1.defaultParamsWithoutHiddenActions}&disableAction=[%22save%22,%22update%22]&disableHint=Access%20denied&hideAction=[%22${types_1.Action.ReportError}%22,%22download%22]${defaultParamsPost}#/home`);
124
+ });
125
+ });
126
+ test('Should add the tag to the iframe src', async () => {
127
+ const appEmbed = new app_1.AppEmbed((0, test_utils_1.getRootEl)(), {
128
+ ...defaultViewConfig,
129
+ showPrimaryNavbar: false,
130
+ tag: 'Finance',
131
+ });
132
+ appEmbed.render();
133
+ await (0, test_utils_1.executeAfterWait)(() => {
134
+ (0, test_utils_1.expectUrlMatchesWithParams)((0, test_utils_1.getIFrameSrc)(), `http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=true&profileAndHelpInNavBarHidden=false${test_utils_1.defaultParams}&tag=Finance${defaultParamsPost}#/home`);
135
+ });
136
+ });
137
+ test('Should add enableSearchAssist flagto the iframe src', async () => {
138
+ const appEmbed = new app_1.AppEmbed((0, test_utils_1.getRootEl)(), {
139
+ ...defaultViewConfig,
140
+ enableSearchAssist: true,
141
+ });
142
+ appEmbed.render();
143
+ await (0, test_utils_1.executeAfterWait)(() => {
144
+ (0, test_utils_1.expectUrlMatchesWithParams)((0, test_utils_1.getIFrameSrc)(), `http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=true&profileAndHelpInNavBarHidden=false&enableSearchAssist=true${test_utils_1.defaultParams}${defaultParamsPost}#/home`);
145
+ });
146
+ });
147
+ test('should register event handlers to adjust iframe height', async () => {
148
+ const onSpy = jest.spyOn(app_1.AppEmbed.prototype, 'on')
149
+ .mockImplementation((event, callback) => {
150
+ if (event === types_1.EmbedEvent.RouteChange) {
151
+ callback({ data: { currentPath: '/answers' } }, jest.fn());
152
+ }
153
+ if (event === types_1.EmbedEvent.EmbedHeight) {
154
+ callback({ data: '100%' });
155
+ }
156
+ if (event === types_1.EmbedEvent.EmbedIframeCenter) {
157
+ callback({}, jest.fn());
158
+ }
159
+ return null;
160
+ });
161
+ jest.spyOn(ts_embed_1.TsEmbed.prototype, 'getIframeCenter').mockReturnValue({});
162
+ jest.spyOn(ts_embed_1.TsEmbed.prototype, 'setIFrameHeight').mockReturnValue({});
163
+ const appEmbed = new app_1.AppEmbed((0, test_utils_1.getRootEl)(), {
164
+ ...defaultViewConfig,
165
+ fullHeight: true,
166
+ });
167
+ appEmbed.render();
168
+ await (0, test_utils_1.executeAfterWait)(() => {
169
+ expect(onSpy).toHaveBeenCalledWith(types_1.EmbedEvent.EmbedHeight, expect.anything());
170
+ expect(onSpy).toHaveBeenCalledWith(types_1.EmbedEvent.RouteChange, expect.anything());
171
+ expect(onSpy).toHaveBeenCalledWith(types_1.EmbedEvent.EmbedIframeCenter, expect.anything());
172
+ });
173
+ jest.clearAllMocks();
174
+ });
175
+ describe('Navigate to Page API', () => {
176
+ const path = 'pinboard/e0836cad-4fdf-42d4-bd97-567a6b2a6058';
177
+ beforeEach(() => {
178
+ jest.spyOn(config, 'getThoughtSpotHost').mockImplementation(() => 'http://tshost');
179
+ });
180
+ test('when app is AppEmbed after navigateToPage function call, new path should be set to iframe', async () => {
181
+ const appEmbed = new app_1.AppEmbed((0, test_utils_1.getRootEl)(), {
182
+ frameParams: {
183
+ width: '100%',
184
+ height: '100%',
185
+ },
186
+ });
187
+ await appEmbed.render();
188
+ appEmbed.navigateToPage(path);
189
+ (0, test_utils_1.expectUrlMatchesWithParams)((0, test_utils_1.getIFrameSrc)(), `http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=true&profileAndHelpInNavBarHidden=false&${test_utils_1.defaultParamsForPinboardEmbed}${defaultParamsPost}#/${path}`);
190
+ });
191
+ test('navigateToPage with noReload should trigger the appropriate event', async () => {
192
+ (0, test_utils_1.mockMessageChannel)();
193
+ const appEmbed = new app_1.AppEmbed((0, test_utils_1.getRootEl)(), {
194
+ frameParams: {
195
+ width: '100%',
196
+ height: '100%',
197
+ },
198
+ });
199
+ await appEmbed.render();
200
+ const iframe = (0, test_utils_1.getIFrameEl)();
201
+ iframe.contentWindow.postMessage = jest.fn();
202
+ appEmbed.navigateToPage(path, true);
203
+ expect(iframe.contentWindow.postMessage).toHaveBeenCalledWith(expect.objectContaining({
204
+ type: types_1.HostEvent.Navigate,
205
+ data: path,
206
+ }), `http://${thoughtSpotHost}`, expect.anything());
207
+ appEmbed.navigateToPage(-1, true);
208
+ expect(iframe.contentWindow.postMessage).toHaveBeenCalledWith(expect.objectContaining({
209
+ type: types_1.HostEvent.Navigate,
210
+ data: -1,
211
+ }), `http://${thoughtSpotHost}`, expect.anything());
212
+ });
213
+ test('Do not allow number path without noReload in navigateToPage', async () => {
214
+ const appEmbed = new app_1.AppEmbed((0, test_utils_1.getRootEl)(), {
215
+ frameParams: {
216
+ width: '100%',
217
+ height: '100%',
218
+ },
219
+ });
220
+ await appEmbed.render();
221
+ spyOn(console, 'warn');
222
+ appEmbed.navigateToPage(-1);
223
+ expect(console.warn).toHaveBeenCalledWith('Path can only by a string when triggered without noReload');
224
+ });
225
+ test('navigateToPage function use before render', async () => {
226
+ spyOn(console, 'log');
227
+ const appEmbed = new app_1.AppEmbed((0, test_utils_1.getRootEl)(), {
228
+ frameParams: {
229
+ width: '100%',
230
+ height: '100%',
231
+ },
232
+ });
233
+ appEmbed.navigateToPage(path);
234
+ await appEmbed.render();
235
+ expect(console.log).toHaveBeenCalledWith('Please call render before invoking this method');
236
+ });
237
+ });
238
+ });
239
+ //# sourceMappingURL=app.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.spec.js","sourceRoot":"","sources":["../../../src/embed/app.spec.ts"],"names":[],"mappings":"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"}