@thoughtspot/visual-embed-sdk 1.21.0-alpha.2 → 1.21.0-alpha.3

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 (157) hide show
  1. package/cjs/package.json +170 -0
  2. package/cjs/src/auth.d.ts +183 -0
  3. package/cjs/src/auth.d.ts.map +1 -0
  4. package/cjs/src/auth.js +457 -0
  5. package/cjs/src/auth.js.map +1 -0
  6. package/cjs/src/auth.spec.d.ts +13 -0
  7. package/cjs/src/auth.spec.d.ts.map +1 -0
  8. package/cjs/src/auth.spec.js +397 -0
  9. package/cjs/src/auth.spec.js.map +1 -0
  10. package/cjs/src/config.d.ts +22 -0
  11. package/cjs/src/config.d.ts.map +1 -0
  12. package/cjs/src/config.js +70 -0
  13. package/cjs/src/config.js.map +1 -0
  14. package/cjs/src/config.spec.d.ts +5 -0
  15. package/cjs/src/config.spec.d.ts.map +1 -0
  16. package/cjs/src/config.spec.js +65 -0
  17. package/cjs/src/config.spec.js.map +1 -0
  18. package/cjs/src/embed/app.d.ts +151 -0
  19. package/cjs/src/embed/app.d.ts.map +1 -0
  20. package/cjs/src/embed/app.js +186 -0
  21. package/cjs/src/embed/app.js.map +1 -0
  22. package/cjs/src/embed/app.spec.d.ts +2 -0
  23. package/cjs/src/embed/app.spec.d.ts.map +1 -0
  24. package/cjs/src/embed/app.spec.js +210 -0
  25. package/cjs/src/embed/app.spec.js.map +1 -0
  26. package/cjs/src/embed/base.d.ts +79 -0
  27. package/cjs/src/embed/base.d.ts.map +1 -0
  28. package/cjs/src/embed/base.js +229 -0
  29. package/cjs/src/embed/base.js.map +1 -0
  30. package/cjs/src/embed/base.spec.d.ts +2 -0
  31. package/cjs/src/embed/base.spec.d.ts.map +1 -0
  32. package/cjs/src/embed/base.spec.js +198 -0
  33. package/cjs/src/embed/base.spec.js.map +1 -0
  34. package/cjs/src/embed/embed.spec.d.ts +2 -0
  35. package/cjs/src/embed/embed.spec.d.ts.map +1 -0
  36. package/cjs/src/embed/embed.spec.js +74 -0
  37. package/cjs/src/embed/embed.spec.js.map +1 -0
  38. package/cjs/src/embed/events.spec.d.ts +2 -0
  39. package/cjs/src/embed/events.spec.d.ts.map +1 -0
  40. package/cjs/src/embed/events.spec.js +238 -0
  41. package/cjs/src/embed/events.spec.js.map +1 -0
  42. package/cjs/src/embed/liveboard.d.ts +150 -0
  43. package/cjs/src/embed/liveboard.d.ts.map +1 -0
  44. package/cjs/src/embed/liveboard.js +168 -0
  45. package/cjs/src/embed/liveboard.js.map +1 -0
  46. package/cjs/src/embed/liveboard.spec.d.ts +2 -0
  47. package/cjs/src/embed/liveboard.spec.d.ts.map +1 -0
  48. package/cjs/src/embed/liveboard.spec.js +229 -0
  49. package/cjs/src/embed/liveboard.spec.js.map +1 -0
  50. package/cjs/src/embed/pinboard.spec.d.ts +2 -0
  51. package/cjs/src/embed/pinboard.spec.d.ts.map +1 -0
  52. package/cjs/src/embed/pinboard.spec.js +148 -0
  53. package/cjs/src/embed/pinboard.spec.js.map +1 -0
  54. package/cjs/src/embed/search-bar.d.ts +50 -0
  55. package/cjs/src/embed/search-bar.d.ts.map +1 -0
  56. package/cjs/src/embed/search-bar.js +63 -0
  57. package/cjs/src/embed/search-bar.js.map +1 -0
  58. package/cjs/src/embed/search.d.ts +125 -0
  59. package/cjs/src/embed/search.d.ts.map +1 -0
  60. package/cjs/src/embed/search.js +121 -0
  61. package/cjs/src/embed/search.js.map +1 -0
  62. package/cjs/src/embed/search.spec.d.ts +2 -0
  63. package/cjs/src/embed/search.spec.d.ts.map +1 -0
  64. package/cjs/src/embed/search.spec.js +238 -0
  65. package/cjs/src/embed/search.spec.js.map +1 -0
  66. package/cjs/src/embed/searchEmbed-basic-auth.spec.d.ts +2 -0
  67. package/cjs/src/embed/searchEmbed-basic-auth.spec.d.ts.map +1 -0
  68. package/cjs/src/embed/searchEmbed-basic-auth.spec.js +103 -0
  69. package/cjs/src/embed/searchEmbed-basic-auth.spec.js.map +1 -0
  70. package/cjs/src/embed/ts-embed.d.ts +323 -0
  71. package/cjs/src/embed/ts-embed.d.ts.map +1 -0
  72. package/cjs/src/embed/ts-embed.js +716 -0
  73. package/cjs/src/embed/ts-embed.js.map +1 -0
  74. package/cjs/src/embed/ts-embed.spec.d.ts +2 -0
  75. package/cjs/src/embed/ts-embed.spec.d.ts.map +1 -0
  76. package/cjs/src/embed/ts-embed.spec.js +771 -0
  77. package/cjs/src/embed/ts-embed.spec.js.map +1 -0
  78. package/cjs/src/errors.d.ts +7 -0
  79. package/cjs/src/errors.d.ts.map +1 -0
  80. package/cjs/src/errors.js +10 -0
  81. package/cjs/src/errors.js.map +1 -0
  82. package/cjs/src/index.d.ts +18 -0
  83. package/cjs/src/index.d.ts.map +1 -0
  84. package/cjs/src/index.js +41 -0
  85. package/cjs/src/index.js.map +1 -0
  86. package/cjs/src/mixpanel-service.d.ts +29 -0
  87. package/cjs/src/mixpanel-service.d.ts.map +1 -0
  88. package/cjs/src/mixpanel-service.js +76 -0
  89. package/cjs/src/mixpanel-service.js.map +1 -0
  90. package/cjs/src/mixpanel-service.spec.d.ts +2 -0
  91. package/cjs/src/mixpanel-service.spec.d.ts.map +1 -0
  92. package/cjs/src/mixpanel-service.spec.js +63 -0
  93. package/cjs/src/mixpanel-service.spec.js.map +1 -0
  94. package/cjs/src/react/index.d.ts +38 -0
  95. package/cjs/src/react/index.d.ts.map +1 -0
  96. package/cjs/src/react/index.js +64 -0
  97. package/cjs/src/react/index.js.map +1 -0
  98. package/cjs/src/react/index.spec.d.ts +3 -0
  99. package/cjs/src/react/index.spec.d.ts.map +1 -0
  100. package/cjs/src/react/index.spec.js +126 -0
  101. package/cjs/src/react/index.spec.js.map +1 -0
  102. package/cjs/src/react/util.d.ts +19 -0
  103. package/cjs/src/react/util.d.ts.map +1 -0
  104. package/cjs/src/react/util.js +25 -0
  105. package/cjs/src/react/util.js.map +1 -0
  106. package/cjs/src/test/test-utils.d.ts +48 -0
  107. package/cjs/src/test/test-utils.d.ts.map +1 -0
  108. package/cjs/src/test/test-utils.js +108 -0
  109. package/cjs/src/test/test-utils.js.map +1 -0
  110. package/cjs/src/types.d.ts +1846 -0
  111. package/cjs/src/types.d.ts.map +1 -0
  112. package/cjs/src/types.js +1415 -0
  113. package/cjs/src/types.js.map +1 -0
  114. package/cjs/src/utils/answerService.d.ts +10 -0
  115. package/cjs/src/utils/answerService.d.ts.map +1 -0
  116. package/cjs/src/utils/answerService.js +61 -0
  117. package/cjs/src/utils/answerService.js.map +1 -0
  118. package/cjs/src/utils/answerService.spec.d.ts +2 -0
  119. package/cjs/src/utils/answerService.spec.d.ts.map +1 -0
  120. package/cjs/src/utils/answerService.spec.js +31 -0
  121. package/cjs/src/utils/answerService.spec.js.map +1 -0
  122. package/cjs/src/utils/authService.d.ts +37 -0
  123. package/cjs/src/utils/authService.d.ts.map +1 -0
  124. package/cjs/src/utils/authService.js +106 -0
  125. package/cjs/src/utils/authService.js.map +1 -0
  126. package/cjs/src/utils/authService.spec.d.ts +2 -0
  127. package/cjs/src/utils/authService.spec.d.ts.map +1 -0
  128. package/cjs/src/utils/authService.spec.js +72 -0
  129. package/cjs/src/utils/authService.spec.js.map +1 -0
  130. package/cjs/src/utils/processData.d.ts +16 -0
  131. package/cjs/src/utils/processData.d.ts.map +1 -0
  132. package/cjs/src/utils/processData.js +110 -0
  133. package/cjs/src/utils/processData.js.map +1 -0
  134. package/cjs/src/utils/processData.spec.d.ts +2 -0
  135. package/cjs/src/utils/processData.spec.d.ts.map +1 -0
  136. package/cjs/src/utils/processData.spec.js +142 -0
  137. package/cjs/src/utils/processData.spec.js.map +1 -0
  138. package/cjs/src/utils/processTrigger.d.ts +10 -0
  139. package/cjs/src/utils/processTrigger.d.ts.map +1 -0
  140. package/cjs/src/utils/processTrigger.js +63 -0
  141. package/cjs/src/utils/processTrigger.js.map +1 -0
  142. package/cjs/src/utils/processTrigger.spec.d.ts +2 -0
  143. package/cjs/src/utils/processTrigger.spec.d.ts.map +1 -0
  144. package/cjs/src/utils/processTrigger.spec.js +58 -0
  145. package/cjs/src/utils/processTrigger.spec.js.map +1 -0
  146. package/cjs/src/utils.d.ts +68 -0
  147. package/cjs/src/utils.d.ts.map +1 -0
  148. package/cjs/src/utils.js +196 -0
  149. package/cjs/src/utils.js.map +1 -0
  150. package/cjs/src/utils.spec.d.ts +5 -0
  151. package/cjs/src/utils.spec.d.ts.map +1 -0
  152. package/cjs/src/utils.spec.js +98 -0
  153. package/cjs/src/utils.spec.js.map +1 -0
  154. package/dist/tsembed.es.js +1 -1
  155. package/dist/tsembed.js +1 -1
  156. package/lib/package.json +8 -3
  157. package/package.json +8 -3
@@ -0,0 +1,151 @@
1
+ /**
2
+ * Copyright (c) 2022
3
+ *
4
+ * Full application embedding
5
+ * https://developers.thoughtspot.com/docs/?pageid=full-embed
6
+ *
7
+ * @summary Full app embed
8
+ * @module
9
+ * @author Ayon Ghosh <ayon.ghosh@thoughtspot.com>
10
+ */
11
+ import { DOMSelector, ViewConfig } from '../types';
12
+ import { V1Embed } from './ts-embed';
13
+ /**
14
+ * Pages within the ThoughtSpot app that can be embedded.
15
+ */
16
+ export declare enum Page {
17
+ /**
18
+ * Home page
19
+ */
20
+ Home = "home",
21
+ /**
22
+ * Search page
23
+ */
24
+ Search = "search",
25
+ /**
26
+ * Saved answers listing page
27
+ */
28
+ Answers = "answers",
29
+ /**
30
+ * Liveboards listing page
31
+ */
32
+ Liveboards = "liveboards",
33
+ /**
34
+ * @hidden
35
+ */
36
+ Pinboards = "pinboards",
37
+ /**
38
+ * Data management page
39
+ */
40
+ Data = "data",
41
+ /**
42
+ * SpotIQ listing page
43
+ */
44
+ SpotIQ = "spotiq"
45
+ }
46
+ /**
47
+ * The view configuration for full app embedding.
48
+ *
49
+ * @group Embed components
50
+ */
51
+ export interface AppViewConfig extends ViewConfig {
52
+ /**
53
+ * If true, the main navigation bar within the ThoughtSpot app
54
+ * is displayed. By default, the navigation bar is hidden.
55
+ */
56
+ showPrimaryNavbar?: boolean;
57
+ /**
58
+ * If true, help and profile buttons will hide on NavBar. By default,
59
+ * they are shown.
60
+ */
61
+ disableProfileAndHelp?: boolean;
62
+ /**
63
+ * A URL path within the app that is to be embedded.
64
+ * If both path and pageId attributes are defined, the path definition
65
+ * takes precedence.
66
+ */
67
+ path?: string;
68
+ /**
69
+ * The application page to set as the start page
70
+ * in the embedded view.
71
+ */
72
+ pageId?: Page;
73
+ /**
74
+ * This puts a filter tag on the application. All metadata lists in the
75
+ * application, such as Liveboards and answers, would be filtered by this
76
+ * tag.
77
+ */
78
+ tag?: string;
79
+ /**
80
+ * The array of GUIDs to be hidden
81
+ */
82
+ hideObjects?: string[];
83
+ /**
84
+ * Render liveboards using the new v2 rendering mode
85
+ * This is a transient flag which is primarily meant for internal use
86
+ *
87
+ * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1-sw
88
+ * @hidden
89
+ */
90
+ liveboardV2?: boolean;
91
+ /**
92
+ * If set to true, the Search Assist feature is enabled.
93
+ *
94
+ * @version SDK: 1.13.0 | ThoughtSpot: 8.5.0.cl, 8.8.1-sw
95
+ */
96
+ enableSearchAssist?: boolean;
97
+ }
98
+ /**
99
+ * Embeds full ThoughtSpot experience in a host application.
100
+ *
101
+ * @group Embed components
102
+ */
103
+ export declare class AppEmbed extends V1Embed {
104
+ protected viewConfig: AppViewConfig;
105
+ constructor(domSelector: DOMSelector, viewConfig: AppViewConfig);
106
+ /**
107
+ * Constructs a map of parameters to be passed on to the
108
+ * embedded Liveboard or visualization.
109
+ */
110
+ protected getEmbedParams(): string;
111
+ /**
112
+ * Constructs the URL of the ThoughtSpot app page to be rendered.
113
+ *
114
+ * @param pageId The ID of the page to be embedded.
115
+ */
116
+ private getIFrameSrc;
117
+ /**
118
+ * Gets the ThoughtSpot route of the page for a particular page ID.
119
+ *
120
+ * @param pageId The identifier for a page in the ThoughtSpot app.
121
+ */
122
+ private getPageRoute;
123
+ /**
124
+ * Formats the path provided by the user.
125
+ *
126
+ * @param path The URL path.
127
+ * @returns The URL path that the embedded app understands.
128
+ */
129
+ private formatPath;
130
+ /**
131
+ * Navigate to particular page for app embed. eg:answers/pinboards/home
132
+ * This is used for embedding answers, pinboards, visualizations and full application
133
+ * only.
134
+ *
135
+ * @param path string | number The string, set to iframe src and navigate to new page
136
+ * eg: appEmbed.navigateToPage('pinboards')
137
+ * When used with `noReload` (default: true) this can also be a number
138
+ * like 1/-1 to go forward/back.
139
+ * @param noReload boolean Trigger the navigation without reloading the page
140
+ * @version SDK: 1.12.0 | ThoughtSpot: 8.4.0.cl, 8.4.1-sw
141
+ */
142
+ navigateToPage(path: string | number, noReload?: boolean): void;
143
+ /**
144
+ * Renders the embedded application pages in the ThoughtSpot app.
145
+ *
146
+ * @param renderOptions An object containing the page ID
147
+ * to be embedded.
148
+ */
149
+ render(): AppEmbed;
150
+ }
151
+ //# sourceMappingURL=app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/embed/app.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EACmB,WAAW,EAAa,UAAU,EAC3D,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC;;GAEG;AAEH,oBAAY,IAAI;IACZ;;OAEG;IACH,IAAI,SAAS;IACb;;OAEG;IACH,MAAM,WAAW;IACjB;;OAEG;IACH,OAAO,YAAY;IACnB;;OAEG;IACH,UAAU,eAAe;IACzB;;OAEG;IACH,SAAS,cAAc;IACvB;;OAEG;IACH,IAAI,SAAS;IACb;;OAEG;IACH,MAAM,WAAW;CACpB;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAc,SAAQ,UAAU;IAC7C;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,MAAM,CAAC,EAAE,IAAI,CAAC;IACd;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED;;;;GAIG;AACH,qBAAa,QAAS,SAAQ,OAAO;IACjC,SAAS,CAAC,UAAU,EAAE,aAAa,CAAC;gBAGxB,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa;IAI/D;;;OAGG;IACH,SAAS,CAAC,cAAc;IAoCxB;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAWpB;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAoBpB;;;;;OAKG;IACH,OAAO,CAAC,UAAU;IAalB;;;;;;;;;;;OAWG;IACI,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,UAAQ,GAAG,IAAI;IAsBpE;;;;;OAKG;IACI,MAAM,IAAI,QAAQ;CAO5B"}
@@ -0,0 +1,186 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright (c) 2022
4
+ *
5
+ * Full application embedding
6
+ * https://developers.thoughtspot.com/docs/?pageid=full-embed
7
+ *
8
+ * @summary Full app embed
9
+ * @module
10
+ * @author Ayon Ghosh <ayon.ghosh@thoughtspot.com>
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.AppEmbed = exports.Page = void 0;
14
+ const utils_1 = require("../utils");
15
+ const types_1 = require("../types");
16
+ const ts_embed_1 = require("./ts-embed");
17
+ /**
18
+ * Pages within the ThoughtSpot app that can be embedded.
19
+ */
20
+ // eslint-disable-next-line no-shadow
21
+ var Page;
22
+ (function (Page) {
23
+ /**
24
+ * Home page
25
+ */
26
+ Page["Home"] = "home";
27
+ /**
28
+ * Search page
29
+ */
30
+ Page["Search"] = "search";
31
+ /**
32
+ * Saved answers listing page
33
+ */
34
+ Page["Answers"] = "answers";
35
+ /**
36
+ * Liveboards listing page
37
+ */
38
+ Page["Liveboards"] = "liveboards";
39
+ /**
40
+ * @hidden
41
+ */
42
+ Page["Pinboards"] = "pinboards";
43
+ /**
44
+ * Data management page
45
+ */
46
+ Page["Data"] = "data";
47
+ /**
48
+ * SpotIQ listing page
49
+ */
50
+ Page["SpotIQ"] = "spotiq";
51
+ })(Page = exports.Page || (exports.Page = {}));
52
+ /**
53
+ * Embeds full ThoughtSpot experience in a host application.
54
+ *
55
+ * @group Embed components
56
+ */
57
+ class AppEmbed extends ts_embed_1.V1Embed {
58
+ // eslint-disable-next-line no-useless-constructor
59
+ constructor(domSelector, viewConfig) {
60
+ super(domSelector, viewConfig);
61
+ }
62
+ /**
63
+ * Constructs a map of parameters to be passed on to the
64
+ * embedded Liveboard or visualization.
65
+ */
66
+ getEmbedParams() {
67
+ const { tag, hideObjects, liveboardV2, showPrimaryNavbar, disableProfileAndHelp, enableSearchAssist, } = this.viewConfig;
68
+ let params = {};
69
+ params[types_1.Param.EmbedApp] = true;
70
+ params[types_1.Param.PrimaryNavHidden] = !showPrimaryNavbar;
71
+ params[types_1.Param.HideProfleAndHelp] = !!disableProfileAndHelp;
72
+ params = this.getBaseQueryParams(params);
73
+ if (tag) {
74
+ params[types_1.Param.Tag] = tag;
75
+ }
76
+ if (hideObjects && hideObjects.length) {
77
+ params[types_1.Param.HideObjects] = JSON.stringify(hideObjects);
78
+ }
79
+ if (liveboardV2 !== undefined) {
80
+ params[types_1.Param.LiveboardV2Enabled] = liveboardV2;
81
+ }
82
+ if (enableSearchAssist !== undefined) {
83
+ params[types_1.Param.EnableSearchAssist] = enableSearchAssist;
84
+ }
85
+ const queryParams = (0, utils_1.getQueryParamString)(params, true);
86
+ return queryParams;
87
+ }
88
+ /**
89
+ * Constructs the URL of the ThoughtSpot app page to be rendered.
90
+ *
91
+ * @param pageId The ID of the page to be embedded.
92
+ */
93
+ getIFrameSrc() {
94
+ const { pageId, path } = this.viewConfig;
95
+ const pageRoute = this.formatPath(path) || this.getPageRoute(pageId);
96
+ let url = `${this.getRootIframeSrc()}/${pageRoute}`;
97
+ const tsPostHashParams = this.getThoughtSpotPostUrlParams();
98
+ url = `${url}${tsPostHashParams}`;
99
+ return url;
100
+ }
101
+ /**
102
+ * Gets the ThoughtSpot route of the page for a particular page ID.
103
+ *
104
+ * @param pageId The identifier for a page in the ThoughtSpot app.
105
+ */
106
+ getPageRoute(pageId) {
107
+ switch (pageId) {
108
+ case Page.Search:
109
+ return 'answer';
110
+ case Page.Answers:
111
+ return 'answers';
112
+ case Page.Liveboards:
113
+ return 'pinboards';
114
+ case Page.Pinboards:
115
+ return 'pinboards';
116
+ case Page.Data:
117
+ return 'data/tables';
118
+ case Page.SpotIQ:
119
+ return 'insights/results';
120
+ case Page.Home:
121
+ default:
122
+ return 'home';
123
+ }
124
+ }
125
+ /**
126
+ * Formats the path provided by the user.
127
+ *
128
+ * @param path The URL path.
129
+ * @returns The URL path that the embedded app understands.
130
+ */
131
+ formatPath(path) {
132
+ if (!path) {
133
+ return null;
134
+ }
135
+ // remove leading slash
136
+ if (path.indexOf('/') === 0) {
137
+ return path.substring(1);
138
+ }
139
+ return path;
140
+ }
141
+ /**
142
+ * Navigate to particular page for app embed. eg:answers/pinboards/home
143
+ * This is used for embedding answers, pinboards, visualizations and full application
144
+ * only.
145
+ *
146
+ * @param path string | number The string, set to iframe src and navigate to new page
147
+ * eg: appEmbed.navigateToPage('pinboards')
148
+ * When used with `noReload` (default: true) this can also be a number
149
+ * like 1/-1 to go forward/back.
150
+ * @param noReload boolean Trigger the navigation without reloading the page
151
+ * @version SDK: 1.12.0 | ThoughtSpot: 8.4.0.cl, 8.4.1-sw
152
+ */
153
+ navigateToPage(path, noReload = false) {
154
+ if (!this.iFrame) {
155
+ console.log('Please call render before invoking this method');
156
+ return;
157
+ }
158
+ if (noReload) {
159
+ this.trigger(types_1.HostEvent.Navigate, path);
160
+ }
161
+ else {
162
+ if (typeof path !== 'string') {
163
+ console.warn('Path can only by a string when triggered without noReload');
164
+ return;
165
+ }
166
+ const iframeSrc = this.iFrame.src;
167
+ const embedPath = '#/embed';
168
+ const currentPath = iframeSrc.includes(embedPath) ? embedPath : '#';
169
+ this.iFrame.src = `${iframeSrc.split(currentPath)[0]}${currentPath}/${path.replace(/^\/?#?\//, '')}`;
170
+ }
171
+ }
172
+ /**
173
+ * Renders the embedded application pages in the ThoughtSpot app.
174
+ *
175
+ * @param renderOptions An object containing the page ID
176
+ * to be embedded.
177
+ */
178
+ render() {
179
+ super.render();
180
+ const src = this.getIFrameSrc();
181
+ this.renderV1Embed(src);
182
+ return this;
183
+ }
184
+ }
185
+ exports.AppEmbed = AppEmbed;
186
+ //# sourceMappingURL=app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/embed/app.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=app.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.spec.d.ts","sourceRoot":"","sources":["../../../src/embed/app.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,210 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const app_1 = require("./app");
5
+ const index_1 = require("../index");
6
+ const types_1 = require("../types");
7
+ const test_utils_1 = require("../test/test-utils");
8
+ const config = tslib_1.__importStar(require("../config"));
9
+ const defaultViewConfig = {
10
+ frameParams: {
11
+ width: 1280,
12
+ height: 720,
13
+ },
14
+ };
15
+ const thoughtSpotHost = 'tshost';
16
+ const defaultParamsPost = '';
17
+ beforeAll(() => {
18
+ (0, index_1.init)({
19
+ thoughtSpotHost,
20
+ authType: types_1.AuthType.None,
21
+ });
22
+ });
23
+ const cleanUp = () => {
24
+ document.body.innerHTML = (0, test_utils_1.getDocumentBody)();
25
+ };
26
+ describe('App embed tests', () => {
27
+ beforeEach(() => {
28
+ cleanUp();
29
+ });
30
+ test('should render home page by default', async () => {
31
+ const appEmbed = new app_1.AppEmbed((0, test_utils_1.getRootEl)(), defaultViewConfig);
32
+ appEmbed.render();
33
+ await (0, test_utils_1.executeAfterWait)(() => {
34
+ (0, test_utils_1.expectUrlMatchesWithParams)((0, test_utils_1.getIFrameSrc)(), `http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=true&profileAndHelpInNavBarHidden=false${test_utils_1.defaultParams}${defaultParamsPost}#/home`);
35
+ });
36
+ });
37
+ test('should hide the primary nav bar', async () => {
38
+ const appEmbed = new app_1.AppEmbed((0, test_utils_1.getRootEl)(), {
39
+ ...defaultViewConfig,
40
+ showPrimaryNavbar: true,
41
+ });
42
+ appEmbed.render();
43
+ await (0, test_utils_1.executeAfterWait)(() => {
44
+ (0, test_utils_1.expectUrlMatchesWithParams)((0, test_utils_1.getIFrameSrc)(), `http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=false&profileAndHelpInNavBarHidden=false${test_utils_1.defaultParams}${defaultParamsPost}#/home`);
45
+ });
46
+ });
47
+ test('should hide the help and profile buttons from nav bar', async () => {
48
+ const appEmbed = new app_1.AppEmbed((0, test_utils_1.getRootEl)(), {
49
+ ...defaultViewConfig,
50
+ disableProfileAndHelp: true,
51
+ });
52
+ appEmbed.render();
53
+ await (0, test_utils_1.executeAfterWait)(() => {
54
+ (0, test_utils_1.expectUrlMatchesWithParams)((0, test_utils_1.getIFrameSrc)(), `http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=true&profileAndHelpInNavBarHidden=true${test_utils_1.defaultParams}${defaultParamsPost}#/home`);
55
+ });
56
+ });
57
+ describe('should render the correct routes for pages', () => {
58
+ /* eslint-disable no-loop-func */
59
+ const pageRouteMap = {
60
+ [app_1.Page.Search]: 'answer',
61
+ [app_1.Page.Answers]: 'answers',
62
+ [app_1.Page.Pinboards]: 'pinboards',
63
+ [app_1.Page.Liveboards]: 'pinboards',
64
+ [app_1.Page.Data]: 'data/tables',
65
+ [app_1.Page.Home]: 'home',
66
+ [app_1.Page.SpotIQ]: 'insights/results',
67
+ };
68
+ const pageIds = Object.keys(pageRouteMap);
69
+ for (let i = 0; i < pageIds.length; i++) {
70
+ const pageId = pageIds[i];
71
+ test(`${pageId}`, async () => {
72
+ const route = pageRouteMap[pageId];
73
+ const appEmbed = new app_1.AppEmbed((0, test_utils_1.getRootEl)(), {
74
+ ...defaultViewConfig,
75
+ pageId: pageId,
76
+ });
77
+ appEmbed.render();
78
+ await (0, test_utils_1.executeAfterWait)(() => {
79
+ (0, test_utils_1.expectUrlMatchesWithParams)((0, test_utils_1.getIFrameSrc)(), `http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=true&profileAndHelpInNavBarHidden=false${test_utils_1.defaultParams}${defaultParamsPost}#/${route}`);
80
+ cleanUp();
81
+ });
82
+ });
83
+ }
84
+ });
85
+ test('should navigate to a path', async () => {
86
+ const appEmbed = new app_1.AppEmbed((0, test_utils_1.getRootEl)(), {
87
+ ...defaultViewConfig,
88
+ path: 'foo/bar',
89
+ });
90
+ appEmbed.render();
91
+ await (0, test_utils_1.executeAfterWait)(() => {
92
+ (0, test_utils_1.expectUrlMatchesWithParams)((0, test_utils_1.getIFrameSrc)(), `http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=true&profileAndHelpInNavBarHidden=false${test_utils_1.defaultParams}${defaultParamsPost}#/foo/bar`);
93
+ });
94
+ });
95
+ test('should apply runtime filters', async () => {
96
+ const appEmbed = new app_1.AppEmbed((0, test_utils_1.getRootEl)(), {
97
+ ...defaultViewConfig,
98
+ showPrimaryNavbar: true,
99
+ runtimeFilters: [
100
+ {
101
+ columnName: 'sales',
102
+ operator: types_1.RuntimeFilterOp.EQ,
103
+ values: [1000],
104
+ },
105
+ ],
106
+ });
107
+ appEmbed.render();
108
+ await (0, test_utils_1.executeAfterWait)(() => {
109
+ (0, test_utils_1.expectUrlMatchesWithParams)((0, test_utils_1.getIFrameSrc)(), `http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=false&profileAndHelpInNavBarHidden=false&col1=sales&op1=EQ&val1=1000${test_utils_1.defaultParams}${defaultParamsPost}#/home`);
110
+ });
111
+ });
112
+ test('should disable and hide actions', async () => {
113
+ const appEmbed = new app_1.AppEmbed((0, test_utils_1.getRootEl)(), {
114
+ ...defaultViewConfig,
115
+ showPrimaryNavbar: true,
116
+ disabledActions: [types_1.Action.Save, types_1.Action.Update],
117
+ disabledActionReason: 'Access denied',
118
+ hiddenActions: [types_1.Action.Download],
119
+ });
120
+ appEmbed.render();
121
+ await (0, test_utils_1.executeAfterWait)(() => {
122
+ (0, test_utils_1.expectUrlMatchesWithParams)((0, test_utils_1.getIFrameSrc)(), `http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=false&profileAndHelpInNavBarHidden=false&${test_utils_1.defaultParamsWithoutHiddenActions}&disableAction=[%22save%22,%22update%22]&disableHint=Access%20denied&hideAction=[%22${types_1.Action.ReportError}%22,%22download%22]${defaultParamsPost}#/home`);
123
+ });
124
+ });
125
+ test('Should add the tag to the iframe src', async () => {
126
+ const appEmbed = new app_1.AppEmbed((0, test_utils_1.getRootEl)(), {
127
+ ...defaultViewConfig,
128
+ showPrimaryNavbar: false,
129
+ tag: 'Finance',
130
+ });
131
+ appEmbed.render();
132
+ await (0, test_utils_1.executeAfterWait)(() => {
133
+ (0, test_utils_1.expectUrlMatchesWithParams)((0, test_utils_1.getIFrameSrc)(), `http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=true&profileAndHelpInNavBarHidden=false${test_utils_1.defaultParams}&tag=Finance${defaultParamsPost}#/home`);
134
+ });
135
+ });
136
+ test('Should add enableSearchAssist flagto the iframe src', async () => {
137
+ const appEmbed = new app_1.AppEmbed((0, test_utils_1.getRootEl)(), {
138
+ ...defaultViewConfig,
139
+ enableSearchAssist: true,
140
+ });
141
+ appEmbed.render();
142
+ await (0, test_utils_1.executeAfterWait)(() => {
143
+ (0, test_utils_1.expectUrlMatchesWithParams)((0, test_utils_1.getIFrameSrc)(), `http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=true&profileAndHelpInNavBarHidden=false&enableSearchAssist=true${test_utils_1.defaultParams}${defaultParamsPost}#/home`);
144
+ });
145
+ });
146
+ describe('Navigate to Page API', () => {
147
+ const path = 'pinboard/e0836cad-4fdf-42d4-bd97-567a6b2a6058';
148
+ beforeEach(() => {
149
+ jest.spyOn(config, 'getThoughtSpotHost').mockImplementation(() => 'http://tshost');
150
+ });
151
+ test('when app is AppEmbed after navigateToPage function call, new path should be set to iframe', async () => {
152
+ const appEmbed = new app_1.AppEmbed((0, test_utils_1.getRootEl)(), {
153
+ frameParams: {
154
+ width: '100%',
155
+ height: '100%',
156
+ },
157
+ });
158
+ await appEmbed.render();
159
+ appEmbed.navigateToPage(path);
160
+ (0, test_utils_1.expectUrlMatchesWithParams)((0, test_utils_1.getIFrameSrc)(), `http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=true&profileAndHelpInNavBarHidden=false&${test_utils_1.defaultParamsForPinboardEmbed}${defaultParamsPost}#/${path}`);
161
+ });
162
+ test('navigateToPage with noReload should trigger the appropriate event', async () => {
163
+ (0, test_utils_1.mockMessageChannel)();
164
+ const appEmbed = new app_1.AppEmbed((0, test_utils_1.getRootEl)(), {
165
+ frameParams: {
166
+ width: '100%',
167
+ height: '100%',
168
+ },
169
+ });
170
+ await appEmbed.render();
171
+ const iframe = (0, test_utils_1.getIFrameEl)();
172
+ iframe.contentWindow.postMessage = jest.fn();
173
+ appEmbed.navigateToPage(path, true);
174
+ expect(iframe.contentWindow.postMessage).toHaveBeenCalledWith(expect.objectContaining({
175
+ type: types_1.HostEvent.Navigate,
176
+ data: path,
177
+ }), `http://${thoughtSpotHost}`, expect.anything());
178
+ appEmbed.navigateToPage(-1, true);
179
+ expect(iframe.contentWindow.postMessage).toHaveBeenCalledWith(expect.objectContaining({
180
+ type: types_1.HostEvent.Navigate,
181
+ data: -1,
182
+ }), `http://${thoughtSpotHost}`, expect.anything());
183
+ });
184
+ test('Do not allow number path without noReload in navigateToPage', async () => {
185
+ const appEmbed = new app_1.AppEmbed((0, test_utils_1.getRootEl)(), {
186
+ frameParams: {
187
+ width: '100%',
188
+ height: '100%',
189
+ },
190
+ });
191
+ await appEmbed.render();
192
+ spyOn(console, 'warn');
193
+ appEmbed.navigateToPage(-1);
194
+ expect(console.warn).toHaveBeenCalledWith('Path can only by a string when triggered without noReload');
195
+ });
196
+ test('navigateToPage function use before render', async () => {
197
+ spyOn(console, 'log');
198
+ const appEmbed = new app_1.AppEmbed((0, test_utils_1.getRootEl)(), {
199
+ frameParams: {
200
+ width: '100%',
201
+ height: '100%',
202
+ },
203
+ });
204
+ appEmbed.navigateToPage(path);
205
+ await appEmbed.render();
206
+ expect(console.log).toHaveBeenCalledWith('Please call render before invoking this method');
207
+ });
208
+ });
209
+ });
210
+ //# sourceMappingURL=app.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.spec.js","sourceRoot":"","sources":["../../../src/embed/app.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,79 @@
1
+ import { EmbedConfig, PrefetchFeatures } from '../types';
2
+ import { notifyAuthFailure, notifyAuthSDKSuccess, notifyAuthSuccess, notifyLogout, AuthEventEmitter } from '../auth';
3
+ export declare let authPromise: Promise<boolean>;
4
+ /**
5
+ * Gets the configuration embed was initialized with.
6
+ *
7
+ * @returns {@link EmbedConfig} The configuration embed was initialized with.
8
+ * @version SDK: 1.19.0 | ThoughtSpot: *
9
+ * @group Global methods
10
+ */
11
+ export declare const getEmbedConfig: () => EmbedConfig;
12
+ export declare const getAuthPromise: () => Promise<boolean>;
13
+ export { notifyAuthFailure, notifyAuthSDKSuccess, notifyAuthSuccess, notifyLogout, };
14
+ /**
15
+ * Perform authentication on the ThoughtSpot app as applicable.
16
+ */
17
+ export declare const handleAuth: () => Promise<boolean>;
18
+ /**
19
+ * Prefetches static resources from the specified URL. Web browsers can then cache the
20
+ * prefetched resources and serve them from the user's local disk to provide faster access
21
+ * to your app.
22
+ *
23
+ * @param url The URL provided for prefetch
24
+ * @param prefetchFeatures Specify features which needs to be prefetched.
25
+ * @version SDK: 1.4.0 | ThoughtSpot: ts7.sep.cl, 7.2.1
26
+ * @group Global methods
27
+ */
28
+ export declare const prefetch: (url?: string, prefetchFeatures?: PrefetchFeatures[]) => void;
29
+ /**
30
+ * Initializes the Visual Embed SDK globally and perform
31
+ * authentication if applicable. This function needs to be called before any ThoughtSpot
32
+ * component like liveboard etc can be embedded. But need not wait for AuthEvent.SUCCESS
33
+ * to actually embed. That is handled internally.
34
+ *
35
+ * @param embedConfig The configuration object containing ThoughtSpot host,
36
+ * authentication mechanism and so on.
37
+ * @example
38
+ * ```js
39
+ * const authStatus = init({
40
+ * thoughtSpotHost: 'https://my.thoughtspot.cloud',
41
+ * authType: AuthType.None,
42
+ * });
43
+ * authStatus.on(AuthStatus.FAILURE, (reason) => { // do something here });
44
+ * ```
45
+ * @returns {@link AuthEventEmitter} event emitter which emits events on authentication success,
46
+ * failure and logout. See {@link AuthStatus}
47
+ * @version SDK: 1.0.0 | ThoughtSpot ts7.april.cl, 7.2.1
48
+ * @group Authentication / Init
49
+ */
50
+ export declare const init: (embedConfig: EmbedConfig) => AuthEventEmitter;
51
+ /**
52
+ *
53
+ */
54
+ export declare function disableAutoLogin(): void;
55
+ /**
56
+ * Logs out from ThoughtSpot. This also sets the autoLogin flag to false, to
57
+ * prevent the SDK from automatically logging in again.
58
+ *
59
+ * You can call the `init` method again to re login, if autoLogin is set to
60
+ * true in this second call it will be honored.
61
+ *
62
+ * @param doNotDisableAutoLogin This flag when passed will not disable autoLogin
63
+ * @returns Promise which resolves when logout completes.
64
+ * @version SDK: 1.10.1 | ThoughtSpot: 8.2.0.cl, 8.4.1-sw
65
+ * @group Global methods
66
+ */
67
+ export declare const logout: (doNotDisableAutoLogin?: boolean) => Promise<boolean>;
68
+ /**
69
+ * Renders functions in a queue, resolves to next function only after the callback next
70
+ * is called
71
+ *
72
+ * @param fn The function being registered
73
+ */
74
+ export declare const renderInQueue: (fn: (next?: (val?: any) => void) => Promise<any>) => Promise<any>;
75
+ /**
76
+ *
77
+ */
78
+ export declare function reset(): void;
79
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/embed/base.ts"],"names":[],"mappings":"AAYA,OAAO,EAAY,WAAW,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACnE,OAAO,EAMH,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EACjB,YAAY,EAEZ,gBAAgB,EACnB,MAAM,SAAS,CAAC;AAUjB,eAAO,IAAI,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;AACzC;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,QAAO,WAAqB,CAAC;AAExD,eAAO,MAAM,cAAc,QAAO,QAAQ,OAAO,CAAgB,CAAC;AAElE,OAAO,EACH,iBAAiB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,YAAY,GAC3E,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,UAAU,QAAO,QAAQ,OAAO,CAe5C,CAAC;AASF;;;;;;;;;GASG;AACH,eAAO,MAAM,QAAQ,SAAU,MAAM,qBAAqB,gBAAgB,EAAE,KAAG,IAqB9E,CAAC;AAiCF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,IAAI,gBAAiB,WAAW,KAAG,gBA2B/C,CAAC;AAEF;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,MAAM,uCAAoC,QAAQ,OAAO,CAQrE,CAAC;AAIF;;;;;GAKG;AACH,eAAO,MAAM,aAAa,sBAAuB,GAAG,KAAK,IAAI,KAAK,QAAQ,GAAG,CAAC,KAAG,QAAQ,GAAG,CAQ3F,CAAC;AAGF;;GAEG;AACH,wBAAgB,KAAK,IAAI,IAAI,CAI5B"}