@thoughtspot/visual-embed-sdk 1.40.0 → 1.40.1-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 (111) hide show
  1. package/cjs/package.json +1 -1
  2. package/cjs/src/embed/bodyless-conversation.d.ts +1 -0
  3. package/cjs/src/embed/bodyless-conversation.d.ts.map +1 -1
  4. package/cjs/src/embed/bodyless-conversation.js +7 -3
  5. package/cjs/src/embed/bodyless-conversation.js.map +1 -1
  6. package/cjs/src/embed/conversation.d.ts +1 -0
  7. package/cjs/src/embed/conversation.d.ts.map +1 -1
  8. package/cjs/src/embed/conversation.js +7 -2
  9. package/cjs/src/embed/conversation.js.map +1 -1
  10. package/cjs/src/embed/liveboard.d.ts +3 -1
  11. package/cjs/src/embed/liveboard.d.ts.map +1 -1
  12. package/cjs/src/embed/liveboard.js +35 -14
  13. package/cjs/src/embed/liveboard.js.map +1 -1
  14. package/cjs/src/embed/liveboard.spec.js +29 -4
  15. package/cjs/src/embed/liveboard.spec.js.map +1 -1
  16. package/cjs/src/embed/sage.d.ts +1 -0
  17. package/cjs/src/embed/sage.d.ts.map +1 -1
  18. package/cjs/src/embed/sage.js +10 -6
  19. package/cjs/src/embed/sage.js.map +1 -1
  20. package/cjs/src/embed/search-bar.d.ts +1 -0
  21. package/cjs/src/embed/search-bar.d.ts.map +1 -1
  22. package/cjs/src/embed/search-bar.js +11 -7
  23. package/cjs/src/embed/search-bar.js.map +1 -1
  24. package/cjs/src/embed/search.d.ts +1 -0
  25. package/cjs/src/embed/search.d.ts.map +1 -1
  26. package/cjs/src/embed/search.js +7 -8
  27. package/cjs/src/embed/search.js.map +1 -1
  28. package/cjs/src/embed/ts-embed.d.ts +9 -0
  29. package/cjs/src/embed/ts-embed.d.ts.map +1 -1
  30. package/cjs/src/embed/ts-embed.js +65 -10
  31. package/cjs/src/embed/ts-embed.js.map +1 -1
  32. package/cjs/src/types.d.ts +33 -64
  33. package/cjs/src/types.d.ts.map +1 -1
  34. package/cjs/src/types.js +33 -64
  35. package/cjs/src/types.js.map +1 -1
  36. package/dist/{index-CAEHQGLc.js → index-CmEQfuE3.js} +1 -1
  37. package/dist/index-D1pyb7RG.js +7371 -0
  38. package/dist/index-DeFzsyFF.js +7371 -0
  39. package/dist/index-Dpf0rd6w.js +7371 -0
  40. package/dist/index-UuEbsISo.js +7447 -0
  41. package/dist/index-e3Uw3YFO.js +7371 -0
  42. package/dist/index-k7pkZMhx.js +7371 -0
  43. package/dist/src/embed/bodyless-conversation.d.ts +1 -0
  44. package/dist/src/embed/bodyless-conversation.d.ts.map +1 -1
  45. package/dist/src/embed/conversation.d.ts +1 -0
  46. package/dist/src/embed/conversation.d.ts.map +1 -1
  47. package/dist/src/embed/liveboard.d.ts +3 -1
  48. package/dist/src/embed/liveboard.d.ts.map +1 -1
  49. package/dist/src/embed/sage.d.ts +1 -0
  50. package/dist/src/embed/sage.d.ts.map +1 -1
  51. package/dist/src/embed/search-bar.d.ts +1 -0
  52. package/dist/src/embed/search-bar.d.ts.map +1 -1
  53. package/dist/src/embed/search.d.ts +1 -0
  54. package/dist/src/embed/search.d.ts.map +1 -1
  55. package/dist/src/embed/ts-embed.d.ts +9 -0
  56. package/dist/src/embed/ts-embed.d.ts.map +1 -1
  57. package/dist/src/types.d.ts +33 -64
  58. package/dist/src/types.d.ts.map +1 -1
  59. package/dist/tsembed-react.es.js +178 -117
  60. package/dist/tsembed-react.js +177 -116
  61. package/dist/tsembed.es.js +178 -117
  62. package/dist/tsembed.js +177 -116
  63. package/dist/visual-embed-sdk-react-full.d.ts +47 -65
  64. package/dist/visual-embed-sdk-react.d.ts +47 -65
  65. package/dist/visual-embed-sdk.d.ts +47 -65
  66. package/lib/package.json +1 -1
  67. package/lib/src/embed/bodyless-conversation.d.ts +1 -0
  68. package/lib/src/embed/bodyless-conversation.d.ts.map +1 -1
  69. package/lib/src/embed/bodyless-conversation.js +7 -3
  70. package/lib/src/embed/bodyless-conversation.js.map +1 -1
  71. package/lib/src/embed/conversation.d.ts +1 -0
  72. package/lib/src/embed/conversation.d.ts.map +1 -1
  73. package/lib/src/embed/conversation.js +7 -2
  74. package/lib/src/embed/conversation.js.map +1 -1
  75. package/lib/src/embed/liveboard.d.ts +3 -1
  76. package/lib/src/embed/liveboard.d.ts.map +1 -1
  77. package/lib/src/embed/liveboard.js +35 -14
  78. package/lib/src/embed/liveboard.js.map +1 -1
  79. package/lib/src/embed/liveboard.spec.js +29 -4
  80. package/lib/src/embed/liveboard.spec.js.map +1 -1
  81. package/lib/src/embed/sage.d.ts +1 -0
  82. package/lib/src/embed/sage.d.ts.map +1 -1
  83. package/lib/src/embed/sage.js +10 -6
  84. package/lib/src/embed/sage.js.map +1 -1
  85. package/lib/src/embed/search-bar.d.ts +1 -0
  86. package/lib/src/embed/search-bar.d.ts.map +1 -1
  87. package/lib/src/embed/search-bar.js +11 -7
  88. package/lib/src/embed/search-bar.js.map +1 -1
  89. package/lib/src/embed/search.d.ts +1 -0
  90. package/lib/src/embed/search.d.ts.map +1 -1
  91. package/lib/src/embed/search.js +7 -8
  92. package/lib/src/embed/search.js.map +1 -1
  93. package/lib/src/embed/ts-embed.d.ts +9 -0
  94. package/lib/src/embed/ts-embed.d.ts.map +1 -1
  95. package/lib/src/embed/ts-embed.js +65 -10
  96. package/lib/src/embed/ts-embed.js.map +1 -1
  97. package/lib/src/types.d.ts +33 -64
  98. package/lib/src/types.d.ts.map +1 -1
  99. package/lib/src/types.js +33 -64
  100. package/lib/src/types.js.map +1 -1
  101. package/lib/src/visual-embed-sdk.d.ts +47 -65
  102. package/package.json +1 -1
  103. package/src/embed/bodyless-conversation.ts +9 -3
  104. package/src/embed/conversation.ts +13 -2
  105. package/src/embed/liveboard.spec.ts +32 -4
  106. package/src/embed/liveboard.ts +41 -14
  107. package/src/embed/sage.ts +11 -6
  108. package/src/embed/search-bar.tsx +14 -7
  109. package/src/embed/search.ts +18 -7
  110. package/src/embed/ts-embed.ts +90 -24
  111. package/src/types.ts +34 -64
package/src/embed/sage.ts CHANGED
@@ -153,12 +153,7 @@ export class SageEmbed extends V1Embed {
153
153
  super(domSelector, viewConfig);
154
154
  }
155
155
 
156
- /**
157
- * Constructs a map of parameters to be passed on to the
158
- * embedded Eureka or Sage search page.
159
- * @returns {string} query string
160
- */
161
- protected getEmbedParams(): string {
156
+ protected getEmbedParamsObject() {
162
157
  const {
163
158
  disableWorksheetChange,
164
159
  hideWorksheetSelector,
@@ -184,6 +179,16 @@ export class SageEmbed extends V1Embed {
184
179
  params[Param.IsProductTour] = !!isProductTour;
185
180
  params[Param.HideSageAnswerHeader] = !!hideSageAnswerHeader;
186
181
 
182
+ return params;
183
+ }
184
+
185
+ /**
186
+ * Constructs a map of parameters to be passed on to the
187
+ * embedded Eureka or Sage search page.
188
+ * @returns {string} query string
189
+ */
190
+ protected getEmbedParams(): string {
191
+ const params = this.getEmbedParamsObject();
187
192
  return getQueryParamString(params, true);
188
193
  }
189
194
 
@@ -118,12 +118,7 @@ export class SearchBarEmbed extends TsEmbed {
118
118
  this.viewConfig = viewConfig;
119
119
  }
120
120
 
121
- /**
122
- * Construct the URL of the embedded ThoughtSpot search to be
123
- * loaded in the iframe
124
- * @param dataSources A list of data source GUIDs
125
- */
126
- private getIFrameSrc() {
121
+ protected getEmbedParamsObject() {
127
122
  const {
128
123
  searchOptions,
129
124
  dataSource,
@@ -131,7 +126,6 @@ export class SearchBarEmbed extends TsEmbed {
131
126
  useLastSelectedSources = false,
132
127
  excludeSearchTokenStringFromURL,
133
128
  } = this.viewConfig;
134
- const path = 'search-bar-embed';
135
129
  const queryParams = this.getBaseQueryParams();
136
130
 
137
131
  queryParams[Param.HideActions] = [...(queryParams[Param.HideActions] ?? [])];
@@ -159,6 +153,19 @@ export class SearchBarEmbed extends TsEmbed {
159
153
  queryParams[Param.UseLastSelectedDataSource] = false;
160
154
  }
161
155
  queryParams[Param.searchEmbed] = true;
156
+
157
+ return queryParams;
158
+ }
159
+
160
+ /**
161
+ * Construct the URL of the embedded ThoughtSpot search to be
162
+ * loaded in the iframe
163
+ * @param dataSources A list of data source GUIDs
164
+ */
165
+ private getIFrameSrc() {
166
+ const queryParams = this.getEmbedParamsObject();
167
+ const path = 'search-bar-embed';
168
+
162
169
  let query = '';
163
170
  const queryParamsString = getQueryParamString(queryParams, true);
164
171
  if (queryParamsString) {
@@ -331,7 +331,7 @@ export const HiddenActionItemByDefaultForSearchEmbed = [
331
331
  ];
332
332
 
333
333
  export interface SearchAppInitData extends DefaultAppInitData {
334
- searchOptions?: SearchOptions;
334
+ searchOptions?: SearchOptions;
335
335
  }
336
336
 
337
337
  /**
@@ -381,7 +381,7 @@ export class SearchEmbed extends TsEmbed {
381
381
  return { ...defaultAppInitData, ...this.getSearchInitData() };
382
382
  }
383
383
 
384
- protected getEmbedParams(): string {
384
+ protected getEmbedParamsObject() {
385
385
  const {
386
386
  hideResults,
387
387
  enableSearchAssist,
@@ -398,7 +398,7 @@ export class SearchEmbed extends TsEmbed {
398
398
  collapseSearchBarInitially = false,
399
399
  enableCustomColumnGroups = false,
400
400
  isOnBeforeGetVizDataInterceptEnabled = false,
401
- /* eslint-disable-next-line max-len */
401
+
402
402
  dataPanelCustomGroupsAccordionInitialState = DataPanelCustomColumnGroupsAccordionState.EXPAND_ALL,
403
403
  focusSearchBarOnRender = true,
404
404
  excludeRuntimeParametersfromURL,
@@ -443,7 +443,7 @@ export class SearchEmbed extends TsEmbed {
443
443
  }
444
444
 
445
445
  if (isOnBeforeGetVizDataInterceptEnabled) {
446
- /* eslint-disable-next-line max-len */
446
+
447
447
  queryParams[Param.IsOnBeforeGetVizDataInterceptEnabled] = isOnBeforeGetVizDataInterceptEnabled;
448
448
  }
449
449
 
@@ -460,7 +460,7 @@ export class SearchEmbed extends TsEmbed {
460
460
  }
461
461
 
462
462
  queryParams[Param.searchEmbed] = true;
463
- /* eslint-disable-next-line max-len */
463
+
464
464
  queryParams[Param.CollapseSearchBarInitially] = collapseSearchBarInitially || collapseSearchBar;
465
465
  queryParams[Param.EnableCustomColumnGroups] = enableCustomColumnGroups;
466
466
  if (dataPanelCustomGroupsAccordionInitialState
@@ -468,12 +468,23 @@ export class SearchEmbed extends TsEmbed {
468
468
  || dataPanelCustomGroupsAccordionInitialState
469
469
  === DataPanelCustomColumnGroupsAccordionState.EXPAND_FIRST
470
470
  ) {
471
- /* eslint-disable-next-line max-len */
471
+
472
472
  queryParams[Param.DataPanelCustomGroupsAccordionInitialState] = dataPanelCustomGroupsAccordionInitialState;
473
473
  } else {
474
- /* eslint-disable-next-line max-len */
474
+
475
475
  queryParams[Param.DataPanelCustomGroupsAccordionInitialState] = DataPanelCustomColumnGroupsAccordionState.EXPAND_ALL;
476
476
  }
477
+ return queryParams;
478
+ }
479
+
480
+ protected getEmbedParams() {
481
+ const {
482
+ runtimeParameters,
483
+ runtimeFilters,
484
+ excludeRuntimeParametersfromURL,
485
+ excludeRuntimeFiltersfromURL,
486
+ } = this.viewConfig;
487
+ const queryParams = this.getEmbedParamsObject();
477
488
  let query = '';
478
489
  const queryParamsString = getQueryParamString(queryParams, true);
479
490
  if (queryParamsString) {
@@ -185,7 +185,10 @@ export class TsEmbed {
185
185
  */
186
186
  private fullscreenChangeHandler: (() => void) | null = null;
187
187
 
188
+ public id: string;
189
+
188
190
  constructor(domSelector: DOMSelector, viewConfig?: ViewConfig) {
191
+ this.id = Date.now().toString();
189
192
  this.el = getDOMNode(domSelector);
190
193
  this.eventHandlerMap = new Map();
191
194
  this.isError = false;
@@ -200,9 +203,10 @@ export class TsEmbed {
200
203
  });
201
204
  this.hostEventClient = new HostEventClient(this.iFrame);
202
205
 
206
+ const embedConfig = getEmbedConfig();
207
+ this.embedConfig = embedConfig;
203
208
  this.isReadyForRenderPromise = getInitPromise().then(async () => {
204
- const embedConfig = getEmbedConfig();
205
- this.embedConfig = embedConfig;
209
+
206
210
  if (!embedConfig.authTriggerContainer && !embedConfig.useEventForSAMLPopup) {
207
211
  this.embedConfig.authTriggerContainer = domSelector;
208
212
  }
@@ -237,7 +241,7 @@ export class TsEmbed {
237
241
  * @param event The window message event
238
242
  */
239
243
  private getEventType(event: MessageEvent) {
240
- // eslint-disable-next-line no-underscore-dangle
244
+
241
245
  return event.data?.type || event.data?.__type;
242
246
  }
243
247
 
@@ -281,11 +285,11 @@ export class TsEmbed {
281
285
  */
282
286
  private isFullAppEmbedWithVisiblePrimaryNavbar(): boolean {
283
287
  const appViewConfig = this.viewConfig as any;
284
-
288
+
285
289
  // Check if this is a FullAppEmbed (AppEmbed)
286
290
  // showPrimaryNavbar defaults to true if not explicitly set to false
287
291
  return (
288
- appViewConfig.embedComponentType === 'AppEmbed'
292
+ appViewConfig.embedComponentType === 'AppEmbed'
289
293
  && appViewConfig.showPrimaryNavbar === true
290
294
  );
291
295
  }
@@ -310,6 +314,8 @@ export class TsEmbed {
310
314
 
311
315
  private subscribedListeners: Record<string, any> = {};
312
316
 
317
+ public isEmbedContainerLoaded = false;
318
+
313
319
  /**
314
320
  * Adds a global event listener to window for "message" events.
315
321
  * ThoughtSpot detects if a particular event is targeted to this
@@ -431,7 +437,8 @@ export class TsEmbed {
431
437
  private updateAuthToken = async (_: any, responder: any) => {
432
438
  const { authType } = this.embedConfig;
433
439
  let { autoLogin } = this.embedConfig;
434
- // Default autoLogin: true for cookieless if undefined/null, otherwise false
440
+ // Default autoLogin: true for cookieless if undefined/null, otherwise
441
+ // false
435
442
  autoLogin = autoLogin ?? (authType === AuthType.TrustedAuthTokenCookieless);
436
443
  if (autoLogin && authType === AuthType.TrustedAuthTokenCookieless) {
437
444
  try {
@@ -474,11 +481,55 @@ export class TsEmbed {
474
481
  notifyAuthFailure(AuthFailureType.IDLE_SESSION_TIMEOUT);
475
482
  };
476
483
 
484
+ private pendingEvents: Array<{ eventType: HostEvent, data: TriggerPayload<any, HostEvent>, onEventTriggered?: () => void }> = [];
485
+
486
+ protected getPreRenderObj<T extends TsEmbed>(): T {
487
+ const embedObj = (this.insertedDomEl as any)?.[this.embedNodeKey] as T;
488
+ if (embedObj === (this as any)) {
489
+ logger.info('embedObj is same as this');
490
+ }
491
+ return embedObj;
492
+ }
493
+
494
+ private checkEmbedContainerLoaded() {
495
+ if (this.isEmbedContainerLoaded) return true;
496
+
497
+ const preRenderObj = this.getPreRenderObj<TsEmbed>();
498
+ if (preRenderObj && preRenderObj.isEmbedContainerLoaded) {
499
+ this.isEmbedContainerLoaded = true;
500
+ }
501
+
502
+ return this.isEmbedContainerLoaded;
503
+ }
504
+
505
+ private executePendingEvents() {
506
+ logger.debug('executePendingEvents', this.pendingEvents);
507
+ setTimeout(() => {
508
+ this.pendingEvents.forEach((event) => {
509
+ this.trigger(event.eventType, event.data);
510
+ event.onEventTriggered?.();
511
+ });
512
+ this.pendingEvents = [];
513
+ }, 1000);
514
+ }
515
+ protected triggerAfterLoad(eventType: HostEvent, data: TriggerPayload<any, HostEvent>, onEventTriggered?: () => void) {
516
+ if (this.checkEmbedContainerLoaded()) {
517
+ this.trigger(eventType, data);
518
+ onEventTriggered?.();
519
+ } else {
520
+ this.pendingEvents.push({ eventType, data, onEventTriggered });
521
+ }
522
+ }
523
+
477
524
  /**
478
525
  * Register APP_INIT event and sendback init payload
479
526
  */
480
527
  private registerAppInit = () => {
481
528
  this.on(EmbedEvent.APP_INIT, this.appInitCb, { start: false }, true);
529
+ this.on(EmbedEvent.AuthInit, () => {
530
+ this.isEmbedContainerLoaded = true;
531
+ this.executePendingEvents();
532
+ }, { start: false }, true);
482
533
  this.on(EmbedEvent.AuthExpire, this.updateAuthToken, { start: false }, true);
483
534
  this.on(EmbedEvent.IdleSessionTimeout, this.idleSessionTimeout, { start: false }, true);
484
535
  };
@@ -501,6 +552,12 @@ export class TsEmbed {
501
552
  return `${basePath}#`;
502
553
  }
503
554
 
555
+ protected getUpdateEmbedParamsObject() {
556
+ let queryParams = this.getEmbedParamsObject();
557
+ queryParams = { ...this.viewConfig, ...queryParams };
558
+ return queryParams;
559
+ }
560
+
504
561
  /**
505
562
  * Common query params set for all the embed modes.
506
563
  * @param queryParams
@@ -683,10 +740,15 @@ export class TsEmbed {
683
740
  }
684
741
 
685
742
  protected getEmbedParams() {
686
- const queryParams = this.getBaseQueryParams();
743
+ const queryParams = this.getEmbedParamsObject();
687
744
  return getQueryParamString(queryParams);
688
745
  }
689
746
 
747
+ protected getEmbedParamsObject() {
748
+ const params = this.getBaseQueryParams();
749
+ return params;
750
+ }
751
+
690
752
  protected getRootIframeSrc() {
691
753
  const query = this.getEmbedParams();
692
754
  return this.getEmbedBasePath(query);
@@ -798,8 +860,9 @@ export class TsEmbed {
798
860
  }
799
861
  });
800
862
  }
801
-
802
- // Setup fullscreen change handler after iframe is loaded and ready
863
+
864
+ // Setup fullscreen change handler after iframe is
865
+ // loaded and ready
803
866
  this.setupFullscreenChangeHandler();
804
867
  });
805
868
  this.iFrame.addEventListener('error', () => {
@@ -926,7 +989,7 @@ export class TsEmbed {
926
989
  const div = document.createElement('div');
927
990
  div.innerHTML = child;
928
991
  div.id = TS_EMBED_ID;
929
- // eslint-disable-next-line no-param-reassign
992
+
930
993
  child = div;
931
994
  }
932
995
  if (this.el.nextElementSibling?.id === TS_EMBED_ID) {
@@ -1070,11 +1133,11 @@ export class TsEmbed {
1070
1133
  if (this.isRendered) {
1071
1134
  logger.warn('Please register event handlers before calling render');
1072
1135
  }
1073
-
1136
+
1074
1137
  const callbacks = this.eventHandlerMap.get(messageType) || [];
1075
1138
  callbacks.push({ options, callback });
1076
1139
  this.eventHandlerMap.set(messageType, callbacks);
1077
-
1140
+
1078
1141
  return this;
1079
1142
  }
1080
1143
 
@@ -1174,7 +1237,7 @@ export class TsEmbed {
1174
1237
  }
1175
1238
  await this.isReadyForRenderPromise;
1176
1239
  this.isRendered = true;
1177
-
1240
+
1178
1241
  return this;
1179
1242
  }
1180
1243
 
@@ -1288,11 +1351,11 @@ export class TsEmbed {
1288
1351
  ) {
1289
1352
  logger.warn(
1290
1353
  `${viewConfig.embedComponentType || 'Component'} was pre-rendered with `
1291
- + `"${key}" as "${JSON.stringify(preRenderedObject.viewConfig[key])}" `
1292
- + `but a different value "${JSON.stringify(viewConfig[key])}" `
1293
- + 'was passed to the Embed component. '
1294
- + 'The new value provided is ignored, the value provided during '
1295
- + 'preRender is used.',
1354
+ + `"${key}" as "${JSON.stringify(preRenderedObject.viewConfig[key])}" `
1355
+ + `but a different value "${JSON.stringify(viewConfig[key])}" `
1356
+ + 'was passed to the Embed component. '
1357
+ + 'The new value provided is ignored, the value provided during '
1358
+ + 'preRender is used.',
1296
1359
  );
1297
1360
  }
1298
1361
  });
@@ -1318,8 +1381,12 @@ export class TsEmbed {
1318
1381
  return this.preRender(true);
1319
1382
  }
1320
1383
  this.validatePreRenderViewConfig(this.viewConfig);
1384
+ logger.debug('triggering UpdateEmbedParams', this.viewConfig);
1385
+ this.triggerAfterLoad(HostEvent.UpdateEmbedParams, this.getUpdateEmbedParamsObject());
1321
1386
  }
1322
1387
 
1388
+ this.beforePrerenderVisible();
1389
+
1323
1390
  if (this.el) {
1324
1391
  this.syncPreRenderStyle();
1325
1392
  if (!this.viewConfig.doNotTrackPreRenderSize) {
@@ -1337,12 +1404,10 @@ export class TsEmbed {
1337
1404
  }
1338
1405
  }
1339
1406
 
1340
- this.beforePrerenderVisible();
1341
-
1342
1407
  removeStyleProperties(this.preRenderWrapper, ['z-index', 'opacity', 'pointer-events']);
1343
1408
 
1344
1409
  this.subscribeToEvents();
1345
-
1410
+
1346
1411
  // Setup fullscreen change handler for prerendered components
1347
1412
  if (this.iFrame) {
1348
1413
  this.setupFullscreenChangeHandler();
@@ -1431,7 +1496,7 @@ export class TsEmbed {
1431
1496
  private setupFullscreenChangeHandler() {
1432
1497
  const embedConfig = getEmbedConfig();
1433
1498
  const disableFullscreenPresentation = embedConfig?.disableFullscreenPresentation ?? true;
1434
-
1499
+
1435
1500
  if (disableFullscreenPresentation) {
1436
1501
  return;
1437
1502
  }
@@ -1444,7 +1509,8 @@ export class TsEmbed {
1444
1509
  const isFullscreen = !!document.fullscreenElement;
1445
1510
  if (!isFullscreen) {
1446
1511
  logger.info('Exited fullscreen mode - triggering ExitPresentMode');
1447
- // Only trigger if iframe is available and contentWindow is accessible
1512
+ // Only trigger if iframe is available and contentWindow is
1513
+ // accessible
1448
1514
  if (this.iFrame && this.iFrame.contentWindow) {
1449
1515
  this.trigger(HostEvent.ExitPresentMode);
1450
1516
  } else {
@@ -1540,6 +1606,6 @@ export class V1Embed extends TsEmbed {
1540
1606
  * Only for testing purposes.
1541
1607
  * @hidden
1542
1608
  */
1543
- // eslint-disable-next-line camelcase
1609
+
1544
1610
  public test__executeCallbacks = this.executeCallbacks;
1545
1611
  }