@thoughtspot/visual-embed-sdk 1.24.0 → 1.24.2

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 (245) hide show
  1. package/cjs/package.json +2 -3
  2. package/cjs/src/embed/app.d.ts +23 -1
  3. package/cjs/src/embed/app.d.ts.map +1 -1
  4. package/cjs/src/embed/app.js +5 -1
  5. package/cjs/src/embed/app.js.map +1 -1
  6. package/cjs/src/embed/base.d.ts +3 -4
  7. package/cjs/src/embed/base.d.ts.map +1 -1
  8. package/cjs/src/embed/base.js +3 -4
  9. package/cjs/src/embed/base.js.map +1 -1
  10. package/cjs/src/embed/liveboard.d.ts +23 -1
  11. package/cjs/src/embed/liveboard.d.ts.map +1 -1
  12. package/cjs/src/embed/liveboard.js +11 -1
  13. package/cjs/src/embed/liveboard.js.map +1 -1
  14. package/cjs/src/embed/sage.d.ts +2 -1
  15. package/cjs/src/embed/sage.d.ts.map +1 -1
  16. package/cjs/src/embed/sage.js +1 -0
  17. package/cjs/src/embed/sage.js.map +1 -1
  18. package/cjs/src/embed/search-bar.d.ts +2 -1
  19. package/cjs/src/embed/search-bar.d.ts.map +1 -1
  20. package/cjs/src/embed/search-bar.js +1 -0
  21. package/cjs/src/embed/search-bar.js.map +1 -1
  22. package/cjs/src/embed/search.d.ts +2 -1
  23. package/cjs/src/embed/search.d.ts.map +1 -1
  24. package/cjs/src/embed/search.js +1 -0
  25. package/cjs/src/embed/search.js.map +1 -1
  26. package/cjs/src/embed/ts-embed.d.ts +1 -0
  27. package/cjs/src/embed/ts-embed.d.ts.map +1 -1
  28. package/cjs/src/embed/ts-embed.js +4 -10
  29. package/cjs/src/embed/ts-embed.js.map +1 -1
  30. package/cjs/src/embed/ts-embed.spec.js +49 -2
  31. package/cjs/src/embed/ts-embed.spec.js.map +1 -1
  32. package/cjs/src/index.d.ts +3 -2
  33. package/cjs/src/index.d.ts.map +1 -1
  34. package/cjs/src/index.js +3 -1
  35. package/cjs/src/index.js.map +1 -1
  36. package/cjs/src/mixpanel-service.d.ts.map +1 -1
  37. package/cjs/src/mixpanel-service.js +2 -0
  38. package/cjs/src/mixpanel-service.js.map +1 -1
  39. package/cjs/src/mixpanel-service.spec.js +1 -0
  40. package/cjs/src/mixpanel-service.spec.js.map +1 -1
  41. package/cjs/src/types.d.ts +46 -39
  42. package/cjs/src/types.d.ts.map +1 -1
  43. package/cjs/src/types.js +7 -13
  44. package/cjs/src/types.js.map +1 -1
  45. package/cjs/src/utils/graphql/answerService/answer-queries.d.ts +5 -0
  46. package/cjs/src/utils/graphql/answerService/answer-queries.d.ts.map +1 -0
  47. package/cjs/src/utils/graphql/answerService/answer-queries.js +80 -0
  48. package/cjs/src/utils/graphql/answerService/answer-queries.js.map +1 -0
  49. package/cjs/src/utils/graphql/answerService/answerService.d.ts +61 -0
  50. package/cjs/src/utils/graphql/answerService/answerService.d.ts.map +1 -0
  51. package/cjs/src/utils/graphql/answerService/answerService.js +182 -0
  52. package/cjs/src/utils/graphql/answerService/answerService.js.map +1 -0
  53. package/cjs/src/utils/graphql/answerService/answerService.spec.d.ts +2 -0
  54. package/cjs/src/utils/graphql/answerService/answerService.spec.d.ts.map +1 -0
  55. package/cjs/src/utils/graphql/answerService/answerService.spec.js +201 -0
  56. package/cjs/src/utils/graphql/answerService/answerService.spec.js.map +1 -0
  57. package/cjs/src/utils/graphql/graphql-request.d.ts +15 -0
  58. package/cjs/src/utils/graphql/graphql-request.d.ts.map +1 -0
  59. package/cjs/src/utils/graphql/graphql-request.js +40 -0
  60. package/cjs/src/utils/graphql/graphql-request.js.map +1 -0
  61. package/cjs/src/utils/graphql/sourceService.d.ts +8 -0
  62. package/cjs/src/utils/graphql/sourceService.d.ts.map +1 -0
  63. package/cjs/src/utils/graphql/sourceService.js +69 -0
  64. package/cjs/src/utils/graphql/sourceService.js.map +1 -0
  65. package/cjs/src/utils/graphql/sourceService.spec.d.ts +2 -0
  66. package/cjs/src/utils/graphql/sourceService.spec.d.ts.map +1 -0
  67. package/cjs/src/utils/graphql/sourceService.spec.js +12 -0
  68. package/cjs/src/utils/graphql/sourceService.spec.js.map +1 -0
  69. package/cjs/src/utils/processData.d.ts.map +1 -1
  70. package/cjs/src/utils/processData.js +7 -11
  71. package/cjs/src/utils/processData.js.map +1 -1
  72. package/cjs/src/utils/processData.spec.js +13 -17
  73. package/cjs/src/utils/processData.spec.js.map +1 -1
  74. package/cjs/src/utils.d.ts +6 -0
  75. package/cjs/src/utils.d.ts.map +1 -1
  76. package/cjs/src/utils.js +27 -2
  77. package/cjs/src/utils.js.map +1 -1
  78. package/cjs/src/utils.spec.js +10 -0
  79. package/cjs/src/utils.spec.js.map +1 -1
  80. package/dist/src/embed/app.d.ts +23 -1
  81. package/dist/src/embed/app.d.ts.map +1 -1
  82. package/dist/src/embed/base.d.ts +3 -4
  83. package/dist/src/embed/base.d.ts.map +1 -1
  84. package/dist/src/embed/liveboard.d.ts +23 -1
  85. package/dist/src/embed/liveboard.d.ts.map +1 -1
  86. package/dist/src/embed/sage.d.ts +2 -1
  87. package/dist/src/embed/sage.d.ts.map +1 -1
  88. package/dist/src/embed/search-bar.d.ts +2 -1
  89. package/dist/src/embed/search-bar.d.ts.map +1 -1
  90. package/dist/src/embed/search.d.ts +2 -1
  91. package/dist/src/embed/search.d.ts.map +1 -1
  92. package/dist/src/embed/ts-embed.d.ts +1 -0
  93. package/dist/src/embed/ts-embed.d.ts.map +1 -1
  94. package/dist/src/index.d.ts +3 -2
  95. package/dist/src/index.d.ts.map +1 -1
  96. package/dist/src/mixpanel-service.d.ts.map +1 -1
  97. package/dist/src/types.d.ts +46 -39
  98. package/dist/src/types.d.ts.map +1 -1
  99. package/dist/src/utils/graphql/answerService/answer-queries.d.ts +5 -0
  100. package/dist/src/utils/graphql/answerService/answer-queries.d.ts.map +1 -0
  101. package/dist/src/utils/graphql/answerService/answerService.d.ts +61 -0
  102. package/dist/src/utils/graphql/answerService/answerService.d.ts.map +1 -0
  103. package/dist/src/utils/graphql/answerService/answerService.spec.d.ts +2 -0
  104. package/dist/src/utils/graphql/answerService/answerService.spec.d.ts.map +1 -0
  105. package/dist/src/utils/graphql/graphql-request.d.ts +15 -0
  106. package/dist/src/utils/graphql/graphql-request.d.ts.map +1 -0
  107. package/dist/src/utils/graphql/sourceService.d.ts +8 -0
  108. package/dist/src/utils/graphql/sourceService.d.ts.map +1 -0
  109. package/dist/src/utils/graphql/sourceService.spec.d.ts +2 -0
  110. package/dist/src/utils/graphql/sourceService.spec.d.ts.map +1 -0
  111. package/dist/src/utils/processData.d.ts.map +1 -1
  112. package/dist/src/utils.d.ts +6 -0
  113. package/dist/src/utils.d.ts.map +1 -1
  114. package/dist/tsembed-react.es.js +400 -81
  115. package/dist/tsembed-react.js +400 -81
  116. package/dist/tsembed.es.js +452 -89
  117. package/dist/tsembed.js +452 -88
  118. package/dist/visual-embed-sdk-react-full.d.ts +158 -49
  119. package/dist/visual-embed-sdk-react.d.ts +158 -49
  120. package/dist/visual-embed-sdk.d.ts +158 -49
  121. package/lib/package.json +2 -3
  122. package/lib/src/embed/app.d.ts +23 -1
  123. package/lib/src/embed/app.d.ts.map +1 -1
  124. package/lib/src/embed/app.js +5 -1
  125. package/lib/src/embed/app.js.map +1 -1
  126. package/lib/src/embed/base.d.ts +3 -4
  127. package/lib/src/embed/base.d.ts.map +1 -1
  128. package/lib/src/embed/base.js +3 -4
  129. package/lib/src/embed/base.js.map +1 -1
  130. package/lib/src/embed/liveboard.d.ts +23 -1
  131. package/lib/src/embed/liveboard.d.ts.map +1 -1
  132. package/lib/src/embed/liveboard.js +11 -1
  133. package/lib/src/embed/liveboard.js.map +1 -1
  134. package/lib/src/embed/sage.d.ts +2 -1
  135. package/lib/src/embed/sage.d.ts.map +1 -1
  136. package/lib/src/embed/sage.js +1 -0
  137. package/lib/src/embed/sage.js.map +1 -1
  138. package/lib/src/embed/search-bar.d.ts +2 -1
  139. package/lib/src/embed/search-bar.d.ts.map +1 -1
  140. package/lib/src/embed/search-bar.js +1 -0
  141. package/lib/src/embed/search-bar.js.map +1 -1
  142. package/lib/src/embed/search.d.ts +2 -1
  143. package/lib/src/embed/search.d.ts.map +1 -1
  144. package/lib/src/embed/search.js +1 -0
  145. package/lib/src/embed/search.js.map +1 -1
  146. package/lib/src/embed/ts-embed.d.ts +1 -0
  147. package/lib/src/embed/ts-embed.d.ts.map +1 -1
  148. package/lib/src/embed/ts-embed.js +4 -10
  149. package/lib/src/embed/ts-embed.js.map +1 -1
  150. package/lib/src/embed/ts-embed.spec.js +49 -2
  151. package/lib/src/embed/ts-embed.spec.js.map +1 -1
  152. package/lib/src/index.d.ts +3 -2
  153. package/lib/src/index.d.ts.map +1 -1
  154. package/lib/src/index.js +2 -1
  155. package/lib/src/index.js.map +1 -1
  156. package/lib/src/mixpanel-service.d.ts.map +1 -1
  157. package/lib/src/mixpanel-service.js +2 -0
  158. package/lib/src/mixpanel-service.js.map +1 -1
  159. package/lib/src/mixpanel-service.spec.js +1 -0
  160. package/lib/src/mixpanel-service.spec.js.map +1 -1
  161. package/lib/src/types.d.ts +46 -39
  162. package/lib/src/types.d.ts.map +1 -1
  163. package/lib/src/types.js +6 -12
  164. package/lib/src/types.js.map +1 -1
  165. package/lib/src/utils/graphql/answerService/answer-queries.d.ts +5 -0
  166. package/lib/src/utils/graphql/answerService/answer-queries.d.ts.map +1 -0
  167. package/lib/src/utils/graphql/answerService/answer-queries.js +77 -0
  168. package/lib/src/utils/graphql/answerService/answer-queries.js.map +1 -0
  169. package/lib/src/utils/graphql/answerService/answerService.d.ts +61 -0
  170. package/lib/src/utils/graphql/answerService/answerService.d.ts.map +1 -0
  171. package/lib/src/utils/graphql/answerService/answerService.js +177 -0
  172. package/lib/src/utils/graphql/answerService/answerService.js.map +1 -0
  173. package/lib/src/utils/graphql/answerService/answerService.spec.d.ts +2 -0
  174. package/lib/src/utils/graphql/answerService/answerService.spec.d.ts.map +1 -0
  175. package/lib/src/utils/graphql/answerService/answerService.spec.js +199 -0
  176. package/lib/src/utils/graphql/answerService/answerService.spec.js.map +1 -0
  177. package/lib/src/utils/graphql/graphql-request.d.ts +15 -0
  178. package/lib/src/utils/graphql/graphql-request.d.ts.map +1 -0
  179. package/lib/src/utils/graphql/graphql-request.js +36 -0
  180. package/lib/src/utils/graphql/graphql-request.js.map +1 -0
  181. package/lib/src/utils/graphql/sourceService.d.ts +8 -0
  182. package/lib/src/utils/graphql/sourceService.d.ts.map +1 -0
  183. package/lib/src/utils/graphql/sourceService.js +65 -0
  184. package/lib/src/utils/graphql/sourceService.js.map +1 -0
  185. package/lib/src/utils/graphql/sourceService.spec.d.ts +2 -0
  186. package/lib/src/utils/graphql/sourceService.spec.d.ts.map +1 -0
  187. package/lib/src/utils/graphql/sourceService.spec.js +10 -0
  188. package/lib/src/utils/graphql/sourceService.spec.js.map +1 -0
  189. package/lib/src/utils/processData.d.ts.map +1 -1
  190. package/lib/src/utils/processData.js +8 -12
  191. package/lib/src/utils/processData.js.map +1 -1
  192. package/lib/src/utils/processData.spec.js +14 -18
  193. package/lib/src/utils/processData.spec.js.map +1 -1
  194. package/lib/src/utils.d.ts +6 -0
  195. package/lib/src/utils.d.ts.map +1 -1
  196. package/lib/src/utils.js +24 -1
  197. package/lib/src/utils.js.map +1 -1
  198. package/lib/src/utils.spec.js +10 -0
  199. package/lib/src/utils.spec.js.map +1 -1
  200. package/lib/src/visual-embed-sdk.d.ts +164 -50
  201. package/package.json +4 -5
  202. package/src/embed/app.ts +30 -1
  203. package/src/embed/base.ts +3 -4
  204. package/src/embed/liveboard.ts +36 -1
  205. package/src/embed/sage.ts +9 -4
  206. package/src/embed/search-bar.tsx +12 -1
  207. package/src/embed/search.ts +7 -1
  208. package/src/embed/ts-embed.spec.ts +51 -2
  209. package/src/embed/ts-embed.ts +4 -12
  210. package/src/index.ts +5 -0
  211. package/src/mixpanel-service.spec.ts +1 -0
  212. package/src/mixpanel-service.ts +1 -0
  213. package/src/types.ts +50 -40
  214. package/src/utils/graphql/answerService/answer-queries.ts +80 -0
  215. package/src/utils/graphql/answerService/answerService.spec.ts +231 -0
  216. package/src/utils/graphql/answerService/answerService.ts +234 -0
  217. package/src/utils/graphql/graphql-request.ts +45 -0
  218. package/src/utils/graphql/sourceService.spec.ts +10 -0
  219. package/src/utils/graphql/sourceService.ts +71 -0
  220. package/src/utils/processData.spec.ts +15 -25
  221. package/src/utils/processData.ts +13 -15
  222. package/src/utils.spec.ts +13 -0
  223. package/src/utils.ts +25 -1
  224. package/cjs/src/utils/answerService.d.ts +0 -10
  225. package/cjs/src/utils/answerService.d.ts.map +0 -1
  226. package/cjs/src/utils/answerService.js +0 -61
  227. package/cjs/src/utils/answerService.js.map +0 -1
  228. package/cjs/src/utils/answerService.spec.d.ts +0 -2
  229. package/cjs/src/utils/answerService.spec.d.ts.map +0 -1
  230. package/cjs/src/utils/answerService.spec.js +0 -31
  231. package/cjs/src/utils/answerService.spec.js.map +0 -1
  232. package/dist/src/utils/answerService.d.ts +0 -10
  233. package/dist/src/utils/answerService.d.ts.map +0 -1
  234. package/dist/src/utils/answerService.spec.d.ts +0 -2
  235. package/dist/src/utils/answerService.spec.d.ts.map +0 -1
  236. package/lib/src/utils/answerService.d.ts +0 -10
  237. package/lib/src/utils/answerService.d.ts.map +0 -1
  238. package/lib/src/utils/answerService.js +0 -57
  239. package/lib/src/utils/answerService.js.map +0 -1
  240. package/lib/src/utils/answerService.spec.d.ts +0 -2
  241. package/lib/src/utils/answerService.spec.d.ts.map +0 -1
  242. package/lib/src/utils/answerService.spec.js +0 -29
  243. package/lib/src/utils/answerService.spec.js.map +0 -1
  244. package/src/utils/answerService.spec.ts +0 -41
  245. package/src/utils/answerService.ts +0 -63
@@ -179,7 +179,7 @@ const getFilterQuery = (runtimeFilters) => {
179
179
  const filterExpr = [];
180
180
  filterExpr.push(`col${index}=${filter.columnName}`);
181
181
  filterExpr.push(`op${index}=${filter.operator}`);
182
- filterExpr.push(filter.values.map((value) => `val${index}=${value}`).join('&'));
182
+ filterExpr.push(filter.values.map((value) => `val${index}=${encodeURIComponent(value)}`).join('&'));
183
183
  return filterExpr.join('&');
184
184
  });
185
185
  return `${filters.join('&')}`;
@@ -352,7 +352,30 @@ const getRuntimeFilters = (runtimefilters) => getFilterQuery(runtimefilters || [
352
352
  function getDOMNode(domSelector) {
353
353
  return typeof domSelector === 'string' ? document.querySelector(domSelector) : domSelector;
354
354
  }
355
- const deepMerge = (target, source) => merge(target, source);
355
+ const deepMerge = (target, source) => merge(target, source);
356
+ const getOperationNameFromQuery = (query) => {
357
+ const regex = /(?:query|mutation)\s+(\w+)/;
358
+ const matches = query.match(regex);
359
+ return matches === null || matches === void 0 ? void 0 : matches[1];
360
+ };
361
+ /**
362
+ *
363
+ * @param obj
364
+ */
365
+ function removeTypename(obj) {
366
+ if (!obj || typeof obj !== 'object')
367
+ return obj;
368
+ // eslint-disable-next-line no-restricted-syntax
369
+ for (const key in obj) {
370
+ if (key === '__typename') {
371
+ delete obj[key];
372
+ }
373
+ else if (typeof obj[key] === 'object') {
374
+ removeTypename(obj[key]);
375
+ }
376
+ }
377
+ return obj;
378
+ }
356
379
 
357
380
  /**
358
381
  * Copyright (c) 2023
@@ -615,27 +638,27 @@ var HomepageModule;
615
638
  /**
616
639
  * Search bar
617
640
  */
618
- HomepageModule["Search"] = "search";
641
+ HomepageModule["Search"] = "SEARCH";
619
642
  /**
620
643
  * kPI watchlist module
621
644
  */
622
- HomepageModule["Watchlist"] = "watchlist";
645
+ HomepageModule["Watchlist"] = "WATCHLIST";
623
646
  /**
624
647
  * favorite objects
625
648
  */
626
- HomepageModule["Favorite"] = "favorite";
649
+ HomepageModule["Favorite"] = "FAVORITE";
627
650
  /**
628
651
  * List of answers and liveboards
629
652
  */
630
- HomepageModule["MyLibrary"] = "mylibrary";
653
+ HomepageModule["MyLibrary"] = "MY_LIBRARY";
631
654
  /**
632
655
  * Trending list
633
656
  */
634
- HomepageModule["Trending"] = "trending";
657
+ HomepageModule["Trending"] = "TRENDING";
635
658
  /**
636
659
  * Learning videos
637
660
  */
638
- HomepageModule["Learning"] = "learning";
661
+ HomepageModule["Learning"] = "LEARNING";
639
662
  })(HomepageModule || (HomepageModule = {}));
640
663
  /**
641
664
  * Event types emitted by the embedded ThoughtSpot application.
@@ -2783,12 +2806,6 @@ var Action;
2783
2806
  */
2784
2807
  Action["PersonalisedViewsDropdown"] = "personalisedViewsDropdown";
2785
2808
  })(Action || (Action = {}));
2786
- // eslint-disable-next-line no-shadow
2787
- var OperationType;
2788
- (function (OperationType) {
2789
- OperationType["GetChartWithData"] = "GetChartWithData";
2790
- OperationType["GetTableWithHeadlineData"] = "GetTableWithHeadlineData";
2791
- })(OperationType || (OperationType = {}));
2792
2809
  var PrefetchFeatures;
2793
2810
  (function (PrefetchFeatures) {
2794
2811
  PrefetchFeatures["FullApp"] = "FullApp";
@@ -8904,6 +8921,7 @@ function emptyQueue() {
8904
8921
  * @param sessionInfo
8905
8922
  */
8906
8923
  function initMixpanel(sessionInfo) {
8924
+ var _a;
8907
8925
  if (!sessionInfo || !sessionInfo.mixpanelToken) {
8908
8926
  return;
8909
8927
  }
@@ -8921,6 +8939,7 @@ function initMixpanel(sessionInfo) {
8921
8939
  clusterId: sessionInfo.clusterId,
8922
8940
  clusterName: sessionInfo.clusterName,
8923
8941
  releaseVersion: sessionInfo.releaseVersion,
8942
+ hostAppUrl: ((_a = window === null || window === void 0 ? void 0 : window.location) === null || _a === void 0 ? void 0 : _a.host) || '',
8924
8943
  });
8925
8944
  isMixpanelInitialized = true;
8926
8945
  emptyQueue();
@@ -10182,58 +10201,351 @@ const renderInQueue = (fn) => {
10182
10201
 
10183
10202
  /**
10184
10203
  *
10185
- * @param session
10186
- * @param query
10187
- * @param operation
10204
+ * @param root0
10205
+ * @param root0.query
10206
+ * @param root0.variables
10207
+ * @param root0.thoughtSpotHost
10208
+ * @param root0.isCompositeQuery
10209
+ */
10210
+ async function graphqlQuery({ query, variables, thoughtSpotHost, isCompositeQuery = false, }) {
10211
+ const operationName = getOperationNameFromQuery(query);
10212
+ try {
10213
+ const response = await fetch(`${thoughtSpotHost}/prism/?op=${operationName}`, {
10214
+ method: 'POST',
10215
+ headers: {
10216
+ 'content-type': 'application/json;charset=UTF-8',
10217
+ 'x-requested-by': 'ThoughtSpot',
10218
+ accept: '*/*',
10219
+ 'accept-language': 'en-us',
10220
+ },
10221
+ body: JSON.stringify({
10222
+ operationName,
10223
+ query,
10224
+ variables,
10225
+ }),
10226
+ credentials: 'include',
10227
+ });
10228
+ const result = await response.json();
10229
+ const dataValues = Object.values(result.data);
10230
+ return (isCompositeQuery) ? result.data : dataValues[0];
10231
+ }
10232
+ catch (error) {
10233
+ return error;
10234
+ }
10235
+ }
10236
+
10237
+ const getSourceDetailQuery = `
10238
+ query GetSourceDetail($ids: [GUID!]!) {
10239
+ getSourceDetailById(ids: $ids, type: LOGICAL_TABLE) {
10240
+ id
10241
+ name
10242
+ description
10243
+ authorName
10244
+ authorDisplayName
10245
+ isExternal
10246
+ type
10247
+ created
10248
+ modified
10249
+ columns {
10250
+ id
10251
+ name
10252
+ author
10253
+ authorDisplayName
10254
+ description
10255
+ dataType
10256
+ type
10257
+ modified
10258
+ ownerName
10259
+ owner
10260
+ dataRecency
10261
+ sources {
10262
+ tableId
10263
+ tableName
10264
+ columnId
10265
+ columnName
10266
+ __typename
10267
+ }
10268
+ synonyms
10269
+ cohortAnswerId
10270
+ __typename
10271
+ }
10272
+ relationships
10273
+ destinationRelationships
10274
+ dataSourceId
10275
+ __typename
10276
+ }
10277
+ }
10278
+ `;
10279
+ const sourceDetailCache = new Map();
10280
+ /**
10281
+ *
10188
10282
  * @param thoughtSpotHost
10283
+ * @param sourceId
10189
10284
  */
10190
- function getAnswerServiceInstance(session, query, operation, thoughtSpotHost) {
10191
- let variable;
10192
- const fetchQuery = async (variables) => {
10193
- try {
10194
- const response = await fetch(`${thoughtSpotHost}/prism/?op=${operation}`, {
10195
- method: 'POST',
10196
- headers: {
10197
- 'content-type': 'application/json;charset=UTF-8',
10198
- 'x-requested-by': 'ThoughtSpot',
10199
- accept: '*/*',
10200
- 'accept-language': 'en-us',
10201
- },
10202
- body: JSON.stringify({
10203
- operationName: operation,
10204
- query,
10205
- variables,
10206
- }),
10207
- credentials: 'include',
10208
- });
10209
- const result = await response.json();
10210
- return result.data;
10285
+ async function getSourceDetail(thoughtSpotHost, sourceId) {
10286
+ if (sourceDetailCache.has(sourceId)) {
10287
+ return sourceDetailCache.get(sourceId);
10288
+ }
10289
+ const details = await graphqlQuery({
10290
+ query: getSourceDetailQuery,
10291
+ variables: {
10292
+ ids: [sourceId],
10293
+ },
10294
+ thoughtSpotHost,
10295
+ });
10296
+ const souceDetails = details[0];
10297
+ sourceDetailCache.set(sourceId, souceDetails);
10298
+ return souceDetails;
10299
+ }
10300
+
10301
+ const bachSessionId = `
10302
+ id {
10303
+ sessionId
10304
+ genNo
10305
+ acSession {
10306
+ sessionId
10307
+ genNo
10308
+ }
10309
+ }
10310
+ `;
10311
+ const getUnaggregatedAnswerSession = `
10312
+ mutation GetUnAggregatedAnswerSession($session: BachSessionIdInput!, $columns: [UserPointSelectionInput!]!) {
10313
+ Answer__getUnaggregatedAnswer(session: $session, columns: $columns) {
10314
+ ${bachSessionId}
10315
+ answer {
10316
+ visualizations {
10317
+ ... on TableViz {
10318
+ columns {
10319
+ column {
10320
+ id
10321
+ name
10322
+ referencedColumns {
10323
+ guid
10324
+ displayName
10325
+ }
10326
+ }
10327
+ }
10328
+ }
10329
+ }
10330
+ }
10331
+ }
10332
+ }
10333
+ `;
10334
+ const removeColumns = `
10335
+ mutation RemoveColumns($session: BachSessionIdInput!, $logicalColumnIds: [GUID!], $columnIds: [GUID!]) {
10336
+ Answer__removeColumns(
10337
+ session: $session
10338
+ logicalColumnIds: $logicalColumnIds
10339
+ columnIds: $columnIds
10340
+ ) {
10341
+ ${bachSessionId}
10342
+ }
10343
+ }
10344
+ `;
10345
+ const addColumns = `
10346
+ mutation AddColumns($session: BachSessionIdInput!, $columns: [AnswerColumnInfo!]!) {
10347
+ Answer__addColumn(session: $session, columns: $columns) {
10348
+ ${bachSessionId}
10349
+ }
10350
+ }
10351
+ `;
10352
+ const getAnswerData = `
10353
+ query GetTableWithHeadlineData($session: BachSessionIdInput!, $deadline: Int!, $dataPaginationParams: DataPaginationParamsInput!) {
10354
+ getAnswer(session: $session) {
10355
+ ${bachSessionId}
10356
+ answer {
10357
+ id
10358
+ visualizations {
10359
+ id
10360
+ ... on TableViz {
10361
+ columns {
10362
+ column {
10363
+ id
10364
+ name
10365
+ type
10366
+ aggregationType
10367
+ dataType
10368
+ }
10369
+ }
10370
+ data(deadline: $deadline, pagination: $dataPaginationParams)
10371
+ }
10372
+ }
10373
+ }
10374
+ }
10375
+ }
10376
+ `;
10377
+
10378
+ // eslint-disable-next-line no-shadow
10379
+ var OperationType;
10380
+ (function (OperationType) {
10381
+ OperationType["GetChartWithData"] = "GetChartWithData";
10382
+ OperationType["GetTableWithHeadlineData"] = "GetTableWithHeadlineData";
10383
+ })(OperationType || (OperationType = {}));
10384
+ /**
10385
+ * Class representing the answer service provided with the
10386
+ * custom action payload. This service could be used to run
10387
+ * graphql queries in the context of the answer on which the
10388
+ * custom action was triggered.
10389
+ *
10390
+ * @example
10391
+ * ```js
10392
+ * embed.on(EmbedEvent.CustomAction, e => {
10393
+ * const underlying = await e.answerService.getUnderlyingDataForPoint([
10394
+ * 'col name 1'
10395
+ * ]);
10396
+ * const data = await underlying.fetchData(0, 100);
10397
+ * })
10398
+ * ```
10399
+ * @version
10400
+ * ThoughtSpot: 9.9.0.cl / SDK: 1.25.0
10401
+ */
10402
+ class AnswerService {
10403
+ constructor(session, answer, thoughtSpotHost, selectedPoints) {
10404
+ this.session = session;
10405
+ this.answer = answer;
10406
+ this.thoughtSpotHost = thoughtSpotHost;
10407
+ this.selectedPoints = selectedPoints;
10408
+ this.session = removeTypename(session);
10409
+ }
10410
+ async getSourceDetail() {
10411
+ const sourceId = this.answer.sources[0].header.guid;
10412
+ return getSourceDetail(this.thoughtSpotHost, sourceId);
10413
+ }
10414
+ async removeColumns(columnIds) {
10415
+ return this.executeQuery(removeColumns, {
10416
+ logicalColumnIds: columnIds,
10417
+ });
10418
+ }
10419
+ async addColumns(columnIds) {
10420
+ return this.executeQuery(addColumns, {
10421
+ columns: columnIds.map((colId) => ({ logicalColumnId: colId })),
10422
+ });
10423
+ }
10424
+ async fetchData(offset = 0, size = 1000) {
10425
+ const { answer } = await this.executeQuery(getAnswerData, {
10426
+ deadline: 0,
10427
+ dataPaginationParams: {
10428
+ isClientPaginated: true,
10429
+ offset,
10430
+ size,
10431
+ },
10432
+ });
10433
+ const { columns, data } = answer.visualizations[0];
10434
+ return {
10435
+ columns,
10436
+ data,
10437
+ };
10438
+ }
10439
+ /**
10440
+ *
10441
+ * @param userLocale
10442
+ * @param omitInfo Omit the download Info on top of the CSV
10443
+ * @returns Response
10444
+ */
10445
+ async fetchCSVBlob(userLocale = 'en-us', omitInfo = false) {
10446
+ if (omitInfo) {
10447
+ console.warn('omitInfo not supported yet.');
10211
10448
  }
10212
- catch (error) {
10213
- return error;
10449
+ const fetchUrl = `${this.thoughtSpotHost}/prism/download/answer/csv?sessionId=${this.session.sessionId}&genNo=${this.session.genNo}&userLocale=${userLocale}&exportFileName=data&omitInfo=${omitInfo}`;
10450
+ return fetch(fetchUrl, {
10451
+ credentials: 'include',
10452
+ });
10453
+ }
10454
+ async getUnderlyingDataForPoint(outputColumnNames, selectedPoints) {
10455
+ if (!selectedPoints && !this.selectedPoints) {
10456
+ throw new Error('Needs to be triggered in context of a point');
10214
10457
  }
10215
- };
10216
- const fetchData = (offset, batchSize) => {
10217
- if (operation === OperationType.GetChartWithData) {
10218
- variable = { batchSize, offset: offset * batchSize };
10458
+ if (!selectedPoints) {
10459
+ selectedPoints = getSelectedPointsForUnderlyingDataQuery(this.selectedPoints);
10460
+ }
10461
+ const sourceDetail = await this.getSourceDetail();
10462
+ const ouputColumnGuids = getGuidsFromColumnNames(sourceDetail, outputColumnNames);
10463
+ const unAggAnswer = await graphqlQuery({
10464
+ query: getUnaggregatedAnswerSession,
10465
+ variables: {
10466
+ session: this.session,
10467
+ columns: selectedPoints,
10468
+ },
10469
+ thoughtSpotHost: this.thoughtSpotHost,
10470
+ });
10471
+ const unaggAnswerSession = new AnswerService(unAggAnswer.id, unAggAnswer.answer, this.thoughtSpotHost);
10472
+ const currentColumns = new Set(unAggAnswer.answer.visualizations[0].columns
10473
+ .map((c) => c.column.referencedColumns[0].guid));
10474
+ const columnsToAdd = [...ouputColumnGuids].filter((col) => !currentColumns.has(col));
10475
+ if (columnsToAdd.length) {
10476
+ await unaggAnswerSession.addColumns(columnsToAdd);
10477
+ }
10478
+ const columnsToRemove = [...currentColumns].filter((col) => !ouputColumnGuids.has(col));
10479
+ if (columnsToRemove.length) {
10480
+ await unaggAnswerSession.removeColumns(columnsToRemove);
10481
+ }
10482
+ return unaggAnswerSession;
10483
+ }
10484
+ async executeQuery(query, variables) {
10485
+ const data = await graphqlQuery({
10486
+ query,
10487
+ variables: {
10488
+ session: this.session,
10489
+ ...variables,
10490
+ },
10491
+ thoughtSpotHost: this.thoughtSpotHost,
10492
+ isCompositeQuery: false,
10493
+ });
10494
+ this.session = deepMerge(this.session, (data === null || data === void 0 ? void 0 : data.id) || {});
10495
+ return data;
10496
+ }
10497
+ getSession() {
10498
+ return this.session;
10499
+ }
10500
+ }
10501
+ /**
10502
+ *
10503
+ * @param sourceDetail
10504
+ * @param colNames
10505
+ */
10506
+ function getGuidsFromColumnNames(sourceDetail, colNames) {
10507
+ const cols = sourceDetail.columns.reduce((colSet, col) => {
10508
+ colSet[col.name] = col;
10509
+ return colSet;
10510
+ }, {});
10511
+ return new Set(colNames.map((colName) => {
10512
+ const col = cols[colName];
10513
+ return col.id;
10514
+ }));
10515
+ }
10516
+ /**
10517
+ *
10518
+ * @param selectedPoints
10519
+ */
10520
+ function getSelectedPointsForUnderlyingDataQuery(selectedPoints) {
10521
+ const underlyingDataPoint = [];
10522
+ /**
10523
+ *
10524
+ * @param colVal
10525
+ */
10526
+ function addPointFromColVal(colVal) {
10527
+ const dataType = colVal.column.dataType;
10528
+ const id = colVal.column.id;
10529
+ let dataValue;
10530
+ if (dataType === 'DATE') {
10531
+ dataValue = [{
10532
+ epochRange: {
10533
+ startEpoch: colVal.value,
10534
+ },
10535
+ }];
10219
10536
  }
10220
10537
  else {
10221
- variable = {
10222
- dataPaginationParams: {
10223
- isClientPaginated: true,
10224
- offset: offset * batchSize,
10225
- size: batchSize,
10226
- },
10227
- };
10538
+ dataValue = [{ value: colVal.value }];
10228
10539
  }
10229
- return fetchQuery({
10230
- session,
10231
- ...variable,
10540
+ underlyingDataPoint.push({
10541
+ columnId: colVal.column.id,
10542
+ dataValue,
10232
10543
  });
10233
- };
10234
- return {
10235
- fetchData,
10236
- };
10544
+ }
10545
+ selectedPoints.forEach((p) => {
10546
+ p.selectedAttributes.forEach(addPointFromColVal);
10547
+ });
10548
+ return underlyingDataPoint;
10237
10549
  }
10238
10550
 
10239
10551
  /**
@@ -10242,16 +10554,12 @@ function getAnswerServiceInstance(session, query, operation, thoughtSpotHost) {
10242
10554
  * @param thoughtSpotHost
10243
10555
  */
10244
10556
  function processCustomAction(e, thoughtSpotHost) {
10245
- var _a;
10246
- if ([OperationType.GetChartWithData, OperationType.GetTableWithHeadlineData].includes((_a = e.data) === null || _a === void 0 ? void 0 : _a.operation)) {
10247
- const { session, query, operation } = e.data;
10248
- const answerService = getAnswerServiceInstance(session, query, operation, thoughtSpotHost);
10249
- return {
10250
- ...e,
10251
- answerService,
10252
- };
10253
- }
10254
- return e;
10557
+ const { session, embedAnswerData, contextMenuPoints } = e.data;
10558
+ const answerService = new AnswerService(session, embedAnswerData, thoughtSpotHost, contextMenuPoints === null || contextMenuPoints === void 0 ? void 0 : contextMenuPoints.selectedPoints);
10559
+ return {
10560
+ ...e,
10561
+ answerService,
10562
+ };
10255
10563
  }
10256
10564
  /**
10257
10565
  *
@@ -10396,7 +10704,7 @@ function processTrigger(iFrame, messageType, thoughtSpotHost, data) {
10396
10704
  });
10397
10705
  }
10398
10706
 
10399
- var name="@thoughtspot/visual-embed-sdk";var version="1.24.0";var description="ThoughtSpot Embed SDK";var module="lib/src/index.js";var main="dist/tsembed.js";var types="lib/src/index.d.ts";var files=["dist/**","lib/**","src/**","cjs/**"];var exports={".":{"import":"./lib/src/index.js",require:"./cjs/src/index.js",types:"./lib/src/index.d.ts"},"./react":{"import":"./lib/src/react/all-types-export.js",require:"./cjs/src/react/all-types-export.js",types:"./lib/src/react/all-types-export.d.ts"},"./lib/src/react":{"import":"./lib/src/react/all-types-export.js",require:"./cjs/src/react/all-types-export.js",types:"./lib/src/react/all-types-export.d.ts"}};var typesVersions={"*":{react:["./lib/src/react/all-types-export.d.ts"]}};var scripts={lint:"eslint 'src/**'","lint:fix":"eslint 'src/**/*.*' --fix",tsc:"tsc -p . --incremental false; tsc -p . --incremental false --module commonjs --outDir cjs",start:"gatsby develop","build:gatsby":"npm run clean:gatsby && gatsby build --prefix-paths","build:gatsby:noprefix":"npm run clean:gatsby && gatsby build","serve:gatsby":"gatsby serve","clean:gatsby":"gatsby clean","build-and-publish":"npm run build:gatsby && npm run publish","bundle-dts-file":"dts-bundle --name @thoughtspot/visual-embed-sdk --out visual-embed-sdk.d.ts --main lib/src/index.d.ts","bundle-dts":"dts-bundle --name ../../dist/visual-embed-sdk --main lib/src/index.d.ts --outputAsModuleFolder=true","bundle-dts-react":"dts-bundle --name ../../../dist/visual-embed-sdk-react --main lib/src/react/index.d.ts --outputAsModuleFolder=true","bundle-dts-react-full":"dts-bundle --name ../../../dist/visual-embed-sdk-react-full --main lib/src/react/all-types-export.d.ts --outputAsModuleFolder=true",build:"rollup -c",watch:"rollup -cw","docs-cmd":"node scripts/gatsby-commands.js",docgen:"typedoc --tsconfig tsconfig.json --theme typedoc-theme","test-sdk":"jest -c jest.config.sdk.js --runInBand","test-docs":"jest -c jest.config.docs.js",test:"npm run test-sdk && npm run test-docs",posttest:"cat ./coverage/sdk/lcov.info | coveralls","is-publish-allowed":"node scripts/is-publish-allowed.js",prepublishOnly:"npm run is-publish-allowed && npm run test && npm run tsc && npm run bundle-dts-file && npm run bundle-dts && npm run bundle-dts-react && npm run bundle-dts-react-full && npm run build","check-size":"npm run build && size-limit","publish-dev":"npm publish --tag dev","publish-prod":"npm publish --tag latest"};var peerDependencies={react:"> 16.8.0","react-dom":"> 16.8.0"};var dependencies={algoliasearch:"^4.10.5",classnames:"^2.3.1",dompurify:"^2.3.4","eslint-plugin-comment-length":"^0.9.2","eslint-plugin-jsdoc":"^40.1.0",eventemitter3:"^4.0.7","gatsby-plugin-vercel":"^1.0.3","html-react-parser":"^1.4.12",lodash:"^4.17.21","mixpanel-browser":"^2.45.0","ts-deepmerge":"^6.0.2",tslib:"^2.5.3","use-deep-compare-effect":"^1.8.1"};var devDependencies={"@mdx-js/mdx":"^1.6.22","@mdx-js/react":"^1.6.22","@react-icons/all-files":"^4.1.0","@rollup/plugin-commonjs":"^18.0.0","@rollup/plugin-json":"^4.1.0","@rollup/plugin-node-resolve":"^11.2.1","@rollup/plugin-replace":"^5.0.2","@size-limit/preset-big-lib":"^8.2.6","@testing-library/dom":"^7.31.0","@testing-library/jest-dom":"^5.14.1","@testing-library/react":"^11.2.7","@testing-library/user-event":"^13.1.8","@types/jest":"^22.2.3","@types/mixpanel-browser":"^2.35.6","@types/react-test-renderer":"^17.0.1","@typescript-eslint/eslint-plugin":"^4.6.0","@typescript-eslint/parser":"^4.6.0",asciidoctor:"^2.2.1","babel-jest":"^26.6.3","babel-preset-gatsby":"^1.10.0","command-line-args":"^5.1.1",coveralls:"^3.1.0","current-git-branch":"^1.1.0","dts-bundle":"^0.7.3",eslint:"^7.12.1","eslint-config-airbnb-base":"^14.2.0","eslint-config-prettier":"^6.15.0","eslint-import-resolver-typescript":"^2.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-prettier":"^3.1.4","eslint-plugin-react-hooks":"^4.2.0","fs-extra":"^10.0.0",gatsby:"3.13.1","gatsby-plugin-algolia":"^0.22.2","gatsby-plugin-catch-links":"^3.1.0","gatsby-plugin-env-variables":"^2.1.0","gatsby-plugin-intl":"^0.3.3","gatsby-plugin-manifest":"^3.2.0","gatsby-plugin-output":"^0.1.3","gatsby-plugin-sass":"6.7.0","gatsby-plugin-sitemap":"^4.10.0","gatsby-source-filesystem":"3.1.0","gatsby-transformer-asciidoc":"2.1.0","gatsby-transformer-rehype":"2.0.0","gh-pages":"^3.1.0","highlight.js":"^10.6.0","html-to-text":"^8.0.0","identity-obj-proxy":"^3.0.0","istanbul-merge":"^1.1.1",jest:"^26.6.3","jest-puppeteer":"^4.4.0",jsdom:"^17.0.0","node-sass":"^8.0.0",prettier:"2.1.2",puppeteer:"^7.0.1",react:"^16.14.0","react-dom":"^16.14.0","react-resizable":"^1.11.0","react-resize-detector":"^6.6.0","react-test-renderer":"^17.0.2","react-use-flexsearch":"^0.1.1",rollup:"2.30.0","rollup-plugin-typescript2":"0.27.3","ts-jest":"^26.5.5","ts-loader":"8.0.4",typedoc:"0.21.6","typedoc-plugin-toc-group":"thoughtspot/typedoc-plugin-toc-group",typescript:"^4.9.4","url-search-params-polyfill":"^8.1.0",util:"^0.12.4"};var author="ThoughtSpot";var email="support@thoughtspot.com";var license="ThoughtSpot Development Tools End User License Agreement";var directories={lib:"lib"};var repository={type:"git",url:"git+https://github.com/thoughtspot/visual-embed-sdk.git"};var publishConfig={registry:"https://registry.npmjs.org"};var keywords=["thoughtspot","everywhere","embed","sdk","analytics"];var bugs={url:"https://github.com/thoughtspot/visual-embed-sdk/issues"};var homepage="https://github.com/thoughtspot/visual-embed-sdk#readme";var globals={window:{}};var pkgInfo = {name:name,version:version,description:description,module:module,main:main,types:types,files:files,exports:exports,typesVersions:typesVersions,"size-limit":[{path:"dist/tsembed.js",limit:"40 kB"}],scripts:scripts,peerDependencies:peerDependencies,dependencies:dependencies,devDependencies:devDependencies,author:author,email:email,license:license,directories:directories,repository:repository,publishConfig:publishConfig,keywords:keywords,bugs:bugs,homepage:homepage,globals:globals};
10707
+ var name="@thoughtspot/visual-embed-sdk";var version="1.24.2";var description="ThoughtSpot Embed SDK";var module="lib/src/index.js";var main="dist/tsembed.js";var types="lib/src/index.d.ts";var files=["dist/**","lib/**","src/**","cjs/**"];var exports={".":{"import":"./lib/src/index.js",require:"./cjs/src/index.js",types:"./lib/src/index.d.ts"},"./react":{"import":"./lib/src/react/all-types-export.js",require:"./cjs/src/react/all-types-export.js",types:"./lib/src/react/all-types-export.d.ts"},"./lib/src/react":{"import":"./lib/src/react/all-types-export.js",require:"./cjs/src/react/all-types-export.js",types:"./lib/src/react/all-types-export.d.ts"}};var typesVersions={"*":{react:["./lib/src/react/all-types-export.d.ts"]}};var scripts={lint:"eslint 'src/**'","lint:fix":"eslint 'src/**/*.*' --fix",tsc:"tsc -p . --incremental false; tsc -p . --incremental false --module commonjs --outDir cjs",start:"gatsby develop","build:gatsby":"npm run clean:gatsby && gatsby build --prefix-paths","build:gatsby:noprefix":"npm run clean:gatsby && gatsby build","serve:gatsby":"gatsby serve","clean:gatsby":"gatsby clean","build-and-publish":"npm run build:gatsby && npm run publish","bundle-dts-file":"dts-bundle --name @thoughtspot/visual-embed-sdk --out visual-embed-sdk.d.ts --main lib/src/index.d.ts","bundle-dts":"dts-bundle --name ../../dist/visual-embed-sdk --main lib/src/index.d.ts --outputAsModuleFolder=true","bundle-dts-react":"dts-bundle --name ../../../dist/visual-embed-sdk-react --main lib/src/react/index.d.ts --outputAsModuleFolder=true","bundle-dts-react-full":"dts-bundle --name ../../../dist/visual-embed-sdk-react-full --main lib/src/react/all-types-export.d.ts --outputAsModuleFolder=true",build:"rollup -c",watch:"rollup -cw","docs-cmd":"node scripts/gatsby-commands.js",docgen:"typedoc --tsconfig tsconfig.json --theme typedoc-theme","test-sdk":"jest -c jest.config.sdk.js --runInBand","test-docs":"jest -c jest.config.docs.js",test:"npm run test-sdk && npm run test-docs",posttest:"cat ./coverage/sdk/lcov.info | coveralls","is-publish-allowed":"node scripts/is-publish-allowed.js",prepublishOnly:"npm run is-publish-allowed && npm run test && npm run tsc && npm run bundle-dts-file && npm run bundle-dts && npm run bundle-dts-react && npm run bundle-dts-react-full && npm run build","check-size":"npm run build && size-limit","publish-dev":"npm publish --tag dev","publish-prod":"npm publish --tag latest"};var peerDependencies={react:"> 16.8.0","react-dom":"> 16.8.0"};var dependencies={algoliasearch:"^4.10.5",classnames:"^2.3.1",dompurify:"^2.3.4","eslint-plugin-comment-length":"^0.9.2","eslint-plugin-jsdoc":"^40.1.0",eventemitter3:"^4.0.7","gatsby-plugin-vercel":"^1.0.3","html-react-parser":"^1.4.12",lodash:"^4.17.21","mixpanel-browser":"^2.45.0","ts-deepmerge":"^6.0.2",tslib:"^2.5.3","use-deep-compare-effect":"^1.8.1"};var devDependencies={"@mdx-js/mdx":"^1.6.22","@mdx-js/react":"^1.6.22","@react-icons/all-files":"^4.1.0","@rollup/plugin-commonjs":"^18.0.0","@rollup/plugin-json":"^4.1.0","@rollup/plugin-node-resolve":"^11.2.1","@rollup/plugin-replace":"^5.0.2","@size-limit/preset-big-lib":"^8.2.6","@testing-library/dom":"^7.31.0","@testing-library/jest-dom":"^5.14.1","@testing-library/react":"^11.2.7","@testing-library/user-event":"^13.1.8","@types/jest":"^22.2.3","@types/mixpanel-browser":"^2.35.6","@types/react-test-renderer":"^17.0.1","@typescript-eslint/eslint-plugin":"^4.6.0","@typescript-eslint/parser":"^4.6.0",asciidoctor:"^2.2.1","babel-jest":"^26.6.3","babel-preset-gatsby":"^1.10.0","command-line-args":"^5.1.1",coveralls:"^3.1.0","current-git-branch":"^1.1.0","dts-bundle":"^0.7.3",eslint:"^7.12.1","eslint-config-airbnb-base":"^14.2.0","eslint-config-prettier":"^6.15.0","eslint-import-resolver-typescript":"^2.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-prettier":"^3.1.4","eslint-plugin-react-hooks":"^4.2.0","fs-extra":"^10.0.0",gatsby:"3.13.1","gatsby-plugin-algolia":"^0.22.2","gatsby-plugin-catch-links":"^3.1.0","gatsby-plugin-env-variables":"^2.1.0","gatsby-plugin-intl":"^0.3.3","gatsby-plugin-manifest":"^3.2.0","gatsby-plugin-output":"^0.1.3","gatsby-plugin-sass":"6.7.0","gatsby-plugin-sitemap":"^4.10.0","gatsby-source-filesystem":"3.1.0","gatsby-transformer-asciidoc":"2.1.0","gatsby-transformer-rehype":"2.0.0","gh-pages":"^3.1.0","highlight.js":"^10.6.0","html-to-text":"^8.0.0","identity-obj-proxy":"^3.0.0","istanbul-merge":"^1.1.1",jest:"^26.6.3","jest-fetch-mock":"^3.0.3",jsdom:"^17.0.0","node-sass":"^8.0.0",prettier:"2.1.2",react:"^16.14.0","react-dom":"^16.14.0","react-resizable":"^1.11.0","react-resize-detector":"^6.6.0","react-test-renderer":"^17.0.2","react-use-flexsearch":"^0.1.1",rollup:"2.30.0","rollup-plugin-typescript2":"0.27.3","ts-jest":"^26.5.5","ts-loader":"8.0.4",typedoc:"0.21.6","typedoc-plugin-toc-group":"thoughtspot/typedoc-plugin-toc-group",typescript:"^4.9.4","url-search-params-polyfill":"^8.1.0",util:"^0.12.4"};var author="ThoughtSpot";var email="support@thoughtspot.com";var license="ThoughtSpot Development Tools End User License Agreement";var directories={lib:"lib"};var repository={type:"git",url:"git+https://github.com/thoughtspot/visual-embed-sdk.git"};var publishConfig={registry:"https://registry.npmjs.org"};var keywords=["thoughtspot","everywhere","embed","sdk","analytics"];var bugs={url:"https://github.com/thoughtspot/visual-embed-sdk/issues"};var homepage="https://github.com/thoughtspot/visual-embed-sdk#readme";var globals={window:{}};var pkgInfo = {name:name,version:version,description:description,module:module,main:main,types:types,files:files,exports:exports,typesVersions:typesVersions,"size-limit":[{path:"dist/tsembed.js",limit:"40 kB"}],scripts:scripts,peerDependencies:peerDependencies,dependencies:dependencies,devDependencies:devDependencies,author:author,email:email,license:license,directories:directories,repository:repository,publishConfig:publishConfig,keywords:keywords,bugs:bugs,homepage:homepage,globals:globals};
10400
10708
 
10401
10709
  /**
10402
10710
  * Copyright (c) 2022
@@ -10428,6 +10736,7 @@ const V1EventMap = {};
10428
10736
  class TsEmbed {
10429
10737
  constructor(domSelector, viewConfig) {
10430
10738
  this.isAppInitialized = false;
10739
+ this.embedComponentType = 'TsEmbed';
10431
10740
  /**
10432
10741
  * Should we encode URL Query Params using base64 encoding which thoughtspot
10433
10742
  * will generate for embedding. This provides additional security to
@@ -10459,6 +10768,7 @@ class TsEmbed {
10459
10768
  ? getRuntimeFilters(this.viewConfig.runtimeFilters)
10460
10769
  : null,
10461
10770
  hiddenHomepageModules: this.viewConfig.hiddenHomepageModules || [],
10771
+ reorderedHomepageModules: this.viewConfig.reorderedHomepageModules || [],
10462
10772
  hostConfig: this.embedConfig.hostConfig,
10463
10773
  hiddenHomeLeftNavItems: ((_a = this.viewConfig) === null || _a === void 0 ? void 0 : _a.hiddenHomeLeftNavItems)
10464
10774
  ? (_b = this.viewConfig) === null || _b === void 0 ? void 0 : _b.hiddenHomeLeftNavItems
@@ -10508,6 +10818,7 @@ class TsEmbed {
10508
10818
  this.registerAppInit();
10509
10819
  uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_EMBED_CREATE, {
10510
10820
  ...viewConfig,
10821
+ embedComponentType: this.embedComponentType,
10511
10822
  });
10512
10823
  }
10513
10824
  /**
@@ -10642,7 +10953,7 @@ class TsEmbed {
10642
10953
  if (this.embedConfig.pendoTrackingKey) {
10643
10954
  queryParams[Param.PendoTrackingKey] = this.embedConfig.pendoTrackingKey;
10644
10955
  }
10645
- const { disabledActions, disabledActionReason, hiddenActions, visibleActions, hiddenTabs, visibleTabs, showAlerts, additionalFlags, locale, customizations, contextMenuTrigger, linkOverride, insertInToSlide, hideLiveboardHeader, showLiveboardDescription, showLiveboardTitle, } = this.viewConfig;
10956
+ const { disabledActions, disabledActionReason, hiddenActions, visibleActions, hiddenTabs, visibleTabs, showAlerts, additionalFlags, locale, customizations, contextMenuTrigger, linkOverride, insertInToSlide, } = this.viewConfig;
10646
10957
  if (Array.isArray(visibleActions) && Array.isArray(hiddenActions)) {
10647
10958
  this.handleError('You cannot have both hidden actions and visible actions');
10648
10959
  return queryParams;
@@ -10703,15 +11014,6 @@ class TsEmbed {
10703
11014
  if (insertInToSlide) {
10704
11015
  queryParams[Param.ShowInsertToSlide] = insertInToSlide;
10705
11016
  }
10706
- if (hideLiveboardHeader) {
10707
- queryParams[Param.HideLiveboardHeader] = hideLiveboardHeader;
10708
- }
10709
- if (showLiveboardDescription) {
10710
- queryParams[Param.ShowLiveboardDescription] = showLiveboardDescription;
10711
- }
10712
- if (showLiveboardTitle) {
10713
- queryParams[Param.ShowLiveboardTitle] = showLiveboardTitle;
10714
- }
10715
11017
  return queryParams;
10716
11018
  }
10717
11019
  /**
@@ -11165,6 +11467,7 @@ class V1Embed extends TsEmbed {
11165
11467
  class SearchBarEmbed extends TsEmbed {
11166
11468
  constructor(domSelector, viewConfig) {
11167
11469
  super(domSelector);
11470
+ this.embedComponentType = 'SearchBarEmbed';
11168
11471
  this.viewConfig = viewConfig;
11169
11472
  }
11170
11473
  /**
@@ -11243,6 +11546,7 @@ class SageEmbed extends V1Embed {
11243
11546
  // eslint-disable-next-line no-useless-constructor
11244
11547
  constructor(domSelector, viewConfig) {
11245
11548
  super(domSelector, viewConfig);
11549
+ this.embedComponentType = 'SageEmbed';
11246
11550
  }
11247
11551
  /**
11248
11552
  * Constructs a map of parameters to be passed on to the
@@ -11327,6 +11631,7 @@ const HiddenActionItemByDefaultForSearchEmbed = [
11327
11631
  class SearchEmbed extends TsEmbed {
11328
11632
  constructor(domSelector, viewConfig) {
11329
11633
  super(domSelector);
11634
+ this.embedComponentType = 'SearchEmbed';
11330
11635
  this.viewConfig = viewConfig;
11331
11636
  }
11332
11637
  /**
@@ -11477,6 +11782,7 @@ class AppEmbed extends V1Embed {
11477
11782
  constructor(domSelector, viewConfig) {
11478
11783
  super(domSelector, viewConfig);
11479
11784
  this.defaultHeight = '100%';
11785
+ this.embedComponentType = 'AppEmbed';
11480
11786
  /**
11481
11787
  * Set the iframe height as per the computed height received
11482
11788
  * from the ThoughtSpot app.
@@ -11508,13 +11814,16 @@ class AppEmbed extends V1Embed {
11508
11814
  * embedded Liveboard or visualization.
11509
11815
  */
11510
11816
  getEmbedParams() {
11511
- const { tag, hideObjects, liveboardV2, showPrimaryNavbar, disableProfileAndHelp, hideApplicationSwitcher, hideOrgSwitcher, enableSearchAssist, fullHeight, dataPanelV2 = false, hideHomepageLeftNav = false, modularHomeExperience = false, } = this.viewConfig;
11817
+ const { tag, hideObjects, liveboardV2, showPrimaryNavbar, disableProfileAndHelp, hideApplicationSwitcher, hideOrgSwitcher, enableSearchAssist, fullHeight, dataPanelV2 = false, hideLiveboardHeader, showLiveboardTitle, showLiveboardDescription, hideHomepageLeftNav = false, modularHomeExperience = false, } = this.viewConfig;
11512
11818
  let params = {};
11513
11819
  params[Param.EmbedApp] = true;
11514
11820
  params[Param.PrimaryNavHidden] = !showPrimaryNavbar;
11515
11821
  params[Param.HideProfleAndHelp] = !!disableProfileAndHelp;
11516
11822
  params[Param.HideApplicationSwitcher] = !!hideApplicationSwitcher;
11517
11823
  params[Param.HideOrgSwitcher] = !!hideOrgSwitcher;
11824
+ params[Param.HideLiveboardHeader] = !!hideLiveboardHeader;
11825
+ params[Param.ShowLiveboardTitle] = !!showLiveboardTitle;
11826
+ params[Param.ShowLiveboardDescription] = !!showLiveboardDescription;
11518
11827
  params = this.getBaseQueryParams(params);
11519
11828
  if (fullHeight === true) {
11520
11829
  params[Param.fullHeight] = true;
@@ -11666,6 +11975,7 @@ class LiveboardEmbed extends V1Embed {
11666
11975
  constructor(domSelector, viewConfig) {
11667
11976
  super(domSelector, viewConfig);
11668
11977
  this.defaultHeight = 500;
11978
+ this.embedComponentType = 'LiveboardEmbed';
11669
11979
  /**
11670
11980
  * Set the iframe height as per the computed height received
11671
11981
  * from the ThoughtSpot app.
@@ -11698,7 +12008,7 @@ class LiveboardEmbed extends V1Embed {
11698
12008
  let params = {};
11699
12009
  params[Param.EmbedApp] = true;
11700
12010
  params = this.getBaseQueryParams(params);
11701
- const { enableVizTransformations, fullHeight, defaultHeight, visibleVizs, liveboardV2, vizId, hideTabPanel, activeTabId, runtimeParameters, } = this.viewConfig;
12011
+ const { enableVizTransformations, fullHeight, defaultHeight, visibleVizs, liveboardV2, vizId, hideTabPanel, activeTabId, hideLiveboardHeader, showLiveboardDescription, showLiveboardTitle, runtimeParameters, } = this.viewConfig;
11702
12012
  const preventLiveboardFilterRemoval = this.viewConfig.preventLiveboardFilterRemoval
11703
12013
  || this.viewConfig.preventPinboardFilterRemoval;
11704
12014
  if (fullHeight === true) {
@@ -11726,6 +12036,15 @@ class LiveboardEmbed extends V1Embed {
11726
12036
  if (hideTabPanel) {
11727
12037
  params[Param.HideTabPanel] = hideTabPanel;
11728
12038
  }
12039
+ if (hideLiveboardHeader) {
12040
+ params[Param.HideLiveboardHeader] = hideLiveboardHeader;
12041
+ }
12042
+ if (showLiveboardDescription) {
12043
+ params[Param.ShowLiveboardDescription] = showLiveboardDescription;
12044
+ }
12045
+ if (showLiveboardTitle) {
12046
+ params[Param.ShowLiveboardTitle] = showLiveboardTitle;
12047
+ }
11729
12048
  let queryParams = getQueryParamString(params, true);
11730
12049
  const parameterQuery = getRuntimeParameters(runtimeParameters || []);
11731
12050
  if (parameterQuery)