@thoughtspot/visual-embed-sdk 1.21.0-react.2 → 1.21.0-sage.0
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 -5
- package/cjs/src/embed/nls.spec.d.ts +1 -0
- package/cjs/src/embed/nls.spec.d.ts.map +1 -0
- package/cjs/src/embed/nls.spec.js +1 -0
- package/cjs/src/embed/nls.spec.js.map +1 -0
- package/cjs/src/embed/sage-fullscreen.d.ts +87 -0
- package/cjs/src/embed/sage-fullscreen.d.ts.map +1 -0
- package/cjs/src/embed/sage-fullscreen.js +114 -0
- package/cjs/src/embed/sage-fullscreen.js.map +1 -0
- package/cjs/src/embed/sage.d.ts +79 -0
- package/cjs/src/embed/sage.d.ts.map +1 -0
- package/cjs/src/embed/sage.js +112 -0
- package/cjs/src/embed/sage.js.map +1 -0
- package/cjs/src/errors.d.ts +1 -0
- package/cjs/src/errors.d.ts.map +1 -1
- package/cjs/src/errors.js +1 -0
- package/cjs/src/errors.js.map +1 -1
- package/cjs/src/index.d.ts +2 -1
- package/cjs/src/index.d.ts.map +1 -1
- package/cjs/src/index.js +3 -1
- package/cjs/src/index.js.map +1 -1
- package/cjs/src/mixpanel-service.d.ts.map +1 -1
- package/cjs/src/mixpanel-service.js +6 -11
- package/cjs/src/mixpanel-service.js.map +1 -1
- package/cjs/src/react/index.d.ts +9 -5
- package/cjs/src/react/index.d.ts.map +1 -1
- package/cjs/src/react/index.js +3 -1
- package/cjs/src/react/index.js.map +1 -1
- package/cjs/src/types.d.ts +9 -1
- package/cjs/src/types.d.ts.map +1 -1
- package/cjs/src/types.js +4 -0
- package/cjs/src/types.js.map +1 -1
- package/dist/src/embed/sage-fullscreen.d.ts +87 -0
- package/dist/src/embed/sage-fullscreen.d.ts.map +1 -0
- package/dist/src/embed/sage.d.ts +79 -0
- package/dist/src/embed/sage.d.ts.map +1 -0
- package/dist/src/errors.d.ts +1 -0
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/index.d.ts +2 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/mixpanel-service.d.ts.map +1 -1
- package/dist/src/react/index.d.ts +9 -5
- package/dist/src/react/index.d.ts.map +1 -1
- package/dist/src/types.d.ts +9 -1
- package/dist/src/types.d.ts.map +1 -1
- package/dist/tsembed-react.es.js +119 -13
- package/dist/tsembed-react.js +119 -12
- package/dist/tsembed.es.js +118 -13
- package/dist/tsembed.js +118 -12
- package/dist/visual-embed-sdk-react-full.d.ts +74 -3
- package/dist/visual-embed-sdk.d.ts +70 -2
- package/lib/package.json +5 -5
- package/lib/src/embed/nls.spec.d.ts +1 -0
- package/lib/src/embed/nls.spec.d.ts.map +1 -0
- package/lib/src/embed/nls.spec.js +1 -0
- package/lib/src/embed/nls.spec.js.map +1 -0
- package/lib/src/embed/sage-fullscreen.d.ts +87 -0
- package/lib/src/embed/sage-fullscreen.d.ts.map +1 -0
- package/lib/src/embed/sage-fullscreen.js +110 -0
- package/lib/src/embed/sage-fullscreen.js.map +1 -0
- package/lib/src/embed/sage.d.ts +79 -0
- package/lib/src/embed/sage.d.ts.map +1 -0
- package/lib/src/embed/sage.js +108 -0
- package/lib/src/embed/sage.js.map +1 -0
- package/lib/src/errors.d.ts +1 -0
- package/lib/src/errors.d.ts.map +1 -1
- package/lib/src/errors.js +1 -0
- package/lib/src/errors.js.map +1 -1
- package/lib/src/index.d.ts +2 -1
- package/lib/src/index.d.ts.map +1 -1
- package/lib/src/index.js +2 -1
- package/lib/src/index.js.map +1 -1
- package/lib/src/mixpanel-service.d.ts.map +1 -1
- package/lib/src/mixpanel-service.js +6 -11
- package/lib/src/mixpanel-service.js.map +1 -1
- package/lib/src/react/index.d.ts +9 -5
- package/lib/src/react/index.d.ts.map +1 -1
- package/lib/src/react/index.js +2 -0
- package/lib/src/react/index.js.map +1 -1
- package/lib/src/types.d.ts +9 -1
- package/lib/src/types.d.ts.map +1 -1
- package/lib/src/types.js +4 -0
- package/lib/src/types.js.map +1 -1
- package/package.json +5 -5
- package/src/embed/sage.ts +153 -0
- package/src/errors.ts +1 -0
- package/src/index.ts +2 -0
- package/src/mixpanel-service.ts +6 -10
- package/src/react/index.tsx +10 -1
- package/src/types.ts +8 -0
- package/dist/visual-embed-sdk-react.d.ts +0 -2781
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2022
|
|
3
|
+
*
|
|
4
|
+
* Embed ThoughtSpot Sage
|
|
5
|
+
*
|
|
6
|
+
* @summary TS Sage embed
|
|
7
|
+
* @author Mourya Balabhadra <mourya.balabhadra@thoughtspot.com>
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import {
|
|
11
|
+
Action, DOMSelector, EmbedEvent, MessagePayload, Param, ViewConfig,
|
|
12
|
+
} from '../types';
|
|
13
|
+
import { getQueryParamString } from '../utils';
|
|
14
|
+
import { V1Embed } from './ts-embed';
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* The configuration attributes for the embedded search view.
|
|
18
|
+
*
|
|
19
|
+
* @group Embed components
|
|
20
|
+
*/
|
|
21
|
+
export interface SageViewConfig extends ViewConfig {
|
|
22
|
+
/**
|
|
23
|
+
* If set to false, eureka results are hidden
|
|
24
|
+
*/
|
|
25
|
+
hideEurekaResults?: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* primary flag to enable eureka(/sage) page embedding.
|
|
28
|
+
*/
|
|
29
|
+
isSageEmbed?: boolean,
|
|
30
|
+
/**
|
|
31
|
+
* flag to disable changing worksheet. default false.
|
|
32
|
+
*/
|
|
33
|
+
disableWorksheetChange?: boolean,
|
|
34
|
+
/**
|
|
35
|
+
* flag to hide worksheet selector. default false.
|
|
36
|
+
*/
|
|
37
|
+
hideWorksheetSelector?: boolean,
|
|
38
|
+
fullHeight?:boolean;
|
|
39
|
+
}
|
|
40
|
+
export const HiddenActionItemByDefaultForSageEmbed = [
|
|
41
|
+
Action.Save,
|
|
42
|
+
Action.Pin,
|
|
43
|
+
];
|
|
44
|
+
/**
|
|
45
|
+
* Embed ThoughtSpot search
|
|
46
|
+
*
|
|
47
|
+
* @group Embed components
|
|
48
|
+
*/
|
|
49
|
+
export class SageEmbed extends V1Embed {
|
|
50
|
+
/**
|
|
51
|
+
* The view configuration for the embedded ThoughtSpot sage.
|
|
52
|
+
*
|
|
53
|
+
*/
|
|
54
|
+
protected viewConfig: SageViewConfig;
|
|
55
|
+
|
|
56
|
+
private defaultHeight = 500;
|
|
57
|
+
|
|
58
|
+
// eslint-disable-next-line no-useless-constructor
|
|
59
|
+
constructor(domSelector: DOMSelector, viewConfig: SageViewConfig) {
|
|
60
|
+
super(domSelector, viewConfig);
|
|
61
|
+
if (this.viewConfig.fullHeight === true) {
|
|
62
|
+
this.on(EmbedEvent.RouteChange, this.setIframeHeightForNonEmbedLiveboard);
|
|
63
|
+
this.on(EmbedEvent.EmbedHeight, this.updateIFrameHeight);
|
|
64
|
+
this.on(EmbedEvent.EmbedIframeCenter, this.embedIframeCenter);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Constructs a map of parameters to be passed on to the
|
|
70
|
+
* embedded Eureka or Sage search page.
|
|
71
|
+
*
|
|
72
|
+
* @returns {string} query string
|
|
73
|
+
*/
|
|
74
|
+
protected getEmbedParams(): string {
|
|
75
|
+
const {
|
|
76
|
+
hideEurekaResults, isSageEmbed, disableWorksheetChange, hideWorksheetSelector,
|
|
77
|
+
} = this.viewConfig;
|
|
78
|
+
|
|
79
|
+
const params = {};
|
|
80
|
+
params[Param.EmbedApp] = true;
|
|
81
|
+
params[Param.HideActions] = [...(params[Param.HideActions] ?? [])];
|
|
82
|
+
params[Param.HideActions] = [
|
|
83
|
+
...(params[Param.HideActions] ?? []),
|
|
84
|
+
...HiddenActionItemByDefaultForSageEmbed,
|
|
85
|
+
];
|
|
86
|
+
if (hideEurekaResults) {
|
|
87
|
+
params[Param.HideEurekaResults] = true;
|
|
88
|
+
}
|
|
89
|
+
if (isSageEmbed) {
|
|
90
|
+
params[Param.IsSageEmbed] = true;
|
|
91
|
+
}
|
|
92
|
+
if (disableWorksheetChange) {
|
|
93
|
+
params[Param.DisableWorksheetChange] = true;
|
|
94
|
+
}
|
|
95
|
+
if (hideWorksheetSelector) {
|
|
96
|
+
params[Param.HideWorksheetSelector] = true;
|
|
97
|
+
}
|
|
98
|
+
const queryParamsString = getQueryParamString(params, true);
|
|
99
|
+
let query = '';
|
|
100
|
+
if (queryParamsString) {
|
|
101
|
+
query = `?${queryParamsString}`;
|
|
102
|
+
}
|
|
103
|
+
return query;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Set the iframe height as per the computed height received
|
|
108
|
+
* from the ThoughtSpot app.
|
|
109
|
+
*
|
|
110
|
+
* @param {MessagePayload} data The event payload
|
|
111
|
+
*/
|
|
112
|
+
private updateIFrameHeight = (data: MessagePayload) => {
|
|
113
|
+
this.setIFrameHeight(Math.max(data.data, this.defaultHeight));
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
private embedIframeCenter = (data: MessagePayload, responder: any) => {
|
|
117
|
+
const obj = this.getIframeCenter();
|
|
118
|
+
responder({ type: EmbedEvent.EmbedIframeCenter, data: obj });
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
private setIframeHeightForNonEmbedLiveboard = (data: MessagePayload) => {
|
|
122
|
+
if (!data.data.currentPath.startsWith('/embed/viz/')) {
|
|
123
|
+
this.setIFrameHeight(this.defaultHeight);
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Construct the URL of the embedded ThoughtSpot sage to be
|
|
129
|
+
* loaded in the iframe
|
|
130
|
+
*
|
|
131
|
+
* @returns {string} iframe url
|
|
132
|
+
*/
|
|
133
|
+
private getIFrameSrc() {
|
|
134
|
+
const path = 'eureka';
|
|
135
|
+
const tsPostHashParams = this.getThoughtSpotPostUrlParams();
|
|
136
|
+
|
|
137
|
+
return `${this.getRootIframeSrc()}/embed/${path}${tsPostHashParams}`;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Render the embedded ThoughtSpot Sage
|
|
142
|
+
*
|
|
143
|
+
* @returns {SageEmbed} Eureka/Sage embed
|
|
144
|
+
*/
|
|
145
|
+
public render(): SageEmbed {
|
|
146
|
+
super.render();
|
|
147
|
+
|
|
148
|
+
const src = this.getIFrameSrc();
|
|
149
|
+
this.renderV1Embed(src);
|
|
150
|
+
|
|
151
|
+
return this;
|
|
152
|
+
}
|
|
153
|
+
}
|
package/src/errors.ts
CHANGED
|
@@ -3,4 +3,5 @@ export const ERROR_MESSAGE = {
|
|
|
3
3
|
LIVEBOARD_VIZ_ID_VALIDATION: 'Please provide either liveboardId or pinboardId',
|
|
4
4
|
TRIGGER_TIMED_OUT: 'Trigger timedout in getting response',
|
|
5
5
|
SEARCHEMBED_BETA_WRANING_MESSAGE: 'Search Embed is in Beta in this release.',
|
|
6
|
+
SAGE_EMBED_BETA_WARNING_MESSAGE: 'Sage Embed is in Beta in this release.',
|
|
6
7
|
};
|
package/src/index.ts
CHANGED
|
@@ -37,6 +37,7 @@ import {
|
|
|
37
37
|
customCssInterface,
|
|
38
38
|
ContextMenuTriggerOptions,
|
|
39
39
|
} from './types';
|
|
40
|
+
import { SageEmbed } from './embed/sage';
|
|
40
41
|
|
|
41
42
|
export {
|
|
42
43
|
init,
|
|
@@ -50,6 +51,7 @@ export {
|
|
|
50
51
|
SearchBarEmbed,
|
|
51
52
|
PinboardEmbed,
|
|
52
53
|
LiveboardEmbed,
|
|
54
|
+
SageEmbed,
|
|
53
55
|
AppEmbed,
|
|
54
56
|
AuthFailureType,
|
|
55
57
|
AuthStatus,
|
package/src/mixpanel-service.ts
CHANGED
|
@@ -56,17 +56,13 @@ export function initMixpanel(sessionInfo: any): void {
|
|
|
56
56
|
// userGUID
|
|
57
57
|
const isPublicCluster = !!sessionInfo.isPublicUser;
|
|
58
58
|
const token = sessionInfo.mixpanelToken;
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
mixpanel.identify(sessionInfo.userGUID);
|
|
64
|
-
}
|
|
65
|
-
isMixpanelInitialized = true;
|
|
66
|
-
emptyQueue();
|
|
59
|
+
if (token) {
|
|
60
|
+
mixpanel.init(token);
|
|
61
|
+
if (!isPublicCluster) {
|
|
62
|
+
mixpanel.identify(sessionInfo.userGUID);
|
|
67
63
|
}
|
|
68
|
-
|
|
69
|
-
|
|
64
|
+
isMixpanelInitialized = true;
|
|
65
|
+
emptyQueue();
|
|
70
66
|
}
|
|
71
67
|
}
|
|
72
68
|
|
package/src/react/index.tsx
CHANGED
|
@@ -2,6 +2,7 @@ import React from 'react';
|
|
|
2
2
|
import useDeepCompareEffect from 'use-deep-compare-effect';
|
|
3
3
|
import { deepMerge } from '../utils';
|
|
4
4
|
import { SearchBarEmbed as _SearchBarEmbed, SearchBarViewConfig } from '../embed/search-bar';
|
|
5
|
+
import { SageEmbed as _SageEmbed, SageViewConfig } from '../embed/sage';
|
|
5
6
|
import { SearchEmbed as _SearchEmbed, SearchViewConfig } from '../embed/search';
|
|
6
7
|
import { AppEmbed as _AppEmbed, AppViewConfig } from '../embed/app';
|
|
7
8
|
import { LiveboardEmbed as _LiveboardEmbed, LiveboardViewConfig } from '../embed/liveboard';
|
|
@@ -150,6 +151,14 @@ export const SearchBarEmbed = componentFactory<
|
|
|
150
151
|
SearchBarViewConfig
|
|
151
152
|
>(_SearchBarEmbed);
|
|
152
153
|
|
|
154
|
+
interface SageEmbedProps extends EmbedProps, SageViewConfig {}
|
|
155
|
+
|
|
156
|
+
export const SageEmbed = componentFactory<
|
|
157
|
+
typeof _SageEmbed,
|
|
158
|
+
SageEmbedProps,
|
|
159
|
+
SageViewConfig
|
|
160
|
+
>(_SageEmbed);
|
|
161
|
+
|
|
153
162
|
/**
|
|
154
163
|
* Get a reference to the embed component to trigger events on the component.
|
|
155
164
|
*
|
|
@@ -167,7 +176,7 @@ export const SearchBarEmbed = componentFactory<
|
|
|
167
176
|
* ```
|
|
168
177
|
* @returns {React.MutableRefObject<TsEmbed>} ref
|
|
169
178
|
*/
|
|
170
|
-
export const useEmbedRef = (): React.MutableRefObject<
|
|
179
|
+
export const useEmbedRef = (): React.MutableRefObject<TsEmbed> => React.useRef<TsEmbed>(null);
|
|
171
180
|
|
|
172
181
|
export {
|
|
173
182
|
LiveboardViewConfig,
|
package/src/types.ts
CHANGED
|
@@ -407,6 +407,10 @@ export interface EmbedConfig {
|
|
|
407
407
|
* @version SDK: 1.12.0 | ThoughtSpot: 8.4.0.cl, 8.4.1-sw*
|
|
408
408
|
*/
|
|
409
409
|
suppressSearchEmbedBetaWarning?: boolean;
|
|
410
|
+
/**
|
|
411
|
+
* Hide beta alert warning message for SearchEmbed.
|
|
412
|
+
*/
|
|
413
|
+
suppressSageEmbedBetaWarning?: boolean;
|
|
410
414
|
/**
|
|
411
415
|
* Custom style params for embed Config.
|
|
412
416
|
*
|
|
@@ -1842,6 +1846,10 @@ export enum Param {
|
|
|
1842
1846
|
HideProfleAndHelp = 'profileAndHelpInNavBarHidden',
|
|
1843
1847
|
HideApplicationSwitcher= 'applicationSwitcherHidden',
|
|
1844
1848
|
HideOrgSwitcher= 'orgSwitcherHidden',
|
|
1849
|
+
IsSageEmbed = 'isSageEmbed',
|
|
1850
|
+
HideWorksheetSelector = 'hideWorksheetSelector',
|
|
1851
|
+
DisableWorksheetChange = 'disableWorksheetChange',
|
|
1852
|
+
HideEurekaResults = 'hideEurekaResults',
|
|
1845
1853
|
}
|
|
1846
1854
|
|
|
1847
1855
|
/**
|