@thoughtspot/visual-embed-sdk 1.41.0 → 1.42.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.
- package/README.md +2 -4
- package/cjs/package.json +8 -8
- package/cjs/src/authToken.d.ts +1 -0
- package/cjs/src/authToken.d.ts.map +1 -1
- package/cjs/src/authToken.js +13 -3
- package/cjs/src/authToken.js.map +1 -1
- package/cjs/src/authToken.spec.js +29 -0
- package/cjs/src/authToken.spec.js.map +1 -1
- package/cjs/src/css-variables.d.ts +54 -15
- package/cjs/src/css-variables.d.ts.map +1 -1
- package/cjs/src/embed/app.d.ts +16 -0
- package/cjs/src/embed/app.d.ts.map +1 -1
- package/cjs/src/embed/app.js +4 -1
- package/cjs/src/embed/app.js.map +1 -1
- package/cjs/src/embed/app.spec.js +10 -0
- package/cjs/src/embed/app.spec.js.map +1 -1
- package/cjs/src/embed/bodyless-conversation.d.ts +1 -0
- package/cjs/src/embed/bodyless-conversation.d.ts.map +1 -1
- package/cjs/src/embed/bodyless-conversation.js +7 -3
- package/cjs/src/embed/bodyless-conversation.js.map +1 -1
- package/cjs/src/embed/conversation.d.ts +3 -2
- package/cjs/src/embed/conversation.d.ts.map +1 -1
- package/cjs/src/embed/conversation.js +7 -2
- package/cjs/src/embed/conversation.js.map +1 -1
- package/cjs/src/embed/liveboard.d.ts +33 -0
- package/cjs/src/embed/liveboard.d.ts.map +1 -1
- package/cjs/src/embed/liveboard.js +13 -2
- package/cjs/src/embed/liveboard.js.map +1 -1
- package/cjs/src/embed/liveboard.spec.js +98 -11
- 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 +10 -6
- package/cjs/src/embed/sage.js.map +1 -1
- package/cjs/src/embed/sage.spec.js +20 -10
- package/cjs/src/embed/sage.spec.js.map +1 -1
- package/cjs/src/embed/search-bar.d.ts +1 -0
- package/cjs/src/embed/search-bar.d.ts.map +1 -1
- package/cjs/src/embed/search-bar.js +11 -7
- package/cjs/src/embed/search-bar.js.map +1 -1
- package/cjs/src/embed/search.d.ts +1 -0
- package/cjs/src/embed/search.d.ts.map +1 -1
- package/cjs/src/embed/search.js +7 -8
- package/cjs/src/embed/search.js.map +1 -1
- package/cjs/src/embed/search.spec.js +10 -10
- package/cjs/src/embed/search.spec.js.map +1 -1
- package/cjs/src/embed/ts-embed.d.ts +7 -5
- package/cjs/src/embed/ts-embed.d.ts.map +1 -1
- package/cjs/src/embed/ts-embed.js +26 -9
- package/cjs/src/embed/ts-embed.js.map +1 -1
- package/cjs/src/embed/ts-embed.spec.js.map +1 -1
- package/cjs/src/errors.d.ts +1 -0
- package/cjs/src/errors.d.ts.map +1 -1
- package/cjs/src/errors.js +1 -0
- package/cjs/src/errors.js.map +1 -1
- package/cjs/src/react/all-types-export.spec.js +1 -1
- package/cjs/src/react/all-types-export.spec.js.map +1 -1
- package/cjs/src/react/index.d.ts.map +1 -1
- package/cjs/src/react/index.js +2 -1
- package/cjs/src/react/index.js.map +1 -1
- package/cjs/src/react/index.spec.js +1 -1
- package/cjs/src/react/index.spec.js.map +1 -1
- package/cjs/src/react/util.js.map +1 -1
- package/cjs/src/react/util.spec.d.ts +2 -0
- package/cjs/src/react/util.spec.d.ts.map +1 -0
- package/cjs/src/react/util.spec.js +78 -0
- package/cjs/src/react/util.spec.js.map +1 -0
- package/cjs/src/types.d.ts +64 -9
- package/cjs/src/types.d.ts.map +1 -1
- package/cjs/src/types.js +59 -4
- package/cjs/src/types.js.map +1 -1
- package/cjs/src/utils.d.ts +14 -0
- package/cjs/src/utils.d.ts.map +1 -1
- package/cjs/src/utils.js +22 -1
- package/cjs/src/utils.js.map +1 -1
- package/cjs/src/utils.spec.js +10 -0
- package/cjs/src/utils.spec.js.map +1 -1
- package/dist/{index-B_mxAan8.js → index-BpSohedu.js} +1 -1
- package/dist/src/authToken.d.ts +1 -0
- package/dist/src/authToken.d.ts.map +1 -1
- package/dist/src/css-variables.d.ts +54 -15
- package/dist/src/css-variables.d.ts.map +1 -1
- package/dist/src/embed/app.d.ts +16 -0
- package/dist/src/embed/app.d.ts.map +1 -1
- package/dist/src/embed/bodyless-conversation.d.ts +1 -0
- package/dist/src/embed/bodyless-conversation.d.ts.map +1 -1
- package/dist/src/embed/conversation.d.ts +3 -2
- package/dist/src/embed/conversation.d.ts.map +1 -1
- package/dist/src/embed/liveboard.d.ts +33 -0
- 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 +1 -0
- package/dist/src/embed/search-bar.d.ts.map +1 -1
- package/dist/src/embed/search.d.ts +1 -0
- package/dist/src/embed/search.d.ts.map +1 -1
- package/dist/src/embed/ts-embed.d.ts +7 -5
- package/dist/src/embed/ts-embed.d.ts.map +1 -1
- package/dist/src/errors.d.ts +1 -0
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/react/index.d.ts.map +1 -1
- package/dist/src/react/util.spec.d.ts +2 -0
- package/dist/src/react/util.spec.d.ts.map +1 -0
- package/dist/src/types.d.ts +64 -9
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/utils.d.ts +14 -0
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/tsembed-react.es.js +180 -47
- package/dist/tsembed-react.js +179 -46
- package/dist/tsembed.es.js +178 -46
- package/dist/tsembed.js +177 -45
- package/dist/visual-embed-sdk-react-full.d.ts +9312 -9842
- package/dist/visual-embed-sdk-react.d.ts +9184 -9848
- package/dist/visual-embed-sdk.d.ts +9351 -9459
- package/lib/package.json +8 -8
- package/lib/src/authToken.d.ts +1 -0
- package/lib/src/authToken.d.ts.map +1 -1
- package/lib/src/authToken.js +11 -2
- package/lib/src/authToken.js.map +1 -1
- package/lib/src/authToken.spec.js +30 -1
- package/lib/src/authToken.spec.js.map +1 -1
- package/lib/src/css-variables.d.ts +54 -15
- package/lib/src/css-variables.d.ts.map +1 -1
- package/lib/src/embed/app.d.ts +16 -0
- package/lib/src/embed/app.d.ts.map +1 -1
- package/lib/src/embed/app.js +4 -1
- package/lib/src/embed/app.js.map +1 -1
- package/lib/src/embed/app.spec.js +10 -0
- package/lib/src/embed/app.spec.js.map +1 -1
- package/lib/src/embed/bodyless-conversation.d.ts +1 -0
- package/lib/src/embed/bodyless-conversation.d.ts.map +1 -1
- package/lib/src/embed/bodyless-conversation.js +7 -3
- package/lib/src/embed/bodyless-conversation.js.map +1 -1
- package/lib/src/embed/conversation.d.ts +3 -2
- package/lib/src/embed/conversation.d.ts.map +1 -1
- package/lib/src/embed/conversation.js +7 -2
- package/lib/src/embed/conversation.js.map +1 -1
- package/lib/src/embed/liveboard.d.ts +33 -0
- package/lib/src/embed/liveboard.d.ts.map +1 -1
- package/lib/src/embed/liveboard.js +13 -2
- package/lib/src/embed/liveboard.js.map +1 -1
- package/lib/src/embed/liveboard.spec.js +98 -11
- 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 +10 -6
- package/lib/src/embed/sage.js.map +1 -1
- package/lib/src/embed/sage.spec.js +20 -10
- package/lib/src/embed/sage.spec.js.map +1 -1
- package/lib/src/embed/search-bar.d.ts +1 -0
- package/lib/src/embed/search-bar.d.ts.map +1 -1
- package/lib/src/embed/search-bar.js +11 -7
- package/lib/src/embed/search-bar.js.map +1 -1
- package/lib/src/embed/search.d.ts +1 -0
- package/lib/src/embed/search.d.ts.map +1 -1
- package/lib/src/embed/search.js +7 -8
- package/lib/src/embed/search.js.map +1 -1
- package/lib/src/embed/search.spec.js +11 -11
- package/lib/src/embed/search.spec.js.map +1 -1
- package/lib/src/embed/ts-embed.d.ts +7 -5
- package/lib/src/embed/ts-embed.d.ts.map +1 -1
- package/lib/src/embed/ts-embed.js +26 -9
- package/lib/src/embed/ts-embed.js.map +1 -1
- package/lib/src/embed/ts-embed.spec.js.map +1 -1
- package/lib/src/errors.d.ts +1 -0
- package/lib/src/errors.d.ts.map +1 -1
- package/lib/src/errors.js +1 -0
- package/lib/src/errors.js.map +1 -1
- package/lib/src/react/all-types-export.spec.js +1 -1
- package/lib/src/react/all-types-export.spec.js.map +1 -1
- package/lib/src/react/index.d.ts.map +1 -1
- package/lib/src/react/index.js +2 -1
- package/lib/src/react/index.js.map +1 -1
- package/lib/src/react/index.spec.js +1 -1
- package/lib/src/react/index.spec.js.map +1 -1
- package/lib/src/react/util.js.map +1 -1
- package/lib/src/react/util.spec.d.ts +2 -0
- package/lib/src/react/util.spec.d.ts.map +1 -0
- package/lib/src/react/util.spec.js +76 -0
- package/lib/src/react/util.spec.js.map +1 -0
- package/lib/src/types.d.ts +64 -9
- package/lib/src/types.d.ts.map +1 -1
- package/lib/src/types.js +59 -4
- package/lib/src/types.js.map +1 -1
- package/lib/src/utils.d.ts +14 -0
- package/lib/src/utils.d.ts.map +1 -1
- package/lib/src/utils.js +20 -0
- package/lib/src/utils.js.map +1 -1
- package/lib/src/utils.spec.js +11 -1
- package/lib/src/utils.spec.js.map +1 -1
- package/package.json +8 -8
- package/src/authToken.spec.ts +48 -1
- package/src/authToken.ts +13 -2
- package/src/css-variables.ts +55 -17
- package/src/embed/app.spec.ts +14 -0
- package/src/embed/app.ts +23 -1
- package/src/embed/bodyless-conversation.ts +8 -3
- package/src/embed/conversation.ts +19 -4
- package/src/embed/liveboard.spec.ts +126 -14
- package/src/embed/liveboard.ts +72 -24
- package/src/embed/sage.spec.ts +24 -10
- package/src/embed/sage.ts +14 -9
- package/src/embed/search-bar.tsx +14 -7
- package/src/embed/search.spec.ts +13 -14
- package/src/embed/search.ts +19 -8
- package/src/embed/ts-embed.spec.ts +1 -1
- package/src/embed/ts-embed.ts +35 -13
- package/src/errors.ts +1 -0
- package/src/react/all-types-export.spec.ts +1 -1
- package/src/react/index.spec.tsx +1 -1
- package/src/react/index.tsx +4 -2
- package/src/react/util.spec.tsx +88 -0
- package/src/react/util.ts +3 -3
- package/src/types.ts +125 -69
- package/src/utils.spec.ts +18 -0
- package/src/utils.ts +21 -0
- package/lib/src/visual-embed-sdk.d.ts +0 -9705
package/src/react/util.ts
CHANGED
|
@@ -24,10 +24,10 @@ export function getViewPropsAndListeners<
|
|
|
24
24
|
return Object.keys(props).reduce(
|
|
25
25
|
(accu, key) => {
|
|
26
26
|
if (key.startsWith('on')) {
|
|
27
|
-
const eventName = key.substr(2);
|
|
28
|
-
accu.listeners[EmbedEvent[eventName]] = props[key];
|
|
27
|
+
const eventName = key.substr(2) as any;
|
|
28
|
+
(accu.listeners as any)[EmbedEvent[eventName as keyof typeof EmbedEvent] as any] = props[key as keyof T];
|
|
29
29
|
} else {
|
|
30
|
-
accu.viewConfig[key] = props[key];
|
|
30
|
+
(accu.viewConfig as any)[key] = props[key as keyof T];
|
|
31
31
|
}
|
|
32
32
|
return accu;
|
|
33
33
|
},
|
package/src/types.ts
CHANGED
|
@@ -231,12 +231,12 @@ export type DOMSelector = string | HTMLElement;
|
|
|
231
231
|
* Use {@link CustomCssVariables} or css rules.
|
|
232
232
|
*/
|
|
233
233
|
export interface customCssInterface {
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
234
|
+
/**
|
|
235
|
+
* The custom css variables, which can be set.
|
|
236
|
+
* The variables are available in the {@link CustomCssVariables}
|
|
237
|
+
* interface. For more information, see
|
|
238
|
+
* link:https://developers.thoughtspot.com/docs/css-variables-reference[CSS variable reference].
|
|
239
|
+
*/
|
|
240
240
|
variables?: CustomCssVariables;
|
|
241
241
|
/**
|
|
242
242
|
* Can be used to define a custom font face
|
|
@@ -648,7 +648,7 @@ export interface EmbedConfig {
|
|
|
648
648
|
* ```
|
|
649
649
|
* @version SDK 1.37.0 | ThoughtSpot: 10.8.0.cl
|
|
650
650
|
*/
|
|
651
|
-
customVariablesForThirdPartyTools?: Record<
|
|
651
|
+
customVariablesForThirdPartyTools?: Record<string, any>;
|
|
652
652
|
|
|
653
653
|
disablePreauthCache?: boolean;
|
|
654
654
|
|
|
@@ -695,7 +695,7 @@ export interface EmbedConfig {
|
|
|
695
695
|
}
|
|
696
696
|
|
|
697
697
|
// eslint-disable-next-line @typescript-eslint/no-empty-object-type
|
|
698
|
-
export interface LayoutConfig {}
|
|
698
|
+
export interface LayoutConfig { }
|
|
699
699
|
|
|
700
700
|
/**
|
|
701
701
|
* Embedded iframe configuration
|
|
@@ -1281,8 +1281,8 @@ export interface SearchLiveboardCommonViewConfig {
|
|
|
1281
1281
|
* Flag to control Data panel experience
|
|
1282
1282
|
*
|
|
1283
1283
|
* Supported embed types: `SageEmbed`, `AppEmbed`, `SearchBarEmbed`, `LiveboardEmbed`, `SearchEmbed`
|
|
1284
|
-
* @default
|
|
1285
|
-
* @version SDK: 1.
|
|
1284
|
+
* @default true
|
|
1285
|
+
* @version SDK: 1.43.0 | ThoughtSpot Cloud: 10.14.0.cl
|
|
1286
1286
|
* @example
|
|
1287
1287
|
* ```js
|
|
1288
1288
|
* // Replace <EmbedComponent> with embed component name. For example, SageEmbed, AppEmbed, or SearchBarEmbed
|
|
@@ -1481,21 +1481,21 @@ export interface LiveboardAppEmbedViewConfig {
|
|
|
1481
1481
|
* ```
|
|
1482
1482
|
*/
|
|
1483
1483
|
enableAskSage?: boolean;
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1484
|
+
/**
|
|
1485
|
+
* This flag is used to show or hide checkboxes for including or excluding
|
|
1486
|
+
* the cover and filters pages in the Liveboard PDF.
|
|
1487
|
+
*
|
|
1488
|
+
* Supported embed types: `AppEmbed`, `LiveboardEmbed`
|
|
1489
|
+
* @version SDK: 1.40.0 | ThoughtSpot:10.8.0.cl
|
|
1490
|
+
* @example
|
|
1491
|
+
* ```js
|
|
1492
|
+
* // Replace <EmbedComponent> with embed component name. For example, AppEmbed or LiveboardEmbed
|
|
1493
|
+
* const embed = new <EmbedComponent>('#tsEmbed', {
|
|
1494
|
+
* ... // other embed view config
|
|
1495
|
+
* coverAndFilterOptionInPDF: false,
|
|
1496
|
+
* })
|
|
1497
|
+
* ```
|
|
1498
|
+
*/
|
|
1499
1499
|
coverAndFilterOptionInPDF?: boolean;
|
|
1500
1500
|
/**
|
|
1501
1501
|
* This flag is used to enable or disable the XLSX/CSV download option for Liveboards.
|
|
@@ -1515,7 +1515,7 @@ export interface LiveboardAppEmbedViewConfig {
|
|
|
1515
1515
|
|
|
1516
1516
|
}
|
|
1517
1517
|
|
|
1518
|
-
export interface AllEmbedViewConfig extends BaseViewConfig, SearchLiveboardCommonViewConfig, HomePageConfig, LiveboardAppEmbedViewConfig {}
|
|
1518
|
+
export interface AllEmbedViewConfig extends BaseViewConfig, SearchLiveboardCommonViewConfig, HomePageConfig, LiveboardAppEmbedViewConfig { }
|
|
1519
1519
|
|
|
1520
1520
|
/**
|
|
1521
1521
|
* MessagePayload: Embed event payload: message type, data and status (start/end)
|
|
@@ -2774,25 +2774,25 @@ export enum EmbedEvent {
|
|
|
2774
2774
|
* ```
|
|
2775
2775
|
* @version SDK: 1.37.0 | ThoughtSpot: 10.8.0.cl
|
|
2776
2776
|
*/
|
|
2777
|
-
|
|
2778
|
-
|
|
2779
|
-
|
|
2780
|
-
|
|
2781
|
-
|
|
2782
|
-
|
|
2783
|
-
|
|
2784
|
-
|
|
2785
|
-
|
|
2786
|
-
|
|
2787
|
-
|
|
2788
|
-
|
|
2789
|
-
|
|
2777
|
+
TableVizRendered = 'TableVizRendered',
|
|
2778
|
+
/**
|
|
2779
|
+
* Emitted when the liveboard is created from pin modal or Liveboard list page.
|
|
2780
|
+
* You can use this event as a hook to trigger
|
|
2781
|
+
* other events on liveboard creation.
|
|
2782
|
+
*
|
|
2783
|
+
* ```js
|
|
2784
|
+
* liveboardEmbed.on(EmbedEvent.CreateLiveboard, (payload) => {
|
|
2785
|
+
* console.log('payload', payload);
|
|
2786
|
+
* })
|
|
2787
|
+
*```
|
|
2788
|
+
* @version SDK : 1.37.0 | ThoughtSpot: 10.8.0.cl
|
|
2789
|
+
*/
|
|
2790
2790
|
CreateLiveboard = 'createLiveboard',
|
|
2791
2791
|
/**
|
|
2792
2792
|
* Emitted when a user creates a Model.
|
|
2793
2793
|
* @version SDK : 1.37.0 | ThoughtSpot: 10.8.0.cl
|
|
2794
2794
|
*/
|
|
2795
|
-
|
|
2795
|
+
CreateModel = 'createModel',
|
|
2796
2796
|
/**
|
|
2797
2797
|
* @hidden
|
|
2798
2798
|
* Emitted when a user exits present mode.
|
|
@@ -3670,24 +3670,45 @@ export enum HostEvent {
|
|
|
3670
3670
|
* @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw
|
|
3671
3671
|
*/
|
|
3672
3672
|
Share = 'share',
|
|
3673
|
-
|
|
3674
|
-
|
|
3675
|
-
|
|
3676
|
-
|
|
3677
|
-
|
|
3678
|
-
|
|
3679
|
-
|
|
3680
|
-
|
|
3681
|
-
|
|
3682
|
-
|
|
3683
|
-
|
|
3684
|
-
|
|
3685
|
-
|
|
3686
|
-
|
|
3687
|
-
|
|
3688
|
-
|
|
3689
|
-
|
|
3690
|
-
|
|
3673
|
+
/**
|
|
3674
|
+
* Trigger the **Save** action on a Liveboard, Answer, or Spotter.
|
|
3675
|
+
* Saves the changes.
|
|
3676
|
+
*
|
|
3677
|
+
* @param - `vizId` refers to the Spotter Visualization Id used in Spotter embed.
|
|
3678
|
+
* It is required and can be retrieved from the data embed event.
|
|
3679
|
+
*
|
|
3680
|
+
* @example
|
|
3681
|
+
* ```js
|
|
3682
|
+
* // Save changes in a Liveboard
|
|
3683
|
+
* liveboardEmbed.trigger(HostEvent.Save)
|
|
3684
|
+
* ```
|
|
3685
|
+
*
|
|
3686
|
+
* ```js
|
|
3687
|
+
* // Save the current Answer in Search embed
|
|
3688
|
+
* searchEmbed.trigger(HostEvent.Save)
|
|
3689
|
+
* ```
|
|
3690
|
+
*
|
|
3691
|
+
* ```js
|
|
3692
|
+
* // Save an Answer in Spotter (requires vizId)
|
|
3693
|
+
* spotterEmbed.trigger(HostEvent.Save, {
|
|
3694
|
+
* vizId: "730496d6-6903-4601-937e-2c691821af3c"
|
|
3695
|
+
* })
|
|
3696
|
+
* ```
|
|
3697
|
+
*
|
|
3698
|
+
* ```js
|
|
3699
|
+
* // How to get the vizId in Spotter?
|
|
3700
|
+
*
|
|
3701
|
+
* // You can use the Data event dispatched on each answer creation to get the vizId.
|
|
3702
|
+
* let latestSpotterVizId = '';
|
|
3703
|
+
* spotterEmbed.on(EmbedEvent.Data, (payload) => {
|
|
3704
|
+
* latestSpotterVizId = payload.data.id;
|
|
3705
|
+
* });
|
|
3706
|
+
*
|
|
3707
|
+
* spotterEmbed.trigger(HostEvent.Save, { vizId: latestSpotterVizId });
|
|
3708
|
+
* ```
|
|
3709
|
+
*
|
|
3710
|
+
* @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw
|
|
3711
|
+
*/
|
|
3691
3712
|
Save = 'save',
|
|
3692
3713
|
/**
|
|
3693
3714
|
* Trigger the **Sync to Sheets** action on an embedded visualization or Answer
|
|
@@ -3823,7 +3844,7 @@ export enum HostEvent {
|
|
|
3823
3844
|
* column: "Date",
|
|
3824
3845
|
* oper: 'EQ',
|
|
3825
3846
|
* values: ["2023-07-31"],
|
|
3826
|
-
*
|
|
3847
|
+
* type: "EXACT_DATE"
|
|
3827
3848
|
* }]
|
|
3828
3849
|
* });
|
|
3829
3850
|
* ```
|
|
@@ -4015,7 +4036,7 @@ export enum HostEvent {
|
|
|
4015
4036
|
*```
|
|
4016
4037
|
* @version SDK: 1.36.0 | ThoughtSpot: 10.6.0.cl
|
|
4017
4038
|
*/
|
|
4018
|
-
|
|
4039
|
+
InfoSuccess = 'InfoSuccess',
|
|
4019
4040
|
/**
|
|
4020
4041
|
* Trigger the save action for an Answer.
|
|
4021
4042
|
* To programmatically save an answer without opening the
|
|
@@ -4169,6 +4190,17 @@ export enum HostEvent {
|
|
|
4169
4190
|
* @version SDK: 1.41.0 | ThoughtSpot: 10.12.0.cl
|
|
4170
4191
|
*/
|
|
4171
4192
|
AskSpotter = 'AskSpotter',
|
|
4193
|
+
|
|
4194
|
+
/**
|
|
4195
|
+
* @hidden
|
|
4196
|
+
* Triggers the update of the embed params.
|
|
4197
|
+
*
|
|
4198
|
+
* @example
|
|
4199
|
+
* ```js
|
|
4200
|
+
* liveboardEmbed.trigger(HostEvent.UpdateEmbedParams, viewConfig);
|
|
4201
|
+
* ```
|
|
4202
|
+
*/
|
|
4203
|
+
UpdateEmbedParams = 'updateEmbedParams',
|
|
4172
4204
|
}
|
|
4173
4205
|
|
|
4174
4206
|
/**
|
|
@@ -4317,6 +4349,7 @@ export enum Param {
|
|
|
4317
4349
|
IsLazyLoadingForEmbedEnabled = 'isLazyLoadingForEmbedEnabled',
|
|
4318
4350
|
RootMarginForLazyLoad = 'rootMarginForLazyLoad',
|
|
4319
4351
|
LiveboardXLSXCSVDownload = 'isLiveboardXLSXCSVDownloadEnabled',
|
|
4352
|
+
isPNGInScheduledEmailsEnabled = 'isPNGInScheduledEmailsEnabled',
|
|
4320
4353
|
}
|
|
4321
4354
|
|
|
4322
4355
|
/**
|
|
@@ -5616,6 +5649,29 @@ export enum Action {
|
|
|
5616
5649
|
* @version SDK: 1.41.0 | ThoughtSpot Cloud: 10.13.0.cl
|
|
5617
5650
|
*/
|
|
5618
5651
|
SpotterTokenQuickEdit = 'SpotterTokenQuickEdit',
|
|
5652
|
+
/**
|
|
5653
|
+
* The **PNG screenshot in email** option in the schedule email dialog.
|
|
5654
|
+
* Includes a PNG screenshot in the notification email body.
|
|
5655
|
+
* @example
|
|
5656
|
+
* ```js
|
|
5657
|
+
* disabledActions: [Action.PngScreenshotInEmail]
|
|
5658
|
+
* ```
|
|
5659
|
+
* ```
|
|
5660
|
+
* @version SDK: 1.42.0 | ThoughtSpot Cloud: 10.14.0.cl
|
|
5661
|
+
*/
|
|
5662
|
+
PngScreenshotInEmail = 'pngScreenshotInEmail',
|
|
5663
|
+
/**
|
|
5664
|
+
* The **Remove attachment** action in the schedule email dialog.
|
|
5665
|
+
* Removes an attachment from the email configuration.
|
|
5666
|
+
* @example
|
|
5667
|
+
* ```js
|
|
5668
|
+
* disabledActions: [Action.RemoveAttachment]
|
|
5669
|
+
* ```
|
|
5670
|
+
* ```
|
|
5671
|
+
* ```
|
|
5672
|
+
* @version SDK: 1.42.0 | ThoughtSpot Cloud: 10.14.0.cl
|
|
5673
|
+
*/
|
|
5674
|
+
RemoveAttachment = 'removeAttachment',
|
|
5619
5675
|
}
|
|
5620
5676
|
|
|
5621
5677
|
export interface AnswerServiceType {
|
|
@@ -5647,15 +5703,15 @@ export interface ColumnValue {
|
|
|
5647
5703
|
[key: string]: any;
|
|
5648
5704
|
};
|
|
5649
5705
|
value:
|
|
5650
|
-
|
|
5651
|
-
|
|
5652
|
-
|
|
5653
|
-
|
|
5654
|
-
|
|
5655
|
-
|
|
5656
|
-
|
|
5657
|
-
|
|
5658
|
-
|
|
5706
|
+
| string
|
|
5707
|
+
| number
|
|
5708
|
+
| boolean
|
|
5709
|
+
| {
|
|
5710
|
+
v: {
|
|
5711
|
+
s: number;
|
|
5712
|
+
e: number;
|
|
5713
|
+
};
|
|
5714
|
+
};
|
|
5659
5715
|
}
|
|
5660
5716
|
|
|
5661
5717
|
export interface VizPoint {
|
package/src/utils.spec.ts
CHANGED
|
@@ -18,6 +18,7 @@ import {
|
|
|
18
18
|
getTypeFromValue,
|
|
19
19
|
arrayIncludesString,
|
|
20
20
|
calculateVisibleElementData,
|
|
21
|
+
formatTemplate,
|
|
21
22
|
} from './utils';
|
|
22
23
|
import { RuntimeFilterOp } from './types';
|
|
23
24
|
import { logger } from './utils/logger';
|
|
@@ -718,3 +719,20 @@ describe('calculateVisibleElementData', () => {
|
|
|
718
719
|
});
|
|
719
720
|
});
|
|
720
721
|
});
|
|
722
|
+
|
|
723
|
+
describe('formatTemplate', () => {
|
|
724
|
+
it('should replace placeholders with provided values', () => {
|
|
725
|
+
expect(
|
|
726
|
+
formatTemplate('Hello {name}, you are {age} years old', { name: 'John', age: 30 }),
|
|
727
|
+
).toBe('Hello John, you are 30 years old');
|
|
728
|
+
expect(
|
|
729
|
+
formatTemplate('Expected {type}, but received {actual}', {
|
|
730
|
+
type: 'string',
|
|
731
|
+
actual: 'number',
|
|
732
|
+
}),
|
|
733
|
+
).toBe('Expected string, but received number');
|
|
734
|
+
expect(
|
|
735
|
+
formatTemplate('Hello {name}, you are {age} years old', { name: 'John' }),
|
|
736
|
+
).toBe('Hello John, you are {age} years old');
|
|
737
|
+
});
|
|
738
|
+
});
|
package/src/utils.ts
CHANGED
|
@@ -499,3 +499,24 @@ export const calculateVisibleElementData = (element: HTMLElement) => {
|
|
|
499
499
|
|
|
500
500
|
return data;
|
|
501
501
|
}
|
|
502
|
+
|
|
503
|
+
/**
|
|
504
|
+
* Replaces placeholders in a template string with provided values.
|
|
505
|
+
* Placeholders should be in the format {key}.
|
|
506
|
+
* @param template - The template string with placeholders
|
|
507
|
+
* @param values - An object containing key-value pairs to replace placeholders
|
|
508
|
+
* @returns The template string with placeholders replaced
|
|
509
|
+
* @example
|
|
510
|
+
* formatTemplate('Hello {name}, you are {age} years old', { name: 'John', age: 30 })
|
|
511
|
+
* // Returns: 'Hello John, you are 30 years old'
|
|
512
|
+
*
|
|
513
|
+
* formatTemplate('Expected {type}, but received {actual}', { type: 'string', actual: 'number' })
|
|
514
|
+
* // Returns: 'Expected string, but received number'
|
|
515
|
+
*/
|
|
516
|
+
export const formatTemplate = (template: string, values: Record<string, any>): string => {
|
|
517
|
+
// This regex /\{(\w+)\}/g finds all placeholders in the format {word}
|
|
518
|
+
// and captures the word inside the braces for replacement.
|
|
519
|
+
return template.replace(/\{(\w+)\}/g, (match, key) => {
|
|
520
|
+
return values[key] !== undefined ? String(values[key]) : match;
|
|
521
|
+
});
|
|
522
|
+
};
|