@thoughtspot/visual-embed-sdk 1.51.2 → 1.52.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (316) hide show
  1. package/cjs/package.json +9 -1
  2. package/cjs/src/api-intercept.d.ts.map +1 -1
  3. package/cjs/src/api-intercept.js +1 -0
  4. package/cjs/src/api-intercept.js.map +1 -1
  5. package/cjs/src/contracts/contracts.spec.d.ts +2 -0
  6. package/cjs/src/contracts/contracts.spec.d.ts.map +1 -0
  7. package/cjs/src/contracts/contracts.spec.js +345 -0
  8. package/cjs/src/contracts/contracts.spec.js.map +1 -0
  9. package/cjs/src/contracts/embed-event-payloads.d.ts +73 -0
  10. package/cjs/src/contracts/embed-event-payloads.d.ts.map +1 -0
  11. package/cjs/src/contracts/embed-event-payloads.js +3 -0
  12. package/cjs/src/contracts/embed-event-payloads.js.map +1 -0
  13. package/cjs/src/contracts/host-event-contracts.d.ts +378 -0
  14. package/cjs/src/contracts/host-event-contracts.d.ts.map +1 -0
  15. package/cjs/src/contracts/host-event-contracts.js +3 -0
  16. package/cjs/src/contracts/host-event-contracts.js.map +1 -0
  17. package/cjs/src/contracts/index.d.ts +22 -0
  18. package/cjs/src/contracts/index.d.ts.map +1 -0
  19. package/cjs/src/contracts/index.js +33 -0
  20. package/cjs/src/contracts/index.js.map +1 -0
  21. package/cjs/src/contracts/ui-passthrough-contracts.d.ts +277 -0
  22. package/cjs/src/contracts/ui-passthrough-contracts.d.ts.map +1 -0
  23. package/cjs/src/{embed/hostEventClient/contracts.js → contracts/ui-passthrough-contracts.js} +6 -2
  24. package/cjs/src/contracts/ui-passthrough-contracts.js.map +1 -0
  25. package/cjs/src/css-variables.d.ts +1 -1
  26. package/cjs/src/embed/app.d.ts +17 -140
  27. package/cjs/src/embed/app.d.ts.map +1 -1
  28. package/cjs/src/embed/app.js +20 -120
  29. package/cjs/src/embed/app.js.map +1 -1
  30. package/cjs/src/embed/app.spec.js +70 -26
  31. package/cjs/src/embed/app.spec.js.map +1 -1
  32. package/cjs/src/embed/conversation.d.ts +5 -5
  33. package/cjs/src/embed/events.spec.js +12 -2
  34. package/cjs/src/embed/events.spec.js.map +1 -1
  35. package/cjs/src/embed/hostEventClient/host-event-client.d.ts +3 -2
  36. package/cjs/src/embed/hostEventClient/host-event-client.d.ts.map +1 -1
  37. package/cjs/src/embed/hostEventClient/host-event-client.js +23 -18
  38. package/cjs/src/embed/hostEventClient/host-event-client.js.map +1 -1
  39. package/cjs/src/embed/hostEventClient/host-event-client.spec.js +36 -36
  40. package/cjs/src/embed/hostEventClient/host-event-client.spec.js.map +1 -1
  41. package/cjs/src/embed/hostEventClient/utils.d.ts +1 -1
  42. package/cjs/src/embed/hostEventClient/utils.d.ts.map +1 -1
  43. package/cjs/src/embed/hostEventClient/utils.js +3 -3
  44. package/cjs/src/embed/hostEventClient/utils.js.map +1 -1
  45. package/cjs/src/embed/liveboard.d.ts +9 -161
  46. package/cjs/src/embed/liveboard.d.ts.map +1 -1
  47. package/cjs/src/embed/liveboard.js +68 -135
  48. package/cjs/src/embed/liveboard.js.map +1 -1
  49. package/cjs/src/embed/liveboard.spec.js +215 -32
  50. package/cjs/src/embed/liveboard.spec.js.map +1 -1
  51. package/cjs/src/embed/search.d.ts +14 -0
  52. package/cjs/src/embed/search.d.ts.map +1 -1
  53. package/cjs/src/embed/search.js +4 -1
  54. package/cjs/src/embed/search.js.map +1 -1
  55. package/cjs/src/embed/search.spec.js +65 -0
  56. package/cjs/src/embed/search.spec.js.map +1 -1
  57. package/cjs/src/embed/ts-embed.d.ts +21 -25
  58. package/cjs/src/embed/ts-embed.d.ts.map +1 -1
  59. package/cjs/src/embed/ts-embed.js +105 -72
  60. package/cjs/src/embed/ts-embed.js.map +1 -1
  61. package/cjs/src/embed/ts-embed.spec.d.ts.map +1 -1
  62. package/cjs/src/embed/ts-embed.spec.js +380 -33
  63. package/cjs/src/embed/ts-embed.spec.js.map +1 -1
  64. package/cjs/src/full-height.d.ts +137 -0
  65. package/cjs/src/full-height.d.ts.map +1 -0
  66. package/cjs/src/full-height.js +272 -0
  67. package/cjs/src/full-height.js.map +1 -0
  68. package/cjs/src/full-height.spec.d.ts +2 -0
  69. package/cjs/src/full-height.spec.d.ts.map +1 -0
  70. package/cjs/src/full-height.spec.js +835 -0
  71. package/cjs/src/full-height.spec.js.map +1 -0
  72. package/cjs/src/index.d.ts +4 -3
  73. package/cjs/src/index.d.ts.map +1 -1
  74. package/cjs/src/index.js +5 -4
  75. package/cjs/src/index.js.map +1 -1
  76. package/cjs/src/react/all-types-export.d.ts +1 -1
  77. package/cjs/src/react/all-types-export.d.ts.map +1 -1
  78. package/cjs/src/react/all-types-export.js +2 -1
  79. package/cjs/src/react/all-types-export.js.map +1 -1
  80. package/cjs/src/react/all-types-export.parity.spec.js +55 -3
  81. package/cjs/src/react/all-types-export.parity.spec.js.map +1 -1
  82. package/cjs/src/react/index.d.ts +8 -8
  83. package/cjs/src/react/index.d.ts.map +1 -1
  84. package/cjs/src/react/index.js +1 -1
  85. package/cjs/src/react/index.js.map +1 -1
  86. package/cjs/src/react/index.spec.js +7 -7
  87. package/cjs/src/react/index.spec.js.map +1 -1
  88. package/cjs/src/types.d.ts +664 -39
  89. package/cjs/src/types.d.ts.map +1 -1
  90. package/cjs/src/types.js +406 -13
  91. package/cjs/src/types.js.map +1 -1
  92. package/cjs/src/utils/processTrigger.d.ts +3 -1
  93. package/cjs/src/utils/processTrigger.d.ts.map +1 -1
  94. package/cjs/src/utils/processTrigger.js +19 -51
  95. package/cjs/src/utils/processTrigger.js.map +1 -1
  96. package/cjs/src/utils/transport/iframe-transport.d.ts +55 -0
  97. package/cjs/src/utils/transport/iframe-transport.d.ts.map +1 -0
  98. package/cjs/src/utils/transport/iframe-transport.js +108 -0
  99. package/cjs/src/utils/transport/iframe-transport.js.map +1 -0
  100. package/cjs/src/utils/transport/iframe-transport.spec.d.ts +2 -0
  101. package/cjs/src/utils/transport/iframe-transport.spec.d.ts.map +1 -0
  102. package/cjs/src/utils/transport/iframe-transport.spec.js +140 -0
  103. package/cjs/src/utils/transport/iframe-transport.spec.js.map +1 -0
  104. package/cjs/src/utils.d.ts +18 -0
  105. package/cjs/src/utils.d.ts.map +1 -1
  106. package/cjs/src/utils.js +39 -1
  107. package/cjs/src/utils.js.map +1 -1
  108. package/cjs/src/utils.spec.js +62 -0
  109. package/cjs/src/utils.spec.js.map +1 -1
  110. package/dist/{index-D8_Zs-Nr.js → index-C1pmYb5H.js} +1 -1
  111. package/dist/src/api-intercept.d.ts.map +1 -1
  112. package/dist/src/contracts/contracts.spec.d.ts +2 -0
  113. package/dist/src/contracts/contracts.spec.d.ts.map +1 -0
  114. package/dist/src/contracts/embed-event-payloads.d.ts +73 -0
  115. package/dist/src/contracts/embed-event-payloads.d.ts.map +1 -0
  116. package/dist/src/contracts/host-event-contracts.d.ts +378 -0
  117. package/dist/src/contracts/host-event-contracts.d.ts.map +1 -0
  118. package/dist/src/contracts/index.d.ts +22 -0
  119. package/dist/src/contracts/index.d.ts.map +1 -0
  120. package/dist/src/contracts/ui-passthrough-contracts.d.ts +277 -0
  121. package/dist/src/contracts/ui-passthrough-contracts.d.ts.map +1 -0
  122. package/dist/src/css-variables.d.ts +1 -1
  123. package/dist/src/embed/app.d.ts +17 -140
  124. package/dist/src/embed/app.d.ts.map +1 -1
  125. package/dist/src/embed/conversation.d.ts +5 -5
  126. package/dist/src/embed/hostEventClient/host-event-client.d.ts +3 -2
  127. package/dist/src/embed/hostEventClient/host-event-client.d.ts.map +1 -1
  128. package/dist/src/embed/hostEventClient/utils.d.ts +1 -1
  129. package/dist/src/embed/hostEventClient/utils.d.ts.map +1 -1
  130. package/dist/src/embed/liveboard.d.ts +9 -161
  131. package/dist/src/embed/liveboard.d.ts.map +1 -1
  132. package/dist/src/embed/search.d.ts +14 -0
  133. package/dist/src/embed/search.d.ts.map +1 -1
  134. package/dist/src/embed/ts-embed.d.ts +21 -25
  135. package/dist/src/embed/ts-embed.d.ts.map +1 -1
  136. package/dist/src/embed/ts-embed.spec.d.ts.map +1 -1
  137. package/dist/src/full-height.d.ts +137 -0
  138. package/dist/src/full-height.d.ts.map +1 -0
  139. package/dist/src/full-height.spec.d.ts +2 -0
  140. package/dist/src/full-height.spec.d.ts.map +1 -0
  141. package/dist/src/index.d.ts +4 -3
  142. package/dist/src/index.d.ts.map +1 -1
  143. package/dist/src/react/all-types-export.d.ts +1 -1
  144. package/dist/src/react/all-types-export.d.ts.map +1 -1
  145. package/dist/src/react/index.d.ts +8 -8
  146. package/dist/src/react/index.d.ts.map +1 -1
  147. package/dist/src/types.d.ts +664 -39
  148. package/dist/src/types.d.ts.map +1 -1
  149. package/dist/src/utils/processTrigger.d.ts +3 -1
  150. package/dist/src/utils/processTrigger.d.ts.map +1 -1
  151. package/dist/src/utils/transport/iframe-transport.d.ts +55 -0
  152. package/dist/src/utils/transport/iframe-transport.d.ts.map +1 -0
  153. package/dist/src/utils/transport/iframe-transport.spec.d.ts +2 -0
  154. package/dist/src/utils/transport/iframe-transport.spec.d.ts.map +1 -0
  155. package/dist/src/utils.d.ts +18 -0
  156. package/dist/src/utils.d.ts.map +1 -1
  157. package/dist/tsembed-react.es.js +1031 -392
  158. package/dist/tsembed-react.js +1030 -391
  159. package/dist/tsembed.es.js +1031 -392
  160. package/dist/tsembed.js +1029 -390
  161. package/dist/visual-embed-sdk-react-full.d.ts +1483 -693
  162. package/dist/visual-embed-sdk-react.d.ts +1364 -647
  163. package/dist/visual-embed-sdk.d.ts +1426 -659
  164. package/lib/package.json +9 -1
  165. package/lib/src/api-intercept.d.ts.map +1 -1
  166. package/lib/src/api-intercept.js +2 -1
  167. package/lib/src/api-intercept.js.map +1 -1
  168. package/lib/src/contracts/contracts.spec.d.ts +2 -0
  169. package/lib/src/contracts/contracts.spec.d.ts.map +1 -0
  170. package/lib/src/contracts/contracts.spec.js +342 -0
  171. package/lib/src/contracts/contracts.spec.js.map +1 -0
  172. package/lib/src/contracts/embed-event-payloads.d.ts +73 -0
  173. package/lib/src/contracts/embed-event-payloads.d.ts.map +1 -0
  174. package/lib/src/contracts/embed-event-payloads.js +2 -0
  175. package/lib/src/contracts/embed-event-payloads.js.map +1 -0
  176. package/lib/src/contracts/host-event-contracts.d.ts +378 -0
  177. package/lib/src/contracts/host-event-contracts.d.ts.map +1 -0
  178. package/lib/src/contracts/host-event-contracts.js +2 -0
  179. package/lib/src/contracts/host-event-contracts.js.map +1 -0
  180. package/lib/src/contracts/index.d.ts +22 -0
  181. package/lib/src/contracts/index.d.ts.map +1 -0
  182. package/lib/src/contracts/index.js +22 -0
  183. package/lib/src/contracts/index.js.map +1 -0
  184. package/lib/src/contracts/ui-passthrough-contracts.d.ts +277 -0
  185. package/lib/src/contracts/ui-passthrough-contracts.d.ts.map +1 -0
  186. package/lib/src/{embed/hostEventClient/contracts.js → contracts/ui-passthrough-contracts.js} +6 -2
  187. package/lib/src/contracts/ui-passthrough-contracts.js.map +1 -0
  188. package/lib/src/css-variables.d.ts +1 -1
  189. package/lib/src/embed/app.d.ts +17 -140
  190. package/lib/src/embed/app.d.ts.map +1 -1
  191. package/lib/src/embed/app.js +22 -122
  192. package/lib/src/embed/app.js.map +1 -1
  193. package/lib/src/embed/app.spec.js +70 -26
  194. package/lib/src/embed/app.spec.js.map +1 -1
  195. package/lib/src/embed/conversation.d.ts +5 -5
  196. package/lib/src/embed/events.spec.js +12 -2
  197. package/lib/src/embed/events.spec.js.map +1 -1
  198. package/lib/src/embed/hostEventClient/host-event-client.d.ts +3 -2
  199. package/lib/src/embed/hostEventClient/host-event-client.d.ts.map +1 -1
  200. package/lib/src/embed/hostEventClient/host-event-client.js +6 -1
  201. package/lib/src/embed/hostEventClient/host-event-client.js.map +1 -1
  202. package/lib/src/embed/hostEventClient/host-event-client.spec.js +1 -1
  203. package/lib/src/embed/hostEventClient/host-event-client.spec.js.map +1 -1
  204. package/lib/src/embed/hostEventClient/utils.d.ts +1 -1
  205. package/lib/src/embed/hostEventClient/utils.d.ts.map +1 -1
  206. package/lib/src/embed/hostEventClient/utils.js +1 -1
  207. package/lib/src/embed/hostEventClient/utils.js.map +1 -1
  208. package/lib/src/embed/liveboard.d.ts +9 -161
  209. package/lib/src/embed/liveboard.d.ts.map +1 -1
  210. package/lib/src/embed/liveboard.js +70 -137
  211. package/lib/src/embed/liveboard.js.map +1 -1
  212. package/lib/src/embed/liveboard.spec.js +215 -32
  213. package/lib/src/embed/liveboard.spec.js.map +1 -1
  214. package/lib/src/embed/search.d.ts +14 -0
  215. package/lib/src/embed/search.d.ts.map +1 -1
  216. package/lib/src/embed/search.js +4 -1
  217. package/lib/src/embed/search.js.map +1 -1
  218. package/lib/src/embed/search.spec.js +65 -0
  219. package/lib/src/embed/search.spec.js.map +1 -1
  220. package/lib/src/embed/ts-embed.d.ts +21 -25
  221. package/lib/src/embed/ts-embed.d.ts.map +1 -1
  222. package/lib/src/embed/ts-embed.js +106 -73
  223. package/lib/src/embed/ts-embed.js.map +1 -1
  224. package/lib/src/embed/ts-embed.spec.d.ts.map +1 -1
  225. package/lib/src/embed/ts-embed.spec.js +378 -31
  226. package/lib/src/embed/ts-embed.spec.js.map +1 -1
  227. package/lib/src/full-height.d.ts +137 -0
  228. package/lib/src/full-height.d.ts.map +1 -0
  229. package/lib/src/full-height.js +268 -0
  230. package/lib/src/full-height.js.map +1 -0
  231. package/lib/src/full-height.spec.d.ts +2 -0
  232. package/lib/src/full-height.spec.d.ts.map +1 -0
  233. package/lib/src/full-height.spec.js +833 -0
  234. package/lib/src/full-height.spec.js.map +1 -0
  235. package/lib/src/index.d.ts +4 -3
  236. package/lib/src/index.d.ts.map +1 -1
  237. package/lib/src/index.js +3 -3
  238. package/lib/src/index.js.map +1 -1
  239. package/lib/src/react/all-types-export.d.ts +1 -1
  240. package/lib/src/react/all-types-export.d.ts.map +1 -1
  241. package/lib/src/react/all-types-export.js +1 -1
  242. package/lib/src/react/all-types-export.js.map +1 -1
  243. package/lib/src/react/all-types-export.parity.spec.js +55 -3
  244. package/lib/src/react/all-types-export.parity.spec.js.map +1 -1
  245. package/lib/src/react/index.d.ts +8 -8
  246. package/lib/src/react/index.d.ts.map +1 -1
  247. package/lib/src/react/index.js +1 -1
  248. package/lib/src/react/index.js.map +1 -1
  249. package/lib/src/react/index.spec.js +7 -7
  250. package/lib/src/react/index.spec.js.map +1 -1
  251. package/lib/src/types.d.ts +664 -39
  252. package/lib/src/types.d.ts.map +1 -1
  253. package/lib/src/types.js +405 -12
  254. package/lib/src/types.js.map +1 -1
  255. package/lib/src/utils/processTrigger.d.ts +3 -1
  256. package/lib/src/utils/processTrigger.d.ts.map +1 -1
  257. package/lib/src/utils/processTrigger.js +19 -51
  258. package/lib/src/utils/processTrigger.js.map +1 -1
  259. package/lib/src/utils/transport/iframe-transport.d.ts +55 -0
  260. package/lib/src/utils/transport/iframe-transport.d.ts.map +1 -0
  261. package/lib/src/utils/transport/iframe-transport.js +101 -0
  262. package/lib/src/utils/transport/iframe-transport.js.map +1 -0
  263. package/lib/src/utils/transport/iframe-transport.spec.d.ts +2 -0
  264. package/lib/src/utils/transport/iframe-transport.spec.d.ts.map +1 -0
  265. package/lib/src/utils/transport/iframe-transport.spec.js +138 -0
  266. package/lib/src/utils/transport/iframe-transport.spec.js.map +1 -0
  267. package/lib/src/utils.d.ts +18 -0
  268. package/lib/src/utils.d.ts.map +1 -1
  269. package/lib/src/utils.js +37 -0
  270. package/lib/src/utils.js.map +1 -1
  271. package/lib/src/utils.spec.js +63 -1
  272. package/lib/src/utils.spec.js.map +1 -1
  273. package/lib/src/visual-embed-sdk.d.ts +1426 -659
  274. package/package.json +9 -1
  275. package/src/api-intercept.ts +2 -1
  276. package/src/contracts/contracts.spec.ts +392 -0
  277. package/src/contracts/embed-event-payloads.ts +83 -0
  278. package/src/contracts/host-event-contracts.ts +456 -0
  279. package/src/contracts/index.ts +53 -0
  280. package/src/contracts/ui-passthrough-contracts.ts +301 -0
  281. package/src/css-variables.ts +1 -1
  282. package/src/embed/app.spec.ts +86 -34
  283. package/src/embed/app.ts +37 -264
  284. package/src/embed/conversation.ts +5 -5
  285. package/src/embed/events.spec.ts +14 -2
  286. package/src/embed/hostEventClient/host-event-client.spec.ts +2 -2
  287. package/src/embed/hostEventClient/host-event-client.ts +18 -5
  288. package/src/embed/hostEventClient/utils.ts +2 -1
  289. package/src/embed/liveboard.spec.ts +261 -42
  290. package/src/embed/liveboard.ts +78 -297
  291. package/src/embed/search.spec.ts +80 -0
  292. package/src/embed/search.ts +20 -0
  293. package/src/embed/ts-embed.spec.ts +518 -31
  294. package/src/embed/ts-embed.ts +133 -82
  295. package/src/full-height.spec.ts +1008 -0
  296. package/src/full-height.ts +361 -0
  297. package/src/index.ts +95 -5
  298. package/src/react/all-types-export.parity.spec.ts +63 -3
  299. package/src/react/all-types-export.ts +46 -0
  300. package/src/react/index.spec.tsx +7 -7
  301. package/src/react/index.tsx +9 -9
  302. package/src/types.ts +665 -37
  303. package/src/utils/processTrigger.ts +28 -58
  304. package/src/utils/transport/iframe-transport.spec.ts +177 -0
  305. package/src/utils/transport/iframe-transport.ts +122 -0
  306. package/src/utils.spec.ts +71 -0
  307. package/src/utils.ts +38 -0
  308. package/cjs/src/embed/hostEventClient/contracts.d.ts +0 -231
  309. package/cjs/src/embed/hostEventClient/contracts.d.ts.map +0 -1
  310. package/cjs/src/embed/hostEventClient/contracts.js.map +0 -1
  311. package/dist/src/embed/hostEventClient/contracts.d.ts +0 -231
  312. package/dist/src/embed/hostEventClient/contracts.d.ts.map +0 -1
  313. package/lib/src/embed/hostEventClient/contracts.d.ts +0 -231
  314. package/lib/src/embed/hostEventClient/contracts.d.ts.map +0 -1
  315. package/lib/src/embed/hostEventClient/contracts.js.map +0 -1
  316. package/src/embed/hostEventClient/contracts.ts +0 -262
@@ -705,7 +705,7 @@ describe('Liveboard/viz embed tests', () => {
705
705
  });
706
706
  const spySetIFrameHeight = jest.spyOn(myObject, 'setIFrameHeight');
707
707
  myObject.render();
708
- myObject.setIframeHeightForNonEmbedLiveboard({
708
+ myObject.fullHeightController.handleRouteChange({
709
709
  data: { currentPath: '/embed/viz/' },
710
710
  type: 'Route',
711
711
  });
@@ -720,7 +720,7 @@ describe('Liveboard/viz embed tests', () => {
720
720
  });
721
721
  const spySetIFrameHeight = jest.spyOn(myObject, 'setIFrameHeight');
722
722
  myObject.render();
723
- myObject.setIframeHeightForNonEmbedLiveboard({
723
+ myObject.fullHeightController.handleRouteChange({
724
724
  data: { currentPath: '/embed/insights/viz/' },
725
725
  type: 'Route',
726
726
  });
@@ -737,7 +737,7 @@ describe('Liveboard/viz embed tests', () => {
737
737
  .spyOn(myObject, 'setIFrameHeight')
738
738
  .mockImplementation(jest.fn());
739
739
  myObject.render();
740
- myObject.setIframeHeightForNonEmbedLiveboard({
740
+ myObject.fullHeightController.handleRouteChange({
741
741
  data: { currentPath: '/some/other/path/' },
742
742
  type: 'Route',
743
743
  });
@@ -1020,12 +1020,12 @@ describe('Liveboard/viz embed tests', () => {
1020
1020
  expect(onSpy).toHaveBeenCalledWith(HostEvent.Navigate, 'embed/viz/lb1/viz1');
1021
1021
  }, 1002);
1022
1022
  });
1023
- test('navigateToLiveboard should call preRender when preRenderConfig.preRenderId is set', () => {
1023
+ test('navigateToLiveboard should call preRender when preRenderConfig.id is set', () => {
1024
1024
  const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
1025
1025
  ...defaultViewConfig,
1026
1026
  liveboardId,
1027
1027
  preRenderConfig: {
1028
- preRenderId: 'config-pre-render-id',
1028
+ id: 'config-pre-render-id',
1029
1029
  },
1030
1030
  });
1031
1031
  const preRenderSpy = jest
@@ -1035,13 +1035,13 @@ describe('Liveboard/viz embed tests', () => {
1035
1035
  expect(preRenderSpy).toHaveBeenCalledTimes(1);
1036
1036
  expect(preRenderSpy).toHaveBeenCalledWith(true);
1037
1037
  });
1038
- test('navigateToLiveboard should prefer preRenderConfig.preRenderId over top-level preRenderId', () => {
1038
+ test('navigateToLiveboard should prefer preRenderConfig.id over top-level preRenderId', () => {
1039
1039
  const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
1040
1040
  ...defaultViewConfig,
1041
1041
  liveboardId,
1042
1042
  preRenderId: 'top-level-id',
1043
1043
  preRenderConfig: {
1044
- preRenderId: 'config-level-id',
1044
+ id: 'config-level-id',
1045
1045
  },
1046
1046
  });
1047
1047
  const preRenderSpy = jest
@@ -1463,8 +1463,11 @@ describe('Liveboard/viz embed tests', () => {
1463
1463
  // should render the generic link
1464
1464
  expect(navigateToLiveboardSpy).toHaveBeenCalledWith(testLiveboardId, 'testVizId', 'testActiveTabId', undefined);
1465
1465
  expect(iFrame.src).toMatch(/http:\/\/tshost\/.*&isLiveboardEmbed=true.*#$/);
1466
+ // Navigate is held behind this show-cycle's
1467
+ // UpdateEmbedParams, so wait out the settle
1468
+ // window (SCAL-336321).
1466
1469
  expect(consoleSpy).toHaveBeenCalledTimes(0);
1467
- });
1470
+ }, 300);
1468
1471
  });
1469
1472
  test('it should navigateToLiveboard with liveboard id is not passed with AuthInit event', async () => {
1470
1473
  mockMessageChannel();
@@ -1510,7 +1513,10 @@ describe('Liveboard/viz embed tests', () => {
1510
1513
  expect(navigateToLiveboardSpy).toHaveBeenCalledWith(testLiveboardId, 'testVizId', 'testActiveTabId', undefined);
1511
1514
  expect(iFrame.src).toMatch(/http:\/\/tshost\/.*&isLiveboardEmbed=true.*#$/);
1512
1515
  expect(consoleSpy).toHaveBeenCalledTimes(0);
1513
- }, 1005);
1516
+ // 1000ms AuthInit fallback + the 200ms settle
1517
+ // window before Navigate goes out (SCAL-336321),
1518
+ // so 1005 is no longer enough.
1519
+ }, 1305);
1514
1520
  });
1515
1521
  test('should replace existing preRender when replaceExistingPreRender is true', async () => {
1516
1522
  const testPreRenderId = 'testReplacePreRender';
@@ -1611,9 +1617,6 @@ describe('Liveboard/viz embed tests', () => {
1611
1617
  liveboardId,
1612
1618
  fullHeight: true,
1613
1619
  });
1614
- expect(liveboardEmbed.viewConfig.lazyLoadingForFullHeight).toBe(true);
1615
- expect(liveboardEmbed.viewConfig.enableScrollableContainerLazyLoading).toBe(true);
1616
- expect(liveboardEmbed.viewConfig.lazyLoadingMargin).toBe('500px 0px');
1617
1620
  await liveboardEmbed.render();
1618
1621
  await executeAfterWait(() => {
1619
1622
  const iframeSrc = getIFrameSrc();
@@ -1627,9 +1630,13 @@ describe('Liveboard/viz embed tests', () => {
1627
1630
  ...defaultViewConfig,
1628
1631
  liveboardId,
1629
1632
  });
1630
- expect(liveboardEmbed.viewConfig.lazyLoadingForFullHeight).toBeUndefined();
1631
- expect(liveboardEmbed.viewConfig.enableScrollableContainerLazyLoading).toBeUndefined();
1632
- expect(liveboardEmbed.viewConfig.lazyLoadingMargin).toBeUndefined();
1633
+ await liveboardEmbed.render();
1634
+ await executeAfterWait(() => {
1635
+ const iframeSrc = getIFrameSrc();
1636
+ expect(iframeSrc).not.toContain('isFullHeightPinboard');
1637
+ expect(iframeSrc).not.toContain('isLazyLoadingForEmbedEnabled');
1638
+ expect(iframeSrc).not.toContain('rootMarginForLazyLoad');
1639
+ }, 100);
1633
1640
  });
1634
1641
  test('should not write the defaults back onto the caller view config', async () => {
1635
1642
  const callerViewConfig = {
@@ -1648,9 +1655,13 @@ describe('Liveboard/viz embed tests', () => {
1648
1655
  liveboardId,
1649
1656
  fullHeight: false,
1650
1657
  });
1651
- expect(liveboardEmbed.viewConfig.lazyLoadingForFullHeight).toBeUndefined();
1652
- expect(liveboardEmbed.viewConfig.enableScrollableContainerLazyLoading).toBeUndefined();
1653
- expect(liveboardEmbed.viewConfig.lazyLoadingMargin).toBeUndefined();
1658
+ await liveboardEmbed.render();
1659
+ await executeAfterWait(() => {
1660
+ const iframeSrc = getIFrameSrc();
1661
+ expect(iframeSrc).not.toContain('isFullHeightPinboard');
1662
+ expect(iframeSrc).not.toContain('isLazyLoadingForEmbedEnabled');
1663
+ expect(iframeSrc).not.toContain('rootMarginForLazyLoad');
1664
+ }, 100);
1654
1665
  });
1655
1666
  test('should default lazyLoadingMargin when lazyLoadingForFullHeight is set explicitly', async () => {
1656
1667
  const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
@@ -1659,10 +1670,9 @@ describe('Liveboard/viz embed tests', () => {
1659
1670
  fullHeight: true,
1660
1671
  lazyLoadingForFullHeight: true,
1661
1672
  });
1662
- expect(liveboardEmbed.viewConfig.lazyLoadingMargin).toBe(DEFAULT_LAZY_LOADING_MARGIN);
1663
1673
  await liveboardEmbed.render();
1664
1674
  await executeAfterWait(() => {
1665
- expect(getIFrameSrc()).toContain('rootMarginForLazyLoad=500px%200px');
1675
+ expect(getIFrameSrc()).toContain(`rootMarginForLazyLoad=${encodeURIComponent(DEFAULT_LAZY_LOADING_MARGIN)}`);
1666
1676
  }, 100);
1667
1677
  });
1668
1678
  test('should let an explicit lazyLoadingMargin win over the default', async () => {
@@ -1843,7 +1853,7 @@ describe('Liveboard/viz embed tests', () => {
1843
1853
  const mockTrigger = jest.spyOn(liveboardEmbed, 'trigger');
1844
1854
  await liveboardEmbed.render();
1845
1855
  // Trigger the lazy load data calculation
1846
- liveboardEmbed.sendFullHeightLazyLoadData();
1856
+ liveboardEmbed.fullHeightController.sendVisibleCoordinates();
1847
1857
  expect(mockTrigger).toHaveBeenCalledWith(HostEvent.VisibleEmbedCoordinates, {
1848
1858
  top: 0,
1849
1859
  height: 500,
@@ -1861,7 +1871,7 @@ describe('Liveboard/viz embed tests', () => {
1861
1871
  const mockTrigger = jest.spyOn(liveboardEmbed, 'trigger');
1862
1872
  await liveboardEmbed.render();
1863
1873
  // Trigger the lazy load data calculation
1864
- liveboardEmbed.sendFullHeightLazyLoadData();
1874
+ liveboardEmbed.fullHeightController.sendVisibleCoordinates();
1865
1875
  expect(mockTrigger).toHaveBeenCalledWith(HostEvent.VisibleEmbedCoordinates, {
1866
1876
  top: 0,
1867
1877
  height: 500,
@@ -1888,7 +1898,7 @@ describe('Liveboard/viz embed tests', () => {
1888
1898
  const mockTrigger = jest.spyOn(liveboardEmbed, 'trigger');
1889
1899
  await liveboardEmbed.render();
1890
1900
  // Trigger the lazy load data calculation
1891
- liveboardEmbed.sendFullHeightLazyLoadData();
1901
+ liveboardEmbed.fullHeightController.sendVisibleCoordinates();
1892
1902
  expect(mockTrigger).toHaveBeenCalledWith(HostEvent.VisibleEmbedCoordinates, {
1893
1903
  top: 50,
1894
1904
  height: 700,
@@ -1977,7 +1987,7 @@ describe('Liveboard/viz embed tests', () => {
1977
1987
  // Create a mock responder function
1978
1988
  const mockResponder = jest.fn();
1979
1989
  // Trigger the handler directly
1980
- liveboardEmbed.requestVisibleEmbedCoordinatesHandler({}, mockResponder);
1990
+ liveboardEmbed.fullHeightController.handleRequestVisibleCoordinates({}, mockResponder);
1981
1991
  // Verify the responder was called with the correct data
1982
1992
  expect(mockResponder).toHaveBeenCalledWith({
1983
1993
  type: EmbedEvent.RequestVisibleEmbedCoordinates,
@@ -2012,6 +2022,20 @@ describe('Liveboard/viz embed tests', () => {
2012
2022
  beforeEach(() => {
2013
2023
  document.body.innerHTML = getDocumentBody();
2014
2024
  });
2025
+ // beforePrerenderVisible() no longer navigates
2026
+ // synchronously: Navigate is held until this show-cycle's
2027
+ // UpdateEmbedParams has been posted and given
2028
+ // UPDATE_EMBED_PARAMS_SETTLE_MS (200ms) to apply
2029
+ // (SCAL-336321). These tests must wait that window out
2030
+ // rather than read the spy inline.
2031
+ const waitForPreRenderNavigate = () => new Promise((resolve) => {
2032
+ setTimeout(resolve, 300);
2033
+ });
2034
+ // A home hop waits twice: params settle, then home settle. Generous
2035
+ // margin over the two windows so a slow run does not flake.
2036
+ const waitForHomeHopNavigate = () => new Promise((resolve) => {
2037
+ setTimeout(resolve, 900);
2038
+ });
2015
2039
  test('should call navigateToLiveboard after embed container is loaded in beforePrerenderVisible', async () => {
2016
2040
  const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
2017
2041
  liveboardId,
@@ -2029,16 +2053,168 @@ describe('Liveboard/viz embed tests', () => {
2029
2053
  // Simulate embed container becoming ready
2030
2054
  liveboardEmbed.isEmbedContainerLoaded = true;
2031
2055
  liveboardEmbed['executeEmbedContainerReadyCallbacks']();
2056
+ await waitForPreRenderNavigate();
2032
2057
  // Now navigateToLiveboard should be called
2033
2058
  expect(navigateToLiveboardSpy).toHaveBeenCalledWith(liveboardId, vizId, activeTabId, undefined);
2034
2059
  });
2035
- test('should update currentLiveboardState for prerender object when embed container loads', async () => {
2060
+ test('should route via home when the pre-render is already on this route', async () => {
2061
+ const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
2062
+ liveboardId,
2063
+ vizId,
2064
+ activeTabId,
2065
+ ...defaultViewConfig,
2066
+ });
2067
+ // Navigate to the route it is already on is a no-op, so the
2068
+ // liveboard keeps its state. Home unmounts the container.
2069
+ jest.spyOn(liveboardEmbed, 'getPreRenderObj').mockReturnValue({
2070
+ currentLiveboardState: {
2071
+ liveboardId,
2072
+ vizId,
2073
+ activeTabId,
2074
+ personalizedViewId: undefined,
2075
+ },
2076
+ });
2077
+ const triggerSpy = jest
2078
+ .spyOn(liveboardEmbed, 'trigger')
2079
+ .mockImplementation(() => Promise.resolve(undefined));
2080
+ const navigateToLiveboardSpy = jest
2081
+ .spyOn(liveboardEmbed, 'navigateToLiveboard')
2082
+ .mockImplementation(() => Promise.resolve(undefined));
2083
+ liveboardEmbed.isEmbedContainerLoaded = false;
2084
+ liveboardEmbed['beforePrerenderVisible']();
2085
+ liveboardEmbed.isEmbedContainerLoaded = true;
2086
+ liveboardEmbed['executeEmbedContainerReadyCallbacks']();
2087
+ await waitForHomeHopNavigate();
2088
+ expect(triggerSpy).toHaveBeenCalledWith(HostEvent.Navigate, 'home');
2089
+ expect(navigateToLiveboardSpy).toHaveBeenCalledWith(liveboardId, vizId, activeTabId, undefined);
2090
+ // Home first, or we would clear what we just asked for.
2091
+ expect(triggerSpy.mock.invocationCallOrder[0]).toBeLessThan(navigateToLiveboardSpy.mock.invocationCallOrder[0]);
2092
+ });
2093
+ test('should not wait for the container to acknowledge the home hop', async () => {
2094
+ const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
2095
+ liveboardId,
2096
+ vizId,
2097
+ activeTabId,
2098
+ ...defaultViewConfig,
2099
+ });
2100
+ jest.spyOn(liveboardEmbed, 'getPreRenderObj').mockReturnValue({
2101
+ currentLiveboardState: {
2102
+ liveboardId,
2103
+ vizId,
2104
+ activeTabId,
2105
+ personalizedViewId: undefined,
2106
+ },
2107
+ });
2108
+ // A real home hop never settles until the 30s trigger timeout.
2109
+ // Awaiting it parked the liveboard on home for that long.
2110
+ jest.spyOn(liveboardEmbed, 'trigger').mockImplementation((event, payload) => (event === HostEvent.Navigate && payload === 'home'
2111
+ ? new Promise(() => { })
2112
+ : Promise.resolve(undefined)));
2113
+ const navigateToLiveboardSpy = jest
2114
+ .spyOn(liveboardEmbed, 'navigateToLiveboard')
2115
+ .mockImplementation(() => Promise.resolve(undefined));
2116
+ liveboardEmbed.isEmbedContainerLoaded = false;
2117
+ liveboardEmbed['beforePrerenderVisible']();
2118
+ liveboardEmbed.isEmbedContainerLoaded = true;
2119
+ liveboardEmbed['executeEmbedContainerReadyCallbacks']();
2120
+ await waitForHomeHopNavigate();
2121
+ expect(navigateToLiveboardSpy).toHaveBeenCalledWith(liveboardId, vizId, activeTabId, undefined);
2122
+ });
2123
+ test('should not route via home when the embed is showing itself again', async () => {
2124
+ const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
2125
+ liveboardId,
2126
+ vizId,
2127
+ activeTabId,
2128
+ ...defaultViewConfig,
2129
+ });
2130
+ // A hide/show of one embed, not a hand-over: the state is this
2131
+ // user's own, so clearing it would lose their session.
2132
+ jest.spyOn(liveboardEmbed, 'getPreRenderObj').mockReturnValue(liveboardEmbed);
2133
+ const triggerSpy = jest
2134
+ .spyOn(liveboardEmbed, 'trigger')
2135
+ .mockImplementation(() => Promise.resolve(undefined));
2136
+ const navigateToLiveboardSpy = jest
2137
+ .spyOn(liveboardEmbed, 'navigateToLiveboard')
2138
+ .mockImplementation(() => Promise.resolve(undefined));
2139
+ liveboardEmbed.isEmbedContainerLoaded = false;
2140
+ liveboardEmbed['beforePrerenderVisible']();
2141
+ liveboardEmbed.isEmbedContainerLoaded = true;
2142
+ liveboardEmbed['executeEmbedContainerReadyCallbacks']();
2143
+ await waitForPreRenderNavigate();
2144
+ expect(triggerSpy).not.toHaveBeenCalledWith(HostEvent.Navigate, 'home');
2145
+ expect(navigateToLiveboardSpy).toHaveBeenCalled();
2146
+ });
2147
+ test('should not route via home when the pre-render is on another liveboard', async () => {
2148
+ const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
2149
+ liveboardId,
2150
+ vizId,
2151
+ activeTabId,
2152
+ ...defaultViewConfig,
2153
+ });
2154
+ jest.spyOn(liveboardEmbed, 'getPreRenderObj').mockReturnValue({
2155
+ currentLiveboardState: {
2156
+ liveboardId: 'a-different-liveboard',
2157
+ vizId,
2158
+ activeTabId,
2159
+ personalizedViewId: undefined,
2160
+ },
2161
+ });
2162
+ const triggerSpy = jest
2163
+ .spyOn(liveboardEmbed, 'trigger')
2164
+ .mockImplementation(() => Promise.resolve(undefined));
2165
+ const navigateToLiveboardSpy = jest
2166
+ .spyOn(liveboardEmbed, 'navigateToLiveboard')
2167
+ .mockImplementation(() => Promise.resolve(undefined));
2168
+ liveboardEmbed.isEmbedContainerLoaded = false;
2169
+ liveboardEmbed['beforePrerenderVisible']();
2170
+ liveboardEmbed.isEmbedContainerLoaded = true;
2171
+ liveboardEmbed['executeEmbedContainerReadyCallbacks']();
2172
+ await waitForPreRenderNavigate();
2173
+ // A real route change unmounts the liveboard by itself.
2174
+ expect(triggerSpy).not.toHaveBeenCalledWith(HostEvent.Navigate, 'home');
2175
+ expect(navigateToLiveboardSpy).toHaveBeenCalledWith(liveboardId, vizId, activeTabId, undefined);
2176
+ });
2177
+ test('should not route via home for the same liveboard on a different tab', async () => {
2178
+ const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
2179
+ liveboardId,
2180
+ vizId,
2181
+ activeTabId,
2182
+ ...defaultViewConfig,
2183
+ });
2184
+ // Same liveboard, different tab — a real navigation.
2185
+ jest.spyOn(liveboardEmbed, 'getPreRenderObj').mockReturnValue({
2186
+ currentLiveboardState: {
2187
+ liveboardId,
2188
+ vizId,
2189
+ activeTabId: 'another-tab',
2190
+ personalizedViewId: undefined,
2191
+ },
2192
+ });
2193
+ const triggerSpy = jest
2194
+ .spyOn(liveboardEmbed, 'trigger')
2195
+ .mockImplementation(() => Promise.resolve(undefined));
2196
+ const navigateToLiveboardSpy = jest
2197
+ .spyOn(liveboardEmbed, 'navigateToLiveboard')
2198
+ .mockImplementation(() => Promise.resolve(undefined));
2199
+ liveboardEmbed.isEmbedContainerLoaded = false;
2200
+ liveboardEmbed['beforePrerenderVisible']();
2201
+ liveboardEmbed.isEmbedContainerLoaded = true;
2202
+ liveboardEmbed['executeEmbedContainerReadyCallbacks']();
2203
+ await waitForPreRenderNavigate();
2204
+ expect(triggerSpy).not.toHaveBeenCalledWith(HostEvent.Navigate, 'home');
2205
+ expect(navigateToLiveboardSpy).toHaveBeenCalled();
2206
+ });
2207
+ test('should update currentLiveboardState on the embed showing when the container loads', async () => {
2036
2208
  const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
2037
2209
  liveboardId,
2038
2210
  vizId,
2039
2211
  activeTabId,
2040
2212
  ...defaultViewConfig,
2041
2213
  });
2214
+ // The state is written on the embed that is being shown, which is
2215
+ // also the one the pre-render wrapper ends up pointing at. Writing
2216
+ // it on the predecessor left "current" naming a liveboard that
2217
+ // stopped being current one hand-over ago.
2042
2218
  const mockPreRenderObj = {
2043
2219
  currentLiveboardState: {},
2044
2220
  };
@@ -2051,12 +2227,15 @@ describe('Liveboard/viz embed tests', () => {
2051
2227
  // Simulate embed container becoming ready
2052
2228
  liveboardEmbed.isEmbedContainerLoaded = true;
2053
2229
  liveboardEmbed['executeEmbedContainerReadyCallbacks']();
2054
- // Check that currentLiveboardState was updated
2055
- expect(mockPreRenderObj.currentLiveboardState).toEqual({
2230
+ await waitForPreRenderNavigate();
2231
+ expect(liveboardEmbed.currentLiveboardState).toEqual({
2056
2232
  liveboardId,
2057
2233
  vizId,
2058
2234
  activeTabId,
2235
+ personalizedViewId: undefined,
2059
2236
  });
2237
+ // and NOT on the instance it took the pre-render over from
2238
+ expect(mockPreRenderObj.currentLiveboardState).toEqual({});
2060
2239
  });
2061
2240
  test('should handle beforePrerenderVisible when embed container is already loaded', async () => {
2062
2241
  const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
@@ -2070,7 +2249,8 @@ describe('Liveboard/viz embed tests', () => {
2070
2249
  liveboardEmbed.isEmbedContainerLoaded = true;
2071
2250
  // Call beforePrerenderVisible
2072
2251
  liveboardEmbed['beforePrerenderVisible']();
2073
- // navigateToLiveboard should be called immediately
2252
+ await waitForPreRenderNavigate();
2253
+ // navigateToLiveboard should be called once the params have settled
2074
2254
  expect(navigateToLiveboardSpy).toHaveBeenCalledWith(liveboardId, vizId, activeTabId, undefined);
2075
2255
  });
2076
2256
  test('should handle beforePrerenderVisible without prerender object', async () => {
@@ -2089,6 +2269,7 @@ describe('Liveboard/viz embed tests', () => {
2089
2269
  // Simulate embed container becoming ready
2090
2270
  liveboardEmbed.isEmbedContainerLoaded = true;
2091
2271
  liveboardEmbed['executeEmbedContainerReadyCallbacks']();
2272
+ await waitForPreRenderNavigate();
2092
2273
  // navigateToLiveboard should still be called
2093
2274
  expect(navigateToLiveboardSpy).toHaveBeenCalledWith(liveboardId, vizId, activeTabId, undefined);
2094
2275
  });
@@ -2107,6 +2288,7 @@ describe('Liveboard/viz embed tests', () => {
2107
2288
  liveboardEmbed.isEmbedContainerLoaded = true;
2108
2289
  // Call beforePrerenderVisible
2109
2290
  liveboardEmbed['beforePrerenderVisible']();
2291
+ await waitForPreRenderNavigate();
2110
2292
  // Check that all parameters are passed correctly
2111
2293
  expect(navigateToLiveboardSpy).toHaveBeenCalledWith(customLiveboardId, customVizId, customActiveTabId, undefined);
2112
2294
  });
@@ -2120,6 +2302,7 @@ describe('Liveboard/viz embed tests', () => {
2120
2302
  liveboardEmbed.isEmbedContainerLoaded = true;
2121
2303
  // Call beforePrerenderVisible
2122
2304
  liveboardEmbed['beforePrerenderVisible']();
2305
+ await waitForPreRenderNavigate();
2123
2306
  // Check that undefined parameters are passed correctly
2124
2307
  expect(navigateToLiveboardSpy).toHaveBeenCalledWith(liveboardId, undefined, undefined, undefined);
2125
2308
  });
@@ -2134,7 +2317,7 @@ describe('Liveboard/viz embed tests', () => {
2134
2317
  minimumHeight: 800,
2135
2318
  });
2136
2319
  await liveboardEmbed.render();
2137
- expect(liveboardEmbed['defaultHeight']).toBe(800);
2320
+ expect(liveboardEmbed['fullHeightController'].minimumHeight).toBe(800);
2138
2321
  });
2139
2322
  test('should set default height to 700 when default height is provided', async () => {
2140
2323
  const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
@@ -2144,7 +2327,7 @@ describe('Liveboard/viz embed tests', () => {
2144
2327
  defaultHeight: 700,
2145
2328
  });
2146
2329
  await liveboardEmbed.render();
2147
- expect(liveboardEmbed['defaultHeight']).toBe(700);
2330
+ expect(liveboardEmbed['fullHeightController'].minimumHeight).toBe(700);
2148
2331
  });
2149
2332
  test('should set default height to 800 when minimum height is provided but default height is not', async () => {
2150
2333
  const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
@@ -2154,7 +2337,7 @@ describe('Liveboard/viz embed tests', () => {
2154
2337
  minimumHeight: 800,
2155
2338
  });
2156
2339
  await liveboardEmbed.render();
2157
- expect(liveboardEmbed['defaultHeight']).toBe(800);
2340
+ expect(liveboardEmbed['fullHeightController'].minimumHeight).toBe(800);
2158
2341
  });
2159
2342
  test('should set default height to 500 when neither default height nor minimum height is provided', async () => {
2160
2343
  const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
@@ -2163,7 +2346,7 @@ describe('Liveboard/viz embed tests', () => {
2163
2346
  fullHeight: true,
2164
2347
  });
2165
2348
  await liveboardEmbed.render();
2166
- expect(liveboardEmbed['defaultHeight']).toBe(500);
2349
+ expect(liveboardEmbed['fullHeightController'].minimumHeight).toBe(500);
2167
2350
  });
2168
2351
  });
2169
2352
  });