@thoughtspot/visual-embed-sdk 1.39.2-alpha.1 → 1.39.2-alpha.2

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 (170) hide show
  1. package/cjs/package.json +1 -1
  2. package/cjs/src/config.spec.js +9 -0
  3. package/cjs/src/config.spec.js.map +1 -1
  4. package/cjs/src/embed/app.d.ts +75 -15
  5. package/cjs/src/embed/app.d.ts.map +1 -1
  6. package/cjs/src/embed/app.js +68 -9
  7. package/cjs/src/embed/app.js.map +1 -1
  8. package/cjs/src/embed/app.spec.js +356 -4
  9. package/cjs/src/embed/app.spec.js.map +1 -1
  10. package/cjs/src/embed/bodyless-conversation.d.ts +19 -7
  11. package/cjs/src/embed/bodyless-conversation.d.ts.map +1 -1
  12. package/cjs/src/embed/bodyless-conversation.js +24 -4
  13. package/cjs/src/embed/bodyless-conversation.js.map +1 -1
  14. package/cjs/src/embed/bodyless-conversation.spec.js +8 -190
  15. package/cjs/src/embed/bodyless-conversation.spec.js.map +1 -1
  16. package/cjs/src/embed/conversation.d.ts +2 -60
  17. package/cjs/src/embed/conversation.d.ts.map +1 -1
  18. package/cjs/src/embed/conversation.js +1 -9
  19. package/cjs/src/embed/conversation.js.map +1 -1
  20. package/cjs/src/embed/conversation.spec.js +0 -102
  21. package/cjs/src/embed/conversation.spec.js.map +1 -1
  22. package/cjs/src/embed/liveboard.d.ts +56 -0
  23. package/cjs/src/embed/liveboard.d.ts.map +1 -1
  24. package/cjs/src/embed/liveboard.js +46 -0
  25. package/cjs/src/embed/liveboard.js.map +1 -1
  26. package/cjs/src/embed/liveboard.spec.js +203 -0
  27. package/cjs/src/embed/liveboard.spec.js.map +1 -1
  28. package/cjs/src/errors.d.ts +1 -0
  29. package/cjs/src/errors.d.ts.map +1 -1
  30. package/cjs/src/errors.js +1 -0
  31. package/cjs/src/errors.js.map +1 -1
  32. package/cjs/src/index.d.ts +2 -2
  33. package/cjs/src/index.d.ts.map +1 -1
  34. package/cjs/src/index.js +2 -1
  35. package/cjs/src/index.js.map +1 -1
  36. package/cjs/src/react/all-types-export.d.ts +1 -1
  37. package/cjs/src/react/all-types-export.d.ts.map +1 -1
  38. package/cjs/src/react/all-types-export.js +3 -2
  39. package/cjs/src/react/all-types-export.js.map +1 -1
  40. package/cjs/src/react/index.d.ts +71 -20
  41. package/cjs/src/react/index.d.ts.map +1 -1
  42. package/cjs/src/react/index.js +79 -42
  43. package/cjs/src/react/index.js.map +1 -1
  44. package/cjs/src/react/index.spec.js +436 -100
  45. package/cjs/src/react/index.spec.js.map +1 -1
  46. package/cjs/src/types.d.ts +46 -4
  47. package/cjs/src/types.d.ts.map +1 -1
  48. package/cjs/src/types.js +28 -0
  49. package/cjs/src/types.js.map +1 -1
  50. package/cjs/src/utils/graphql/nlsService/conversation-service.d.ts.map +1 -1
  51. package/cjs/src/utils/graphql/nlsService/conversation-service.js +2 -0
  52. package/cjs/src/utils/graphql/nlsService/conversation-service.js.map +1 -1
  53. package/cjs/src/utils/processTrigger.js +2 -1
  54. package/cjs/src/utils/processTrigger.js.map +1 -1
  55. package/cjs/src/utils.d.ts +6 -0
  56. package/cjs/src/utils.d.ts.map +1 -1
  57. package/cjs/src/utils.js +23 -3
  58. package/cjs/src/utils.js.map +1 -1
  59. package/cjs/src/utils.spec.js +237 -1
  60. package/cjs/src/utils.spec.js.map +1 -1
  61. package/dist/index-e3Uw3YFO.js +7371 -0
  62. package/dist/src/embed/app.d.ts +75 -15
  63. package/dist/src/embed/app.d.ts.map +1 -1
  64. package/dist/src/embed/bodyless-conversation.d.ts +19 -7
  65. package/dist/src/embed/bodyless-conversation.d.ts.map +1 -1
  66. package/dist/src/embed/conversation.d.ts +2 -60
  67. package/dist/src/embed/conversation.d.ts.map +1 -1
  68. package/dist/src/embed/liveboard.d.ts +56 -0
  69. package/dist/src/embed/liveboard.d.ts.map +1 -1
  70. package/dist/src/errors.d.ts +1 -0
  71. package/dist/src/errors.d.ts.map +1 -1
  72. package/dist/src/index.d.ts +2 -2
  73. package/dist/src/index.d.ts.map +1 -1
  74. package/dist/src/react/all-types-export.d.ts +1 -1
  75. package/dist/src/react/all-types-export.d.ts.map +1 -1
  76. package/dist/src/react/index.d.ts +71 -20
  77. package/dist/src/react/index.d.ts.map +1 -1
  78. package/dist/src/types.d.ts +46 -4
  79. package/dist/src/types.d.ts.map +1 -1
  80. package/dist/src/utils/graphql/nlsService/conversation-service.d.ts.map +1 -1
  81. package/dist/src/utils.d.ts +6 -0
  82. package/dist/src/utils.d.ts.map +1 -1
  83. package/dist/tsembed-react.es.js +276 -74
  84. package/dist/tsembed-react.js +276 -72
  85. package/dist/tsembed.es.js +194 -27
  86. package/dist/tsembed.js +192 -25
  87. package/dist/visual-embed-sdk-react-full.d.ts +246 -105
  88. package/dist/visual-embed-sdk-react.d.ts +246 -105
  89. package/dist/visual-embed-sdk.d.ts +176 -86
  90. package/lib/package.json +1 -1
  91. package/lib/src/config.spec.js +9 -0
  92. package/lib/src/config.spec.js.map +1 -1
  93. package/lib/src/embed/app.d.ts +75 -15
  94. package/lib/src/embed/app.d.ts.map +1 -1
  95. package/lib/src/embed/app.js +68 -9
  96. package/lib/src/embed/app.js.map +1 -1
  97. package/lib/src/embed/app.spec.js +357 -5
  98. package/lib/src/embed/app.spec.js.map +1 -1
  99. package/lib/src/embed/bodyless-conversation.d.ts +19 -7
  100. package/lib/src/embed/bodyless-conversation.d.ts.map +1 -1
  101. package/lib/src/embed/bodyless-conversation.js +23 -4
  102. package/lib/src/embed/bodyless-conversation.js.map +1 -1
  103. package/lib/src/embed/bodyless-conversation.spec.js +9 -191
  104. package/lib/src/embed/bodyless-conversation.spec.js.map +1 -1
  105. package/lib/src/embed/conversation.d.ts +2 -60
  106. package/lib/src/embed/conversation.d.ts.map +1 -1
  107. package/lib/src/embed/conversation.js +2 -10
  108. package/lib/src/embed/conversation.js.map +1 -1
  109. package/lib/src/embed/conversation.spec.js +2 -104
  110. package/lib/src/embed/conversation.spec.js.map +1 -1
  111. package/lib/src/embed/liveboard.d.ts +56 -0
  112. package/lib/src/embed/liveboard.d.ts.map +1 -1
  113. package/lib/src/embed/liveboard.js +47 -1
  114. package/lib/src/embed/liveboard.js.map +1 -1
  115. package/lib/src/embed/liveboard.spec.js +203 -0
  116. package/lib/src/embed/liveboard.spec.js.map +1 -1
  117. package/lib/src/errors.d.ts +1 -0
  118. package/lib/src/errors.d.ts.map +1 -1
  119. package/lib/src/errors.js +1 -0
  120. package/lib/src/errors.js.map +1 -1
  121. package/lib/src/index.d.ts +2 -2
  122. package/lib/src/index.d.ts.map +1 -1
  123. package/lib/src/index.js +2 -2
  124. package/lib/src/index.js.map +1 -1
  125. package/lib/src/react/all-types-export.d.ts +1 -1
  126. package/lib/src/react/all-types-export.d.ts.map +1 -1
  127. package/lib/src/react/all-types-export.js +1 -1
  128. package/lib/src/react/all-types-export.js.map +1 -1
  129. package/lib/src/react/index.d.ts +71 -20
  130. package/lib/src/react/index.d.ts.map +1 -1
  131. package/lib/src/react/index.js +79 -43
  132. package/lib/src/react/index.js.map +1 -1
  133. package/lib/src/react/index.spec.js +439 -103
  134. package/lib/src/react/index.spec.js.map +1 -1
  135. package/lib/src/types.d.ts +46 -4
  136. package/lib/src/types.d.ts.map +1 -1
  137. package/lib/src/types.js +28 -0
  138. package/lib/src/types.js.map +1 -1
  139. package/lib/src/utils/graphql/nlsService/conversation-service.d.ts.map +1 -1
  140. package/lib/src/utils/graphql/nlsService/conversation-service.js +2 -0
  141. package/lib/src/utils/graphql/nlsService/conversation-service.js.map +1 -1
  142. package/lib/src/utils/processTrigger.js +2 -1
  143. package/lib/src/utils/processTrigger.js.map +1 -1
  144. package/lib/src/utils.d.ts +6 -0
  145. package/lib/src/utils.d.ts.map +1 -1
  146. package/lib/src/utils.js +21 -2
  147. package/lib/src/utils.js.map +1 -1
  148. package/lib/src/utils.spec.js +238 -2
  149. package/lib/src/utils.spec.js.map +1 -1
  150. package/lib/src/visual-embed-sdk.d.ts +178 -88
  151. package/package.json +1 -1
  152. package/src/config.spec.ts +11 -0
  153. package/src/embed/app.spec.ts +444 -4
  154. package/src/embed/app.ts +131 -27
  155. package/src/embed/bodyless-conversation.spec.ts +9 -203
  156. package/src/embed/bodyless-conversation.ts +24 -10
  157. package/src/embed/conversation.spec.ts +5 -131
  158. package/src/embed/conversation.ts +10 -82
  159. package/src/embed/liveboard.spec.ts +251 -1
  160. package/src/embed/liveboard.ts +97 -5
  161. package/src/errors.ts +1 -0
  162. package/src/index.ts +2 -0
  163. package/src/react/all-types-export.ts +2 -1
  164. package/src/react/index.spec.tsx +556 -157
  165. package/src/react/index.tsx +117 -51
  166. package/src/types.ts +42 -0
  167. package/src/utils/graphql/nlsService/conversation-service.ts +2 -0
  168. package/src/utils/processTrigger.ts +1 -1
  169. package/src/utils.spec.ts +279 -2
  170. package/src/utils.ts +28 -2
@@ -8,13 +8,12 @@
8
8
  * @author Ayon Ghosh <ayon.ghosh@thoughtspot.com>
9
9
  */
10
10
  import { logger } from '../utils/logger';
11
- import { getQueryParamString } from '../utils';
11
+ import { calculateVisibleElementData, getQueryParamString } from '../utils';
12
12
  import { Param, HostEvent, EmbedEvent, } from '../types';
13
13
  import { V1Embed } from './ts-embed';
14
14
  /**
15
15
  * Pages within the ThoughtSpot app that can be embedded.
16
16
  */
17
- // eslint-disable-next-line no-shadow
18
17
  export var Page;
19
18
  (function (Page) {
20
19
  /**
@@ -100,16 +99,46 @@ export var HomePage;
100
99
  */
101
100
  HomePage["Modular"] = "v2";
102
101
  })(HomePage || (HomePage = {}));
102
+ /**
103
+ * Define the version of the list page
104
+ * @version SDK: 1.40.0 | ThoughtSpot: 10.12.0.cl
105
+ */
106
+ export var ListPage;
107
+ (function (ListPage) {
108
+ /**
109
+ * List (v2) is the traditional List Experience.
110
+ * It serves as the foundational version of the list page.
111
+ */
112
+ ListPage["List"] = "v2";
113
+ /**
114
+ * ListWithUXChanges (v3) introduces the new updated list page with UX changes.
115
+ */
116
+ ListPage["ListWithUXChanges"] = "v3";
117
+ })(ListPage || (ListPage = {}));
103
118
  /**
104
119
  * Embeds full ThoughtSpot experience in a host application.
105
120
  * @group Embed components
106
121
  */
107
122
  export class AppEmbed extends V1Embed {
108
- // eslint-disable-next-line no-useless-constructor
109
123
  constructor(domSelector, viewConfig) {
110
124
  viewConfig.embedComponentType = 'AppEmbed';
111
125
  super(domSelector, viewConfig);
112
126
  this.defaultHeight = '100%';
127
+ this.sendFullHeightLazyLoadData = () => {
128
+ const data = calculateVisibleElementData(this.iFrame);
129
+ this.trigger(HostEvent.VisibleEmbedCoordinates, data);
130
+ };
131
+ /**
132
+ * This is a handler for the RequestVisibleEmbedCoordinates event.
133
+ * It is used to send the visible coordinates data to the host application.
134
+ * @param data The event payload
135
+ * @param responder The responder function
136
+ */
137
+ this.requestVisibleEmbedCoordinatesHandler = (data, responder) => {
138
+ logger.info('Sending RequestVisibleEmbedCoordinates', data);
139
+ const visibleCoordinatesData = calculateVisibleElementData(this.iFrame);
140
+ responder({ type: EmbedEvent.RequestVisibleEmbedCoordinates, data: visibleCoordinatesData });
141
+ };
113
142
  /**
114
143
  * Set the iframe height as per the computed height received
115
144
  * from the ThoughtSpot app.
@@ -118,6 +147,7 @@ export class AppEmbed extends V1Embed {
118
147
  this.updateIFrameHeight = (data) => {
119
148
  var _a;
120
149
  this.setIFrameHeight(Math.max(data.data, (_a = this.iFrame) === null || _a === void 0 ? void 0 : _a.scrollHeight));
150
+ this.sendFullHeightLazyLoadData();
121
151
  };
122
152
  this.embedIframeCenter = (data, responder) => {
123
153
  const obj = this.getIframeCenter();
@@ -147,6 +177,7 @@ export class AppEmbed extends V1Embed {
147
177
  this.on(EmbedEvent.RouteChange, this.setIframeHeightForNonEmbedLiveboard);
148
178
  this.on(EmbedEvent.EmbedHeight, this.updateIFrameHeight);
149
179
  this.on(EmbedEvent.EmbedIframeCenter, this.embedIframeCenter);
180
+ this.on(EmbedEvent.RequestVisibleEmbedCoordinates, this.requestVisibleEmbedCoordinatesHandler);
150
181
  }
151
182
  }
152
183
  /**
@@ -154,9 +185,7 @@ export class AppEmbed extends V1Embed {
154
185
  * embedded Liveboard or visualization.
155
186
  */
156
187
  getEmbedParams() {
157
- const { tag, hideObjects, liveboardV2, showPrimaryNavbar, disableProfileAndHelp, hideHamburger, hideObjectSearch, hideNotification, hideApplicationSwitcher, hideOrgSwitcher, enableSearchAssist, fullHeight, dataPanelV2 = false, hideLiveboardHeader = false, showLiveboardTitle = true, showLiveboardDescription = true, hideHomepageLeftNav = false, modularHomeExperience = false, isLiveboardHeaderSticky = true, enableAskSage, collapseSearchBarInitially = false, enable2ColumnLayout, enableCustomColumnGroups = false, isOnBeforeGetVizDataInterceptEnabled = false,
158
- /* eslint-disable-next-line max-len */
159
- dataPanelCustomGroupsAccordionInitialState = DataPanelCustomColumnGroupsAccordionState.EXPAND_ALL, collapseSearchBar = true, isLiveboardCompactHeaderEnabled = false, showLiveboardVerifiedBadge = true, showLiveboardReverifyBanner = true, hideIrrelevantChipsInLiveboardTabs = false, homePageSearchBarMode, isUnifiedSearchExperienceEnabled = true, enablePendoHelp = true, discoveryExperience, coverAndFilterOptionInPDF = false, isLiveboardStylingAndGroupingEnabled, } = this.viewConfig;
188
+ const { tag, hideObjects, liveboardV2, showPrimaryNavbar, disableProfileAndHelp, hideHamburger, hideObjectSearch, hideNotification, hideApplicationSwitcher, hideOrgSwitcher, enableSearchAssist, fullHeight, dataPanelV2 = false, hideLiveboardHeader = false, showLiveboardTitle = true, showLiveboardDescription = true, hideHomepageLeftNav = false, modularHomeExperience = false, isLiveboardHeaderSticky = true, enableAskSage, collapseSearchBarInitially = false, enable2ColumnLayout, enableCustomColumnGroups = false, isOnBeforeGetVizDataInterceptEnabled = false, dataPanelCustomGroupsAccordionInitialState = DataPanelCustomColumnGroupsAccordionState.EXPAND_ALL, collapseSearchBar = true, isLiveboardCompactHeaderEnabled = false, showLiveboardVerifiedBadge = true, showLiveboardReverifyBanner = true, hideIrrelevantChipsInLiveboardTabs = false, homePageSearchBarMode, isUnifiedSearchExperienceEnabled = true, enablePendoHelp = true, discoveryExperience, coverAndFilterOptionInPDF = false, isLiveboardStylingAndGroupingEnabled, } = this.viewConfig;
160
189
  let params = {};
161
190
  params[Param.PrimaryNavHidden] = !showPrimaryNavbar;
162
191
  params[Param.HideProfleAndHelp] = !!disableProfileAndHelp;
@@ -185,6 +214,10 @@ export class AppEmbed extends V1Embed {
185
214
  }
186
215
  if (fullHeight === true) {
187
216
  params[Param.fullHeight] = true;
217
+ if (this.viewConfig.lazyLoadingForFullHeight) {
218
+ params[Param.IsLazyLoadingForEmbedEnabled] = true;
219
+ params[Param.RootMarginForLazyLoad] = this.viewConfig.lazyLoadingMargin;
220
+ }
188
221
  }
189
222
  if (tag) {
190
223
  params[Param.Tag] = tag;
@@ -205,7 +238,6 @@ export class AppEmbed extends V1Embed {
205
238
  params[Param.enableAskSage] = enableAskSage;
206
239
  }
207
240
  if (isOnBeforeGetVizDataInterceptEnabled) {
208
- /* eslint-disable-next-line max-len */
209
241
  params[Param.IsOnBeforeGetVizDataInterceptEnabled] = isOnBeforeGetVizDataInterceptEnabled;
210
242
  }
211
243
  if (homePageSearchBarMode) {
@@ -226,11 +258,9 @@ export class AppEmbed extends V1Embed {
226
258
  === DataPanelCustomColumnGroupsAccordionState.COLLAPSE_ALL
227
259
  || dataPanelCustomGroupsAccordionInitialState
228
260
  === DataPanelCustomColumnGroupsAccordionState.EXPAND_FIRST) {
229
- /* eslint-disable-next-line max-len */
230
261
  params[Param.DataPanelCustomGroupsAccordionInitialState] = dataPanelCustomGroupsAccordionInitialState;
231
262
  }
232
263
  else {
233
- /* eslint-disable-next-line max-len */
234
264
  params[Param.DataPanelCustomGroupsAccordionInitialState] = DataPanelCustomColumnGroupsAccordionState.EXPAND_ALL;
235
265
  }
236
266
  if (discoveryExperience) {
@@ -243,6 +273,10 @@ export class AppEmbed extends V1Embed {
243
273
  if (discoveryExperience.homePage === HomePage.Modular) {
244
274
  params[Param.ModularHomeExperienceEnabled] = true;
245
275
  }
276
+ // listPageVersion v3 will enable the new list page
277
+ if (discoveryExperience.listPageVersion === ListPage.ListWithUXChanges) {
278
+ params[Param.ListPageVersion] = discoveryExperience.listPageVersion;
279
+ }
246
280
  }
247
281
  const queryParams = getQueryParamString(params, true);
248
282
  return queryParams;
@@ -330,6 +364,30 @@ export class AppEmbed extends V1Embed {
330
364
  this.iFrame.src = `${iframeSrc.split(currentPath)[0]}${currentPath}/${path.replace(/^\/?#?\//, '')}`;
331
365
  }
332
366
  }
367
+ /**
368
+ * Destroys the ThoughtSpot embed, and remove any nodes from the DOM.
369
+ * @version SDK: 1.39.0 | ThoughtSpot: 10.10.0.cl
370
+ */
371
+ destroy() {
372
+ super.destroy();
373
+ this.unregisterLazyLoadEvents();
374
+ }
375
+ postRender() {
376
+ this.registerLazyLoadEvents();
377
+ }
378
+ registerLazyLoadEvents() {
379
+ if (this.viewConfig.fullHeight && this.viewConfig.lazyLoadingForFullHeight) {
380
+ // TODO: Use passive: true, install modernizr to check for passive
381
+ window.addEventListener('resize', this.sendFullHeightLazyLoadData);
382
+ window.addEventListener('scroll', this.sendFullHeightLazyLoadData);
383
+ }
384
+ }
385
+ unregisterLazyLoadEvents() {
386
+ if (this.viewConfig.fullHeight && this.viewConfig.lazyLoadingForFullHeight) {
387
+ window.removeEventListener('resize', this.sendFullHeightLazyLoadData);
388
+ window.removeEventListener('scroll', this.sendFullHeightLazyLoadData);
389
+ }
390
+ }
333
391
  /**
334
392
  * Renders the embedded application pages in the ThoughtSpot app.
335
393
  * @param renderOptions An object containing the page ID
@@ -339,6 +397,7 @@ export class AppEmbed extends V1Embed {
339
397
  await super.render();
340
398
  const src = this.getIFrameSrc();
341
399
  await this.renderV1Embed(src);
400
+ this.postRender();
342
401
  return this;
343
402
  }
344
403
  }
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/embed/app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/embed/app.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { AppEmbed, DataPanelCustomColumnGroupsAccordionState, Page, HomePageSearchBarMode, PrimaryNavbarVersion, HomePage, } from './app';
1
+ import { AppEmbed, DataPanelCustomColumnGroupsAccordionState, Page, HomePageSearchBarMode, PrimaryNavbarVersion, HomePage, ListPage, } from './app';
2
2
  import { init } from '../index';
3
3
  import { Action, AuthType, EmbedEvent, HostEvent, RuntimeFilterOp } from '../types';
4
4
  import { executeAfterWait, getDocumentBody, getIFrameSrc, getRootEl, getIFrameEl, mockMessageChannel, defaultParams, defaultParamsForPinboardEmbed, defaultParamsWithoutHiddenActions, expectUrlMatchesWithParams, } from '../test/test-utils';
@@ -438,6 +438,44 @@ describe('App embed tests', () => {
438
438
  expectUrlMatchesWithParams(getIFrameSrc(), `http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=true&profileAndHelpInNavBarHidden=false&modularHomeExperience=false&enableAskSage=true${defaultParams}${defaultParamsPost}#/home`);
439
439
  });
440
440
  });
441
+ test('Should add listpageVersion=v3 when listPageVersion is ListWithUXChanges to the iframe src', async () => {
442
+ const appEmbed = new AppEmbed(getRootEl(), {
443
+ ...defaultViewConfig,
444
+ discoveryExperience: {
445
+ listPageVersion: ListPage.ListWithUXChanges,
446
+ },
447
+ });
448
+ appEmbed.render();
449
+ await executeAfterWait(() => {
450
+ expectUrlMatchesWithParams(getIFrameSrc(), `http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=true&profileAndHelpInNavBarHidden=false&modularHomeExperience=false&listpageVersion=v3${defaultParams}${defaultParamsPost}#/home`);
451
+ });
452
+ });
453
+ test('Should not add listpageVersion when listPageVersion is List (v2) to the iframe src', async () => {
454
+ const appEmbed = new AppEmbed(getRootEl(), {
455
+ ...defaultViewConfig,
456
+ discoveryExperience: {
457
+ listPageVersion: ListPage.List,
458
+ },
459
+ });
460
+ appEmbed.render();
461
+ await executeAfterWait(() => {
462
+ expectUrlMatchesWithParams(getIFrameSrc(), `http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=true&profileAndHelpInNavBarHidden=false&modularHomeExperience=false${defaultParams}${defaultParamsPost}#/home`);
463
+ });
464
+ });
465
+ test('Should add listpageVersion=v3 combined with other discoveryExperience options to the iframe src', async () => {
466
+ const appEmbed = new AppEmbed(getRootEl(), {
467
+ ...defaultViewConfig,
468
+ discoveryExperience: {
469
+ primaryNavbarVersion: PrimaryNavbarVersion.Sliding,
470
+ homePage: HomePage.Modular,
471
+ listPageVersion: ListPage.ListWithUXChanges,
472
+ },
473
+ });
474
+ appEmbed.render();
475
+ await executeAfterWait(() => {
476
+ expectUrlMatchesWithParams(getIFrameSrc(), `http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=true&profileAndHelpInNavBarHidden=false&modularHomeExperience=true&navigationVersion=v3&listpageVersion=v3${defaultParams}${defaultParamsPost}#/home`);
477
+ });
478
+ });
441
479
  test('Should add enablePendoHelp flag to the iframe src conditional on navbar', async () => {
442
480
  const appEmbed = new AppEmbed(getRootEl(), {
443
481
  ...defaultViewConfig,
@@ -497,12 +535,13 @@ describe('App embed tests', () => {
497
535
  });
498
536
  });
499
537
  test('should register event handlers to adjust iframe height', async () => {
538
+ let embedHeightCallback = () => { };
500
539
  const onSpy = jest.spyOn(AppEmbed.prototype, 'on').mockImplementation((event, callback) => {
501
540
  if (event === EmbedEvent.RouteChange) {
502
541
  callback({ data: { currentPath: '/answers' } }, jest.fn());
503
542
  }
504
543
  if (event === EmbedEvent.EmbedHeight) {
505
- callback({ data: '100%' });
544
+ embedHeightCallback = callback;
506
545
  }
507
546
  if (event === EmbedEvent.EmbedIframeCenter) {
508
547
  callback({}, jest.fn());
@@ -514,14 +553,20 @@ describe('App embed tests', () => {
514
553
  const appEmbed = new AppEmbed(getRootEl(), {
515
554
  ...defaultViewConfig,
516
555
  fullHeight: true,
556
+ lazyLoadingForFullHeight: true,
517
557
  });
518
- appEmbed.render();
558
+ // Set the iframe before render
559
+ appEmbed.iFrame = document.createElement('iframe');
560
+ // Wait for render to complete
561
+ await appEmbed.render();
562
+ embedHeightCallback({ data: '100%' });
563
+ // Verify event handlers were registered
519
564
  await executeAfterWait(() => {
520
565
  expect(onSpy).toHaveBeenCalledWith(EmbedEvent.EmbedHeight, expect.anything());
521
566
  expect(onSpy).toHaveBeenCalledWith(EmbedEvent.RouteChange, expect.anything());
522
567
  expect(onSpy).toHaveBeenCalledWith(EmbedEvent.EmbedIframeCenter, expect.anything());
523
- });
524
- jest.clearAllMocks();
568
+ expect(onSpy).toHaveBeenCalledWith(EmbedEvent.RequestVisibleEmbedCoordinates, expect.anything());
569
+ }, 100);
525
570
  });
526
571
  describe('Navigate to Page API', () => {
527
572
  const path = 'pinboard/e0836cad-4fdf-42d4-bd97-567a6b2a6058';
@@ -586,5 +631,312 @@ describe('App embed tests', () => {
586
631
  expect(logger.log).toHaveBeenCalledWith('Please call render before invoking this method');
587
632
  });
588
633
  });
634
+ describe('LazyLoadingForFullHeight functionality', () => {
635
+ let mockIFrame;
636
+ beforeEach(() => {
637
+ mockIFrame = document.createElement('iframe');
638
+ mockIFrame.getBoundingClientRect = jest.fn().mockReturnValue({
639
+ top: 100,
640
+ left: 150,
641
+ bottom: 600,
642
+ right: 800,
643
+ width: 650,
644
+ height: 500,
645
+ });
646
+ jest.spyOn(document, 'createElement').mockImplementation((tagName) => {
647
+ if (tagName === 'iframe') {
648
+ return mockIFrame;
649
+ }
650
+ return document.createElement(tagName);
651
+ });
652
+ });
653
+ afterEach(() => {
654
+ jest.restoreAllMocks();
655
+ });
656
+ test('should set lazyLoadingMargin parameter when provided', async () => {
657
+ const appEmbed = new AppEmbed(getRootEl(), {
658
+ ...defaultViewConfig,
659
+ fullHeight: true,
660
+ lazyLoadingForFullHeight: true,
661
+ lazyLoadingMargin: '100px 0px',
662
+ });
663
+ await appEmbed.render();
664
+ await executeAfterWait(() => {
665
+ const iframeSrc = getIFrameSrc();
666
+ expect(iframeSrc).toContain('isLazyLoadingForEmbedEnabled=true');
667
+ expect(iframeSrc).toContain('isFullHeightPinboard=true');
668
+ expect(iframeSrc).toContain('rootMarginForLazyLoad=100px%200px');
669
+ }, 100);
670
+ });
671
+ test('should set isLazyLoadingForEmbedEnabled=true when both fullHeight and lazyLoadingForFullHeight are enabled', async () => {
672
+ // Mock the iframe element first
673
+ mockIFrame.getBoundingClientRect = jest.fn().mockReturnValue({
674
+ top: 100,
675
+ left: 150,
676
+ bottom: 600,
677
+ right: 800,
678
+ width: 650,
679
+ height: 500,
680
+ });
681
+ Object.defineProperty(mockIFrame, 'scrollHeight', { value: 500 });
682
+ // Mock the event handlers
683
+ const onSpy = jest.spyOn(AppEmbed.prototype, 'on').mockImplementation((event, callback) => {
684
+ return null;
685
+ });
686
+ jest.spyOn(TsEmbed.prototype, 'getIframeCenter').mockReturnValue({});
687
+ jest.spyOn(TsEmbed.prototype, 'setIFrameHeight').mockReturnValue({});
688
+ // Create the AppEmbed instance
689
+ const appEmbed = new AppEmbed(getRootEl(), {
690
+ ...defaultViewConfig,
691
+ fullHeight: true,
692
+ lazyLoadingForFullHeight: true,
693
+ });
694
+ // Set the iframe before render
695
+ appEmbed.iFrame = mockIFrame;
696
+ // Add the iframe to the DOM
697
+ const rootEl = getRootEl();
698
+ rootEl.appendChild(mockIFrame);
699
+ // Wait for render to complete
700
+ await appEmbed.render();
701
+ // Wait for iframe initialization and URL parameters to be set
702
+ await executeAfterWait(() => {
703
+ const iframeSrc = appEmbed.getIFrameSrc();
704
+ expect(iframeSrc).toContain('isLazyLoadingForEmbedEnabled=true');
705
+ expect(iframeSrc).toContain('isFullHeightPinboard=true');
706
+ }, 100);
707
+ });
708
+ test('should not set lazyLoadingForEmbed when lazyLoadingForFullHeight is enabled but fullHeight is false', async () => {
709
+ const appEmbed = new AppEmbed(getRootEl(), {
710
+ ...defaultViewConfig,
711
+ fullHeight: false,
712
+ lazyLoadingForFullHeight: true,
713
+ });
714
+ // Wait for render to complete
715
+ await appEmbed.render();
716
+ // Wait for iframe initialization and URL parameters to be set
717
+ await executeAfterWait(() => {
718
+ const iframeSrc = getIFrameSrc();
719
+ expect(iframeSrc).not.toContain('isLazyLoadingForEmbedEnabled=true');
720
+ expect(iframeSrc).not.toContain('isFullHeightPinboard=true');
721
+ }, 100); // 100ms wait time to ensure iframe src is set
722
+ });
723
+ test('should not set isLazyLoadingForEmbedEnabled when fullHeight is true but lazyLoadingForFullHeight is false', async () => {
724
+ const appEmbed = new AppEmbed(getRootEl(), {
725
+ ...defaultViewConfig,
726
+ fullHeight: true,
727
+ lazyLoadingForFullHeight: false,
728
+ });
729
+ // Wait for render to complete
730
+ await appEmbed.render();
731
+ // Wait for iframe initialization and URL parameters to be set
732
+ await executeAfterWait(() => {
733
+ const iframeSrc = getIFrameSrc();
734
+ expect(iframeSrc).not.toContain('isLazyLoadingForEmbedEnabled=true');
735
+ expect(iframeSrc).toContain('isFullHeightPinboard=true');
736
+ }, 100); // 100ms wait time to ensure iframe src is set
737
+ });
738
+ test('should register RequestFullHeightLazyLoadData event handler when fullHeight is enabled', async () => {
739
+ const onSpy = jest.spyOn(AppEmbed.prototype, 'on');
740
+ const appEmbed = new AppEmbed(getRootEl(), {
741
+ ...defaultViewConfig,
742
+ fullHeight: true,
743
+ });
744
+ await appEmbed.render();
745
+ expect(onSpy).toHaveBeenCalledWith(EmbedEvent.RequestVisibleEmbedCoordinates, expect.any(Function));
746
+ onSpy.mockRestore();
747
+ });
748
+ test('should send correct visible data when RequestFullHeightLazyLoadData is triggered', async () => {
749
+ const appEmbed = new AppEmbed(getRootEl(), {
750
+ ...defaultViewConfig,
751
+ fullHeight: true,
752
+ lazyLoadingForFullHeight: true,
753
+ });
754
+ const mockTrigger = jest.spyOn(appEmbed, 'trigger');
755
+ await appEmbed.render();
756
+ // Trigger the lazy load data calculation
757
+ appEmbed.sendFullHeightLazyLoadData();
758
+ expect(mockTrigger).toHaveBeenCalledWith(HostEvent.VisibleEmbedCoordinates, {
759
+ top: 0,
760
+ height: 500,
761
+ left: 0,
762
+ width: 650,
763
+ });
764
+ });
765
+ test('should calculate correct visible data for partially visible full height element', async () => {
766
+ // Mock iframe partially clipped from top and left
767
+ mockIFrame.getBoundingClientRect = jest.fn().mockReturnValue({
768
+ top: -50,
769
+ left: -30,
770
+ bottom: 700,
771
+ right: 1024,
772
+ width: 1054,
773
+ height: 750,
774
+ });
775
+ const appEmbed = new AppEmbed(getRootEl(), {
776
+ ...defaultViewConfig,
777
+ fullHeight: true,
778
+ lazyLoadingForFullHeight: true,
779
+ });
780
+ const mockTrigger = jest.spyOn(appEmbed, 'trigger');
781
+ await appEmbed.render();
782
+ // Trigger the lazy load data calculation
783
+ appEmbed.sendFullHeightLazyLoadData();
784
+ expect(mockTrigger).toHaveBeenCalledWith(HostEvent.VisibleEmbedCoordinates, {
785
+ top: 50,
786
+ height: 700,
787
+ left: 30,
788
+ width: 1024, // visible width (from 0 to 1024)
789
+ });
790
+ });
791
+ test('should add window event listeners for resize and scroll when fullHeight and lazyLoadingForFullHeight are enabled', async () => {
792
+ const addEventListenerSpy = jest.spyOn(window, 'addEventListener');
793
+ const appEmbed = new AppEmbed(getRootEl(), {
794
+ ...defaultViewConfig,
795
+ fullHeight: true,
796
+ lazyLoadingForFullHeight: true,
797
+ });
798
+ await appEmbed.render();
799
+ expect(addEventListenerSpy).toHaveBeenCalledWith('resize', expect.any(Function));
800
+ expect(addEventListenerSpy).toHaveBeenCalledWith('scroll', expect.any(Function));
801
+ addEventListenerSpy.mockRestore();
802
+ });
803
+ test('should remove window event listeners on destroy when fullHeight and lazyLoadingForFullHeight are enabled', async () => {
804
+ const removeEventListenerSpy = jest.spyOn(window, 'removeEventListener');
805
+ const appEmbed = new AppEmbed(getRootEl(), {
806
+ ...defaultViewConfig,
807
+ fullHeight: true,
808
+ lazyLoadingForFullHeight: true,
809
+ });
810
+ await appEmbed.render();
811
+ appEmbed.destroy();
812
+ expect(removeEventListenerSpy).toHaveBeenCalledWith('resize', expect.any(Function));
813
+ expect(removeEventListenerSpy).toHaveBeenCalledWith('scroll', expect.any(Function));
814
+ removeEventListenerSpy.mockRestore();
815
+ });
816
+ test('should handle RequestVisibleEmbedCoordinates event and respond with correct data', async () => {
817
+ // Mock the iframe element
818
+ mockIFrame.getBoundingClientRect = jest.fn().mockReturnValue({
819
+ top: 100,
820
+ left: 150,
821
+ bottom: 600,
822
+ right: 800,
823
+ width: 650,
824
+ height: 500,
825
+ });
826
+ Object.defineProperty(mockIFrame, 'scrollHeight', { value: 500 });
827
+ const appEmbed = new AppEmbed(getRootEl(), {
828
+ ...defaultViewConfig,
829
+ fullHeight: true,
830
+ lazyLoadingForFullHeight: true,
831
+ });
832
+ // Set the iframe before render
833
+ appEmbed.iFrame = mockIFrame;
834
+ await appEmbed.render();
835
+ // Create a mock responder function
836
+ const mockResponder = jest.fn();
837
+ // Trigger the handler directly
838
+ appEmbed.requestVisibleEmbedCoordinatesHandler({}, mockResponder);
839
+ // Verify the responder was called with the correct data
840
+ expect(mockResponder).toHaveBeenCalledWith({
841
+ type: EmbedEvent.RequestVisibleEmbedCoordinates,
842
+ data: {
843
+ top: 0,
844
+ height: 500,
845
+ left: 0,
846
+ width: 650,
847
+ },
848
+ });
849
+ });
850
+ });
851
+ describe('IFrame height management', () => {
852
+ let mockIFrame;
853
+ beforeEach(() => {
854
+ mockIFrame = document.createElement('iframe');
855
+ mockIFrame.getBoundingClientRect = jest.fn().mockReturnValue({
856
+ top: 100,
857
+ left: 150,
858
+ bottom: 600,
859
+ right: 800,
860
+ width: 650,
861
+ height: 500,
862
+ });
863
+ Object.defineProperty(mockIFrame, 'scrollHeight', { value: 500 });
864
+ });
865
+ test('should not call setIFrameHeight if currentPath starts with "/embed/viz/"', () => {
866
+ const appEmbed = new AppEmbed(getRootEl(), {
867
+ ...defaultViewConfig,
868
+ fullHeight: true,
869
+ });
870
+ const spySetIFrameHeight = jest.spyOn(appEmbed, 'setIFrameHeight');
871
+ appEmbed.render();
872
+ appEmbed.setIframeHeightForNonEmbedLiveboard({
873
+ data: { currentPath: '/embed/viz/' },
874
+ type: 'Route',
875
+ });
876
+ expect(spySetIFrameHeight).not.toHaveBeenCalled();
877
+ });
878
+ test('should not call setIFrameHeight if currentPath starts with "/embed/insights/viz/"', () => {
879
+ const appEmbed = new AppEmbed(getRootEl(), {
880
+ ...defaultViewConfig,
881
+ fullHeight: true,
882
+ });
883
+ const spySetIFrameHeight = jest.spyOn(appEmbed, 'setIFrameHeight');
884
+ appEmbed.render();
885
+ appEmbed.setIframeHeightForNonEmbedLiveboard({
886
+ data: { currentPath: '/embed/insights/viz/' },
887
+ type: 'Route',
888
+ });
889
+ expect(spySetIFrameHeight).not.toHaveBeenCalled();
890
+ });
891
+ test('should call setIFrameHeight if currentPath starts with "/some/other/path/"', () => {
892
+ const appEmbed = new AppEmbed(getRootEl(), {
893
+ ...defaultViewConfig,
894
+ fullHeight: true,
895
+ });
896
+ const spySetIFrameHeight = jest
897
+ .spyOn(appEmbed, 'setIFrameHeight')
898
+ .mockImplementation(jest.fn());
899
+ appEmbed.render();
900
+ appEmbed.setIframeHeightForNonEmbedLiveboard({
901
+ data: { currentPath: '/some/other/path/' },
902
+ type: 'Route',
903
+ });
904
+ expect(spySetIFrameHeight).toHaveBeenCalled();
905
+ });
906
+ test('should update iframe height correctly', async () => {
907
+ const appEmbed = new AppEmbed(getRootEl(), {
908
+ ...defaultViewConfig,
909
+ fullHeight: true,
910
+ });
911
+ // Set up the mock iframe
912
+ appEmbed.iFrame = mockIFrame;
913
+ document.body.appendChild(mockIFrame);
914
+ await appEmbed.render();
915
+ const mockEvent = {
916
+ data: 600,
917
+ type: EmbedEvent.EmbedHeight,
918
+ };
919
+ appEmbed.updateIFrameHeight(mockEvent);
920
+ // Check if the iframe style was updated
921
+ expect(mockIFrame.style.height).toBe('600px');
922
+ });
923
+ test('should handle updateIFrameHeight with default height', async () => {
924
+ const appEmbed = new AppEmbed(getRootEl(), {
925
+ ...defaultViewConfig,
926
+ fullHeight: true,
927
+ });
928
+ // Set up the mock iframe
929
+ appEmbed.iFrame = mockIFrame;
930
+ document.body.appendChild(mockIFrame);
931
+ await appEmbed.render();
932
+ const mockEvent = {
933
+ data: 0,
934
+ type: EmbedEvent.EmbedHeight,
935
+ };
936
+ appEmbed.updateIFrameHeight(mockEvent);
937
+ // Should use the scrollHeight
938
+ expect(mockIFrame.style.height).toBe('500px');
939
+ });
940
+ });
589
941
  });
590
942
  //# sourceMappingURL=app.spec.js.map