@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.
- package/cjs/package.json +1 -1
- package/cjs/src/embed/bodyless-conversation.d.ts +1 -0
- package/cjs/src/embed/bodyless-conversation.d.ts.map +1 -1
- package/cjs/src/embed/bodyless-conversation.js +7 -3
- package/cjs/src/embed/bodyless-conversation.js.map +1 -1
- package/cjs/src/embed/conversation.d.ts +1 -0
- package/cjs/src/embed/conversation.d.ts.map +1 -1
- package/cjs/src/embed/conversation.js +7 -2
- package/cjs/src/embed/conversation.js.map +1 -1
- package/cjs/src/embed/liveboard.d.ts +3 -1
- package/cjs/src/embed/liveboard.d.ts.map +1 -1
- package/cjs/src/embed/liveboard.js +35 -14
- package/cjs/src/embed/liveboard.js.map +1 -1
- package/cjs/src/embed/liveboard.spec.js +29 -4
- package/cjs/src/embed/liveboard.spec.js.map +1 -1
- package/cjs/src/embed/sage.d.ts +1 -0
- package/cjs/src/embed/sage.d.ts.map +1 -1
- package/cjs/src/embed/sage.js +10 -6
- package/cjs/src/embed/sage.js.map +1 -1
- package/cjs/src/embed/search-bar.d.ts +1 -0
- package/cjs/src/embed/search-bar.d.ts.map +1 -1
- package/cjs/src/embed/search-bar.js +11 -7
- package/cjs/src/embed/search-bar.js.map +1 -1
- package/cjs/src/embed/search.d.ts +1 -0
- package/cjs/src/embed/search.d.ts.map +1 -1
- package/cjs/src/embed/search.js +7 -8
- package/cjs/src/embed/search.js.map +1 -1
- package/cjs/src/embed/ts-embed.d.ts +9 -0
- package/cjs/src/embed/ts-embed.d.ts.map +1 -1
- package/cjs/src/embed/ts-embed.js +65 -10
- package/cjs/src/embed/ts-embed.js.map +1 -1
- package/cjs/src/types.d.ts +33 -64
- package/cjs/src/types.d.ts.map +1 -1
- package/cjs/src/types.js +33 -64
- package/cjs/src/types.js.map +1 -1
- package/dist/{index-CAEHQGLc.js → index-CmEQfuE3.js} +1 -1
- package/dist/index-D1pyb7RG.js +7371 -0
- package/dist/index-DeFzsyFF.js +7371 -0
- package/dist/index-Dpf0rd6w.js +7371 -0
- package/dist/index-UuEbsISo.js +7447 -0
- package/dist/index-e3Uw3YFO.js +7371 -0
- package/dist/index-k7pkZMhx.js +7371 -0
- package/dist/src/embed/bodyless-conversation.d.ts +1 -0
- package/dist/src/embed/bodyless-conversation.d.ts.map +1 -1
- package/dist/src/embed/conversation.d.ts +1 -0
- package/dist/src/embed/conversation.d.ts.map +1 -1
- package/dist/src/embed/liveboard.d.ts +3 -1
- package/dist/src/embed/liveboard.d.ts.map +1 -1
- package/dist/src/embed/sage.d.ts +1 -0
- package/dist/src/embed/sage.d.ts.map +1 -1
- package/dist/src/embed/search-bar.d.ts +1 -0
- package/dist/src/embed/search-bar.d.ts.map +1 -1
- package/dist/src/embed/search.d.ts +1 -0
- package/dist/src/embed/search.d.ts.map +1 -1
- package/dist/src/embed/ts-embed.d.ts +9 -0
- package/dist/src/embed/ts-embed.d.ts.map +1 -1
- package/dist/src/types.d.ts +33 -64
- package/dist/src/types.d.ts.map +1 -1
- package/dist/tsembed-react.es.js +178 -117
- package/dist/tsembed-react.js +177 -116
- package/dist/tsembed.es.js +178 -117
- package/dist/tsembed.js +177 -116
- package/dist/visual-embed-sdk-react-full.d.ts +47 -65
- package/dist/visual-embed-sdk-react.d.ts +47 -65
- package/dist/visual-embed-sdk.d.ts +47 -65
- package/lib/package.json +1 -1
- package/lib/src/embed/bodyless-conversation.d.ts +1 -0
- package/lib/src/embed/bodyless-conversation.d.ts.map +1 -1
- package/lib/src/embed/bodyless-conversation.js +7 -3
- package/lib/src/embed/bodyless-conversation.js.map +1 -1
- package/lib/src/embed/conversation.d.ts +1 -0
- package/lib/src/embed/conversation.d.ts.map +1 -1
- package/lib/src/embed/conversation.js +7 -2
- package/lib/src/embed/conversation.js.map +1 -1
- package/lib/src/embed/liveboard.d.ts +3 -1
- package/lib/src/embed/liveboard.d.ts.map +1 -1
- package/lib/src/embed/liveboard.js +35 -14
- package/lib/src/embed/liveboard.js.map +1 -1
- package/lib/src/embed/liveboard.spec.js +29 -4
- package/lib/src/embed/liveboard.spec.js.map +1 -1
- package/lib/src/embed/sage.d.ts +1 -0
- package/lib/src/embed/sage.d.ts.map +1 -1
- package/lib/src/embed/sage.js +10 -6
- package/lib/src/embed/sage.js.map +1 -1
- package/lib/src/embed/search-bar.d.ts +1 -0
- package/lib/src/embed/search-bar.d.ts.map +1 -1
- package/lib/src/embed/search-bar.js +11 -7
- package/lib/src/embed/search-bar.js.map +1 -1
- package/lib/src/embed/search.d.ts +1 -0
- package/lib/src/embed/search.d.ts.map +1 -1
- package/lib/src/embed/search.js +7 -8
- package/lib/src/embed/search.js.map +1 -1
- package/lib/src/embed/ts-embed.d.ts +9 -0
- package/lib/src/embed/ts-embed.d.ts.map +1 -1
- package/lib/src/embed/ts-embed.js +65 -10
- package/lib/src/embed/ts-embed.js.map +1 -1
- package/lib/src/types.d.ts +33 -64
- package/lib/src/types.d.ts.map +1 -1
- package/lib/src/types.js +33 -64
- package/lib/src/types.js.map +1 -1
- package/lib/src/visual-embed-sdk.d.ts +47 -65
- package/package.json +1 -1
- package/src/embed/bodyless-conversation.ts +9 -3
- package/src/embed/conversation.ts +13 -2
- package/src/embed/liveboard.spec.ts +32 -4
- package/src/embed/liveboard.ts +41 -14
- package/src/embed/sage.ts +11 -6
- package/src/embed/search-bar.tsx +14 -7
- package/src/embed/search.ts +18 -7
- package/src/embed/ts-embed.ts +90 -24
- 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
|
|
package/src/embed/search-bar.tsx
CHANGED
|
@@ -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) {
|
package/src/embed/search.ts
CHANGED
|
@@ -331,7 +331,7 @@ export const HiddenActionItemByDefaultForSearchEmbed = [
|
|
|
331
331
|
];
|
|
332
332
|
|
|
333
333
|
export interface SearchAppInitData extends DefaultAppInitData {
|
|
334
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
471
|
+
|
|
472
472
|
queryParams[Param.DataPanelCustomGroupsAccordionInitialState] = dataPanelCustomGroupsAccordionInitialState;
|
|
473
473
|
} else {
|
|
474
|
-
|
|
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) {
|
package/src/embed/ts-embed.ts
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
|
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.
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
|
|
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
|
|
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
|
-
|
|
1609
|
+
|
|
1544
1610
|
public test__executeCallbacks = this.executeCallbacks;
|
|
1545
1611
|
}
|