@thoughtspot/visual-embed-sdk 1.20.2 → 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 +20 -9
  172. package/dist/src/embed/base.d.ts.map +1 -1
  173. package/dist/src/embed/liveboard.d.ts +17 -5
  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 +499 -96
  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 +18114 -305
  211. package/dist/tsembed.js +18088 -327
  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 +20 -9
  236. package/lib/src/embed/base.d.ts.map +1 -1
  237. package/lib/src/embed/base.js +31 -15
  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 +17 -5
  243. package/lib/src/embed/liveboard.d.ts.map +1 -1
  244. package/lib/src/embed/liveboard.js +49 -37
  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 +499 -96
  302. package/lib/src/types.d.ts.map +1 -1
  303. package/lib/src/types.js +374 -68
  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 +51 -53
  339. package/src/embed/embed.spec.ts +5 -6
  340. package/src/embed/liveboard.spec.ts +56 -37
  341. package/src/embed/liveboard.ts +66 -64
  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 +498 -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 -2419
@@ -0,0 +1,719 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright (c) 2022
4
+ *
5
+ * Base classes
6
+ *
7
+ * @summary Base classes
8
+ * @author Ayon Ghosh <ayon.ghosh@thoughtspot.com>
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.V1Embed = exports.TsEmbed = exports.THOUGHTSPOT_PARAM_PREFIX = void 0;
12
+ const tslib_1 = require("tslib");
13
+ const utils_1 = require("../utils");
14
+ const config_1 = require("../config");
15
+ const types_1 = require("../types");
16
+ const mixpanel_service_1 = require("../mixpanel-service");
17
+ const processData_1 = require("../utils/processData");
18
+ const processTrigger_1 = require("../utils/processTrigger");
19
+ const package_json_1 = tslib_1.__importDefault(require("../../package.json"));
20
+ const base_1 = require("./base");
21
+ const auth_1 = require("../auth");
22
+ const { version } = package_json_1.default;
23
+ /**
24
+ * Global prefix for all Thoughtspot postHash Params.
25
+ */
26
+ exports.THOUGHTSPOT_PARAM_PREFIX = 'ts-';
27
+ const TS_EMBED_ID = '_thoughtspot-embed';
28
+ /**
29
+ * The event id map from v2 event names to v1 event id
30
+ * v1 events are the classic embed events implemented in Blink v1
31
+ * We cannot rename v1 event types to maintain backward compatibility
32
+ *
33
+ * @internal
34
+ */
35
+ const V1EventMap = {};
36
+ /**
37
+ * Base class for embedding v2 experience
38
+ * Note: the v2 version of ThoughtSpot Blink is built on the new stack:
39
+ * React+GraphQL
40
+ */
41
+ class TsEmbed {
42
+ constructor(domSelector, viewConfig) {
43
+ this.isAppInitialized = false;
44
+ /**
45
+ * Should we encode URL Query Params using base64 encoding which thoughtspot
46
+ * will generate for embedding. This provides additional security to
47
+ * thoughtspot clusters against Cross site scripting attacks.
48
+ *
49
+ * @default false
50
+ */
51
+ this.shouldEncodeUrlQueryParams = false;
52
+ this.defaultHiddenActions = [types_1.Action.ReportError];
53
+ /**
54
+ * Send Custom style as part of payload of APP_INIT
55
+ *
56
+ * @param _
57
+ * @param responder
58
+ */
59
+ this.appInitCb = async (_, responder) => {
60
+ let authToken = '';
61
+ if (this.embedConfig.authType === types_1.AuthType.TrustedAuthTokenCookieless) {
62
+ authToken = await (0, auth_1.getAuthenticaionToken)(this.embedConfig);
63
+ }
64
+ this.isAppInitialized = true;
65
+ responder({
66
+ type: types_1.EmbedEvent.APP_INIT,
67
+ data: {
68
+ customisations: (0, utils_1.getCustomisations)(this.embedConfig, this.viewConfig),
69
+ authToken,
70
+ },
71
+ });
72
+ };
73
+ /**
74
+ * Sends updated auth token to the iFrame to avoid user logout
75
+ *
76
+ * @param _
77
+ * @param responder
78
+ */
79
+ this.updateAuthToken = async (_, responder) => {
80
+ const { autoLogin = false, authType } = this.embedConfig; // Set autoLogin default to false
81
+ if (authType === types_1.AuthType.TrustedAuthTokenCookieless) {
82
+ const authToken = await (0, auth_1.getAuthenticaionToken)(this.embedConfig);
83
+ responder({
84
+ type: types_1.EmbedEvent.AuthExpire,
85
+ data: { authToken },
86
+ });
87
+ }
88
+ else if (autoLogin) {
89
+ (0, base_1.handleAuth)();
90
+ }
91
+ (0, base_1.notifyAuthFailure)(auth_1.AuthFailureType.EXPIRY);
92
+ };
93
+ /**
94
+ * Register APP_INIT event and sendback init payload
95
+ */
96
+ this.registerAppInit = () => {
97
+ this.on(types_1.EmbedEvent.APP_INIT, this.appInitCb);
98
+ this.on(types_1.EmbedEvent.AuthExpire, this.updateAuthToken);
99
+ };
100
+ this.el = (0, utils_1.getDOMNode)(domSelector);
101
+ // TODO: handle error
102
+ this.embedConfig = (0, base_1.getEmbedConfig)();
103
+ if (!this.embedConfig.authTriggerContainer && !this.embedConfig.useEventForSAMLPopup) {
104
+ this.embedConfig.authTriggerContainer = domSelector;
105
+ }
106
+ this.thoughtSpotHost = (0, config_1.getThoughtSpotHost)(this.embedConfig);
107
+ this.thoughtSpotV2Base = (0, config_1.getV2BasePath)(this.embedConfig);
108
+ this.eventHandlerMap = new Map();
109
+ this.isError = false;
110
+ this.viewConfig = viewConfig;
111
+ this.shouldEncodeUrlQueryParams = this.embedConfig.shouldEncodeUrlQueryParams;
112
+ this.registerAppInit();
113
+ }
114
+ /**
115
+ * Throws error encountered during initialization.
116
+ */
117
+ throwInitError() {
118
+ this.handleError('You need to init the ThoughtSpot SDK module first');
119
+ }
120
+ /**
121
+ * Handles errors within the SDK
122
+ *
123
+ * @param error The error message or object
124
+ */
125
+ handleError(error) {
126
+ this.isError = true;
127
+ this.executeCallbacks(types_1.EmbedEvent.Error, {
128
+ error,
129
+ });
130
+ // Log error
131
+ console.error(error);
132
+ }
133
+ /**
134
+ * Extracts the type field from the event payload
135
+ *
136
+ * @param event The window message event
137
+ */
138
+ getEventType(event) {
139
+ var _a, _b;
140
+ // eslint-disable-next-line no-underscore-dangle
141
+ return ((_a = event.data) === null || _a === void 0 ? void 0 : _a.type) || ((_b = event.data) === null || _b === void 0 ? void 0 : _b.__type);
142
+ }
143
+ /**
144
+ * Extracts the port field from the event payload
145
+ *
146
+ * @param event The window message event
147
+ * @returns
148
+ */
149
+ getEventPort(event) {
150
+ if (event.ports.length && event.ports[0]) {
151
+ return event.ports[0];
152
+ }
153
+ return null;
154
+ }
155
+ /**
156
+ * fix for ts7.sep.cl
157
+ * will be removed for ts7.oct.cl
158
+ *
159
+ * @param event
160
+ * @param eventType
161
+ * @hidden
162
+ */
163
+ formatEventData(event, eventType) {
164
+ const eventData = {
165
+ ...event.data,
166
+ type: eventType,
167
+ };
168
+ if (!eventData.data) {
169
+ eventData.data = event.data.payload;
170
+ }
171
+ return eventData;
172
+ }
173
+ /**
174
+ * Adds a global event listener to window for "message" events.
175
+ * ThoughtSpot detects if a particular event is targeted to this
176
+ * embed instance through an identifier contained in the payload,
177
+ * and executes the registered callbacks accordingly.
178
+ */
179
+ subscribeToEvents() {
180
+ window.addEventListener('message', (event) => {
181
+ const eventType = this.getEventType(event);
182
+ const eventPort = this.getEventPort(event);
183
+ const eventData = this.formatEventData(event, eventType);
184
+ if (event.source === this.iFrame.contentWindow) {
185
+ this.executeCallbacks(eventType, (0, processData_1.processEventData)(eventType, eventData, this.thoughtSpotHost, this.el), eventPort);
186
+ }
187
+ });
188
+ }
189
+ /**
190
+ * Constructs the base URL string to load the ThoughtSpot app.
191
+ *
192
+ * @param query
193
+ */
194
+ getEmbedBasePath(query) {
195
+ let queryString = query;
196
+ if (this.shouldEncodeUrlQueryParams) {
197
+ queryString = `?base64UrlEncodedFlags=${(0, utils_1.getEncodedQueryParamsString)(queryString.substr(1))}`;
198
+ }
199
+ const basePath = [this.thoughtSpotHost, this.thoughtSpotV2Base, queryString]
200
+ .filter((x) => x.length > 0)
201
+ .join('/');
202
+ return `${basePath}#`;
203
+ }
204
+ /**
205
+ * Common query params set for all the embed modes.
206
+ *
207
+ * @param queryParams
208
+ * @returns queryParams
209
+ */
210
+ getBaseQueryParams(queryParams = {}) {
211
+ var _a, _b, _c;
212
+ let hostAppUrl = ((_a = window === null || window === void 0 ? void 0 : window.location) === null || _a === void 0 ? void 0 : _a.host) || '';
213
+ // The below check is needed because TS Cloud firewall, blocks
214
+ // localhost/127.0.0.1 in any url param.
215
+ if (hostAppUrl.includes('localhost') || hostAppUrl.includes('127.0.0.1')) {
216
+ hostAppUrl = 'local-host';
217
+ }
218
+ queryParams[types_1.Param.HostAppUrl] = encodeURIComponent(hostAppUrl);
219
+ queryParams[types_1.Param.ViewPortHeight] = window.innerHeight;
220
+ queryParams[types_1.Param.ViewPortWidth] = window.innerWidth;
221
+ queryParams[types_1.Param.Version] = version;
222
+ queryParams[types_1.Param.AuthType] = this.embedConfig.authType;
223
+ if (this.embedConfig.disableLoginRedirect === true || this.embedConfig.autoLogin === true) {
224
+ queryParams[types_1.Param.DisableLoginRedirect] = true;
225
+ }
226
+ if (this.embedConfig.authType === types_1.AuthType.EmbeddedSSO) {
227
+ queryParams[types_1.Param.ForceSAMLAutoRedirect] = true;
228
+ }
229
+ if (this.embedConfig.authType === types_1.AuthType.TrustedAuthTokenCookieless) {
230
+ queryParams[types_1.Param.cookieless] = true;
231
+ }
232
+ const { disabledActions, disabledActionReason, hiddenActions, visibleActions, showAlerts, additionalFlags, locale, customizations, contextMenuTrigger, linkOverride, insertInToSlide, } = this.viewConfig;
233
+ if (Array.isArray(visibleActions) && Array.isArray(hiddenActions)) {
234
+ this.handleError('You cannot have both hidden actions and visible actions');
235
+ return queryParams;
236
+ }
237
+ // TODO remove embedConfig.customCssUrl
238
+ const cssUrlParam = ((_b = customizations === null || customizations === void 0 ? void 0 : customizations.style) === null || _b === void 0 ? void 0 : _b.customCSSUrl) || this.embedConfig.customCssUrl;
239
+ if (cssUrlParam) {
240
+ queryParams[types_1.Param.CustomCSSUrl] = cssUrlParam;
241
+ }
242
+ if (disabledActions === null || disabledActions === void 0 ? void 0 : disabledActions.length) {
243
+ queryParams[types_1.Param.DisableActions] = disabledActions;
244
+ }
245
+ if (disabledActionReason) {
246
+ queryParams[types_1.Param.DisableActionReason] = disabledActionReason;
247
+ }
248
+ queryParams[types_1.Param.HideActions] = [...this.defaultHiddenActions, ...(hiddenActions !== null && hiddenActions !== void 0 ? hiddenActions : [])];
249
+ if (Array.isArray(visibleActions)) {
250
+ queryParams[types_1.Param.VisibleActions] = visibleActions;
251
+ }
252
+ /**
253
+ * Default behavior for context menu will be left-click
254
+ * from version 9.2.0.cl the user have an option to override context
255
+ * menu click
256
+ */
257
+ if (contextMenuTrigger === types_1.ContextMenuTriggerOptions.LEFT_CLICK) {
258
+ queryParams[types_1.Param.ContextMenuTrigger] = true;
259
+ }
260
+ else if (contextMenuTrigger === types_1.ContextMenuTriggerOptions.RIGHT_CLICK) {
261
+ queryParams[types_1.Param.ContextMenuTrigger] = false;
262
+ }
263
+ const spriteUrl = (customizations === null || customizations === void 0 ? void 0 : customizations.iconSpriteUrl)
264
+ || ((_c = this.embedConfig.customizations) === null || _c === void 0 ? void 0 : _c.iconSpriteUrl);
265
+ if (spriteUrl) {
266
+ queryParams[types_1.Param.IconSpriteUrl] = spriteUrl.replace('https://', '');
267
+ }
268
+ if (showAlerts !== undefined) {
269
+ queryParams[types_1.Param.ShowAlerts] = showAlerts;
270
+ }
271
+ if (locale !== undefined) {
272
+ queryParams[types_1.Param.Locale] = locale;
273
+ }
274
+ if (additionalFlags && additionalFlags.constructor.name === 'Object') {
275
+ Object.assign(queryParams, additionalFlags);
276
+ }
277
+ if (linkOverride) {
278
+ queryParams[types_1.Param.LinkOverride] = linkOverride;
279
+ }
280
+ if (insertInToSlide) {
281
+ queryParams[types_1.Param.ShowInsertToSlide] = insertInToSlide;
282
+ }
283
+ return queryParams;
284
+ }
285
+ /**
286
+ * Constructs the base URL string to load v1 of the ThoughtSpot app.
287
+ * This is used for embedding Liveboards, visualizations, and full application.
288
+ *
289
+ * @param queryString The query string to append to the URL.
290
+ * @param isAppEmbed A Boolean parameter to specify if you are embedding
291
+ * the full application.
292
+ */
293
+ getV1EmbedBasePath(queryString) {
294
+ const queryParams = this.shouldEncodeUrlQueryParams
295
+ ? `?base64UrlEncodedFlags=${(0, utils_1.getEncodedQueryParamsString)(queryString)}`
296
+ : `?${queryString}`;
297
+ const path = `${this.thoughtSpotHost}/${queryParams}#`;
298
+ return path;
299
+ }
300
+ getEmbedParams() {
301
+ const queryParams = this.getBaseQueryParams();
302
+ return (0, utils_1.getQueryParamString)(queryParams);
303
+ }
304
+ getRootIframeSrc() {
305
+ const query = this.getEmbedParams();
306
+ return this.getEmbedBasePath(query);
307
+ }
308
+ createIframeEl(frameSrc) {
309
+ const iFrame = document.createElement('iframe');
310
+ iFrame.src = frameSrc;
311
+ iFrame.id = TS_EMBED_ID;
312
+ // according to screenfull.js documentation
313
+ // allowFullscreen, webkitallowfullscreen and mozallowfullscreen must be
314
+ // true
315
+ iFrame.allowFullscreen = true;
316
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
317
+ // @ts-ignore
318
+ iFrame.webkitallowfullscreen = true;
319
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
320
+ // @ts-ignore
321
+ iFrame.mozallowfullscreen = true;
322
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
323
+ // @ts-ignore
324
+ iFrame.allow = 'clipboard-read; clipboard-write';
325
+ const { height: frameHeight, width: frameWidth, ...restParams } = this.viewConfig.frameParams || {};
326
+ const width = (0, utils_1.getCssDimension)(frameWidth || config_1.DEFAULT_EMBED_WIDTH);
327
+ const height = (0, utils_1.getCssDimension)(frameHeight || config_1.DEFAULT_EMBED_HEIGHT);
328
+ (0, utils_1.setAttributes)(iFrame, restParams);
329
+ iFrame.style.width = `${width}`;
330
+ iFrame.style.height = `${height}`;
331
+ iFrame.style.border = '0';
332
+ iFrame.name = 'ThoughtSpot Embedded Analytics';
333
+ return iFrame;
334
+ }
335
+ /**
336
+ * Renders the embedded ThoughtSpot app in an iframe and sets up
337
+ * event listeners.
338
+ *
339
+ * @param url
340
+ * @param frameOptions
341
+ */
342
+ async renderIFrame(url) {
343
+ if (this.isError) {
344
+ return null;
345
+ }
346
+ if (!this.thoughtSpotHost) {
347
+ this.throwInitError();
348
+ }
349
+ if (url.length > config_1.URL_MAX_LENGTH) {
350
+ // warn: The URL is too long
351
+ }
352
+ return (0, base_1.renderInQueue)((nextInQueue) => {
353
+ var _a;
354
+ const initTimestamp = Date.now();
355
+ this.executeCallbacks(types_1.EmbedEvent.Init, {
356
+ data: {
357
+ timestamp: initTimestamp,
358
+ },
359
+ type: types_1.EmbedEvent.Init,
360
+ });
361
+ (0, mixpanel_service_1.uploadMixpanelEvent)(mixpanel_service_1.MIXPANEL_EVENT.VISUAL_SDK_RENDER_START);
362
+ return (_a = (0, base_1.getAuthPromise)()) === null || _a === void 0 ? void 0 : _a.then((isLoggedIn) => {
363
+ if (!isLoggedIn) {
364
+ this.insertIntoDOM(this.embedConfig.loginFailedMessage);
365
+ return;
366
+ }
367
+ (0, mixpanel_service_1.uploadMixpanelEvent)(mixpanel_service_1.MIXPANEL_EVENT.VISUAL_SDK_RENDER_COMPLETE);
368
+ this.iFrame = this.iFrame || this.createIframeEl(url);
369
+ this.iFrame.addEventListener('load', () => {
370
+ nextInQueue();
371
+ const loadTimestamp = Date.now();
372
+ this.executeCallbacks(types_1.EmbedEvent.Load, {
373
+ data: {
374
+ timestamp: loadTimestamp,
375
+ },
376
+ type: types_1.EmbedEvent.Load,
377
+ });
378
+ (0, mixpanel_service_1.uploadMixpanelEvent)(mixpanel_service_1.MIXPANEL_EVENT.VISUAL_SDK_IFRAME_LOAD_PERFORMANCE, {
379
+ timeTookToLoad: loadTimestamp - initTimestamp,
380
+ });
381
+ });
382
+ this.iFrame.addEventListener('error', () => {
383
+ nextInQueue();
384
+ });
385
+ this.insertIntoDOM(this.iFrame);
386
+ const prefetchIframe = document.querySelectorAll('.prefetchIframe');
387
+ if (prefetchIframe.length) {
388
+ prefetchIframe.forEach((el) => {
389
+ el.remove();
390
+ });
391
+ }
392
+ this.subscribeToEvents();
393
+ }).catch((error) => {
394
+ nextInQueue();
395
+ (0, mixpanel_service_1.uploadMixpanelEvent)(mixpanel_service_1.MIXPANEL_EVENT.VISUAL_SDK_RENDER_FAILED, {
396
+ error: JSON.stringify(error),
397
+ });
398
+ this.insertIntoDOM(this.embedConfig.loginFailedMessage);
399
+ this.handleError(error);
400
+ });
401
+ });
402
+ }
403
+ insertIntoDOM(child) {
404
+ var _a;
405
+ if (this.viewConfig.insertAsSibling) {
406
+ if (typeof child === 'string') {
407
+ const div = document.createElement('div');
408
+ div.innerHTML = child;
409
+ div.id = TS_EMBED_ID;
410
+ // eslint-disable-next-line no-param-reassign
411
+ child = div;
412
+ }
413
+ if (((_a = this.el.nextElementSibling) === null || _a === void 0 ? void 0 : _a.id) === TS_EMBED_ID) {
414
+ this.el.nextElementSibling.remove();
415
+ }
416
+ this.el.parentElement.insertBefore(child, this.el.nextSibling);
417
+ this.insertedDomEl = child;
418
+ }
419
+ else if (typeof child === 'string') {
420
+ this.el.innerHTML = child;
421
+ this.insertedDomEl = this.el.children[0];
422
+ }
423
+ else {
424
+ this.el.innerHTML = '';
425
+ this.el.appendChild(child);
426
+ this.insertedDomEl = child;
427
+ }
428
+ }
429
+ /**
430
+ * Sets the height of the iframe
431
+ *
432
+ * @param height The height in pixels
433
+ */
434
+ setIFrameHeight(height) {
435
+ this.iFrame.style.height = (0, utils_1.getCssDimension)(height);
436
+ }
437
+ /**
438
+ * Executes all registered event handlers for a particular event type
439
+ *
440
+ * @param eventType The event type
441
+ * @param data The payload invoked with the event handler
442
+ * @param eventPort The event Port for a specific MessageChannel
443
+ */
444
+ executeCallbacks(eventType, data, eventPort) {
445
+ const eventHandlers = this.eventHandlerMap.get(eventType) || [];
446
+ const allHandlers = this.eventHandlerMap.get(types_1.EmbedEvent.ALL) || [];
447
+ const callbacks = [...eventHandlers, ...allHandlers];
448
+ const dataStatus = (data === null || data === void 0 ? void 0 : data.status) || utils_1.embedEventStatus.END;
449
+ callbacks.forEach((callbackObj) => {
450
+ if (
451
+ // When start status is true it trigger only start releated
452
+ // payload
453
+ (callbackObj.options.start && dataStatus === utils_1.embedEventStatus.START)
454
+ // When start status is false it trigger only end releated
455
+ // payload
456
+ || (!callbackObj.options.start && dataStatus === utils_1.embedEventStatus.END)) {
457
+ callbackObj.callback(data, (payload) => {
458
+ this.triggerEventOnPort(eventPort, payload);
459
+ });
460
+ }
461
+ });
462
+ }
463
+ /**
464
+ * Returns the ThoughtSpot hostname or IP address.
465
+ */
466
+ getThoughtSpotHost() {
467
+ return this.thoughtSpotHost;
468
+ }
469
+ /**
470
+ * Gets the v1 event type (if applicable) for the EmbedEvent type
471
+ *
472
+ * @param eventType The v2 event type
473
+ * @returns The corresponding v1 event type if one exists
474
+ * or else the v2 event type itself
475
+ */
476
+ getCompatibleEventType(eventType) {
477
+ return V1EventMap[eventType] || eventType;
478
+ }
479
+ /**
480
+ * Calculates the iframe center for the current visible viewPort
481
+ * of iframe using Scroll position of Host App, offsetTop for iframe
482
+ * in Host app. ViewPort height of the tab.
483
+ *
484
+ * @returns iframe Center in visible viewport,
485
+ * Iframe height,
486
+ * View port height.
487
+ */
488
+ getIframeCenter() {
489
+ const offsetTopClient = (0, utils_1.getOffsetTop)(this.iFrame);
490
+ const scrollTopClient = window.scrollY;
491
+ const viewPortHeight = window.innerHeight;
492
+ const iframeHeight = this.iFrame.offsetHeight;
493
+ const iframeScrolled = scrollTopClient - offsetTopClient;
494
+ let iframeVisibleViewPort;
495
+ let iframeOffset;
496
+ if (iframeScrolled < 0) {
497
+ iframeVisibleViewPort = viewPortHeight - (offsetTopClient - scrollTopClient);
498
+ iframeVisibleViewPort = Math.min(iframeHeight, iframeVisibleViewPort);
499
+ iframeOffset = 0;
500
+ }
501
+ else {
502
+ iframeVisibleViewPort = Math.min(iframeHeight - iframeScrolled, viewPortHeight);
503
+ iframeOffset = iframeScrolled;
504
+ }
505
+ const iframeCenter = iframeOffset + iframeVisibleViewPort / 2;
506
+ return {
507
+ iframeCenter,
508
+ iframeScrolled,
509
+ iframeHeight,
510
+ viewPortHeight,
511
+ iframeVisibleViewPort,
512
+ };
513
+ }
514
+ /**
515
+ * Registers an event listener to trigger an alert when the ThoughtSpot app
516
+ * sends an event of a particular message type to the host application.
517
+ *
518
+ * @param messageType The message type
519
+ * @param callback A callback as a function
520
+ * @param options The message options
521
+ * @example
522
+ * ```js
523
+ * tsEmbed.on(EmbedEvent.Error, (data) => {
524
+ * console.error(data);
525
+ * });
526
+ * ```
527
+ * @example
528
+ * ```js
529
+ * tsEmbed.on(EmbedEvent.Save, (data) => {
530
+ * console.log("Answer save clicked", data);
531
+ * }, {
532
+ * start: true // This will trigger the callback on start of save
533
+ * });
534
+ * ```
535
+ */
536
+ on(messageType, callback, options = { start: false }) {
537
+ if (this.isRendered) {
538
+ this.handleError('Please register event handlers before calling render');
539
+ }
540
+ const callbacks = this.eventHandlerMap.get(messageType) || [];
541
+ callbacks.push({ options, callback });
542
+ this.eventHandlerMap.set(messageType, callbacks);
543
+ return this;
544
+ }
545
+ /**
546
+ * Removes an event listener for a particular event type.
547
+ *
548
+ * @param messageType The message type
549
+ * @param callback The callback to remove
550
+ * @example
551
+ * ```js
552
+ * const errorHandler = (data) => { console.error(data); };
553
+ * tsEmbed.on(EmbedEvent.Error, errorHandler);
554
+ * tsEmbed.off(EmbedEvent.Error, errorHandler);
555
+ * ```
556
+ */
557
+ off(messageType, callback) {
558
+ const callbacks = this.eventHandlerMap.get(messageType) || [];
559
+ const index = callbacks.findIndex((cb) => cb.callback === callback);
560
+ if (index > -1) {
561
+ callbacks.splice(index, 1);
562
+ }
563
+ return this;
564
+ }
565
+ /**
566
+ * Triggers an event on specific Port registered against
567
+ * for the EmbedEvent
568
+ *
569
+ * @param eventType The message type
570
+ * @param data The payload to send
571
+ * @param eventPort
572
+ * @param payload
573
+ */
574
+ triggerEventOnPort(eventPort, payload) {
575
+ if (eventPort) {
576
+ try {
577
+ eventPort.postMessage({
578
+ type: payload.type,
579
+ data: payload.data,
580
+ });
581
+ }
582
+ catch (e) {
583
+ eventPort.postMessage({ error: e });
584
+ console.log(e);
585
+ }
586
+ }
587
+ else {
588
+ console.log('Event Port is not defined');
589
+ }
590
+ }
591
+ /**
592
+ * Triggers an event to the embedded app
593
+ *
594
+ * @param messageType The event type
595
+ * @param data The payload to send with the message
596
+ */
597
+ trigger(messageType, data = {}) {
598
+ (0, mixpanel_service_1.uploadMixpanelEvent)(`${mixpanel_service_1.MIXPANEL_EVENT.VISUAL_SDK_TRIGGER}-${messageType}`);
599
+ return (0, processTrigger_1.processTrigger)(this.iFrame, messageType, this.thoughtSpotHost, data);
600
+ }
601
+ /**
602
+ * Marks the ThoughtSpot object to have been rendered
603
+ * Needs to be overridden by subclasses to do the actual
604
+ * rendering of the iframe.
605
+ *
606
+ * @param args
607
+ */
608
+ render() {
609
+ this.isRendered = true;
610
+ return this;
611
+ }
612
+ /**
613
+ * Get the Post Url Params for THOUGHTSPOT from the current
614
+ * host app URL.
615
+ * THOUGHTSPOT URL params starts with a prefix "ts-"
616
+ *
617
+ * @version SDK: 1.14.0 | ThoughtSpot: 8.4.0.cl, 8.4.1-sw
618
+ */
619
+ getThoughtSpotPostUrlParams() {
620
+ const urlHash = window.location.hash;
621
+ const queryParams = window.location.search;
622
+ const postHashParams = urlHash.split('?');
623
+ const postURLParams = postHashParams[postHashParams.length - 1];
624
+ const queryParamsObj = new URLSearchParams(queryParams);
625
+ const postURLParamsObj = new URLSearchParams(postURLParams);
626
+ const params = new URLSearchParams();
627
+ const addKeyValuePairCb = (value, key) => {
628
+ if (key.startsWith(exports.THOUGHTSPOT_PARAM_PREFIX)) {
629
+ params.append(key, value);
630
+ }
631
+ };
632
+ queryParamsObj.forEach(addKeyValuePairCb);
633
+ postURLParamsObj.forEach(addKeyValuePairCb);
634
+ let tsParams = params.toString();
635
+ tsParams = tsParams ? `?${tsParams}` : '';
636
+ return tsParams;
637
+ }
638
+ /**
639
+ * Destroys the ThoughtSpot embed, and remove any nodes from the DOM.
640
+ *
641
+ * @version SDK: 1.19.1 | ThoughtSpot: *
642
+ */
643
+ destroy() {
644
+ try {
645
+ this.insertedDomEl.parentNode.removeChild(this.insertedDomEl);
646
+ }
647
+ catch (e) {
648
+ console.log('Error destroying TS Embed', e);
649
+ }
650
+ }
651
+ getUnderlyingFrameElement() {
652
+ return this.iFrame;
653
+ }
654
+ /**
655
+ * Prerenders a generic instance of the TS component.
656
+ * This means without the path but with the flags already applied.
657
+ * This is useful for prerendering the component in the background.
658
+ *
659
+ * @version SDK: 1.22.0
660
+ * @returns
661
+ */
662
+ async prerenderGeneric() {
663
+ const prerenderFrameSrc = this.getRootIframeSrc();
664
+ return this.renderIFrame(prerenderFrameSrc);
665
+ }
666
+ }
667
+ exports.TsEmbed = TsEmbed;
668
+ /**
669
+ * Base class for embedding v1 experience
670
+ * Note: The v1 version of ThoughtSpot Blink works on the AngularJS stack
671
+ * which is currently under migration to v2
672
+ *
673
+ * @inheritdoc
674
+ */
675
+ class V1Embed extends TsEmbed {
676
+ constructor(domSelector, viewConfig) {
677
+ super(domSelector, viewConfig);
678
+ this.viewConfig = viewConfig;
679
+ }
680
+ /**
681
+ * Render the ap p in an iframe and set up event handlers
682
+ *
683
+ * @param iframeSrc
684
+ */
685
+ renderV1Embed(iframeSrc) {
686
+ return this.renderIFrame(iframeSrc);
687
+ }
688
+ getRootIframeSrc() {
689
+ const runtimeFilters = this.viewConfig.runtimeFilters;
690
+ const filterQuery = (0, utils_1.getFilterQuery)(runtimeFilters || []);
691
+ const queryParams = this.getEmbedParams();
692
+ const queryString = [filterQuery, queryParams].filter(Boolean).join('&');
693
+ return this.getV1EmbedBasePath(queryString);
694
+ }
695
+ /**
696
+ * @inheritdoc
697
+ * @example
698
+ * ```js
699
+ * tsEmbed.on(EmbedEvent.Error, (data) => {
700
+ * console.error(data);
701
+ * });
702
+ * ```
703
+ * @example
704
+ * ```js
705
+ * tsEmbed.on(EmbedEvent.Save, (data) => {
706
+ * console.log("Answer save clicked", data);
707
+ * }, {
708
+ * start: true // This will trigger the callback on start of save
709
+ * });
710
+ * ```
711
+ */
712
+ on(messageType, callback, options = { start: false }) {
713
+ const eventType = this.getCompatibleEventType(messageType);
714
+ (0, mixpanel_service_1.uploadMixpanelEvent)(`${mixpanel_service_1.MIXPANEL_EVENT.VISUAL_SDK_ON}-${messageType}`);
715
+ return super.on(eventType, callback, options);
716
+ }
717
+ }
718
+ exports.V1Embed = V1Embed;
719
+ //# sourceMappingURL=ts-embed.js.map