@thoughtspot/visual-embed-sdk 1.42.3 → 1.43.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 +1 -1
- package/cjs/src/api-intercept.d.ts +51 -0
- package/cjs/src/api-intercept.d.ts.map +1 -0
- package/cjs/src/api-intercept.js +180 -0
- package/cjs/src/api-intercept.js.map +1 -0
- package/cjs/src/api-intercept.spec.d.ts +2 -0
- package/cjs/src/api-intercept.spec.d.ts.map +1 -0
- package/cjs/src/api-intercept.spec.js +672 -0
- package/cjs/src/api-intercept.spec.js.map +1 -0
- package/cjs/src/css-variables.d.ts +4 -0
- package/cjs/src/css-variables.d.ts.map +1 -1
- package/cjs/src/embed/app.d.ts +0 -5
- package/cjs/src/embed/app.d.ts.map +1 -1
- package/cjs/src/embed/app.js +4 -5
- package/cjs/src/embed/app.js.map +1 -1
- package/cjs/src/embed/app.spec.js +10 -0
- package/cjs/src/embed/app.spec.js.map +1 -1
- package/cjs/src/embed/conversation.d.ts +2 -2
- package/cjs/src/embed/conversation.js +1 -1
- package/cjs/src/embed/conversation.js.map +1 -1
- package/cjs/src/embed/conversation.spec.js +17 -0
- package/cjs/src/embed/conversation.spec.js.map +1 -1
- package/cjs/src/embed/hostEventClient/contracts.d.ts +11 -1
- package/cjs/src/embed/hostEventClient/contracts.d.ts.map +1 -1
- package/cjs/src/embed/hostEventClient/contracts.js +1 -0
- package/cjs/src/embed/hostEventClient/contracts.js.map +1 -1
- package/cjs/src/embed/liveboard.d.ts.map +1 -1
- package/cjs/src/embed/liveboard.js +4 -2
- package/cjs/src/embed/liveboard.js.map +1 -1
- package/cjs/src/embed/liveboard.spec.js +11 -0
- package/cjs/src/embed/liveboard.spec.js.map +1 -1
- package/cjs/src/embed/search.d.ts +0 -7
- package/cjs/src/embed/search.d.ts.map +1 -1
- package/cjs/src/embed/search.js +1 -4
- package/cjs/src/embed/search.js.map +1 -1
- package/cjs/src/embed/ts-embed.d.ts +10 -0
- package/cjs/src/embed/ts-embed.d.ts.map +1 -1
- package/cjs/src/embed/ts-embed.js +56 -15
- package/cjs/src/embed/ts-embed.js.map +1 -1
- package/cjs/src/embed/ts-embed.spec.d.ts.map +1 -1
- package/cjs/src/embed/ts-embed.spec.js +412 -238
- package/cjs/src/embed/ts-embed.spec.js.map +1 -1
- package/cjs/src/index.d.ts +2 -2
- package/cjs/src/index.d.ts.map +1 -1
- package/cjs/src/index.js +2 -1
- package/cjs/src/index.js.map +1 -1
- package/cjs/src/react/all-types-export.d.ts +1 -1
- package/cjs/src/react/all-types-export.d.ts.map +1 -1
- package/cjs/src/react/all-types-export.js +2 -1
- package/cjs/src/react/all-types-export.js.map +1 -1
- package/cjs/src/types.d.ts +328 -103
- package/cjs/src/types.d.ts.map +1 -1
- package/cjs/src/types.js +265 -85
- package/cjs/src/types.js.map +1 -1
- package/cjs/src/utils/logger.d.ts.map +1 -1
- package/cjs/src/utils/logger.js +1 -2
- package/cjs/src/utils/logger.js.map +1 -1
- package/cjs/src/utils/processData.d.ts +1 -1
- package/cjs/src/utils/processData.d.ts.map +1 -1
- package/cjs/src/utils/processData.js +8 -8
- package/cjs/src/utils/processData.js.map +1 -1
- package/cjs/src/utils/processData.spec.js.map +1 -1
- package/dist/{index-SVcLgSqi.js → index-CpkMygsc.js} +1 -1
- package/dist/src/api-intercept.d.ts +51 -0
- package/dist/src/api-intercept.d.ts.map +1 -0
- package/dist/src/api-intercept.spec.d.ts +2 -0
- package/dist/src/api-intercept.spec.d.ts.map +1 -0
- package/dist/src/css-variables.d.ts +4 -0
- package/dist/src/css-variables.d.ts.map +1 -1
- package/dist/src/embed/app.d.ts +0 -5
- package/dist/src/embed/app.d.ts.map +1 -1
- package/dist/src/embed/conversation.d.ts +2 -2
- package/dist/src/embed/hostEventClient/contracts.d.ts +11 -1
- package/dist/src/embed/hostEventClient/contracts.d.ts.map +1 -1
- package/dist/src/embed/liveboard.d.ts.map +1 -1
- package/dist/src/embed/search.d.ts +0 -7
- package/dist/src/embed/search.d.ts.map +1 -1
- package/dist/src/embed/ts-embed.d.ts +10 -0
- package/dist/src/embed/ts-embed.d.ts.map +1 -1
- package/dist/src/embed/ts-embed.spec.d.ts.map +1 -1
- package/dist/src/index.d.ts +2 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/react/all-types-export.d.ts +1 -1
- package/dist/src/react/all-types-export.d.ts.map +1 -1
- package/dist/src/types.d.ts +328 -103
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/utils/logger.d.ts.map +1 -1
- package/dist/src/utils/processData.d.ts +1 -1
- package/dist/src/utils/processData.d.ts.map +1 -1
- package/dist/tsembed-react.es.js +519 -133
- package/dist/tsembed-react.js +518 -132
- package/dist/tsembed.es.js +2642 -2256
- package/dist/tsembed.js +2640 -2254
- package/dist/visual-embed-sdk-react-full.d.ts +355 -118
- package/dist/visual-embed-sdk-react.d.ts +352 -118
- package/dist/visual-embed-sdk.d.ts +355 -118
- package/lib/package.json +1 -1
- package/lib/src/api-intercept.d.ts +51 -0
- package/lib/src/api-intercept.d.ts.map +1 -0
- package/lib/src/api-intercept.js +173 -0
- package/lib/src/api-intercept.js.map +1 -0
- package/lib/src/api-intercept.spec.d.ts +2 -0
- package/lib/src/api-intercept.spec.d.ts.map +1 -0
- package/lib/src/api-intercept.spec.js +669 -0
- package/lib/src/api-intercept.spec.js.map +1 -0
- package/lib/src/css-variables.d.ts +4 -0
- package/lib/src/css-variables.d.ts.map +1 -1
- package/lib/src/embed/app.d.ts +0 -5
- package/lib/src/embed/app.d.ts.map +1 -1
- package/lib/src/embed/app.js +4 -5
- package/lib/src/embed/app.js.map +1 -1
- package/lib/src/embed/app.spec.js +10 -0
- package/lib/src/embed/app.spec.js.map +1 -1
- package/lib/src/embed/conversation.d.ts +2 -2
- package/lib/src/embed/conversation.js +1 -1
- package/lib/src/embed/conversation.js.map +1 -1
- package/lib/src/embed/conversation.spec.js +17 -0
- package/lib/src/embed/conversation.spec.js.map +1 -1
- package/lib/src/embed/hostEventClient/contracts.d.ts +11 -1
- package/lib/src/embed/hostEventClient/contracts.d.ts.map +1 -1
- package/lib/src/embed/hostEventClient/contracts.js +1 -0
- package/lib/src/embed/hostEventClient/contracts.js.map +1 -1
- package/lib/src/embed/liveboard.d.ts.map +1 -1
- package/lib/src/embed/liveboard.js +4 -2
- package/lib/src/embed/liveboard.js.map +1 -1
- package/lib/src/embed/liveboard.spec.js +11 -0
- package/lib/src/embed/liveboard.spec.js.map +1 -1
- package/lib/src/embed/search.d.ts +0 -7
- package/lib/src/embed/search.d.ts.map +1 -1
- package/lib/src/embed/search.js +1 -4
- package/lib/src/embed/search.js.map +1 -1
- package/lib/src/embed/ts-embed.d.ts +10 -0
- package/lib/src/embed/ts-embed.d.ts.map +1 -1
- package/lib/src/embed/ts-embed.js +56 -15
- package/lib/src/embed/ts-embed.js.map +1 -1
- package/lib/src/embed/ts-embed.spec.d.ts.map +1 -1
- package/lib/src/embed/ts-embed.spec.js +412 -238
- package/lib/src/embed/ts-embed.spec.js.map +1 -1
- package/lib/src/index.d.ts +2 -2
- package/lib/src/index.d.ts.map +1 -1
- package/lib/src/index.js +2 -2
- package/lib/src/index.js.map +1 -1
- package/lib/src/react/all-types-export.d.ts +1 -1
- package/lib/src/react/all-types-export.d.ts.map +1 -1
- package/lib/src/react/all-types-export.js +1 -1
- package/lib/src/react/all-types-export.js.map +1 -1
- package/lib/src/types.d.ts +328 -103
- package/lib/src/types.d.ts.map +1 -1
- package/lib/src/types.js +264 -84
- package/lib/src/types.js.map +1 -1
- package/lib/src/utils/logger.d.ts.map +1 -1
- package/lib/src/utils/logger.js +1 -2
- package/lib/src/utils/logger.js.map +1 -1
- package/lib/src/utils/processData.d.ts +1 -1
- package/lib/src/utils/processData.d.ts.map +1 -1
- package/lib/src/utils/processData.js +8 -8
- package/lib/src/utils/processData.js.map +1 -1
- package/lib/src/utils/processData.spec.js.map +1 -1
- package/package.json +1 -1
- package/src/api-intercept.spec.ts +856 -0
- package/src/api-intercept.ts +204 -0
- package/src/css-variables.ts +5 -0
- package/src/embed/app.spec.ts +11 -0
- package/src/embed/app.ts +5 -16
- package/src/embed/conversation.spec.ts +22 -0
- package/src/embed/conversation.ts +3 -3
- package/src/embed/hostEventClient/contracts.ts +10 -0
- package/src/embed/liveboard.spec.ts +12 -0
- package/src/embed/liveboard.ts +6 -2
- package/src/embed/search.ts +1 -14
- package/src/embed/ts-embed.spec.ts +498 -250
- package/src/embed/ts-embed.ts +80 -32
- package/src/index.ts +2 -0
- package/src/react/all-types-export.ts +1 -0
- package/src/types.ts +410 -179
- package/src/utils/logger.ts +1 -2
- package/src/utils/processData.spec.ts +0 -1
- package/src/utils/processData.ts +10 -11
package/src/embed/ts-embed.ts
CHANGED
|
@@ -71,6 +71,7 @@ import { getEmbedConfig } from './embedConfig';
|
|
|
71
71
|
import { ERROR_MESSAGE } from '../errors';
|
|
72
72
|
import { getPreauthInfo } from '../utils/sessionInfoService';
|
|
73
73
|
import { HostEventClient } from './hostEventClient/host-event-client';
|
|
74
|
+
import { getInterceptInitData, handleInterceptEvent, processApiInterceptResponse, processLegacyInterceptResponse } from '../api-intercept';
|
|
74
75
|
|
|
75
76
|
const { version } = pkgInfo;
|
|
76
77
|
|
|
@@ -201,7 +202,7 @@ export class TsEmbed {
|
|
|
201
202
|
});
|
|
202
203
|
const embedConfig = getEmbedConfig();
|
|
203
204
|
this.embedConfig = embedConfig;
|
|
204
|
-
|
|
205
|
+
|
|
205
206
|
this.hostEventClient = new HostEventClient(this.iFrame);
|
|
206
207
|
this.isReadyForRenderPromise = getInitPromise().then(async () => {
|
|
207
208
|
if (!embedConfig.authTriggerContainer && !embedConfig.useEventForSAMLPopup) {
|
|
@@ -336,33 +337,53 @@ export class TsEmbed {
|
|
|
336
337
|
this.subscribedListeners.offline = offlineEventListener;
|
|
337
338
|
}
|
|
338
339
|
|
|
340
|
+
private handleApiInterceptEvent({ eventData, eventPort }: { eventData: any, eventPort: MessagePort | void }) {
|
|
341
|
+
const executeEvent = (_eventType: EmbedEvent, data: any) => {
|
|
342
|
+
this.executeCallbacks(_eventType, data, eventPort);
|
|
343
|
+
}
|
|
344
|
+
const getUnsavedAnswerTml = async (props: { sessionId?: string, vizId?: string }) => {
|
|
345
|
+
const response = await this.triggerUIPassThrough(UIPassthroughEvent.GetUnsavedAnswerTML, props);
|
|
346
|
+
return response.filter((item) => item.value)?.[0]?.value;
|
|
347
|
+
}
|
|
348
|
+
handleInterceptEvent({ eventData, executeEvent, viewConfig: this.viewConfig, getUnsavedAnswerTml });
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
private messageEventListener = (event: MessageEvent<any>) => {
|
|
352
|
+
const eventType = this.getEventType(event);
|
|
353
|
+
const eventPort = this.getEventPort(event);
|
|
354
|
+
const eventData = this.formatEventData(event, eventType);
|
|
355
|
+
if (event.source === this.iFrame.contentWindow) {
|
|
356
|
+
const processedEventData = processEventData(
|
|
357
|
+
eventType,
|
|
358
|
+
eventData,
|
|
359
|
+
this.thoughtSpotHost,
|
|
360
|
+
this.isPreRendered ? this.preRenderWrapper : this.el,
|
|
361
|
+
);
|
|
362
|
+
|
|
363
|
+
if (eventType === EmbedEvent.ApiIntercept) {
|
|
364
|
+
this.handleApiInterceptEvent({ eventData, eventPort });
|
|
365
|
+
return;
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
this.executeCallbacks(
|
|
369
|
+
eventType,
|
|
370
|
+
processedEventData,
|
|
371
|
+
eventPort,
|
|
372
|
+
);
|
|
373
|
+
}
|
|
374
|
+
};
|
|
339
375
|
/**
|
|
340
376
|
* Subscribe to message events that depend on successful iframe setup
|
|
341
377
|
*/
|
|
342
378
|
private subscribeToMessageEvents() {
|
|
343
379
|
this.unsubscribeToMessageEvents();
|
|
344
380
|
|
|
345
|
-
|
|
346
|
-
const eventType = this.getEventType(event);
|
|
347
|
-
const eventPort = this.getEventPort(event);
|
|
348
|
-
const eventData = this.formatEventData(event, eventType);
|
|
349
|
-
if (event.source === this.iFrame.contentWindow) {
|
|
350
|
-
this.executeCallbacks(
|
|
351
|
-
eventType,
|
|
352
|
-
processEventData(
|
|
353
|
-
eventType,
|
|
354
|
-
eventData,
|
|
355
|
-
this.thoughtSpotHost,
|
|
356
|
-
this.isPreRendered ? this.preRenderWrapper : this.el,
|
|
357
|
-
),
|
|
358
|
-
eventPort,
|
|
359
|
-
);
|
|
360
|
-
}
|
|
361
|
-
};
|
|
362
|
-
window.addEventListener('message', messageEventListener);
|
|
381
|
+
window.addEventListener('message', this.messageEventListener);
|
|
363
382
|
|
|
364
|
-
this.subscribedListeners.message = messageEventListener;
|
|
383
|
+
this.subscribedListeners.message = this.messageEventListener;
|
|
365
384
|
}
|
|
385
|
+
|
|
386
|
+
|
|
366
387
|
/**
|
|
367
388
|
* Adds event listeners for both network and message events.
|
|
368
389
|
* This maintains backward compatibility with the existing method.
|
|
@@ -376,6 +397,7 @@ export class TsEmbed {
|
|
|
376
397
|
this.subscribeToMessageEvents();
|
|
377
398
|
}
|
|
378
399
|
|
|
400
|
+
|
|
379
401
|
private unsubscribeToNetworkEvents() {
|
|
380
402
|
if (this.subscribedListeners.online) {
|
|
381
403
|
window.removeEventListener('online', this.subscribedListeners.online);
|
|
@@ -426,7 +448,7 @@ export class TsEmbed {
|
|
|
426
448
|
message: customActionsResult.errors,
|
|
427
449
|
});
|
|
428
450
|
}
|
|
429
|
-
|
|
451
|
+
const baseInitData = {
|
|
430
452
|
customisations: getCustomisations(this.embedConfig, this.viewConfig),
|
|
431
453
|
authToken,
|
|
432
454
|
runtimeFilterParams: this.viewConfig.excludeRuntimeFiltersfromURL
|
|
@@ -445,7 +467,10 @@ export class TsEmbed {
|
|
|
445
467
|
this.embedConfig.customVariablesForThirdPartyTools || {},
|
|
446
468
|
hiddenListColumns: this.viewConfig.hiddenListColumns || [],
|
|
447
469
|
customActions: customActionsResult.actions,
|
|
470
|
+
...getInterceptInitData(this.viewConfig),
|
|
448
471
|
};
|
|
472
|
+
|
|
473
|
+
return baseInitData;
|
|
449
474
|
}
|
|
450
475
|
|
|
451
476
|
protected async getAppInitData() {
|
|
@@ -557,7 +582,7 @@ export class TsEmbed {
|
|
|
557
582
|
|
|
558
583
|
protected getUpdateEmbedParamsObject() {
|
|
559
584
|
let queryParams = this.getEmbedParamsObject();
|
|
560
|
-
queryParams = { ...this.viewConfig, ...queryParams };
|
|
585
|
+
queryParams = { ...this.viewConfig, ...queryParams, ...this.getAppInitData() };
|
|
561
586
|
return queryParams;
|
|
562
587
|
}
|
|
563
588
|
|
|
@@ -1023,6 +1048,30 @@ export class TsEmbed {
|
|
|
1023
1048
|
this.iFrame.style.height = getCssDimension(height);
|
|
1024
1049
|
}
|
|
1025
1050
|
|
|
1051
|
+
/**
|
|
1052
|
+
* We can process the customer given payload before sending it to the embed port
|
|
1053
|
+
* Embed event handler -> responder -> createEmbedEventResponder -> send response
|
|
1054
|
+
* @param eventPort The event port for a specific MessageChannel
|
|
1055
|
+
* @param eventType The event type
|
|
1056
|
+
* @returns
|
|
1057
|
+
*/
|
|
1058
|
+
protected createEmbedEventResponder = (eventPort: MessagePort | void, eventType: EmbedEvent) => {
|
|
1059
|
+
|
|
1060
|
+
const getPayloadToSend = (payload: any) => {
|
|
1061
|
+
if (eventType === EmbedEvent.OnBeforeGetVizDataIntercept) {
|
|
1062
|
+
return processLegacyInterceptResponse(payload);
|
|
1063
|
+
}
|
|
1064
|
+
if (eventType === EmbedEvent.ApiIntercept) {
|
|
1065
|
+
return processApiInterceptResponse(payload);
|
|
1066
|
+
}
|
|
1067
|
+
return payload;
|
|
1068
|
+
}
|
|
1069
|
+
return (payload: any) => {
|
|
1070
|
+
const payloadToSend = getPayloadToSend(payload);
|
|
1071
|
+
this.triggerEventOnPort(eventPort, payloadToSend);
|
|
1072
|
+
}
|
|
1073
|
+
}
|
|
1074
|
+
|
|
1026
1075
|
/**
|
|
1027
1076
|
* Executes all registered event handlers for a particular event type
|
|
1028
1077
|
* @param eventType The event type
|
|
@@ -1047,9 +1096,8 @@ export class TsEmbed {
|
|
|
1047
1096
|
// payload
|
|
1048
1097
|
|| (!callbackObj.options.start && dataStatus === embedEventStatus.END)
|
|
1049
1098
|
) {
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
});
|
|
1099
|
+
const responder = this.createEmbedEventResponder(eventPort, eventType);
|
|
1100
|
+
callbackObj.callback(data, responder);
|
|
1053
1101
|
}
|
|
1054
1102
|
});
|
|
1055
1103
|
}
|
|
@@ -1191,12 +1239,12 @@ export class TsEmbed {
|
|
|
1191
1239
|
}
|
|
1192
1240
|
}
|
|
1193
1241
|
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1242
|
+
/**
|
|
1243
|
+
* @hidden
|
|
1244
|
+
* Internal state to track if the embed container is loaded.
|
|
1245
|
+
* This is used to trigger events after the embed container is loaded.
|
|
1246
|
+
*/
|
|
1247
|
+
public isEmbedContainerLoaded = false;
|
|
1200
1248
|
|
|
1201
1249
|
/**
|
|
1202
1250
|
* @hidden
|
|
@@ -1348,7 +1396,7 @@ export class TsEmbed {
|
|
|
1348
1396
|
}
|
|
1349
1397
|
this.isPreRendered = true;
|
|
1350
1398
|
this.showPreRenderByDefault = showPreRenderByDefault;
|
|
1351
|
-
|
|
1399
|
+
|
|
1352
1400
|
const isAlreadyRendered = this.connectPreRendered();
|
|
1353
1401
|
if (isAlreadyRendered && !replaceExistingPreRender) {
|
|
1354
1402
|
return this;
|
package/src/index.ts
CHANGED
|
@@ -64,6 +64,7 @@ import {
|
|
|
64
64
|
ListPageColumns,
|
|
65
65
|
CustomActionsPosition,
|
|
66
66
|
CustomActionTarget,
|
|
67
|
+
InterceptedApiType,
|
|
67
68
|
} from './types';
|
|
68
69
|
import { CustomCssVariables } from './css-variables';
|
|
69
70
|
import { SageEmbed, SageViewConfig } from './embed/sage';
|
|
@@ -152,6 +153,7 @@ export {
|
|
|
152
153
|
DataPanelCustomColumnGroupsAccordionState,
|
|
153
154
|
CustomActionsPosition,
|
|
154
155
|
CustomActionTarget,
|
|
156
|
+
InterceptedApiType,
|
|
155
157
|
};
|
|
156
158
|
|
|
157
159
|
export { resetCachedAuthToken } from './authToken';
|