@thoughtspot/visual-embed-sdk 1.40.1-alpha.2 → 1.40.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.
- package/cjs/package.json +7 -6
- package/cjs/src/css-variables.d.ts +316 -0
- package/cjs/src/css-variables.d.ts.map +1 -1
- package/cjs/src/embed/app.d.ts +6 -1
- package/cjs/src/embed/app.d.ts.map +1 -1
- package/cjs/src/embed/app.js +22 -0
- package/cjs/src/embed/app.js.map +1 -1
- package/cjs/src/embed/app.spec.js +39 -2
- package/cjs/src/embed/app.spec.js.map +1 -1
- package/cjs/src/embed/bodyless-conversation.d.ts +0 -1
- package/cjs/src/embed/bodyless-conversation.d.ts.map +1 -1
- package/cjs/src/embed/bodyless-conversation.js +3 -7
- package/cjs/src/embed/bodyless-conversation.js.map +1 -1
- package/cjs/src/embed/conversation.d.ts +63 -3
- package/cjs/src/embed/conversation.d.ts.map +1 -1
- package/cjs/src/embed/conversation.js +11 -8
- package/cjs/src/embed/conversation.js.map +1 -1
- package/cjs/src/embed/conversation.spec.js +102 -0
- package/cjs/src/embed/conversation.spec.js.map +1 -1
- package/cjs/src/embed/liveboard.d.ts +11 -3
- package/cjs/src/embed/liveboard.d.ts.map +1 -1
- package/cjs/src/embed/liveboard.js +23 -33
- package/cjs/src/embed/liveboard.js.map +1 -1
- package/cjs/src/embed/liveboard.spec.js +182 -29
- package/cjs/src/embed/liveboard.spec.js.map +1 -1
- package/cjs/src/embed/sage.d.ts +0 -1
- package/cjs/src/embed/sage.d.ts.map +1 -1
- package/cjs/src/embed/sage.js +6 -10
- package/cjs/src/embed/sage.js.map +1 -1
- package/cjs/src/embed/search-bar.d.ts +0 -1
- package/cjs/src/embed/search-bar.d.ts.map +1 -1
- package/cjs/src/embed/search-bar.js +7 -11
- package/cjs/src/embed/search-bar.js.map +1 -1
- package/cjs/src/embed/search.d.ts +0 -1
- package/cjs/src/embed/search.d.ts.map +1 -1
- package/cjs/src/embed/search.js +8 -7
- package/cjs/src/embed/search.js.map +1 -1
- package/cjs/src/embed/ts-embed.d.ts +22 -9
- package/cjs/src/embed/ts-embed.d.ts.map +1 -1
- package/cjs/src/embed/ts-embed.js +75 -59
- package/cjs/src/embed/ts-embed.js.map +1 -1
- package/cjs/src/embed/ts-embed.spec.js +173 -1
- package/cjs/src/embed/ts-embed.spec.js.map +1 -1
- package/cjs/src/types.d.ts +154 -54
- package/cjs/src/types.d.ts.map +1 -1
- package/cjs/src/types.js +140 -52
- package/cjs/src/types.js.map +1 -1
- package/cjs/src/utils/liveboardService/liveboardService.d.ts +21 -6
- package/cjs/src/utils/liveboardService/liveboardService.d.ts.map +1 -1
- package/cjs/src/utils/liveboardService/liveboardService.js +21 -6
- package/cjs/src/utils/liveboardService/liveboardService.js.map +1 -1
- package/dist/{index-CmEQfuE3.js → index-P5YjBOuJ.js} +1 -1
- package/dist/src/css-variables.d.ts +316 -0
- package/dist/src/css-variables.d.ts.map +1 -1
- package/dist/src/embed/app.d.ts +6 -1
- package/dist/src/embed/app.d.ts.map +1 -1
- package/dist/src/embed/bodyless-conversation.d.ts +0 -1
- package/dist/src/embed/bodyless-conversation.d.ts.map +1 -1
- package/dist/src/embed/conversation.d.ts +63 -3
- package/dist/src/embed/conversation.d.ts.map +1 -1
- package/dist/src/embed/liveboard.d.ts +11 -3
- package/dist/src/embed/liveboard.d.ts.map +1 -1
- package/dist/src/embed/sage.d.ts +0 -1
- package/dist/src/embed/sage.d.ts.map +1 -1
- package/dist/src/embed/search-bar.d.ts +0 -1
- package/dist/src/embed/search-bar.d.ts.map +1 -1
- package/dist/src/embed/search.d.ts +0 -1
- package/dist/src/embed/search.d.ts.map +1 -1
- package/dist/src/embed/ts-embed.d.ts +22 -9
- package/dist/src/embed/ts-embed.d.ts.map +1 -1
- package/dist/src/types.d.ts +154 -54
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/utils/liveboardService/liveboardService.d.ts +21 -6
- package/dist/src/utils/liveboardService/liveboardService.d.ts.map +1 -1
- package/dist/tsembed-react.es.js +298 -190
- package/dist/tsembed-react.js +297 -189
- package/dist/tsembed.es.js +319 -196
- package/dist/tsembed.js +318 -195
- package/dist/visual-embed-sdk-react-full.d.ts +583 -76
- package/dist/visual-embed-sdk-react.d.ts +583 -76
- package/dist/visual-embed-sdk.d.ts +583 -76
- package/lib/package.json +7 -6
- package/lib/src/css-variables.d.ts +316 -0
- package/lib/src/css-variables.d.ts.map +1 -1
- package/lib/src/embed/app.d.ts +6 -1
- package/lib/src/embed/app.d.ts.map +1 -1
- package/lib/src/embed/app.js +22 -0
- package/lib/src/embed/app.js.map +1 -1
- package/lib/src/embed/app.spec.js +39 -2
- package/lib/src/embed/app.spec.js.map +1 -1
- package/lib/src/embed/bodyless-conversation.d.ts +0 -1
- package/lib/src/embed/bodyless-conversation.d.ts.map +1 -1
- package/lib/src/embed/bodyless-conversation.js +3 -7
- package/lib/src/embed/bodyless-conversation.js.map +1 -1
- package/lib/src/embed/conversation.d.ts +63 -3
- package/lib/src/embed/conversation.d.ts.map +1 -1
- package/lib/src/embed/conversation.js +12 -9
- package/lib/src/embed/conversation.js.map +1 -1
- package/lib/src/embed/conversation.spec.js +104 -2
- package/lib/src/embed/conversation.spec.js.map +1 -1
- package/lib/src/embed/liveboard.d.ts +11 -3
- package/lib/src/embed/liveboard.d.ts.map +1 -1
- package/lib/src/embed/liveboard.js +23 -33
- package/lib/src/embed/liveboard.js.map +1 -1
- package/lib/src/embed/liveboard.spec.js +182 -29
- package/lib/src/embed/liveboard.spec.js.map +1 -1
- package/lib/src/embed/sage.d.ts +0 -1
- package/lib/src/embed/sage.d.ts.map +1 -1
- package/lib/src/embed/sage.js +6 -10
- package/lib/src/embed/sage.js.map +1 -1
- package/lib/src/embed/search-bar.d.ts +0 -1
- package/lib/src/embed/search-bar.d.ts.map +1 -1
- package/lib/src/embed/search-bar.js +7 -11
- package/lib/src/embed/search-bar.js.map +1 -1
- package/lib/src/embed/search.d.ts +0 -1
- package/lib/src/embed/search.d.ts.map +1 -1
- package/lib/src/embed/search.js +8 -7
- package/lib/src/embed/search.js.map +1 -1
- package/lib/src/embed/ts-embed.d.ts +22 -9
- package/lib/src/embed/ts-embed.d.ts.map +1 -1
- package/lib/src/embed/ts-embed.js +75 -59
- package/lib/src/embed/ts-embed.js.map +1 -1
- package/lib/src/embed/ts-embed.spec.js +173 -1
- package/lib/src/embed/ts-embed.spec.js.map +1 -1
- package/lib/src/types.d.ts +154 -54
- package/lib/src/types.d.ts.map +1 -1
- package/lib/src/types.js +140 -52
- package/lib/src/types.js.map +1 -1
- package/lib/src/utils/liveboardService/liveboardService.d.ts +21 -6
- package/lib/src/utils/liveboardService/liveboardService.d.ts.map +1 -1
- package/lib/src/utils/liveboardService/liveboardService.js +21 -6
- package/lib/src/utils/liveboardService/liveboardService.js.map +1 -1
- package/lib/src/visual-embed-sdk.d.ts +584 -77
- package/package.json +7 -6
- package/src/css-variables.ts +396 -1
- package/src/embed/app.spec.ts +54 -2
- package/src/embed/app.ts +24 -0
- package/src/embed/bodyless-conversation.ts +3 -9
- package/src/embed/conversation.spec.ts +131 -5
- package/src/embed/conversation.ts +87 -23
- package/src/embed/liveboard.spec.ts +233 -32
- package/src/embed/liveboard.ts +24 -39
- package/src/embed/sage.ts +6 -11
- package/src/embed/search-bar.tsx +7 -14
- package/src/embed/search.ts +7 -18
- package/src/embed/ts-embed.spec.ts +344 -112
- package/src/embed/ts-embed.ts +82 -70
- package/src/types.ts +153 -54
- package/src/utils/liveboardService/liveboardService.ts +21 -6
- package/dist/index-D1pyb7RG.js +0 -7371
- package/dist/index-DeFzsyFF.js +0 -7371
- package/dist/index-Dpf0rd6w.js +0 -7371
- package/dist/index-UuEbsISo.js +0 -7447
- package/dist/index-e3Uw3YFO.js +0 -7371
- package/dist/index-k7pkZMhx.js +0 -7371
package/src/embed/ts-embed.ts
CHANGED
|
@@ -185,10 +185,7 @@ export class TsEmbed {
|
|
|
185
185
|
*/
|
|
186
186
|
private fullscreenChangeHandler: (() => void) | null = null;
|
|
187
187
|
|
|
188
|
-
public id: string;
|
|
189
|
-
|
|
190
188
|
constructor(domSelector: DOMSelector, viewConfig?: ViewConfig) {
|
|
191
|
-
this.id = Date.now().toString();
|
|
192
189
|
this.el = getDOMNode(domSelector);
|
|
193
190
|
this.eventHandlerMap = new Map();
|
|
194
191
|
this.isError = false;
|
|
@@ -203,10 +200,9 @@ export class TsEmbed {
|
|
|
203
200
|
});
|
|
204
201
|
this.hostEventClient = new HostEventClient(this.iFrame);
|
|
205
202
|
|
|
206
|
-
const embedConfig = getEmbedConfig();
|
|
207
|
-
this.embedConfig = embedConfig;
|
|
208
203
|
this.isReadyForRenderPromise = getInitPromise().then(async () => {
|
|
209
|
-
|
|
204
|
+
const embedConfig = getEmbedConfig();
|
|
205
|
+
this.embedConfig = embedConfig;
|
|
210
206
|
if (!embedConfig.authTriggerContainer && !embedConfig.useEventForSAMLPopup) {
|
|
211
207
|
this.embedConfig.authTriggerContainer = domSelector;
|
|
212
208
|
}
|
|
@@ -314,8 +310,6 @@ export class TsEmbed {
|
|
|
314
310
|
|
|
315
311
|
private subscribedListeners: Record<string, any> = {};
|
|
316
312
|
|
|
317
|
-
public isEmbedContainerLoaded = false;
|
|
318
|
-
|
|
319
313
|
/**
|
|
320
314
|
* Adds a global event listener to window for "message" events.
|
|
321
315
|
* ThoughtSpot detects if a particular event is targeted to this
|
|
@@ -481,57 +475,19 @@ export class TsEmbed {
|
|
|
481
475
|
notifyAuthFailure(AuthFailureType.IDLE_SESSION_TIMEOUT);
|
|
482
476
|
};
|
|
483
477
|
|
|
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
|
-
|
|
524
478
|
/**
|
|
525
479
|
* Register APP_INIT event and sendback init payload
|
|
526
480
|
*/
|
|
527
481
|
private registerAppInit = () => {
|
|
528
482
|
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);
|
|
533
483
|
this.on(EmbedEvent.AuthExpire, this.updateAuthToken, { start: false }, true);
|
|
534
484
|
this.on(EmbedEvent.IdleSessionTimeout, this.idleSessionTimeout, { start: false }, true);
|
|
485
|
+
|
|
486
|
+
const embedListenerReadyHandler = this.createEmbedContainerHandler(EmbedEvent.EmbedListenerReady);
|
|
487
|
+
this.on(EmbedEvent.EmbedListenerReady, embedListenerReadyHandler, { start: false }, true);
|
|
488
|
+
|
|
489
|
+
const authInitHandler = this.createEmbedContainerHandler(EmbedEvent.AuthInit);
|
|
490
|
+
this.on(EmbedEvent.AuthInit, authInitHandler, { start: false }, true);
|
|
535
491
|
};
|
|
536
492
|
|
|
537
493
|
/**
|
|
@@ -552,12 +508,6 @@ export class TsEmbed {
|
|
|
552
508
|
return `${basePath}#`;
|
|
553
509
|
}
|
|
554
510
|
|
|
555
|
-
protected getUpdateEmbedParamsObject() {
|
|
556
|
-
let queryParams = this.getEmbedParamsObject();
|
|
557
|
-
queryParams = { ...this.viewConfig, ...queryParams };
|
|
558
|
-
return queryParams;
|
|
559
|
-
}
|
|
560
|
-
|
|
561
511
|
/**
|
|
562
512
|
* Common query params set for all the embed modes.
|
|
563
513
|
* @param queryParams
|
|
@@ -740,15 +690,10 @@ export class TsEmbed {
|
|
|
740
690
|
}
|
|
741
691
|
|
|
742
692
|
protected getEmbedParams() {
|
|
743
|
-
const queryParams = this.
|
|
693
|
+
const queryParams = this.getBaseQueryParams();
|
|
744
694
|
return getQueryParamString(queryParams);
|
|
745
695
|
}
|
|
746
696
|
|
|
747
|
-
protected getEmbedParamsObject() {
|
|
748
|
-
const params = this.getBaseQueryParams();
|
|
749
|
-
return params;
|
|
750
|
-
}
|
|
751
|
-
|
|
752
697
|
protected getRootIframeSrc() {
|
|
753
698
|
const query = this.getEmbedParams();
|
|
754
699
|
return this.getEmbedBasePath(query);
|
|
@@ -1133,11 +1078,9 @@ export class TsEmbed {
|
|
|
1133
1078
|
if (this.isRendered) {
|
|
1134
1079
|
logger.warn('Please register event handlers before calling render');
|
|
1135
1080
|
}
|
|
1136
|
-
|
|
1137
1081
|
const callbacks = this.eventHandlerMap.get(messageType) || [];
|
|
1138
1082
|
callbacks.push({ options, callback });
|
|
1139
1083
|
this.eventHandlerMap.set(messageType, callbacks);
|
|
1140
|
-
|
|
1141
1084
|
return this;
|
|
1142
1085
|
}
|
|
1143
1086
|
|
|
@@ -1185,6 +1128,77 @@ export class TsEmbed {
|
|
|
1185
1128
|
}
|
|
1186
1129
|
}
|
|
1187
1130
|
|
|
1131
|
+
/**
|
|
1132
|
+
* @hidden
|
|
1133
|
+
* Internal state to track if the embed container is loaded.
|
|
1134
|
+
* This is used to trigger events after the embed container is loaded.
|
|
1135
|
+
*/
|
|
1136
|
+
public isEmbedContainerLoaded = false;
|
|
1137
|
+
|
|
1138
|
+
/**
|
|
1139
|
+
* @hidden
|
|
1140
|
+
* Internal state to track the callbacks to be executed after the embed container
|
|
1141
|
+
* is loaded.
|
|
1142
|
+
* This is used to trigger events after the embed container is loaded.
|
|
1143
|
+
*/
|
|
1144
|
+
private embedContainerReadyCallbacks: Array<() => void> = [];
|
|
1145
|
+
|
|
1146
|
+
protected getPreRenderObj<T extends TsEmbed>(): T {
|
|
1147
|
+
const embedObj = (this.insertedDomEl as any)?.[this.embedNodeKey] as T;
|
|
1148
|
+
if (embedObj === (this as any)) {
|
|
1149
|
+
logger.info('embedObj is same as this');
|
|
1150
|
+
}
|
|
1151
|
+
return embedObj;
|
|
1152
|
+
}
|
|
1153
|
+
|
|
1154
|
+
private checkEmbedContainerLoaded() {
|
|
1155
|
+
if (this.isEmbedContainerLoaded) return true;
|
|
1156
|
+
|
|
1157
|
+
const preRenderObj = this.getPreRenderObj<TsEmbed>();
|
|
1158
|
+
if (preRenderObj && preRenderObj.isEmbedContainerLoaded) {
|
|
1159
|
+
this.isEmbedContainerLoaded = true;
|
|
1160
|
+
}
|
|
1161
|
+
|
|
1162
|
+
return this.isEmbedContainerLoaded;
|
|
1163
|
+
}
|
|
1164
|
+
private executeEmbedContainerReadyCallbacks() {
|
|
1165
|
+
logger.debug('executePendingEvents', this.embedContainerReadyCallbacks);
|
|
1166
|
+
this.embedContainerReadyCallbacks.forEach((callback) => {
|
|
1167
|
+
callback?.();
|
|
1168
|
+
});
|
|
1169
|
+
this.embedContainerReadyCallbacks = [];
|
|
1170
|
+
}
|
|
1171
|
+
|
|
1172
|
+
/**
|
|
1173
|
+
* Executes a callback after the embed container is loaded.
|
|
1174
|
+
* @param callback The callback to execute
|
|
1175
|
+
*/
|
|
1176
|
+
protected executeAfterEmbedContainerLoaded(callback: () => void) {
|
|
1177
|
+
if (this.checkEmbedContainerLoaded()) {
|
|
1178
|
+
callback?.();
|
|
1179
|
+
} else {
|
|
1180
|
+
logger.debug('pushing callback to embedContainerReadyCallbacks', callback);
|
|
1181
|
+
this.embedContainerReadyCallbacks.push(callback);
|
|
1182
|
+
}
|
|
1183
|
+
}
|
|
1184
|
+
|
|
1185
|
+
protected createEmbedContainerHandler = (source: EmbedEvent.AuthInit | EmbedEvent.EmbedListenerReady) => () => {
|
|
1186
|
+
const processEmbedContainerReady = () => {
|
|
1187
|
+
logger.debug('processEmbedContainerReady');
|
|
1188
|
+
this.isEmbedContainerLoaded = true;
|
|
1189
|
+
this.executeEmbedContainerReadyCallbacks();
|
|
1190
|
+
}
|
|
1191
|
+
if (source === EmbedEvent.AuthInit) {
|
|
1192
|
+
const AUTH_INIT_FALLBACK_DELAY = 1000;
|
|
1193
|
+
// Wait for 1 second to ensure the embed container is loaded
|
|
1194
|
+
// This is a workaround to ensure the embed container is loaded
|
|
1195
|
+
// this is needed until all clusters have EmbedListenerReady event
|
|
1196
|
+
setTimeout(processEmbedContainerReady, AUTH_INIT_FALLBACK_DELAY);
|
|
1197
|
+
} else if (source === EmbedEvent.EmbedListenerReady) {
|
|
1198
|
+
processEmbedContainerReady();
|
|
1199
|
+
}
|
|
1200
|
+
}
|
|
1201
|
+
|
|
1188
1202
|
/**
|
|
1189
1203
|
* Triggers an event to the embedded app
|
|
1190
1204
|
* @param {HostEvent} messageType The event type
|
|
@@ -1381,12 +1395,8 @@ export class TsEmbed {
|
|
|
1381
1395
|
return this.preRender(true);
|
|
1382
1396
|
}
|
|
1383
1397
|
this.validatePreRenderViewConfig(this.viewConfig);
|
|
1384
|
-
logger.debug('triggering UpdateEmbedParams', this.viewConfig);
|
|
1385
|
-
this.triggerAfterLoad(HostEvent.UpdateEmbedParams, this.getUpdateEmbedParamsObject());
|
|
1386
1398
|
}
|
|
1387
1399
|
|
|
1388
|
-
this.beforePrerenderVisible();
|
|
1389
|
-
|
|
1390
1400
|
if (this.el) {
|
|
1391
1401
|
this.syncPreRenderStyle();
|
|
1392
1402
|
if (!this.viewConfig.doNotTrackPreRenderSize) {
|
|
@@ -1404,6 +1414,8 @@ export class TsEmbed {
|
|
|
1404
1414
|
}
|
|
1405
1415
|
}
|
|
1406
1416
|
|
|
1417
|
+
this.beforePrerenderVisible();
|
|
1418
|
+
|
|
1407
1419
|
removeStyleProperties(this.preRenderWrapper, ['z-index', 'opacity', 'pointer-events']);
|
|
1408
1420
|
|
|
1409
1421
|
this.subscribeToEvents();
|