@thoughtspot/visual-embed-sdk 1.46.4 → 1.46.5
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 +3 -3
- package/cjs/src/auth.d.ts +2 -1
- package/cjs/src/auth.d.ts.map +1 -1
- package/cjs/src/auth.js +2 -1
- package/cjs/src/auth.js.map +1 -1
- package/cjs/src/authToken.d.ts.map +1 -1
- package/cjs/src/authToken.js.map +1 -1
- package/cjs/src/css-variables.d.ts +87 -17
- package/cjs/src/css-variables.d.ts.map +1 -1
- package/cjs/src/embed/app.d.ts +41 -1
- package/cjs/src/embed/app.d.ts.map +1 -1
- package/cjs/src/embed/app.js +25 -36
- package/cjs/src/embed/app.js.map +1 -1
- package/cjs/src/embed/app.spec.js +35 -23
- package/cjs/src/embed/app.spec.js.map +1 -1
- package/cjs/src/embed/base.d.ts.map +1 -1
- package/cjs/src/embed/base.js.map +1 -1
- package/cjs/src/embed/base.spec.js.map +1 -1
- package/cjs/src/embed/conversation.d.ts +23 -1
- package/cjs/src/embed/conversation.d.ts.map +1 -1
- package/cjs/src/embed/conversation.js +18 -33
- package/cjs/src/embed/conversation.js.map +1 -1
- package/cjs/src/embed/conversation.spec.js +129 -97
- package/cjs/src/embed/conversation.spec.js.map +1 -1
- package/cjs/src/embed/events.spec.js +72 -0
- package/cjs/src/embed/events.spec.js.map +1 -1
- package/cjs/src/embed/hostEventClient/contracts.d.ts +105 -3
- package/cjs/src/embed/hostEventClient/contracts.d.ts.map +1 -1
- package/cjs/src/embed/hostEventClient/contracts.js +9 -0
- package/cjs/src/embed/hostEventClient/contracts.js.map +1 -1
- package/cjs/src/embed/hostEventClient/host-event-client.d.ts +28 -0
- package/cjs/src/embed/hostEventClient/host-event-client.d.ts.map +1 -1
- package/cjs/src/embed/hostEventClient/host-event-client.js +106 -9
- package/cjs/src/embed/hostEventClient/host-event-client.js.map +1 -1
- package/cjs/src/embed/hostEventClient/host-event-client.spec.js +327 -6
- package/cjs/src/embed/hostEventClient/host-event-client.spec.js.map +1 -1
- package/cjs/src/embed/hostEventClient/utils.d.ts +22 -0
- package/cjs/src/embed/hostEventClient/utils.d.ts.map +1 -0
- package/cjs/src/embed/hostEventClient/utils.js +51 -0
- package/cjs/src/embed/hostEventClient/utils.js.map +1 -0
- package/cjs/src/embed/hostEventClient/utils.spec.d.ts +2 -0
- package/cjs/src/embed/hostEventClient/utils.spec.d.ts.map +1 -0
- package/cjs/src/embed/hostEventClient/utils.spec.js +115 -0
- package/cjs/src/embed/hostEventClient/utils.spec.js.map +1 -0
- package/cjs/src/embed/liveboard.d.ts +18 -0
- package/cjs/src/embed/liveboard.d.ts.map +1 -1
- package/cjs/src/embed/liveboard.js +10 -3
- package/cjs/src/embed/liveboard.js.map +1 -1
- package/cjs/src/embed/liveboard.spec.js +54 -2
- package/cjs/src/embed/liveboard.spec.js.map +1 -1
- package/cjs/src/embed/sage.d.ts.map +1 -1
- package/cjs/src/embed/sage.js.map +1 -1
- package/cjs/src/embed/search.spec.js.map +1 -1
- package/cjs/src/embed/spotter-utils.d.ts +20 -0
- package/cjs/src/embed/spotter-utils.d.ts.map +1 -0
- package/cjs/src/embed/spotter-utils.js +52 -0
- package/cjs/src/embed/spotter-utils.js.map +1 -0
- package/cjs/src/embed/spotter-utils.spec.d.ts +2 -0
- package/cjs/src/embed/spotter-utils.spec.d.ts.map +1 -0
- package/cjs/src/embed/spotter-utils.spec.js +54 -0
- package/cjs/src/embed/spotter-utils.spec.js.map +1 -0
- package/cjs/src/embed/ts-embed.d.ts +41 -2
- package/cjs/src/embed/ts-embed.d.ts.map +1 -1
- package/cjs/src/embed/ts-embed.js +54 -3
- package/cjs/src/embed/ts-embed.js.map +1 -1
- package/cjs/src/errors.d.ts +2 -0
- package/cjs/src/errors.d.ts.map +1 -1
- package/cjs/src/errors.js +2 -0
- package/cjs/src/errors.js.map +1 -1
- package/cjs/src/react/index.d.ts.map +1 -1
- package/cjs/src/react/index.js +58 -53
- package/cjs/src/react/index.js.map +1 -1
- package/cjs/src/types.d.ts +832 -33
- package/cjs/src/types.d.ts.map +1 -1
- package/cjs/src/types.js +835 -3
- package/cjs/src/types.js.map +1 -1
- package/cjs/src/utils/graphql/answerService/answerService.d.ts +4 -2
- package/cjs/src/utils/graphql/answerService/answerService.d.ts.map +1 -1
- package/cjs/src/utils/graphql/answerService/answerService.js +4 -2
- package/cjs/src/utils/graphql/answerService/answerService.js.map +1 -1
- package/cjs/src/utils/graphql/preview-service.d.ts.map +1 -1
- package/cjs/src/utils/graphql/preview-service.js.map +1 -1
- package/cjs/src/utils/processData.d.ts.map +1 -1
- package/cjs/src/utils/processData.js.map +1 -1
- package/cjs/src/utils.d.ts +0 -9
- package/cjs/src/utils.d.ts.map +1 -1
- package/cjs/src/utils.js +1 -10
- package/cjs/src/utils.js.map +1 -1
- package/dist/index-ChNydfIz.js +7371 -0
- package/dist/index-DW2wEHqy.js +7371 -0
- package/dist/src/auth.d.ts +2 -1
- package/dist/src/auth.d.ts.map +1 -1
- package/dist/src/authToken.d.ts.map +1 -1
- package/dist/src/css-variables.d.ts +87 -17
- package/dist/src/css-variables.d.ts.map +1 -1
- package/dist/src/embed/app.d.ts +41 -1
- package/dist/src/embed/app.d.ts.map +1 -1
- package/dist/src/embed/base.d.ts.map +1 -1
- package/dist/src/embed/conversation.d.ts +23 -1
- package/dist/src/embed/conversation.d.ts.map +1 -1
- package/dist/src/embed/hostEventClient/contracts.d.ts +105 -3
- package/dist/src/embed/hostEventClient/contracts.d.ts.map +1 -1
- package/dist/src/embed/hostEventClient/host-event-client.d.ts +28 -0
- package/dist/src/embed/hostEventClient/host-event-client.d.ts.map +1 -1
- package/dist/src/embed/hostEventClient/utils.d.ts +22 -0
- package/dist/src/embed/hostEventClient/utils.d.ts.map +1 -0
- package/dist/src/embed/hostEventClient/utils.spec.d.ts +2 -0
- package/dist/src/embed/hostEventClient/utils.spec.d.ts.map +1 -0
- package/dist/src/embed/liveboard.d.ts +18 -0
- package/dist/src/embed/liveboard.d.ts.map +1 -1
- package/dist/src/embed/sage.d.ts.map +1 -1
- package/dist/src/embed/spotter-utils.d.ts +20 -0
- package/dist/src/embed/spotter-utils.d.ts.map +1 -0
- package/dist/src/embed/spotter-utils.spec.d.ts +2 -0
- package/dist/src/embed/spotter-utils.spec.d.ts.map +1 -0
- package/dist/src/embed/ts-embed.d.ts +41 -2
- package/dist/src/embed/ts-embed.d.ts.map +1 -1
- package/dist/src/errors.d.ts +2 -0
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/react/index.d.ts.map +1 -1
- package/dist/src/types.d.ts +832 -33
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/utils/graphql/answerService/answerService.d.ts +4 -2
- package/dist/src/utils/graphql/answerService/answerService.d.ts.map +1 -1
- package/dist/src/utils/graphql/preview-service.d.ts.map +1 -1
- package/dist/src/utils/processData.d.ts.map +1 -1
- package/dist/src/utils.d.ts +0 -9
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/tsembed-react.es.js +1208 -154
- package/dist/tsembed-react.js +1206 -152
- package/dist/tsembed.es.js +1150 -101
- package/dist/tsembed.js +1148 -99
- package/dist/visual-embed-sdk-react-full.d.ts +1156 -55
- package/dist/visual-embed-sdk-react.d.ts +1156 -55
- package/dist/visual-embed-sdk.d.ts +1179 -60
- package/lib/package.json +3 -3
- package/lib/src/auth.d.ts +2 -1
- package/lib/src/auth.d.ts.map +1 -1
- package/lib/src/auth.js +2 -1
- package/lib/src/auth.js.map +1 -1
- package/lib/src/authToken.d.ts.map +1 -1
- package/lib/src/authToken.js.map +1 -1
- package/lib/src/css-variables.d.ts +87 -17
- package/lib/src/css-variables.d.ts.map +1 -1
- package/lib/src/embed/app.d.ts +41 -1
- package/lib/src/embed/app.d.ts.map +1 -1
- package/lib/src/embed/app.js +27 -38
- package/lib/src/embed/app.js.map +1 -1
- package/lib/src/embed/app.spec.js +35 -23
- package/lib/src/embed/app.spec.js.map +1 -1
- package/lib/src/embed/base.d.ts.map +1 -1
- package/lib/src/embed/base.js.map +1 -1
- package/lib/src/embed/base.spec.js.map +1 -1
- package/lib/src/embed/conversation.d.ts +23 -1
- package/lib/src/embed/conversation.d.ts.map +1 -1
- package/lib/src/embed/conversation.js +19 -34
- package/lib/src/embed/conversation.js.map +1 -1
- package/lib/src/embed/conversation.spec.js +131 -99
- package/lib/src/embed/conversation.spec.js.map +1 -1
- package/lib/src/embed/events.spec.js +73 -1
- package/lib/src/embed/events.spec.js.map +1 -1
- package/lib/src/embed/hostEventClient/contracts.d.ts +105 -3
- package/lib/src/embed/hostEventClient/contracts.d.ts.map +1 -1
- package/lib/src/embed/hostEventClient/contracts.js +9 -0
- package/lib/src/embed/hostEventClient/contracts.js.map +1 -1
- package/lib/src/embed/hostEventClient/host-event-client.d.ts +28 -0
- package/lib/src/embed/hostEventClient/host-event-client.d.ts.map +1 -1
- package/lib/src/embed/hostEventClient/host-event-client.js +106 -9
- package/lib/src/embed/hostEventClient/host-event-client.js.map +1 -1
- package/lib/src/embed/hostEventClient/host-event-client.spec.js +327 -6
- package/lib/src/embed/hostEventClient/host-event-client.spec.js.map +1 -1
- package/lib/src/embed/hostEventClient/utils.d.ts +22 -0
- package/lib/src/embed/hostEventClient/utils.d.ts.map +1 -0
- package/lib/src/embed/hostEventClient/utils.js +43 -0
- package/lib/src/embed/hostEventClient/utils.js.map +1 -0
- package/lib/src/embed/hostEventClient/utils.spec.d.ts +2 -0
- package/lib/src/embed/hostEventClient/utils.spec.d.ts.map +1 -0
- package/lib/src/embed/hostEventClient/utils.spec.js +113 -0
- package/lib/src/embed/hostEventClient/utils.spec.js.map +1 -0
- package/lib/src/embed/liveboard.d.ts +18 -0
- package/lib/src/embed/liveboard.d.ts.map +1 -1
- package/lib/src/embed/liveboard.js +10 -3
- package/lib/src/embed/liveboard.js.map +1 -1
- package/lib/src/embed/liveboard.spec.js +54 -2
- package/lib/src/embed/liveboard.spec.js.map +1 -1
- package/lib/src/embed/sage.d.ts.map +1 -1
- package/lib/src/embed/sage.js.map +1 -1
- package/lib/src/embed/search.spec.js.map +1 -1
- package/lib/src/embed/spotter-utils.d.ts +20 -0
- package/lib/src/embed/spotter-utils.d.ts.map +1 -0
- package/lib/src/embed/spotter-utils.js +47 -0
- package/lib/src/embed/spotter-utils.js.map +1 -0
- package/lib/src/embed/spotter-utils.spec.d.ts +2 -0
- package/lib/src/embed/spotter-utils.spec.d.ts.map +1 -0
- package/lib/src/embed/spotter-utils.spec.js +52 -0
- package/lib/src/embed/spotter-utils.spec.js.map +1 -0
- package/lib/src/embed/ts-embed.d.ts +41 -2
- package/lib/src/embed/ts-embed.d.ts.map +1 -1
- package/lib/src/embed/ts-embed.js +55 -4
- package/lib/src/embed/ts-embed.js.map +1 -1
- package/lib/src/errors.d.ts +2 -0
- package/lib/src/errors.d.ts.map +1 -1
- package/lib/src/errors.js +2 -0
- package/lib/src/errors.js.map +1 -1
- package/lib/src/react/index.d.ts.map +1 -1
- package/lib/src/react/index.js +58 -53
- package/lib/src/react/index.js.map +1 -1
- package/lib/src/types.d.ts +832 -33
- package/lib/src/types.d.ts.map +1 -1
- package/lib/src/types.js +835 -3
- package/lib/src/types.js.map +1 -1
- package/lib/src/utils/graphql/answerService/answerService.d.ts +4 -2
- package/lib/src/utils/graphql/answerService/answerService.d.ts.map +1 -1
- package/lib/src/utils/graphql/answerService/answerService.js +4 -2
- package/lib/src/utils/graphql/answerService/answerService.js.map +1 -1
- package/lib/src/utils/graphql/preview-service.d.ts.map +1 -1
- package/lib/src/utils/graphql/preview-service.js.map +1 -1
- package/lib/src/utils/processData.d.ts.map +1 -1
- package/lib/src/utils/processData.js.map +1 -1
- package/lib/src/utils.d.ts +0 -9
- package/lib/src/utils.d.ts.map +1 -1
- package/lib/src/utils.js +0 -8
- package/lib/src/utils.js.map +1 -1
- package/lib/src/visual-embed-sdk.d.ts +1179 -60
- package/package.json +3 -3
- package/src/auth.spec.ts +1 -1
- package/src/auth.ts +2 -1
- package/src/authToken.ts +0 -1
- package/src/css-variables.ts +96 -17
- package/src/embed/app.spec.ts +48 -30
- package/src/embed/app.ts +59 -54
- package/src/embed/base.spec.ts +1 -2
- package/src/embed/base.ts +1 -4
- package/src/embed/conversation.spec.ts +150 -119
- package/src/embed/conversation.ts +30 -54
- package/src/embed/events.spec.ts +88 -0
- package/src/embed/hostEventClient/contracts.ts +105 -2
- package/src/embed/hostEventClient/host-event-client.spec.ts +504 -6
- package/src/embed/hostEventClient/host-event-client.ts +146 -15
- package/src/embed/hostEventClient/utils.spec.ts +137 -0
- package/src/embed/hostEventClient/utils.ts +61 -0
- package/src/embed/liveboard.spec.ts +71 -2
- package/src/embed/liveboard.ts +29 -2
- package/src/embed/sage.ts +0 -1
- package/src/embed/search.spec.ts +0 -2
- package/src/embed/spotter-utils.spec.ts +56 -0
- package/src/embed/spotter-utils.ts +65 -0
- package/src/embed/ts-embed.ts +58 -4
- package/src/errors.ts +2 -0
- package/src/react/index.tsx +76 -72
- package/src/types.ts +843 -31
- package/src/utils/graphql/answerService/answerService.ts +4 -5
- package/src/utils/graphql/preview-service.ts +0 -1
- package/src/utils/processData.ts +0 -5
- package/src/utils.ts +0 -14
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { DefaultAppInitData, ErrorDetailsTypes, EmbedErrorCodes } from '../types';
|
|
2
|
+
import { validateHttpUrl } from '../utils';
|
|
3
|
+
import { ERROR_MESSAGE } from '../errors';
|
|
4
|
+
import type { SpotterSidebarViewConfig } from './conversation';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Resolves enablePastConversationsSidebar with
|
|
8
|
+
* spotterSidebarConfig taking precedence over the
|
|
9
|
+
* standalone flag.
|
|
10
|
+
*/
|
|
11
|
+
export const resolveEnablePastConversationsSidebar = (params: {
|
|
12
|
+
spotterSidebarConfigValue?: boolean;
|
|
13
|
+
standaloneValue?: boolean;
|
|
14
|
+
}): boolean | undefined => (
|
|
15
|
+
params.spotterSidebarConfigValue !== undefined
|
|
16
|
+
? params.spotterSidebarConfigValue
|
|
17
|
+
: params.standaloneValue
|
|
18
|
+
);
|
|
19
|
+
|
|
20
|
+
export function buildSpotterSidebarAppInitData<T extends DefaultAppInitData>(
|
|
21
|
+
defaultAppInitData: T,
|
|
22
|
+
viewConfig: {
|
|
23
|
+
spotterSidebarConfig?: SpotterSidebarViewConfig;
|
|
24
|
+
enablePastConversationsSidebar?: boolean;
|
|
25
|
+
},
|
|
26
|
+
handleError: (err: any) => void,
|
|
27
|
+
): T & { embedParams?: { spotterSidebarConfig?: SpotterSidebarViewConfig } } {
|
|
28
|
+
const { spotterSidebarConfig, enablePastConversationsSidebar } = viewConfig;
|
|
29
|
+
|
|
30
|
+
const resolvedEnablePastConversations = resolveEnablePastConversationsSidebar({
|
|
31
|
+
spotterSidebarConfigValue: spotterSidebarConfig?.enablePastConversationsSidebar,
|
|
32
|
+
standaloneValue: enablePastConversationsSidebar,
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
const hasConfig = spotterSidebarConfig || resolvedEnablePastConversations !== undefined;
|
|
36
|
+
if (!hasConfig) return defaultAppInitData;
|
|
37
|
+
|
|
38
|
+
const resolvedSidebarConfig: SpotterSidebarViewConfig = {
|
|
39
|
+
...spotterSidebarConfig,
|
|
40
|
+
...(resolvedEnablePastConversations !== undefined && {
|
|
41
|
+
enablePastConversationsSidebar: resolvedEnablePastConversations,
|
|
42
|
+
}),
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
if (resolvedSidebarConfig.spotterDocumentationUrl !== undefined) {
|
|
46
|
+
const [isValid, validationError] = validateHttpUrl(resolvedSidebarConfig.spotterDocumentationUrl);
|
|
47
|
+
if (!isValid) {
|
|
48
|
+
handleError({
|
|
49
|
+
errorType: ErrorDetailsTypes.VALIDATION_ERROR,
|
|
50
|
+
message: ERROR_MESSAGE.INVALID_SPOTTER_DOCUMENTATION_URL,
|
|
51
|
+
code: EmbedErrorCodes.INVALID_URL,
|
|
52
|
+
error: validationError?.message || ERROR_MESSAGE.INVALID_SPOTTER_DOCUMENTATION_URL,
|
|
53
|
+
});
|
|
54
|
+
delete resolvedSidebarConfig.spotterDocumentationUrl;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
return {
|
|
59
|
+
...defaultAppInitData,
|
|
60
|
+
embedParams: {
|
|
61
|
+
...((defaultAppInitData as any).embedParams || {}),
|
|
62
|
+
spotterSidebarConfig: resolvedSidebarConfig,
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
}
|
package/src/embed/ts-embed.ts
CHANGED
|
@@ -34,7 +34,8 @@ import {
|
|
|
34
34
|
setStyleProperties,
|
|
35
35
|
removeStyleProperties,
|
|
36
36
|
isUndefined,
|
|
37
|
-
|
|
37
|
+
getHostEventsConfig,
|
|
38
|
+
} from '../utils';
|
|
38
39
|
import { getCustomActions } from '../utils/custom-actions';
|
|
39
40
|
import {
|
|
40
41
|
getThoughtSpotHost,
|
|
@@ -1392,7 +1393,21 @@ export class TsEmbed {
|
|
|
1392
1393
|
* Triggers an event to the embedded app
|
|
1393
1394
|
* @param {HostEvent} messageType The event type
|
|
1394
1395
|
* @param {any} data The payload to send with the message
|
|
1396
|
+
* @param {ContextType} context Optional context type to specify the context from which the event is triggered.
|
|
1397
|
+
* Use ContextType.Search for search answer context, ContextType.Answer for answer/explore context,
|
|
1398
|
+
* ContextType.Liveboard for liveboard context, or ContextType.Spotter for spotter context.
|
|
1399
|
+
* Available from SDK version 1.45.2 | ThoughtSpot: 26.3.0.cl
|
|
1395
1400
|
* @returns A promise that resolves with the response from the embedded app
|
|
1401
|
+
* @example
|
|
1402
|
+
* ```js
|
|
1403
|
+
* // Trigger Pin event with context (SDK: 1.45.2+)
|
|
1404
|
+
* import { HostEvent, ContextType } from '@thoughtspot/visual-embed-sdk';
|
|
1405
|
+
* embed.trigger(HostEvent.Pin, {
|
|
1406
|
+
* vizId: "123",
|
|
1407
|
+
* liveboardId: "456"
|
|
1408
|
+
* }, ContextType.Search);
|
|
1409
|
+
* ```
|
|
1410
|
+
* @version SDK: 1.45.2 | ThoughtSpot: 26.3.0.cl (for context parameter)
|
|
1396
1411
|
*/
|
|
1397
1412
|
public async trigger<HostEventT extends HostEvent, PayloadT, ContextT extends ContextType>(
|
|
1398
1413
|
messageType: HostEventT,
|
|
@@ -1431,7 +1446,21 @@ export class TsEmbed {
|
|
|
1431
1446
|
}
|
|
1432
1447
|
|
|
1433
1448
|
// send an empty object, this is needed for liveboard default handlers
|
|
1434
|
-
return this.hostEventClient.triggerHostEvent(messageType, data, context)
|
|
1449
|
+
return this.hostEventClient.triggerHostEvent(messageType, data, context).catch((err: Error & {
|
|
1450
|
+
isValidationError?: boolean;
|
|
1451
|
+
embedErrorDetails?: { errorType: ErrorDetailsTypes; message: string; code: EmbedErrorCodes; error: string };
|
|
1452
|
+
}): Promise<null> => {
|
|
1453
|
+
if (err?.isValidationError) {
|
|
1454
|
+
const errorDetails = err.embedErrorDetails ?? {
|
|
1455
|
+
errorType: ErrorDetailsTypes.VALIDATION_ERROR,
|
|
1456
|
+
message: err.message || ERROR_MESSAGE.UPDATEFILTERS_INVALID_PAYLOAD,
|
|
1457
|
+
code: EmbedErrorCodes.UPDATEFILTERS_INVALID_PAYLOAD,
|
|
1458
|
+
error: err.message,
|
|
1459
|
+
};
|
|
1460
|
+
this.handleError(errorDetails);
|
|
1461
|
+
}
|
|
1462
|
+
throw err;
|
|
1463
|
+
});
|
|
1435
1464
|
}
|
|
1436
1465
|
|
|
1437
1466
|
/**
|
|
@@ -1474,8 +1503,33 @@ export class TsEmbed {
|
|
|
1474
1503
|
}
|
|
1475
1504
|
|
|
1476
1505
|
/**
|
|
1477
|
-
|
|
1478
|
-
|
|
1506
|
+
* Context object for the embedded component.
|
|
1507
|
+
* @returns {ContextObject} The current context object containing the page type and object ids.
|
|
1508
|
+
* @example
|
|
1509
|
+
* ```js
|
|
1510
|
+
* const context = await embed.getCurrentContext();
|
|
1511
|
+
* console.log(context);
|
|
1512
|
+
*
|
|
1513
|
+
* // Example output
|
|
1514
|
+
* {
|
|
1515
|
+
* stack: [
|
|
1516
|
+
* {
|
|
1517
|
+
* name: 'Liveboard',
|
|
1518
|
+
* type: ContextType.Liveboard,
|
|
1519
|
+
* objectIds: {
|
|
1520
|
+
* liveboardId: '123',
|
|
1521
|
+
* },
|
|
1522
|
+
* },
|
|
1523
|
+
* ],
|
|
1524
|
+
* currentContext: {
|
|
1525
|
+
* name: 'Liveboard',
|
|
1526
|
+
* type: ContextType.Liveboard,
|
|
1527
|
+
* objectIds: {
|
|
1528
|
+
* liveboardId: '123',
|
|
1529
|
+
* },
|
|
1530
|
+
* },
|
|
1531
|
+
* }
|
|
1532
|
+
* ```
|
|
1479
1533
|
* @version SDK: 1.45.2 | ThoughtSpot: 26.3.0.cl
|
|
1480
1534
|
*/
|
|
1481
1535
|
public async getCurrentContext(): Promise<ContextObject> {
|
package/src/errors.ts
CHANGED
|
@@ -30,6 +30,8 @@ export const ERROR_MESSAGE = {
|
|
|
30
30
|
SSR_ENVIRONMENT_ERROR: 'SSR environment detected. This function cannot be called in SSR environment.',
|
|
31
31
|
UPDATE_PARAMS_FAILED: 'Failed to update embed parameters',
|
|
32
32
|
INVALID_SPOTTER_DOCUMENTATION_URL: 'Invalid spotterDocumentationUrl. Please provide a valid http or https URL.',
|
|
33
|
+
UPDATEFILTERS_INVALID_PAYLOAD: 'UpdateFilters requires a valid filter or filters array. Expected: { filter: { column, oper, values } } or { filters: [{ column, oper, values }, ...] }',
|
|
34
|
+
DRILLDOWN_INVALID_PAYLOAD: 'DrillDown requires a valid points object. Expected: { points: { clickedPoint?, selectedPoints? }, autoDrillDown?, vizId? }',
|
|
33
35
|
};
|
|
34
36
|
|
|
35
37
|
export const CUSTOM_ACTIONS_ERROR_MESSAGE = {
|
package/src/react/index.tsx
CHANGED
|
@@ -25,84 +25,87 @@ const componentFactory = <T extends typeof TsEmbed, U extends EmbedProps, V exte
|
|
|
25
25
|
// Embed.preRender() method instead of the usual render method, and it will
|
|
26
26
|
// not be destroyed when the component is unmounted.
|
|
27
27
|
isPreRenderedComponent = false,
|
|
28
|
-
) =>
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
const handlePreRenderRendering = (tsEmbed: InstanceType<T>) => {
|
|
50
|
-
tsEmbed.preRender();
|
|
51
|
-
};
|
|
28
|
+
) => {
|
|
29
|
+
const Component = React.forwardRef<InstanceType<T>, U>(
|
|
30
|
+
(props: U, forwardedRef: React.MutableRefObject<InstanceType<T>>) => {
|
|
31
|
+
const ref = React.useRef<HTMLDivElement>(null);
|
|
32
|
+
const { className, style, ...embedProps } = props;
|
|
33
|
+
const { viewConfig, listeners } = getViewPropsAndListeners<Omit<U, 'className' | 'style'>, V>(
|
|
34
|
+
embedProps,
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
const handleDestroy = (tsEmbed: InstanceType<T>) => {
|
|
38
|
+
// do not destroy if it is a preRender component
|
|
39
|
+
if (isPreRenderedComponent) return;
|
|
40
|
+
|
|
41
|
+
// if component is connected to a preRendered component
|
|
42
|
+
if (props.preRenderId) {
|
|
43
|
+
tsEmbed.hidePreRender();
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
tsEmbed.destroy();
|
|
48
|
+
};
|
|
52
49
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
tsEmbed.showPreRender();
|
|
57
|
-
return;
|
|
58
|
-
}
|
|
50
|
+
const handlePreRenderRendering = (tsEmbed: InstanceType<T>) => {
|
|
51
|
+
tsEmbed.preRender();
|
|
52
|
+
};
|
|
59
53
|
|
|
60
|
-
tsEmbed
|
|
61
|
-
|
|
54
|
+
const handleDefaultRendering = (tsEmbed: InstanceType<T>) => {
|
|
55
|
+
// if component is connected to a preRendered component
|
|
56
|
+
if (props.preRenderId) {
|
|
57
|
+
tsEmbed.showPreRender();
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
62
60
|
|
|
63
|
-
|
|
64
|
-
if (isPreRenderedComponent) {
|
|
65
|
-
handlePreRenderRendering(tsEmbed);
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
handleDefaultRendering(tsEmbed);
|
|
69
|
-
};
|
|
70
|
-
|
|
71
|
-
useDeepCompareEffect(() => {
|
|
72
|
-
const tsEmbed = new EmbedConstructor(
|
|
73
|
-
ref!.current,
|
|
74
|
-
deepMerge(
|
|
75
|
-
{
|
|
76
|
-
insertAsSibling: viewConfig.insertAsSibling,
|
|
77
|
-
frameParams: {
|
|
78
|
-
class: viewConfig.insertAsSibling ? className || '' : '',
|
|
79
|
-
},
|
|
80
|
-
},
|
|
81
|
-
viewConfig,
|
|
82
|
-
),
|
|
83
|
-
) as InstanceType<T>;
|
|
84
|
-
Object.keys(listeners).forEach((eventName) => {
|
|
85
|
-
tsEmbed.on(eventName as EmbedEvent, listeners[eventName as EmbedEvent]);
|
|
86
|
-
});
|
|
87
|
-
handleRendering(tsEmbed);
|
|
88
|
-
if (forwardedRef) {
|
|
89
|
-
|
|
90
|
-
forwardedRef.current = tsEmbed;
|
|
91
|
-
}
|
|
92
|
-
return () => {
|
|
93
|
-
handleDestroy(tsEmbed);
|
|
61
|
+
tsEmbed.render();
|
|
94
62
|
};
|
|
95
|
-
}, [viewConfig, listeners]);
|
|
96
63
|
|
|
97
|
-
|
|
64
|
+
const handleRendering = (tsEmbed: InstanceType<T>) => {
|
|
65
|
+
if (isPreRenderedComponent) {
|
|
66
|
+
handlePreRenderRendering(tsEmbed);
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
handleDefaultRendering(tsEmbed);
|
|
70
|
+
};
|
|
98
71
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
72
|
+
useDeepCompareEffect(() => {
|
|
73
|
+
const tsEmbed = new EmbedConstructor(
|
|
74
|
+
ref!.current,
|
|
75
|
+
deepMerge(
|
|
76
|
+
{
|
|
77
|
+
insertAsSibling: viewConfig.insertAsSibling,
|
|
78
|
+
frameParams: {
|
|
79
|
+
class: viewConfig.insertAsSibling ? className || '' : '',
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
viewConfig,
|
|
83
|
+
),
|
|
84
|
+
) as InstanceType<T>;
|
|
85
|
+
Object.keys(listeners).forEach((eventName) => {
|
|
86
|
+
tsEmbed.on(eventName as EmbedEvent, listeners[eventName as EmbedEvent]);
|
|
87
|
+
});
|
|
88
|
+
handleRendering(tsEmbed);
|
|
89
|
+
if (forwardedRef) {
|
|
90
|
+
forwardedRef.current = tsEmbed;
|
|
91
|
+
}
|
|
92
|
+
return () => {
|
|
93
|
+
handleDestroy(tsEmbed);
|
|
94
|
+
};
|
|
95
|
+
}, [viewConfig, listeners]);
|
|
96
|
+
|
|
97
|
+
const preRenderStyles = isPreRenderedComponent ? { display: 'none' } : {};
|
|
98
|
+
|
|
99
|
+
return viewConfig.insertAsSibling ? (
|
|
100
|
+
<span data-testid="tsEmbed" ref={ref} style={{ position: 'absolute', ...preRenderStyles }}></span>
|
|
101
|
+
) : (
|
|
102
|
+
<div data-testid="tsEmbed" ref={ref} style={{ ...style, ...preRenderStyles }} className={`ts-embed-container ${className}`}></div>
|
|
103
|
+
);
|
|
104
|
+
},
|
|
105
|
+
);
|
|
106
|
+
Component.displayName = EmbedConstructor.name || 'EmbedComponent';
|
|
107
|
+
return Component;
|
|
108
|
+
};
|
|
106
109
|
|
|
107
110
|
interface SearchProps extends EmbedProps, SearchViewConfig { }
|
|
108
111
|
|
|
@@ -442,6 +445,7 @@ export const SpotterMessage = React.forwardRef<
|
|
|
442
445
|
/>
|
|
443
446
|
);
|
|
444
447
|
});
|
|
448
|
+
SpotterMessage.displayName = 'SpotterMessage';
|
|
445
449
|
|
|
446
450
|
/**
|
|
447
451
|
* React component for PreRendered Conversation embed.
|