@thoughtspot/visual-embed-sdk 1.22.0-alpha.4 → 1.22.0-alpha.6

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 (87) hide show
  1. package/cjs/package.json +1 -1
  2. package/cjs/src/embed/sage.d.ts +73 -0
  3. package/cjs/src/embed/sage.d.ts.map +1 -0
  4. package/cjs/src/embed/sage.js +81 -0
  5. package/cjs/src/embed/sage.js.map +1 -0
  6. package/cjs/src/embed/sage.spec.d.ts +2 -0
  7. package/cjs/src/embed/sage.spec.d.ts.map +1 -0
  8. package/cjs/src/embed/sage.spec.js +34 -0
  9. package/cjs/src/embed/sage.spec.js.map +1 -0
  10. package/cjs/src/errors.d.ts +1 -0
  11. package/cjs/src/errors.d.ts.map +1 -1
  12. package/cjs/src/errors.js +1 -0
  13. package/cjs/src/errors.js.map +1 -1
  14. package/cjs/src/index.d.ts +2 -1
  15. package/cjs/src/index.d.ts.map +1 -1
  16. package/cjs/src/index.js +3 -1
  17. package/cjs/src/index.js.map +1 -1
  18. package/cjs/src/react/index.d.ts +4 -0
  19. package/cjs/src/react/index.d.ts.map +1 -1
  20. package/cjs/src/react/index.js +3 -1
  21. package/cjs/src/react/index.js.map +1 -1
  22. package/cjs/src/test/test-utils.d.ts +1 -0
  23. package/cjs/src/test/test-utils.d.ts.map +1 -1
  24. package/cjs/src/test/test-utils.js +8 -1
  25. package/cjs/src/test/test-utils.js.map +1 -1
  26. package/cjs/src/types.d.ts +12 -1
  27. package/cjs/src/types.d.ts.map +1 -1
  28. package/cjs/src/types.js +5 -0
  29. package/cjs/src/types.js.map +1 -1
  30. package/dist/src/embed/sage.d.ts +73 -0
  31. package/dist/src/embed/sage.d.ts.map +1 -0
  32. package/dist/src/embed/sage.spec.d.ts +2 -0
  33. package/dist/src/embed/sage.spec.d.ts.map +1 -0
  34. package/dist/src/errors.d.ts +1 -0
  35. package/dist/src/errors.d.ts.map +1 -1
  36. package/dist/src/index.d.ts +2 -1
  37. package/dist/src/index.d.ts.map +1 -1
  38. package/dist/src/react/index.d.ts +4 -0
  39. package/dist/src/react/index.d.ts.map +1 -1
  40. package/dist/src/test/test-utils.d.ts +1 -0
  41. package/dist/src/test/test-utils.d.ts.map +1 -1
  42. package/dist/src/types.d.ts +12 -1
  43. package/dist/src/types.d.ts.map +1 -1
  44. package/dist/tsembed-react.es.js +83 -2
  45. package/dist/tsembed-react.js +83 -1
  46. package/dist/tsembed.es.js +82 -2
  47. package/dist/tsembed.js +82 -1
  48. package/dist/visual-embed-sdk-react-full.d.ts +80 -2
  49. package/dist/visual-embed-sdk-react.d.ts +80 -2
  50. package/dist/visual-embed-sdk.d.ts +77 -2
  51. package/lib/package.json +1 -1
  52. package/lib/src/embed/sage.d.ts +73 -0
  53. package/lib/src/embed/sage.d.ts.map +1 -0
  54. package/lib/src/embed/sage.js +77 -0
  55. package/lib/src/embed/sage.js.map +1 -0
  56. package/lib/src/embed/sage.spec.d.ts +2 -0
  57. package/lib/src/embed/sage.spec.d.ts.map +1 -0
  58. package/lib/src/embed/sage.spec.js +32 -0
  59. package/lib/src/embed/sage.spec.js.map +1 -0
  60. package/lib/src/errors.d.ts +1 -0
  61. package/lib/src/errors.d.ts.map +1 -1
  62. package/lib/src/errors.js +1 -0
  63. package/lib/src/errors.js.map +1 -1
  64. package/lib/src/index.d.ts +2 -1
  65. package/lib/src/index.d.ts.map +1 -1
  66. package/lib/src/index.js +2 -1
  67. package/lib/src/index.js.map +1 -1
  68. package/lib/src/react/index.d.ts +4 -0
  69. package/lib/src/react/index.d.ts.map +1 -1
  70. package/lib/src/react/index.js +2 -0
  71. package/lib/src/react/index.js.map +1 -1
  72. package/lib/src/test/test-utils.d.ts +1 -0
  73. package/lib/src/test/test-utils.d.ts.map +1 -1
  74. package/lib/src/test/test-utils.js +6 -0
  75. package/lib/src/test/test-utils.js.map +1 -1
  76. package/lib/src/types.d.ts +12 -1
  77. package/lib/src/types.d.ts.map +1 -1
  78. package/lib/src/types.js +5 -0
  79. package/lib/src/types.js.map +1 -1
  80. package/package.json +1 -1
  81. package/src/embed/sage.spec.ts +45 -0
  82. package/src/embed/sage.ts +127 -0
  83. package/src/errors.ts +1 -0
  84. package/src/index.ts +2 -0
  85. package/src/react/index.tsx +9 -0
  86. package/src/test/test-utils.ts +7 -0
  87. package/src/types.ts +13 -2
@@ -0,0 +1,127 @@
1
+ /**
2
+ * Copyright (c) 2023
3
+ *
4
+ * Embed ThoughtSpot Sage
5
+ *
6
+ * @summary TS Sage embed
7
+ * @author Mourya Balabhadra <mourya.balabhadra@thoughtspot.com>
8
+ */
9
+
10
+ import {
11
+ Action, DOMSelector, Param, ViewConfig,
12
+ } from '../types';
13
+ import { getQueryParamString } from '../utils';
14
+ import { V1Embed } from './ts-embed';
15
+
16
+ /**
17
+ * The configuration attributes for the embedded search view.
18
+ *
19
+ * @group Embed components
20
+ */
21
+ export interface SageViewConfig extends ViewConfig {
22
+ /**
23
+ * If set to false, eureka results are hidden
24
+ */
25
+ hideEurekaResults?: boolean;
26
+ /**
27
+ * primary flag to enable eureka(/sage) page embedding.
28
+ */
29
+ isSageEmbed?: boolean,
30
+ /**
31
+ * flag to disable changing worksheet. default false.
32
+ */
33
+ disableWorksheetChange?: boolean,
34
+ /**
35
+ * flag to hide worksheet selector. default false.
36
+ */
37
+ hideWorksheetSelector?: boolean,
38
+ /**
39
+ * If set to true, the eureka search suggestions are not shown
40
+ *
41
+ */
42
+ hideEurekaSuggestions?: boolean;
43
+ }
44
+ export const HiddenActionItemByDefaultForSageEmbed = [
45
+ Action.Save,
46
+ Action.Pin,
47
+ Action.EditACopy,
48
+ Action.SaveAsView,
49
+ Action.UpdateTML,
50
+ Action.EditTML,
51
+ Action.AnswerDelete,
52
+ Action.Share,
53
+ ];
54
+ /**
55
+ * Embed ThoughtSpot search
56
+ *
57
+ * @group Embed components
58
+ */
59
+ export class SageEmbed extends V1Embed {
60
+ /**
61
+ * The view configuration for the embedded ThoughtSpot sage.
62
+ *
63
+ */
64
+ protected viewConfig: SageViewConfig;
65
+
66
+ // eslint-disable-next-line no-useless-constructor
67
+ constructor(domSelector: DOMSelector, viewConfig: SageViewConfig) {
68
+ super(domSelector, viewConfig);
69
+ }
70
+
71
+ /**
72
+ * Constructs a map of parameters to be passed on to the
73
+ * embedded Eureka or Sage search page.
74
+ *
75
+ * @returns {string} query string
76
+ */
77
+ protected getEmbedParams(): string {
78
+ const {
79
+ hideEurekaResults,
80
+ isSageEmbed,
81
+ disableWorksheetChange,
82
+ hideWorksheetSelector,
83
+ hideEurekaSuggestions,
84
+ } = this.viewConfig;
85
+
86
+ const params = {};
87
+ params[Param.EmbedApp] = true;
88
+ params[Param.HideEurekaResults] = !!hideEurekaResults;
89
+ params[Param.IsSageEmbed] = !!isSageEmbed;
90
+ params[Param.DisableWorksheetChange] = !!disableWorksheetChange;
91
+ params[Param.HideWorksheetSelector] = !!hideWorksheetSelector;
92
+ params[Param.HideEurekaSuggestions] = !!hideEurekaSuggestions;
93
+ params[Param.HideActions] = [
94
+ ...(params[Param.HideActions] ?? []),
95
+ ...HiddenActionItemByDefaultForSageEmbed,
96
+ ];
97
+
98
+ return getQueryParamString(params, true);
99
+ }
100
+
101
+ /**
102
+ * Construct the URL of the embedded ThoughtSpot sage to be
103
+ * loaded in the iframe
104
+ *
105
+ * @returns {string} iframe url
106
+ */
107
+ private getIFrameSrc() {
108
+ const path = 'eureka';
109
+ const tsPostHashParams = this.getThoughtSpotPostUrlParams();
110
+
111
+ return `${this.getRootIframeSrc()}/embed/${path}${tsPostHashParams}`;
112
+ }
113
+
114
+ /**
115
+ * Render the embedded ThoughtSpot Sage
116
+ *
117
+ * @returns {SageEmbed} Eureka/Sage embed
118
+ */
119
+ public render(): SageEmbed {
120
+ super.render();
121
+
122
+ const src = this.getIFrameSrc();
123
+ this.renderV1Embed(src);
124
+
125
+ return this;
126
+ }
127
+ }
package/src/errors.ts CHANGED
@@ -3,4 +3,5 @@ export const ERROR_MESSAGE = {
3
3
  LIVEBOARD_VIZ_ID_VALIDATION: 'Please provide either liveboardId or pinboardId',
4
4
  TRIGGER_TIMED_OUT: 'Trigger timedout in getting response',
5
5
  SEARCHEMBED_BETA_WRANING_MESSAGE: 'Search Embed is in Beta in this release.',
6
+ SAGE_EMBED_BETA_WARNING_MESSAGE: 'Sage Embed is in Beta in this release.',
6
7
  };
package/src/index.ts CHANGED
@@ -38,6 +38,7 @@ import {
38
38
  ContextMenuTriggerOptions,
39
39
  } from './types';
40
40
  import { CustomCssVariables } from './css-variables';
41
+ import { SageEmbed } from './embed/sage';
41
42
 
42
43
  export {
43
44
  init,
@@ -51,6 +52,7 @@ export {
51
52
  SearchBarEmbed,
52
53
  PinboardEmbed,
53
54
  LiveboardEmbed,
55
+ SageEmbed,
54
56
  AppEmbed,
55
57
  AuthFailureType,
56
58
  AuthStatus,
@@ -2,6 +2,7 @@ import React from 'react';
2
2
  import useDeepCompareEffect from 'use-deep-compare-effect';
3
3
  import { deepMerge } from '../utils';
4
4
  import { SearchBarEmbed as _SearchBarEmbed, SearchBarViewConfig } from '../embed/search-bar';
5
+ import { SageEmbed as _SageEmbed, SageViewConfig } from '../embed/sage';
5
6
  import { SearchEmbed as _SearchEmbed, SearchViewConfig } from '../embed/search';
6
7
  import { AppEmbed as _AppEmbed, AppViewConfig } from '../embed/app';
7
8
  import { LiveboardEmbed as _LiveboardEmbed, LiveboardViewConfig } from '../embed/liveboard';
@@ -150,6 +151,14 @@ export const SearchBarEmbed = componentFactory<
150
151
  SearchBarViewConfig
151
152
  >(_SearchBarEmbed);
152
153
 
154
+ interface SageEmbedProps extends EmbedProps, SageViewConfig {}
155
+
156
+ export const SageEmbed = componentFactory<
157
+ typeof _SageEmbed,
158
+ SageEmbedProps,
159
+ SageViewConfig
160
+ >(_SageEmbed);
161
+
153
162
  /**
154
163
  * Get a reference to the embed component to trigger events on the component.
155
164
  *
@@ -109,3 +109,10 @@ export const expectUrlMatchesWithParams = (source: string, target: string) => {
109
109
  const targetParamsObj = Object.fromEntries(targetUrl.searchParams);
110
110
  expect(sourceParamsObj).toMatchObject(targetParamsObj);
111
111
  };
112
+
113
+ export const expectUrlMatch = (source: string, target: string) => {
114
+ expectUrlMatchesWithParams(source, target);
115
+ const sourceUrl = new URL(source);
116
+ const targetUrl = new URL(target);
117
+ expect(sourceUrl.hash).toBe(targetUrl.hash);
118
+ };
package/src/types.ts CHANGED
@@ -195,16 +195,17 @@ export interface customCssInterface {
195
195
  /**
196
196
  * Can be used to define a custom font face
197
197
  * like:
198
+ *
198
199
  * @example
199
200
  * ```js
200
201
  * rules_UNSTABLE?: {
201
202
  * "@font-face": {
202
203
  * "font-family": "custom-font",
203
- * "src": url("/path/")
204
+ * "src": url("/path/")
204
205
  * };
205
206
  * };
206
207
  * ```
207
- *
208
+ *
208
209
  * Also, custom css rules outside of variables.
209
210
  * @example
210
211
  * ```js
@@ -447,6 +448,11 @@ export interface EmbedConfig {
447
448
  * @version SDK: 1.12.0 | ThoughtSpot: 8.4.0.cl, 8.4.1-sw*
448
449
  */
449
450
  suppressSearchEmbedBetaWarning?: boolean;
451
+ /**
452
+ * Hide beta alert warning message for SageEmbed.
453
+ *
454
+ */
455
+ suppressSageEmbedBetaWarning?: boolean;
450
456
  /**
451
457
  * Custom style params for embed Config.
452
458
  *
@@ -1882,6 +1888,11 @@ export enum Param {
1882
1888
  HideProfleAndHelp = 'profileAndHelpInNavBarHidden',
1883
1889
  HideApplicationSwitcher= 'applicationSwitcherHidden',
1884
1890
  HideOrgSwitcher= 'orgSwitcherHidden',
1891
+ IsSageEmbed = 'isSageEmbed',
1892
+ HideWorksheetSelector = 'hideWorksheetSelector',
1893
+ DisableWorksheetChange = 'disableWorksheetChange',
1894
+ HideEurekaResults = 'hideEurekaResults',
1895
+ HideEurekaSuggestions = 'hideEurekaSuggestions',
1885
1896
  }
1886
1897
 
1887
1898
  /**