@thoughtspot/visual-embed-sdk 1.35.5 → 1.35.7
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/embed/search-bar.d.ts +24 -1
- package/cjs/src/embed/search-bar.d.ts.map +1 -1
- package/cjs/src/embed/search-bar.js +13 -2
- package/cjs/src/embed/search-bar.js.map +1 -1
- package/cjs/src/embed/search.d.ts +26 -1
- package/cjs/src/embed/search.d.ts.map +1 -1
- package/cjs/src/embed/search.js +16 -2
- package/cjs/src/embed/search.js.map +1 -1
- package/cjs/src/embed/search.spec.js +49 -0
- package/cjs/src/embed/search.spec.js.map +1 -1
- package/cjs/src/embed/searchEmbed-basic-auth.spec.d.ts +2 -0
- package/cjs/src/embed/searchEmbed-basic-auth.spec.d.ts.map +1 -0
- package/cjs/src/embed/searchEmbed-basic-auth.spec.js +104 -0
- package/cjs/src/embed/searchEmbed-basic-auth.spec.js.map +1 -0
- package/cjs/src/embed/ts-embed.d.ts +4 -1
- package/cjs/src/embed/ts-embed.d.ts.map +1 -1
- package/cjs/src/embed/ts-embed.js +49 -31
- package/cjs/src/embed/ts-embed.js.map +1 -1
- package/cjs/src/embed/ts-embed.spec.js +187 -108
- package/cjs/src/embed/ts-embed.spec.js.map +1 -1
- package/cjs/src/hostEventsTypeMapping.d.ts +2 -0
- package/cjs/src/hostEventsTypeMapping.d.ts.map +1 -0
- package/cjs/src/hostEventsTypeMapping.js +4 -0
- package/cjs/src/hostEventsTypeMapping.js.map +1 -0
- package/cjs/src/types.d.ts +27 -0
- package/cjs/src/types.d.ts.map +1 -1
- package/cjs/src/types.js.map +1 -1
- package/cjs/src/utils/embedApi/contracts.d.ts +101 -0
- package/cjs/src/utils/embedApi/contracts.d.ts.map +1 -0
- package/cjs/src/utils/embedApi/contracts.js +17 -0
- package/cjs/src/utils/embedApi/contracts.js.map +1 -0
- package/cjs/src/utils/embedApi/embedApiClient.d.ts +12 -0
- package/cjs/src/utils/embedApi/embedApiClient.d.ts.map +1 -0
- package/cjs/src/utils/embedApi/embedApiClient.js +46 -0
- package/cjs/src/utils/embedApi/embedApiClient.js.map +1 -0
- package/cjs/src/utils/embedApi/processEmbedApi.d.ts +9 -0
- package/cjs/src/utils/embedApi/processEmbedApi.d.ts.map +1 -0
- package/cjs/src/utils/embedApi/processEmbedApi.js +18 -0
- package/cjs/src/utils/embedApi/processEmbedApi.js.map +1 -0
- package/dist/{index-FKywZXHG.js → index-BBBimG1x.js} +1 -1
- package/dist/index-CENLvayL.js +7370 -0
- package/dist/index-CbltIawo.js +7370 -0
- package/dist/index-CoQfqaHj.js +7370 -0
- package/dist/index-CzwzS0P4.js +7370 -0
- package/dist/index-DFwi_pV_.js +7370 -0
- package/dist/index-DOIjN0N_.js +7370 -0
- package/dist/index-DYBx8SuE.js +7370 -0
- package/dist/index-DaLHJaLd.js +7370 -0
- package/dist/index-DnJX-gN2.js +7370 -0
- package/dist/index-nWevLycs.js +7370 -0
- package/dist/src/embed/search-bar.d.ts +24 -1
- package/dist/src/embed/search-bar.d.ts.map +1 -1
- package/dist/src/embed/search.d.ts +26 -1
- package/dist/src/embed/search.d.ts.map +1 -1
- package/dist/src/embed/searchEmbed-basic-auth.spec.d.ts +2 -0
- package/dist/src/embed/searchEmbed-basic-auth.spec.d.ts.map +1 -0
- package/dist/src/embed/ts-embed.d.ts +4 -1
- package/dist/src/embed/ts-embed.d.ts.map +1 -1
- package/dist/src/hostEventsTypeMapping.d.ts +2 -0
- package/dist/src/hostEventsTypeMapping.d.ts.map +1 -0
- package/dist/src/types.d.ts +27 -0
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/utils/embedApi/contracts.d.ts +101 -0
- package/dist/src/utils/embedApi/contracts.d.ts.map +1 -0
- package/dist/src/utils/embedApi/embedApiClient.d.ts +12 -0
- package/dist/src/utils/embedApi/embedApiClient.d.ts.map +1 -0
- package/dist/src/utils/embedApi/processEmbedApi.d.ts +9 -0
- package/dist/src/utils/embedApi/processEmbedApi.d.ts.map +1 -0
- package/dist/tsembed-react.es.js +81 -38
- package/dist/tsembed-react.js +80 -37
- package/dist/tsembed.es.js +81 -38
- package/dist/tsembed.js +80 -37
- package/dist/visual-embed-sdk-react-full.d.ts +78 -0
- package/dist/visual-embed-sdk-react.d.ts +78 -0
- package/dist/visual-embed-sdk.d.ts +78 -0
- package/lib/package.json +1 -1
- package/lib/src/embed/search-bar.d.ts +24 -1
- package/lib/src/embed/search-bar.d.ts.map +1 -1
- package/lib/src/embed/search-bar.js +13 -2
- package/lib/src/embed/search-bar.js.map +1 -1
- package/lib/src/embed/search.d.ts +26 -1
- package/lib/src/embed/search.d.ts.map +1 -1
- package/lib/src/embed/search.js +16 -2
- package/lib/src/embed/search.js.map +1 -1
- package/lib/src/embed/search.spec.js +51 -2
- package/lib/src/embed/search.spec.js.map +1 -1
- package/lib/src/embed/searchEmbed-basic-auth.spec.d.ts +2 -0
- package/lib/src/embed/searchEmbed-basic-auth.spec.d.ts.map +1 -0
- package/lib/src/embed/searchEmbed-basic-auth.spec.js +101 -0
- package/lib/src/embed/searchEmbed-basic-auth.spec.js.map +1 -0
- package/lib/src/embed/ts-embed.d.ts +4 -1
- package/lib/src/embed/ts-embed.d.ts.map +1 -1
- package/lib/src/embed/ts-embed.js +49 -31
- package/lib/src/embed/ts-embed.js.map +1 -1
- package/lib/src/embed/ts-embed.spec.js +187 -108
- package/lib/src/embed/ts-embed.spec.js.map +1 -1
- package/lib/src/hostEventsTypeMapping.d.ts +2 -0
- package/lib/src/hostEventsTypeMapping.d.ts.map +1 -0
- package/lib/src/hostEventsTypeMapping.js +2 -0
- package/lib/src/hostEventsTypeMapping.js.map +1 -0
- package/lib/src/types.d.ts +27 -0
- package/lib/src/types.d.ts.map +1 -1
- package/lib/src/types.js.map +1 -1
- package/lib/src/utils/embedApi/contracts.d.ts +101 -0
- package/lib/src/utils/embedApi/contracts.d.ts.map +1 -0
- package/lib/src/utils/embedApi/contracts.js +14 -0
- package/lib/src/utils/embedApi/contracts.js.map +1 -0
- package/lib/src/utils/embedApi/embedApiClient.d.ts +12 -0
- package/lib/src/utils/embedApi/embedApiClient.d.ts.map +1 -0
- package/lib/src/utils/embedApi/embedApiClient.js +42 -0
- package/lib/src/utils/embedApi/embedApiClient.js.map +1 -0
- package/lib/src/utils/embedApi/processEmbedApi.d.ts +9 -0
- package/lib/src/utils/embedApi/processEmbedApi.d.ts.map +1 -0
- package/lib/src/utils/embedApi/processEmbedApi.js +14 -0
- package/lib/src/utils/embedApi/processEmbedApi.js.map +1 -0
- package/lib/src/visual-embed-sdk.d.ts +81 -3
- package/package.json +1 -1
- package/src/embed/search-bar.tsx +36 -2
- package/src/embed/search.spec.ts +66 -1
- package/src/embed/search.ts +38 -1
- package/src/embed/ts-embed.spec.ts +205 -113
- package/src/embed/ts-embed.ts +52 -30
- package/src/types.ts +28 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { HostEvent } from '../../types';
|
|
2
|
+
export var EmbedApiEvent;
|
|
3
|
+
(function (EmbedApiEvent) {
|
|
4
|
+
EmbedApiEvent["addVizToPinboard"] = "addVizToPinboard";
|
|
5
|
+
EmbedApiEvent["saveAnswer"] = "saveAnswer";
|
|
6
|
+
EmbedApiEvent["getA3AnalysisColumns"] = "getA3AnalysisColumns";
|
|
7
|
+
EmbedApiEvent["getPinboardTabInfo"] = "getPinboardTabInfo";
|
|
8
|
+
EmbedApiEvent["getDiscoverabilityStatus"] = "getDiscoverabilityStatus";
|
|
9
|
+
EmbedApiEvent["getAvailableEmbedApis"] = "getAvailableEmbedApis";
|
|
10
|
+
EmbedApiEvent["getAnswerPageConfig"] = "getAnswerPageConfig";
|
|
11
|
+
EmbedApiEvent["getPinboardPageConfig"] = "getPinboardPageConfig";
|
|
12
|
+
EmbedApiEvent["embedApiEventNotFound"] = "embedApiEventNotFound";
|
|
13
|
+
})(EmbedApiEvent || (EmbedApiEvent = {}));
|
|
14
|
+
//# sourceMappingURL=contracts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../../../src/utils/embedApi/contracts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,CAAN,IAAY,aAUX;AAVD,WAAY,aAAa;IACvB,sDAAqC,CAAA;IACrC,0CAAyB,CAAA;IACzB,8DAA6C,CAAA;IAC7C,0DAAyC,CAAA;IACzC,sEAAqD,CAAA;IACrD,gEAA+C,CAAA;IAC/C,4DAA2C,CAAA;IAC3C,gEAA+C,CAAA;IAC/C,gEAA+C,CAAA;AACjD,CAAC,EAVW,aAAa,KAAb,aAAa,QAUxB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { HostEvent } from '../../types';
|
|
2
|
+
import { EmbedApiArrayResponse, EmbedApiContractBase, EmbedApiRequest, HostEventRequest, HostEventResponse } from './contracts';
|
|
3
|
+
export declare class HostEventClient {
|
|
4
|
+
iFrame: HTMLIFrameElement;
|
|
5
|
+
thoughtSpotHost: string;
|
|
6
|
+
constructor(iFrame: HTMLIFrameElement, thoughtSpotHost: string);
|
|
7
|
+
executeEmbedApi<ApiName extends keyof EmbedApiContractBase>(apiName: ApiName, parameters: EmbedApiRequest<ApiName>): EmbedApiArrayResponse<ApiName>;
|
|
8
|
+
hostEventFallback(hostEvent: HostEvent, data: any): Promise<any>;
|
|
9
|
+
handlePinEvent(payload: HostEventRequest<HostEvent.Pin>): Promise<HostEventResponse<HostEvent.Pin>>;
|
|
10
|
+
executeHostEvent<T extends HostEvent>(hostEvent: HostEvent, payload: HostEventRequest<T>): Promise<HostEventResponse<HostEvent>>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=embedApiClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embedApiClient.d.ts","sourceRoot":"","sources":["../../../../src/utils/embedApi/embedApiClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EACH,qBAAqB,EACrB,oBAAoB,EACL,eAAe,EAAE,gBAAgB,EAAE,iBAAiB,EACtE,MAAM,aAAa,CAAC;AAErB,qBAAa,eAAe;IAC1B,MAAM,EAAE,iBAAiB,CAAC;IAE1B,eAAe,EAAE,MAAM,CAAC;gBAEZ,MAAM,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM;IAKxD,eAAe,CAAC,OAAO,SAAS,MAAM,oBAAoB,EAAE,OAAO,EAAE,OAAO,EAC9E,UAAU,EAAE,eAAe,CAAC,OAAO,CAAC,GACtC,qBAAqB,CAAC,OAAO,CAAC;IAS1B,iBAAiB,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAIhE,cAAc,CAChB,OAAO,EAAE,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,GACzC,OAAO,CAAC,iBAAiB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAmBtC,gBAAgB,CAAC,CAAC,SAAS,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAC5F,OAAO,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;CAOxC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { HostEvent } from '../../types';
|
|
2
|
+
import { processTrigger } from '../processTrigger';
|
|
3
|
+
import { EmbedApiEvent, } from './contracts';
|
|
4
|
+
export class HostEventClient {
|
|
5
|
+
constructor(iFrame, thoughtSpotHost) {
|
|
6
|
+
this.iFrame = iFrame;
|
|
7
|
+
this.thoughtSpotHost = thoughtSpotHost;
|
|
8
|
+
}
|
|
9
|
+
async executeEmbedApi(apiName, parameters) {
|
|
10
|
+
const res = await processTrigger(this.iFrame, HostEvent.UiPassthrough, this.thoughtSpotHost, {
|
|
11
|
+
type: apiName,
|
|
12
|
+
parameters,
|
|
13
|
+
});
|
|
14
|
+
return res;
|
|
15
|
+
}
|
|
16
|
+
async hostEventFallback(hostEvent, data) {
|
|
17
|
+
return processTrigger(this.iFrame, hostEvent, this.thoughtSpotHost, data);
|
|
18
|
+
}
|
|
19
|
+
async handlePinEvent(payload) {
|
|
20
|
+
var _a, _b, _c, _d;
|
|
21
|
+
const res = (await this.executeEmbedApi(EmbedApiEvent.addVizToPinboard, payload))
|
|
22
|
+
.filter((r) => r.error || r.value)[0];
|
|
23
|
+
if (!res) {
|
|
24
|
+
const noVizFoundError = `No viz found${payload.vizId ? ` with id ${payload.vizId}` : ''}`;
|
|
25
|
+
return { error: noVizFoundError };
|
|
26
|
+
}
|
|
27
|
+
if (res.error) {
|
|
28
|
+
return { error: (_a = res === null || res === void 0 ? void 0 : res.error) === null || _a === void 0 ? void 0 : _a.message };
|
|
29
|
+
}
|
|
30
|
+
if ((_c = (_b = res.value) === null || _b === void 0 ? void 0 : _b.errors) === null || _c === void 0 ? void 0 : _c.message) {
|
|
31
|
+
return { error: (_d = res === null || res === void 0 ? void 0 : res.value.errors) === null || _d === void 0 ? void 0 : _d.message };
|
|
32
|
+
}
|
|
33
|
+
return { value: res.value };
|
|
34
|
+
}
|
|
35
|
+
async executeHostEvent(hostEvent, payload) {
|
|
36
|
+
if (hostEvent === HostEvent.Pin && typeof payload === 'object') {
|
|
37
|
+
return this.handlePinEvent(payload);
|
|
38
|
+
}
|
|
39
|
+
return this.hostEventFallback(hostEvent, payload);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=embedApiClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embedApiClient.js","sourceRoot":"","sources":["../../../../src/utils/embedApi/embedApiClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAGH,aAAa,GAChB,MAAM,aAAa,CAAC;AAErB,MAAM,OAAO,eAAe;IAK1B,YAAY,MAAyB,EAAE,eAAuB;QAC1D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,eAAe,CAA6C,OAAgB,EAC9E,UAAoC;QAEpC,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,eAAe,EAAE;YACzF,IAAI,EAAE,OAAO;YACb,UAAU;SACb,CAAC,CAAC;QAEH,OAAO,GAAG,CAAC;IACf,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,SAAoB,EAAE,IAAS;QACnD,OAAO,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;IAC9E,CAAC;IAED,KAAK,CAAC,cAAc,CAChB,OAAwC;;QAExC,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;aAC5E,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAE1C,IAAI,CAAC,GAAG,EAAE;YACN,MAAM,eAAe,GAAG,eAAe,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YAC1F,OAAO,EAAE,KAAK,EAAE,eAAe,EAAsC,CAAC;SACzE;QAED,IAAI,GAAG,CAAC,KAAK,EAAE;YACX,OAAO,EAAE,KAAK,EAAE,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,KAAK,0CAAE,OAAO,EAAE,CAAC;SACzC;QACD,IAAI,MAAA,MAAA,GAAG,CAAC,KAAK,0CAAE,MAAM,0CAAE,OAAO,EAAE;YAC5B,OAAO,EAAE,KAAK,EAAE,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,KAAK,CAAC,MAAM,0CAAE,OAAO,EAAE,CAAC;SAChD;QAED,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAsB,SAAoB,EAAE,OAA4B;QAE1F,IAAI,SAAS,KAAK,SAAS,CAAC,GAAG,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;YAC5D,OAAO,IAAI,CAAC,cAAc,CAAC,OAA0C,CAAC,CAAC;SAC1E;QAED,OAAO,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;CACF"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { HostEvent } from '../../types';
|
|
2
|
+
/**
|
|
3
|
+
* Check if the event is an embed API event.
|
|
4
|
+
* @param messageType
|
|
5
|
+
* @param payload
|
|
6
|
+
* @returns boolean
|
|
7
|
+
*/
|
|
8
|
+
export declare function isEmbedApiEvent(messageType: HostEvent, payload: any): boolean;
|
|
9
|
+
//# sourceMappingURL=processEmbedApi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"processEmbedApi.d.ts","sourceRoot":"","sources":["../../../../src/utils/embedApi/processEmbedApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,SAAS,EAAE,MAAM,aAAa,CAAC;AAMpD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAK7E"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { HostEvent } from '../../types';
|
|
2
|
+
/**
|
|
3
|
+
* Check if the event is an embed API event.
|
|
4
|
+
* @param messageType
|
|
5
|
+
* @param payload
|
|
6
|
+
* @returns boolean
|
|
7
|
+
*/
|
|
8
|
+
export function isEmbedApiEvent(messageType, payload) {
|
|
9
|
+
if (messageType === HostEvent.Pin && typeof payload === 'object') {
|
|
10
|
+
return true;
|
|
11
|
+
}
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=processEmbedApi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"processEmbedApi.js","sourceRoot":"","sources":["../../../../src/utils/embedApi/processEmbedApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,SAAS,EAAE,MAAM,aAAa,CAAC;AAMpD;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,WAAsB,EAAE,OAAY;IAChE,IAAI,WAAW,KAAK,SAAS,CAAC,GAAG,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;QAC9D,OAAO,IAAI,CAAC;KACf;IACD,OAAO,KAAK,CAAC;AACjB,CAAC"}
|
|
@@ -1089,7 +1089,7 @@ declare module '@thoughtspot/visual-embed-sdk/embed/search' {
|
|
|
1089
1089
|
* @summary Search embed
|
|
1090
1090
|
* @author Ayon Ghosh <ayon.ghosh@thoughtspot.com>
|
|
1091
1091
|
*/
|
|
1092
|
-
import { DOMSelector, Action, ViewConfig } from '@thoughtspot/visual-embed-sdk/types';
|
|
1092
|
+
import { DOMSelector, Action, ViewConfig, DefaultAppInitData } from '@thoughtspot/visual-embed-sdk/types';
|
|
1093
1093
|
import { TsEmbed } from '@thoughtspot/visual-embed-sdk/embed/ts-embed';
|
|
1094
1094
|
/**
|
|
1095
1095
|
* Configuration for search options.
|
|
@@ -1258,6 +1258,22 @@ declare module '@thoughtspot/visual-embed-sdk/embed/search' {
|
|
|
1258
1258
|
* ```
|
|
1259
1259
|
*/
|
|
1260
1260
|
searchOptions?: SearchOptions;
|
|
1261
|
+
/**
|
|
1262
|
+
* Exclude the search token string from the URL.
|
|
1263
|
+
* If set to true, the search token string is not appended to the URL.
|
|
1264
|
+
* @version: SDK: 1.35.7 | ThoughtSpot: 10.7.0.cl
|
|
1265
|
+
* @example
|
|
1266
|
+
* ```js
|
|
1267
|
+
* const embed = new SearchEmbed('#tsEmbed', {
|
|
1268
|
+
* searchOptions: {
|
|
1269
|
+
* searchTokenString: '[quantity purchased] [region]',
|
|
1270
|
+
* executeSearch: true,
|
|
1271
|
+
* },
|
|
1272
|
+
* excludeSearchTokenStringFromURL: true,
|
|
1273
|
+
* });
|
|
1274
|
+
* ```
|
|
1275
|
+
*/
|
|
1276
|
+
excludeSearchTokenStringFromURL?: boolean;
|
|
1261
1277
|
/**
|
|
1262
1278
|
* The GUID of a saved answer to load initially.
|
|
1263
1279
|
* @version: SDK: 1.1.0 | ThoughtSpot: 8.1.0.sw
|
|
@@ -1335,6 +1351,9 @@ declare module '@thoughtspot/visual-embed-sdk/embed/search' {
|
|
|
1335
1351
|
focusSearchBarOnRender?: boolean;
|
|
1336
1352
|
}
|
|
1337
1353
|
export const HiddenActionItemByDefaultForSearchEmbed: Action[];
|
|
1354
|
+
export interface SearchAppInitData extends DefaultAppInitData {
|
|
1355
|
+
searchOptions?: SearchOptions;
|
|
1356
|
+
}
|
|
1338
1357
|
/**
|
|
1339
1358
|
* Embed ThoughtSpot search
|
|
1340
1359
|
* @group Embed components
|
|
@@ -1345,6 +1364,12 @@ declare module '@thoughtspot/visual-embed-sdk/embed/search' {
|
|
|
1345
1364
|
*/
|
|
1346
1365
|
protected viewConfig: SearchViewConfig;
|
|
1347
1366
|
constructor(domSelector: DOMSelector, viewConfig: SearchViewConfig);
|
|
1367
|
+
protected getSearchInitData(): {
|
|
1368
|
+
searchOptions?: {
|
|
1369
|
+
searchTokenString: string;
|
|
1370
|
+
};
|
|
1371
|
+
};
|
|
1372
|
+
protected getAppInitData(): Promise<SearchAppInitData>;
|
|
1348
1373
|
protected getEmbedParams(): string;
|
|
1349
1374
|
/**
|
|
1350
1375
|
* Construct the URL of the embedded ThoughtSpot search to be
|
|
@@ -1361,7 +1386,7 @@ declare module '@thoughtspot/visual-embed-sdk/embed/search' {
|
|
|
1361
1386
|
}
|
|
1362
1387
|
|
|
1363
1388
|
declare module '@thoughtspot/visual-embed-sdk/embed/search-bar' {
|
|
1364
|
-
import { ViewConfig } from '@thoughtspot/visual-embed-sdk/types';
|
|
1389
|
+
import { DefaultAppInitData, ViewConfig } from '@thoughtspot/visual-embed-sdk/types';
|
|
1365
1390
|
import { TsEmbed } from '@thoughtspot/visual-embed-sdk/embed/ts-embed';
|
|
1366
1391
|
import { SearchOptions } from '@thoughtspot/visual-embed-sdk/embed/search';
|
|
1367
1392
|
/**
|
|
@@ -1429,6 +1454,25 @@ declare module '@thoughtspot/visual-embed-sdk/embed/search-bar' {
|
|
|
1429
1454
|
* ```
|
|
1430
1455
|
*/
|
|
1431
1456
|
searchOptions?: SearchOptions;
|
|
1457
|
+
/**
|
|
1458
|
+
* Exclude the search token string from the URL.
|
|
1459
|
+
* If set to true, the search token string is not appended to the URL.
|
|
1460
|
+
* @version: SDK: 1.35.7 | ThoughtSpot: 10.7.0.cl
|
|
1461
|
+
* @example
|
|
1462
|
+
* ```js
|
|
1463
|
+
* const embed = new SearchEmbed('#tsEmbed', {
|
|
1464
|
+
* searchOptions: {
|
|
1465
|
+
* searchTokenString: '[quantity purchased] [region]',
|
|
1466
|
+
* executeSearch: true,
|
|
1467
|
+
* },
|
|
1468
|
+
* excludeSearchTokenStringFromURL: true,
|
|
1469
|
+
* });
|
|
1470
|
+
* ```
|
|
1471
|
+
*/
|
|
1472
|
+
excludeSearchTokenStringFromURL?: boolean;
|
|
1473
|
+
}
|
|
1474
|
+
export interface SearchAppInitData extends DefaultAppInitData {
|
|
1475
|
+
searchOptions: SearchOptions;
|
|
1432
1476
|
}
|
|
1433
1477
|
/**
|
|
1434
1478
|
* Embed ThoughtSpot search bar
|
|
@@ -1446,6 +1490,10 @@ declare module '@thoughtspot/visual-embed-sdk/embed/search-bar' {
|
|
|
1446
1490
|
* Render the embedded ThoughtSpot search
|
|
1447
1491
|
*/
|
|
1448
1492
|
render(): Promise<SearchBarEmbed>;
|
|
1493
|
+
protected getSearchInitData(): {
|
|
1494
|
+
searchOptions: SearchOptions;
|
|
1495
|
+
};
|
|
1496
|
+
protected getAppInitData(): Promise<SearchAppInitData>;
|
|
1449
1497
|
}
|
|
1450
1498
|
}
|
|
1451
1499
|
|
|
@@ -2384,6 +2432,22 @@ declare module '@thoughtspot/visual-embed-sdk/types' {
|
|
|
2384
2432
|
additionalFlags?: {
|
|
2385
2433
|
[key: string]: string | number | boolean;
|
|
2386
2434
|
};
|
|
2435
|
+
/**
|
|
2436
|
+
* This is an object (key/val) for customVariables being
|
|
2437
|
+
* used by the third party tool's script.
|
|
2438
|
+
* @example
|
|
2439
|
+
* ```js
|
|
2440
|
+
* const embed = new LiveboardEmbed('#embed', {
|
|
2441
|
+
* ... // other liveboard view config
|
|
2442
|
+
* customVariablesForThirdPartyTools: {
|
|
2443
|
+
* key1: 'value1',
|
|
2444
|
+
* key2: 'value2'
|
|
2445
|
+
* }
|
|
2446
|
+
* });
|
|
2447
|
+
* ```
|
|
2448
|
+
* @version SDK 1.37.0 | Thoughtspot: 10.7.0.cl
|
|
2449
|
+
*/
|
|
2450
|
+
customVariablesForThirdPartyTools?: Record<string, any>;
|
|
2387
2451
|
}
|
|
2388
2452
|
export interface LayoutConfig {
|
|
2389
2453
|
}
|
|
@@ -6319,6 +6383,17 @@ declare module '@thoughtspot/visual-embed-sdk/types' {
|
|
|
6319
6383
|
*/
|
|
6320
6384
|
TRACE = "TRACE"
|
|
6321
6385
|
}
|
|
6386
|
+
export interface DefaultAppInitData {
|
|
6387
|
+
customisations: CustomisationsInterface;
|
|
6388
|
+
authToken: string;
|
|
6389
|
+
runtimeFilterParams: string | null;
|
|
6390
|
+
runtimeParameterParams: string | null;
|
|
6391
|
+
hiddenHomepageModules: HomepageModule[];
|
|
6392
|
+
reorderedHomepageModules: string[];
|
|
6393
|
+
hostConfig: Record<string, any>;
|
|
6394
|
+
hiddenHomeLeftNavItems: string[];
|
|
6395
|
+
customVariablesForThirdPartyTools: Record<string, any>;
|
|
6396
|
+
}
|
|
6322
6397
|
}
|
|
6323
6398
|
|
|
6324
6399
|
declare module '@thoughtspot/visual-embed-sdk/css-variables' {
|
|
@@ -7256,7 +7331,7 @@ declare module '@thoughtspot/visual-embed-sdk/embed/ts-embed' {
|
|
|
7256
7331
|
*/
|
|
7257
7332
|
import { TriggerPayload, TriggerResponse, UIPassthroughArrayResponse, UIPassthroughEvent, UIPassthroughRequest } from '@thoughtspot/visual-embed-sdk/embed/hostEventClient/contracts';
|
|
7258
7333
|
import { AnswerService } from '@thoughtspot/visual-embed-sdk/utils/graphql/answerService/answerService';
|
|
7259
|
-
import { DOMSelector, HostEvent, EmbedEvent, MessageCallback, EmbedConfig, MessageOptions, ViewConfig } from '@thoughtspot/visual-embed-sdk/types';
|
|
7334
|
+
import { DOMSelector, HostEvent, EmbedEvent, MessageCallback, EmbedConfig, MessageOptions, ViewConfig, DefaultAppInitData } from '@thoughtspot/visual-embed-sdk/types';
|
|
7260
7335
|
import { HostEventClient } from '@thoughtspot/visual-embed-sdk/embed/hostEventClient/host-event-client';
|
|
7261
7336
|
/**
|
|
7262
7337
|
* Global prefix for all Thoughtspot postHash Params.
|
|
@@ -7312,6 +7387,9 @@ declare module '@thoughtspot/visual-embed-sdk/embed/ts-embed' {
|
|
|
7312
7387
|
* @param error The error message or object
|
|
7313
7388
|
*/
|
|
7314
7389
|
protected handleError(error: string | Record<string, unknown>): void;
|
|
7390
|
+
protected getAuthTokenForCookielessInit(): Promise<string>;
|
|
7391
|
+
protected getDefaultAppInitData(): Promise<DefaultAppInitData>;
|
|
7392
|
+
protected getAppInitData(): Promise<DefaultAppInitData>;
|
|
7315
7393
|
/**
|
|
7316
7394
|
* Constructs the base URL string to load the ThoughtSpot app.
|
|
7317
7395
|
* @param query
|
package/package.json
CHANGED
package/src/embed/search-bar.tsx
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Param, ViewConfig } from '../types';
|
|
1
|
+
import { DefaultAppInitData, Param, ViewConfig } from '../types';
|
|
2
2
|
import { getQueryParamString } from '../utils';
|
|
3
3
|
import { TsEmbed } from './ts-embed';
|
|
4
4
|
import { SearchOptions } from './search';
|
|
@@ -79,6 +79,26 @@ export interface SearchBarViewConfig
|
|
|
79
79
|
* ```
|
|
80
80
|
*/
|
|
81
81
|
searchOptions?: SearchOptions;
|
|
82
|
+
/**
|
|
83
|
+
* Exclude the search token string from the URL.
|
|
84
|
+
* If set to true, the search token string is not appended to the URL.
|
|
85
|
+
* @version: SDK: 1.35.7 | ThoughtSpot: 10.7.0.cl
|
|
86
|
+
* @example
|
|
87
|
+
* ```js
|
|
88
|
+
* const embed = new SearchEmbed('#tsEmbed', {
|
|
89
|
+
* searchOptions: {
|
|
90
|
+
* searchTokenString: '[quantity purchased] [region]',
|
|
91
|
+
* executeSearch: true,
|
|
92
|
+
* },
|
|
93
|
+
* excludeSearchTokenStringFromURL: true,
|
|
94
|
+
* });
|
|
95
|
+
* ```
|
|
96
|
+
*/
|
|
97
|
+
excludeSearchTokenStringFromURL?: boolean;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export interface SearchAppInitData extends DefaultAppInitData {
|
|
101
|
+
searchOptions: SearchOptions;
|
|
82
102
|
}
|
|
83
103
|
|
|
84
104
|
/**
|
|
@@ -110,6 +130,7 @@ export class SearchBarEmbed extends TsEmbed {
|
|
|
110
130
|
dataSource,
|
|
111
131
|
dataSources,
|
|
112
132
|
useLastSelectedSources = false,
|
|
133
|
+
excludeSearchTokenStringFromURL,
|
|
113
134
|
} = this.viewConfig;
|
|
114
135
|
const path = 'search-bar-embed';
|
|
115
136
|
const queryParams = this.getBaseQueryParams();
|
|
@@ -122,7 +143,7 @@ export class SearchBarEmbed extends TsEmbed {
|
|
|
122
143
|
if (dataSource) {
|
|
123
144
|
queryParams[Param.DataSources] = `["${dataSource}"]`;
|
|
124
145
|
}
|
|
125
|
-
if (searchOptions?.searchTokenString) {
|
|
146
|
+
if (searchOptions?.searchTokenString && !excludeSearchTokenStringFromURL) {
|
|
126
147
|
queryParams[Param.searchTokenString] = encodeURIComponent(
|
|
127
148
|
searchOptions.searchTokenString,
|
|
128
149
|
);
|
|
@@ -157,4 +178,17 @@ export class SearchBarEmbed extends TsEmbed {
|
|
|
157
178
|
await this.renderIFrame(src);
|
|
158
179
|
return this;
|
|
159
180
|
}
|
|
181
|
+
|
|
182
|
+
protected getSearchInitData() {
|
|
183
|
+
return {
|
|
184
|
+
searchOptions: this.viewConfig.excludeSearchTokenStringFromURL
|
|
185
|
+
? this.viewConfig.searchOptions
|
|
186
|
+
: null,
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
protected async getAppInitData(): Promise<SearchAppInitData> {
|
|
191
|
+
const defaultAppInitData = await super.getAppInitData();
|
|
192
|
+
return { ...defaultAppInitData, ...this.getSearchInitData() };
|
|
193
|
+
}
|
|
160
194
|
}
|
package/src/embed/search.spec.ts
CHANGED
|
@@ -2,10 +2,13 @@ import {
|
|
|
2
2
|
SearchEmbed,
|
|
3
3
|
HiddenActionItemByDefaultForSearchEmbed,
|
|
4
4
|
DataPanelCustomColumnGroupsAccordionState,
|
|
5
|
+
SearchOptions,
|
|
5
6
|
} from './search';
|
|
6
7
|
import * as authInstance from '../auth';
|
|
7
8
|
import { init } from '../index';
|
|
8
|
-
import {
|
|
9
|
+
import {
|
|
10
|
+
Action, AuthType, EmbedEvent, RuntimeFilterOp,
|
|
11
|
+
} from '../types';
|
|
9
12
|
import {
|
|
10
13
|
executeAfterWait,
|
|
11
14
|
getDocumentBody,
|
|
@@ -14,6 +17,8 @@ import {
|
|
|
14
17
|
fixedEncodeURI,
|
|
15
18
|
defaultParamsWithoutHiddenActions as defaultParams,
|
|
16
19
|
expectUrlMatchesWithParams,
|
|
20
|
+
getIFrameEl,
|
|
21
|
+
postMessageToParent,
|
|
17
22
|
} from '../test/test-utils';
|
|
18
23
|
import { version } from '../../package.json';
|
|
19
24
|
import { SearchBarEmbed } from './search-bar';
|
|
@@ -533,4 +538,64 @@ describe('Search embed tests', () => {
|
|
|
533
538
|
);
|
|
534
539
|
});
|
|
535
540
|
});
|
|
541
|
+
|
|
542
|
+
test('with excludeSearchTokenStringFromURL', async () => {
|
|
543
|
+
const searchOptions: SearchOptions = {
|
|
544
|
+
searchTokenString: '[commit date][revenue]',
|
|
545
|
+
executeSearch: true,
|
|
546
|
+
};
|
|
547
|
+
const searchEmbed = new SearchEmbed(getRootEl(), {
|
|
548
|
+
...defaultViewConfig,
|
|
549
|
+
searchOptions,
|
|
550
|
+
excludeSearchTokenStringFromURL: true,
|
|
551
|
+
});
|
|
552
|
+
const mockEmbedEventPayload = {
|
|
553
|
+
type: EmbedEvent.APP_INIT,
|
|
554
|
+
data: {},
|
|
555
|
+
};
|
|
556
|
+
searchEmbed.render();
|
|
557
|
+
|
|
558
|
+
const mockPort: any = {
|
|
559
|
+
postMessage: jest.fn(),
|
|
560
|
+
};
|
|
561
|
+
await executeAfterWait(() => {
|
|
562
|
+
const iframe = getIFrameEl();
|
|
563
|
+
postMessageToParent(iframe.contentWindow, mockEmbedEventPayload, mockPort);
|
|
564
|
+
});
|
|
565
|
+
|
|
566
|
+
await executeAfterWait(() => {
|
|
567
|
+
expectUrlMatchesWithParams(
|
|
568
|
+
getIFrameSrc(),
|
|
569
|
+
`http://${thoughtSpotHost}/v2/?${defaultParamsWithHiddenActions}&dataSourceMode=expand&enableDataPanelV2=false&useLastSelectedSources=false${prefixParams}#/embed/saved-answer/${answerId}`,
|
|
570
|
+
);
|
|
571
|
+
});
|
|
572
|
+
|
|
573
|
+
expect(mockPort.postMessage).toHaveBeenCalledWith({
|
|
574
|
+
type: EmbedEvent.APP_INIT,
|
|
575
|
+
data: expect.objectContaining({
|
|
576
|
+
searchOptions: {
|
|
577
|
+
searchTokenString: '[commit date][revenue]',
|
|
578
|
+
},
|
|
579
|
+
}),
|
|
580
|
+
});
|
|
581
|
+
});
|
|
582
|
+
|
|
583
|
+
test('without excludeSearchTokenStringFromURL', async () => {
|
|
584
|
+
const searchOptions: SearchOptions = {
|
|
585
|
+
searchTokenString: '[commit date][revenue]',
|
|
586
|
+
executeSearch: true,
|
|
587
|
+
};
|
|
588
|
+
const searchEmbed = new SearchEmbed(getRootEl(), {
|
|
589
|
+
...defaultViewConfig,
|
|
590
|
+
searchOptions,
|
|
591
|
+
excludeSearchTokenStringFromURL: false,
|
|
592
|
+
});
|
|
593
|
+
searchEmbed.render();
|
|
594
|
+
await executeAfterWait(() => {
|
|
595
|
+
expectUrlMatchesWithParams(
|
|
596
|
+
getIFrameSrc(),
|
|
597
|
+
`http://${thoughtSpotHost}/v2/?${defaultParamsWithHiddenActions}&dataSourceMode=expand&enableDataPanelV2=false&useLastSelectedSources=false&searchTokenString=[commit date][revenue]${prefixParams}#/embed/saved-answer/${answerId}`,
|
|
598
|
+
);
|
|
599
|
+
});
|
|
600
|
+
});
|
|
536
601
|
});
|
package/src/embed/search.ts
CHANGED
|
@@ -12,6 +12,7 @@ import {
|
|
|
12
12
|
Param,
|
|
13
13
|
Action,
|
|
14
14
|
ViewConfig,
|
|
15
|
+
DefaultAppInitData,
|
|
15
16
|
} from '../types';
|
|
16
17
|
import {
|
|
17
18
|
getQueryParamString,
|
|
@@ -202,6 +203,22 @@ export interface SearchViewConfig
|
|
|
202
203
|
* ```
|
|
203
204
|
*/
|
|
204
205
|
searchOptions?: SearchOptions;
|
|
206
|
+
/**
|
|
207
|
+
* Exclude the search token string from the URL.
|
|
208
|
+
* If set to true, the search token string is not appended to the URL.
|
|
209
|
+
* @version: SDK: 1.35.7 | ThoughtSpot: 10.7.0.cl
|
|
210
|
+
* @example
|
|
211
|
+
* ```js
|
|
212
|
+
* const embed = new SearchEmbed('#tsEmbed', {
|
|
213
|
+
* searchOptions: {
|
|
214
|
+
* searchTokenString: '[quantity purchased] [region]',
|
|
215
|
+
* executeSearch: true,
|
|
216
|
+
* },
|
|
217
|
+
* excludeSearchTokenStringFromURL: true,
|
|
218
|
+
* });
|
|
219
|
+
* ```
|
|
220
|
+
*/
|
|
221
|
+
excludeSearchTokenStringFromURL?: boolean;
|
|
205
222
|
/**
|
|
206
223
|
* The GUID of a saved answer to load initially.
|
|
207
224
|
* @version: SDK: 1.1.0 | ThoughtSpot: 8.1.0.sw
|
|
@@ -287,6 +304,10 @@ export const HiddenActionItemByDefaultForSearchEmbed = [
|
|
|
287
304
|
Action.AnswerDelete,
|
|
288
305
|
];
|
|
289
306
|
|
|
307
|
+
export interface SearchAppInitData extends DefaultAppInitData {
|
|
308
|
+
searchOptions?: SearchOptions;
|
|
309
|
+
}
|
|
310
|
+
|
|
290
311
|
/**
|
|
291
312
|
* Embed ThoughtSpot search
|
|
292
313
|
* @group Embed components
|
|
@@ -319,6 +340,21 @@ export class SearchEmbed extends TsEmbed {
|
|
|
319
340
|
return dataSourceMode;
|
|
320
341
|
}
|
|
321
342
|
|
|
343
|
+
protected getSearchInitData() {
|
|
344
|
+
return {
|
|
345
|
+
...(this.viewConfig.excludeSearchTokenStringFromURL ? {
|
|
346
|
+
searchOptions: {
|
|
347
|
+
searchTokenString: this.viewConfig.searchOptions?.searchTokenString,
|
|
348
|
+
},
|
|
349
|
+
} : {}),
|
|
350
|
+
};
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
protected async getAppInitData(): Promise<SearchAppInitData> {
|
|
354
|
+
const defaultAppInitData = await super.getAppInitData();
|
|
355
|
+
return { ...defaultAppInitData, ...this.getSearchInitData() };
|
|
356
|
+
}
|
|
357
|
+
|
|
322
358
|
protected getEmbedParams(): string {
|
|
323
359
|
const {
|
|
324
360
|
hideResults,
|
|
@@ -340,6 +376,7 @@ export class SearchEmbed extends TsEmbed {
|
|
|
340
376
|
dataPanelCustomGroupsAccordionInitialState = DataPanelCustomColumnGroupsAccordionState.EXPAND_ALL,
|
|
341
377
|
focusSearchBarOnRender = true,
|
|
342
378
|
excludeRuntimeParametersfromURL,
|
|
379
|
+
excludeSearchTokenStringFromURL,
|
|
343
380
|
collapseSearchBar = true,
|
|
344
381
|
} = this.viewConfig;
|
|
345
382
|
const queryParams = this.getBaseQueryParams();
|
|
@@ -355,7 +392,7 @@ export class SearchEmbed extends TsEmbed {
|
|
|
355
392
|
if (dataSource) {
|
|
356
393
|
queryParams[Param.DataSources] = `["${dataSource}"]`;
|
|
357
394
|
}
|
|
358
|
-
if (searchOptions?.searchTokenString) {
|
|
395
|
+
if (searchOptions?.searchTokenString && !excludeSearchTokenStringFromURL) {
|
|
359
396
|
queryParams[Param.searchTokenString] = encodeURIComponent(
|
|
360
397
|
searchOptions.searchTokenString,
|
|
361
398
|
);
|