@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.
Files changed (124) hide show
  1. package/cjs/package.json +1 -1
  2. package/cjs/src/embed/search-bar.d.ts +24 -1
  3. package/cjs/src/embed/search-bar.d.ts.map +1 -1
  4. package/cjs/src/embed/search-bar.js +13 -2
  5. package/cjs/src/embed/search-bar.js.map +1 -1
  6. package/cjs/src/embed/search.d.ts +26 -1
  7. package/cjs/src/embed/search.d.ts.map +1 -1
  8. package/cjs/src/embed/search.js +16 -2
  9. package/cjs/src/embed/search.js.map +1 -1
  10. package/cjs/src/embed/search.spec.js +49 -0
  11. package/cjs/src/embed/search.spec.js.map +1 -1
  12. package/cjs/src/embed/searchEmbed-basic-auth.spec.d.ts +2 -0
  13. package/cjs/src/embed/searchEmbed-basic-auth.spec.d.ts.map +1 -0
  14. package/cjs/src/embed/searchEmbed-basic-auth.spec.js +104 -0
  15. package/cjs/src/embed/searchEmbed-basic-auth.spec.js.map +1 -0
  16. package/cjs/src/embed/ts-embed.d.ts +4 -1
  17. package/cjs/src/embed/ts-embed.d.ts.map +1 -1
  18. package/cjs/src/embed/ts-embed.js +49 -31
  19. package/cjs/src/embed/ts-embed.js.map +1 -1
  20. package/cjs/src/embed/ts-embed.spec.js +187 -108
  21. package/cjs/src/embed/ts-embed.spec.js.map +1 -1
  22. package/cjs/src/hostEventsTypeMapping.d.ts +2 -0
  23. package/cjs/src/hostEventsTypeMapping.d.ts.map +1 -0
  24. package/cjs/src/hostEventsTypeMapping.js +4 -0
  25. package/cjs/src/hostEventsTypeMapping.js.map +1 -0
  26. package/cjs/src/types.d.ts +27 -0
  27. package/cjs/src/types.d.ts.map +1 -1
  28. package/cjs/src/types.js.map +1 -1
  29. package/cjs/src/utils/embedApi/contracts.d.ts +101 -0
  30. package/cjs/src/utils/embedApi/contracts.d.ts.map +1 -0
  31. package/cjs/src/utils/embedApi/contracts.js +17 -0
  32. package/cjs/src/utils/embedApi/contracts.js.map +1 -0
  33. package/cjs/src/utils/embedApi/embedApiClient.d.ts +12 -0
  34. package/cjs/src/utils/embedApi/embedApiClient.d.ts.map +1 -0
  35. package/cjs/src/utils/embedApi/embedApiClient.js +46 -0
  36. package/cjs/src/utils/embedApi/embedApiClient.js.map +1 -0
  37. package/cjs/src/utils/embedApi/processEmbedApi.d.ts +9 -0
  38. package/cjs/src/utils/embedApi/processEmbedApi.d.ts.map +1 -0
  39. package/cjs/src/utils/embedApi/processEmbedApi.js +18 -0
  40. package/cjs/src/utils/embedApi/processEmbedApi.js.map +1 -0
  41. package/dist/{index-FKywZXHG.js → index-BBBimG1x.js} +1 -1
  42. package/dist/index-CENLvayL.js +7370 -0
  43. package/dist/index-CbltIawo.js +7370 -0
  44. package/dist/index-CoQfqaHj.js +7370 -0
  45. package/dist/index-CzwzS0P4.js +7370 -0
  46. package/dist/index-DFwi_pV_.js +7370 -0
  47. package/dist/index-DOIjN0N_.js +7370 -0
  48. package/dist/index-DYBx8SuE.js +7370 -0
  49. package/dist/index-DaLHJaLd.js +7370 -0
  50. package/dist/index-DnJX-gN2.js +7370 -0
  51. package/dist/index-nWevLycs.js +7370 -0
  52. package/dist/src/embed/search-bar.d.ts +24 -1
  53. package/dist/src/embed/search-bar.d.ts.map +1 -1
  54. package/dist/src/embed/search.d.ts +26 -1
  55. package/dist/src/embed/search.d.ts.map +1 -1
  56. package/dist/src/embed/searchEmbed-basic-auth.spec.d.ts +2 -0
  57. package/dist/src/embed/searchEmbed-basic-auth.spec.d.ts.map +1 -0
  58. package/dist/src/embed/ts-embed.d.ts +4 -1
  59. package/dist/src/embed/ts-embed.d.ts.map +1 -1
  60. package/dist/src/hostEventsTypeMapping.d.ts +2 -0
  61. package/dist/src/hostEventsTypeMapping.d.ts.map +1 -0
  62. package/dist/src/types.d.ts +27 -0
  63. package/dist/src/types.d.ts.map +1 -1
  64. package/dist/src/utils/embedApi/contracts.d.ts +101 -0
  65. package/dist/src/utils/embedApi/contracts.d.ts.map +1 -0
  66. package/dist/src/utils/embedApi/embedApiClient.d.ts +12 -0
  67. package/dist/src/utils/embedApi/embedApiClient.d.ts.map +1 -0
  68. package/dist/src/utils/embedApi/processEmbedApi.d.ts +9 -0
  69. package/dist/src/utils/embedApi/processEmbedApi.d.ts.map +1 -0
  70. package/dist/tsembed-react.es.js +81 -38
  71. package/dist/tsembed-react.js +80 -37
  72. package/dist/tsembed.es.js +81 -38
  73. package/dist/tsembed.js +80 -37
  74. package/dist/visual-embed-sdk-react-full.d.ts +78 -0
  75. package/dist/visual-embed-sdk-react.d.ts +78 -0
  76. package/dist/visual-embed-sdk.d.ts +78 -0
  77. package/lib/package.json +1 -1
  78. package/lib/src/embed/search-bar.d.ts +24 -1
  79. package/lib/src/embed/search-bar.d.ts.map +1 -1
  80. package/lib/src/embed/search-bar.js +13 -2
  81. package/lib/src/embed/search-bar.js.map +1 -1
  82. package/lib/src/embed/search.d.ts +26 -1
  83. package/lib/src/embed/search.d.ts.map +1 -1
  84. package/lib/src/embed/search.js +16 -2
  85. package/lib/src/embed/search.js.map +1 -1
  86. package/lib/src/embed/search.spec.js +51 -2
  87. package/lib/src/embed/search.spec.js.map +1 -1
  88. package/lib/src/embed/searchEmbed-basic-auth.spec.d.ts +2 -0
  89. package/lib/src/embed/searchEmbed-basic-auth.spec.d.ts.map +1 -0
  90. package/lib/src/embed/searchEmbed-basic-auth.spec.js +101 -0
  91. package/lib/src/embed/searchEmbed-basic-auth.spec.js.map +1 -0
  92. package/lib/src/embed/ts-embed.d.ts +4 -1
  93. package/lib/src/embed/ts-embed.d.ts.map +1 -1
  94. package/lib/src/embed/ts-embed.js +49 -31
  95. package/lib/src/embed/ts-embed.js.map +1 -1
  96. package/lib/src/embed/ts-embed.spec.js +187 -108
  97. package/lib/src/embed/ts-embed.spec.js.map +1 -1
  98. package/lib/src/hostEventsTypeMapping.d.ts +2 -0
  99. package/lib/src/hostEventsTypeMapping.d.ts.map +1 -0
  100. package/lib/src/hostEventsTypeMapping.js +2 -0
  101. package/lib/src/hostEventsTypeMapping.js.map +1 -0
  102. package/lib/src/types.d.ts +27 -0
  103. package/lib/src/types.d.ts.map +1 -1
  104. package/lib/src/types.js.map +1 -1
  105. package/lib/src/utils/embedApi/contracts.d.ts +101 -0
  106. package/lib/src/utils/embedApi/contracts.d.ts.map +1 -0
  107. package/lib/src/utils/embedApi/contracts.js +14 -0
  108. package/lib/src/utils/embedApi/contracts.js.map +1 -0
  109. package/lib/src/utils/embedApi/embedApiClient.d.ts +12 -0
  110. package/lib/src/utils/embedApi/embedApiClient.d.ts.map +1 -0
  111. package/lib/src/utils/embedApi/embedApiClient.js +42 -0
  112. package/lib/src/utils/embedApi/embedApiClient.js.map +1 -0
  113. package/lib/src/utils/embedApi/processEmbedApi.d.ts +9 -0
  114. package/lib/src/utils/embedApi/processEmbedApi.d.ts.map +1 -0
  115. package/lib/src/utils/embedApi/processEmbedApi.js +14 -0
  116. package/lib/src/utils/embedApi/processEmbedApi.js.map +1 -0
  117. package/lib/src/visual-embed-sdk.d.ts +81 -3
  118. package/package.json +1 -1
  119. package/src/embed/search-bar.tsx +36 -2
  120. package/src/embed/search.spec.ts +66 -1
  121. package/src/embed/search.ts +38 -1
  122. package/src/embed/ts-embed.spec.ts +205 -113
  123. package/src/embed/ts-embed.ts +52 -30
  124. 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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thoughtspot/visual-embed-sdk",
3
- "version": "1.35.5",
3
+ "version": "1.35.7",
4
4
  "description": "ThoughtSpot Embed SDK",
5
5
  "module": "lib/src/index.js",
6
6
  "main": "dist/tsembed.js",
@@ -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
  }
@@ -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 { Action, AuthType, RuntimeFilterOp } from '../types';
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
  });
@@ -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
  );