@thoughtspot/visual-embed-sdk 1.40.1-alpha.1 → 1.41.0-pre-render-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 +5 -4
- 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.map +1 -1
- package/cjs/src/embed/app.js +8 -0
- package/cjs/src/embed/app.js.map +1 -1
- package/cjs/src/embed/app.spec.js +12 -2
- package/cjs/src/embed/app.spec.js.map +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 +64 -2
- package/cjs/src/embed/conversation.d.ts.map +1 -1
- package/cjs/src/embed/conversation.js +16 -3
- 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 +12 -2
- package/cjs/src/embed/liveboard.d.ts.map +1 -1
- package/cjs/src/embed/liveboard.js +48 -18
- package/cjs/src/embed/liveboard.js.map +1 -1
- package/cjs/src/embed/liveboard.spec.js +211 -5
- 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 +24 -7
- package/cjs/src/embed/ts-embed.d.ts.map +1 -1
- package/cjs/src/embed/ts-embed.js +87 -57
- 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 +152 -44
- package/cjs/src/types.d.ts.map +1 -1
- package/cjs/src/types.js +139 -42
- 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-BDlM0f0T.js +7371 -0
- package/dist/index-k7pkZMhx.js +7371 -0
- 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.map +1 -1
- package/dist/src/embed/bodyless-conversation.d.ts +5 -0
- package/dist/src/embed/bodyless-conversation.d.ts.map +1 -1
- package/dist/src/embed/conversation.d.ts +64 -2
- package/dist/src/embed/conversation.d.ts.map +1 -1
- package/dist/src/embed/liveboard.d.ts +11 -0
- 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 +24 -0
- package/dist/src/embed/ts-embed.d.ts.map +1 -1
- package/dist/src/react/index.d.ts +2 -0
- package/dist/src/react/index.d.ts.map +1 -1
- package/dist/src/types.d.ts +351 -30
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/utils/graphql/nlsService/conversation-service.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 +551 -80
- package/dist/tsembed-react.js +550 -79
- package/dist/tsembed.es.js +572 -86
- package/dist/tsembed.js +571 -85
- package/dist/visual-embed-sdk-react-full.d.ts +787 -37
- package/dist/visual-embed-sdk-react.d.ts +787 -37
- package/dist/visual-embed-sdk.d.ts +785 -37
- package/lib/package.json +5 -4
- 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.map +1 -1
- package/lib/src/embed/app.js +8 -0
- package/lib/src/embed/app.js.map +1 -1
- package/lib/src/embed/app.spec.js +12 -2
- package/lib/src/embed/app.spec.js.map +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 +64 -2
- package/lib/src/embed/conversation.d.ts.map +1 -1
- package/lib/src/embed/conversation.js +17 -4
- 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 +12 -2
- package/lib/src/embed/liveboard.d.ts.map +1 -1
- package/lib/src/embed/liveboard.js +48 -18
- package/lib/src/embed/liveboard.js.map +1 -1
- package/lib/src/embed/liveboard.spec.js +211 -5
- 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 +24 -7
- package/lib/src/embed/ts-embed.d.ts.map +1 -1
- package/lib/src/embed/ts-embed.js +87 -57
- 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 +152 -44
- package/lib/src/types.d.ts.map +1 -1
- package/lib/src/types.js +139 -42
- 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 +786 -38
- package/package.json +6 -4
- package/src/css-variables.ts +396 -1
- package/src/embed/app.spec.ts +17 -2
- package/src/embed/app.ts +8 -0
- package/src/embed/bodyless-conversation.ts +8 -3
- package/src/embed/conversation.spec.ts +131 -5
- package/src/embed/conversation.ts +102 -12
- package/src/embed/liveboard.spec.ts +264 -5
- package/src/embed/liveboard.ts +55 -20
- package/src/embed/sage.ts +12 -7
- package/src/embed/search-bar.tsx +14 -7
- package/src/embed/search.ts +18 -7
- package/src/embed/ts-embed.spec.ts +345 -113
- package/src/embed/ts-embed.ts +97 -67
- package/src/types.ts +199 -91
- package/src/utils/liveboardService/liveboardService.ts +21 -6
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;
|
|
@@ -201,11 +198,11 @@ export class TsEmbed {
|
|
|
201
198
|
uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_EMBED_CREATE, {
|
|
202
199
|
...viewConfig,
|
|
203
200
|
});
|
|
201
|
+
const embedConfig = getEmbedConfig();
|
|
202
|
+
this.embedConfig = embedConfig;
|
|
203
|
+
|
|
204
204
|
this.hostEventClient = new HostEventClient(this.iFrame);
|
|
205
|
-
|
|
206
205
|
this.isReadyForRenderPromise = getInitPromise().then(async () => {
|
|
207
|
-
const embedConfig = getEmbedConfig();
|
|
208
|
-
this.embedConfig = embedConfig;
|
|
209
206
|
if (!embedConfig.authTriggerContainer && !embedConfig.useEventForSAMLPopup) {
|
|
210
207
|
this.embedConfig.authTriggerContainer = domSelector;
|
|
211
208
|
}
|
|
@@ -313,8 +310,6 @@ export class TsEmbed {
|
|
|
313
310
|
|
|
314
311
|
private subscribedListeners: Record<string, any> = {};
|
|
315
312
|
|
|
316
|
-
public isEmbedContainerLoaded = false;
|
|
317
|
-
|
|
318
313
|
/**
|
|
319
314
|
* Adds a global event listener to window for "message" events.
|
|
320
315
|
* ThoughtSpot detects if a particular event is targeted to this
|
|
@@ -480,67 +475,19 @@ export class TsEmbed {
|
|
|
480
475
|
notifyAuthFailure(AuthFailureType.IDLE_SESSION_TIMEOUT);
|
|
481
476
|
};
|
|
482
477
|
|
|
483
|
-
private pendingEvents: Array<{ eventType: HostEvent, data: TriggerPayload<any, HostEvent>, onEventTriggered?: () => void }> = [];
|
|
484
|
-
|
|
485
|
-
protected getPreRenderObj<T extends TsEmbed>() {
|
|
486
|
-
const embedObj = (this.insertedDomEl as any)?.[this.embedNodeKey] as T;
|
|
487
|
-
if (embedObj === (this as any)) {
|
|
488
|
-
console.log('embedObj is same as this');
|
|
489
|
-
return null;
|
|
490
|
-
}
|
|
491
|
-
return (this.insertedDomEl as any)?.[this.embedNodeKey] as T;
|
|
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
|
-
console.log('checkEmbedContainerLoaded', this.isEmbedContainerLoaded);
|
|
503
|
-
|
|
504
|
-
return this.isEmbedContainerLoaded;
|
|
505
|
-
}
|
|
506
|
-
|
|
507
|
-
private executePendingEvents() {
|
|
508
|
-
console.log('executePendingEvents', this.pendingEvents);
|
|
509
|
-
setTimeout(() => {
|
|
510
|
-
this.pendingEvents.forEach((event) => {
|
|
511
|
-
console.log('executing event', event.eventType, event.data);
|
|
512
|
-
this.trigger(event.eventType, event.data);
|
|
513
|
-
event.onEventTriggered?.();
|
|
514
|
-
});
|
|
515
|
-
this.pendingEvents = [];
|
|
516
|
-
}, 1000);
|
|
517
|
-
}
|
|
518
|
-
protected triggerAfterLoad(eventType: HostEvent, data: TriggerPayload<any, HostEvent>, onEventTriggered?: () => void) {
|
|
519
|
-
if (this.checkEmbedContainerLoaded()) {
|
|
520
|
-
console.log('triggerAfterLoad', eventType, data);
|
|
521
|
-
this.trigger(eventType, data);
|
|
522
|
-
onEventTriggered?.();
|
|
523
|
-
} else {
|
|
524
|
-
console.log('pushing to pendingEvents', eventType, data, this.getPreRenderObj());
|
|
525
|
-
this.pendingEvents.push({ eventType, data, onEventTriggered });
|
|
526
|
-
console.log('pendingEvents', this.pendingEvents);
|
|
527
|
-
}
|
|
528
|
-
}
|
|
529
|
-
|
|
530
478
|
/**
|
|
531
479
|
* Register APP_INIT event and sendback init payload
|
|
532
480
|
*/
|
|
533
481
|
private registerAppInit = () => {
|
|
534
482
|
this.on(EmbedEvent.APP_INIT, this.appInitCb, { start: false }, true);
|
|
535
|
-
this.on(EmbedEvent.AuthInit, () => {
|
|
536
|
-
console.log('AuthInit', this.getPreRenderObj());
|
|
537
|
-
this.isEmbedContainerLoaded = true;
|
|
538
|
-
console.log('isEmbedContainerLoaded', this.isEmbedContainerLoaded);
|
|
539
|
-
console.log('executePendingEvents', this.pendingEvents);
|
|
540
|
-
this.executePendingEvents();
|
|
541
|
-
}, { start: false }, true);
|
|
542
483
|
this.on(EmbedEvent.AuthExpire, this.updateAuthToken, { start: false }, true);
|
|
543
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);
|
|
544
491
|
};
|
|
545
492
|
|
|
546
493
|
/**
|
|
@@ -561,6 +508,12 @@ export class TsEmbed {
|
|
|
561
508
|
return `${basePath}#`;
|
|
562
509
|
}
|
|
563
510
|
|
|
511
|
+
protected getUpdateEmbedParamsObject() {
|
|
512
|
+
let queryParams = this.getEmbedParamsObject();
|
|
513
|
+
queryParams = { ...this.viewConfig, ...queryParams };
|
|
514
|
+
return queryParams;
|
|
515
|
+
}
|
|
516
|
+
|
|
564
517
|
/**
|
|
565
518
|
* Common query params set for all the embed modes.
|
|
566
519
|
* @param queryParams
|
|
@@ -743,10 +696,15 @@ export class TsEmbed {
|
|
|
743
696
|
}
|
|
744
697
|
|
|
745
698
|
protected getEmbedParams() {
|
|
746
|
-
const queryParams = this.
|
|
699
|
+
const queryParams = this.getEmbedParamsObject();
|
|
747
700
|
return getQueryParamString(queryParams);
|
|
748
701
|
}
|
|
749
702
|
|
|
703
|
+
protected getEmbedParamsObject() {
|
|
704
|
+
const params = this.getBaseQueryParams();
|
|
705
|
+
return params;
|
|
706
|
+
}
|
|
707
|
+
|
|
750
708
|
protected getRootIframeSrc() {
|
|
751
709
|
const query = this.getEmbedParams();
|
|
752
710
|
return this.getEmbedBasePath(query);
|
|
@@ -1131,11 +1089,9 @@ export class TsEmbed {
|
|
|
1131
1089
|
if (this.isRendered) {
|
|
1132
1090
|
logger.warn('Please register event handlers before calling render');
|
|
1133
1091
|
}
|
|
1134
|
-
|
|
1135
1092
|
const callbacks = this.eventHandlerMap.get(messageType) || [];
|
|
1136
1093
|
callbacks.push({ options, callback });
|
|
1137
1094
|
this.eventHandlerMap.set(messageType, callbacks);
|
|
1138
|
-
|
|
1139
1095
|
return this;
|
|
1140
1096
|
}
|
|
1141
1097
|
|
|
@@ -1183,6 +1139,77 @@ export class TsEmbed {
|
|
|
1183
1139
|
}
|
|
1184
1140
|
}
|
|
1185
1141
|
|
|
1142
|
+
/**
|
|
1143
|
+
* @hidden
|
|
1144
|
+
* Internal state to track if the embed container is loaded.
|
|
1145
|
+
* This is used to trigger events after the embed container is loaded.
|
|
1146
|
+
*/
|
|
1147
|
+
public isEmbedContainerLoaded = false;
|
|
1148
|
+
|
|
1149
|
+
/**
|
|
1150
|
+
* @hidden
|
|
1151
|
+
* Internal state to track the callbacks to be executed after the embed container
|
|
1152
|
+
* is loaded.
|
|
1153
|
+
* This is used to trigger events after the embed container is loaded.
|
|
1154
|
+
*/
|
|
1155
|
+
private embedContainerReadyCallbacks: Array<() => void> = [];
|
|
1156
|
+
|
|
1157
|
+
protected getPreRenderObj<T extends TsEmbed>(): T {
|
|
1158
|
+
const embedObj = (this.insertedDomEl as any)?.[this.embedNodeKey] as T;
|
|
1159
|
+
if (embedObj === (this as any)) {
|
|
1160
|
+
logger.info('embedObj is same as this');
|
|
1161
|
+
}
|
|
1162
|
+
return embedObj;
|
|
1163
|
+
}
|
|
1164
|
+
|
|
1165
|
+
private checkEmbedContainerLoaded() {
|
|
1166
|
+
if (this.isEmbedContainerLoaded) return true;
|
|
1167
|
+
|
|
1168
|
+
const preRenderObj = this.getPreRenderObj<TsEmbed>();
|
|
1169
|
+
if (preRenderObj && preRenderObj.isEmbedContainerLoaded) {
|
|
1170
|
+
this.isEmbedContainerLoaded = true;
|
|
1171
|
+
}
|
|
1172
|
+
|
|
1173
|
+
return this.isEmbedContainerLoaded;
|
|
1174
|
+
}
|
|
1175
|
+
private executeEmbedContainerReadyCallbacks() {
|
|
1176
|
+
logger.debug('executePendingEvents', this.embedContainerReadyCallbacks);
|
|
1177
|
+
this.embedContainerReadyCallbacks.forEach((callback) => {
|
|
1178
|
+
callback?.();
|
|
1179
|
+
});
|
|
1180
|
+
this.embedContainerReadyCallbacks = [];
|
|
1181
|
+
}
|
|
1182
|
+
|
|
1183
|
+
/**
|
|
1184
|
+
* Executes a callback after the embed container is loaded.
|
|
1185
|
+
* @param callback The callback to execute
|
|
1186
|
+
*/
|
|
1187
|
+
protected executeAfterEmbedContainerLoaded(callback: () => void) {
|
|
1188
|
+
if (this.checkEmbedContainerLoaded()) {
|
|
1189
|
+
callback?.();
|
|
1190
|
+
} else {
|
|
1191
|
+
logger.debug('pushing callback to embedContainerReadyCallbacks', callback);
|
|
1192
|
+
this.embedContainerReadyCallbacks.push(callback);
|
|
1193
|
+
}
|
|
1194
|
+
}
|
|
1195
|
+
|
|
1196
|
+
protected createEmbedContainerHandler = (source: EmbedEvent.AuthInit | EmbedEvent.EmbedListenerReady) => () => {
|
|
1197
|
+
const processEmbedContainerReady = () => {
|
|
1198
|
+
logger.debug('processEmbedContainerReady');
|
|
1199
|
+
this.isEmbedContainerLoaded = true;
|
|
1200
|
+
this.executeEmbedContainerReadyCallbacks();
|
|
1201
|
+
}
|
|
1202
|
+
if (source === EmbedEvent.AuthInit) {
|
|
1203
|
+
const AUTH_INIT_FALLBACK_DELAY = 1000;
|
|
1204
|
+
// Wait for 1 second to ensure the embed container is loaded
|
|
1205
|
+
// This is a workaround to ensure the embed container is loaded
|
|
1206
|
+
// this is needed until all clusters have EmbedListenerReady event
|
|
1207
|
+
setTimeout(processEmbedContainerReady, AUTH_INIT_FALLBACK_DELAY);
|
|
1208
|
+
} else if (source === EmbedEvent.EmbedListenerReady) {
|
|
1209
|
+
processEmbedContainerReady();
|
|
1210
|
+
}
|
|
1211
|
+
}
|
|
1212
|
+
|
|
1186
1213
|
/**
|
|
1187
1214
|
* Triggers an event to the embedded app
|
|
1188
1215
|
* @param {HostEvent} messageType The event type
|
|
@@ -1251,7 +1278,7 @@ export class TsEmbed {
|
|
|
1251
1278
|
* Creates the preRender shell
|
|
1252
1279
|
* @param showPreRenderByDefault - Show the preRender after render, hidden by default
|
|
1253
1280
|
*/
|
|
1254
|
-
public async preRender(showPreRenderByDefault = false): Promise<TsEmbed> {
|
|
1281
|
+
public async preRender(showPreRenderByDefault = false): Promise<TsEmbed> {
|
|
1255
1282
|
if (!this.viewConfig.preRenderId) {
|
|
1256
1283
|
logger.error(ERROR_MESSAGE.PRERENDER_ID_MISSING);
|
|
1257
1284
|
return this;
|
|
@@ -1379,7 +1406,10 @@ export class TsEmbed {
|
|
|
1379
1406
|
return this.preRender(true);
|
|
1380
1407
|
}
|
|
1381
1408
|
this.validatePreRenderViewConfig(this.viewConfig);
|
|
1382
|
-
|
|
1409
|
+
logger.debug('triggering UpdateEmbedParams', this.viewConfig);
|
|
1410
|
+
this.executeAfterEmbedContainerLoaded(() => {
|
|
1411
|
+
this.trigger(HostEvent.UpdateEmbedParams, this.getUpdateEmbedParamsObject());
|
|
1412
|
+
});
|
|
1383
1413
|
}
|
|
1384
1414
|
|
|
1385
1415
|
this.beforePrerenderVisible();
|