@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
package/src/index.ts CHANGED
@@ -8,20 +8,14 @@
8
8
  * @author Ayon Ghosh <ayon.ghosh@thoughtspot.com>
9
9
  */
10
10
  import { AppEmbed, Page, AppViewConfig } from './embed/app';
11
- import { init, prefetch, logout, getEmbedConfig } from './embed/base';
12
11
  import {
13
- PinboardEmbed,
14
- LiveboardViewConfig,
15
- LiveboardEmbed,
16
- } from './embed/liveboard';
12
+ init, prefetch, logout, getEmbedConfig,
13
+ } from './embed/base';
14
+ import { PinboardEmbed, LiveboardViewConfig, LiveboardEmbed } from './embed/liveboard';
17
15
  import { SearchEmbed, SearchViewConfig } from './embed/search';
18
16
  import { SearchBarEmbed, SearchBarViewConfig } from './embed/search-bar';
19
17
  import {
20
- AuthFailureType,
21
- AuthStatus,
22
- AuthEvent,
23
- AuthEventEmitter,
24
- getSessionInfo,
18
+ AuthFailureType, AuthStatus, AuthEvent, AuthEventEmitter, getSessionInfo,
25
19
  } from './auth';
26
20
  import {
27
21
  AuthType,
@@ -41,6 +35,7 @@ import {
41
35
  CustomisationsInterface,
42
36
  CustomStyles,
43
37
  customCssInterface,
38
+ ContextMenuTriggerOptions,
44
39
  } from './types';
45
40
 
46
41
  export {
@@ -67,6 +62,7 @@ export {
67
62
  HostEvent,
68
63
  DataSourceVisualMode,
69
64
  Action,
65
+ ContextMenuTriggerOptions,
70
66
  EmbedConfig,
71
67
  SearchViewConfig,
72
68
  SearchBarViewConfig,
@@ -49,9 +49,7 @@ describe('Unit test for mixpanel', () => {
49
49
  initMixpanel(sessionInfo);
50
50
 
51
51
  expect(mixpanel.init).toHaveBeenCalledWith(sessionInfo.mixpanelToken);
52
- expect(mixpanel.identify).not.toHaveBeenCalledWith(
53
- sessionInfo.userGUID,
54
- );
52
+ expect(mixpanel.identify).not.toHaveBeenCalledWith(sessionInfo.userGUID);
55
53
  });
56
54
 
57
55
  test('when not init, should queue events and flush on init', () => {
@@ -19,6 +19,7 @@ let eventQueue: { eventId: string; eventProps: any }[] = [];
19
19
 
20
20
  /**
21
21
  * Pushes the event with its Property key-value map to mixpanel.
22
+ *
22
23
  * @param eventId
23
24
  * @param eventProps
24
25
  */
@@ -30,6 +31,9 @@ export function uploadMixpanelEvent(eventId: string, eventProps = {}): void {
30
31
  mixpanel.track(eventId, eventProps);
31
32
  }
32
33
 
34
+ /**
35
+ *
36
+ */
33
37
  function emptyQueue() {
34
38
  if (!isMixpanelInitialized) {
35
39
  return;
@@ -40,11 +44,16 @@ function emptyQueue() {
40
44
  eventQueue = [];
41
45
  }
42
46
 
47
+ /**
48
+ *
49
+ * @param sessionInfo
50
+ */
43
51
  export function initMixpanel(sessionInfo: any): void {
44
52
  if (!sessionInfo || !sessionInfo.mixpanelToken) {
45
53
  return;
46
54
  }
47
- // On a public cluster the user is anonymous, so don't set the identify to userGUID
55
+ // On a public cluster the user is anonymous, so don't set the identify to
56
+ // userGUID
48
57
  const isPublicCluster = !!sessionInfo.isPublicUser;
49
58
  const token = sessionInfo.mixpanelToken;
50
59
  if (token) {
@@ -57,6 +66,9 @@ export function initMixpanel(sessionInfo: any): void {
57
66
  }
58
67
  }
59
68
 
69
+ /**
70
+ *
71
+ */
60
72
  export function testResetMixpanel() {
61
73
  isMixpanelInitialized = false;
62
74
  eventQueue = [];
@@ -1,8 +1,12 @@
1
1
  import React from 'react';
2
2
  import '@testing-library/jest-dom';
3
3
  import '@testing-library/jest-dom/extend-expect';
4
- import { cleanup, fireEvent, render, waitFor } from '@testing-library/react';
5
- import { Action, EmbedEvent, HostEvent, RuntimeFilterOp } from '../types';
4
+ import {
5
+ cleanup, fireEvent, render, waitFor,
6
+ } from '@testing-library/react';
7
+ import {
8
+ Action, EmbedEvent, HostEvent, RuntimeFilterOp,
9
+ } from '../types';
6
10
  import {
7
11
  executeAfterWait,
8
12
  getIFrameEl,
@@ -11,11 +15,7 @@ import {
11
15
  mockMessageChannel,
12
16
  } from '../test/test-utils';
13
17
  import {
14
- SearchEmbed,
15
- AppEmbed,
16
- LiveboardEmbed,
17
- useEmbedRef,
18
- SearchBarEmbed,
18
+ SearchEmbed, AppEmbed, LiveboardEmbed, useEmbedRef, SearchBarEmbed,
19
19
  } from './index';
20
20
  import { AuthType, init } from '../index';
21
21
 
@@ -86,10 +86,7 @@ describe('React Components', () => {
86
86
  const TestComponent = () => {
87
87
  const embedRef = useEmbedRef();
88
88
  const onLiveboardRendered = () => {
89
- embedRef.current.trigger(HostEvent.SetVisibleVizs, [
90
- 'viz1',
91
- 'viz2',
92
- ]);
89
+ embedRef.current.trigger(HostEvent.SetVisibleVizs, ['viz1', 'viz2']);
93
90
  };
94
91
 
95
92
  return (
@@ -139,9 +136,65 @@ describe('React Components', () => {
139
136
  );
140
137
 
141
138
  await waitFor(() => getIFrameEl(container));
142
- expect(getIFrameSrc(container)).toContain(
143
- 'col1=revenue&op1=EQ&val1=100',
139
+ expect(getIFrameSrc(container)).toContain('col1=revenue&op1=EQ&val1=100');
140
+ });
141
+
142
+ it('Should have the correct container element', async () => {
143
+ const { container } = render(
144
+ <LiveboardEmbed liveboardId="abcd" className="def" />,
145
+ );
146
+
147
+ await waitFor(() => getIFrameEl(container));
148
+ expect(container.querySelector('div')).not.toBe(null);
149
+ expect(
150
+ container.querySelector('div').classList.contains('def'),
151
+ ).toBe(true);
152
+
153
+ const { container: containerSibling } = render(
154
+ <LiveboardEmbed
155
+ liveboardId="abcd"
156
+ className="def"
157
+ insertAsSibling={true}
158
+ />,
144
159
  );
160
+ await waitFor(() => getIFrameEl(containerSibling));
161
+ expect(containerSibling.querySelector('span')).not.toBe(null);
162
+ expect(containerSibling.querySelector('span').style.position).toBe(
163
+ 'absolute',
164
+ );
165
+ expect(
166
+ getIFrameEl(containerSibling).classList.contains('def'),
167
+ ).toBe(true);
168
+ expect(containerSibling.querySelector('div')).toBe(null);
169
+ });
170
+
171
+ it('Should have the correct container element', async () => {
172
+ const { container } = render(
173
+ <LiveboardEmbed liveboardId="abcd" className="def" />,
174
+ );
175
+
176
+ await waitFor(() => getIFrameEl(container));
177
+ expect(container.querySelector('div')).not.toBe(null);
178
+ expect(
179
+ container.querySelector('div').classList.contains('def'),
180
+ ).toBe(true);
181
+
182
+ const { container: containerSibling } = render(
183
+ <LiveboardEmbed
184
+ liveboardId="abcd"
185
+ className="def"
186
+ insertAsSibling={true}
187
+ />,
188
+ );
189
+ await waitFor(() => getIFrameEl(containerSibling));
190
+ expect(containerSibling.querySelector('span')).not.toBe(null);
191
+ expect(containerSibling.querySelector('span').style.position).toBe(
192
+ 'absolute',
193
+ );
194
+ expect(
195
+ getIFrameEl(containerSibling).classList.contains('def'),
196
+ ).toBe(true);
197
+ expect(containerSibling.querySelector('div')).toBe(null);
145
198
  });
146
199
 
147
200
  it('Should have the correct container element', async () => {
@@ -1,38 +1,27 @@
1
1
  import React from 'react';
2
2
  import useDeepCompareEffect from 'use-deep-compare-effect';
3
3
  import { deepMerge } from '../utils';
4
- import {
5
- SearchBarEmbed as _SearchBarEmbed,
6
- SearchBarViewConfig,
7
- } from '../embed/search-bar';
4
+ import { SearchBarEmbed as _SearchBarEmbed, SearchBarViewConfig } from '../embed/search-bar';
8
5
  import { SearchEmbed as _SearchEmbed, SearchViewConfig } from '../embed/search';
9
6
  import { AppEmbed as _AppEmbed, AppViewConfig } from '../embed/app';
10
- import {
11
- LiveboardEmbed as _LiveboardEmbed,
12
- LiveboardViewConfig,
13
- } from '../embed/liveboard';
7
+ import { LiveboardEmbed as _LiveboardEmbed, LiveboardViewConfig } from '../embed/liveboard';
14
8
  import { TsEmbed } from '../embed/ts-embed';
15
9
 
16
10
  import { EmbedEvent, ViewConfig } from '../types';
17
11
  import { EmbedProps, getViewPropsAndListeners } from './util';
18
12
 
19
- const componentFactory = <
20
- T extends typeof TsEmbed,
21
- U extends EmbedProps,
22
- V extends ViewConfig
23
- >(
13
+ const componentFactory = <T extends typeof TsEmbed, U extends EmbedProps, V extends ViewConfig>(
24
14
  EmbedConstructor: T,
25
- ) =>
26
- React.forwardRef<TsEmbed, U>(
27
- (props: U, forwardedRef: React.MutableRefObject<TsEmbed>) => {
28
- const ref = React.useRef<HTMLDivElement>(null);
29
- const { className, ...embedProps } = props;
30
- const { viewConfig, listeners } = getViewPropsAndListeners<
15
+ ) => React.forwardRef<TsEmbed, U>(
16
+ (props: U, forwardedRef: React.MutableRefObject<TsEmbed>) => {
17
+ const ref = React.useRef<HTMLDivElement>(null);
18
+ const { className, ...embedProps } = props;
19
+ const { viewConfig, listeners } = getViewPropsAndListeners<
31
20
  Omit<U, 'className'>,
32
21
  V
33
22
  >(embedProps);
34
- useDeepCompareEffect(() => {
35
- const tsEmbed = new EmbedConstructor(
23
+ useDeepCompareEffect(() => {
24
+ const tsEmbed = new EmbedConstructor(
36
25
  ref!.current,
37
26
  deepMerge(
38
27
  {
@@ -45,77 +34,137 @@ const componentFactory = <
45
34
  },
46
35
  viewConfig,
47
36
  ),
48
- );
49
- Object.keys(listeners).forEach((eventName) => {
50
- tsEmbed.on(
37
+ );
38
+ Object.keys(listeners).forEach((eventName) => {
39
+ tsEmbed.on(
51
40
  eventName as EmbedEvent,
52
41
  listeners[eventName as EmbedEvent],
53
- );
54
- });
55
- tsEmbed.render();
56
- if (forwardedRef) {
57
- // eslint-disable-next-line no-param-reassign
58
- forwardedRef.current = tsEmbed;
59
- }
60
- return () => {
61
- tsEmbed.destroy();
62
- };
63
- }, [viewConfig, listeners]);
42
+ );
43
+ });
44
+ tsEmbed.render();
45
+ if (forwardedRef) {
46
+ // eslint-disable-next-line no-param-reassign
47
+ forwardedRef.current = tsEmbed;
48
+ }
49
+ return () => {
50
+ tsEmbed.destroy();
51
+ };
52
+ }, [viewConfig, listeners]);
64
53
 
65
- return viewConfig.insertAsSibling ? (
66
- <span
54
+ return (
55
+ (viewConfig.insertAsSibling)
56
+ ? <span
67
57
  data-testid="tsEmbed"
68
58
  ref={ref}
69
59
  style={{ position: 'absolute' }}
70
60
  ></span>
71
- ) : (
72
- <div
61
+ : <div
73
62
  data-testid="tsEmbed"
74
63
  ref={ref}
75
- className={className}
76
- ></div>
77
- );
78
- },
79
- );
64
+ className={className}>
65
+ </div>
66
+ );
67
+ },
68
+ );
80
69
 
81
70
  interface SearchProps extends EmbedProps, SearchViewConfig {}
82
71
 
83
- export const SearchEmbed = componentFactory<
84
- typeof _SearchEmbed,
85
- SearchProps,
86
- SearchViewConfig
87
- >(_SearchEmbed);
72
+ /**
73
+ * React component for Search Embed.
74
+ *
75
+ * @example
76
+ * ```tsx
77
+ * function Search() {
78
+ * return <SearchEmbed
79
+ * dataSource="dataSourceId"
80
+ * searchOptions={{ searchTokenString: "[revenue]" }}
81
+ * />
82
+ * }
83
+ * ```
84
+ */
85
+ export const SearchEmbed = componentFactory<typeof _SearchEmbed, SearchProps, SearchViewConfig>(
86
+ _SearchEmbed,
87
+ );
88
88
 
89
89
  interface AppProps extends EmbedProps, AppViewConfig {}
90
90
 
91
- export const AppEmbed = componentFactory<
92
- typeof _AppEmbed,
93
- AppProps,
94
- AppViewConfig
95
- >(_AppEmbed);
91
+ /**
92
+ * React component for Full app Embed.
93
+ *
94
+ * @example
95
+ * ```tsx
96
+ * function Search() {
97
+ * return <AppEmbed
98
+ * showPrimaryNavbar={false}
99
+ * pageId={Page.Liveboards}
100
+ * onError={(error) => console.error(error)}
101
+ * />
102
+ * }
103
+ * ```
104
+ */
105
+ export const AppEmbed = componentFactory<typeof _AppEmbed, AppProps, AppViewConfig>(_AppEmbed);
96
106
 
97
107
  interface LiveboardProps extends EmbedProps, LiveboardViewConfig {}
98
108
 
109
+ /**
110
+ * React component for Liveboard embed.
111
+ *
112
+ * @example
113
+ * ```tsx
114
+ * function Liveboard() {
115
+ * return <LiveboardEmbed
116
+ * liveboardId="liveboardId"
117
+ * fullHeight={true} {/* default false *\/}
118
+ * onLiveboardRendered={() => console.log('Liveboard rendered')}
119
+ * vizId="vizId" {/* if doing viz embed *\/}
120
+ * />
121
+ * }
122
+ * ```
123
+ */
99
124
  export const LiveboardEmbed = componentFactory<
100
125
  typeof _LiveboardEmbed,
101
126
  LiveboardProps,
102
127
  LiveboardViewConfig
103
128
  >(_LiveboardEmbed);
104
129
 
105
- export const PinboardEmbed = componentFactory<
106
- typeof _LiveboardEmbed,
107
- LiveboardProps,
108
- LiveboardViewConfig
109
- >(_LiveboardEmbed);
130
+ export const PinboardEmbed = LiveboardEmbed;
110
131
 
111
132
  interface SearchBarEmbedProps extends EmbedProps, SearchBarViewConfig {}
112
133
 
134
+ /**
135
+ * React component for Search bar embed.
136
+ *
137
+ * @example
138
+ * ```tsx
139
+ * function SearchBar() {
140
+ * return <SearchBarEmbed
141
+ * dataSource="dataSourceId"
142
+ * searchOptions={{ searchTokenString: "[revenue]" }}
143
+ * />
144
+ * }
145
+ * ```
146
+ */
113
147
  export const SearchBarEmbed = componentFactory<
114
148
  typeof _SearchBarEmbed,
115
149
  SearchBarEmbedProps,
116
150
  SearchBarViewConfig
117
151
  >(_SearchBarEmbed);
118
152
 
119
- export const useEmbedRef = (): React.MutableRefObject<TsEmbed> => {
120
- return React.useRef<TsEmbed>(null);
121
- };
153
+ /**
154
+ * Get a reference to the embed component to trigger events on the component.
155
+ *
156
+ * @example
157
+ * ```
158
+ * function Component() {
159
+ * const ref = useEmbedRef();
160
+ * useEffect(() => {
161
+ * ref.current.trigger(
162
+ * EmbedEvent.UpdateRuntimeFilter,
163
+ * [{ columnName: 'name', operator: 'EQ', values: ['value']}]);
164
+ * }, [])
165
+ * return <LiveboardEmbed ref={ref} liveboardId={<id>} />
166
+ * }
167
+ * ```
168
+ * @returns {React.MutableRefObject<TsEmbed>} ref
169
+ */
170
+ export const useEmbedRef = (): React.MutableRefObject<TsEmbed> => React.useRef<TsEmbed>(null);
package/src/react/util.ts CHANGED
@@ -1,9 +1,7 @@
1
1
  import { EmbedEvent, MessageCallback, ViewConfig } from '../types';
2
2
 
3
- // eslint-disable-next-line prettier/prettier
4
3
  export type EmbedEventHandlers = { [key in keyof typeof EmbedEvent as `on${Capitalize<key>}`]?: MessageCallback };
5
4
 
6
-
7
5
  export interface EmbedProps extends ViewConfig, EmbedEventHandlers {
8
6
  className?: string;
9
7
  }
@@ -13,7 +11,13 @@ export interface ViewConfigAndListeners<T extends ViewConfig> {
13
11
  listeners: { [key in EmbedEvent]?: MessageCallback };
14
12
  }
15
13
 
16
- export function getViewPropsAndListeners<T extends EmbedProps, U extends ViewConfig>(props: T): ViewConfigAndListeners<U> {
14
+ /**
15
+ *
16
+ * @param props
17
+ */
18
+ export function getViewPropsAndListeners<
19
+ T extends EmbedProps,
20
+ U extends ViewConfig>(props: T): ViewConfigAndListeners<U> {
17
21
  return Object.keys(props).reduce(
18
22
  (accu, key) => {
19
23
  if (key.startsWith('on')) {
@@ -29,4 +33,4 @@ export function getViewPropsAndListeners<T extends EmbedProps, U extends ViewCon
29
33
  listeners: {},
30
34
  },
31
35
  );
32
- }
36
+ }
@@ -3,18 +3,15 @@ import { Action, AuthType } from '../types';
3
3
 
4
4
  /**
5
5
  Initialises fetch to the global object
6
- */
7
- global.fetch = jest.fn(() =>
8
- Promise.resolve({
9
- json: () => ({ mixpanelAccessToken: '' }),
10
- }),
11
- );
6
+ */
7
+ global.fetch = jest.fn(() => Promise.resolve({
8
+ json: () => ({ mixpanelAccessToken: '' }),
9
+ }));
12
10
 
13
11
  export const defaultParamsWithoutHiddenActions = `hostAppUrl=local-host&viewPortHeight=768&viewPortWidth=1024&sdkVersion=${version}&authType=${AuthType.None}`;
14
12
  export const defaultParams = `&${defaultParamsWithoutHiddenActions}&hideAction=[%22${Action.ReportError}%22]`;
15
13
  export const defaultParamsForPinboardEmbed = `hostAppUrl=local-host&viewPortHeight=768&viewPortWidth=1024&sdkVersion=${version}&authType=None&hideAction=[%22${Action.ReportError}%22]`;
16
- export const getDocumentBody = () =>
17
- '<div id="embed"></div><div id="embed-2"></div>';
14
+ export const getDocumentBody = () => '<div id="embed"></div><div id="embed-2"></div>';
18
15
 
19
16
  type DOMElement = HTMLElement | Document;
20
17
 
@@ -22,40 +19,33 @@ export const getRootEl = () => document.getElementById('embed');
22
19
 
23
20
  export const getRootEl2 = () => document.getElementById('embed-2');
24
21
 
25
- export const getIFrameEl = (container: DOMElement = document) => {
26
- return container.querySelector('iframe');
27
- };
22
+ export const getIFrameEl = (container: DOMElement = document) => container.querySelector('iframe');
28
23
 
29
24
  export const getAllIframeEl = () => document.querySelectorAll('iframe');
30
25
 
31
- export const getIFrameSrc = (container: DOMElement = document) =>
32
- getIFrameEl(container).src;
26
+ export const getIFrameSrc = (container: DOMElement = document) => getIFrameEl(container).src;
33
27
 
34
- export const waitFor = (fn: () => boolean): Promise<void> => {
35
- return new Promise((resolve) => {
36
- const interval = setInterval(() => {
37
- const value = fn();
38
- if (value) {
39
- clearInterval(interval);
40
- resolve();
41
- }
42
- }, 100);
43
- });
44
- };
28
+ export const waitFor = (fn: () => boolean): Promise<void> => new Promise((resolve) => {
29
+ const interval = setInterval(() => {
30
+ const value = fn();
31
+ if (value) {
32
+ clearInterval(interval);
33
+ resolve();
34
+ }
35
+ }, 100);
36
+ });
45
37
 
46
38
  /**
47
39
  * jsdom does not set event source, therefore we do it
48
40
  * programmatically and use dispatchEvent instead of the
49
41
  * postMessage API
50
42
  * Reference: https://github.com/jsdom/jsdom/issues/2745
43
+ *
51
44
  * @param window
52
45
  * @param data
46
+ * @param port
53
47
  */
54
- export const postMessageToParent = (
55
- window: WindowProxy,
56
- data: any,
57
- port?: any,
58
- ) => {
48
+ export const postMessageToParent = (window: WindowProxy, data: any, port?: any) => {
59
49
  const message = new MessageEvent('message', {
60
50
  data,
61
51
  source: window,
@@ -66,33 +56,37 @@ export const postMessageToParent = (
66
56
 
67
57
  /**
68
58
  * Execute a given function after a certain time has elapsed
59
+ *
69
60
  * @param fn The function to be executed after the wait period
70
61
  * @param waitTime The wait period in milliseconds
71
62
  */
72
63
  export const executeAfterWait = (
73
64
  fn: (...args: any[]) => void,
74
65
  waitTime = 0,
75
- ) => {
76
- return new Promise((resolve, reject) => {
77
- setTimeout(() => {
78
- const value = fn();
79
- resolve(value);
80
- }, waitTime);
81
- });
82
- };
66
+ ) => new Promise((resolve, reject) => {
67
+ setTimeout(() => {
68
+ const value = fn();
69
+ resolve(value);
70
+ }, waitTime);
71
+ });
83
72
 
84
73
  /**
85
74
  * Time (in milliseconds) to wait for async events to be triggered
86
75
  */
87
76
  export const EVENT_WAIT_TIME = 1000;
88
77
 
78
+ /**
79
+ *
80
+ * @param str
81
+ */
89
82
  export function fixedEncodeURI(str: string) {
90
83
  return encodeURI(str).replace(/%5B/g, '[').replace(/%5D/g, ']');
91
84
  }
92
85
 
93
86
  /**
94
- * MessageChannel is available in Node > 15.0.0. Since the current node environment's
95
- * used for github actions is not above 14, we are mocking this for the current unit tests.
87
+ * MessageChannel is available in Node > 15.0.0. Since the current node
88
+ * environment's used for github actions is not above 14, we are mocking this
89
+ * for the current unit tests.
96
90
  */
97
91
  export const messageChannelMock: any = {
98
92
  port1: {},
@@ -105,3 +99,13 @@ export const mockMessageChannel = () => {
105
99
  return messageChannelMock;
106
100
  } as any;
107
101
  };
102
+
103
+ export const expectUrlMatchesWithParams = (source: string, target: string) => {
104
+ const sourceUrl = new URL(source);
105
+ const targetUrl = new URL(target);
106
+ expect(sourceUrl.origin).toBe(targetUrl.origin);
107
+ expect(sourceUrl.pathname).toBe(targetUrl.pathname);
108
+ const sourceParamsObj = Object.fromEntries(sourceUrl.searchParams);
109
+ const targetParamsObj = Object.fromEntries(targetUrl.searchParams);
110
+ expect(sourceParamsObj).toMatchObject(targetParamsObj);
111
+ };