@thoughtspot/visual-embed-sdk 1.39.2-spotter-agent → 1.39.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/package.json +1 -1
- package/cjs/src/embed/app.d.ts +19 -15
- package/cjs/src/embed/app.d.ts.map +1 -1
- package/cjs/src/embed/app.js +21 -1
- package/cjs/src/embed/app.js.map +1 -1
- package/cjs/src/embed/app.spec.js +38 -0
- package/cjs/src/embed/app.spec.js.map +1 -1
- package/cjs/src/embed/bodyless-conversation.d.ts +4 -0
- package/cjs/src/embed/bodyless-conversation.d.ts.map +1 -1
- package/cjs/src/embed/bodyless-conversation.js +7 -1
- package/cjs/src/embed/bodyless-conversation.js.map +1 -1
- package/cjs/src/index.d.ts +2 -2
- package/cjs/src/index.d.ts.map +1 -1
- package/cjs/src/index.js +2 -1
- package/cjs/src/index.js.map +1 -1
- package/cjs/src/react/index.d.ts +2 -0
- package/cjs/src/react/index.d.ts.map +1 -1
- package/cjs/src/react/index.spec.js +3 -1
- package/cjs/src/react/index.spec.js.map +1 -1
- package/cjs/src/types.d.ts +228 -4
- package/cjs/src/types.d.ts.map +1 -1
- package/cjs/src/types.js +211 -1
- package/cjs/src/types.js.map +1 -1
- package/cjs/src/utils/global-styles.js +1 -1
- package/cjs/src/utils/graphql/nlsService/conversation-service.d.ts.map +1 -1
- package/cjs/src/utils/graphql/nlsService/conversation-service.js +5 -1
- package/cjs/src/utils/graphql/nlsService/conversation-service.js.map +1 -1
- package/dist/{index-Fhk1V_Gw.js → index-ZrE8YYq8.js} +1 -1
- package/dist/src/embed/app.d.ts +19 -15
- package/dist/src/embed/app.d.ts.map +1 -1
- package/dist/src/embed/bodyless-conversation.d.ts +4 -0
- package/dist/src/embed/bodyless-conversation.d.ts.map +1 -1
- package/dist/src/index.d.ts +2 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/react/index.d.ts +2 -0
- package/dist/src/react/index.d.ts.map +1 -1
- package/dist/src/types.d.ts +228 -4
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/utils/graphql/nlsService/conversation-service.d.ts.map +1 -1
- package/dist/tsembed-react.es.js +247 -7
- package/dist/tsembed-react.js +246 -6
- package/dist/tsembed.es.js +248 -8
- package/dist/tsembed.js +246 -6
- package/dist/visual-embed-sdk-react-full.d.ts +254 -20
- package/dist/visual-embed-sdk-react.d.ts +254 -20
- package/dist/visual-embed-sdk.d.ts +252 -20
- package/lib/package.json +1 -1
- package/lib/src/embed/app.d.ts +19 -15
- package/lib/src/embed/app.d.ts.map +1 -1
- package/lib/src/embed/app.js +20 -0
- package/lib/src/embed/app.js.map +1 -1
- package/lib/src/embed/app.spec.js +39 -1
- package/lib/src/embed/app.spec.js.map +1 -1
- package/lib/src/embed/bodyless-conversation.d.ts +4 -0
- package/lib/src/embed/bodyless-conversation.d.ts.map +1 -1
- package/lib/src/embed/bodyless-conversation.js +7 -1
- package/lib/src/embed/bodyless-conversation.js.map +1 -1
- package/lib/src/index.d.ts +2 -2
- package/lib/src/index.d.ts.map +1 -1
- package/lib/src/index.js +2 -2
- package/lib/src/index.js.map +1 -1
- package/lib/src/react/index.d.ts +2 -0
- package/lib/src/react/index.d.ts.map +1 -1
- package/lib/src/react/index.spec.js +3 -1
- package/lib/src/react/index.spec.js.map +1 -1
- package/lib/src/types.d.ts +228 -4
- package/lib/src/types.d.ts.map +1 -1
- package/lib/src/types.js +211 -1
- package/lib/src/types.js.map +1 -1
- package/lib/src/utils/global-styles.js +1 -1
- package/lib/src/utils/graphql/nlsService/conversation-service.d.ts.map +1 -1
- package/lib/src/utils/graphql/nlsService/conversation-service.js +5 -1
- package/lib/src/utils/graphql/nlsService/conversation-service.js.map +1 -1
- package/lib/src/visual-embed-sdk.d.ts +253 -21
- package/package.json +1 -1
- package/src/embed/app.spec.ts +54 -0
- package/src/embed/app.ts +25 -15
- package/src/embed/bodyless-conversation.ts +10 -0
- package/src/index.ts +2 -0
- package/src/react/index.spec.tsx +3 -1
- package/src/types.ts +226 -1
- package/src/utils/global-styles.ts +1 -1
- package/src/utils/graphql/nlsService/conversation-service.ts +5 -1
- package/cjs/src/pages/embed-test.page.d.ts +0 -8
- package/cjs/src/pages/embed-test.page.d.ts.map +0 -1
- package/cjs/src/pages/embed-test.page.js +0 -20
- package/cjs/src/pages/embed-test.page.js.map +0 -1
- package/cjs/src/pages/home.page.d.ts +0 -6
- package/cjs/src/pages/home.page.d.ts.map +0 -1
- package/cjs/src/pages/home.page.js +0 -12
- package/cjs/src/pages/home.page.js.map +0 -1
- package/cjs/src/pages/login.page.d.ts +0 -15
- package/cjs/src/pages/login.page.d.ts.map +0 -1
- package/cjs/src/pages/login.page.js +0 -22
- package/cjs/src/pages/login.page.js.map +0 -1
- package/cjs/src/tests/auth.test.d.ts +0 -1
- package/cjs/src/tests/auth.test.d.ts.map +0 -1
- package/cjs/src/tests/auth.test.js +0 -1
- package/cjs/src/tests/auth.test.js.map +0 -1
- package/cjs/src/tests/e2e/auth.spec.d.ts +0 -2
- package/cjs/src/tests/e2e/auth.spec.d.ts.map +0 -1
- package/cjs/src/tests/e2e/auth.spec.js +0 -54
- package/cjs/src/tests/e2e/auth.spec.js.map +0 -1
- package/dist/index-2QHwuA-G.js +0 -7371
- package/dist/index-Cj4BVGHL.js +0 -7371
- package/dist/index-DUaG1OG2.js +0 -7447
- package/dist/index-DnIvX1FR.js +0 -7371
- package/dist/index-OuiZF3zE.js +0 -7371
package/src/types.ts
CHANGED
|
@@ -217,6 +217,12 @@ export enum HomeLeftNavItem {
|
|
|
217
217
|
* @version SDK: 1.40.0 | ThoughtSpot: 10.11.0.cl
|
|
218
218
|
*/
|
|
219
219
|
Spotter = 'spotter',
|
|
220
|
+
/**
|
|
221
|
+
* Favorites option in the insights left navigation,
|
|
222
|
+
* available when new navigation V3 is enabled.
|
|
223
|
+
* @version SDK: 1.41.0 | ThoughtSpot: 10.12.0.cl
|
|
224
|
+
*/
|
|
225
|
+
Favorites = 'favorites',
|
|
220
226
|
}
|
|
221
227
|
export type DOMSelector = string | HTMLElement;
|
|
222
228
|
|
|
@@ -1010,6 +1016,20 @@ export interface BaseViewConfig {
|
|
|
1010
1016
|
* @private
|
|
1011
1017
|
*/
|
|
1012
1018
|
insertInToSlide?: boolean;
|
|
1019
|
+
/**
|
|
1020
|
+
* Show alert messages and toast messages in the embed.
|
|
1021
|
+
* Supported embed in all embed types.
|
|
1022
|
+
*
|
|
1023
|
+
* @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw
|
|
1024
|
+
* @example
|
|
1025
|
+
* ```js
|
|
1026
|
+
* const embed = new AppEmbed('#tsEmbed', {
|
|
1027
|
+
* ... // other embed view config
|
|
1028
|
+
* showAlerts:true,
|
|
1029
|
+
* })
|
|
1030
|
+
* ```
|
|
1031
|
+
*/
|
|
1032
|
+
showAlerts?: boolean;
|
|
1013
1033
|
}
|
|
1014
1034
|
|
|
1015
1035
|
/**
|
|
@@ -2687,6 +2707,83 @@ export enum EmbedEvent {
|
|
|
2687
2707
|
* @version SDK : 1.40.0 | ThoughtSpot: 10.11.0.cl
|
|
2688
2708
|
*/
|
|
2689
2709
|
ExitPresentMode = 'exitPresentMode',
|
|
2710
|
+
/**
|
|
2711
|
+
* Emitted when spotter response is text data
|
|
2712
|
+
* @example
|
|
2713
|
+
* ```js
|
|
2714
|
+
* spotterEmbed.on(EmbedEvent.SpotterData, (payload) => {
|
|
2715
|
+
* console.log('payload', payload);
|
|
2716
|
+
* })
|
|
2717
|
+
*```
|
|
2718
|
+
* @version SDK: 1.41.0 | ThoughtSpot: 10.12.0.cl
|
|
2719
|
+
*/
|
|
2720
|
+
SpotterData = 'SpotterData',
|
|
2721
|
+
/**
|
|
2722
|
+
* Emitted when user opens up the worksheet preview modal in spotter embed.
|
|
2723
|
+
* @example
|
|
2724
|
+
* ```js
|
|
2725
|
+
* spotterEmbed.on(EmbedEvent.PreviewSpotterData, (payload) => {
|
|
2726
|
+
* console.log('payload', payload);
|
|
2727
|
+
* })
|
|
2728
|
+
*```
|
|
2729
|
+
* @version SDK: 1.41.0 | ThoughtSpot: 10.12.0.cl
|
|
2730
|
+
*/
|
|
2731
|
+
PreviewSpotterData = 'PreviewSpotterData',
|
|
2732
|
+
/**
|
|
2733
|
+
* Emitted when the spotter query is triggered in spotter embed.
|
|
2734
|
+
* @example
|
|
2735
|
+
* ```js
|
|
2736
|
+
* spotterEmbed.on(EmbedEvent.SpotterQueryTriggered, (payload) => {
|
|
2737
|
+
* console.log('payload', payload);
|
|
2738
|
+
* })
|
|
2739
|
+
*```
|
|
2740
|
+
* @version SDK: 1.41.0 | ThoughtSpot: 10.12.0.cl
|
|
2741
|
+
*/
|
|
2742
|
+
SpotterQueryTriggered = 'SpotterQueryTriggered',
|
|
2743
|
+
/**
|
|
2744
|
+
* Emitted when the last spotter query is edited in spotter embed.
|
|
2745
|
+
* @example
|
|
2746
|
+
* ```js
|
|
2747
|
+
* spotterEmbed.on(EmbedEvent.LastPromptEdited, (payload) => {
|
|
2748
|
+
* console.log('payload', payload);
|
|
2749
|
+
* })
|
|
2750
|
+
*```
|
|
2751
|
+
* @version SDK: 1.41.0 | ThoughtSpot: 10.12.0.cl
|
|
2752
|
+
*/
|
|
2753
|
+
LastPromptEdited = 'LastPromptEdited',
|
|
2754
|
+
/**
|
|
2755
|
+
* Emitted when the last spotter query is deleted in spotter embed.
|
|
2756
|
+
* @example
|
|
2757
|
+
* ```js
|
|
2758
|
+
* spotterEmbed.on(EmbedEvent.LastPromptDeleted, (payload) => {
|
|
2759
|
+
* console.log('payload', payload);
|
|
2760
|
+
* })
|
|
2761
|
+
*```
|
|
2762
|
+
* @version SDK: 1.41.0 | ThoughtSpot: 10.12.0.cl
|
|
2763
|
+
*/
|
|
2764
|
+
LastPromptDeleted = 'LastPromptDeleted',
|
|
2765
|
+
/**
|
|
2766
|
+
* Emitted when the coversation is reset in spotter embed.
|
|
2767
|
+
* @example
|
|
2768
|
+
* ```js
|
|
2769
|
+
* spotterEmbed.on(EmbedEvent.ResetSpotterConversation, (payload) => {
|
|
2770
|
+
* console.log('payload', payload);
|
|
2771
|
+
* })
|
|
2772
|
+
*```
|
|
2773
|
+
* @version SDK: 1.41.0 | ThoughtSpot: 10.12.0.cl
|
|
2774
|
+
*/
|
|
2775
|
+
ResetSpotterConversation = 'ResetSpotterConversation',
|
|
2776
|
+
/**
|
|
2777
|
+
* Emitted when the *Spotter* is initialized.
|
|
2778
|
+
* @example
|
|
2779
|
+
* ```js
|
|
2780
|
+
* spotterEmbed.on(EmbedEvent.SpotterInit, (payload) => {
|
|
2781
|
+
* console.log('payload', payload);
|
|
2782
|
+
* })
|
|
2783
|
+
*```
|
|
2784
|
+
* @version SDK: 1.41.0 | ThoughtSpot: 10.12.0.cl
|
|
2785
|
+
*/
|
|
2786
|
+
SpotterInit = 'SpotterInit'
|
|
2690
2787
|
}
|
|
2691
2788
|
|
|
2692
2789
|
/**
|
|
@@ -2977,6 +3074,7 @@ export enum HostEvent {
|
|
|
2977
3074
|
* @param
|
|
2978
3075
|
* `vizId`- GUID of the saved Answer or visualization to pin to a Liveboard.
|
|
2979
3076
|
* Optional when pinning a new chart or table generated from a Search query.
|
|
3077
|
+
* **Required** in Spotter Embed.
|
|
2980
3078
|
* @param
|
|
2981
3079
|
* `liveboardID` - GUID of the Liveboard to pin an Answer. If there is no Liveboard,
|
|
2982
3080
|
* specify the `newLiveboardName` parameter to create a new Liveboard.
|
|
@@ -3024,6 +3122,12 @@ export enum HostEvent {
|
|
|
3024
3122
|
* ```js
|
|
3025
3123
|
* appEmbed.trigger(HostEvent.Pin)
|
|
3026
3124
|
* ```
|
|
3125
|
+
* @example
|
|
3126
|
+
* ```js
|
|
3127
|
+
* const pinResponse = await spotterEmbed.trigger(HostEvent.Pin, {
|
|
3128
|
+
* vizId:'730496d6-6903-4601-937e-2c691821af3c'
|
|
3129
|
+
* });
|
|
3130
|
+
* ```
|
|
3027
3131
|
* @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw
|
|
3028
3132
|
*/
|
|
3029
3133
|
Pin = 'pin',
|
|
@@ -3117,6 +3221,12 @@ export enum HostEvent {
|
|
|
3117
3221
|
* ```js
|
|
3118
3222
|
* searchEmbed.trigger(HostEvent.MakeACopy)
|
|
3119
3223
|
* ```
|
|
3224
|
+
* @example
|
|
3225
|
+
* ```js
|
|
3226
|
+
* const pinResponse = await spotterEmbed.trigger(HostEvent.MakeACopy, {
|
|
3227
|
+
* vizId:'730496d6-6903-4601-937e-2c691821af3c'
|
|
3228
|
+
* });
|
|
3229
|
+
* ```
|
|
3120
3230
|
* @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw
|
|
3121
3231
|
*/
|
|
3122
3232
|
MakeACopy = 'makeACopy',
|
|
@@ -3189,6 +3299,7 @@ export enum HostEvent {
|
|
|
3189
3299
|
* This event is not supported in visualization embed and search embed.
|
|
3190
3300
|
* @param - object - To trigger the action for a specific visualization
|
|
3191
3301
|
* in Liveboard embed, pass in `vizId` as a key.
|
|
3302
|
+
* **Required** in Spotter embed.
|
|
3192
3303
|
* @example
|
|
3193
3304
|
* ```js
|
|
3194
3305
|
* liveboardEmbed.trigger(HostEvent.Edit)
|
|
@@ -3197,6 +3308,12 @@ export enum HostEvent {
|
|
|
3197
3308
|
* liveboardEmbed.trigger(HostEvent.Edit, {vizId:
|
|
3198
3309
|
* '730496d6-6903-4601-937e-2c691821af3c'})
|
|
3199
3310
|
* ```
|
|
3311
|
+
* @example
|
|
3312
|
+
* ```js
|
|
3313
|
+
* const pinResponse = await spotterEmbed.trigger(HostEvent.Edit, {
|
|
3314
|
+
* vizId:'730496d6-6903-4601-937e-2c691821af3c'
|
|
3315
|
+
* });
|
|
3316
|
+
* ```
|
|
3200
3317
|
* @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw
|
|
3201
3318
|
*/
|
|
3202
3319
|
Edit = 'edit',
|
|
@@ -3244,6 +3361,16 @@ export enum HostEvent {
|
|
|
3244
3361
|
* );
|
|
3245
3362
|
* })
|
|
3246
3363
|
* ```
|
|
3364
|
+
* @example
|
|
3365
|
+
* ```js
|
|
3366
|
+
* spotterEmbed.trigger(HostEvent.GetTML, {
|
|
3367
|
+
* vizId: '730496d6-6903-4601-937e-2c691821af3c'
|
|
3368
|
+
* }).then((tml) => {
|
|
3369
|
+
* console.log(
|
|
3370
|
+
* tml.answer.search_query // TML representation of the search query
|
|
3371
|
+
* );
|
|
3372
|
+
* })
|
|
3373
|
+
* ```
|
|
3247
3374
|
* @version SDK: 1.18.0 | ThoughtSpot: 8.10.0.cl, 9.0.1.sw
|
|
3248
3375
|
* @important
|
|
3249
3376
|
*/
|
|
@@ -3331,7 +3458,12 @@ export enum HostEvent {
|
|
|
3331
3458
|
* vizEmbed.trigger(HostEvent.DownloadAsPng)
|
|
3332
3459
|
*
|
|
3333
3460
|
* searchEmbed.trigger(HostEvent.DownloadAsPng)
|
|
3461
|
+
*
|
|
3462
|
+
* spotterEmbed.trigger(HostEvent.DownloadAsPng, {
|
|
3463
|
+
* vizId:"730496d6-6903-4601-937e-2c691821af3c"
|
|
3464
|
+
* })
|
|
3334
3465
|
* ```
|
|
3466
|
+
*
|
|
3335
3467
|
* @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.4.1.sw
|
|
3336
3468
|
*/
|
|
3337
3469
|
DownloadAsPng = 'downloadAsPng',
|
|
@@ -3349,6 +3481,11 @@ export enum HostEvent {
|
|
|
3349
3481
|
* ```js
|
|
3350
3482
|
* searchEmbed.trigger(HostEvent.DownloadAsCsv)
|
|
3351
3483
|
* ```
|
|
3484
|
+
* ```js
|
|
3485
|
+
* spotterEmbed.trigger(HostEvent.DownloadAsCsv, {
|
|
3486
|
+
* vizId:"730496d6-6903-4601-937e-2c691821af3c"
|
|
3487
|
+
* })
|
|
3488
|
+
* ```
|
|
3352
3489
|
* @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw
|
|
3353
3490
|
*/
|
|
3354
3491
|
DownloadAsCsv = 'downloadAsCSV',
|
|
@@ -3366,6 +3503,11 @@ export enum HostEvent {
|
|
|
3366
3503
|
* ```js
|
|
3367
3504
|
* searchEmbed.trigger(HostEvent.DownloadAsXlsx)
|
|
3368
3505
|
* ```
|
|
3506
|
+
* ```js
|
|
3507
|
+
* spotterEmbed.trigger(HostEvent.downloadAsXLSX, {
|
|
3508
|
+
* vizId:"730496d6-6903-4601-937e-2c691821af3c"
|
|
3509
|
+
* })
|
|
3510
|
+
* ```
|
|
3369
3511
|
* @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw
|
|
3370
3512
|
*/
|
|
3371
3513
|
DownloadAsXlsx = 'downloadAsXLSX',
|
|
@@ -3385,6 +3527,7 @@ export enum HostEvent {
|
|
|
3385
3527
|
/**
|
|
3386
3528
|
* Trigger the **Save** action on a Liveboard or Answer.
|
|
3387
3529
|
* Saves the changes.
|
|
3530
|
+
* @param - `vizId` is required in Spotter Embed.
|
|
3388
3531
|
* @example
|
|
3389
3532
|
* ```js
|
|
3390
3533
|
* liveboardEmbed.trigger(HostEvent.Save)
|
|
@@ -3392,6 +3535,11 @@ export enum HostEvent {
|
|
|
3392
3535
|
* ```js
|
|
3393
3536
|
* searchEmbed.trigger(HostEvent.Save)
|
|
3394
3537
|
* ```
|
|
3538
|
+
* ```js
|
|
3539
|
+
* spotterEmbed.trigger(HostEvent.Save, {
|
|
3540
|
+
* vizId:"730496d6-6903-4601-937e-2c691821af3c"
|
|
3541
|
+
* })
|
|
3542
|
+
* ```
|
|
3395
3543
|
* @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw
|
|
3396
3544
|
*/
|
|
3397
3545
|
Save = 'save',
|
|
@@ -3675,7 +3823,7 @@ export enum HostEvent {
|
|
|
3675
3823
|
ResetLiveboardPersonalisedView = 'ResetLiveboardPersonalisedView',
|
|
3676
3824
|
/**
|
|
3677
3825
|
* Triggers an action to update Parameter values on embedded
|
|
3678
|
-
* Answers and
|
|
3826
|
+
* Answers, Liveboard and Spotter answer in Edit mode.
|
|
3679
3827
|
*
|
|
3680
3828
|
* @example
|
|
3681
3829
|
* ```js
|
|
@@ -3694,6 +3842,13 @@ export enum HostEvent {
|
|
|
3694
3842
|
* console.log('parameters', parameter);
|
|
3695
3843
|
* });
|
|
3696
3844
|
*```
|
|
3845
|
+
*```js
|
|
3846
|
+
* spotterEmbed.trigger(HostEvent.GetParameters, {
|
|
3847
|
+
* vizId: '730496d6-6903-4601-937e-2c691821af3c'
|
|
3848
|
+
* }).then((parameter) => {
|
|
3849
|
+
* console.log('parameters', parameter);
|
|
3850
|
+
* });
|
|
3851
|
+
*```
|
|
3697
3852
|
* @version SDK: 1.29.0 | ThoughtSpot: 10.1.0.cl, 10.1.0.sw
|
|
3698
3853
|
*/
|
|
3699
3854
|
GetParameters = 'GetParameters',
|
|
@@ -3761,6 +3916,64 @@ export enum HostEvent {
|
|
|
3761
3916
|
* @version SDK: 1.37.0 | ThoughtSpot: 10.8.0.cl
|
|
3762
3917
|
*/
|
|
3763
3918
|
TransformTableVizData = 'TransformTableVizData',
|
|
3919
|
+
/**
|
|
3920
|
+
* Triggers a search operation with the search tokens specified in
|
|
3921
|
+
* the search query string in spotter embed.
|
|
3922
|
+
* @param - `queryString`: Text string in Natural Language format
|
|
3923
|
+
* @param - `executeSearch`: Boolean to execute search and update search query
|
|
3924
|
+
* @example
|
|
3925
|
+
* ```js
|
|
3926
|
+
* spotterEmbed.trigger(HostEvent.SpotterSearch, {
|
|
3927
|
+
* query: 'revenue per year',
|
|
3928
|
+
* executeSearch: true,
|
|
3929
|
+
* })
|
|
3930
|
+
* ```
|
|
3931
|
+
*/
|
|
3932
|
+
SpotterSearch = 'SpotterSearch',
|
|
3933
|
+
/**
|
|
3934
|
+
* Edits the last prompt in spotter embed.
|
|
3935
|
+
* @param - `query`: Text string
|
|
3936
|
+
* @example
|
|
3937
|
+
* ```js
|
|
3938
|
+
* spotterEmbed.trigger(HostEvent.EditLastPrompt, "revenue per year");
|
|
3939
|
+
* ```
|
|
3940
|
+
*/
|
|
3941
|
+
EditLastPrompt = 'EditLastPrompt',
|
|
3942
|
+
/**
|
|
3943
|
+
* Opens the Worksheet preview modal in Spotter Embed.
|
|
3944
|
+
* @example
|
|
3945
|
+
* ```js
|
|
3946
|
+
* spotterEmbed.trigger(HostEvent.PreviewSpotterData);
|
|
3947
|
+
* ```
|
|
3948
|
+
*/
|
|
3949
|
+
PreviewSpotterData = 'PreviewSpotterData',
|
|
3950
|
+
/**
|
|
3951
|
+
* Resets the Spotter Embed Conversation.
|
|
3952
|
+
* @example
|
|
3953
|
+
* ```js
|
|
3954
|
+
* spotterEmbed.trigger(HostEvent.ResetSpotterConversation);
|
|
3955
|
+
* ```
|
|
3956
|
+
*/
|
|
3957
|
+
ResetSpotterConversation = 'ResetSpotterConversation',
|
|
3958
|
+
/**
|
|
3959
|
+
* Deletes the last prompt in spotter embed.
|
|
3960
|
+
* @example
|
|
3961
|
+
* ```js
|
|
3962
|
+
* spotterEmbed.trigger(HostEvent.DeleteLastPrompt);
|
|
3963
|
+
* ```
|
|
3964
|
+
*/
|
|
3965
|
+
DeleteLastPrompt = 'DeleteLastPrompt',
|
|
3966
|
+
/**
|
|
3967
|
+
* Toggle the visualization to chart or table view.
|
|
3968
|
+
* @param - `vizId ` In Spotter Embed, vizId is required.
|
|
3969
|
+
* @example
|
|
3970
|
+
* ```js
|
|
3971
|
+
* spotterEmbed.trigger(HostEvent.AnswerChartSwitcher, {
|
|
3972
|
+
* vizId:"'b535c760-8bbe-4e6f-bb26-af56b4129a1e'"
|
|
3973
|
+
* });
|
|
3974
|
+
*```
|
|
3975
|
+
*/
|
|
3976
|
+
AnswerChartSwitcher = 'answerChartSwitcher',
|
|
3764
3977
|
/**
|
|
3765
3978
|
* @hidden
|
|
3766
3979
|
* Trigger exit from presentation mode when user exits fullscreen.
|
|
@@ -3771,6 +3984,17 @@ export enum HostEvent {
|
|
|
3771
3984
|
* @version SDK: 1.40.0 | ThoughtSpot: 10.11.0.cl
|
|
3772
3985
|
*/
|
|
3773
3986
|
ExitPresentMode = 'exitPresentMode',
|
|
3987
|
+
|
|
3988
|
+
/**
|
|
3989
|
+
* Trigger the *Ask Sage* action for visualizations
|
|
3990
|
+
* @example
|
|
3991
|
+
* ```js
|
|
3992
|
+
* liveboardEmbed.trigger(HostEvent.AskSpotter,
|
|
3993
|
+
* {containerId:'730496d6-6903-4601-937e-2c691821af3c'})
|
|
3994
|
+
* ```
|
|
3995
|
+
* @version SDK: 1.41.0 | ThoughtSpot: 10.12.0.cl
|
|
3996
|
+
*/
|
|
3997
|
+
AskSpotter = 'askSpotter',
|
|
3774
3998
|
}
|
|
3775
3999
|
|
|
3776
4000
|
/**
|
|
@@ -3876,6 +4100,7 @@ export enum Param {
|
|
|
3876
4100
|
Query = 'query',
|
|
3877
4101
|
HideHomepageLeftNav = 'hideHomepageLeftNav',
|
|
3878
4102
|
ModularHomeExperienceEnabled = 'modularHomeExperience',
|
|
4103
|
+
ListPageVersion = 'listpageVersion',
|
|
3879
4104
|
PendoTrackingKey = 'additionalPendoKey',
|
|
3880
4105
|
LiveboardHeaderSticky = 'isLiveboardHeaderSticky',
|
|
3881
4106
|
IsProductTour = 'isProductTour',
|
|
@@ -5,7 +5,7 @@ export const addPreviewStylesIfNotPresent = () => {
|
|
|
5
5
|
}
|
|
6
6
|
|
|
7
7
|
const previewStyles = `
|
|
8
|
-
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/ag-grid-community@32.0.2/styles/ag-grid.min.css">
|
|
8
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/ag-grid-community@32.0.2/styles/ag-grid.min.css" integrity="sha384-PvEsKa6emq5KYa9mf+Q7eYF5C2OCacYzZ+hBngp21NA4o1A9iU9smnytEmqUFbEZ" crossorigin="anonymous">
|
|
9
9
|
<style id="ts-preview-style">
|
|
10
10
|
.ts-viz-preview-loader {
|
|
11
11
|
position: absolute;
|
|
@@ -66,7 +66,11 @@ export class Conversation {
|
|
|
66
66
|
return {
|
|
67
67
|
convId: this.conversationId,
|
|
68
68
|
messageId: responses[0].msgId,
|
|
69
|
-
data:
|
|
69
|
+
data: {
|
|
70
|
+
...data.asstRespData.nlsAnsData.sageQuerySuggestions[0],
|
|
71
|
+
convId: this.conversationId,
|
|
72
|
+
messageId: responses[0].msgId,
|
|
73
|
+
},
|
|
70
74
|
error: null,
|
|
71
75
|
};
|
|
72
76
|
} catch (error) {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"embed-test.page.d.ts","sourceRoot":"","sources":["../../../src/pages/embed-test.page.ts"],"names":[],"mappings":"AAAA,qBAAa,aAAa;IACV,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,GAAG;IAEvB,IAAI;IAIJ,kBAAkB;IAIlB,eAAe;CAIxB"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.EmbedTestPage = void 0;
|
|
4
|
-
class EmbedTestPage {
|
|
5
|
-
constructor(page) {
|
|
6
|
-
this.page = page;
|
|
7
|
-
}
|
|
8
|
-
async goto() {
|
|
9
|
-
// Implement navigation logic
|
|
10
|
-
}
|
|
11
|
-
async waitForFrameToLoad() {
|
|
12
|
-
// Implement frame load wait logic
|
|
13
|
-
}
|
|
14
|
-
async switchToTSFrame() {
|
|
15
|
-
// Implement frame switching logic
|
|
16
|
-
return this.page;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
exports.EmbedTestPage = EmbedTestPage;
|
|
20
|
-
//# sourceMappingURL=embed-test.page.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"embed-test.page.js","sourceRoot":"","sources":["../../../src/pages/embed-test.page.ts"],"names":[],"mappings":";;;AAAA,MAAa,aAAa;IACtB,YAAoB,IAAS;QAAT,SAAI,GAAJ,IAAI,CAAK;IAAG,CAAC;IAEjC,KAAK,CAAC,IAAI;QACN,6BAA6B;IACjC,CAAC;IAED,KAAK,CAAC,kBAAkB;QACpB,kCAAkC;IACtC,CAAC;IAED,KAAK,CAAC,eAAe;QACjB,kCAAkC;QAClC,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;CACJ;AAfD,sCAeC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"home.page.d.ts","sourceRoot":"","sources":["../../../src/pages/home.page.ts"],"names":[],"mappings":"AAAA,qBAAa,QAAQ;IACjB,SAAS;;MAEP;CACL"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.HomePage = void 0;
|
|
4
|
-
class HomePage {
|
|
5
|
-
constructor() {
|
|
6
|
-
this.selectors = {
|
|
7
|
-
homePage: '[data-testid="home-page"]'
|
|
8
|
-
};
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
exports.HomePage = HomePage;
|
|
12
|
-
//# sourceMappingURL=home.page.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"home.page.js","sourceRoot":"","sources":["../../../src/pages/home.page.ts"],"names":[],"mappings":";;;AAAA,MAAa,QAAQ;IAArB;QACI,cAAS,GAAG;YACR,QAAQ,EAAE,2BAA2B;SACxC,CAAC;IACN,CAAC;CAAA;AAJD,4BAIC"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export declare class LoginPage {
|
|
2
|
-
private page;
|
|
3
|
-
selectors: {
|
|
4
|
-
userAvatar: string;
|
|
5
|
-
signOutButtonInProfileMenu: string;
|
|
6
|
-
loginPageLogo: string;
|
|
7
|
-
};
|
|
8
|
-
utils: {
|
|
9
|
-
getRandomName: () => string;
|
|
10
|
-
getStrongPassword: () => string;
|
|
11
|
-
};
|
|
12
|
-
constructor(page: any);
|
|
13
|
-
loginAsUser(username: string, password: string): Promise<void>;
|
|
14
|
-
}
|
|
15
|
-
//# sourceMappingURL=login.page.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"login.page.d.ts","sourceRoot":"","sources":["../../../src/pages/login.page.ts"],"names":[],"mappings":"AAAA,qBAAa,SAAS;IAYN,OAAO,CAAC,IAAI;IAXxB,SAAS;;;;MAIP;IAEF,KAAK;;;MAGH;gBAEkB,IAAI,EAAE,GAAG;IAEvB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;CAGvD"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.LoginPage = void 0;
|
|
4
|
-
class LoginPage {
|
|
5
|
-
constructor(page) {
|
|
6
|
-
this.page = page;
|
|
7
|
-
this.selectors = {
|
|
8
|
-
userAvatar: '[data-testid="user-avatar"]',
|
|
9
|
-
signOutButtonInProfileMenu: '[data-testid="sign-out-button"]',
|
|
10
|
-
loginPageLogo: '[data-testid="login-logo"]'
|
|
11
|
-
};
|
|
12
|
-
this.utils = {
|
|
13
|
-
getRandomName: () => `testUser${Math.random().toString(36).substring(7)}`,
|
|
14
|
-
getStrongPassword: () => 'Test@123'
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
async loginAsUser(username, password) {
|
|
18
|
-
// Implement login logic here
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
exports.LoginPage = LoginPage;
|
|
22
|
-
//# sourceMappingURL=login.page.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"login.page.js","sourceRoot":"","sources":["../../../src/pages/login.page.ts"],"names":[],"mappings":";;;AAAA,MAAa,SAAS;IAYlB,YAAoB,IAAS;QAAT,SAAI,GAAJ,IAAI,CAAK;QAX7B,cAAS,GAAG;YACR,UAAU,EAAE,6BAA6B;YACzC,0BAA0B,EAAE,iCAAiC;YAC7D,aAAa,EAAE,4BAA4B;SAC9C,CAAC;QAEF,UAAK,GAAG;YACJ,aAAa,EAAE,GAAG,EAAE,CAAC,WAAW,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;YACzE,iBAAiB,EAAE,GAAG,EAAE,CAAC,UAAU;SACtC,CAAC;IAE8B,CAAC;IAEjC,KAAK,CAAC,WAAW,CAAC,QAAgB,EAAE,QAAgB;QAChD,6BAA6B;IACjC,CAAC;CACJ;AAjBD,8BAiBC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
//# sourceMappingURL=auth.test.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth.test.d.ts","sourceRoot":"","sources":["../../../src/tests/auth.test.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
//# sourceMappingURL=auth.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth.test.js","sourceRoot":"","sources":["../../../src/tests/auth.test.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth.spec.d.ts","sourceRoot":"","sources":["../../../../src/tests/e2e/auth.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const test_1 = require("@playwright/test");
|
|
4
|
-
const login_page_1 = require("src/pages/login.page");
|
|
5
|
-
const home_page_1 = require("src/pages/home.page");
|
|
6
|
-
const embed_test_page_1 = require("src/pages/embed-test.page");
|
|
7
|
-
test_1.test.describe('Authentication flows', () => {
|
|
8
|
-
let loginPage;
|
|
9
|
-
let homePage;
|
|
10
|
-
let embedTestPage;
|
|
11
|
-
test_1.test.beforeEach(async ({ page }) => {
|
|
12
|
-
loginPage = new login_page_1.LoginPage(page);
|
|
13
|
-
homePage = new home_page_1.HomePage();
|
|
14
|
-
embedTestPage = new embed_test_page_1.EmbedTestPage(page);
|
|
15
|
-
await embedTestPage.goto();
|
|
16
|
-
});
|
|
17
|
-
(0, test_1.test)('should handle logout and login sequence correctly', async () => {
|
|
18
|
-
// Wait for initial load
|
|
19
|
-
await embedTestPage.waitForFrameToLoad();
|
|
20
|
-
const frameLoc = await embedTestPage.switchToTSFrame();
|
|
21
|
-
// Verify user is logged in
|
|
22
|
-
await (0, test_1.expect)(frameLoc.locator(homePage.selectors.homePage)).toBeVisible();
|
|
23
|
-
// Perform logout
|
|
24
|
-
await frameLoc.locator(loginPage.selectors.userAvatar).click();
|
|
25
|
-
await frameLoc.locator(loginPage.selectors.signOutButtonInProfileMenu).click();
|
|
26
|
-
// Verify logout
|
|
27
|
-
await (0, test_1.expect)(frameLoc.locator(loginPage.selectors.loginPageLogo)).toBeVisible();
|
|
28
|
-
// Perform login with new credentials
|
|
29
|
-
const username = loginPage.utils.getRandomName();
|
|
30
|
-
const password = loginPage.utils.getStrongPassword();
|
|
31
|
-
await loginPage.loginAsUser(username, password);
|
|
32
|
-
// Verify successful login
|
|
33
|
-
await (0, test_1.expect)(frameLoc.locator(homePage.selectors.homePage)).toBeVisible();
|
|
34
|
-
await (0, test_1.expect)(frameLoc.locator(loginPage.selectors.userAvatar)).toBeVisible();
|
|
35
|
-
});
|
|
36
|
-
(0, test_1.test)('should handle multiple logout-login cycles', async () => {
|
|
37
|
-
await embedTestPage.waitForFrameToLoad();
|
|
38
|
-
const frameLoc = await embedTestPage.switchToTSFrame();
|
|
39
|
-
// First cycle
|
|
40
|
-
await (0, test_1.expect)(frameLoc.locator(homePage.selectors.homePage)).toBeVisible();
|
|
41
|
-
await frameLoc.locator(loginPage.selectors.userAvatar).click();
|
|
42
|
-
await frameLoc.locator(loginPage.selectors.signOutButtonInProfileMenu).click();
|
|
43
|
-
await (0, test_1.expect)(frameLoc.locator(loginPage.selectors.loginPageLogo)).toBeVisible();
|
|
44
|
-
await loginPage.loginAsUser(loginPage.utils.getRandomName(), loginPage.utils.getStrongPassword());
|
|
45
|
-
await (0, test_1.expect)(frameLoc.locator(homePage.selectors.homePage)).toBeVisible();
|
|
46
|
-
// Second cycle
|
|
47
|
-
await frameLoc.locator(loginPage.selectors.userAvatar).click();
|
|
48
|
-
await frameLoc.locator(loginPage.selectors.signOutButtonInProfileMenu).click();
|
|
49
|
-
await (0, test_1.expect)(frameLoc.locator(loginPage.selectors.loginPageLogo)).toBeVisible();
|
|
50
|
-
await loginPage.loginAsUser(loginPage.utils.getRandomName(), loginPage.utils.getStrongPassword());
|
|
51
|
-
await (0, test_1.expect)(frameLoc.locator(homePage.selectors.homePage)).toBeVisible();
|
|
52
|
-
});
|
|
53
|
-
});
|
|
54
|
-
//# sourceMappingURL=auth.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth.spec.js","sourceRoot":"","sources":["../../../../src/tests/e2e/auth.spec.ts"],"names":[],"mappings":";;AAAA,2CAAgD;AAEhD,qDAAiD;AACjD,mDAA+C;AAC/C,+DAA0D;AAE1D,WAAI,CAAC,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACvC,IAAI,SAAoB,CAAC;IACzB,IAAI,QAAkB,CAAC;IACvB,IAAI,aAA4B,CAAC;IAEjC,WAAI,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,EAAkB,EAAE,EAAE;QAC/C,SAAS,GAAG,IAAI,sBAAS,CAAC,IAAI,CAAC,CAAC;QAChC,QAAQ,GAAG,IAAI,oBAAQ,EAAE,CAAC;QAC1B,aAAa,GAAG,IAAI,+BAAa,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,IAAA,WAAI,EAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QACjE,wBAAwB;QACxB,MAAM,aAAa,CAAC,kBAAkB,EAAE,CAAC;QACzC,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,eAAe,EAAE,CAAC;QAEvD,2BAA2B;QAC3B,MAAM,IAAA,aAAM,EAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAE1E,iBAAiB;QACjB,MAAM,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,CAAC;QAC/D,MAAM,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC,KAAK,EAAE,CAAC;QAE/E,gBAAgB;QAChB,MAAM,IAAA,aAAM,EAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAEhF,qCAAqC;QACrC,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;QACjD,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;QACrD,MAAM,SAAS,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAEhD,0BAA0B;QAC1B,MAAM,IAAA,aAAM,EAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAC1E,MAAM,IAAA,aAAM,EAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IACjF,CAAC,CAAC,CAAC;IAEH,IAAA,WAAI,EAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,aAAa,CAAC,kBAAkB,EAAE,CAAC;QACzC,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,eAAe,EAAE,CAAC;QAEvD,cAAc;QACd,MAAM,IAAA,aAAM,EAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAC1E,MAAM,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,CAAC;QAC/D,MAAM,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC,KAAK,EAAE,CAAC;QAC/E,MAAM,IAAA,aAAM,EAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAChF,MAAM,SAAS,CAAC,WAAW,CACvB,SAAS,CAAC,KAAK,CAAC,aAAa,EAAE,EAC/B,SAAS,CAAC,KAAK,CAAC,iBAAiB,EAAE,CACtC,CAAC;QACF,MAAM,IAAA,aAAM,EAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAE1E,eAAe;QACf,MAAM,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,CAAC;QAC/D,MAAM,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC,KAAK,EAAE,CAAC;QAC/E,MAAM,IAAA,aAAM,EAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAChF,MAAM,SAAS,CAAC,WAAW,CACvB,SAAS,CAAC,KAAK,CAAC,aAAa,EAAE,EAC/B,SAAS,CAAC,KAAK,CAAC,iBAAiB,EAAE,CACtC,CAAC;QACF,MAAM,IAAA,aAAM,EAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAC9E,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|