@thoughtspot/visual-embed-sdk 1.24.0-dev → 1.24.0-preRender.0

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 (231) hide show
  1. package/cjs/package.json +2 -3
  2. package/cjs/src/embed/app.d.ts +3 -1
  3. package/cjs/src/embed/app.d.ts.map +1 -1
  4. package/cjs/src/embed/app.js +8 -2
  5. package/cjs/src/embed/app.js.map +1 -1
  6. package/cjs/src/embed/base.d.ts +2 -0
  7. package/cjs/src/embed/base.d.ts.map +1 -1
  8. package/cjs/src/embed/base.js +2 -0
  9. package/cjs/src/embed/base.js.map +1 -1
  10. package/cjs/src/embed/liveboard.d.ts +3 -2
  11. package/cjs/src/embed/liveboard.d.ts.map +1 -1
  12. package/cjs/src/embed/liveboard.js +6 -5
  13. package/cjs/src/embed/liveboard.js.map +1 -1
  14. package/cjs/src/embed/sage.d.ts +4 -1
  15. package/cjs/src/embed/sage.d.ts.map +1 -1
  16. package/cjs/src/embed/sage.js +9 -2
  17. package/cjs/src/embed/sage.js.map +1 -1
  18. package/cjs/src/embed/search-bar.d.ts +1 -0
  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 +5 -1
  23. package/cjs/src/embed/search.d.ts.map +1 -1
  24. package/cjs/src/embed/search.js +10 -2
  25. package/cjs/src/embed/search.js.map +1 -1
  26. package/cjs/src/embed/ts-embed.d.ts +9 -3
  27. package/cjs/src/embed/ts-embed.d.ts.map +1 -1
  28. package/cjs/src/embed/ts-embed.js +50 -20
  29. package/cjs/src/embed/ts-embed.js.map +1 -1
  30. package/cjs/src/embed/ts-embed.spec.js +47 -0
  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/react/index.d.ts +5 -1
  42. package/cjs/src/react/index.d.ts.map +1 -1
  43. package/cjs/src/react/index.js +8 -8
  44. package/cjs/src/react/index.js.map +1 -1
  45. package/cjs/src/types.d.ts +46 -18
  46. package/cjs/src/types.d.ts.map +1 -1
  47. package/cjs/src/types.js +7 -13
  48. package/cjs/src/types.js.map +1 -1
  49. package/cjs/src/utils/graphql/answerService/answer-queries.d.ts +5 -0
  50. package/cjs/src/utils/graphql/answerService/answer-queries.d.ts.map +1 -0
  51. package/cjs/src/utils/graphql/answerService/answer-queries.js +80 -0
  52. package/cjs/src/utils/graphql/answerService/answer-queries.js.map +1 -0
  53. package/cjs/src/utils/graphql/answerService/answerService.d.ts +61 -0
  54. package/cjs/src/utils/graphql/answerService/answerService.d.ts.map +1 -0
  55. package/cjs/src/utils/graphql/answerService/answerService.js +182 -0
  56. package/cjs/src/utils/graphql/answerService/answerService.js.map +1 -0
  57. package/cjs/src/utils/graphql/answerService/answerService.spec.d.ts +2 -0
  58. package/cjs/src/utils/graphql/answerService/answerService.spec.d.ts.map +1 -0
  59. package/cjs/src/utils/graphql/answerService/answerService.spec.js +201 -0
  60. package/cjs/src/utils/graphql/answerService/answerService.spec.js.map +1 -0
  61. package/cjs/src/utils/graphql/graphql-request.d.ts +15 -0
  62. package/cjs/src/utils/graphql/graphql-request.d.ts.map +1 -0
  63. package/cjs/src/utils/graphql/graphql-request.js +40 -0
  64. package/cjs/src/utils/graphql/graphql-request.js.map +1 -0
  65. package/cjs/src/utils/graphql/sourceService.d.ts +8 -0
  66. package/cjs/src/utils/graphql/sourceService.d.ts.map +1 -0
  67. package/cjs/src/utils/graphql/sourceService.js +69 -0
  68. package/cjs/src/utils/graphql/sourceService.js.map +1 -0
  69. package/cjs/src/utils/graphql/sourceService.spec.d.ts +2 -0
  70. package/cjs/src/utils/graphql/sourceService.spec.d.ts.map +1 -0
  71. package/cjs/src/utils/graphql/sourceService.spec.js +12 -0
  72. package/cjs/src/utils/graphql/sourceService.spec.js.map +1 -0
  73. package/cjs/src/utils/processData.d.ts.map +1 -1
  74. package/cjs/src/utils/processData.js +7 -11
  75. package/cjs/src/utils/processData.js.map +1 -1
  76. package/cjs/src/utils/processData.spec.js +13 -17
  77. package/cjs/src/utils/processData.spec.js.map +1 -1
  78. package/cjs/src/utils.d.ts +6 -0
  79. package/cjs/src/utils.d.ts.map +1 -1
  80. package/cjs/src/utils.js +26 -1
  81. package/cjs/src/utils.js.map +1 -1
  82. package/dist/src/embed/app.d.ts +3 -1
  83. package/dist/src/embed/app.d.ts.map +1 -1
  84. package/dist/src/embed/base.d.ts +2 -0
  85. package/dist/src/embed/base.d.ts.map +1 -1
  86. package/dist/src/embed/liveboard.d.ts +3 -2
  87. package/dist/src/embed/liveboard.d.ts.map +1 -1
  88. package/dist/src/embed/sage.d.ts +4 -1
  89. package/dist/src/embed/sage.d.ts.map +1 -1
  90. package/dist/src/embed/search-bar.d.ts +1 -0
  91. package/dist/src/embed/search-bar.d.ts.map +1 -1
  92. package/dist/src/embed/search.d.ts +5 -1
  93. package/dist/src/embed/search.d.ts.map +1 -1
  94. package/dist/src/embed/ts-embed.d.ts +9 -3
  95. package/dist/src/embed/ts-embed.d.ts.map +1 -1
  96. package/dist/src/index.d.ts +3 -2
  97. package/dist/src/index.d.ts.map +1 -1
  98. package/dist/src/mixpanel-service.d.ts.map +1 -1
  99. package/dist/src/react/index.d.ts +5 -1
  100. package/dist/src/react/index.d.ts.map +1 -1
  101. package/dist/src/types.d.ts +46 -18
  102. package/dist/src/types.d.ts.map +1 -1
  103. package/dist/src/utils/graphql/answerService/answer-queries.d.ts +5 -0
  104. package/dist/src/utils/graphql/answerService/answer-queries.d.ts.map +1 -0
  105. package/dist/src/utils/graphql/answerService/answerService.d.ts +61 -0
  106. package/dist/src/utils/graphql/answerService/answerService.d.ts.map +1 -0
  107. package/dist/src/utils/graphql/answerService/answerService.spec.d.ts +2 -0
  108. package/dist/src/utils/graphql/answerService/answerService.spec.d.ts.map +1 -0
  109. package/dist/src/utils/graphql/graphql-request.d.ts +15 -0
  110. package/dist/src/utils/graphql/graphql-request.d.ts.map +1 -0
  111. package/dist/src/utils/graphql/sourceService.d.ts +8 -0
  112. package/dist/src/utils/graphql/sourceService.d.ts.map +1 -0
  113. package/dist/src/utils/graphql/sourceService.spec.d.ts +2 -0
  114. package/dist/src/utils/graphql/sourceService.spec.d.ts.map +1 -0
  115. package/dist/src/utils/processData.d.ts.map +1 -1
  116. package/dist/src/utils.d.ts +6 -0
  117. package/dist/src/utils.d.ts.map +1 -1
  118. package/dist/tsembed-react.es.js +468 -107
  119. package/dist/tsembed-react.js +471 -106
  120. package/dist/tsembed.es.js +511 -103
  121. package/dist/tsembed.js +511 -102
  122. package/dist/visual-embed-sdk-react-full.d.ts +132 -28
  123. package/dist/visual-embed-sdk-react.d.ts +132 -28
  124. package/dist/visual-embed-sdk.d.ts +127 -27
  125. package/lib/package.json +2 -3
  126. package/lib/src/embed/app.d.ts +3 -1
  127. package/lib/src/embed/app.d.ts.map +1 -1
  128. package/lib/src/embed/app.js +8 -2
  129. package/lib/src/embed/app.js.map +1 -1
  130. package/lib/src/embed/base.d.ts +2 -0
  131. package/lib/src/embed/base.d.ts.map +1 -1
  132. package/lib/src/embed/base.js +2 -0
  133. package/lib/src/embed/base.js.map +1 -1
  134. package/lib/src/embed/liveboard.d.ts +3 -2
  135. package/lib/src/embed/liveboard.d.ts.map +1 -1
  136. package/lib/src/embed/liveboard.js +6 -5
  137. package/lib/src/embed/liveboard.js.map +1 -1
  138. package/lib/src/embed/sage.d.ts +4 -1
  139. package/lib/src/embed/sage.d.ts.map +1 -1
  140. package/lib/src/embed/sage.js +9 -2
  141. package/lib/src/embed/sage.js.map +1 -1
  142. package/lib/src/embed/search-bar.d.ts +1 -0
  143. package/lib/src/embed/search-bar.d.ts.map +1 -1
  144. package/lib/src/embed/search-bar.js +1 -0
  145. package/lib/src/embed/search-bar.js.map +1 -1
  146. package/lib/src/embed/search.d.ts +5 -1
  147. package/lib/src/embed/search.d.ts.map +1 -1
  148. package/lib/src/embed/search.js +10 -2
  149. package/lib/src/embed/search.js.map +1 -1
  150. package/lib/src/embed/ts-embed.d.ts +9 -3
  151. package/lib/src/embed/ts-embed.d.ts.map +1 -1
  152. package/lib/src/embed/ts-embed.js +50 -20
  153. package/lib/src/embed/ts-embed.js.map +1 -1
  154. package/lib/src/embed/ts-embed.spec.js +47 -0
  155. package/lib/src/embed/ts-embed.spec.js.map +1 -1
  156. package/lib/src/index.d.ts +3 -2
  157. package/lib/src/index.d.ts.map +1 -1
  158. package/lib/src/index.js +2 -1
  159. package/lib/src/index.js.map +1 -1
  160. package/lib/src/mixpanel-service.d.ts.map +1 -1
  161. package/lib/src/mixpanel-service.js +2 -0
  162. package/lib/src/mixpanel-service.js.map +1 -1
  163. package/lib/src/mixpanel-service.spec.js +1 -0
  164. package/lib/src/mixpanel-service.spec.js.map +1 -1
  165. package/lib/src/react/index.d.ts +5 -1
  166. package/lib/src/react/index.d.ts.map +1 -1
  167. package/lib/src/react/index.js +7 -7
  168. package/lib/src/react/index.js.map +1 -1
  169. package/lib/src/types.d.ts +46 -18
  170. package/lib/src/types.d.ts.map +1 -1
  171. package/lib/src/types.js +6 -12
  172. package/lib/src/types.js.map +1 -1
  173. package/lib/src/utils/graphql/answerService/answer-queries.d.ts +5 -0
  174. package/lib/src/utils/graphql/answerService/answer-queries.d.ts.map +1 -0
  175. package/lib/src/utils/graphql/answerService/answer-queries.js +77 -0
  176. package/lib/src/utils/graphql/answerService/answer-queries.js.map +1 -0
  177. package/lib/src/utils/graphql/answerService/answerService.d.ts +61 -0
  178. package/lib/src/utils/graphql/answerService/answerService.d.ts.map +1 -0
  179. package/lib/src/utils/graphql/answerService/answerService.js +177 -0
  180. package/lib/src/utils/graphql/answerService/answerService.js.map +1 -0
  181. package/lib/src/utils/graphql/answerService/answerService.spec.d.ts +2 -0
  182. package/lib/src/utils/graphql/answerService/answerService.spec.d.ts.map +1 -0
  183. package/lib/src/utils/graphql/answerService/answerService.spec.js +199 -0
  184. package/lib/src/utils/graphql/answerService/answerService.spec.js.map +1 -0
  185. package/lib/src/utils/graphql/graphql-request.d.ts +15 -0
  186. package/lib/src/utils/graphql/graphql-request.d.ts.map +1 -0
  187. package/lib/src/utils/graphql/graphql-request.js +36 -0
  188. package/lib/src/utils/graphql/graphql-request.js.map +1 -0
  189. package/lib/src/utils/graphql/sourceService.d.ts +8 -0
  190. package/lib/src/utils/graphql/sourceService.d.ts.map +1 -0
  191. package/lib/src/utils/graphql/sourceService.js +65 -0
  192. package/lib/src/utils/graphql/sourceService.js.map +1 -0
  193. package/lib/src/utils/graphql/sourceService.spec.d.ts +2 -0
  194. package/lib/src/utils/graphql/sourceService.spec.d.ts.map +1 -0
  195. package/lib/src/utils/graphql/sourceService.spec.js +10 -0
  196. package/lib/src/utils/graphql/sourceService.spec.js.map +1 -0
  197. package/lib/src/utils/processData.d.ts.map +1 -1
  198. package/lib/src/utils/processData.js +8 -12
  199. package/lib/src/utils/processData.js.map +1 -1
  200. package/lib/src/utils/processData.spec.js +14 -18
  201. package/lib/src/utils/processData.spec.js.map +1 -1
  202. package/lib/src/utils.d.ts +6 -0
  203. package/lib/src/utils.d.ts.map +1 -1
  204. package/lib/src/utils.js +23 -0
  205. package/lib/src/utils.js.map +1 -1
  206. package/lib/src/visual-embed-sdk.d.ts +133 -28
  207. package/package.json +2 -3
  208. package/src/embed/app.ts +12 -2
  209. package/src/embed/base.ts +2 -0
  210. package/src/embed/liveboard.ts +7 -5
  211. package/src/embed/sage.ts +13 -2
  212. package/src/embed/search-bar.tsx +2 -0
  213. package/src/embed/search.ts +14 -2
  214. package/src/embed/ts-embed.spec.ts +49 -0
  215. package/src/embed/ts-embed.ts +61 -22
  216. package/src/index.ts +5 -0
  217. package/src/mixpanel-service.spec.ts +1 -0
  218. package/src/mixpanel-service.ts +1 -0
  219. package/src/react/index.tsx +40 -37
  220. package/src/types.ts +50 -19
  221. package/src/utils/graphql/answerService/answer-queries.ts +80 -0
  222. package/src/utils/graphql/answerService/answerService.spec.ts +231 -0
  223. package/src/utils/graphql/answerService/answerService.ts +234 -0
  224. package/src/utils/graphql/graphql-request.ts +45 -0
  225. package/src/utils/graphql/sourceService.spec.ts +10 -0
  226. package/src/utils/graphql/sourceService.ts +71 -0
  227. package/src/utils/processData.spec.ts +15 -25
  228. package/src/utils/processData.ts +13 -15
  229. package/src/utils.ts +25 -0
  230. package/src/utils/answerService.spec.ts +0 -41
  231. package/src/utils/answerService.ts +0 -63
@@ -0,0 +1,182 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AnswerService = exports.OperationType = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const utils_1 = require("../../../utils");
6
+ const graphql_request_1 = require("../graphql-request");
7
+ const sourceService_1 = require("../sourceService");
8
+ const queries = tslib_1.__importStar(require("./answer-queries"));
9
+ // eslint-disable-next-line no-shadow
10
+ var OperationType;
11
+ (function (OperationType) {
12
+ OperationType["GetChartWithData"] = "GetChartWithData";
13
+ OperationType["GetTableWithHeadlineData"] = "GetTableWithHeadlineData";
14
+ })(OperationType = exports.OperationType || (exports.OperationType = {}));
15
+ /**
16
+ * Class representing the answer service provided with the
17
+ * custom action payload. This service could be used to run
18
+ * graphql queries in the context of the answer on which the
19
+ * custom action was triggered.
20
+ *
21
+ * @example
22
+ * ```js
23
+ * embed.on(EmbedEvent.CustomAction, e => {
24
+ * const underlying = await e.answerService.getUnderlyingDataForPoint([
25
+ * 'col name 1'
26
+ * ]);
27
+ * const data = await underlying.fetchData(0, 100);
28
+ * })
29
+ * ```
30
+ * @version
31
+ * ThoughtSpot: 9.9.0.cl / SDK: 1.25.0
32
+ */
33
+ class AnswerService {
34
+ constructor(session, answer, thoughtSpotHost, selectedPoints) {
35
+ this.session = session;
36
+ this.answer = answer;
37
+ this.thoughtSpotHost = thoughtSpotHost;
38
+ this.selectedPoints = selectedPoints;
39
+ this.session = (0, utils_1.removeTypename)(session);
40
+ }
41
+ async getSourceDetail() {
42
+ const sourceId = this.answer.sources[0].header.guid;
43
+ return (0, sourceService_1.getSourceDetail)(this.thoughtSpotHost, sourceId);
44
+ }
45
+ async removeColumns(columnIds) {
46
+ return this.executeQuery(queries.removeColumns, {
47
+ logicalColumnIds: columnIds,
48
+ });
49
+ }
50
+ async addColumns(columnIds) {
51
+ return this.executeQuery(queries.addColumns, {
52
+ columns: columnIds.map((colId) => ({ logicalColumnId: colId })),
53
+ });
54
+ }
55
+ async fetchData(offset = 0, size = 1000) {
56
+ const { answer } = await this.executeQuery(queries.getAnswerData, {
57
+ deadline: 0,
58
+ dataPaginationParams: {
59
+ isClientPaginated: true,
60
+ offset,
61
+ size,
62
+ },
63
+ });
64
+ const { columns, data } = answer.visualizations[0];
65
+ return {
66
+ columns,
67
+ data,
68
+ };
69
+ }
70
+ /**
71
+ *
72
+ * @param userLocale
73
+ * @param omitInfo Omit the download Info on top of the CSV
74
+ * @returns Response
75
+ */
76
+ async fetchCSVBlob(userLocale = 'en-us', omitInfo = false) {
77
+ if (omitInfo) {
78
+ console.warn('omitInfo not supported yet.');
79
+ }
80
+ const fetchUrl = `${this.thoughtSpotHost}/prism/download/answer/csv?sessionId=${this.session.sessionId}&genNo=${this.session.genNo}&userLocale=${userLocale}&exportFileName=data&omitInfo=${omitInfo}`;
81
+ return fetch(fetchUrl, {
82
+ credentials: 'include',
83
+ });
84
+ }
85
+ async getUnderlyingDataForPoint(outputColumnNames, selectedPoints) {
86
+ if (!selectedPoints && !this.selectedPoints) {
87
+ throw new Error('Needs to be triggered in context of a point');
88
+ }
89
+ if (!selectedPoints) {
90
+ selectedPoints = getSelectedPointsForUnderlyingDataQuery(this.selectedPoints);
91
+ }
92
+ const sourceDetail = await this.getSourceDetail();
93
+ const ouputColumnGuids = getGuidsFromColumnNames(sourceDetail, outputColumnNames);
94
+ const unAggAnswer = await (0, graphql_request_1.graphqlQuery)({
95
+ query: queries.getUnaggregatedAnswerSession,
96
+ variables: {
97
+ session: this.session,
98
+ columns: selectedPoints,
99
+ },
100
+ thoughtSpotHost: this.thoughtSpotHost,
101
+ });
102
+ const unaggAnswerSession = new AnswerService(unAggAnswer.id, unAggAnswer.answer, this.thoughtSpotHost);
103
+ const currentColumns = new Set(unAggAnswer.answer.visualizations[0].columns
104
+ .map((c) => c.column.referencedColumns[0].guid));
105
+ const columnsToAdd = [...ouputColumnGuids].filter((col) => !currentColumns.has(col));
106
+ if (columnsToAdd.length) {
107
+ await unaggAnswerSession.addColumns(columnsToAdd);
108
+ }
109
+ const columnsToRemove = [...currentColumns].filter((col) => !ouputColumnGuids.has(col));
110
+ if (columnsToRemove.length) {
111
+ await unaggAnswerSession.removeColumns(columnsToRemove);
112
+ }
113
+ return unaggAnswerSession;
114
+ }
115
+ async executeQuery(query, variables) {
116
+ const data = await (0, graphql_request_1.graphqlQuery)({
117
+ query,
118
+ variables: {
119
+ session: this.session,
120
+ ...variables,
121
+ },
122
+ thoughtSpotHost: this.thoughtSpotHost,
123
+ isCompositeQuery: false,
124
+ });
125
+ this.session = (0, utils_1.deepMerge)(this.session, (data === null || data === void 0 ? void 0 : data.id) || {});
126
+ return data;
127
+ }
128
+ getSession() {
129
+ return this.session;
130
+ }
131
+ }
132
+ exports.AnswerService = AnswerService;
133
+ /**
134
+ *
135
+ * @param sourceDetail
136
+ * @param colNames
137
+ */
138
+ function getGuidsFromColumnNames(sourceDetail, colNames) {
139
+ const cols = sourceDetail.columns.reduce((colSet, col) => {
140
+ colSet[col.name] = col;
141
+ return colSet;
142
+ }, {});
143
+ return new Set(colNames.map((colName) => {
144
+ const col = cols[colName];
145
+ return col.id;
146
+ }));
147
+ }
148
+ /**
149
+ *
150
+ * @param selectedPoints
151
+ */
152
+ function getSelectedPointsForUnderlyingDataQuery(selectedPoints) {
153
+ const underlyingDataPoint = [];
154
+ /**
155
+ *
156
+ * @param colVal
157
+ */
158
+ function addPointFromColVal(colVal) {
159
+ const dataType = colVal.column.dataType;
160
+ const id = colVal.column.id;
161
+ let dataValue;
162
+ if (dataType === 'DATE') {
163
+ dataValue = [{
164
+ epochRange: {
165
+ startEpoch: colVal.value,
166
+ },
167
+ }];
168
+ }
169
+ else {
170
+ dataValue = [{ value: colVal.value }];
171
+ }
172
+ underlyingDataPoint.push({
173
+ columnId: colVal.column.id,
174
+ dataValue,
175
+ });
176
+ }
177
+ selectedPoints.forEach((p) => {
178
+ p.selectedAttributes.forEach(addPointFromColVal);
179
+ });
180
+ return underlyingDataPoint;
181
+ }
182
+ //# sourceMappingURL=answerService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"answerService.js","sourceRoot":"","sources":["../../../../../src/utils/graphql/answerService/answerService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import 'jest-fetch-mock';
2
+ //# sourceMappingURL=answerService.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"answerService.spec.d.ts","sourceRoot":"","sources":["../../../../../src/utils/graphql/answerService/answerService.spec.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,CAAC"}
@@ -0,0 +1,201 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ require("jest-fetch-mock");
4
+ const answerService_1 = require("./answerService");
5
+ const answer_queries_1 = require("./answer-queries");
6
+ const defaultSession = {
7
+ sessionId: 'id',
8
+ genNo: 1,
9
+ acSession: {
10
+ sessionId: 'ac',
11
+ genNo: 0,
12
+ },
13
+ };
14
+ /**
15
+ *
16
+ * @param answer
17
+ * @param point
18
+ */
19
+ function createAnswerService(answer = {}, point) {
20
+ return new answerService_1.AnswerService(defaultSession, answer, 'https://tshost', point);
21
+ }
22
+ describe('Answer service tests', () => {
23
+ beforeEach(() => {
24
+ fetchMock.resetMocks();
25
+ });
26
+ test('Execute query should execute the supplied graphql on the session', async () => {
27
+ fetchMock.mockResponseOnce(JSON.stringify({
28
+ data: {
29
+ Bla: {
30
+ id: {},
31
+ },
32
+ },
33
+ }));
34
+ const answerService = createAnswerService();
35
+ answerService.executeQuery('query Bla {}', { a: 1 });
36
+ expect(fetchMock).toBeCalledWith('https://tshost/prism/?op=Bla', expect.objectContaining({
37
+ body: JSON.stringify({
38
+ operationName: 'Bla',
39
+ query: 'query Bla {}',
40
+ variables: {
41
+ session: defaultSession,
42
+ a: 1,
43
+ },
44
+ }),
45
+ }));
46
+ });
47
+ test('Should return error when failure', async () => {
48
+ fetchMock.mockRejectOnce(new Error('testError'));
49
+ const answerService = createAnswerService();
50
+ const data = await answerService.executeQuery('query Bla {}', { a: 1 });
51
+ expect(data.message).toBe('testError');
52
+ });
53
+ test('fetchData should call the right graphql, and return data', async () => {
54
+ fetchMock.mockResponseOnce(JSON.stringify({
55
+ data: {
56
+ getAnswer: {
57
+ id: {},
58
+ answer: {
59
+ visualizations: [{
60
+ columns: [{
61
+ column: {
62
+ id: 'id1',
63
+ },
64
+ }],
65
+ data: {
66
+ foo: 1,
67
+ },
68
+ }],
69
+ },
70
+ },
71
+ },
72
+ }));
73
+ const answerService = createAnswerService();
74
+ const data = await answerService.fetchData(20, 10);
75
+ expect(fetchMock).toHaveBeenCalledWith('https://tshost/prism/?op=GetTableWithHeadlineData', expect.objectContaining({
76
+ body: JSON.stringify({
77
+ operationName: 'GetTableWithHeadlineData',
78
+ query: answer_queries_1.getAnswerData,
79
+ variables: {
80
+ session: defaultSession,
81
+ deadline: 0,
82
+ dataPaginationParams: {
83
+ isClientPaginated: true,
84
+ offset: 20,
85
+ size: 10,
86
+ },
87
+ },
88
+ }),
89
+ }));
90
+ expect(data.columns[0].column.id).toBe('id1');
91
+ expect(data.data.foo).toBe(1);
92
+ });
93
+ test('fetchCSVBlob should call the right API', async () => {
94
+ fetchMock.once('Bla');
95
+ const answerService = createAnswerService();
96
+ answerService.fetchCSVBlob(undefined, true);
97
+ expect(fetchMock).toHaveBeenCalledWith(`https://tshost/prism/download/answer/csv?sessionId=${defaultSession.sessionId}&genNo=${defaultSession.genNo}&userLocale=en-us&exportFileName=data&omitInfo=true`, expect.objectContaining({}));
98
+ });
99
+ test('getUnderlyingDataForPoint should call the right APIs', async () => {
100
+ fetchMock.mockResponses(JSON.stringify({
101
+ data: {
102
+ getSourceDetailById: [{
103
+ columns: [{
104
+ id: 'id1',
105
+ name: 'col1',
106
+ }, {
107
+ id: 'id2',
108
+ name: 'col2',
109
+ }, {
110
+ id: 'id3',
111
+ name: 'col3',
112
+ }],
113
+ }],
114
+ },
115
+ }), JSON.stringify({
116
+ data: {
117
+ Answer__getUnaggregatedAnswer: {
118
+ id: {
119
+ ...defaultSession,
120
+ },
121
+ answer: {
122
+ visualizations: [{
123
+ columns: [{
124
+ column: {
125
+ id: 'oid1',
126
+ name: 'col1',
127
+ referencedColumns: [{
128
+ guid: 'id1',
129
+ }],
130
+ },
131
+ }],
132
+ }],
133
+ },
134
+ },
135
+ },
136
+ }), JSON.stringify({
137
+ data: {
138
+ Answer__addColumn: {
139
+ id: {
140
+ genNo: 2,
141
+ },
142
+ },
143
+ },
144
+ }), JSON.stringify({
145
+ data: {
146
+ Answer__removeColumns: {
147
+ id: {
148
+ genNo: 3,
149
+ },
150
+ },
151
+ },
152
+ }));
153
+ const answerService = createAnswerService({
154
+ sources: [{
155
+ header: {
156
+ guid: 'source1',
157
+ },
158
+ }],
159
+ }, [{
160
+ selectedAttributes: [{
161
+ column: {
162
+ id: 'oid1',
163
+ name: 'col1',
164
+ dataType: 'CHAR',
165
+ },
166
+ value: '1',
167
+ }, {
168
+ column: {
169
+ id: 'oid3',
170
+ name: 'col3',
171
+ dataType: 'DATE',
172
+ },
173
+ value: 12345,
174
+ }],
175
+ selectedMeasures: [],
176
+ }]);
177
+ const underlying = await answerService.getUnderlyingDataForPoint(['col2']);
178
+ expect(fetchMock).toHaveBeenCalledTimes(4);
179
+ expect(underlying.getSession().genNo).toBe(3);
180
+ expect(fetchMock).toHaveBeenCalledWith('https://tshost/prism/?op=RemoveColumns', expect.objectContaining({
181
+ body: JSON.stringify({
182
+ operationName: 'RemoveColumns',
183
+ query: answer_queries_1.removeColumns,
184
+ variables: {
185
+ session: {
186
+ ...defaultSession,
187
+ genNo: 2,
188
+ },
189
+ logicalColumnIds: [
190
+ 'id1',
191
+ ],
192
+ },
193
+ }),
194
+ }));
195
+ });
196
+ test('getUnderlyingDataForPoint should throw when no point is selected', async () => {
197
+ const answerService = createAnswerService({}, null);
198
+ await expect(answerService.getUnderlyingDataForPoint(['col2'])).rejects.toThrow();
199
+ });
200
+ });
201
+ //# sourceMappingURL=answerService.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"answerService.spec.js","sourceRoot":"","sources":["../../../../../src/utils/graphql/answerService/answerService.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ *
3
+ * @param root0
4
+ * @param root0.query
5
+ * @param root0.variables
6
+ * @param root0.thoughtSpotHost
7
+ * @param root0.isCompositeQuery
8
+ */
9
+ export declare function graphqlQuery({ query, variables, thoughtSpotHost, isCompositeQuery, }: {
10
+ query: string;
11
+ variables: any;
12
+ thoughtSpotHost: string;
13
+ isCompositeQuery?: boolean;
14
+ }): Promise<any>;
15
+ //# sourceMappingURL=graphql-request.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphql-request.d.ts","sourceRoot":"","sources":["../../../../src/utils/graphql/graphql-request.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAAC,EAC/B,KAAK,EACL,SAAS,EACT,eAAe,EACf,gBAAwB,GAC3B,EAAE;IACC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,GAAG,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC7B,gBAwBA"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.graphqlQuery = void 0;
4
+ const utils_1 = require("../../utils");
5
+ /**
6
+ *
7
+ * @param root0
8
+ * @param root0.query
9
+ * @param root0.variables
10
+ * @param root0.thoughtSpotHost
11
+ * @param root0.isCompositeQuery
12
+ */
13
+ async function graphqlQuery({ query, variables, thoughtSpotHost, isCompositeQuery = false, }) {
14
+ const operationName = (0, utils_1.getOperationNameFromQuery)(query);
15
+ try {
16
+ const response = await fetch(`${thoughtSpotHost}/prism/?op=${operationName}`, {
17
+ method: 'POST',
18
+ headers: {
19
+ 'content-type': 'application/json;charset=UTF-8',
20
+ 'x-requested-by': 'ThoughtSpot',
21
+ accept: '*/*',
22
+ 'accept-language': 'en-us',
23
+ },
24
+ body: JSON.stringify({
25
+ operationName,
26
+ query,
27
+ variables,
28
+ }),
29
+ credentials: 'include',
30
+ });
31
+ const result = await response.json();
32
+ const dataValues = Object.values(result.data);
33
+ return (isCompositeQuery) ? result.data : dataValues[0];
34
+ }
35
+ catch (error) {
36
+ return error;
37
+ }
38
+ }
39
+ exports.graphqlQuery = graphqlQuery;
40
+ //# sourceMappingURL=graphql-request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphql-request.js","sourceRoot":"","sources":["../../../../src/utils/graphql/graphql-request.ts"],"names":[],"mappings":";;;AAAA,uCAAwD;AAExD;;;;;;;GAOG;AACI,KAAK,UAAU,YAAY,CAAC,EAC/B,KAAK,EACL,SAAS,EACT,eAAe,EACf,gBAAgB,GAAG,KAAK,GAM3B;IACG,MAAM,aAAa,GAAG,IAAA,iCAAyB,EAAC,KAAK,CAAC,CAAC;IACvD,IAAI;QACA,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,eAAe,cAAc,aAAa,EAAE,EAAE;YAC1E,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACL,cAAc,EAAE,gCAAgC;gBAChD,gBAAgB,EAAE,aAAa;gBAC/B,MAAM,EAAE,KAAK;gBACb,iBAAiB,EAAE,OAAO;aAC7B;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACjB,aAAa;gBACb,KAAK;gBACL,SAAS;aACZ,CAAC;YACF,WAAW,EAAE,SAAS;SACzB,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACrC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC9C,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;KAC3D;IAAC,OAAO,KAAK,EAAE;QACZ,OAAO,KAAK,CAAC;KAChB;AACL,CAAC;AAlCD,oCAkCC"}
@@ -0,0 +1,8 @@
1
+ export declare const getSourceDetailQuery = "\n query GetSourceDetail($ids: [GUID!]!) {\n getSourceDetailById(ids: $ids, type: LOGICAL_TABLE) {\n id\n name\n description\n authorName\n authorDisplayName\n isExternal\n type\n created\n modified\n columns {\n id\n name\n author\n authorDisplayName\n description\n dataType\n type\n modified\n ownerName\n owner\n dataRecency\n sources {\n tableId\n tableName\n columnId\n columnName\n __typename\n }\n synonyms\n cohortAnswerId\n __typename\n }\n relationships\n destinationRelationships\n dataSourceId\n __typename\n }\n } \n";
2
+ /**
3
+ *
4
+ * @param thoughtSpotHost
5
+ * @param sourceId
6
+ */
7
+ export declare function getSourceDetail(thoughtSpotHost: string, sourceId: string): Promise<any>;
8
+ //# sourceMappingURL=sourceService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sourceService.d.ts","sourceRoot":"","sources":["../../../../src/utils/graphql/sourceService.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,oBAAoB,43BAyChC,CAAC;AAIF;;;;GAIG;AACH,wBAAsB,eAAe,CACjC,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,GAAG,CAAC,CAed"}
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getSourceDetail = exports.getSourceDetailQuery = void 0;
4
+ const graphql_request_1 = require("./graphql-request");
5
+ exports.getSourceDetailQuery = `
6
+ query GetSourceDetail($ids: [GUID!]!) {
7
+ getSourceDetailById(ids: $ids, type: LOGICAL_TABLE) {
8
+ id
9
+ name
10
+ description
11
+ authorName
12
+ authorDisplayName
13
+ isExternal
14
+ type
15
+ created
16
+ modified
17
+ columns {
18
+ id
19
+ name
20
+ author
21
+ authorDisplayName
22
+ description
23
+ dataType
24
+ type
25
+ modified
26
+ ownerName
27
+ owner
28
+ dataRecency
29
+ sources {
30
+ tableId
31
+ tableName
32
+ columnId
33
+ columnName
34
+ __typename
35
+ }
36
+ synonyms
37
+ cohortAnswerId
38
+ __typename
39
+ }
40
+ relationships
41
+ destinationRelationships
42
+ dataSourceId
43
+ __typename
44
+ }
45
+ }
46
+ `;
47
+ const sourceDetailCache = new Map();
48
+ /**
49
+ *
50
+ * @param thoughtSpotHost
51
+ * @param sourceId
52
+ */
53
+ async function getSourceDetail(thoughtSpotHost, sourceId) {
54
+ if (sourceDetailCache.has(sourceId)) {
55
+ return sourceDetailCache.get(sourceId);
56
+ }
57
+ const details = await (0, graphql_request_1.graphqlQuery)({
58
+ query: exports.getSourceDetailQuery,
59
+ variables: {
60
+ ids: [sourceId],
61
+ },
62
+ thoughtSpotHost,
63
+ });
64
+ const souceDetails = details[0];
65
+ sourceDetailCache.set(sourceId, souceDetails);
66
+ return souceDetails;
67
+ }
68
+ exports.getSourceDetail = getSourceDetail;
69
+ //# sourceMappingURL=sourceService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sourceService.js","sourceRoot":"","sources":["../../../../src/utils/graphql/sourceService.ts"],"names":[],"mappings":";;;AAAA,uDAAiD;AAEpC,QAAA,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCnC,CAAC;AAEF,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAe,CAAC;AAEjD;;;;GAIG;AACI,KAAK,UAAU,eAAe,CACjC,eAAuB,EACvB,QAAgB;IAEhB,IAAI,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;QACjC,OAAO,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;KAC1C;IACD,MAAM,OAAO,GAAG,MAAM,IAAA,8BAAY,EAAC;QAC/B,KAAK,EAAE,4BAAoB;QAC3B,SAAS,EAAE;YACP,GAAG,EAAE,CAAC,QAAQ,CAAC;SAClB;QACD,eAAe;KAClB,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAChC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAC9C,OAAO,YAAY,CAAC;AACxB,CAAC;AAlBD,0CAkBC"}
@@ -0,0 +1,2 @@
1
+ import 'jest-fetch-mock';
2
+ //# sourceMappingURL=sourceService.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sourceService.spec.d.ts","sourceRoot":"","sources":["../../../../src/utils/graphql/sourceService.spec.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,CAAC"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ require("jest-fetch-mock");
4
+ const sourceService_1 = require("./sourceService");
5
+ describe('Source service tests', () => {
6
+ test('Should return source detail and cache it', async () => {
7
+ await (0, sourceService_1.getSourceDetail)('https://tshost', 'id');
8
+ await (0, sourceService_1.getSourceDetail)('https://tshost', 'id');
9
+ expect(fetchMock).toBeCalledTimes(1);
10
+ });
11
+ });
12
+ //# sourceMappingURL=sourceService.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sourceService.spec.js","sourceRoot":"","sources":["../../../../src/utils/graphql/sourceService.spec.ts"],"names":[],"mappings":";;AAAA,2BAAyB;AACzB,mDAAkD;AAElD,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IAClC,IAAI,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QACxD,MAAM,IAAA,+BAAe,EAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;QAC9C,MAAM,IAAA,+BAAe,EAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;QAC9C,MAAM,CAAC,SAAS,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"processData.d.ts","sourceRoot":"","sources":["../../../src/utils/processData.ts"],"names":[],"mappings":"AAQA,OAAO,EAAY,UAAU,EAAiB,MAAM,UAAU,CAAC;AAG/D;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,GAAG,EAAE,eAAe,EAAE,MAAM,OAclE;AA0ED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC5B,IAAI,EAAE,UAAU,EAChB,CAAC,EAAE,GAAG,EACN,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,OAAO,GACrB,GAAG,CAeL"}
1
+ {"version":3,"file":"processData.d.ts","sourceRoot":"","sources":["../../../src/utils/processData.ts"],"names":[],"mappings":"AAQA,OAAO,EAAiC,UAAU,EAAE,MAAM,UAAU,CAAC;AAGrE;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,GAAG,EAAE,eAAe,EAAE,MAAM,OAYlE;AA0ED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC5B,IAAI,EAAE,UAAU,EAChB,CAAC,EAAE,GAAG,EACN,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,OAAO,GACrB,GAAG,CAeL"}
@@ -4,23 +4,19 @@ exports.processEventData = exports.processCustomAction = void 0;
4
4
  const base_1 = require("../embed/base");
5
5
  const auth_1 = require("../auth");
6
6
  const types_1 = require("../types");
7
- const answerService_1 = require("./answerService");
7
+ const answerService_1 = require("./graphql/answerService/answerService");
8
8
  /**
9
9
  *
10
10
  * @param e
11
11
  * @param thoughtSpotHost
12
12
  */
13
13
  function processCustomAction(e, thoughtSpotHost) {
14
- var _a;
15
- if ([types_1.OperationType.GetChartWithData, types_1.OperationType.GetTableWithHeadlineData].includes((_a = e.data) === null || _a === void 0 ? void 0 : _a.operation)) {
16
- const { session, query, operation } = e.data;
17
- const answerService = (0, answerService_1.getAnswerServiceInstance)(session, query, operation, thoughtSpotHost);
18
- return {
19
- ...e,
20
- answerService,
21
- };
22
- }
23
- return e;
14
+ const { session, embedAnswerData, contextMenuPoints } = e.data;
15
+ const answerService = new answerService_1.AnswerService(session, embedAnswerData, thoughtSpotHost, contextMenuPoints === null || contextMenuPoints === void 0 ? void 0 : contextMenuPoints.selectedPoints);
16
+ return {
17
+ ...e,
18
+ answerService,
19
+ };
24
20
  }
25
21
  exports.processCustomAction = processCustomAction;
26
22
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"processData.js","sourceRoot":"","sources":["../../../src/utils/processData.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"processData.js","sourceRoot":"","sources":["../../../src/utils/processData.ts"],"names":[],"mappings":";;;AAAA,wCAMuB;AACvB,kCAAuD;AACvD,oCAAqE;AACrE,yEAAsE;AAEtE;;;;GAIG;AACH,SAAgB,mBAAmB,CAAC,CAAM,EAAE,eAAuB;IAC/D,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,GAAG,CAAC,CAAC,IAA2B,CAAC;IACtF,MAAM,aAAa,GAAG,IAAI,6BAAa,CACnC,OAAO,EACP,eAAe,EACf,eAAe,EACf,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,cAAc,CACpC,CAAC;IACF,OAAO;QACH,GAAG,CAAC;QACJ,aAAa;KAChB,CAAC;AACN,CAAC;AAZD,kDAYC;AAED;;;GAGG;AACH,SAAS,eAAe,CAAC,CAAM;;IAC3B,0CAA0C;IAC1C,IAAA,kBAAW,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACpB,IAAA,wBAAiB,GAAE,CAAC;IAEpB,gEAAgE;IAChE,OAAO;QACH,GAAG,CAAC;QACJ,IAAI,EAAE;YACF,QAAQ,EAAE,CAAA,MAAA,CAAC,CAAC,IAAI,0CAAE,QAAQ,MAAI,MAAA,CAAC,CAAC,OAAO,0CAAE,QAAQ,CAAA;SACpD;KACJ,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,SAAS,qBAAqB,CAAC,CAAM,EAAE,WAAoB;IACvD,MAAM,EACF,kBAAkB,EAClB,2BAA2B,EAC3B,oBAAoB,GACvB,GAAG,IAAA,qBAAc,GAAE,CAAC;IACrB,IAAI,CAAC,oBAAoB,EAAE;QACvB,IAAI,CAAC,2BAA2B,EAAE;YAC9B,oCAAoC;YACpC,KAAK,CACD,yLAAyL,CAC5L,CAAC;SACL;QACD,6CAA6C;QAC7C,WAAW,CAAC,SAAS,GAAG,kBAAkB,CAAC;KAC9C;IACD,IAAA,wBAAiB,EAAC,sBAAe,CAAC,gBAAgB,CAAC,CAAC;IACpD,OAAO,CAAC,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,SAAS,kBAAkB,CAAC,CAAM,EAAE,WAAoB;IACpD,MAAM,EAAE,kBAAkB,EAAE,QAAQ,EAAE,GAAG,IAAA,qBAAc,GAAE,CAAC;IAC1D,IAAI,QAAQ,KAAK,gBAAQ,CAAC,IAAI,EAAE;QAC5B,6CAA6C;QAC7C,WAAW,CAAC,SAAS,GAAG,kBAAkB,CAAC;QAC3C,IAAA,wBAAiB,EAAC,sBAAe,CAAC,KAAK,CAAC,CAAC;KAC5C;IACD,OAAO,CAAC,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,SAAS,iBAAiB,CAAC,CAAM,EAAE,WAAoB;IACnD,MAAM,EAAE,kBAAkB,EAAE,GAAG,IAAA,qBAAc,GAAE,CAAC;IAChD,6CAA6C;IAC7C,WAAW,CAAC,SAAS,GAAG,kBAAkB,CAAC;IAC3C,IAAA,uBAAgB,GAAE,CAAC;IACnB,IAAA,mBAAY,GAAE,CAAC;IACf,OAAO,CAAC,CAAC;AACb,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,gBAAgB,CAC5B,IAAgB,EAChB,CAAM,EACN,eAAuB,EACvB,WAAoB;IAEpB,QAAQ,IAAI,EAAE;QACV,KAAK,kBAAU,CAAC,YAAY;YACxB,OAAO,mBAAmB,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;QACnD,KAAK,kBAAU,CAAC,QAAQ;YACpB,OAAO,eAAe,CAAC,CAAC,CAAC,CAAC;QAC9B,KAAK,kBAAU,CAAC,cAAc;YAC1B,OAAO,qBAAqB,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;QACjD,KAAK,kBAAU,CAAC,WAAW;YACvB,OAAO,kBAAkB,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;QAC9C,KAAK,kBAAU,CAAC,UAAU;YACtB,OAAO,iBAAiB,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;QAC7C,QAAQ;KACX;IACD,OAAO,CAAC,CAAC;AACb,CAAC;AApBD,4CAoBC"}