@thoughtspot/visual-embed-sdk 1.52.0 → 1.52.2-beta

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 (385) hide show
  1. package/cjs/package.json +19 -4
  2. package/cjs/src/contracts/contracts.spec.d.ts +2 -0
  3. package/cjs/src/contracts/contracts.spec.d.ts.map +1 -0
  4. package/cjs/src/contracts/contracts.spec.js +345 -0
  5. package/cjs/src/contracts/contracts.spec.js.map +1 -0
  6. package/cjs/src/contracts/embed-event-payloads.d.ts +73 -0
  7. package/cjs/src/contracts/embed-event-payloads.d.ts.map +1 -0
  8. package/cjs/src/contracts/embed-event-payloads.js +3 -0
  9. package/cjs/src/contracts/embed-event-payloads.js.map +1 -0
  10. package/cjs/src/contracts/host-event-contracts.d.ts +416 -0
  11. package/cjs/src/contracts/host-event-contracts.d.ts.map +1 -0
  12. package/cjs/src/contracts/host-event-contracts.js +3 -0
  13. package/cjs/src/contracts/host-event-contracts.js.map +1 -0
  14. package/cjs/src/contracts/index.d.ts +22 -0
  15. package/cjs/src/contracts/index.d.ts.map +1 -0
  16. package/cjs/src/contracts/index.js +33 -0
  17. package/cjs/src/contracts/index.js.map +1 -0
  18. package/cjs/src/contracts/ui-passthrough-contracts.d.ts +277 -0
  19. package/cjs/src/contracts/ui-passthrough-contracts.d.ts.map +1 -0
  20. package/cjs/src/{embed/hostEventClient/contracts.js → contracts/ui-passthrough-contracts.js} +6 -2
  21. package/cjs/src/contracts/ui-passthrough-contracts.js.map +1 -0
  22. package/cjs/src/embed/app.d.ts +21 -143
  23. package/cjs/src/embed/app.d.ts.map +1 -1
  24. package/cjs/src/embed/app.js +21 -121
  25. package/cjs/src/embed/app.js.map +1 -1
  26. package/cjs/src/embed/app.spec.js +80 -26
  27. package/cjs/src/embed/app.spec.js.map +1 -1
  28. package/cjs/src/embed/auto-frame-renderer.js +1 -1
  29. package/cjs/src/embed/auto-frame-renderer.js.map +1 -1
  30. package/cjs/src/embed/auto-frame-renderer.spec.js +24 -13
  31. package/cjs/src/embed/auto-frame-renderer.spec.js.map +1 -1
  32. package/cjs/src/embed/bodyless-conversation.js +1 -1
  33. package/cjs/src/embed/bodyless-conversation.js.map +1 -1
  34. package/cjs/src/embed/conversation.d.ts +1 -0
  35. package/cjs/src/embed/conversation.d.ts.map +1 -1
  36. package/cjs/src/embed/conversation.js +4 -4
  37. package/cjs/src/embed/conversation.js.map +1 -1
  38. package/cjs/src/embed/conversation.spec.js +35 -24
  39. package/cjs/src/embed/conversation.spec.js.map +1 -1
  40. package/cjs/src/embed/embedConfig.spec.js +2 -1
  41. package/cjs/src/embed/embedConfig.spec.js.map +1 -1
  42. package/cjs/src/embed/events.spec.js +12 -2
  43. package/cjs/src/embed/events.spec.js.map +1 -1
  44. package/cjs/src/embed/hostEventClient/host-event-client.d.ts +5 -4
  45. package/cjs/src/embed/hostEventClient/host-event-client.d.ts.map +1 -1
  46. package/cjs/src/embed/hostEventClient/host-event-client.js +34 -23
  47. package/cjs/src/embed/hostEventClient/host-event-client.js.map +1 -1
  48. package/cjs/src/embed/hostEventClient/host-event-client.spec.js +50 -44
  49. package/cjs/src/embed/hostEventClient/host-event-client.spec.js.map +1 -1
  50. package/cjs/src/embed/hostEventClient/utils.d.ts +10 -1
  51. package/cjs/src/embed/hostEventClient/utils.d.ts.map +1 -1
  52. package/cjs/src/embed/hostEventClient/utils.js +52 -6
  53. package/cjs/src/embed/hostEventClient/utils.js.map +1 -1
  54. package/cjs/src/embed/hostEventClient/utils.spec.js +151 -0
  55. package/cjs/src/embed/hostEventClient/utils.spec.js.map +1 -1
  56. package/cjs/src/embed/liveboard.d.ts +13 -164
  57. package/cjs/src/embed/liveboard.d.ts.map +1 -1
  58. package/cjs/src/embed/liveboard.js +72 -135
  59. package/cjs/src/embed/liveboard.js.map +1 -1
  60. package/cjs/src/embed/liveboard.spec.js +213 -29
  61. package/cjs/src/embed/liveboard.spec.js.map +1 -1
  62. package/cjs/src/embed/search-bar.js +1 -1
  63. package/cjs/src/embed/search-bar.js.map +1 -1
  64. package/cjs/src/embed/search.d.ts +14 -0
  65. package/cjs/src/embed/search.d.ts.map +1 -1
  66. package/cjs/src/embed/search.js +5 -2
  67. package/cjs/src/embed/search.js.map +1 -1
  68. package/cjs/src/embed/search.spec.js +85 -0
  69. package/cjs/src/embed/search.spec.js.map +1 -1
  70. package/cjs/src/embed/spotter-utils.d.ts +8 -1
  71. package/cjs/src/embed/spotter-utils.d.ts.map +1 -1
  72. package/cjs/src/embed/spotter-utils.js +14 -1
  73. package/cjs/src/embed/spotter-utils.js.map +1 -1
  74. package/cjs/src/embed/spotter-utils.spec.js +26 -0
  75. package/cjs/src/embed/spotter-utils.spec.js.map +1 -1
  76. package/cjs/src/embed/ts-embed.d.ts +20 -22
  77. package/cjs/src/embed/ts-embed.d.ts.map +1 -1
  78. package/cjs/src/embed/ts-embed.js +171 -66
  79. package/cjs/src/embed/ts-embed.js.map +1 -1
  80. package/cjs/src/embed/ts-embed.spec.js +486 -38
  81. package/cjs/src/embed/ts-embed.spec.js.map +1 -1
  82. package/cjs/src/errors.js +1 -1
  83. package/cjs/src/errors.js.map +1 -1
  84. package/cjs/src/full-height.d.ts +137 -0
  85. package/cjs/src/full-height.d.ts.map +1 -0
  86. package/cjs/src/full-height.js +272 -0
  87. package/cjs/src/full-height.js.map +1 -0
  88. package/cjs/src/full-height.spec.d.ts +2 -0
  89. package/cjs/src/full-height.spec.d.ts.map +1 -0
  90. package/cjs/src/full-height.spec.js +835 -0
  91. package/cjs/src/full-height.spec.js.map +1 -0
  92. package/cjs/src/index.d.ts +5 -3
  93. package/cjs/src/index.d.ts.map +1 -1
  94. package/cjs/src/index.js +6 -4
  95. package/cjs/src/index.js.map +1 -1
  96. package/cjs/src/react/all-types-export.d.ts +1 -1
  97. package/cjs/src/react/all-types-export.d.ts.map +1 -1
  98. package/cjs/src/react/all-types-export.js +2 -1
  99. package/cjs/src/react/all-types-export.js.map +1 -1
  100. package/cjs/src/react/all-types-export.parity.spec.js +55 -3
  101. package/cjs/src/react/all-types-export.parity.spec.js.map +1 -1
  102. package/cjs/src/types.d.ts +584 -24
  103. package/cjs/src/types.d.ts.map +1 -1
  104. package/cjs/src/types.js +370 -22
  105. package/cjs/src/types.js.map +1 -1
  106. package/cjs/src/utils/authService/tokenizedAuthService.spec.js +2 -1
  107. package/cjs/src/utils/authService/tokenizedAuthService.spec.js.map +1 -1
  108. package/cjs/src/utils/custom-actions.spec.js +4 -2
  109. package/cjs/src/utils/custom-actions.spec.js.map +1 -1
  110. package/cjs/src/utils/filterConverter.d.ts +106 -0
  111. package/cjs/src/utils/filterConverter.d.ts.map +1 -0
  112. package/cjs/src/utils/filterConverter.js +215 -0
  113. package/cjs/src/utils/filterConverter.js.map +1 -0
  114. package/cjs/src/utils/filterConverter.spec.d.ts +2 -0
  115. package/cjs/src/utils/filterConverter.spec.d.ts.map +1 -0
  116. package/cjs/src/utils/filterConverter.spec.js +709 -0
  117. package/cjs/src/utils/filterConverter.spec.js.map +1 -0
  118. package/cjs/src/utils/processData.spec.js +2 -1
  119. package/cjs/src/utils/processData.spec.js.map +1 -1
  120. package/cjs/src/utils/processTrigger.d.ts +3 -1
  121. package/cjs/src/utils/processTrigger.d.ts.map +1 -1
  122. package/cjs/src/utils/processTrigger.js +19 -51
  123. package/cjs/src/utils/processTrigger.js.map +1 -1
  124. package/cjs/src/utils/transport/iframe-transport.d.ts +55 -0
  125. package/cjs/src/utils/transport/iframe-transport.d.ts.map +1 -0
  126. package/cjs/src/utils/transport/iframe-transport.js +108 -0
  127. package/cjs/src/utils/transport/iframe-transport.js.map +1 -0
  128. package/cjs/src/utils/transport/iframe-transport.spec.d.ts +2 -0
  129. package/cjs/src/utils/transport/iframe-transport.spec.d.ts.map +1 -0
  130. package/cjs/src/utils/transport/iframe-transport.spec.js +140 -0
  131. package/cjs/src/utils/transport/iframe-transport.spec.js.map +1 -0
  132. package/cjs/src/utils.d.ts +18 -0
  133. package/cjs/src/utils.d.ts.map +1 -1
  134. package/cjs/src/utils.js +39 -1
  135. package/cjs/src/utils.js.map +1 -1
  136. package/cjs/src/utils.spec.js +62 -0
  137. package/cjs/src/utils.spec.js.map +1 -1
  138. package/dist/{index-BMppCU63.js → index-CcBYlGo9.js} +1 -1
  139. package/dist/src/contracts/contracts.spec.d.ts +2 -0
  140. package/dist/src/contracts/contracts.spec.d.ts.map +1 -0
  141. package/dist/src/contracts/embed-event-payloads.d.ts +73 -0
  142. package/dist/src/contracts/embed-event-payloads.d.ts.map +1 -0
  143. package/dist/src/contracts/host-event-contracts.d.ts +416 -0
  144. package/dist/src/contracts/host-event-contracts.d.ts.map +1 -0
  145. package/dist/src/contracts/index.d.ts +22 -0
  146. package/dist/src/contracts/index.d.ts.map +1 -0
  147. package/dist/src/contracts/ui-passthrough-contracts.d.ts +277 -0
  148. package/dist/src/contracts/ui-passthrough-contracts.d.ts.map +1 -0
  149. package/dist/src/embed/app.d.ts +21 -143
  150. package/dist/src/embed/app.d.ts.map +1 -1
  151. package/dist/src/embed/conversation.d.ts +1 -0
  152. package/dist/src/embed/conversation.d.ts.map +1 -1
  153. package/dist/src/embed/hostEventClient/host-event-client.d.ts +5 -4
  154. package/dist/src/embed/hostEventClient/host-event-client.d.ts.map +1 -1
  155. package/dist/src/embed/hostEventClient/utils.d.ts +10 -1
  156. package/dist/src/embed/hostEventClient/utils.d.ts.map +1 -1
  157. package/dist/src/embed/liveboard.d.ts +13 -164
  158. package/dist/src/embed/liveboard.d.ts.map +1 -1
  159. package/dist/src/embed/search.d.ts +14 -0
  160. package/dist/src/embed/search.d.ts.map +1 -1
  161. package/dist/src/embed/spotter-utils.d.ts +8 -1
  162. package/dist/src/embed/spotter-utils.d.ts.map +1 -1
  163. package/dist/src/embed/ts-embed.d.ts +20 -22
  164. package/dist/src/embed/ts-embed.d.ts.map +1 -1
  165. package/dist/src/full-height.d.ts +137 -0
  166. package/dist/src/full-height.d.ts.map +1 -0
  167. package/dist/src/full-height.spec.d.ts +2 -0
  168. package/dist/src/full-height.spec.d.ts.map +1 -0
  169. package/dist/src/index.d.ts +5 -3
  170. package/dist/src/index.d.ts.map +1 -1
  171. package/dist/src/react/all-types-export.d.ts +1 -1
  172. package/dist/src/react/all-types-export.d.ts.map +1 -1
  173. package/dist/src/types.d.ts +584 -24
  174. package/dist/src/types.d.ts.map +1 -1
  175. package/dist/src/utils/filterConverter.d.ts +106 -0
  176. package/dist/src/utils/filterConverter.d.ts.map +1 -0
  177. package/dist/src/utils/filterConverter.spec.d.ts +2 -0
  178. package/dist/src/utils/filterConverter.spec.d.ts.map +1 -0
  179. package/dist/src/utils/processTrigger.d.ts +3 -1
  180. package/dist/src/utils/processTrigger.d.ts.map +1 -1
  181. package/dist/src/utils/transport/iframe-transport.d.ts +55 -0
  182. package/dist/src/utils/transport/iframe-transport.d.ts.map +1 -0
  183. package/dist/src/utils/transport/iframe-transport.spec.d.ts +2 -0
  184. package/dist/src/utils/transport/iframe-transport.spec.d.ts.map +1 -0
  185. package/dist/src/utils.d.ts +18 -0
  186. package/dist/src/utils.d.ts.map +1 -1
  187. package/dist/tsembed-react.es.js +1144 -412
  188. package/dist/tsembed-react.js +1143 -411
  189. package/dist/tsembed.es.js +1357 -418
  190. package/dist/tsembed.js +1352 -412
  191. package/dist/visual-embed-sdk-react-full.d.ts +1514 -651
  192. package/dist/visual-embed-sdk-react.d.ts +1351 -632
  193. package/dist/visual-embed-sdk.d.ts +1508 -668
  194. package/lib/package.json +19 -4
  195. package/lib/src/contracts/contracts.spec.d.ts +2 -0
  196. package/lib/src/contracts/contracts.spec.d.ts.map +1 -0
  197. package/lib/src/contracts/contracts.spec.js +342 -0
  198. package/lib/src/contracts/contracts.spec.js.map +1 -0
  199. package/lib/src/contracts/embed-event-payloads.d.ts +73 -0
  200. package/lib/src/contracts/embed-event-payloads.d.ts.map +1 -0
  201. package/lib/src/contracts/embed-event-payloads.js +2 -0
  202. package/lib/src/contracts/embed-event-payloads.js.map +1 -0
  203. package/lib/src/contracts/host-event-contracts.d.ts +416 -0
  204. package/lib/src/contracts/host-event-contracts.d.ts.map +1 -0
  205. package/lib/src/contracts/host-event-contracts.js +2 -0
  206. package/lib/src/contracts/host-event-contracts.js.map +1 -0
  207. package/lib/src/contracts/index.d.ts +22 -0
  208. package/lib/src/contracts/index.d.ts.map +1 -0
  209. package/lib/src/contracts/index.js +22 -0
  210. package/lib/src/contracts/index.js.map +1 -0
  211. package/lib/src/contracts/ui-passthrough-contracts.d.ts +277 -0
  212. package/lib/src/contracts/ui-passthrough-contracts.d.ts.map +1 -0
  213. package/lib/src/{embed/hostEventClient/contracts.js → contracts/ui-passthrough-contracts.js} +6 -2
  214. package/lib/src/contracts/ui-passthrough-contracts.js.map +1 -0
  215. package/lib/src/embed/app.d.ts +21 -143
  216. package/lib/src/embed/app.d.ts.map +1 -1
  217. package/lib/src/embed/app.js +23 -123
  218. package/lib/src/embed/app.js.map +1 -1
  219. package/lib/src/embed/app.spec.js +80 -26
  220. package/lib/src/embed/app.spec.js.map +1 -1
  221. package/lib/src/embed/auto-frame-renderer.js +1 -1
  222. package/lib/src/embed/auto-frame-renderer.js.map +1 -1
  223. package/lib/src/embed/auto-frame-renderer.spec.js +24 -13
  224. package/lib/src/embed/auto-frame-renderer.spec.js.map +1 -1
  225. package/lib/src/embed/bodyless-conversation.js +1 -1
  226. package/lib/src/embed/bodyless-conversation.js.map +1 -1
  227. package/lib/src/embed/conversation.d.ts +1 -0
  228. package/lib/src/embed/conversation.d.ts.map +1 -1
  229. package/lib/src/embed/conversation.js +5 -5
  230. package/lib/src/embed/conversation.js.map +1 -1
  231. package/lib/src/embed/conversation.spec.js +35 -24
  232. package/lib/src/embed/conversation.spec.js.map +1 -1
  233. package/lib/src/embed/embedConfig.spec.js +2 -1
  234. package/lib/src/embed/embedConfig.spec.js.map +1 -1
  235. package/lib/src/embed/events.spec.js +12 -2
  236. package/lib/src/embed/events.spec.js.map +1 -1
  237. package/lib/src/embed/hostEventClient/host-event-client.d.ts +5 -4
  238. package/lib/src/embed/hostEventClient/host-event-client.d.ts.map +1 -1
  239. package/lib/src/embed/hostEventClient/host-event-client.js +19 -8
  240. package/lib/src/embed/hostEventClient/host-event-client.js.map +1 -1
  241. package/lib/src/embed/hostEventClient/host-event-client.spec.js +15 -9
  242. package/lib/src/embed/hostEventClient/host-event-client.spec.js.map +1 -1
  243. package/lib/src/embed/hostEventClient/utils.d.ts +10 -1
  244. package/lib/src/embed/hostEventClient/utils.d.ts.map +1 -1
  245. package/lib/src/embed/hostEventClient/utils.js +48 -3
  246. package/lib/src/embed/hostEventClient/utils.js.map +1 -1
  247. package/lib/src/embed/hostEventClient/utils.spec.js +152 -1
  248. package/lib/src/embed/hostEventClient/utils.spec.js.map +1 -1
  249. package/lib/src/embed/liveboard.d.ts +13 -164
  250. package/lib/src/embed/liveboard.d.ts.map +1 -1
  251. package/lib/src/embed/liveboard.js +73 -136
  252. package/lib/src/embed/liveboard.js.map +1 -1
  253. package/lib/src/embed/liveboard.spec.js +213 -29
  254. package/lib/src/embed/liveboard.spec.js.map +1 -1
  255. package/lib/src/embed/search-bar.js +1 -1
  256. package/lib/src/embed/search-bar.js.map +1 -1
  257. package/lib/src/embed/search.d.ts +14 -0
  258. package/lib/src/embed/search.d.ts.map +1 -1
  259. package/lib/src/embed/search.js +5 -2
  260. package/lib/src/embed/search.js.map +1 -1
  261. package/lib/src/embed/search.spec.js +85 -0
  262. package/lib/src/embed/search.spec.js.map +1 -1
  263. package/lib/src/embed/spotter-utils.d.ts +8 -1
  264. package/lib/src/embed/spotter-utils.d.ts.map +1 -1
  265. package/lib/src/embed/spotter-utils.js +12 -0
  266. package/lib/src/embed/spotter-utils.js.map +1 -1
  267. package/lib/src/embed/spotter-utils.spec.js +27 -1
  268. package/lib/src/embed/spotter-utils.spec.js.map +1 -1
  269. package/lib/src/embed/ts-embed.d.ts +20 -22
  270. package/lib/src/embed/ts-embed.d.ts.map +1 -1
  271. package/lib/src/embed/ts-embed.js +171 -66
  272. package/lib/src/embed/ts-embed.js.map +1 -1
  273. package/lib/src/embed/ts-embed.spec.js +484 -36
  274. package/lib/src/embed/ts-embed.spec.js.map +1 -1
  275. package/lib/src/errors.js +1 -1
  276. package/lib/src/errors.js.map +1 -1
  277. package/lib/src/full-height.d.ts +137 -0
  278. package/lib/src/full-height.d.ts.map +1 -0
  279. package/lib/src/full-height.js +268 -0
  280. package/lib/src/full-height.js.map +1 -0
  281. package/lib/src/full-height.spec.d.ts +2 -0
  282. package/lib/src/full-height.spec.d.ts.map +1 -0
  283. package/lib/src/full-height.spec.js +833 -0
  284. package/lib/src/full-height.spec.js.map +1 -0
  285. package/lib/src/index.d.ts +5 -3
  286. package/lib/src/index.d.ts.map +1 -1
  287. package/lib/src/index.js +3 -2
  288. package/lib/src/index.js.map +1 -1
  289. package/lib/src/react/all-types-export.d.ts +1 -1
  290. package/lib/src/react/all-types-export.d.ts.map +1 -1
  291. package/lib/src/react/all-types-export.js +1 -1
  292. package/lib/src/react/all-types-export.js.map +1 -1
  293. package/lib/src/react/all-types-export.parity.spec.js +55 -3
  294. package/lib/src/react/all-types-export.parity.spec.js.map +1 -1
  295. package/lib/src/types.d.ts +584 -24
  296. package/lib/src/types.d.ts.map +1 -1
  297. package/lib/src/types.js +370 -22
  298. package/lib/src/types.js.map +1 -1
  299. package/lib/src/utils/authService/tokenizedAuthService.spec.js +2 -1
  300. package/lib/src/utils/authService/tokenizedAuthService.spec.js.map +1 -1
  301. package/lib/src/utils/custom-actions.spec.js +4 -2
  302. package/lib/src/utils/custom-actions.spec.js.map +1 -1
  303. package/lib/src/utils/filterConverter.d.ts +106 -0
  304. package/lib/src/utils/filterConverter.d.ts.map +1 -0
  305. package/lib/src/utils/filterConverter.js +210 -0
  306. package/lib/src/utils/filterConverter.js.map +1 -0
  307. package/lib/src/utils/filterConverter.spec.d.ts +2 -0
  308. package/lib/src/utils/filterConverter.spec.d.ts.map +1 -0
  309. package/lib/src/utils/filterConverter.spec.js +707 -0
  310. package/lib/src/utils/filterConverter.spec.js.map +1 -0
  311. package/lib/src/utils/processData.spec.js +2 -1
  312. package/lib/src/utils/processData.spec.js.map +1 -1
  313. package/lib/src/utils/processTrigger.d.ts +3 -1
  314. package/lib/src/utils/processTrigger.d.ts.map +1 -1
  315. package/lib/src/utils/processTrigger.js +19 -51
  316. package/lib/src/utils/processTrigger.js.map +1 -1
  317. package/lib/src/utils/transport/iframe-transport.d.ts +55 -0
  318. package/lib/src/utils/transport/iframe-transport.d.ts.map +1 -0
  319. package/lib/src/utils/transport/iframe-transport.js +101 -0
  320. package/lib/src/utils/transport/iframe-transport.js.map +1 -0
  321. package/lib/src/utils/transport/iframe-transport.spec.d.ts +2 -0
  322. package/lib/src/utils/transport/iframe-transport.spec.d.ts.map +1 -0
  323. package/lib/src/utils/transport/iframe-transport.spec.js +138 -0
  324. package/lib/src/utils/transport/iframe-transport.spec.js.map +1 -0
  325. package/lib/src/utils.d.ts +18 -0
  326. package/lib/src/utils.d.ts.map +1 -1
  327. package/lib/src/utils.js +37 -0
  328. package/lib/src/utils.js.map +1 -1
  329. package/lib/src/utils.spec.js +63 -1
  330. package/lib/src/utils.spec.js.map +1 -1
  331. package/lib/src/visual-embed-sdk.d.ts +1508 -668
  332. package/package.json +19 -4
  333. package/src/contracts/contracts.spec.ts +392 -0
  334. package/src/contracts/embed-event-payloads.ts +83 -0
  335. package/src/contracts/host-event-contracts.ts +500 -0
  336. package/src/contracts/index.ts +53 -0
  337. package/src/contracts/ui-passthrough-contracts.ts +301 -0
  338. package/src/embed/app.spec.ts +101 -34
  339. package/src/embed/app.ts +42 -268
  340. package/src/embed/auto-frame-renderer.spec.ts +24 -13
  341. package/src/embed/auto-frame-renderer.ts +1 -1
  342. package/src/embed/bodyless-conversation.ts +1 -1
  343. package/src/embed/conversation.spec.ts +38 -27
  344. package/src/embed/conversation.ts +5 -5
  345. package/src/embed/embedConfig.spec.ts +2 -1
  346. package/src/embed/events.spec.ts +14 -2
  347. package/src/embed/hostEventClient/host-event-client.spec.ts +16 -10
  348. package/src/embed/hostEventClient/host-event-client.ts +31 -10
  349. package/src/embed/hostEventClient/utils.spec.ts +176 -1
  350. package/src/embed/hostEventClient/utils.ts +53 -3
  351. package/src/embed/liveboard.spec.ts +261 -41
  352. package/src/embed/liveboard.ts +85 -300
  353. package/src/embed/search-bar.tsx +1 -1
  354. package/src/embed/search.spec.ts +103 -0
  355. package/src/embed/search.ts +21 -1
  356. package/src/embed/spotter-utils.spec.ts +29 -0
  357. package/src/embed/spotter-utils.ts +16 -0
  358. package/src/embed/ts-embed.spec.ts +650 -36
  359. package/src/embed/ts-embed.ts +205 -76
  360. package/src/errors.ts +1 -1
  361. package/src/full-height.spec.ts +1008 -0
  362. package/src/full-height.ts +361 -0
  363. package/src/index.ts +103 -5
  364. package/src/react/all-types-export.parity.spec.ts +63 -3
  365. package/src/react/all-types-export.ts +49 -0
  366. package/src/types.ts +584 -22
  367. package/src/utils/authService/tokenizedAuthService.spec.ts +2 -1
  368. package/src/utils/custom-actions.spec.ts +4 -2
  369. package/src/utils/filterConverter.spec.ts +801 -0
  370. package/src/utils/filterConverter.ts +304 -0
  371. package/src/utils/processData.spec.ts +2 -1
  372. package/src/utils/processTrigger.ts +28 -58
  373. package/src/utils/transport/iframe-transport.spec.ts +177 -0
  374. package/src/utils/transport/iframe-transport.ts +122 -0
  375. package/src/utils.spec.ts +71 -0
  376. package/src/utils.ts +38 -0
  377. package/cjs/src/embed/hostEventClient/contracts.d.ts +0 -231
  378. package/cjs/src/embed/hostEventClient/contracts.d.ts.map +0 -1
  379. package/cjs/src/embed/hostEventClient/contracts.js.map +0 -1
  380. package/dist/src/embed/hostEventClient/contracts.d.ts +0 -231
  381. package/dist/src/embed/hostEventClient/contracts.d.ts.map +0 -1
  382. package/lib/src/embed/hostEventClient/contracts.d.ts +0 -231
  383. package/lib/src/embed/hostEventClient/contracts.d.ts.map +0 -1
  384. package/lib/src/embed/hostEventClient/contracts.js.map +0 -1
  385. package/src/embed/hostEventClient/contracts.ts +0 -262
@@ -10,20 +10,26 @@ import isEqual from 'lodash/isEqual';
10
10
  import isEmpty from 'lodash/isEmpty';
11
11
  import isObject from 'lodash/isObject';
12
12
  import {
13
- HostEventRequest,
14
- TriggerPayload,
15
- TriggerResponse,
16
13
  UIPassthroughArrayResponse,
17
14
  UIPassthroughEvent,
18
15
  UIPassthroughRequest,
19
- } from './hostEventClient/contracts';
16
+ } from '../contracts/ui-passthrough-contracts';
17
+ // Contract resolution comes from the shared contracts module (the single
18
+ // source of truth for event payload shapes) rather than the legacy
19
+ // UI-passthrough-only mapping.
20
+ import {
21
+ HostEventRequest,
22
+ TriggerData,
23
+ TriggerResponse,
24
+ } from '../contracts/host-event-contracts';
25
+ import { EmbedEventPayload } from '../contracts/embed-event-payloads';
26
+ import { isMessageFromIframe } from '../utils/transport/iframe-transport';
20
27
  import { logger } from '../utils/logger';
21
28
  import { getAuthenticationToken } from '../authToken';
22
29
  import { AnswerService } from '../utils/graphql/answerService/answerService';
23
30
  import {
24
31
  getEncodedQueryParamsString,
25
32
  getCssDimension,
26
- getOffsetTop,
27
33
  embedEventStatus,
28
34
  setAttributes,
29
35
  getCustomisations,
@@ -110,6 +116,66 @@ const TS_EMBED_ID = '_thoughtspot-embed';
110
116
  const PRERENDER_CONTAINER_ORIGINAL_POSITION_KEY = 'tsEmbedOriginalPosition';
111
117
  const PRERENDER_WRAPPER_ID_PREFIX = 'tsEmbed-pre-render-wrapper-';
112
118
 
119
+ // The container applies UpdateEmbedParams through React state, so a delivered
120
+ // post is not the same as the params being in effect.
121
+ const UPDATE_EMBED_PARAMS_SETTLE_MS = 200;
122
+
123
+ // The container ignores runtimeFilterParams/runtimeParameterParams unless
124
+ // truthy, so null or '' leaves the previous embed's values in place. '&' is
125
+ // truthy and parses to {}.
126
+ const NO_RUNTIME_PARAMS = '&';
127
+
128
+ /**
129
+ * Query parameters that stay on the iframe `src` while config is excluded from
130
+ * the URL, which is the default unless the embed sets the
131
+ * `excludeConfigFromURL` additional flag to `false`. These are the parameters the
132
+ * application shell needs before it can receive a postMessage at all: the
133
+ * embed marker, the host application URL used to validate the message origin,
134
+ * the SDK version, the flags that pick the authentication flow, and the
135
+ * boot-time settings that would otherwise be applied a frame late (viewport,
136
+ * log level, locale, formatting and org). Everything else is delivered over
137
+ * `HostEvent.UpdateEmbedParams`.
138
+ * @internal
139
+ */
140
+ const BOOTSTRAP_URL_PARAMS: ReadonlySet<string> = new Set<string>([
141
+ Param.EmbedApp,
142
+ Param.HostAppUrl,
143
+ Param.Version,
144
+ Param.AuthType,
145
+ Param.AutoLogin,
146
+ Param.DisableLoginRedirect,
147
+ Param.ForceSAMLAutoRedirect,
148
+ Param.cookieless,
149
+ Param.preAuthCache,
150
+ Param.blockNonEmbedFullAppAccess,
151
+ Param.OverrideOrgId,
152
+ Param.ViewPortHeight,
153
+ Param.ViewPortWidth,
154
+ Param.ClientLogLevel,
155
+ Param.OverrideNativeConsole,
156
+ Param.PendoTrackingKey,
157
+ Param.NumberFormatLocale,
158
+ Param.DateFormatLocale,
159
+ Param.CurrencyFormat,
160
+ Param.Locale,
161
+ Param.searchEmbed,
162
+ Param.livedBoardEmbed,
163
+ Param.isSpotterAgentEmbed,
164
+ Param.SpotterEnabled,
165
+ Param.IsFullAppEmbed,
166
+ Param.IsOnBeforeGetVizDataInterceptEnabled,
167
+ Param.LinkOverride,
168
+ Param.EnableLinkOverridesV2,
169
+ Param.DisableRedirectionLinksInNewTab,
170
+ Param.OverrideHistoryState,
171
+ Param.ForceTable,
172
+ Param.StringIDsUrl,
173
+ Param.DataSources,
174
+ Param.ExposeTranslationIDs,
175
+ Param.IconSpriteUrl,
176
+ Param.Tag,
177
+ ]);
178
+
113
179
  /**
114
180
  * The event id map from v2 event names to v1 event id
115
181
  * v1 events are the classic embed events implemented in Blink v1
@@ -142,6 +208,8 @@ export class TsEmbed {
142
208
  */
143
209
  protected embedNodeKey = '__tsEmbed';
144
210
 
211
+ protected embedContainerLoadedKey = '__tsEmbedContainerLoaded';
212
+
145
213
  protected isAppInitialized = false;
146
214
 
147
215
  /**
@@ -439,7 +507,7 @@ export class TsEmbed {
439
507
  const eventType = this.getEventType(event);
440
508
  const eventPort = this.getEventPort(event);
441
509
  const eventData = this.formatEventData(event, eventType);
442
- if (event.source === this.iFrame.contentWindow) {
510
+ if (isMessageFromIframe(event, this.iFrame, this.thoughtSpotHost)) {
443
511
  const processedEventData = processEventData(
444
512
  eventType,
445
513
  eventData,
@@ -720,7 +788,19 @@ export class TsEmbed {
720
788
  queryParams[key] = deserializeParam(queryParams[key]);
721
789
  });
722
790
  const appInitData = await this.getAppInitData();
723
- return { ...this.viewConfig, ...queryParams, ...appInitData };
791
+ return {
792
+ ...this.viewConfig,
793
+ ...queryParams,
794
+ ...appInitData,
795
+ // A show cycle has no URL to carry these, so the payload always
796
+ // states them — including "none", which is the case that leaks the
797
+ // previous filters.
798
+ runtimeFilterParams:
799
+ getFilterQuery(this.viewConfig.runtimeFilters ?? []) || NO_RUNTIME_PARAMS,
800
+ runtimeParameterParams:
801
+ getRuntimeParameters(this.viewConfig.runtimeParameters ?? [])
802
+ || NO_RUNTIME_PARAMS,
803
+ };
724
804
  }
725
805
 
726
806
  /**
@@ -921,7 +1001,7 @@ export class TsEmbed {
921
1001
  }
922
1002
 
923
1003
  protected getEmbedParams() {
924
- const queryParams = this.getEmbedParamsObject();
1004
+ const queryParams = this.getUrlQueryParamsObject();
925
1005
  return getQueryParamString(queryParams);
926
1006
  }
927
1007
 
@@ -930,6 +1010,16 @@ export class TsEmbed {
930
1010
  return params;
931
1011
  }
932
1012
 
1013
+ protected getUrlQueryParamsObject(): Record<any, any> {
1014
+ const queryParams = this.getEmbedParamsObject();
1015
+ if (!this.isConfigExcludedFromUrl()) {
1016
+ return queryParams;
1017
+ }
1018
+ return Object.fromEntries(
1019
+ Object.entries(queryParams).filter(([key]) => BOOTSTRAP_URL_PARAMS.has(key)),
1020
+ );
1021
+ }
1022
+
933
1023
  protected getRootIframeSrc() {
934
1024
  const query = this.getEmbedParams();
935
1025
  return this.getEmbedBasePath(query);
@@ -1125,6 +1215,8 @@ export class TsEmbed {
1125
1215
  return preRenderWrapper;
1126
1216
  }
1127
1217
 
1218
+ // TODO(SCAL-338011): move the pre-render code out to its own file, the way
1219
+ // full height did. It is spread across this class and getting messy.
1128
1220
  protected preRenderWrapper: HTMLElement;
1129
1221
 
1130
1222
  protected preRenderChild: HTMLElement;
@@ -1470,41 +1562,6 @@ export class TsEmbed {
1470
1562
  return V1EventMap[eventType] || eventType;
1471
1563
  }
1472
1564
 
1473
- /**
1474
- * Calculates the iframe center for the current visible viewPort
1475
- * of iframe using Scroll position of Host App, offsetTop for iframe
1476
- * in Host app. ViewPort height of the tab.
1477
- * @returns iframe Center in visible viewport,
1478
- * Iframe height,
1479
- * View port height.
1480
- */
1481
- protected getIframeCenter() {
1482
- const offsetTopClient = getOffsetTop(this.iFrame);
1483
- const scrollTopClient = window.scrollY;
1484
- const viewPortHeight = window.innerHeight;
1485
- const iframeHeight = this.iFrame.offsetHeight;
1486
- const iframeScrolled = scrollTopClient - offsetTopClient;
1487
- let iframeVisibleViewPort;
1488
- let iframeOffset;
1489
-
1490
- if (iframeScrolled < 0) {
1491
- iframeVisibleViewPort = viewPortHeight - (offsetTopClient - scrollTopClient);
1492
- iframeVisibleViewPort = Math.min(iframeHeight, iframeVisibleViewPort);
1493
- iframeOffset = 0;
1494
- } else {
1495
- iframeVisibleViewPort = Math.min(iframeHeight - iframeScrolled, viewPortHeight);
1496
- iframeOffset = iframeScrolled;
1497
- }
1498
- const iframeCenter = iframeOffset + iframeVisibleViewPort / 2;
1499
- return {
1500
- iframeCenter,
1501
- iframeScrolled,
1502
- iframeHeight,
1503
- viewPortHeight,
1504
- iframeVisibleViewPort,
1505
- };
1506
- }
1507
-
1508
1565
  /**
1509
1566
  * Registers an event listener to trigger an alert when the ThoughtSpot app
1510
1567
  * sends an event of a particular message type to the host application.
@@ -1528,9 +1585,12 @@ export class TsEmbed {
1528
1585
  * });
1529
1586
  * ```
1530
1587
  */
1531
- public on(
1532
- messageType: EmbedEvent,
1533
- callback: MessageCallback,
1588
+ public on<EmbedEventT extends EmbedEvent>(
1589
+ messageType: EmbedEventT,
1590
+ callback: (
1591
+ payload: EmbedEventPayload<EmbedEventT>,
1592
+ responder?: (data: any) => void,
1593
+ ) => void,
1534
1594
  options: MessageOptions = { start: false },
1535
1595
  isRegisteredBySDK = false,
1536
1596
  ): typeof TsEmbed.prototype {
@@ -1608,14 +1668,35 @@ export class TsEmbed {
1608
1668
  protected getPreRenderObj<T extends TsEmbed>(): T {
1609
1669
  const embedObj = (this.preRenderWrapper as any)?.[this.embedNodeKey] as T;
1610
1670
  if (embedObj === (this as any)) {
1611
- logger.info('embedObj is same as this');
1671
+ logger.debug('embedObj is same as this');
1612
1672
  }
1613
1673
  return embedObj;
1614
1674
  }
1615
1675
 
1676
+ protected takeOverPreRender(): void {
1677
+ if (!this.preRenderWrapper) return;
1678
+ (this.preRenderWrapper as any)[this.embedNodeKey] = this;
1679
+ }
1680
+
1681
+ // The flag lives on the wrapper because it describes the iframe: an
1682
+ // instance hidden when the container announced itself would otherwise
1683
+ // report false forever.
1684
+ private markEmbedContainerLoaded() {
1685
+ this.isEmbedContainerLoaded = true;
1686
+ if (this.preRenderWrapper) {
1687
+ (this.preRenderWrapper as any)[this.embedContainerLoadedKey] = true;
1688
+ }
1689
+ }
1690
+
1616
1691
  private checkEmbedContainerLoaded() {
1617
1692
  if (this.isEmbedContainerLoaded) return true;
1618
1693
 
1694
+ if ((this.preRenderWrapper as any)?.[this.embedContainerLoadedKey]) {
1695
+ this.isEmbedContainerLoaded = true;
1696
+ return true;
1697
+ }
1698
+
1699
+ // Older builds stamped the flag on the instance, not the wrapper.
1619
1700
  const preRenderObj = this.getPreRenderObj<TsEmbed>();
1620
1701
  if (preRenderObj && preRenderObj.isEmbedContainerLoaded) {
1621
1702
  this.isEmbedContainerLoaded = true;
@@ -1648,24 +1729,32 @@ export class TsEmbed {
1648
1729
  (source: EmbedEvent.AuthInit | EmbedEvent.EmbedListenerReady) => () => {
1649
1730
  const processEmbedContainerReady = () => {
1650
1731
  logger.debug('processEmbedContainerReady');
1651
- this.isEmbedContainerLoaded = true;
1732
+ this.markEmbedContainerLoaded();
1652
1733
  this.executeEmbedContainerReadyCallbacks();
1653
1734
  };
1654
1735
  if (source === EmbedEvent.AuthInit) {
1655
1736
  const AUTH_INIT_FALLBACK_DELAY = 1000;
1656
1737
  // Wait for 1 second to ensure the embed container is loaded
1657
1738
  // This is a workaround to ensure the embed container is loaded
1658
- // this is needed until all clusters have EmbedListenerReady event
1739
+ // this is needed until all clusters have EmbedListenerReady
1740
+ // event
1659
1741
  setTimeout(processEmbedContainerReady, AUTH_INIT_FALLBACK_DELAY);
1660
1742
  } else if (source === EmbedEvent.EmbedListenerReady) {
1661
1743
  processEmbedContainerReady();
1744
+ if (this.isConfigExcludedFromUrl()) {
1745
+ this.triggerUpdateEmbedParams();
1746
+ }
1662
1747
  }
1663
1748
  };
1664
1749
 
1665
1750
  /**
1666
1751
  * Triggers an event to the embedded app
1752
+ *
1753
+ * Payload typing: from SDK 1.52.0 (ThoughtSpot Cloud 26.9.0.cl), unknown fields
1754
+ * on a known event's payload fail to compile. From SDK 1.54.0 (26.11.0.cl) the
1755
+ * payload is checked strictly against the event contract — update call sites now.
1667
1756
  * @param {HostEvent} messageType The event type
1668
- * @param {any} data The payload to send with the message
1757
+ * @param {TriggerData} data The payload, typed against the event's contract
1669
1758
  * @param {ContextType} context Optional context type to specify the context from which the event is triggered.
1670
1759
  * Use ContextType.Search for search answer context, ContextType.Answer for answer/explore context,
1671
1760
  * ContextType.Liveboard for liveboard context, or ContextType.Spotter for spotter context.
@@ -1688,7 +1777,10 @@ export class TsEmbed {
1688
1777
  ContextT extends ContextType = ContextType,
1689
1778
  >(
1690
1779
  messageType: HostEventT,
1691
- data: TriggerPayload<PayloadT, HostEventT> = {} as any,
1780
+ // Contract shape is the contextual type: payload fields autocomplete
1781
+ // and unknown fields on object literals are flagged. Strict checks
1782
+ // land in SDK 1.54.0 — see TriggerData.
1783
+ data: TriggerData<HostEventT> = {} as any,
1692
1784
  context?: ContextT,
1693
1785
  ): Promise<TriggerResponse<PayloadT, HostEventT, ContextT>> {
1694
1786
  uploadMixpanelEvent(`${MIXPANEL_EVENT.VISUAL_SDK_TRIGGER}-${messageType}`);
@@ -2015,24 +2107,49 @@ export class TsEmbed {
2015
2107
  return this.renderIFrame(prerenderFrameSrc);
2016
2108
  }
2017
2109
 
2110
+ // Subclasses that navigate the pre-render on show must await this before
2111
+ // triggering Navigate. Resolves even on failure, so navigation is never
2112
+ // blocked.
2113
+ protected preRenderParamsApplied: Promise<void> = Promise.resolve();
2114
+
2115
+ protected isConfigExcludedFromUrl(): boolean {
2116
+ const flag =
2117
+ this.viewConfig.additionalFlags?.excludeConfigFromURL ??
2118
+ this.embedConfig.additionalFlags?.excludeConfigFromURL;
2119
+ // Enabled by default; only an explicit false opts out.
2120
+ return flag !== false && flag !== 'false';
2121
+ }
2122
+
2123
+ protected async triggerUpdateEmbedParams(): Promise<void> {
2124
+ try {
2125
+ const params = await this.getUpdateEmbedParamsObject();
2126
+ this.trigger(HostEvent.UpdateEmbedParams, params);
2127
+ } catch (error) {
2128
+ logger.error(ERROR_MESSAGE.UPDATE_PARAMS_FAILED, error);
2129
+ this.handleError({
2130
+ errorType: ErrorDetailsTypes.API,
2131
+ message: error?.message || ERROR_MESSAGE.UPDATE_PARAMS_FAILED,
2132
+ code: EmbedErrorCodes.UPDATE_PARAMS_FAILED,
2133
+ error: error?.message || error,
2134
+ });
2135
+ }
2136
+ }
2137
+
2018
2138
  protected beforePrerenderVisible(): void {
2019
2139
  // We can ignore this as its a bit expensive and the newer customers
2020
2140
  // have moved on to UpdateEmbedParams supported clusters
2021
2141
  // this.validatePreRenderViewConfig(this.viewConfig); removed in #517
2022
2142
  logger.debug('triggering UpdateEmbedParams', this.viewConfig);
2023
- this.executeAfterEmbedContainerLoaded(async () => {
2024
- try {
2025
- const params = await this.getUpdateEmbedParamsObject();
2026
- this.trigger(HostEvent.UpdateEmbedParams, params);
2027
- } catch (error) {
2028
- logger.error(ERROR_MESSAGE.UPDATE_PARAMS_FAILED, error);
2029
- this.handleError({
2030
- errorType: ErrorDetailsTypes.API,
2031
- message: error?.message || ERROR_MESSAGE.UPDATE_PARAMS_FAILED,
2032
- code: EmbedErrorCodes.UPDATE_PARAMS_FAILED,
2033
- error: error?.message || error,
2034
- });
2035
- }
2143
+ // Created synchronously: a queued navigation needs something to await
2144
+ // whether the container is already loaded or not.
2145
+ this.preRenderParamsApplied = new Promise<void>((resolve) => {
2146
+ this.executeAfterEmbedContainerLoaded(async () => {
2147
+ try {
2148
+ await this.triggerUpdateEmbedParams();
2149
+ } finally {
2150
+ setTimeout(resolve, UPDATE_EMBED_PARAMS_SETTLE_MS);
2151
+ }
2152
+ });
2036
2153
  });
2037
2154
  }
2038
2155
 
@@ -2065,8 +2182,9 @@ export class TsEmbed {
2065
2182
  if (this.hostElement) {
2066
2183
  this.insertedDomEl = this.createPreRenderPlaceholder();
2067
2184
  if ((this.viewConfig as { fullHeight: boolean }).fullHeight) {
2068
- // If fullHeight has already sized the wrapper, seed the placeholder
2069
- // with the same height so syncPreRenderStyle gets an accurate rect.
2185
+ // If fullHeight has already sized the wrapper, seed the
2186
+ // placeholder with the same height so syncPreRenderStyle gets
2187
+ // an accurate rect.
2070
2188
  const existingHeight = this.preRenderWrapper.style.height;
2071
2189
  if (existingHeight) {
2072
2190
  (this.insertedDomEl as HTMLDivElement).style.height = existingHeight;
@@ -2075,12 +2193,13 @@ export class TsEmbed {
2075
2193
 
2076
2194
  const placeHolderId = this.getPreRenderIds().placeHolder;
2077
2195
  // Remove any stale placeholder from a previous cycle. It is located
2078
- // via a subtree-wide querySelector, so it may be nested deeper than a
2079
- // direct child (E.g.: with fullHeight the host app can wrap it). Use
2080
- // Element.remove() — which detaches from whatever the real parent is —
2081
- // rather than hostElement.removeChild(), which throws NotFoundError
2082
- // when the match is not a direct child. Mirrors the wrapper/child
2083
- // cleanup in createPreRenderWrapper()/createPreRenderChild().
2196
+ // via a subtree-wide querySelector, so it may be nested deeper
2197
+ // than a direct child (E.g.: with fullHeight the host app can wrap
2198
+ // it). Use Element.remove() — which detaches from whatever the real
2199
+ // parent is — rather than hostElement.removeChild(), which throws
2200
+ // NotFoundError when the match is not a direct child. Mirrors the
2201
+ // wrapper/child cleanup in
2202
+ // createPreRenderWrapper()/createPreRenderChild().
2084
2203
  this.hostElement.querySelector(`#${placeHolderId}`)?.remove();
2085
2204
 
2086
2205
  this.hostElement.appendChild(this.insertedDomEl);
@@ -2119,6 +2238,10 @@ export class TsEmbed {
2119
2238
  this.setupFullscreenChangeHandler();
2120
2239
  }
2121
2240
 
2241
+ // Last, so everything above still sees the instance being taken over
2242
+ // from.
2243
+ this.takeOverPreRender();
2244
+
2122
2245
  return this;
2123
2246
  }
2124
2247
 
@@ -2339,12 +2462,18 @@ export class V1Embed extends TsEmbed {
2339
2462
  * });
2340
2463
  * ```
2341
2464
  */
2342
- public on(
2343
- messageType: EmbedEvent,
2344
- callback: MessageCallback,
2465
+ public on<EmbedEventT extends EmbedEvent>(
2466
+ messageType: EmbedEventT,
2467
+ callback: (
2468
+ payload: EmbedEventPayload<EmbedEventT>,
2469
+ responder?: (data: any) => void,
2470
+ ) => void,
2345
2471
  options: MessageOptions = { start: false },
2346
2472
  ): typeof TsEmbed.prototype {
2347
- const eventType = this.getCompatibleEventType(messageType);
2473
+ // Mirror the base TsEmbed.on generic signature so the enriched
2474
+ // EmbedEventPayload (e.g. CustomAction's answerService) flows through
2475
+ // the override too, and the class hierarchy stays assignable.
2476
+ const eventType = this.getCompatibleEventType(messageType) as EmbedEventT;
2348
2477
  return super.on(eventType, callback, options);
2349
2478
  }
2350
2479
 
package/src/errors.ts CHANGED
@@ -29,7 +29,7 @@ export const ERROR_MESSAGE = {
29
29
  SSR_ENVIRONMENT_ERROR: 'SSR environment detected. This function cannot be called in SSR environment.',
30
30
  UPDATE_PARAMS_FAILED: 'Failed to update embed parameters',
31
31
  INVALID_SPOTTER_DOCUMENTATION_URL: 'Invalid spotterDocumentationUrl. Please provide a valid http or https URL.',
32
- UPDATEFILTERS_INVALID_PAYLOAD: 'UpdateFilters requires a valid filter or filters array. Expected: { filter: { column, oper, values } } or { filters: [{ column, oper, values }, ...] }',
32
+ UPDATEFILTERS_INVALID_PAYLOAD: 'UpdateFilters requires a valid filter or filters array. Expected: { filter: { columnName, operator, values } } or { filters: [{ columnName, operator, values }, ...] }',
33
33
  DRILLDOWN_INVALID_PAYLOAD: 'DrillDown requires a valid points object. Expected: { points: { clickedPoint?, selectedPoints? }, autoDrillDown?, vizId? }',
34
34
  UPDATEPARAMETERS_INVALID_PAYLOAD: 'UpdateParameters received an invalid applicability. Expected: { level: LIVEBOARD | TAB | GROUP, targetId } where targetId is required for TAB and GROUP levels',
35
35
  };