@thoughtspot/visual-embed-sdk 1.39.2 → 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.
Files changed (157) hide show
  1. package/cjs/package.json +1 -1
  2. package/cjs/src/config.spec.js +9 -0
  3. package/cjs/src/config.spec.js.map +1 -1
  4. package/cjs/src/embed/app.d.ts +19 -15
  5. package/cjs/src/embed/app.d.ts.map +1 -1
  6. package/cjs/src/embed/app.js +23 -2
  7. package/cjs/src/embed/app.js.map +1 -1
  8. package/cjs/src/embed/app.spec.js +56 -8
  9. package/cjs/src/embed/app.spec.js.map +1 -1
  10. package/cjs/src/embed/bodyless-conversation.d.ts +23 -7
  11. package/cjs/src/embed/bodyless-conversation.d.ts.map +1 -1
  12. package/cjs/src/embed/bodyless-conversation.js +31 -5
  13. package/cjs/src/embed/bodyless-conversation.js.map +1 -1
  14. package/cjs/src/embed/bodyless-conversation.spec.js +8 -190
  15. package/cjs/src/embed/bodyless-conversation.spec.js.map +1 -1
  16. package/cjs/src/embed/conversation.spec.js +28 -0
  17. package/cjs/src/embed/conversation.spec.js.map +1 -1
  18. package/cjs/src/embed/embedConfig.d.ts +9 -7
  19. package/cjs/src/embed/embedConfig.d.ts.map +1 -1
  20. package/cjs/src/embed/embedConfig.js +9 -7
  21. package/cjs/src/embed/embedConfig.js.map +1 -1
  22. package/cjs/src/embed/liveboard.d.ts +0 -17
  23. package/cjs/src/embed/liveboard.d.ts.map +1 -1
  24. package/cjs/src/embed/liveboard.js +2 -4
  25. package/cjs/src/embed/liveboard.js.map +1 -1
  26. package/cjs/src/embed/liveboard.spec.js +12 -11
  27. package/cjs/src/embed/liveboard.spec.js.map +1 -1
  28. package/cjs/src/errors.d.ts +1 -0
  29. package/cjs/src/errors.d.ts.map +1 -1
  30. package/cjs/src/errors.js +1 -0
  31. package/cjs/src/errors.js.map +1 -1
  32. package/cjs/src/index.d.ts +2 -2
  33. package/cjs/src/index.d.ts.map +1 -1
  34. package/cjs/src/index.js +2 -1
  35. package/cjs/src/index.js.map +1 -1
  36. package/cjs/src/react/all-types-export.d.ts +1 -1
  37. package/cjs/src/react/all-types-export.d.ts.map +1 -1
  38. package/cjs/src/react/all-types-export.js +3 -2
  39. package/cjs/src/react/all-types-export.js.map +1 -1
  40. package/cjs/src/react/index.d.ts +73 -20
  41. package/cjs/src/react/index.d.ts.map +1 -1
  42. package/cjs/src/react/index.js +79 -42
  43. package/cjs/src/react/index.js.map +1 -1
  44. package/cjs/src/react/index.spec.js +438 -100
  45. package/cjs/src/react/index.spec.js.map +1 -1
  46. package/cjs/src/types.d.ts +262 -6
  47. package/cjs/src/types.d.ts.map +1 -1
  48. package/cjs/src/types.js +228 -2
  49. package/cjs/src/types.js.map +1 -1
  50. package/cjs/src/utils/global-styles.js +1 -1
  51. package/cjs/src/utils/graphql/nlsService/conversation-service.d.ts.map +1 -1
  52. package/cjs/src/utils/graphql/nlsService/conversation-service.js +7 -1
  53. package/cjs/src/utils/graphql/nlsService/conversation-service.js.map +1 -1
  54. package/cjs/src/utils.spec.js +25 -0
  55. package/cjs/src/utils.spec.js.map +1 -1
  56. package/dist/{index-CmEQfuE3.js → index-ZrE8YYq8.js} +1 -1
  57. package/dist/src/embed/app.d.ts +19 -15
  58. package/dist/src/embed/app.d.ts.map +1 -1
  59. package/dist/src/embed/bodyless-conversation.d.ts +23 -7
  60. package/dist/src/embed/bodyless-conversation.d.ts.map +1 -1
  61. package/dist/src/embed/embedConfig.d.ts +9 -7
  62. package/dist/src/embed/embedConfig.d.ts.map +1 -1
  63. package/dist/src/embed/liveboard.d.ts +0 -17
  64. package/dist/src/embed/liveboard.d.ts.map +1 -1
  65. package/dist/src/errors.d.ts +1 -0
  66. package/dist/src/errors.d.ts.map +1 -1
  67. package/dist/src/index.d.ts +2 -2
  68. package/dist/src/index.d.ts.map +1 -1
  69. package/dist/src/react/all-types-export.d.ts +1 -1
  70. package/dist/src/react/all-types-export.d.ts.map +1 -1
  71. package/dist/src/react/index.d.ts +73 -20
  72. package/dist/src/react/index.d.ts.map +1 -1
  73. package/dist/src/types.d.ts +262 -6
  74. package/dist/src/types.d.ts.map +1 -1
  75. package/dist/src/utils/graphql/nlsService/conversation-service.d.ts.map +1 -1
  76. package/dist/tsembed-react.es.js +385 -71
  77. package/dist/tsembed-react.js +385 -69
  78. package/dist/tsembed.es.js +303 -24
  79. package/dist/tsembed.js +301 -22
  80. package/dist/visual-embed-sdk-react-full.d.ts +386 -72
  81. package/dist/visual-embed-sdk-react.d.ts +386 -72
  82. package/dist/visual-embed-sdk.d.ts +314 -53
  83. package/lib/package.json +1 -1
  84. package/lib/src/config.spec.js +9 -0
  85. package/lib/src/config.spec.js.map +1 -1
  86. package/lib/src/embed/app.d.ts +19 -15
  87. package/lib/src/embed/app.d.ts.map +1 -1
  88. package/lib/src/embed/app.js +22 -1
  89. package/lib/src/embed/app.js.map +1 -1
  90. package/lib/src/embed/app.spec.js +58 -10
  91. package/lib/src/embed/app.spec.js.map +1 -1
  92. package/lib/src/embed/bodyless-conversation.d.ts +23 -7
  93. package/lib/src/embed/bodyless-conversation.d.ts.map +1 -1
  94. package/lib/src/embed/bodyless-conversation.js +30 -5
  95. package/lib/src/embed/bodyless-conversation.js.map +1 -1
  96. package/lib/src/embed/bodyless-conversation.spec.js +9 -191
  97. package/lib/src/embed/bodyless-conversation.spec.js.map +1 -1
  98. package/lib/src/embed/conversation.spec.js +30 -2
  99. package/lib/src/embed/conversation.spec.js.map +1 -1
  100. package/lib/src/embed/embedConfig.d.ts +9 -7
  101. package/lib/src/embed/embedConfig.d.ts.map +1 -1
  102. package/lib/src/embed/embedConfig.js +9 -7
  103. package/lib/src/embed/embedConfig.js.map +1 -1
  104. package/lib/src/embed/liveboard.d.ts +0 -17
  105. package/lib/src/embed/liveboard.d.ts.map +1 -1
  106. package/lib/src/embed/liveboard.js +2 -4
  107. package/lib/src/embed/liveboard.js.map +1 -1
  108. package/lib/src/embed/liveboard.spec.js +12 -11
  109. package/lib/src/embed/liveboard.spec.js.map +1 -1
  110. package/lib/src/errors.d.ts +1 -0
  111. package/lib/src/errors.d.ts.map +1 -1
  112. package/lib/src/errors.js +1 -0
  113. package/lib/src/errors.js.map +1 -1
  114. package/lib/src/index.d.ts +2 -2
  115. package/lib/src/index.d.ts.map +1 -1
  116. package/lib/src/index.js +2 -2
  117. package/lib/src/index.js.map +1 -1
  118. package/lib/src/react/all-types-export.d.ts +1 -1
  119. package/lib/src/react/all-types-export.d.ts.map +1 -1
  120. package/lib/src/react/all-types-export.js +1 -1
  121. package/lib/src/react/all-types-export.js.map +1 -1
  122. package/lib/src/react/index.d.ts +73 -20
  123. package/lib/src/react/index.d.ts.map +1 -1
  124. package/lib/src/react/index.js +79 -43
  125. package/lib/src/react/index.js.map +1 -1
  126. package/lib/src/react/index.spec.js +441 -103
  127. package/lib/src/react/index.spec.js.map +1 -1
  128. package/lib/src/types.d.ts +262 -6
  129. package/lib/src/types.d.ts.map +1 -1
  130. package/lib/src/types.js +228 -2
  131. package/lib/src/types.js.map +1 -1
  132. package/lib/src/utils/global-styles.js +1 -1
  133. package/lib/src/utils/graphql/nlsService/conversation-service.d.ts.map +1 -1
  134. package/lib/src/utils/graphql/nlsService/conversation-service.js +7 -1
  135. package/lib/src/utils/graphql/nlsService/conversation-service.js.map +1 -1
  136. package/lib/src/utils.spec.js +26 -1
  137. package/lib/src/utils.spec.js.map +1 -1
  138. package/lib/src/visual-embed-sdk.d.ts +315 -54
  139. package/package.json +1 -1
  140. package/src/config.spec.ts +11 -0
  141. package/src/embed/app.spec.ts +90 -23
  142. package/src/embed/app.ts +27 -15
  143. package/src/embed/bodyless-conversation.spec.ts +9 -203
  144. package/src/embed/bodyless-conversation.ts +34 -10
  145. package/src/embed/conversation.spec.ts +40 -2
  146. package/src/embed/embedConfig.ts +10 -8
  147. package/src/embed/liveboard.spec.ts +5 -4
  148. package/src/embed/liveboard.ts +2 -22
  149. package/src/errors.ts +1 -0
  150. package/src/index.ts +2 -0
  151. package/src/react/all-types-export.ts +2 -1
  152. package/src/react/index.spec.tsx +558 -157
  153. package/src/react/index.tsx +117 -51
  154. package/src/types.ts +301 -44
  155. package/src/utils/global-styles.ts +1 -1
  156. package/src/utils/graphql/nlsService/conversation-service.ts +7 -1
  157. package/src/utils.spec.ts +29 -0
@@ -12,7 +12,7 @@ import EventEmitter from 'eventemitter3';
12
12
  * @summary ThoughtSpot Visual Embed SDK
13
13
  * @author Ayon Ghosh <ayon.ghosh@thoughtspot.com>
14
14
  */
15
- export { init, logout, prefetch, executeTML, exportTML, executeTMLInput, exportTMLInput, getEmbedConfig as getInitConfig, getSessionInfo, tokenizedFetch, getAnswerFromQuery, createLiveboardWithAnswers, SearchEmbed, SearchBarEmbed, PinboardEmbed, LiveboardEmbed, SageEmbed, AppEmbed, SpotterAgentEmbed, SpotterAgentEmbedViewConfig, BodylessConversationViewConfig, BodylessConversation, SpotterEmbed, SpotterEmbedViewConfig, ConversationViewConfig, ConversationEmbed, AuthFailureType, AuthStatus, AuthEvent, AuthEventEmitter, AnswerService, SessionInterface, UnderlyingDataPoint, Page, AuthType, RuntimeFilter, RuntimeFilterOp, EmbedEvent, HostEvent, DataSourceVisualMode, Action, ContextMenuTriggerOptions, EmbedConfig, SearchViewConfig, SearchBarViewConfig, LiveboardViewConfig, SageViewConfig, AppViewConfig, PrefetchFeatures, FrameParams, HomeLeftNavItem, HomepageModule, DOMSelector, MessageOptions, MessageCallback, MessagePayload, CustomisationsInterface, CustomStyles, customCssInterface, CustomCssVariables, RuntimeParameter, LogLevel, uploadMixpanelEvent, MIXPANEL_EVENT, HomePageSearchBarMode, PrimaryNavbarVersion, HomePage, VizPoint, CustomActionPayload, UIPassthroughEvent, ListPageColumns, DataPanelCustomColumnGroupsAccordionState, };
15
+ export { init, logout, prefetch, executeTML, exportTML, executeTMLInput, exportTMLInput, getEmbedConfig as getInitConfig, getSessionInfo, tokenizedFetch, getAnswerFromQuery, createLiveboardWithAnswers, SearchEmbed, SearchBarEmbed, PinboardEmbed, LiveboardEmbed, SageEmbed, AppEmbed, SpotterAgentEmbed, SpotterAgentEmbedViewConfig, BodylessConversationViewConfig, BodylessConversation, SpotterEmbed, SpotterEmbedViewConfig, ConversationViewConfig, ConversationEmbed, AuthFailureType, AuthStatus, AuthEvent, AuthEventEmitter, AnswerService, SessionInterface, UnderlyingDataPoint, Page, AuthType, RuntimeFilter, RuntimeFilterOp, EmbedEvent, HostEvent, DataSourceVisualMode, Action, ContextMenuTriggerOptions, EmbedConfig, SearchViewConfig, SearchBarViewConfig, LiveboardViewConfig, SageViewConfig, AppViewConfig, PrefetchFeatures, FrameParams, HomeLeftNavItem, HomepageModule, DOMSelector, MessageOptions, MessageCallback, MessagePayload, CustomisationsInterface, CustomStyles, customCssInterface, CustomCssVariables, RuntimeParameter, LogLevel, uploadMixpanelEvent, MIXPANEL_EVENT, HomePageSearchBarMode, PrimaryNavbarVersion, HomePage, ListPage, VizPoint, CustomActionPayload, UIPassthroughEvent, ListPageColumns, DataPanelCustomColumnGroupsAccordionState, };
16
16
 
17
17
  /**
18
18
  * Copyright (c) 2022
@@ -106,6 +106,21 @@ export enum HomePage {
106
106
  */
107
107
  Modular = "v2"
108
108
  }
109
+ /**
110
+ * Define the version of the list page
111
+ * @version SDK: 1.40.0 | ThoughtSpot: 10.12.0.cl
112
+ */
113
+ export enum ListPage {
114
+ /**
115
+ * List (v2) is the traditional List Experience.
116
+ * It serves as the foundational version of the list page.
117
+ */
118
+ List = "v2",
119
+ /**
120
+ * ListWithUXChanges (v3) introduces the new updated list page with UX changes.
121
+ */
122
+ ListWithUXChanges = "v3"
123
+ }
109
124
  /**
110
125
  * Define the discovery experience
111
126
  * @version SDK: 1.40.0 | ThoughtSpot: 10.11.0.cl
@@ -119,6 +134,10 @@ export interface DiscoveryExperience {
119
134
  * homePage determines the version of the home page.
120
135
  */
121
136
  homePage?: HomePage;
137
+ /**
138
+ * listPageVersion determines the version of the list page.
139
+ */
140
+ listPageVersion?: ListPage;
122
141
  }
123
142
  /**
124
143
  * The view configuration for full app embedding.
@@ -490,21 +509,6 @@ export interface AppViewConfig extends AllEmbedViewConfig {
490
509
  * ```
491
510
  */
492
511
  isUnifiedSearchExperienceEnabled?: boolean;
493
- /**
494
- * Show alert messages and toast messages in the embedded
495
- * view in full app embed.
496
- *
497
- * Supported embed types: `AppEmbed`
498
- * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw
499
- * @example
500
- * ```js
501
- * const embed = new AppEmbed('#tsEmbed', {
502
- * ... // other embed view config
503
- * showAlerts:true,
504
- * })
505
- * ```
506
- */
507
- showAlerts?: boolean;
508
512
  /**
509
513
  * This flag is used to enable/disable the styling and grouping in a Liveboard
510
514
  *
@@ -953,23 +957,6 @@ export interface LiveboardViewConfig extends BaseViewConfig, LiveboardOtherViewC
953
957
  * })
954
958
  */
955
959
  dataSourceId?: string;
956
- /**
957
- * This flag is for show/hide checkboxes for include or exclude
958
- * cover page and filters in the Liveboard PDF.
959
- *
960
- * Supported embed types: `LiveboardEmbed`
961
- * @version SDK: 1.37.0 | ThoughtSpot:10.8.0.cl
962
- * @default true
963
- * Supported embed types: `LiveboardEmbed`
964
- * @example
965
- * ```js
966
- * const embed = new LiveboardEmbed('#tsEmbed', {
967
- * ... //other embed view config
968
- * coverAndFilterOptionInPDF: false,
969
- * })
970
- * ```
971
- */
972
- coverAndFilterOptionInPDF?: boolean;
973
960
  /**
974
961
  * The list of tab IDs to hide from the embedded.
975
962
  * This Tabs will be hidden from their respective LBs.
@@ -1536,10 +1523,6 @@ export interface SpotterAgentEmbedViewConfig extends Omit<BaseViewConfig, 'prima
1536
1523
  * The ID of the worksheet to use for the conversation.
1537
1524
  */
1538
1525
  worksheetId: string;
1539
- /**
1540
- * Optional CSS class name to add to the container div.
1541
- */
1542
- containerClassName?: string;
1543
1526
  }
1544
1527
  /**
1545
1528
  * Configuration for conversation options.
@@ -1549,13 +1532,15 @@ export interface SpotterAgentEmbedViewConfig extends Omit<BaseViewConfig, 'prima
1549
1532
  */
1550
1533
  export interface BodylessConversationViewConfig extends SpotterAgentEmbedViewConfig {
1551
1534
  }
1552
- interface SpotterAgentMessageViewConfig extends SpotterAgentEmbedViewConfig {
1535
+ export interface SpotterAgentMessageViewConfig extends SpotterAgentEmbedViewConfig {
1553
1536
  sessionId: string;
1554
1537
  genNo: number;
1555
1538
  acSessionId: string;
1556
1539
  acGenNo: number;
1540
+ convId: string;
1541
+ messageId: string;
1557
1542
  }
1558
- class ConversationMessage extends TsEmbed {
1543
+ export class ConversationMessage extends TsEmbed {
1559
1544
  protected viewConfig: SpotterAgentMessageViewConfig;
1560
1545
  constructor(container: HTMLElement, viewConfig: SpotterAgentMessageViewConfig);
1561
1546
  getIframeSrc(): string;
@@ -1591,6 +1576,25 @@ export class SpotterAgentEmbed {
1591
1576
  viz: ConversationMessage;
1592
1577
  error?: undefined;
1593
1578
  }>;
1579
+ /**
1580
+ * Send a message to the conversation service and return only the data.
1581
+ * @param userMessage - The message to send to the conversation service.
1582
+ * @returns The data from the conversation service.
1583
+ */
1584
+ sendMessageData(userMessage: string): Promise<{
1585
+ error: any;
1586
+ data?: undefined;
1587
+ } | {
1588
+ data: {
1589
+ convId: any;
1590
+ messageId: any;
1591
+ sessionId: any;
1592
+ genNo: any;
1593
+ acSessionId: any;
1594
+ acGenNo: any;
1595
+ };
1596
+ error?: undefined;
1597
+ }>;
1594
1598
  }
1595
1599
  /**
1596
1600
  * Create a conversation embed, which can be integrated inside
@@ -1615,7 +1619,6 @@ export class SpotterAgentEmbed {
1615
1619
  export class BodylessConversation extends SpotterAgentEmbed {
1616
1620
  constructor(viewConfig: BodylessConversationViewConfig);
1617
1621
  }
1618
- export {};
1619
1622
 
1620
1623
  /**
1621
1624
  * Configuration for search options
@@ -2263,7 +2266,13 @@ export enum HomeLeftNavItem {
2263
2266
  * available when new navigation V3 is enabled.
2264
2267
  * @version SDK: 1.40.0 | ThoughtSpot: 10.11.0.cl
2265
2268
  */
2266
- Spotter = "spotter"
2269
+ Spotter = "spotter",
2270
+ /**
2271
+ * Favorites option in the insights left navigation,
2272
+ * available when new navigation V3 is enabled.
2273
+ * @version SDK: 1.41.0 | ThoughtSpot: 10.12.0.cl
2274
+ */
2275
+ Favorites = "favorites"
2267
2276
  }
2268
2277
  export type DOMSelector = string | HTMLElement;
2269
2278
  /**
@@ -3029,6 +3038,20 @@ export interface BaseViewConfig {
3029
3038
  * @private
3030
3039
  */
3031
3040
  insertInToSlide?: boolean;
3041
+ /**
3042
+ * Show alert messages and toast messages in the embed.
3043
+ * Supported embed in all embed types.
3044
+ *
3045
+ * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw
3046
+ * @example
3047
+ * ```js
3048
+ * const embed = new AppEmbed('#tsEmbed', {
3049
+ * ... // other embed view config
3050
+ * showAlerts:true,
3051
+ * })
3052
+ * ```
3053
+ */
3054
+ showAlerts?: boolean;
3032
3055
  }
3033
3056
  /**
3034
3057
  * The configuration object for Home page embeds configs.
@@ -3406,6 +3429,22 @@ export interface LiveboardAppEmbedViewConfig {
3406
3429
  * ```
3407
3430
  */
3408
3431
  enableAskSage?: boolean;
3432
+ /**
3433
+ * This flag is used to show or hide checkboxes for including or excluding
3434
+ * the cover and filters pages in the Liveboard PDF.
3435
+ *
3436
+ * Supported embed types: `AppEmbed`, `LiveboardEmbed`
3437
+ * @version SDK: 1.40.0 | ThoughtSpot:10.8.0.cl
3438
+ * @example
3439
+ * ```js
3440
+ * // Replace <EmbedComponent> with embed component name. For example, AppEmbed or LiveboardEmbed
3441
+ * const embed = new <EmbedComponent>('#tsEmbed', {
3442
+ * ... // other embed view config
3443
+ * coverAndFilterOptionInPDF: false,
3444
+ * })
3445
+ * ```
3446
+ */
3447
+ coverAndFilterOptionInPDF?: boolean;
3409
3448
  }
3410
3449
  export interface AllEmbedViewConfig extends BaseViewConfig, SearchLiveboardCommonViewConfig, HomePageConfig, LiveboardAppEmbedViewConfig {
3411
3450
  }
@@ -4665,7 +4704,84 @@ export enum EmbedEvent {
4665
4704
  * Emitted when a user exits present mode.
4666
4705
  * @version SDK : 1.40.0 | ThoughtSpot: 10.11.0.cl
4667
4706
  */
4668
- ExitPresentMode = "exitPresentMode"
4707
+ ExitPresentMode = "exitPresentMode",
4708
+ /**
4709
+ * Emitted when spotter response is text data
4710
+ * @example
4711
+ * ```js
4712
+ * spotterEmbed.on(EmbedEvent.SpotterData, (payload) => {
4713
+ * console.log('payload', payload);
4714
+ * })
4715
+ *```
4716
+ * @version SDK: 1.41.0 | ThoughtSpot: 10.12.0.cl
4717
+ */
4718
+ SpotterData = "SpotterData",
4719
+ /**
4720
+ * Emitted when user opens up the worksheet preview modal in spotter embed.
4721
+ * @example
4722
+ * ```js
4723
+ * spotterEmbed.on(EmbedEvent.PreviewSpotterData, (payload) => {
4724
+ * console.log('payload', payload);
4725
+ * })
4726
+ *```
4727
+ * @version SDK: 1.41.0 | ThoughtSpot: 10.12.0.cl
4728
+ */
4729
+ PreviewSpotterData = "PreviewSpotterData",
4730
+ /**
4731
+ * Emitted when the spotter query is triggered in spotter embed.
4732
+ * @example
4733
+ * ```js
4734
+ * spotterEmbed.on(EmbedEvent.SpotterQueryTriggered, (payload) => {
4735
+ * console.log('payload', payload);
4736
+ * })
4737
+ *```
4738
+ * @version SDK: 1.41.0 | ThoughtSpot: 10.12.0.cl
4739
+ */
4740
+ SpotterQueryTriggered = "SpotterQueryTriggered",
4741
+ /**
4742
+ * Emitted when the last spotter query is edited in spotter embed.
4743
+ * @example
4744
+ * ```js
4745
+ * spotterEmbed.on(EmbedEvent.LastPromptEdited, (payload) => {
4746
+ * console.log('payload', payload);
4747
+ * })
4748
+ *```
4749
+ * @version SDK: 1.41.0 | ThoughtSpot: 10.12.0.cl
4750
+ */
4751
+ LastPromptEdited = "LastPromptEdited",
4752
+ /**
4753
+ * Emitted when the last spotter query is deleted in spotter embed.
4754
+ * @example
4755
+ * ```js
4756
+ * spotterEmbed.on(EmbedEvent.LastPromptDeleted, (payload) => {
4757
+ * console.log('payload', payload);
4758
+ * })
4759
+ *```
4760
+ * @version SDK: 1.41.0 | ThoughtSpot: 10.12.0.cl
4761
+ */
4762
+ LastPromptDeleted = "LastPromptDeleted",
4763
+ /**
4764
+ * Emitted when the coversation is reset in spotter embed.
4765
+ * @example
4766
+ * ```js
4767
+ * spotterEmbed.on(EmbedEvent.ResetSpotterConversation, (payload) => {
4768
+ * console.log('payload', payload);
4769
+ * })
4770
+ *```
4771
+ * @version SDK: 1.41.0 | ThoughtSpot: 10.12.0.cl
4772
+ */
4773
+ ResetSpotterConversation = "ResetSpotterConversation",
4774
+ /**
4775
+ * Emitted when the *Spotter* is initialized.
4776
+ * @example
4777
+ * ```js
4778
+ * spotterEmbed.on(EmbedEvent.SpotterInit, (payload) => {
4779
+ * console.log('payload', payload);
4780
+ * })
4781
+ *```
4782
+ * @version SDK: 1.41.0 | ThoughtSpot: 10.12.0.cl
4783
+ */
4784
+ SpotterInit = "SpotterInit"
4669
4785
  }
4670
4786
  /**
4671
4787
  * Event types that can be triggered by the host application
@@ -4954,6 +5070,7 @@ export enum HostEvent {
4954
5070
  * @param
4955
5071
  * `vizId`- GUID of the saved Answer or visualization to pin to a Liveboard.
4956
5072
  * Optional when pinning a new chart or table generated from a Search query.
5073
+ * **Required** in Spotter Embed.
4957
5074
  * @param
4958
5075
  * `liveboardID` - GUID of the Liveboard to pin an Answer. If there is no Liveboard,
4959
5076
  * specify the `newLiveboardName` parameter to create a new Liveboard.
@@ -5001,6 +5118,12 @@ export enum HostEvent {
5001
5118
  * ```js
5002
5119
  * appEmbed.trigger(HostEvent.Pin)
5003
5120
  * ```
5121
+ * @example
5122
+ * ```js
5123
+ * const pinResponse = await spotterEmbed.trigger(HostEvent.Pin, {
5124
+ * vizId:'730496d6-6903-4601-937e-2c691821af3c'
5125
+ * });
5126
+ * ```
5004
5127
  * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw
5005
5128
  */
5006
5129
  Pin = "pin",
@@ -5094,6 +5217,12 @@ export enum HostEvent {
5094
5217
  * ```js
5095
5218
  * searchEmbed.trigger(HostEvent.MakeACopy)
5096
5219
  * ```
5220
+ * @example
5221
+ * ```js
5222
+ * const pinResponse = await spotterEmbed.trigger(HostEvent.MakeACopy, {
5223
+ * vizId:'730496d6-6903-4601-937e-2c691821af3c'
5224
+ * });
5225
+ * ```
5097
5226
  * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw
5098
5227
  */
5099
5228
  MakeACopy = "makeACopy",
@@ -5166,6 +5295,7 @@ export enum HostEvent {
5166
5295
  * This event is not supported in visualization embed and search embed.
5167
5296
  * @param - object - To trigger the action for a specific visualization
5168
5297
  * in Liveboard embed, pass in `vizId` as a key.
5298
+ * **Required** in Spotter embed.
5169
5299
  * @example
5170
5300
  * ```js
5171
5301
  * liveboardEmbed.trigger(HostEvent.Edit)
@@ -5174,6 +5304,12 @@ export enum HostEvent {
5174
5304
  * liveboardEmbed.trigger(HostEvent.Edit, {vizId:
5175
5305
  * '730496d6-6903-4601-937e-2c691821af3c'})
5176
5306
  * ```
5307
+ * @example
5308
+ * ```js
5309
+ * const pinResponse = await spotterEmbed.trigger(HostEvent.Edit, {
5310
+ * vizId:'730496d6-6903-4601-937e-2c691821af3c'
5311
+ * });
5312
+ * ```
5177
5313
  * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw
5178
5314
  */
5179
5315
  Edit = "edit",
@@ -5221,6 +5357,16 @@ export enum HostEvent {
5221
5357
  * );
5222
5358
  * })
5223
5359
  * ```
5360
+ * @example
5361
+ * ```js
5362
+ * spotterEmbed.trigger(HostEvent.GetTML, {
5363
+ * vizId: '730496d6-6903-4601-937e-2c691821af3c'
5364
+ * }).then((tml) => {
5365
+ * console.log(
5366
+ * tml.answer.search_query // TML representation of the search query
5367
+ * );
5368
+ * })
5369
+ * ```
5224
5370
  * @version SDK: 1.18.0 | ThoughtSpot: 8.10.0.cl, 9.0.1.sw
5225
5371
  * @important
5226
5372
  */
@@ -5308,7 +5454,12 @@ export enum HostEvent {
5308
5454
  * vizEmbed.trigger(HostEvent.DownloadAsPng)
5309
5455
  *
5310
5456
  * searchEmbed.trigger(HostEvent.DownloadAsPng)
5457
+ *
5458
+ * spotterEmbed.trigger(HostEvent.DownloadAsPng, {
5459
+ * vizId:"730496d6-6903-4601-937e-2c691821af3c"
5460
+ * })
5311
5461
  * ```
5462
+ *
5312
5463
  * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.4.1.sw
5313
5464
  */
5314
5465
  DownloadAsPng = "downloadAsPng",
@@ -5326,6 +5477,11 @@ export enum HostEvent {
5326
5477
  * ```js
5327
5478
  * searchEmbed.trigger(HostEvent.DownloadAsCsv)
5328
5479
  * ```
5480
+ * ```js
5481
+ * spotterEmbed.trigger(HostEvent.DownloadAsCsv, {
5482
+ * vizId:"730496d6-6903-4601-937e-2c691821af3c"
5483
+ * })
5484
+ * ```
5329
5485
  * @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw
5330
5486
  */
5331
5487
  DownloadAsCsv = "downloadAsCSV",
@@ -5343,6 +5499,11 @@ export enum HostEvent {
5343
5499
  * ```js
5344
5500
  * searchEmbed.trigger(HostEvent.DownloadAsXlsx)
5345
5501
  * ```
5502
+ * ```js
5503
+ * spotterEmbed.trigger(HostEvent.downloadAsXLSX, {
5504
+ * vizId:"730496d6-6903-4601-937e-2c691821af3c"
5505
+ * })
5506
+ * ```
5346
5507
  * @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw
5347
5508
  */
5348
5509
  DownloadAsXlsx = "downloadAsXLSX",
@@ -5362,6 +5523,7 @@ export enum HostEvent {
5362
5523
  /**
5363
5524
  * Trigger the **Save** action on a Liveboard or Answer.
5364
5525
  * Saves the changes.
5526
+ * @param - `vizId` is required in Spotter Embed.
5365
5527
  * @example
5366
5528
  * ```js
5367
5529
  * liveboardEmbed.trigger(HostEvent.Save)
@@ -5369,6 +5531,11 @@ export enum HostEvent {
5369
5531
  * ```js
5370
5532
  * searchEmbed.trigger(HostEvent.Save)
5371
5533
  * ```
5534
+ * ```js
5535
+ * spotterEmbed.trigger(HostEvent.Save, {
5536
+ * vizId:"730496d6-6903-4601-937e-2c691821af3c"
5537
+ * })
5538
+ * ```
5372
5539
  * @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw
5373
5540
  */
5374
5541
  Save = "save",
@@ -5652,7 +5819,7 @@ export enum HostEvent {
5652
5819
  ResetLiveboardPersonalisedView = "ResetLiveboardPersonalisedView",
5653
5820
  /**
5654
5821
  * Triggers an action to update Parameter values on embedded
5655
- * Answers and Liveboard.
5822
+ * Answers, Liveboard and Spotter answer in Edit mode.
5656
5823
  *
5657
5824
  * @example
5658
5825
  * ```js
@@ -5671,6 +5838,13 @@ export enum HostEvent {
5671
5838
  * console.log('parameters', parameter);
5672
5839
  * });
5673
5840
  *```
5841
+ *```js
5842
+ * spotterEmbed.trigger(HostEvent.GetParameters, {
5843
+ * vizId: '730496d6-6903-4601-937e-2c691821af3c'
5844
+ * }).then((parameter) => {
5845
+ * console.log('parameters', parameter);
5846
+ * });
5847
+ *```
5674
5848
  * @version SDK: 1.29.0 | ThoughtSpot: 10.1.0.cl, 10.1.0.sw
5675
5849
  */
5676
5850
  GetParameters = "GetParameters",
@@ -5738,6 +5912,64 @@ export enum HostEvent {
5738
5912
  * @version SDK: 1.37.0 | ThoughtSpot: 10.8.0.cl
5739
5913
  */
5740
5914
  TransformTableVizData = "TransformTableVizData",
5915
+ /**
5916
+ * Triggers a search operation with the search tokens specified in
5917
+ * the search query string in spotter embed.
5918
+ * @param - `queryString`: Text string in Natural Language format
5919
+ * @param - `executeSearch`: Boolean to execute search and update search query
5920
+ * @example
5921
+ * ```js
5922
+ * spotterEmbed.trigger(HostEvent.SpotterSearch, {
5923
+ * query: 'revenue per year',
5924
+ * executeSearch: true,
5925
+ * })
5926
+ * ```
5927
+ */
5928
+ SpotterSearch = "SpotterSearch",
5929
+ /**
5930
+ * Edits the last prompt in spotter embed.
5931
+ * @param - `query`: Text string
5932
+ * @example
5933
+ * ```js
5934
+ * spotterEmbed.trigger(HostEvent.EditLastPrompt, "revenue per year");
5935
+ * ```
5936
+ */
5937
+ EditLastPrompt = "EditLastPrompt",
5938
+ /**
5939
+ * Opens the Worksheet preview modal in Spotter Embed.
5940
+ * @example
5941
+ * ```js
5942
+ * spotterEmbed.trigger(HostEvent.PreviewSpotterData);
5943
+ * ```
5944
+ */
5945
+ PreviewSpotterData = "PreviewSpotterData",
5946
+ /**
5947
+ * Resets the Spotter Embed Conversation.
5948
+ * @example
5949
+ * ```js
5950
+ * spotterEmbed.trigger(HostEvent.ResetSpotterConversation);
5951
+ * ```
5952
+ */
5953
+ ResetSpotterConversation = "ResetSpotterConversation",
5954
+ /**
5955
+ * Deletes the last prompt in spotter embed.
5956
+ * @example
5957
+ * ```js
5958
+ * spotterEmbed.trigger(HostEvent.DeleteLastPrompt);
5959
+ * ```
5960
+ */
5961
+ DeleteLastPrompt = "DeleteLastPrompt",
5962
+ /**
5963
+ * Toggle the visualization to chart or table view.
5964
+ * @param - `vizId ` In Spotter Embed, vizId is required.
5965
+ * @example
5966
+ * ```js
5967
+ * spotterEmbed.trigger(HostEvent.AnswerChartSwitcher, {
5968
+ * vizId:"'b535c760-8bbe-4e6f-bb26-af56b4129a1e'"
5969
+ * });
5970
+ *```
5971
+ */
5972
+ AnswerChartSwitcher = "answerChartSwitcher",
5741
5973
  /**
5742
5974
  * @hidden
5743
5975
  * Trigger exit from presentation mode when user exits fullscreen.
@@ -5747,7 +5979,17 @@ export enum HostEvent {
5747
5979
  *```
5748
5980
  * @version SDK: 1.40.0 | ThoughtSpot: 10.11.0.cl
5749
5981
  */
5750
- ExitPresentMode = "exitPresentMode"
5982
+ ExitPresentMode = "exitPresentMode",
5983
+ /**
5984
+ * Trigger the *Ask Sage* action for visualizations
5985
+ * @example
5986
+ * ```js
5987
+ * liveboardEmbed.trigger(HostEvent.AskSpotter,
5988
+ * {containerId:'730496d6-6903-4601-937e-2c691821af3c'})
5989
+ * ```
5990
+ * @version SDK: 1.41.0 | ThoughtSpot: 10.12.0.cl
5991
+ */
5992
+ AskSpotter = "askSpotter"
5751
5993
  }
5752
5994
  /**
5753
5995
  * The different visual modes that the data sources panel within
@@ -5843,6 +6085,7 @@ export enum Param {
5843
6085
  Query = "query",
5844
6086
  HideHomepageLeftNav = "hideHomepageLeftNav",
5845
6087
  ModularHomeExperienceEnabled = "modularHomeExperience",
6088
+ ListPageVersion = "listpageVersion",
5846
6089
  PendoTrackingKey = "additionalPendoKey",
5847
6090
  LiveboardHeaderSticky = "isLiveboardHeaderSticky",
5848
6091
  IsProductTour = "isProductTour",
@@ -5877,7 +6120,7 @@ export enum Param {
5877
6120
  DataSourceId = "dataSourceId",
5878
6121
  preAuthCache = "preAuthCache",
5879
6122
  ShowSpotterLimitations = "showSpotterLimitations",
5880
- CoverAndFilterOptionInPDF = "coverAndFilterOptionInPDF",
6123
+ CoverAndFilterOptionInPDF = "arePdfCoverFilterPageCheckboxesEnabled",
5881
6124
  PrimaryAction = "primaryAction",
5882
6125
  isSpotterAgentEmbed = "isSpotterAgentEmbed",
5883
6126
  IsLiveboardStylingAndGroupingEnabled = "isLiveboardStylingAndGroupingEnabled"
@@ -7100,7 +7343,23 @@ export enum Action {
7100
7343
  * ```
7101
7344
  * @version SDK: 1.37.0 | ThoughtSpot Cloud: 10.8.0.cl
7102
7345
  */
7103
- CoverAndFilterOptionInPDF = "coverAndFilterOptionInPDF"
7346
+ CoverAndFilterOptionInPDF = "coverAndFilterOptionInPDF",
7347
+ /**
7348
+ * Action ID for hide or disable the
7349
+ * Spotter in conversation training widget.
7350
+ * The Add to Coaching feature is currently in beta
7351
+ * and is disabled by default on embed deployments.
7352
+ * To enable this feature on your instance,
7353
+ * contact ThoughtSpot Support.
7354
+ * @example
7355
+ * ```js
7356
+ * hiddenAction: [Action.InConversationTraining]
7357
+ * disabledActions: [Action.InConversationTraining]
7358
+ *
7359
+ * ```
7360
+ * @version SDK: 1.39.0 | ThoughtSpot Cloud: 10.10.0.cl
7361
+ */
7362
+ InConversationTraining = "InConversationTraining"
7104
7363
  }
7105
7364
  export interface AnswerServiceType {
7106
7365
  getAnswer?: (offset: number, batchSize: number) => any;
@@ -8012,13 +8271,14 @@ export class AnswerService {
8012
8271
  *
8013
8272
  * @example
8014
8273
  * ```js
8274
+ * import { getInitConfig } from '@thoughtspot/visual-embed-sdk';
8275
+ * // Call the getInitConfig method to retrieve the embed configuration
8015
8276
  * const config = getInitConfig();
8277
+ * // Log the configuration settings
8016
8278
  * console.log(config);
8017
8279
  * ```
8018
- * @example
8019
- *
8020
- * Returns the `EmbedConfig` object, which
8021
- * contains the configuration settings used to
8280
+ * Returns the link:https://developers.thoughtspot.com/docs/Interface_EmbedConfig[EmbedConfig]
8281
+ * object, which contains the configuration settings used to
8022
8282
  * initialize the SDK, including the following:
8023
8283
  *
8024
8284
  * - `thoughtSpotHost` - ThoughtSpot host URL
@@ -8027,9 +8287,10 @@ export class AnswerService {
8027
8287
  * - `customizations` - Style, text, and icon customization settings
8028
8288
  * that were applied during the SDK initialization.
8029
8289
  *
8030
- * For a comprehensive list of embed configuration settings,
8031
- * see link:https://developers.thoughtspot.com/docs/Interface_EmbedConfig[Developer Documentation].
8290
+ * The following JSON output shows the embed configuration
8291
+ * settings returned from the code in the previous example:
8032
8292
  *
8293
+ * @example
8033
8294
  * ```json
8034
8295
  * {
8035
8296
  * "thoughtSpotHost": "https://{ThoughtSpot-Host}",
@@ -8051,7 +8312,7 @@ export class AnswerService {
8051
8312
  * "authTriggerContainer": "#your-own-div"
8052
8313
  * }
8053
8314
  * ```
8054
- * @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.cl, and later
8315
+ * @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw, and later
8055
8316
  * @group Global methods
8056
8317
  */
8057
8318
  export const getEmbedConfig: () => EmbedConfig;
package/lib/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thoughtspot/visual-embed-sdk",
3
- "version": "1.39.2",
3
+ "version": "1.39.3",
4
4
  "description": "ThoughtSpot Embed SDK",
5
5
  "module": "lib/src/index.js",
6
6
  "main": "dist/tsembed.js",
@@ -16,6 +16,15 @@ describe('getThoughtSpotHost', () => {
16
16
  };
17
17
  expect(testFn).toThrow(Error);
18
18
  });
19
+ test('invalid URL format', () => {
20
+ const testFn = () => {
21
+ getThoughtSpotHost({
22
+ ...embedConfig,
23
+ thoughtSpotHost: '',
24
+ });
25
+ };
26
+ expect(testFn).toThrow('Error parsing ThoughtSpot host. Please provide a valid URL.');
27
+ });
19
28
  test('IP address/hostname only', () => {
20
29
  expect(getThoughtSpotHost({
21
30
  ...embedConfig,
@@ -1 +1 @@
1
- {"version":3,"file":"config.spec.js","sourceRoot":"","sources":["../../src/config.spec.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,MAAM,WAAW,GAAG;IAChB,QAAQ,EAAE,QAAQ,CAAC,GAAG;CACzB,CAAC;AAEF,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAChC,IAAI,CAAC,gBAAgB,EAAE,GAAG,EAAE;QACxB,MAAM,MAAM,GAAG,GAAG,EAAE;YAChB,kBAAkB,CAAC;gBACf,GAAG,WAAW;gBACd,eAAe,EAAE,IAAI;aACxB,CAAC,CAAC;QACP,CAAC,CAAC;QAEF,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,CACF,kBAAkB,CAAC;YACf,GAAG,WAAW;YACd,eAAe,EAAE,SAAS;SAC7B,CAAC,CACL,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAE1B,MAAM,CACF,kBAAkB,CAAC;YACf,GAAG,WAAW;YACd,eAAe,EAAE,QAAQ;SAC5B,CAAC,CACL,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,CACF,kBAAkB,CAAC;YACf,GAAG,WAAW;YACd,eAAe,EAAE,eAAe;SACnC,CAAC,CACL,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,CACF,kBAAkB,CAAC;YACf,GAAG,WAAW;YACd,eAAe,EAAE,qBAAqB;SACzC,CAAC,CACL,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAC1B,MAAM,CACF,kBAAkB,CAAC;YACf,GAAG,WAAW;YACd,eAAe,EAAE,+CAA+C;SACnE,CAAC,CACL,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,CACF,kBAAkB,CAAC;YACf,GAAG,WAAW;YACd,QAAQ,EAAE,QAAQ,CAAC,IAAI;YACvB,eAAe,EAAE,+CAA+C;SACnE,CAAC,CACL,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,QAAQ,GAAG,aAAa,CAAC;YAC3B,QAAQ,EAAE,MAAM;YAChB,eAAe,EAAE,EAAE;YACnB,QAAQ,EAAE,QAAQ,CAAC,IAAI;SAC1B,CAAC,CAAC;QACH,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"config.spec.js","sourceRoot":"","sources":["../../src/config.spec.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,MAAM,WAAW,GAAG;IAChB,QAAQ,EAAE,QAAQ,CAAC,GAAG;CACzB,CAAC;AAEF,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAChC,IAAI,CAAC,gBAAgB,EAAE,GAAG,EAAE;QACxB,MAAM,MAAM,GAAG,GAAG,EAAE;YAChB,kBAAkB,CAAC;gBACf,GAAG,WAAW;gBACd,eAAe,EAAE,IAAI;aACxB,CAAC,CAAC;QACP,CAAC,CAAC;QAEF,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC5B,MAAM,MAAM,GAAG,GAAG,EAAE;YAChB,kBAAkB,CAAC;gBACf,GAAG,WAAW;gBACd,eAAe,EAAE,EAAE;aACtB,CAAC,CAAC;QACP,CAAC,CAAC;QAEF,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,6DAA6D,CAAC,CAAC;IAC1F,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,CACF,kBAAkB,CAAC;YACf,GAAG,WAAW;YACd,eAAe,EAAE,SAAS;SAC7B,CAAC,CACL,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAE1B,MAAM,CACF,kBAAkB,CAAC;YACf,GAAG,WAAW;YACd,eAAe,EAAE,QAAQ;SAC5B,CAAC,CACL,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,CACF,kBAAkB,CAAC;YACf,GAAG,WAAW;YACd,eAAe,EAAE,eAAe;SACnC,CAAC,CACL,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,CACF,kBAAkB,CAAC;YACf,GAAG,WAAW;YACd,eAAe,EAAE,qBAAqB;SACzC,CAAC,CACL,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAC1B,MAAM,CACF,kBAAkB,CAAC;YACf,GAAG,WAAW;YACd,eAAe,EAAE,+CAA+C;SACnE,CAAC,CACL,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,CACF,kBAAkB,CAAC;YACf,GAAG,WAAW;YACd,QAAQ,EAAE,QAAQ,CAAC,IAAI;YACvB,eAAe,EAAE,+CAA+C;SACnE,CAAC,CACL,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,QAAQ,GAAG,aAAa,CAAC;YAC3B,QAAQ,EAAE,MAAM;YAChB,eAAe,EAAE,EAAE;YACnB,QAAQ,EAAE,QAAQ,CAAC,IAAI;SAC1B,CAAC,CAAC;QACH,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}