@thoughtspot/visual-embed-sdk 1.24.0-sage.3 → 1.24.1
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.
- package/README.md +1 -1
- package/cjs/package.json +10 -3
- package/cjs/src/auth.d.ts.map +1 -1
- package/cjs/src/auth.js +3 -0
- package/cjs/src/auth.js.map +1 -1
- package/cjs/src/css-variables.d.ts +38 -0
- package/cjs/src/css-variables.d.ts.map +1 -1
- package/cjs/src/embed/app.d.ts +33 -1
- package/cjs/src/embed/app.d.ts.map +1 -1
- package/cjs/src/embed/app.js +12 -8
- package/cjs/src/embed/app.js.map +1 -1
- package/cjs/src/embed/app.spec.js +46 -0
- package/cjs/src/embed/app.spec.js.map +1 -1
- package/cjs/src/embed/base.d.ts +6 -1
- package/cjs/src/embed/base.d.ts.map +1 -1
- package/cjs/src/embed/base.js +8 -3
- package/cjs/src/embed/base.js.map +1 -1
- package/cjs/src/embed/liveboard.d.ts +6 -1
- package/cjs/src/embed/liveboard.d.ts.map +1 -1
- package/cjs/src/embed/liveboard.js +6 -2
- package/cjs/src/embed/liveboard.js.map +1 -1
- package/cjs/src/embed/liveboard.spec.js +23 -7
- package/cjs/src/embed/liveboard.spec.js.map +1 -1
- package/cjs/src/embed/sage.d.ts +1 -0
- package/cjs/src/embed/sage.d.ts.map +1 -1
- package/cjs/src/embed/sage.js +1 -0
- package/cjs/src/embed/sage.js.map +1 -1
- package/cjs/src/embed/search-bar.d.ts +7 -0
- package/cjs/src/embed/search-bar.d.ts.map +1 -1
- package/cjs/src/embed/search-bar.js +6 -2
- package/cjs/src/embed/search-bar.js.map +1 -1
- package/cjs/src/embed/search.d.ts +16 -2
- package/cjs/src/embed/search.d.ts.map +1 -1
- package/cjs/src/embed/search.js +9 -2
- package/cjs/src/embed/search.js.map +1 -1
- package/cjs/src/embed/search.spec.js +49 -0
- package/cjs/src/embed/search.spec.js.map +1 -1
- package/cjs/src/embed/ts-embed.d.ts +4 -1
- package/cjs/src/embed/ts-embed.d.ts.map +1 -1
- package/cjs/src/embed/ts-embed.js +31 -8
- package/cjs/src/embed/ts-embed.js.map +1 -1
- package/cjs/src/embed/ts-embed.spec.js +186 -3
- package/cjs/src/embed/ts-embed.spec.js.map +1 -1
- package/cjs/src/index.d.ts +4 -3
- package/cjs/src/index.d.ts.map +1 -1
- package/cjs/src/index.js +5 -1
- package/cjs/src/index.js.map +1 -1
- package/cjs/src/mixpanel-service.d.ts +1 -0
- package/cjs/src/mixpanel-service.d.ts.map +1 -1
- package/cjs/src/mixpanel-service.js +12 -3
- package/cjs/src/mixpanel-service.js.map +1 -1
- package/cjs/src/mixpanel-service.spec.js +13 -3
- package/cjs/src/mixpanel-service.spec.js.map +1 -1
- package/cjs/src/react/index.d.ts +15 -15
- package/cjs/src/react/index.d.ts.map +1 -1
- package/cjs/src/react/index.js +7 -3
- package/cjs/src/react/index.js.map +1 -1
- package/cjs/src/react/index.spec.js +12 -0
- package/cjs/src/react/index.spec.js.map +1 -1
- package/cjs/src/types.d.ts +216 -21
- package/cjs/src/types.d.ts.map +1 -1
- package/cjs/src/types.js +133 -13
- package/cjs/src/types.js.map +1 -1
- package/cjs/src/utils/answerService/answerService.d.ts +34 -0
- package/cjs/src/utils/answerService/answerService.d.ts.map +1 -0
- package/cjs/src/utils/answerService/answerService.js +142 -0
- package/cjs/src/utils/answerService/answerService.js.map +1 -0
- package/cjs/src/utils/answerService/answerService.spec.d.ts +1 -0
- package/cjs/src/utils/answerService/answerService.spec.d.ts.map +1 -0
- package/cjs/src/utils/answerService/answerService.spec.js +1 -0
- package/cjs/src/utils/answerService/answerService.spec.js.map +1 -0
- package/cjs/src/utils/answerService/graphql-queries.d.ts +6 -0
- package/cjs/src/utils/answerService/graphql-queries.d.ts.map +1 -0
- package/cjs/src/utils/answerService/graphql-queries.js +123 -0
- package/cjs/src/utils/answerService/graphql-queries.js.map +1 -0
- package/cjs/src/utils/graphql/answerService/answer-queries.d.ts +5 -0
- package/cjs/src/utils/graphql/answerService/answer-queries.d.ts.map +1 -0
- package/cjs/src/utils/graphql/answerService/answer-queries.js +80 -0
- package/cjs/src/utils/graphql/answerService/answer-queries.js.map +1 -0
- package/cjs/src/utils/graphql/answerService/answerService.d.ts +61 -0
- package/cjs/src/utils/graphql/answerService/answerService.d.ts.map +1 -0
- package/cjs/src/utils/graphql/answerService/answerService.js +182 -0
- package/cjs/src/utils/graphql/answerService/answerService.js.map +1 -0
- package/cjs/src/utils/graphql/answerService/answerService.spec.d.ts +2 -0
- package/cjs/src/utils/graphql/answerService/answerService.spec.d.ts.map +1 -0
- package/cjs/src/utils/graphql/answerService/answerService.spec.js +201 -0
- package/cjs/src/utils/graphql/answerService/answerService.spec.js.map +1 -0
- package/cjs/src/utils/graphql/answerService/graphql-queries.d.ts +5 -0
- package/cjs/src/utils/graphql/answerService/graphql-queries.d.ts.map +1 -0
- package/cjs/src/utils/graphql/answerService/graphql-queries.js +80 -0
- package/cjs/src/utils/graphql/answerService/graphql-queries.js.map +1 -0
- package/cjs/src/utils/graphql/graphql-request.d.ts +15 -0
- package/cjs/src/utils/graphql/graphql-request.d.ts.map +1 -0
- package/cjs/src/utils/graphql/graphql-request.js +40 -0
- package/cjs/src/utils/graphql/graphql-request.js.map +1 -0
- package/cjs/src/utils/graphql/sourceService.d.ts +8 -0
- package/cjs/src/utils/graphql/sourceService.d.ts.map +1 -0
- package/cjs/src/utils/graphql/sourceService.js +69 -0
- package/cjs/src/utils/graphql/sourceService.js.map +1 -0
- package/cjs/src/utils/graphql/sourceService.spec.d.ts +2 -0
- package/cjs/src/utils/graphql/sourceService.spec.d.ts.map +1 -0
- package/cjs/src/utils/graphql/sourceService.spec.js +12 -0
- package/cjs/src/utils/graphql/sourceService.spec.js.map +1 -0
- package/cjs/src/utils/processData.d.ts.map +1 -1
- package/cjs/src/utils/processData.js +7 -11
- package/cjs/src/utils/processData.js.map +1 -1
- package/cjs/src/utils/processData.spec.js +13 -17
- package/cjs/src/utils/processData.spec.js.map +1 -1
- package/cjs/src/utils.d.ts +13 -1
- package/cjs/src/utils.d.ts.map +1 -1
- package/cjs/src/utils.js +45 -1
- package/cjs/src/utils.js.map +1 -1
- package/cjs/src/utils.spec.js +24 -0
- package/cjs/src/utils.spec.js.map +1 -1
- package/dist/src/auth.d.ts.map +1 -1
- package/dist/src/css-variables.d.ts +38 -0
- package/dist/src/css-variables.d.ts.map +1 -1
- package/dist/src/embed/app.d.ts +33 -1
- package/dist/src/embed/app.d.ts.map +1 -1
- package/dist/src/embed/base.d.ts +6 -1
- package/dist/src/embed/base.d.ts.map +1 -1
- package/dist/src/embed/liveboard.d.ts +6 -1
- package/dist/src/embed/liveboard.d.ts.map +1 -1
- package/dist/src/embed/sage.d.ts +1 -0
- package/dist/src/embed/sage.d.ts.map +1 -1
- package/dist/src/embed/search-bar.d.ts +7 -0
- package/dist/src/embed/search-bar.d.ts.map +1 -1
- package/dist/src/embed/search.d.ts +16 -2
- package/dist/src/embed/search.d.ts.map +1 -1
- package/dist/src/embed/ts-embed.d.ts +4 -1
- package/dist/src/embed/ts-embed.d.ts.map +1 -1
- package/dist/src/index.d.ts +4 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/mixpanel-service.d.ts +1 -0
- package/dist/src/mixpanel-service.d.ts.map +1 -1
- package/dist/src/react/index.d.ts +15 -15
- package/dist/src/react/index.d.ts.map +1 -1
- package/dist/src/types.d.ts +216 -21
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/utils/graphql/answerService/answer-queries.d.ts +5 -0
- package/dist/src/utils/graphql/answerService/answer-queries.d.ts.map +1 -0
- package/dist/src/utils/graphql/answerService/answerService.d.ts +61 -0
- package/dist/src/utils/graphql/answerService/answerService.d.ts.map +1 -0
- package/dist/src/utils/graphql/answerService/answerService.spec.d.ts +2 -0
- package/dist/src/utils/graphql/answerService/answerService.spec.d.ts.map +1 -0
- package/dist/src/utils/graphql/graphql-request.d.ts +15 -0
- package/dist/src/utils/graphql/graphql-request.d.ts.map +1 -0
- package/dist/src/utils/graphql/sourceService.d.ts +8 -0
- package/dist/src/utils/graphql/sourceService.d.ts.map +1 -0
- package/dist/src/utils/graphql/sourceService.spec.d.ts +2 -0
- package/dist/src/utils/graphql/sourceService.spec.d.ts.map +1 -0
- package/dist/src/utils/processData.d.ts.map +1 -1
- package/dist/src/utils.d.ts +13 -1
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/tsembed-react.es.js +603 -96
- package/dist/tsembed-react.js +596 -95
- package/dist/tsembed.es.js +655 -100
- package/dist/tsembed.js +649 -99
- package/dist/visual-embed-sdk-react-full.d.ts +615 -260
- package/dist/visual-embed-sdk-react.d.ts +617 -262
- package/dist/visual-embed-sdk.d.ts +380 -26
- package/lib/package.json +10 -3
- package/lib/src/.index.d.ts.swp +0 -0
- package/lib/src/auth.d.ts.map +1 -1
- package/lib/src/auth.js +3 -0
- package/lib/src/auth.js.map +1 -1
- package/lib/src/css-variables.d.ts +38 -0
- package/lib/src/css-variables.d.ts.map +1 -1
- package/lib/src/embed/app.d.ts +33 -1
- package/lib/src/embed/app.d.ts.map +1 -1
- package/lib/src/embed/app.js +12 -8
- package/lib/src/embed/app.js.map +1 -1
- package/lib/src/embed/app.spec.js +46 -0
- package/lib/src/embed/app.spec.js.map +1 -1
- package/lib/src/embed/base.d.ts +6 -1
- package/lib/src/embed/base.d.ts.map +1 -1
- package/lib/src/embed/base.js +8 -3
- package/lib/src/embed/base.js.map +1 -1
- package/lib/src/embed/liveboard.d.ts +6 -1
- package/lib/src/embed/liveboard.d.ts.map +1 -1
- package/lib/src/embed/liveboard.js +7 -3
- package/lib/src/embed/liveboard.js.map +1 -1
- package/lib/src/embed/liveboard.spec.js +23 -7
- package/lib/src/embed/liveboard.spec.js.map +1 -1
- package/lib/src/embed/sage.d.ts +1 -0
- package/lib/src/embed/sage.d.ts.map +1 -1
- package/lib/src/embed/sage.js +1 -0
- package/lib/src/embed/sage.js.map +1 -1
- package/lib/src/embed/search-bar.d.ts +7 -0
- package/lib/src/embed/search-bar.d.ts.map +1 -1
- package/lib/src/embed/search-bar.js +7 -3
- package/lib/src/embed/search-bar.js.map +1 -1
- package/lib/src/embed/search.d.ts +16 -2
- package/lib/src/embed/search.d.ts.map +1 -1
- package/lib/src/embed/search.js +10 -3
- package/lib/src/embed/search.js.map +1 -1
- package/lib/src/embed/search.spec.js +49 -0
- package/lib/src/embed/search.spec.js.map +1 -1
- package/lib/src/embed/ts-embed.d.ts +4 -1
- package/lib/src/embed/ts-embed.d.ts.map +1 -1
- package/lib/src/embed/ts-embed.js +32 -9
- package/lib/src/embed/ts-embed.js.map +1 -1
- package/lib/src/embed/ts-embed.spec.js +187 -4
- package/lib/src/embed/ts-embed.spec.js.map +1 -1
- package/lib/src/index.d.ts +4 -3
- package/lib/src/index.d.ts.map +1 -1
- package/lib/src/index.js +4 -3
- package/lib/src/index.js.map +1 -1
- package/lib/src/mixpanel-service.d.ts +1 -0
- package/lib/src/mixpanel-service.d.ts.map +1 -1
- package/lib/src/mixpanel-service.js +12 -3
- package/lib/src/mixpanel-service.js.map +1 -1
- package/lib/src/mixpanel-service.spec.js +13 -3
- package/lib/src/mixpanel-service.spec.js.map +1 -1
- package/lib/src/react/index.d.ts +15 -15
- package/lib/src/react/index.d.ts.map +1 -1
- package/lib/src/react/index.js +5 -3
- package/lib/src/react/index.js.map +1 -1
- package/lib/src/react/index.spec.js +13 -1
- package/lib/src/react/index.spec.js.map +1 -1
- package/lib/src/types.d.ts +216 -21
- package/lib/src/types.d.ts.map +1 -1
- package/lib/src/types.js +132 -12
- package/lib/src/types.js.map +1 -1
- package/lib/src/utils/answerService/answerService.d.ts +34 -0
- package/lib/src/utils/answerService/answerService.d.ts.map +1 -0
- package/lib/src/utils/answerService/answerService.js +137 -0
- package/lib/src/utils/answerService/answerService.js.map +1 -0
- package/lib/src/utils/answerService/answerService.spec.d.ts +1 -0
- package/lib/src/utils/answerService/answerService.spec.d.ts.map +1 -0
- package/lib/src/utils/answerService/answerService.spec.js +1 -0
- package/lib/src/utils/answerService/answerService.spec.js.map +1 -0
- package/lib/src/utils/answerService/graphql-queries.d.ts +6 -0
- package/lib/src/utils/answerService/graphql-queries.d.ts.map +1 -0
- package/lib/src/utils/answerService/graphql-queries.js +120 -0
- package/lib/src/utils/answerService/graphql-queries.js.map +1 -0
- package/lib/src/utils/graphql/answerService/answer-queries.d.ts +5 -0
- package/lib/src/utils/graphql/answerService/answer-queries.d.ts.map +1 -0
- package/lib/src/utils/graphql/answerService/answer-queries.js +77 -0
- package/lib/src/utils/graphql/answerService/answer-queries.js.map +1 -0
- package/lib/src/utils/graphql/answerService/answerService.d.ts +61 -0
- package/lib/src/utils/graphql/answerService/answerService.d.ts.map +1 -0
- package/lib/src/utils/graphql/answerService/answerService.js +177 -0
- package/lib/src/utils/graphql/answerService/answerService.js.map +1 -0
- package/lib/src/utils/graphql/answerService/answerService.spec.d.ts +2 -0
- package/lib/src/utils/graphql/answerService/answerService.spec.d.ts.map +1 -0
- package/lib/src/utils/graphql/answerService/answerService.spec.js +199 -0
- package/lib/src/utils/graphql/answerService/answerService.spec.js.map +1 -0
- package/lib/src/utils/graphql/answerService/graphql-queries.d.ts +5 -0
- package/lib/src/utils/graphql/answerService/graphql-queries.d.ts.map +1 -0
- package/lib/src/utils/graphql/answerService/graphql-queries.js +77 -0
- package/lib/src/utils/graphql/answerService/graphql-queries.js.map +1 -0
- package/lib/src/utils/graphql/graphql-request.d.ts +15 -0
- package/lib/src/utils/graphql/graphql-request.d.ts.map +1 -0
- package/lib/src/utils/graphql/graphql-request.js +36 -0
- package/lib/src/utils/graphql/graphql-request.js.map +1 -0
- package/lib/src/utils/graphql/sourceService.d.ts +8 -0
- package/lib/src/utils/graphql/sourceService.d.ts.map +1 -0
- package/lib/src/utils/graphql/sourceService.js +65 -0
- package/lib/src/utils/graphql/sourceService.js.map +1 -0
- package/lib/src/utils/graphql/sourceService.spec.d.ts +2 -0
- package/lib/src/utils/graphql/sourceService.spec.d.ts.map +1 -0
- package/lib/src/utils/graphql/sourceService.spec.js +10 -0
- package/lib/src/utils/graphql/sourceService.spec.js.map +1 -0
- package/lib/src/utils/processData.d.ts.map +1 -1
- package/lib/src/utils/processData.js +8 -12
- package/lib/src/utils/processData.js.map +1 -1
- package/lib/src/utils/processData.spec.js +14 -18
- package/lib/src/utils/processData.spec.js.map +1 -1
- package/lib/src/utils.d.ts +13 -1
- package/lib/src/utils.d.ts.map +1 -1
- package/lib/src/utils.js +41 -0
- package/lib/src/utils.js.map +1 -1
- package/lib/src/utils.spec.js +25 -1
- package/lib/src/utils.spec.js.map +1 -1
- package/lib/src/visual-embed-sdk.d.ts +389 -30
- package/package.json +10 -3
- package/src/auth.ts +6 -3
- package/src/css-variables.ts +47 -0
- package/src/embed/app.spec.ts +63 -0
- package/src/embed/app.ts +52 -15
- package/src/embed/base.ts +11 -6
- package/src/embed/liveboard.spec.ts +29 -10
- package/src/embed/liveboard.ts +13 -2
- package/src/embed/sage.ts +2 -0
- package/src/embed/search-bar.tsx +21 -6
- package/src/embed/search.spec.ts +61 -0
- package/src/embed/search.ts +36 -3
- package/src/embed/ts-embed.spec.ts +211 -8
- package/src/embed/ts-embed.ts +34 -9
- package/src/index.ts +9 -0
- package/src/mixpanel-service.spec.ts +13 -3
- package/src/mixpanel-service.ts +11 -3
- package/src/react/index.spec.tsx +33 -2
- package/src/react/index.tsx +37 -26
- package/src/types.ts +305 -103
- package/src/utils/graphql/answerService/answer-queries.ts +80 -0
- package/src/utils/graphql/answerService/answerService.spec.ts +231 -0
- package/src/utils/graphql/answerService/answerService.ts +234 -0
- package/src/utils/graphql/graphql-request.ts +45 -0
- package/src/utils/graphql/sourceService.spec.ts +10 -0
- package/src/utils/graphql/sourceService.ts +71 -0
- package/src/utils/processData.spec.ts +15 -25
- package/src/utils/processData.ts +13 -15
- package/src/utils.spec.ts +31 -0
- package/src/utils.ts +47 -0
- package/src/utils/answerService.spec.ts +0 -41
- package/src/utils/answerService.ts +0 -63
package/dist/tsembed.js
CHANGED
|
@@ -4,6 +4,50 @@
|
|
|
4
4
|
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.tsembed = {}));
|
|
5
5
|
}(this, (function (exports) { 'use strict';
|
|
6
6
|
|
|
7
|
+
// istanbul ignore next
|
|
8
|
+
const isObject = (obj) => {
|
|
9
|
+
if (typeof obj === "object" && obj !== null) {
|
|
10
|
+
if (typeof Object.getPrototypeOf === "function") {
|
|
11
|
+
const prototype = Object.getPrototypeOf(obj);
|
|
12
|
+
return prototype === Object.prototype || prototype === null;
|
|
13
|
+
}
|
|
14
|
+
return Object.prototype.toString.call(obj) === "[object Object]";
|
|
15
|
+
}
|
|
16
|
+
return false;
|
|
17
|
+
};
|
|
18
|
+
const merge = (...objects) => objects.reduce((result, current) => {
|
|
19
|
+
if (Array.isArray(current)) {
|
|
20
|
+
throw new TypeError("Arguments provided to ts-deepmerge must be objects, not arrays.");
|
|
21
|
+
}
|
|
22
|
+
Object.keys(current).forEach((key) => {
|
|
23
|
+
if (["__proto__", "constructor", "prototype"].includes(key)) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
if (Array.isArray(result[key]) && Array.isArray(current[key])) {
|
|
27
|
+
result[key] = merge.options.mergeArrays
|
|
28
|
+
? Array.from(new Set(result[key].concat(current[key])))
|
|
29
|
+
: current[key];
|
|
30
|
+
}
|
|
31
|
+
else if (isObject(result[key]) && isObject(current[key])) {
|
|
32
|
+
result[key] = merge(result[key], current[key]);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
result[key] = current[key];
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
return result;
|
|
39
|
+
}, {});
|
|
40
|
+
const defaultOptions = {
|
|
41
|
+
mergeArrays: true,
|
|
42
|
+
};
|
|
43
|
+
merge.options = defaultOptions;
|
|
44
|
+
merge.withOptions = (options, ...objects) => {
|
|
45
|
+
merge.options = Object.assign({ mergeArrays: true }, options);
|
|
46
|
+
const result = merge(...objects);
|
|
47
|
+
merge.options = defaultOptions;
|
|
48
|
+
return result;
|
|
49
|
+
};
|
|
50
|
+
|
|
7
51
|
/**
|
|
8
52
|
* Copyright (c) 2023
|
|
9
53
|
*
|
|
@@ -34,6 +78,24 @@
|
|
|
34
78
|
}
|
|
35
79
|
return null;
|
|
36
80
|
};
|
|
81
|
+
/**
|
|
82
|
+
* Construct a runtime parameter override query string from the given option.
|
|
83
|
+
*
|
|
84
|
+
* @param runtimeParameters
|
|
85
|
+
*/
|
|
86
|
+
const getRuntimeParameters = (runtimeParameters) => {
|
|
87
|
+
if (runtimeParameters && runtimeParameters.length) {
|
|
88
|
+
const params = runtimeParameters.map((param, valueIndex) => {
|
|
89
|
+
const index = valueIndex + 1;
|
|
90
|
+
const filterExpr = [];
|
|
91
|
+
filterExpr.push(`param${index}=${encodeURIComponent(param.name)}`);
|
|
92
|
+
filterExpr.push(`paramVal${index}=${encodeURIComponent(param.value)}`);
|
|
93
|
+
return filterExpr.join('&');
|
|
94
|
+
});
|
|
95
|
+
return `${params.join('&')}`;
|
|
96
|
+
}
|
|
97
|
+
return null;
|
|
98
|
+
};
|
|
37
99
|
/**
|
|
38
100
|
* Convert a value to a string representation to be sent as a query
|
|
39
101
|
* parameter to the ThoughtSpot app.
|
|
@@ -181,6 +243,30 @@
|
|
|
181
243
|
*/
|
|
182
244
|
function getDOMNode(domSelector) {
|
|
183
245
|
return typeof domSelector === 'string' ? document.querySelector(domSelector) : domSelector;
|
|
246
|
+
}
|
|
247
|
+
const deepMerge = (target, source) => merge(target, source);
|
|
248
|
+
const getOperationNameFromQuery = (query) => {
|
|
249
|
+
const regex = /(?:query|mutation)\s+(\w+)/;
|
|
250
|
+
const matches = query.match(regex);
|
|
251
|
+
return matches === null || matches === void 0 ? void 0 : matches[1];
|
|
252
|
+
};
|
|
253
|
+
/**
|
|
254
|
+
*
|
|
255
|
+
* @param obj
|
|
256
|
+
*/
|
|
257
|
+
function removeTypename(obj) {
|
|
258
|
+
if (!obj || typeof obj !== 'object')
|
|
259
|
+
return obj;
|
|
260
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
261
|
+
for (const key in obj) {
|
|
262
|
+
if (key === '__typename') {
|
|
263
|
+
delete obj[key];
|
|
264
|
+
}
|
|
265
|
+
else if (typeof obj[key] === 'object') {
|
|
266
|
+
removeTypename(obj[key]);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
return obj;
|
|
184
270
|
}
|
|
185
271
|
|
|
186
272
|
/**
|
|
@@ -352,6 +438,17 @@
|
|
|
352
438
|
*/
|
|
353
439
|
AuthType["Basic"] = "Basic";
|
|
354
440
|
})(exports.AuthType || (exports.AuthType = {}));
|
|
441
|
+
(function (HomeLeftNavItem) {
|
|
442
|
+
HomeLeftNavItem["QueryBuilder"] = "query-builder";
|
|
443
|
+
HomeLeftNavItem["Home"] = "insights-home";
|
|
444
|
+
HomeLeftNavItem["Liveboards"] = "liveboards";
|
|
445
|
+
HomeLeftNavItem["Answers"] = "answers";
|
|
446
|
+
HomeLeftNavItem["MonitorSubscription"] = "monitor-alerts";
|
|
447
|
+
HomeLeftNavItem["SpotIQAnalysis"] = "spotiq-analysis";
|
|
448
|
+
HomeLeftNavItem["Tutorials"] = "tutorials";
|
|
449
|
+
HomeLeftNavItem["Documentation"] = "documentation";
|
|
450
|
+
HomeLeftNavItem["Community"] = "community";
|
|
451
|
+
})(exports.HomeLeftNavItem || (exports.HomeLeftNavItem = {}));
|
|
355
452
|
(function (RuntimeFilterOp) {
|
|
356
453
|
/**
|
|
357
454
|
* Equals
|
|
@@ -410,6 +507,32 @@
|
|
|
410
507
|
*/
|
|
411
508
|
RuntimeFilterOp["IN"] = "IN";
|
|
412
509
|
})(exports.RuntimeFilterOp || (exports.RuntimeFilterOp = {}));
|
|
510
|
+
(function (HomepageModule) {
|
|
511
|
+
/**
|
|
512
|
+
* Search bar
|
|
513
|
+
*/
|
|
514
|
+
HomepageModule["Search"] = "SEARCH";
|
|
515
|
+
/**
|
|
516
|
+
* kPI watchlist module
|
|
517
|
+
*/
|
|
518
|
+
HomepageModule["Watchlist"] = "WATCHLIST";
|
|
519
|
+
/**
|
|
520
|
+
* favorite objects
|
|
521
|
+
*/
|
|
522
|
+
HomepageModule["Favorite"] = "FAVORITE";
|
|
523
|
+
/**
|
|
524
|
+
* List of answers and liveboards
|
|
525
|
+
*/
|
|
526
|
+
HomepageModule["MyLibrary"] = "MY_LIBRARY";
|
|
527
|
+
/**
|
|
528
|
+
* Trending list
|
|
529
|
+
*/
|
|
530
|
+
HomepageModule["Trending"] = "TRENDING";
|
|
531
|
+
/**
|
|
532
|
+
* Learning videos
|
|
533
|
+
*/
|
|
534
|
+
HomepageModule["Learning"] = "LEARNING";
|
|
535
|
+
})(exports.HomepageModule || (exports.HomepageModule = {}));
|
|
413
536
|
(function (EmbedEvent) {
|
|
414
537
|
/**
|
|
415
538
|
* Rendering has initialized.
|
|
@@ -814,23 +937,74 @@
|
|
|
814
937
|
*/
|
|
815
938
|
EmbedEvent["InsertIntoSlide"] = "insertInToSlide";
|
|
816
939
|
/**
|
|
940
|
+
* @hidden
|
|
817
941
|
* Emitted when a user changes any filter on a Liveboard.
|
|
818
|
-
*
|
|
819
942
|
* @version SDK: 1.23.0 | ThoughtSpot: 9.4.0.cl
|
|
820
943
|
*/
|
|
821
944
|
EmbedEvent["FilterChanged"] = "filterChanged";
|
|
822
945
|
/**
|
|
823
946
|
* Emitted when a user click on Go button in Sage Embed
|
|
824
947
|
*
|
|
825
|
-
* @version SDK : 1.
|
|
948
|
+
* @version SDK : 1.26.0 | Thoughtspot: 9.7.0.cl
|
|
826
949
|
*/
|
|
827
950
|
EmbedEvent["SageEmbedQuery"] = "sageEmbedQuery";
|
|
828
951
|
/**
|
|
829
952
|
* Emitten when a user select data source in Sage Embed
|
|
830
953
|
*
|
|
831
|
-
* @version SDK : 1.
|
|
954
|
+
* @version SDK : 1.26.0 | Thoughtspot: 9.7.0.cl
|
|
832
955
|
*/
|
|
833
956
|
EmbedEvent["SageWorksheetUpdated"] = "sageWorksheetUpdated";
|
|
957
|
+
/**
|
|
958
|
+
* Emitten when a user updates a connection in Data tab
|
|
959
|
+
*
|
|
960
|
+
* @version SDK : 1.27.0 | Thoughtspot: 9.8.0.cl
|
|
961
|
+
*/
|
|
962
|
+
EmbedEvent["UpdateConnection"] = "updateConnection";
|
|
963
|
+
/**
|
|
964
|
+
* Emitted when name, status (private or public) or filter values of a
|
|
965
|
+
* PersonalisedView is updated.
|
|
966
|
+
*
|
|
967
|
+
* @returns viewName: string
|
|
968
|
+
* @returns viewId: string
|
|
969
|
+
* @returns liveboardId: string
|
|
970
|
+
* @returns isPublic: boolean
|
|
971
|
+
* @version SDK : 1.26.0 | Thoughtspot: 9.7.0.cl
|
|
972
|
+
*/
|
|
973
|
+
EmbedEvent["UpdatePersonalisedView"] = "updatePersonalisedView";
|
|
974
|
+
/**
|
|
975
|
+
* Emitted when a PersonalisedView is saved.
|
|
976
|
+
*
|
|
977
|
+
* @returns viewName: string
|
|
978
|
+
* @returns viewId: string
|
|
979
|
+
* @returns liveboardId: string
|
|
980
|
+
* @returns isPublic: boolean
|
|
981
|
+
* @version SDK : 1.26.0 | Thoughtspot: 9.7.0.cl
|
|
982
|
+
*/
|
|
983
|
+
EmbedEvent["SavePersonalisedView"] = "savePersonalisedView";
|
|
984
|
+
/**
|
|
985
|
+
* Emitted when a Liveboard is reset.
|
|
986
|
+
*
|
|
987
|
+
* @returns viewName: string
|
|
988
|
+
* @returns viewId: string
|
|
989
|
+
* @returns liveboardId: string
|
|
990
|
+
* @returns isPublic: boolean
|
|
991
|
+
* @version SDK : 1.26.0 | Thoughtspot: 9.7.0.cl
|
|
992
|
+
*/
|
|
993
|
+
EmbedEvent["ResetLiveboard"] = "resetLiveboard";
|
|
994
|
+
/**
|
|
995
|
+
* Emitted when a PersonalisedView is deleted.
|
|
996
|
+
*
|
|
997
|
+
* @returns views: string[]
|
|
998
|
+
* @returns liveboardId: string
|
|
999
|
+
* @version SDK : 1.26.0 | Thoughtspot: 9.7.0.cl
|
|
1000
|
+
*/
|
|
1001
|
+
EmbedEvent["DeletePersonalisedView"] = "deletePersonalisedView";
|
|
1002
|
+
/**
|
|
1003
|
+
* Emitten when a user creates a new worksheet
|
|
1004
|
+
*
|
|
1005
|
+
* @version SDK : 1.27.0 | Thoughtspot: 9.8.0.cl
|
|
1006
|
+
*/
|
|
1007
|
+
EmbedEvent["CreateWorksheet"] = "createWorksheet";
|
|
834
1008
|
})(exports.EmbedEvent || (exports.EmbedEvent = {}));
|
|
835
1009
|
(function (HostEvent) {
|
|
836
1010
|
/**
|
|
@@ -1451,16 +1625,16 @@
|
|
|
1451
1625
|
*/
|
|
1452
1626
|
HostEvent["ResetSearch"] = "resetSearch";
|
|
1453
1627
|
/**
|
|
1628
|
+
* @hidden
|
|
1454
1629
|
* Gets the currents visible and runtime filters applied on a Liveboard
|
|
1455
|
-
*
|
|
1456
1630
|
* @example
|
|
1457
1631
|
* liveboardEmbed.trigger(HostEvent.GetFilters)
|
|
1458
1632
|
* @version SDK: 1.23.0 | ThoughtSpot: 9.4.0.cl
|
|
1459
1633
|
*/
|
|
1460
1634
|
HostEvent["GetFilters"] = "getFilters";
|
|
1461
1635
|
/**
|
|
1636
|
+
* @hidden
|
|
1462
1637
|
* Updates the visible filters on the Liveboard.
|
|
1463
|
-
*
|
|
1464
1638
|
* @param - filter: filter object containing column name and filter operation and values
|
|
1465
1639
|
* @example
|
|
1466
1640
|
*
|
|
@@ -1611,6 +1785,9 @@
|
|
|
1611
1785
|
Param["HideSampleQuestions"] = "hideSampleQuestions";
|
|
1612
1786
|
Param["WorksheetId"] = "worksheet";
|
|
1613
1787
|
Param["Query"] = "query";
|
|
1788
|
+
Param["HideHomepageLeftNav"] = "hideHomepageLeftNav";
|
|
1789
|
+
Param["ModularHomeExperienceEnabled"] = "modularHomeExperience";
|
|
1790
|
+
Param["PendoTrackingKey"] = "additionalPendoKey";
|
|
1614
1791
|
})(Param || (Param = {}));
|
|
1615
1792
|
(function (Action) {
|
|
1616
1793
|
/**
|
|
@@ -2086,7 +2263,7 @@
|
|
|
2086
2263
|
* disabledActions: [Action.QueryDetailsButtons]
|
|
2087
2264
|
* ```
|
|
2088
2265
|
*/
|
|
2089
|
-
Action["QueryDetailsButtons"] = "
|
|
2266
|
+
Action["QueryDetailsButtons"] = "queryDetailsButtons";
|
|
2090
2267
|
/**
|
|
2091
2268
|
* The **Delete** action for Answers.
|
|
2092
2269
|
*
|
|
@@ -2391,13 +2568,36 @@
|
|
|
2391
2568
|
* @version SDK: 1.26.0 | Thoughtspot: 9.7.0.cl
|
|
2392
2569
|
*/
|
|
2393
2570
|
Action["ModifySageAnswer"] = "modifySageAnswer";
|
|
2571
|
+
/**
|
|
2572
|
+
* The **Move to Tab** menu action on visualizations in liveboard edit mode.
|
|
2573
|
+
* Allows moving a visualization to a different tab.
|
|
2574
|
+
*
|
|
2575
|
+
* @example
|
|
2576
|
+
* ```js
|
|
2577
|
+
* disabledActions: [Action.MoveToTab]
|
|
2578
|
+
* ```
|
|
2579
|
+
*/
|
|
2580
|
+
Action["MoveToTab"] = "onContainerMove";
|
|
2581
|
+
/**
|
|
2582
|
+
* The **Manage Alertsb** menu action on KPI visualizations.
|
|
2583
|
+
*
|
|
2584
|
+
* @example
|
|
2585
|
+
* ```js
|
|
2586
|
+
* disabledActions: [Action.ManageMonitor]
|
|
2587
|
+
* ```
|
|
2588
|
+
*/
|
|
2589
|
+
Action["ManageMonitor"] = "ManageMonitor";
|
|
2590
|
+
/**
|
|
2591
|
+
* Action ID for Liveboard Personalised Views dropdown
|
|
2592
|
+
*
|
|
2593
|
+
* @example
|
|
2594
|
+
* ```js
|
|
2595
|
+
* disabledActions: [Action.PersonalisedViewsDropdown]
|
|
2596
|
+
* ```
|
|
2597
|
+
* @version SDK : 1.26.0 | Thoughtspot: 9.7.0.cl
|
|
2598
|
+
*/
|
|
2599
|
+
Action["PersonalisedViewsDropdown"] = "personalisedViewsDropdown";
|
|
2394
2600
|
})(exports.Action || (exports.Action = {}));
|
|
2395
|
-
// eslint-disable-next-line no-shadow
|
|
2396
|
-
var OperationType;
|
|
2397
|
-
(function (OperationType) {
|
|
2398
|
-
OperationType["GetChartWithData"] = "GetChartWithData";
|
|
2399
|
-
OperationType["GetTableWithHeadlineData"] = "GetTableWithHeadlineData";
|
|
2400
|
-
})(OperationType || (OperationType = {}));
|
|
2401
2601
|
(function (PrefetchFeatures) {
|
|
2402
2602
|
PrefetchFeatures["FullApp"] = "FullApp";
|
|
2403
2603
|
PrefetchFeatures["SearchEmbed"] = "SearchEmbed";
|
|
@@ -8465,6 +8665,7 @@
|
|
|
8465
8665
|
|
|
8466
8666
|
// Needed to avoid error in CJS builds on some bundlers.
|
|
8467
8667
|
const mixpanelLib = mixpanel_cjs || mixpanel$1;
|
|
8668
|
+
let mixpanelInstance;
|
|
8468
8669
|
const MIXPANEL_EVENT = {
|
|
8469
8670
|
VISUAL_SDK_RENDER_START: 'visual-sdk-render-start',
|
|
8470
8671
|
VISUAL_SDK_CALLED_INIT: 'visual-sdk-called-init',
|
|
@@ -8473,6 +8674,7 @@
|
|
|
8473
8674
|
VISUAL_SDK_TRIGGER: 'visual-sdk-trigger',
|
|
8474
8675
|
VISUAL_SDK_ON: 'visual-sdk-on',
|
|
8475
8676
|
VISUAL_SDK_IFRAME_LOAD_PERFORMANCE: 'visual-sdk-iframe-load-performance',
|
|
8677
|
+
VISUAL_SDK_EMBED_CREATE: 'visual-sdk-embed-create',
|
|
8476
8678
|
};
|
|
8477
8679
|
let isMixpanelInitialized = false;
|
|
8478
8680
|
let eventQueue = [];
|
|
@@ -8487,7 +8689,7 @@
|
|
|
8487
8689
|
eventQueue.push({ eventId, eventProps });
|
|
8488
8690
|
return;
|
|
8489
8691
|
}
|
|
8490
|
-
|
|
8692
|
+
mixpanelInstance.track(eventId, eventProps);
|
|
8491
8693
|
}
|
|
8492
8694
|
/**
|
|
8493
8695
|
*
|
|
@@ -8506,6 +8708,7 @@
|
|
|
8506
8708
|
* @param sessionInfo
|
|
8507
8709
|
*/
|
|
8508
8710
|
function initMixpanel(sessionInfo) {
|
|
8711
|
+
var _a;
|
|
8509
8712
|
if (!sessionInfo || !sessionInfo.mixpanelToken) {
|
|
8510
8713
|
return;
|
|
8511
8714
|
}
|
|
@@ -8515,10 +8718,16 @@
|
|
|
8515
8718
|
const token = sessionInfo.mixpanelToken;
|
|
8516
8719
|
try {
|
|
8517
8720
|
if (token) {
|
|
8518
|
-
mixpanelLib.init(token);
|
|
8721
|
+
mixpanelInstance = mixpanelLib.init(token, undefined, 'tsEmbed');
|
|
8519
8722
|
if (!isPublicCluster) {
|
|
8520
|
-
|
|
8723
|
+
mixpanelInstance.identify(sessionInfo.userGUID);
|
|
8521
8724
|
}
|
|
8725
|
+
mixpanelInstance.register_once({
|
|
8726
|
+
clusterId: sessionInfo.clusterId,
|
|
8727
|
+
clusterName: sessionInfo.clusterName,
|
|
8728
|
+
releaseVersion: sessionInfo.releaseVersion,
|
|
8729
|
+
hostAppUrl: ((_a = window === null || window === void 0 ? void 0 : window.location) === null || _a === void 0 ? void 0 : _a.host) || '',
|
|
8730
|
+
});
|
|
8522
8731
|
isMixpanelInitialized = true;
|
|
8523
8732
|
emptyQueue();
|
|
8524
8733
|
}
|
|
@@ -9010,12 +9219,12 @@
|
|
|
9010
9219
|
* _.isObject(null);
|
|
9011
9220
|
* // => false
|
|
9012
9221
|
*/
|
|
9013
|
-
function isObject(value) {
|
|
9222
|
+
function isObject$1(value) {
|
|
9014
9223
|
var type = typeof value;
|
|
9015
9224
|
return value != null && (type == 'object' || type == 'function');
|
|
9016
9225
|
}
|
|
9017
9226
|
|
|
9018
|
-
var isObject_1 = isObject;
|
|
9227
|
+
var isObject_1 = isObject$1;
|
|
9019
9228
|
|
|
9020
9229
|
/** `Object#toString` result references. */
|
|
9021
9230
|
var asyncTag = '[object AsyncFunction]',
|
|
@@ -9846,9 +10055,9 @@
|
|
|
9846
10055
|
var _cacheHas = cacheHas;
|
|
9847
10056
|
|
|
9848
10057
|
/* Built-in method references that are verified to be native. */
|
|
9849
|
-
var Set = _getNative(_root, 'Set');
|
|
10058
|
+
var Set$1 = _getNative(_root, 'Set');
|
|
9850
10059
|
|
|
9851
|
-
var _Set = Set;
|
|
10060
|
+
var _Set = Set$1;
|
|
9852
10061
|
|
|
9853
10062
|
/**
|
|
9854
10063
|
* This method returns `undefined`.
|
|
@@ -10217,6 +10426,9 @@
|
|
|
10217
10426
|
userGUID: sessionInfoResp.userGUID,
|
|
10218
10427
|
mixpanelToken,
|
|
10219
10428
|
isPublicUser: sessionInfoResp.configInfo.isPublicUser,
|
|
10429
|
+
releaseVersion: sessionInfoResp.releaseVersion,
|
|
10430
|
+
clusterId: sessionInfoResp.configInfo.selfClusterId,
|
|
10431
|
+
clusterName: sessionInfoResp.configInfo.selfClusterName,
|
|
10220
10432
|
...sessionInfoResp,
|
|
10221
10433
|
};
|
|
10222
10434
|
};
|
|
@@ -10622,9 +10834,9 @@
|
|
|
10622
10834
|
const authEE = new eventemitter3();
|
|
10623
10835
|
setAuthEE(authEE);
|
|
10624
10836
|
handleAuth();
|
|
10837
|
+
const { password, ...configToTrack } = config;
|
|
10625
10838
|
uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_CALLED_INIT, {
|
|
10626
|
-
|
|
10627
|
-
host: config.thoughtSpotHost,
|
|
10839
|
+
...configToTrack,
|
|
10628
10840
|
usedCustomizationSheet: ((_b = (_a = embedConfig.customizations) === null || _a === void 0 ? void 0 : _a.style) === null || _b === void 0 ? void 0 : _b.customCSSUrl) != null,
|
|
10629
10841
|
usedCustomizationVariables: ((_e = (_d = (_c = embedConfig.customizations) === null || _c === void 0 ? void 0 : _c.style) === null || _d === void 0 ? void 0 : _d.customCSS) === null || _e === void 0 ? void 0 : _e.variables) != null,
|
|
10630
10842
|
usedCustomizationRules: ((_h = (_g = (_f = embedConfig.customizations) === null || _f === void 0 ? void 0 : _f.style) === null || _g === void 0 ? void 0 : _g.customCSS) === null || _h === void 0 ? void 0 : _h.rules_UNSTABLE) != null,
|
|
@@ -10681,8 +10893,10 @@
|
|
|
10681
10893
|
};
|
|
10682
10894
|
/**
|
|
10683
10895
|
* Imports TML representation of the metadata objects into ThoughtSpot.
|
|
10896
|
+
*
|
|
10684
10897
|
* @param data
|
|
10685
10898
|
* @version SDK: 1.23.0 | ThoughtSpot: 9.4.0.cl
|
|
10899
|
+
* @group Global methods
|
|
10686
10900
|
*/
|
|
10687
10901
|
const executeTML = async (data) => {
|
|
10688
10902
|
const { thoughtSpotHost, authType } = config;
|
|
@@ -10725,9 +10939,12 @@
|
|
|
10725
10939
|
});
|
|
10726
10940
|
};
|
|
10727
10941
|
/**
|
|
10728
|
-
* Exports TML representation of the metadata objects from ThoughtSpot in JSON or YAML
|
|
10942
|
+
* Exports TML representation of the metadata objects from ThoughtSpot in JSON or YAML
|
|
10943
|
+
* format.
|
|
10944
|
+
*
|
|
10729
10945
|
* @param data
|
|
10730
10946
|
* @version SDK: 1.23.0 | ThoughtSpot: 9.4.0.cl
|
|
10947
|
+
* @group Global methods
|
|
10731
10948
|
*/
|
|
10732
10949
|
const exportTML = async (data) => {
|
|
10733
10950
|
const { thoughtSpotHost, authType } = config;
|
|
@@ -10773,58 +10990,351 @@
|
|
|
10773
10990
|
|
|
10774
10991
|
/**
|
|
10775
10992
|
*
|
|
10776
|
-
* @param
|
|
10777
|
-
* @param query
|
|
10778
|
-
* @param
|
|
10993
|
+
* @param root0
|
|
10994
|
+
* @param root0.query
|
|
10995
|
+
* @param root0.variables
|
|
10996
|
+
* @param root0.thoughtSpotHost
|
|
10997
|
+
* @param root0.isCompositeQuery
|
|
10998
|
+
*/
|
|
10999
|
+
async function graphqlQuery({ query, variables, thoughtSpotHost, isCompositeQuery = false, }) {
|
|
11000
|
+
const operationName = getOperationNameFromQuery(query);
|
|
11001
|
+
try {
|
|
11002
|
+
const response = await fetch(`${thoughtSpotHost}/prism/?op=${operationName}`, {
|
|
11003
|
+
method: 'POST',
|
|
11004
|
+
headers: {
|
|
11005
|
+
'content-type': 'application/json;charset=UTF-8',
|
|
11006
|
+
'x-requested-by': 'ThoughtSpot',
|
|
11007
|
+
accept: '*/*',
|
|
11008
|
+
'accept-language': 'en-us',
|
|
11009
|
+
},
|
|
11010
|
+
body: JSON.stringify({
|
|
11011
|
+
operationName,
|
|
11012
|
+
query,
|
|
11013
|
+
variables,
|
|
11014
|
+
}),
|
|
11015
|
+
credentials: 'include',
|
|
11016
|
+
});
|
|
11017
|
+
const result = await response.json();
|
|
11018
|
+
const dataValues = Object.values(result.data);
|
|
11019
|
+
return (isCompositeQuery) ? result.data : dataValues[0];
|
|
11020
|
+
}
|
|
11021
|
+
catch (error) {
|
|
11022
|
+
return error;
|
|
11023
|
+
}
|
|
11024
|
+
}
|
|
11025
|
+
|
|
11026
|
+
const getSourceDetailQuery = `
|
|
11027
|
+
query GetSourceDetail($ids: [GUID!]!) {
|
|
11028
|
+
getSourceDetailById(ids: $ids, type: LOGICAL_TABLE) {
|
|
11029
|
+
id
|
|
11030
|
+
name
|
|
11031
|
+
description
|
|
11032
|
+
authorName
|
|
11033
|
+
authorDisplayName
|
|
11034
|
+
isExternal
|
|
11035
|
+
type
|
|
11036
|
+
created
|
|
11037
|
+
modified
|
|
11038
|
+
columns {
|
|
11039
|
+
id
|
|
11040
|
+
name
|
|
11041
|
+
author
|
|
11042
|
+
authorDisplayName
|
|
11043
|
+
description
|
|
11044
|
+
dataType
|
|
11045
|
+
type
|
|
11046
|
+
modified
|
|
11047
|
+
ownerName
|
|
11048
|
+
owner
|
|
11049
|
+
dataRecency
|
|
11050
|
+
sources {
|
|
11051
|
+
tableId
|
|
11052
|
+
tableName
|
|
11053
|
+
columnId
|
|
11054
|
+
columnName
|
|
11055
|
+
__typename
|
|
11056
|
+
}
|
|
11057
|
+
synonyms
|
|
11058
|
+
cohortAnswerId
|
|
11059
|
+
__typename
|
|
11060
|
+
}
|
|
11061
|
+
relationships
|
|
11062
|
+
destinationRelationships
|
|
11063
|
+
dataSourceId
|
|
11064
|
+
__typename
|
|
11065
|
+
}
|
|
11066
|
+
}
|
|
11067
|
+
`;
|
|
11068
|
+
const sourceDetailCache = new Map();
|
|
11069
|
+
/**
|
|
11070
|
+
*
|
|
10779
11071
|
* @param thoughtSpotHost
|
|
11072
|
+
* @param sourceId
|
|
10780
11073
|
*/
|
|
10781
|
-
function
|
|
10782
|
-
|
|
10783
|
-
|
|
10784
|
-
|
|
10785
|
-
|
|
10786
|
-
|
|
10787
|
-
|
|
10788
|
-
|
|
10789
|
-
|
|
10790
|
-
|
|
10791
|
-
|
|
10792
|
-
|
|
10793
|
-
|
|
10794
|
-
|
|
10795
|
-
|
|
10796
|
-
|
|
10797
|
-
|
|
10798
|
-
|
|
10799
|
-
|
|
10800
|
-
|
|
10801
|
-
|
|
11074
|
+
async function getSourceDetail(thoughtSpotHost, sourceId) {
|
|
11075
|
+
if (sourceDetailCache.has(sourceId)) {
|
|
11076
|
+
return sourceDetailCache.get(sourceId);
|
|
11077
|
+
}
|
|
11078
|
+
const details = await graphqlQuery({
|
|
11079
|
+
query: getSourceDetailQuery,
|
|
11080
|
+
variables: {
|
|
11081
|
+
ids: [sourceId],
|
|
11082
|
+
},
|
|
11083
|
+
thoughtSpotHost,
|
|
11084
|
+
});
|
|
11085
|
+
const souceDetails = details[0];
|
|
11086
|
+
sourceDetailCache.set(sourceId, souceDetails);
|
|
11087
|
+
return souceDetails;
|
|
11088
|
+
}
|
|
11089
|
+
|
|
11090
|
+
const bachSessionId = `
|
|
11091
|
+
id {
|
|
11092
|
+
sessionId
|
|
11093
|
+
genNo
|
|
11094
|
+
acSession {
|
|
11095
|
+
sessionId
|
|
11096
|
+
genNo
|
|
11097
|
+
}
|
|
11098
|
+
}
|
|
11099
|
+
`;
|
|
11100
|
+
const getUnaggregatedAnswerSession = `
|
|
11101
|
+
mutation GetUnAggregatedAnswerSession($session: BachSessionIdInput!, $columns: [UserPointSelectionInput!]!) {
|
|
11102
|
+
Answer__getUnaggregatedAnswer(session: $session, columns: $columns) {
|
|
11103
|
+
${bachSessionId}
|
|
11104
|
+
answer {
|
|
11105
|
+
visualizations {
|
|
11106
|
+
... on TableViz {
|
|
11107
|
+
columns {
|
|
11108
|
+
column {
|
|
11109
|
+
id
|
|
11110
|
+
name
|
|
11111
|
+
referencedColumns {
|
|
11112
|
+
guid
|
|
11113
|
+
displayName
|
|
11114
|
+
}
|
|
11115
|
+
}
|
|
11116
|
+
}
|
|
11117
|
+
}
|
|
11118
|
+
}
|
|
11119
|
+
}
|
|
11120
|
+
}
|
|
11121
|
+
}
|
|
11122
|
+
`;
|
|
11123
|
+
const removeColumns = `
|
|
11124
|
+
mutation RemoveColumns($session: BachSessionIdInput!, $logicalColumnIds: [GUID!], $columnIds: [GUID!]) {
|
|
11125
|
+
Answer__removeColumns(
|
|
11126
|
+
session: $session
|
|
11127
|
+
logicalColumnIds: $logicalColumnIds
|
|
11128
|
+
columnIds: $columnIds
|
|
11129
|
+
) {
|
|
11130
|
+
${bachSessionId}
|
|
11131
|
+
}
|
|
11132
|
+
}
|
|
11133
|
+
`;
|
|
11134
|
+
const addColumns = `
|
|
11135
|
+
mutation AddColumns($session: BachSessionIdInput!, $columns: [AnswerColumnInfo!]!) {
|
|
11136
|
+
Answer__addColumn(session: $session, columns: $columns) {
|
|
11137
|
+
${bachSessionId}
|
|
11138
|
+
}
|
|
11139
|
+
}
|
|
11140
|
+
`;
|
|
11141
|
+
const getAnswerData = `
|
|
11142
|
+
query GetTableWithHeadlineData($session: BachSessionIdInput!, $deadline: Int!, $dataPaginationParams: DataPaginationParamsInput!) {
|
|
11143
|
+
getAnswer(session: $session) {
|
|
11144
|
+
${bachSessionId}
|
|
11145
|
+
answer {
|
|
11146
|
+
id
|
|
11147
|
+
visualizations {
|
|
11148
|
+
id
|
|
11149
|
+
... on TableViz {
|
|
11150
|
+
columns {
|
|
11151
|
+
column {
|
|
11152
|
+
id
|
|
11153
|
+
name
|
|
11154
|
+
type
|
|
11155
|
+
aggregationType
|
|
11156
|
+
dataType
|
|
11157
|
+
}
|
|
11158
|
+
}
|
|
11159
|
+
data(deadline: $deadline, pagination: $dataPaginationParams)
|
|
11160
|
+
}
|
|
11161
|
+
}
|
|
11162
|
+
}
|
|
11163
|
+
}
|
|
11164
|
+
}
|
|
11165
|
+
`;
|
|
11166
|
+
|
|
11167
|
+
// eslint-disable-next-line no-shadow
|
|
11168
|
+
var OperationType;
|
|
11169
|
+
(function (OperationType) {
|
|
11170
|
+
OperationType["GetChartWithData"] = "GetChartWithData";
|
|
11171
|
+
OperationType["GetTableWithHeadlineData"] = "GetTableWithHeadlineData";
|
|
11172
|
+
})(OperationType || (OperationType = {}));
|
|
11173
|
+
/**
|
|
11174
|
+
* Class representing the answer service provided with the
|
|
11175
|
+
* custom action payload. This service could be used to run
|
|
11176
|
+
* graphql queries in the context of the answer on which the
|
|
11177
|
+
* custom action was triggered.
|
|
11178
|
+
*
|
|
11179
|
+
* @example
|
|
11180
|
+
* ```js
|
|
11181
|
+
* embed.on(EmbedEvent.CustomAction, e => {
|
|
11182
|
+
* const underlying = await e.answerService.getUnderlyingDataForPoint([
|
|
11183
|
+
* 'col name 1'
|
|
11184
|
+
* ]);
|
|
11185
|
+
* const data = await underlying.fetchData(0, 100);
|
|
11186
|
+
* })
|
|
11187
|
+
* ```
|
|
11188
|
+
* @version
|
|
11189
|
+
* ThoughtSpot: 9.9.0.cl / SDK: 1.25.0
|
|
11190
|
+
*/
|
|
11191
|
+
class AnswerService {
|
|
11192
|
+
constructor(session, answer, thoughtSpotHost, selectedPoints) {
|
|
11193
|
+
this.session = session;
|
|
11194
|
+
this.answer = answer;
|
|
11195
|
+
this.thoughtSpotHost = thoughtSpotHost;
|
|
11196
|
+
this.selectedPoints = selectedPoints;
|
|
11197
|
+
this.session = removeTypename(session);
|
|
11198
|
+
}
|
|
11199
|
+
async getSourceDetail() {
|
|
11200
|
+
const sourceId = this.answer.sources[0].header.guid;
|
|
11201
|
+
return getSourceDetail(this.thoughtSpotHost, sourceId);
|
|
11202
|
+
}
|
|
11203
|
+
async removeColumns(columnIds) {
|
|
11204
|
+
return this.executeQuery(removeColumns, {
|
|
11205
|
+
logicalColumnIds: columnIds,
|
|
11206
|
+
});
|
|
11207
|
+
}
|
|
11208
|
+
async addColumns(columnIds) {
|
|
11209
|
+
return this.executeQuery(addColumns, {
|
|
11210
|
+
columns: columnIds.map((colId) => ({ logicalColumnId: colId })),
|
|
11211
|
+
});
|
|
11212
|
+
}
|
|
11213
|
+
async fetchData(offset = 0, size = 1000) {
|
|
11214
|
+
const { answer } = await this.executeQuery(getAnswerData, {
|
|
11215
|
+
deadline: 0,
|
|
11216
|
+
dataPaginationParams: {
|
|
11217
|
+
isClientPaginated: true,
|
|
11218
|
+
offset,
|
|
11219
|
+
size,
|
|
11220
|
+
},
|
|
11221
|
+
});
|
|
11222
|
+
const { columns, data } = answer.visualizations[0];
|
|
11223
|
+
return {
|
|
11224
|
+
columns,
|
|
11225
|
+
data,
|
|
11226
|
+
};
|
|
11227
|
+
}
|
|
11228
|
+
/**
|
|
11229
|
+
*
|
|
11230
|
+
* @param userLocale
|
|
11231
|
+
* @param omitInfo Omit the download Info on top of the CSV
|
|
11232
|
+
* @returns Response
|
|
11233
|
+
*/
|
|
11234
|
+
async fetchCSVBlob(userLocale = 'en-us', omitInfo = false) {
|
|
11235
|
+
if (omitInfo) {
|
|
11236
|
+
console.warn('omitInfo not supported yet.');
|
|
11237
|
+
}
|
|
11238
|
+
const fetchUrl = `${this.thoughtSpotHost}/prism/download/answer/csv?sessionId=${this.session.sessionId}&genNo=${this.session.genNo}&userLocale=${userLocale}&exportFileName=data&omitInfo=${omitInfo}`;
|
|
11239
|
+
return fetch(fetchUrl, {
|
|
11240
|
+
credentials: 'include',
|
|
11241
|
+
});
|
|
11242
|
+
}
|
|
11243
|
+
async getUnderlyingDataForPoint(outputColumnNames, selectedPoints) {
|
|
11244
|
+
if (!selectedPoints && !this.selectedPoints) {
|
|
11245
|
+
throw new Error('Needs to be triggered in context of a point');
|
|
10802
11246
|
}
|
|
10803
|
-
|
|
10804
|
-
|
|
11247
|
+
if (!selectedPoints) {
|
|
11248
|
+
selectedPoints = getSelectedPointsForUnderlyingDataQuery(this.selectedPoints);
|
|
10805
11249
|
}
|
|
10806
|
-
|
|
10807
|
-
|
|
10808
|
-
|
|
10809
|
-
|
|
11250
|
+
const sourceDetail = await this.getSourceDetail();
|
|
11251
|
+
const ouputColumnGuids = getGuidsFromColumnNames(sourceDetail, outputColumnNames);
|
|
11252
|
+
const unAggAnswer = await graphqlQuery({
|
|
11253
|
+
query: getUnaggregatedAnswerSession,
|
|
11254
|
+
variables: {
|
|
11255
|
+
session: this.session,
|
|
11256
|
+
columns: selectedPoints,
|
|
11257
|
+
},
|
|
11258
|
+
thoughtSpotHost: this.thoughtSpotHost,
|
|
11259
|
+
});
|
|
11260
|
+
const unaggAnswerSession = new AnswerService(unAggAnswer.id, unAggAnswer.answer, this.thoughtSpotHost);
|
|
11261
|
+
const currentColumns = new Set(unAggAnswer.answer.visualizations[0].columns
|
|
11262
|
+
.map((c) => c.column.referencedColumns[0].guid));
|
|
11263
|
+
const columnsToAdd = [...ouputColumnGuids].filter((col) => !currentColumns.has(col));
|
|
11264
|
+
if (columnsToAdd.length) {
|
|
11265
|
+
await unaggAnswerSession.addColumns(columnsToAdd);
|
|
11266
|
+
}
|
|
11267
|
+
const columnsToRemove = [...currentColumns].filter((col) => !ouputColumnGuids.has(col));
|
|
11268
|
+
if (columnsToRemove.length) {
|
|
11269
|
+
await unaggAnswerSession.removeColumns(columnsToRemove);
|
|
11270
|
+
}
|
|
11271
|
+
return unaggAnswerSession;
|
|
11272
|
+
}
|
|
11273
|
+
async executeQuery(query, variables) {
|
|
11274
|
+
const data = await graphqlQuery({
|
|
11275
|
+
query,
|
|
11276
|
+
variables: {
|
|
11277
|
+
session: this.session,
|
|
11278
|
+
...variables,
|
|
11279
|
+
},
|
|
11280
|
+
thoughtSpotHost: this.thoughtSpotHost,
|
|
11281
|
+
isCompositeQuery: false,
|
|
11282
|
+
});
|
|
11283
|
+
this.session = deepMerge(this.session, (data === null || data === void 0 ? void 0 : data.id) || {});
|
|
11284
|
+
return data;
|
|
11285
|
+
}
|
|
11286
|
+
getSession() {
|
|
11287
|
+
return this.session;
|
|
11288
|
+
}
|
|
11289
|
+
}
|
|
11290
|
+
/**
|
|
11291
|
+
*
|
|
11292
|
+
* @param sourceDetail
|
|
11293
|
+
* @param colNames
|
|
11294
|
+
*/
|
|
11295
|
+
function getGuidsFromColumnNames(sourceDetail, colNames) {
|
|
11296
|
+
const cols = sourceDetail.columns.reduce((colSet, col) => {
|
|
11297
|
+
colSet[col.name] = col;
|
|
11298
|
+
return colSet;
|
|
11299
|
+
}, {});
|
|
11300
|
+
return new Set(colNames.map((colName) => {
|
|
11301
|
+
const col = cols[colName];
|
|
11302
|
+
return col.id;
|
|
11303
|
+
}));
|
|
11304
|
+
}
|
|
11305
|
+
/**
|
|
11306
|
+
*
|
|
11307
|
+
* @param selectedPoints
|
|
11308
|
+
*/
|
|
11309
|
+
function getSelectedPointsForUnderlyingDataQuery(selectedPoints) {
|
|
11310
|
+
const underlyingDataPoint = [];
|
|
11311
|
+
/**
|
|
11312
|
+
*
|
|
11313
|
+
* @param colVal
|
|
11314
|
+
*/
|
|
11315
|
+
function addPointFromColVal(colVal) {
|
|
11316
|
+
const dataType = colVal.column.dataType;
|
|
11317
|
+
const id = colVal.column.id;
|
|
11318
|
+
let dataValue;
|
|
11319
|
+
if (dataType === 'DATE') {
|
|
11320
|
+
dataValue = [{
|
|
11321
|
+
epochRange: {
|
|
11322
|
+
startEpoch: colVal.value,
|
|
11323
|
+
},
|
|
11324
|
+
}];
|
|
10810
11325
|
}
|
|
10811
11326
|
else {
|
|
10812
|
-
|
|
10813
|
-
dataPaginationParams: {
|
|
10814
|
-
isClientPaginated: true,
|
|
10815
|
-
offset: offset * batchSize,
|
|
10816
|
-
size: batchSize,
|
|
10817
|
-
},
|
|
10818
|
-
};
|
|
11327
|
+
dataValue = [{ value: colVal.value }];
|
|
10819
11328
|
}
|
|
10820
|
-
|
|
10821
|
-
|
|
10822
|
-
|
|
11329
|
+
underlyingDataPoint.push({
|
|
11330
|
+
columnId: colVal.column.id,
|
|
11331
|
+
dataValue,
|
|
10823
11332
|
});
|
|
10824
|
-
}
|
|
10825
|
-
|
|
10826
|
-
|
|
10827
|
-
};
|
|
11333
|
+
}
|
|
11334
|
+
selectedPoints.forEach((p) => {
|
|
11335
|
+
p.selectedAttributes.forEach(addPointFromColVal);
|
|
11336
|
+
});
|
|
11337
|
+
return underlyingDataPoint;
|
|
10828
11338
|
}
|
|
10829
11339
|
|
|
10830
11340
|
/**
|
|
@@ -10833,16 +11343,12 @@
|
|
|
10833
11343
|
* @param thoughtSpotHost
|
|
10834
11344
|
*/
|
|
10835
11345
|
function processCustomAction(e, thoughtSpotHost) {
|
|
10836
|
-
|
|
10837
|
-
|
|
10838
|
-
|
|
10839
|
-
|
|
10840
|
-
|
|
10841
|
-
|
|
10842
|
-
answerService,
|
|
10843
|
-
};
|
|
10844
|
-
}
|
|
10845
|
-
return e;
|
|
11346
|
+
const { session, embedAnswerData, contextMenuPoints } = e.data;
|
|
11347
|
+
const answerService = new AnswerService(session, embedAnswerData, thoughtSpotHost, contextMenuPoints === null || contextMenuPoints === void 0 ? void 0 : contextMenuPoints.selectedPoints);
|
|
11348
|
+
return {
|
|
11349
|
+
...e,
|
|
11350
|
+
answerService,
|
|
11351
|
+
};
|
|
10846
11352
|
}
|
|
10847
11353
|
/**
|
|
10848
11354
|
*
|
|
@@ -10987,7 +11493,7 @@
|
|
|
10987
11493
|
});
|
|
10988
11494
|
}
|
|
10989
11495
|
|
|
10990
|
-
var name="@thoughtspot/visual-embed-sdk";var version="1.24.
|
|
11496
|
+
var name="@thoughtspot/visual-embed-sdk";var version="1.24.1";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$1={".":{"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$1,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};
|
|
10991
11497
|
|
|
10992
11498
|
/**
|
|
10993
11499
|
* Copyright (c) 2022
|
|
@@ -11019,6 +11525,7 @@
|
|
|
11019
11525
|
class TsEmbed {
|
|
11020
11526
|
constructor(domSelector, viewConfig) {
|
|
11021
11527
|
this.isAppInitialized = false;
|
|
11528
|
+
this.embedComponentType = 'TsEmbed';
|
|
11022
11529
|
/**
|
|
11023
11530
|
* Should we encode URL Query Params using base64 encoding which thoughtspot
|
|
11024
11531
|
* will generate for embedding. This provides additional security to
|
|
@@ -11035,6 +11542,7 @@
|
|
|
11035
11542
|
* @param responder
|
|
11036
11543
|
*/
|
|
11037
11544
|
this.appInitCb = async (_, responder) => {
|
|
11545
|
+
var _a, _b;
|
|
11038
11546
|
let authToken = '';
|
|
11039
11547
|
if (this.embedConfig.authType === exports.AuthType.TrustedAuthTokenCookieless) {
|
|
11040
11548
|
authToken = await getAuthenticaionToken(this.embedConfig);
|
|
@@ -11045,8 +11553,15 @@
|
|
|
11045
11553
|
data: {
|
|
11046
11554
|
customisations: getCustomisations(this.embedConfig, this.viewConfig),
|
|
11047
11555
|
authToken,
|
|
11048
|
-
runtimeFilterParams:
|
|
11556
|
+
runtimeFilterParams: this.viewConfig.excludeRuntimeFiltersfromURL
|
|
11557
|
+
? getRuntimeFilters(this.viewConfig.runtimeFilters)
|
|
11558
|
+
: null,
|
|
11559
|
+
hiddenHomepageModules: this.viewConfig.hiddenHomepageModules || [],
|
|
11560
|
+
reorderedHomepageModules: this.viewConfig.reorderedHomepageModules || [],
|
|
11049
11561
|
hostConfig: this.embedConfig.hostConfig,
|
|
11562
|
+
hiddenHomeLeftNavItems: ((_a = this.viewConfig) === null || _a === void 0 ? void 0 : _a.hiddenHomeLeftNavItems)
|
|
11563
|
+
? (_b = this.viewConfig) === null || _b === void 0 ? void 0 : _b.hiddenHomeLeftNavItems
|
|
11564
|
+
: [],
|
|
11050
11565
|
},
|
|
11051
11566
|
});
|
|
11052
11567
|
};
|
|
@@ -11074,8 +11589,8 @@
|
|
|
11074
11589
|
* Register APP_INIT event and sendback init payload
|
|
11075
11590
|
*/
|
|
11076
11591
|
this.registerAppInit = () => {
|
|
11077
|
-
this.on(exports.EmbedEvent.APP_INIT, this.appInitCb);
|
|
11078
|
-
this.on(exports.EmbedEvent.AuthExpire, this.updateAuthToken);
|
|
11592
|
+
this.on(exports.EmbedEvent.APP_INIT, this.appInitCb, { start: false }, true);
|
|
11593
|
+
this.on(exports.EmbedEvent.AuthExpire, this.updateAuthToken, { start: false }, true);
|
|
11079
11594
|
};
|
|
11080
11595
|
this.el = getDOMNode(domSelector);
|
|
11081
11596
|
// TODO: handle error
|
|
@@ -11090,6 +11605,10 @@
|
|
|
11090
11605
|
this.viewConfig = viewConfig;
|
|
11091
11606
|
this.shouldEncodeUrlQueryParams = this.embedConfig.shouldEncodeUrlQueryParams;
|
|
11092
11607
|
this.registerAppInit();
|
|
11608
|
+
uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_EMBED_CREATE, {
|
|
11609
|
+
...viewConfig,
|
|
11610
|
+
embedComponentType: this.embedComponentType,
|
|
11611
|
+
});
|
|
11093
11612
|
}
|
|
11094
11613
|
/**
|
|
11095
11614
|
* Throws error encountered during initialization.
|
|
@@ -11220,6 +11739,9 @@
|
|
|
11220
11739
|
if (this.embedConfig.authType === exports.AuthType.TrustedAuthTokenCookieless) {
|
|
11221
11740
|
queryParams[Param.cookieless] = true;
|
|
11222
11741
|
}
|
|
11742
|
+
if (this.embedConfig.pendoTrackingKey) {
|
|
11743
|
+
queryParams[Param.PendoTrackingKey] = this.embedConfig.pendoTrackingKey;
|
|
11744
|
+
}
|
|
11223
11745
|
const { disabledActions, disabledActionReason, hiddenActions, visibleActions, hiddenTabs, visibleTabs, showAlerts, additionalFlags, locale, customizations, contextMenuTrigger, linkOverride, insertInToSlide, hideLiveboardHeader, showLiveboardDescription, showLiveboardTitle, } = this.viewConfig;
|
|
11224
11746
|
if (Array.isArray(visibleActions) && Array.isArray(hiddenActions)) {
|
|
11225
11747
|
this.handleError('You cannot have both hidden actions and visible actions');
|
|
@@ -11372,7 +11894,6 @@
|
|
|
11372
11894
|
this.insertIntoDOM(this.embedConfig.loginFailedMessage);
|
|
11373
11895
|
return;
|
|
11374
11896
|
}
|
|
11375
|
-
uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_RENDER_COMPLETE);
|
|
11376
11897
|
this.iFrame = this.iFrame || this.createIframeEl(url);
|
|
11377
11898
|
this.iFrame.addEventListener('load', () => {
|
|
11378
11899
|
nextInQueue();
|
|
@@ -11383,7 +11904,9 @@
|
|
|
11383
11904
|
},
|
|
11384
11905
|
type: exports.EmbedEvent.Load,
|
|
11385
11906
|
});
|
|
11386
|
-
uploadMixpanelEvent(MIXPANEL_EVENT.
|
|
11907
|
+
uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_RENDER_COMPLETE, {
|
|
11908
|
+
elWidth: this.iFrame.clientWidth,
|
|
11909
|
+
elHeight: this.iFrame.clientHeight,
|
|
11387
11910
|
timeTookToLoad: loadTimestamp - initTimestamp,
|
|
11388
11911
|
});
|
|
11389
11912
|
});
|
|
@@ -11526,6 +12049,8 @@
|
|
|
11526
12049
|
* @param messageType The message type
|
|
11527
12050
|
* @param callback A callback as a function
|
|
11528
12051
|
* @param options The message options
|
|
12052
|
+
* @param isSelf
|
|
12053
|
+
* @param isRegisteredBySDK
|
|
11529
12054
|
* @example
|
|
11530
12055
|
* ```js
|
|
11531
12056
|
* tsEmbed.on(EmbedEvent.Error, (data) => {
|
|
@@ -11541,7 +12066,10 @@
|
|
|
11541
12066
|
* });
|
|
11542
12067
|
* ```
|
|
11543
12068
|
*/
|
|
11544
|
-
on(messageType, callback, options = { start: false }) {
|
|
12069
|
+
on(messageType, callback, options = { start: false }, isRegisteredBySDK = false) {
|
|
12070
|
+
uploadMixpanelEvent(`${MIXPANEL_EVENT.VISUAL_SDK_ON}-${messageType}`, {
|
|
12071
|
+
isRegisteredBySDK,
|
|
12072
|
+
});
|
|
11545
12073
|
if (this.isRendered) {
|
|
11546
12074
|
this.handleError('Please register event handlers before calling render');
|
|
11547
12075
|
}
|
|
@@ -11698,8 +12226,10 @@
|
|
|
11698
12226
|
let queryString = queryParams;
|
|
11699
12227
|
if (!this.viewConfig.excludeRuntimeFiltersfromURL) {
|
|
11700
12228
|
const runtimeFilters = this.viewConfig.runtimeFilters;
|
|
12229
|
+
const runtimeParameters = this.viewConfig.runtimeParameters;
|
|
12230
|
+
const parameterQuery = getRuntimeParameters(runtimeParameters || []);
|
|
11701
12231
|
const filterQuery = getFilterQuery(runtimeFilters || []);
|
|
11702
|
-
queryString = [filterQuery, queryParams].filter(Boolean).join('&');
|
|
12232
|
+
queryString = [parameterQuery, filterQuery, queryParams].filter(Boolean).join('&');
|
|
11703
12233
|
}
|
|
11704
12234
|
return this.getV1EmbedBasePath(queryString);
|
|
11705
12235
|
}
|
|
@@ -11722,7 +12252,6 @@
|
|
|
11722
12252
|
*/
|
|
11723
12253
|
on(messageType, callback, options = { start: false }) {
|
|
11724
12254
|
const eventType = this.getCompatibleEventType(messageType);
|
|
11725
|
-
uploadMixpanelEvent(`${MIXPANEL_EVENT.VISUAL_SDK_ON}-${messageType}`);
|
|
11726
12255
|
return super.on(eventType, callback, options);
|
|
11727
12256
|
}
|
|
11728
12257
|
}
|
|
@@ -11777,6 +12306,7 @@
|
|
|
11777
12306
|
constructor(domSelector, viewConfig) {
|
|
11778
12307
|
super(domSelector, viewConfig);
|
|
11779
12308
|
this.defaultHeight = '100%';
|
|
12309
|
+
this.embedComponentType = 'AppEmbed';
|
|
11780
12310
|
/**
|
|
11781
12311
|
* Set the iframe height as per the computed height received
|
|
11782
12312
|
* from the ThoughtSpot app.
|
|
@@ -11808,7 +12338,7 @@
|
|
|
11808
12338
|
* embedded Liveboard or visualization.
|
|
11809
12339
|
*/
|
|
11810
12340
|
getEmbedParams() {
|
|
11811
|
-
const { tag, hideObjects, liveboardV2, showPrimaryNavbar, disableProfileAndHelp, hideApplicationSwitcher, hideOrgSwitcher, enableSearchAssist, fullHeight, dataPanelV2 = false, } = this.viewConfig;
|
|
12341
|
+
const { tag, hideObjects, liveboardV2, showPrimaryNavbar, disableProfileAndHelp, hideApplicationSwitcher, hideOrgSwitcher, enableSearchAssist, fullHeight, dataPanelV2 = false, hideHomepageLeftNav = false, modularHomeExperience = false, } = this.viewConfig;
|
|
11812
12342
|
let params = {};
|
|
11813
12343
|
params[Param.EmbedApp] = true;
|
|
11814
12344
|
params[Param.PrimaryNavHidden] = !showPrimaryNavbar;
|
|
@@ -11832,6 +12362,8 @@
|
|
|
11832
12362
|
params[Param.EnableSearchAssist] = enableSearchAssist;
|
|
11833
12363
|
}
|
|
11834
12364
|
params[Param.DataPanelV2Enabled] = dataPanelV2;
|
|
12365
|
+
params[Param.HideHomepageLeftNav] = hideHomepageLeftNav;
|
|
12366
|
+
params[Param.ModularHomeExperienceEnabled] = modularHomeExperience;
|
|
11835
12367
|
const queryParams = getQueryParamString(params, true);
|
|
11836
12368
|
return queryParams;
|
|
11837
12369
|
}
|
|
@@ -11841,8 +12373,8 @@
|
|
|
11841
12373
|
* @param pageId The ID of the page to be embedded.
|
|
11842
12374
|
*/
|
|
11843
12375
|
getIFrameSrc() {
|
|
11844
|
-
const { pageId, path } = this.viewConfig;
|
|
11845
|
-
const pageRoute = this.formatPath(path) || this.getPageRoute(pageId);
|
|
12376
|
+
const { pageId, path, modularHomeExperience } = this.viewConfig;
|
|
12377
|
+
const pageRoute = this.formatPath(path) || this.getPageRoute(pageId, modularHomeExperience);
|
|
11846
12378
|
let url = `${this.getRootIframeSrc()}/${pageRoute}`;
|
|
11847
12379
|
const tsPostHashParams = this.getThoughtSpotPostUrlParams();
|
|
11848
12380
|
url = `${url}${tsPostHashParams}`;
|
|
@@ -11852,21 +12384,22 @@
|
|
|
11852
12384
|
* Gets the ThoughtSpot route of the page for a particular page ID.
|
|
11853
12385
|
*
|
|
11854
12386
|
* @param pageId The identifier for a page in the ThoughtSpot app.
|
|
12387
|
+
* @param modularHomeExperience
|
|
11855
12388
|
*/
|
|
11856
|
-
getPageRoute(pageId) {
|
|
12389
|
+
getPageRoute(pageId, modularHomeExperience = false) {
|
|
11857
12390
|
switch (pageId) {
|
|
11858
12391
|
case exports.Page.Search:
|
|
11859
12392
|
return 'answer';
|
|
11860
12393
|
case exports.Page.Answers:
|
|
11861
|
-
return 'answers';
|
|
12394
|
+
return modularHomeExperience ? 'home/answers' : 'answers';
|
|
11862
12395
|
case exports.Page.Liveboards:
|
|
11863
|
-
return 'pinboards';
|
|
12396
|
+
return modularHomeExperience ? 'home/liveboards' : 'pinboards';
|
|
11864
12397
|
case exports.Page.Pinboards:
|
|
11865
|
-
return 'pinboards';
|
|
12398
|
+
return modularHomeExperience ? 'home/liveboards' : 'pinboards';
|
|
11866
12399
|
case exports.Page.Data:
|
|
11867
12400
|
return 'data/tables';
|
|
11868
12401
|
case exports.Page.SpotIQ:
|
|
11869
|
-
return 'insights/results';
|
|
12402
|
+
return modularHomeExperience ? 'home/spotiq-analysis' : 'insights/results';
|
|
11870
12403
|
case exports.Page.Home:
|
|
11871
12404
|
default:
|
|
11872
12405
|
return 'home';
|
|
@@ -11963,6 +12496,7 @@
|
|
|
11963
12496
|
constructor(domSelector, viewConfig) {
|
|
11964
12497
|
super(domSelector, viewConfig);
|
|
11965
12498
|
this.defaultHeight = 500;
|
|
12499
|
+
this.embedComponentType = 'LiveboardEmbed';
|
|
11966
12500
|
/**
|
|
11967
12501
|
* Set the iframe height as per the computed height received
|
|
11968
12502
|
* from the ThoughtSpot app.
|
|
@@ -11995,7 +12529,7 @@
|
|
|
11995
12529
|
let params = {};
|
|
11996
12530
|
params[Param.EmbedApp] = true;
|
|
11997
12531
|
params = this.getBaseQueryParams(params);
|
|
11998
|
-
const { enableVizTransformations, fullHeight, defaultHeight, visibleVizs, liveboardV2, vizId, hideTabPanel, activeTabId, } = this.viewConfig;
|
|
12532
|
+
const { enableVizTransformations, fullHeight, defaultHeight, visibleVizs, liveboardV2, vizId, hideTabPanel, activeTabId, runtimeParameters, } = this.viewConfig;
|
|
11999
12533
|
const preventLiveboardFilterRemoval = this.viewConfig.preventLiveboardFilterRemoval
|
|
12000
12534
|
|| this.viewConfig.preventPinboardFilterRemoval;
|
|
12001
12535
|
if (fullHeight === true) {
|
|
@@ -12023,7 +12557,10 @@
|
|
|
12023
12557
|
if (hideTabPanel) {
|
|
12024
12558
|
params[Param.HideTabPanel] = hideTabPanel;
|
|
12025
12559
|
}
|
|
12026
|
-
|
|
12560
|
+
let queryParams = getQueryParamString(params, true);
|
|
12561
|
+
const parameterQuery = getRuntimeParameters(runtimeParameters || []);
|
|
12562
|
+
if (parameterQuery)
|
|
12563
|
+
queryParams += `&${parameterQuery}`;
|
|
12027
12564
|
return queryParams;
|
|
12028
12565
|
}
|
|
12029
12566
|
getIframeSuffixSrc(liveboardId, vizId, activeTabId) {
|
|
@@ -12129,6 +12666,7 @@
|
|
|
12129
12666
|
class SearchEmbed extends TsEmbed {
|
|
12130
12667
|
constructor(domSelector, viewConfig) {
|
|
12131
12668
|
super(domSelector);
|
|
12669
|
+
this.embedComponentType = 'SearchEmbed';
|
|
12132
12670
|
this.viewConfig = viewConfig;
|
|
12133
12671
|
}
|
|
12134
12672
|
/**
|
|
@@ -12147,7 +12685,7 @@
|
|
|
12147
12685
|
}
|
|
12148
12686
|
getEmbedParams() {
|
|
12149
12687
|
var _a;
|
|
12150
|
-
const { hideResults, enableSearchAssist, forceTable, searchOptions, runtimeFilters, dataSource, dataSources, excludeRuntimeFiltersfromURL, dataPanelV2 = false, } = this.viewConfig;
|
|
12688
|
+
const { hideResults, expandAllDataSource, enableSearchAssist, forceTable, searchOptions, runtimeFilters, dataSource, dataSources, excludeRuntimeFiltersfromURL, dataPanelV2 = false, useLastSelectedSources = false, runtimeParameters, } = this.viewConfig;
|
|
12151
12689
|
const queryParams = this.getBaseQueryParams();
|
|
12152
12690
|
queryParams[Param.HideActions] = [
|
|
12153
12691
|
...((_a = queryParams[Param.HideActions]) !== null && _a !== void 0 ? _a : []),
|
|
@@ -12176,13 +12714,19 @@
|
|
|
12176
12714
|
}
|
|
12177
12715
|
queryParams[Param.DataPanelV2Enabled] = dataPanelV2;
|
|
12178
12716
|
queryParams[Param.DataSourceMode] = this.getDataSourceMode();
|
|
12179
|
-
queryParams[Param.UseLastSelectedDataSource] =
|
|
12717
|
+
queryParams[Param.UseLastSelectedDataSource] = useLastSelectedSources;
|
|
12718
|
+
if (dataSource || dataSources) {
|
|
12719
|
+
queryParams[Param.UseLastSelectedDataSource] = false;
|
|
12720
|
+
}
|
|
12180
12721
|
queryParams[Param.searchEmbed] = true;
|
|
12181
12722
|
let query = '';
|
|
12182
12723
|
const queryParamsString = getQueryParamString(queryParams, true);
|
|
12183
12724
|
if (queryParamsString) {
|
|
12184
12725
|
query = `?${queryParamsString}`;
|
|
12185
12726
|
}
|
|
12727
|
+
const parameterQuery = getRuntimeParameters(runtimeParameters || []);
|
|
12728
|
+
if (parameterQuery)
|
|
12729
|
+
query += `&${parameterQuery}`;
|
|
12186
12730
|
const filterQuery = getFilterQuery(runtimeFilters || []);
|
|
12187
12731
|
if (filterQuery && !excludeRuntimeFiltersfromURL) {
|
|
12188
12732
|
query += `&${filterQuery}`;
|
|
@@ -12227,6 +12771,7 @@
|
|
|
12227
12771
|
class SearchBarEmbed extends TsEmbed {
|
|
12228
12772
|
constructor(domSelector, viewConfig) {
|
|
12229
12773
|
super(domSelector);
|
|
12774
|
+
this.embedComponentType = 'SearchBarEmbed';
|
|
12230
12775
|
this.viewConfig = viewConfig;
|
|
12231
12776
|
}
|
|
12232
12777
|
/**
|
|
@@ -12237,7 +12782,7 @@
|
|
|
12237
12782
|
*/
|
|
12238
12783
|
getIFrameSrc() {
|
|
12239
12784
|
var _a;
|
|
12240
|
-
const { searchOptions, dataSource, dataSources } = this.viewConfig;
|
|
12785
|
+
const { searchOptions, dataSource, dataSources, useLastSelectedSources = false, } = this.viewConfig;
|
|
12241
12786
|
const path = 'search-bar-embed';
|
|
12242
12787
|
const queryParams = this.getBaseQueryParams();
|
|
12243
12788
|
queryParams[Param.HideActions] = [...((_a = queryParams[Param.HideActions]) !== null && _a !== void 0 ? _a : [])];
|
|
@@ -12253,7 +12798,10 @@
|
|
|
12253
12798
|
queryParams[Param.executeSearch] = true;
|
|
12254
12799
|
}
|
|
12255
12800
|
}
|
|
12256
|
-
queryParams[Param.UseLastSelectedDataSource] =
|
|
12801
|
+
queryParams[Param.UseLastSelectedDataSource] = useLastSelectedSources;
|
|
12802
|
+
if (dataSource || dataSources) {
|
|
12803
|
+
queryParams[Param.UseLastSelectedDataSource] = false;
|
|
12804
|
+
}
|
|
12257
12805
|
queryParams[Param.searchEmbed] = true;
|
|
12258
12806
|
let query = '';
|
|
12259
12807
|
const queryParamsString = getQueryParamString(queryParams, true);
|
|
@@ -12302,6 +12850,7 @@
|
|
|
12302
12850
|
// eslint-disable-next-line no-useless-constructor
|
|
12303
12851
|
constructor(domSelector, viewConfig) {
|
|
12304
12852
|
super(domSelector, viewConfig);
|
|
12853
|
+
this.embedComponentType = 'SageEmbed';
|
|
12305
12854
|
}
|
|
12306
12855
|
/**
|
|
12307
12856
|
* Constructs a map of parameters to be passed on to the
|
|
@@ -12363,6 +12912,7 @@
|
|
|
12363
12912
|
}
|
|
12364
12913
|
}
|
|
12365
12914
|
|
|
12915
|
+
exports.AnswerService = AnswerService;
|
|
12366
12916
|
exports.AppEmbed = AppEmbed;
|
|
12367
12917
|
exports.LiveboardEmbed = LiveboardEmbed;
|
|
12368
12918
|
exports.PinboardEmbed = PinboardEmbed;
|