@thoughtspot/visual-embed-sdk 1.35.2 → 1.35.4

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 (209) hide show
  1. package/cjs/package.json +1 -1
  2. package/cjs/src/auth.spec.js +12 -0
  3. package/cjs/src/auth.spec.js.map +1 -1
  4. package/cjs/src/authToken.spec.js +1 -1
  5. package/cjs/src/authToken.spec.js.map +1 -1
  6. package/cjs/src/embed/app.d.ts +1 -1
  7. package/cjs/src/embed/app.d.ts.map +1 -1
  8. package/cjs/src/embed/app.js +4 -3
  9. package/cjs/src/embed/app.js.map +1 -1
  10. package/cjs/src/embed/base.d.ts +1 -1
  11. package/cjs/src/embed/base.js +1 -1
  12. package/cjs/src/embed/bodyless-conversation.spec.js +0 -1
  13. package/cjs/src/embed/bodyless-conversation.spec.js.map +1 -1
  14. package/cjs/src/embed/hostEventClient/contracts.d.ts +79 -0
  15. package/cjs/src/embed/hostEventClient/contracts.d.ts.map +1 -0
  16. package/cjs/src/embed/hostEventClient/contracts.js +14 -0
  17. package/cjs/src/embed/hostEventClient/contracts.js.map +1 -0
  18. package/cjs/src/embed/hostEventClient/host-event-client.d.ts +25 -0
  19. package/cjs/src/embed/hostEventClient/host-event-client.d.ts.map +1 -0
  20. package/cjs/src/embed/hostEventClient/host-event-client.js +89 -0
  21. package/cjs/src/embed/hostEventClient/host-event-client.js.map +1 -0
  22. package/cjs/src/embed/hostEventClient/host-event-client.spec.d.ts +2 -0
  23. package/cjs/src/embed/hostEventClient/host-event-client.spec.d.ts.map +1 -0
  24. package/cjs/src/embed/hostEventClient/host-event-client.spec.js +191 -0
  25. package/cjs/src/embed/hostEventClient/host-event-client.spec.js.map +1 -0
  26. package/cjs/src/embed/liveboard.d.ts +10 -8
  27. package/cjs/src/embed/liveboard.d.ts.map +1 -1
  28. package/cjs/src/embed/liveboard.js +3 -3
  29. package/cjs/src/embed/liveboard.js.map +1 -1
  30. package/cjs/src/embed/liveboard.spec.js +34 -2
  31. package/cjs/src/embed/liveboard.spec.js.map +1 -1
  32. package/cjs/src/embed/search.spec.js +11 -0
  33. package/cjs/src/embed/search.spec.js.map +1 -1
  34. package/cjs/src/embed/searchEmbed-basic-auth.spec.d.ts +2 -0
  35. package/cjs/src/embed/searchEmbed-basic-auth.spec.d.ts.map +1 -0
  36. package/cjs/src/embed/searchEmbed-basic-auth.spec.js +104 -0
  37. package/cjs/src/embed/searchEmbed-basic-auth.spec.js.map +1 -0
  38. package/cjs/src/embed/ts-embed.d.ts +21 -4
  39. package/cjs/src/embed/ts-embed.d.ts.map +1 -1
  40. package/cjs/src/embed/ts-embed.js +33 -9
  41. package/cjs/src/embed/ts-embed.js.map +1 -1
  42. package/cjs/src/embed/ts-embed.spec.d.ts.map +1 -1
  43. package/cjs/src/embed/ts-embed.spec.js +38 -1
  44. package/cjs/src/embed/ts-embed.spec.js.map +1 -1
  45. package/cjs/src/hostEventsTypeMapping.d.ts +2 -0
  46. package/cjs/src/hostEventsTypeMapping.d.ts.map +1 -0
  47. package/cjs/src/hostEventsTypeMapping.js +4 -0
  48. package/cjs/src/hostEventsTypeMapping.js.map +1 -0
  49. package/cjs/src/index.d.ts +2 -1
  50. package/cjs/src/index.d.ts.map +1 -1
  51. package/cjs/src/index.js +3 -1
  52. package/cjs/src/index.js.map +1 -1
  53. package/cjs/src/react/all-types-export.d.ts +1 -1
  54. package/cjs/src/react/all-types-export.d.ts.map +1 -1
  55. package/cjs/src/react/all-types-export.js +2 -1
  56. package/cjs/src/react/all-types-export.js.map +1 -1
  57. package/cjs/src/types.d.ts +38 -23
  58. package/cjs/src/types.d.ts.map +1 -1
  59. package/cjs/src/types.js +31 -20
  60. package/cjs/src/types.js.map +1 -1
  61. package/cjs/src/utils/embedApi/contracts.d.ts +101 -0
  62. package/cjs/src/utils/embedApi/contracts.d.ts.map +1 -0
  63. package/cjs/src/utils/embedApi/contracts.js +17 -0
  64. package/cjs/src/utils/embedApi/contracts.js.map +1 -0
  65. package/cjs/src/utils/embedApi/embedApiClient.d.ts +12 -0
  66. package/cjs/src/utils/embedApi/embedApiClient.d.ts.map +1 -0
  67. package/cjs/src/utils/embedApi/embedApiClient.js +46 -0
  68. package/cjs/src/utils/embedApi/embedApiClient.js.map +1 -0
  69. package/cjs/src/utils/embedApi/processEmbedApi.d.ts +9 -0
  70. package/cjs/src/utils/embedApi/processEmbedApi.d.ts.map +1 -0
  71. package/cjs/src/utils/embedApi/processEmbedApi.js +18 -0
  72. package/cjs/src/utils/embedApi/processEmbedApi.js.map +1 -0
  73. package/dist/{index-DoPTJLbd.js → index-BBBimG1x.js} +1 -1
  74. package/dist/index-CENLvayL.js +7370 -0
  75. package/dist/index-CbltIawo.js +7370 -0
  76. package/dist/index-CoQfqaHj.js +7370 -0
  77. package/dist/index-CzwzS0P4.js +7370 -0
  78. package/dist/index-DFwi_pV_.js +7370 -0
  79. package/dist/index-DOIjN0N_.js +7370 -0
  80. package/dist/index-DYBx8SuE.js +7370 -0
  81. package/dist/index-DaLHJaLd.js +7370 -0
  82. package/dist/index-nWevLycs.js +7370 -0
  83. package/dist/src/embed/app.d.ts +1 -1
  84. package/dist/src/embed/app.d.ts.map +1 -1
  85. package/dist/src/embed/base.d.ts +1 -1
  86. package/dist/src/embed/hostEventClient/contracts.d.ts +79 -0
  87. package/dist/src/embed/hostEventClient/contracts.d.ts.map +1 -0
  88. package/dist/src/embed/hostEventClient/host-event-client.d.ts +25 -0
  89. package/dist/src/embed/hostEventClient/host-event-client.d.ts.map +1 -0
  90. package/dist/src/embed/hostEventClient/host-event-client.spec.d.ts +2 -0
  91. package/dist/src/embed/hostEventClient/host-event-client.spec.d.ts.map +1 -0
  92. package/dist/src/embed/liveboard.d.ts +10 -8
  93. package/dist/src/embed/liveboard.d.ts.map +1 -1
  94. package/dist/src/embed/searchEmbed-basic-auth.spec.d.ts +2 -0
  95. package/dist/src/embed/searchEmbed-basic-auth.spec.d.ts.map +1 -0
  96. package/dist/src/embed/ts-embed.d.ts +21 -4
  97. package/dist/src/embed/ts-embed.d.ts.map +1 -1
  98. package/dist/src/embed/ts-embed.spec.d.ts.map +1 -1
  99. package/dist/src/hostEventsTypeMapping.d.ts +2 -0
  100. package/dist/src/hostEventsTypeMapping.d.ts.map +1 -0
  101. package/dist/src/index.d.ts +2 -1
  102. package/dist/src/index.d.ts.map +1 -1
  103. package/dist/src/react/all-types-export.d.ts +1 -1
  104. package/dist/src/react/all-types-export.d.ts.map +1 -1
  105. package/dist/src/types.d.ts +38 -23
  106. package/dist/src/types.d.ts.map +1 -1
  107. package/dist/src/utils/embedApi/contracts.d.ts +101 -0
  108. package/dist/src/utils/embedApi/contracts.d.ts.map +1 -0
  109. package/dist/src/utils/embedApi/embedApiClient.d.ts +12 -0
  110. package/dist/src/utils/embedApi/embedApiClient.d.ts.map +1 -0
  111. package/dist/src/utils/embedApi/processEmbedApi.d.ts +9 -0
  112. package/dist/src/utils/embedApi/processEmbedApi.d.ts.map +1 -0
  113. package/dist/tsembed-react.es.js +164 -37
  114. package/dist/tsembed-react.js +163 -36
  115. package/dist/tsembed.es.js +166 -39
  116. package/dist/tsembed.js +164 -37
  117. package/dist/visual-embed-sdk-react-full.d.ts +170 -38
  118. package/dist/visual-embed-sdk-react.d.ts +170 -38
  119. package/dist/visual-embed-sdk.d.ts +170 -38
  120. package/lib/package.json +1 -1
  121. package/lib/src/auth.spec.js +12 -0
  122. package/lib/src/auth.spec.js.map +1 -1
  123. package/lib/src/authToken.spec.js +1 -1
  124. package/lib/src/authToken.spec.js.map +1 -1
  125. package/lib/src/embed/app.d.ts +1 -1
  126. package/lib/src/embed/app.d.ts.map +1 -1
  127. package/lib/src/embed/app.js +4 -3
  128. package/lib/src/embed/app.js.map +1 -1
  129. package/lib/src/embed/base.d.ts +1 -1
  130. package/lib/src/embed/base.js +1 -1
  131. package/lib/src/embed/bodyless-conversation.spec.js +0 -1
  132. package/lib/src/embed/bodyless-conversation.spec.js.map +1 -1
  133. package/lib/src/embed/hostEventClient/contracts.d.ts +79 -0
  134. package/lib/src/embed/hostEventClient/contracts.d.ts.map +1 -0
  135. package/lib/src/embed/hostEventClient/contracts.js +11 -0
  136. package/lib/src/embed/hostEventClient/contracts.js.map +1 -0
  137. package/lib/src/embed/hostEventClient/host-event-client.d.ts +25 -0
  138. package/lib/src/embed/hostEventClient/host-event-client.d.ts.map +1 -0
  139. package/lib/src/embed/hostEventClient/host-event-client.js +85 -0
  140. package/lib/src/embed/hostEventClient/host-event-client.js.map +1 -0
  141. package/lib/src/embed/hostEventClient/host-event-client.spec.d.ts +2 -0
  142. package/lib/src/embed/hostEventClient/host-event-client.spec.d.ts.map +1 -0
  143. package/lib/src/embed/hostEventClient/host-event-client.spec.js +188 -0
  144. package/lib/src/embed/hostEventClient/host-event-client.spec.js.map +1 -0
  145. package/lib/src/embed/liveboard.d.ts +10 -8
  146. package/lib/src/embed/liveboard.d.ts.map +1 -1
  147. package/lib/src/embed/liveboard.js +3 -3
  148. package/lib/src/embed/liveboard.js.map +1 -1
  149. package/lib/src/embed/liveboard.spec.js +34 -2
  150. package/lib/src/embed/liveboard.spec.js.map +1 -1
  151. package/lib/src/embed/search.spec.js +11 -0
  152. package/lib/src/embed/search.spec.js.map +1 -1
  153. package/lib/src/embed/searchEmbed-basic-auth.spec.d.ts +2 -0
  154. package/lib/src/embed/searchEmbed-basic-auth.spec.d.ts.map +1 -0
  155. package/lib/src/embed/searchEmbed-basic-auth.spec.js +101 -0
  156. package/lib/src/embed/searchEmbed-basic-auth.spec.js.map +1 -0
  157. package/lib/src/embed/ts-embed.d.ts +21 -4
  158. package/lib/src/embed/ts-embed.d.ts.map +1 -1
  159. package/lib/src/embed/ts-embed.js +33 -9
  160. package/lib/src/embed/ts-embed.js.map +1 -1
  161. package/lib/src/embed/ts-embed.spec.d.ts.map +1 -1
  162. package/lib/src/embed/ts-embed.spec.js +40 -3
  163. package/lib/src/embed/ts-embed.spec.js.map +1 -1
  164. package/lib/src/hostEventsTypeMapping.d.ts +2 -0
  165. package/lib/src/hostEventsTypeMapping.d.ts.map +1 -0
  166. package/lib/src/hostEventsTypeMapping.js +2 -0
  167. package/lib/src/hostEventsTypeMapping.js.map +1 -0
  168. package/lib/src/index.d.ts +2 -1
  169. package/lib/src/index.d.ts.map +1 -1
  170. package/lib/src/index.js +2 -1
  171. package/lib/src/index.js.map +1 -1
  172. package/lib/src/react/all-types-export.d.ts +1 -1
  173. package/lib/src/react/all-types-export.d.ts.map +1 -1
  174. package/lib/src/react/all-types-export.js +1 -1
  175. package/lib/src/react/all-types-export.js.map +1 -1
  176. package/lib/src/types.d.ts +38 -23
  177. package/lib/src/types.d.ts.map +1 -1
  178. package/lib/src/types.js +31 -20
  179. package/lib/src/types.js.map +1 -1
  180. package/lib/src/utils/embedApi/contracts.d.ts +101 -0
  181. package/lib/src/utils/embedApi/contracts.d.ts.map +1 -0
  182. package/lib/src/utils/embedApi/contracts.js +14 -0
  183. package/lib/src/utils/embedApi/contracts.js.map +1 -0
  184. package/lib/src/utils/embedApi/embedApiClient.d.ts +12 -0
  185. package/lib/src/utils/embedApi/embedApiClient.d.ts.map +1 -0
  186. package/lib/src/utils/embedApi/embedApiClient.js +42 -0
  187. package/lib/src/utils/embedApi/embedApiClient.js.map +1 -0
  188. package/lib/src/utils/embedApi/processEmbedApi.d.ts +9 -0
  189. package/lib/src/utils/embedApi/processEmbedApi.d.ts.map +1 -0
  190. package/lib/src/utils/embedApi/processEmbedApi.js +14 -0
  191. package/lib/src/utils/embedApi/processEmbedApi.js.map +1 -0
  192. package/lib/src/visual-embed-sdk.d.ts +181 -38
  193. package/package.json +1 -1
  194. package/src/auth.spec.ts +13 -0
  195. package/src/authToken.spec.ts +1 -1
  196. package/src/embed/app.ts +7 -4
  197. package/src/embed/base.ts +1 -1
  198. package/src/embed/bodyless-conversation.spec.ts +0 -1
  199. package/src/embed/hostEventClient/contracts.ts +105 -0
  200. package/src/embed/hostEventClient/host-event-client.spec.ts +254 -0
  201. package/src/embed/hostEventClient/host-event-client.ts +139 -0
  202. package/src/embed/liveboard.spec.ts +36 -2
  203. package/src/embed/liveboard.ts +13 -8
  204. package/src/embed/search.spec.ts +15 -0
  205. package/src/embed/ts-embed.spec.ts +53 -1
  206. package/src/embed/ts-embed.ts +60 -16
  207. package/src/index.ts +2 -0
  208. package/src/react/all-types-export.ts +1 -0
  209. package/src/types.ts +37 -22
package/dist/tsembed.js CHANGED
@@ -1,4 +1,4 @@
1
- /* @thoughtspot/visual-embed-sdk version 1.35.2 */
1
+ /* @thoughtspot/visual-embed-sdk version 1.35.4 */
2
2
  (function (global, factory) {
3
3
  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
4
4
  typeof define === 'function' && define.amd ? define(['exports'], factory) :
@@ -1069,8 +1069,8 @@
1069
1069
  *
1070
1070
  * **Note**: This event is deprecated in v1.21.0.
1071
1071
  * To fire an event when a download action is initiated on a chart or table,
1072
- * use `EmbedEvent.DownloadAsPng`, `EmbedEvent.DownloadAsPDF`, `EmbedEvent.DownloadAsCSV`,
1073
- * or `EmbedEvent.DownloadAsXLSX`
1072
+ * use `EmbedEvent.DownloadAsPng`, `EmbedEvent.DownloadAsPDF`,
1073
+ * `EmbedEvent.DownloadAsCSV`, or `EmbedEvent.DownloadAsXLSX`
1074
1074
  * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1.sw
1075
1075
  * @example
1076
1076
  *```js
@@ -1720,7 +1720,7 @@
1720
1720
  * @param - autoDrillDown - Optional. If true, the drill down will be
1721
1721
  * done automatically on the most popular column.
1722
1722
  * @param - vizId [TS >= 9.8.0] - Optional. The GUID of the visualization to drill
1723
- * in case of a liveboard.
1723
+ * in case of a Liveboard.
1724
1724
  * @example
1725
1725
  * ```js
1726
1726
  * searchEmbed.on(EmbedEvent.VizPointDoubleClick, (payload) => {
@@ -1807,26 +1807,26 @@
1807
1807
  */
1808
1808
  HostEvent["SetActiveTab"] = "SetActiveTab";
1809
1809
  /**
1810
- * Update runtime filters applied on a Saved Answer or Liveboard. The
1811
- * runtime filters passed here are appended to the existing runtime
1812
- * filters.
1810
+ * Updates the runtime filters applied on a Liveboard. The filter
1811
+ * attributes passed with this event are appended to the existing runtime
1812
+ * filters applied on a Liveboard.
1813
+ *
1813
1814
  * Pass an array of runtime filters with the following attributes:
1814
1815
  *
1815
- * `columnName`
1816
- * _String_. The name of the column to filter on.
1816
+ * `columnName` - _String_. The name of the column to filter on.
1817
1817
  *
1818
- * `operator`
1819
- * Runtime filter operator to apply. For information,
1818
+ * `operator` - Runtime filter operator to apply. For more information,
1820
1819
  * see link:https://developers.thoughtspot.com/docs/?pageid=runtime-filters#rtOperator[Developer Documentation].
1821
1820
  *
1822
- * `values`
1823
- * List of operands. Some operators such as EQ, LE allow a single value, whereas
1824
- * operators such as BW and IN accept multiple operands.
1821
+ * `values` - List of operands. Some operators such as EQ and LE allow a
1822
+ * single value, whereas BW and IN accept multiple values.
1823
+ *
1824
+ * **Note**: `HostEvent.UpdateRuntimeFilters` is supported in `LiveboardEmbed`
1825
+ * and `AppEmbed` only. In full application embedding, this event updates
1826
+ * the runtime filters applied on the Liveboard and saved Answer objects.
1825
1827
  *
1826
- * **Note**: `HostEvent.UpdateRuntimeFilters` is not supported in
1827
- * Search embedding (SearchEmbed) and Natural Language Search
1828
- * embedding (SageEmbed).
1829
1828
  * @param - {@link RuntimeFilter}[] an array of {@link RuntimeFilter} Types.
1829
+ *
1830
1830
  * @example
1831
1831
  * ```js
1832
1832
  * liveboardEmbed.trigger(HostEvent.UpdateRuntimeFilters, [
@@ -2525,7 +2525,7 @@
2525
2525
  */
2526
2526
  HostEvent["ResetLiveboardPersonalisedView"] = "ResetLiveboardPersonalisedView";
2527
2527
  /**
2528
- * Triggers Update RuntimeParameters for answers and liveboard
2528
+ * Triggers an event to Update Parameter values for Answers and Liveboard
2529
2529
  * @example
2530
2530
  * ```js
2531
2531
  * liveboardEmbed.trigger(HostEvent.UpdateParameters, [{
@@ -2547,13 +2547,23 @@
2547
2547
  */
2548
2548
  HostEvent["GetParameters"] = "GetParameters";
2549
2549
  /**
2550
- * Triggers update of persoanlised view for a liveboard
2550
+ * Triggers an event to update a persoanlised view of a Liveboard
2551
2551
  * ```js
2552
2552
  * liveboardEmbed.trigger(HostEvent.UpdatePersonalisedView, {viewId: '1234'})
2553
2553
  * ```
2554
2554
  * @version SDK: 1.36.0 | Thoughtspot: 10.6.0.cl
2555
2555
  */
2556
2556
  HostEvent["UpdatePersonalisedView"] = "UpdatePersonalisedView";
2557
+ /**
2558
+ * Triggers the action to get the current view of the liveboard
2559
+ * @version SDK: 1.36.0 | Thoughtspot: 10.6.0.cl
2560
+ */
2561
+ HostEvent["SaveAnswer"] = "saveAnswer";
2562
+ /**
2563
+ * EmbedApi
2564
+ * @hidden
2565
+ */
2566
+ HostEvent["UIPassthrough"] = "UiPassthrough";
2557
2567
  })(exports.HostEvent || (exports.HostEvent = {}));
2558
2568
  /**
2559
2569
  * The different visual modes that the data sources panel within
@@ -3533,7 +3543,7 @@
3533
3543
  */
3534
3544
  Action["ModifySageAnswer"] = "modifySageAnswer";
3535
3545
  /**
3536
- * The **Move to Tab** menu action on visualizations in liveboard edit mode.
3546
+ * The **Move to Tab** menu action on visualizations in Liveboard edit mode.
3537
3547
  * Allows moving a visualization to a different tab.
3538
3548
  * @example
3539
3549
  * ```js
@@ -3586,7 +3596,8 @@
3586
3596
  */
3587
3597
  Action["TML"] = "tml";
3588
3598
  /**
3589
- * Action Id for CreateLiveboard for liveboard list page & Pin Modal
3599
+ * Action ID for the create Liveboard option on the Liveboard list page
3600
+ * and Pin modal
3590
3601
  * @example
3591
3602
  * ```js
3592
3603
  * hiddenAction: [Action.CreateLiveboard]
@@ -14435,7 +14446,7 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
14435
14446
  /**
14436
14447
  * Initializes the Visual Embed SDK globally and perform
14437
14448
  * authentication if applicable. This function needs to be called before any ThoughtSpot
14438
- * component like liveboard etc can be embedded. But need not wait for AuthEvent.SUCCESS
14449
+ * component like Liveboard etc can be embedded. But need not wait for AuthEvent.SUCCESS
14439
14450
  * to actually embed. That is handled internally.
14440
14451
  * @param embedConfig The configuration object containing ThoughtSpot host,
14441
14452
  * authentication mechanism and so on.
@@ -14741,6 +14752,8 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
14741
14752
  return e;
14742
14753
  }
14743
14754
 
14755
+ var name="@thoughtspot/visual-embed-sdk";var version$1="1.35.4";var description="ThoughtSpot Embed SDK";var module="lib/src/index.js";var main="dist/tsembed.js";var types="lib/src/index.d.ts";var files=["dist/**","lib/**","src/**","cjs/**"];var exports$1={".":{"import":"./lib/src/index.js",require:"./cjs/src/index.js",types:"./lib/src/index.d.ts"},"./react":{"import":"./lib/src/react/all-types-export.js",require:"./cjs/src/react/all-types-export.js",types:"./lib/src/react/all-types-export.d.ts"},"./lib/src/react":{"import":"./lib/src/react/all-types-export.js",require:"./cjs/src/react/all-types-export.js",types:"./lib/src/react/all-types-export.d.ts"}};var typesVersions={"*":{react:["./lib/src/react/all-types-export.d.ts"]}};var scripts={lint:"eslint 'src/**'","lint:fix":"eslint 'src/**/*.*' --fix",tsc:"tsc -p . --incremental false; tsc -p . --incremental false --module commonjs --outDir cjs","build-and-publish":"npm run build:gatsby && npm run publish","bundle-dts-file":"dts-bundle --name @thoughtspot/visual-embed-sdk --out visual-embed-sdk.d.ts --main lib/src/index.d.ts","bundle-dts":"dts-bundle --name ../../dist/visual-embed-sdk --main lib/src/index.d.ts --outputAsModuleFolder=true","bundle-dts-react":"dts-bundle --name ../../../dist/visual-embed-sdk-react --main lib/src/react/index.d.ts --outputAsModuleFolder=true","bundle-dts-react-full":"dts-bundle --name ../../../dist/visual-embed-sdk-react-full --main lib/src/react/all-types-export.d.ts --outputAsModuleFolder=true",build:"rollup -c",watch:"rollup -cw",docgen:"typedoc --tsconfig tsconfig.json --theme typedoc-theme --json static/typedoc/typedoc.json --disableOutputCheck","test-sdk":"jest -c jest.config.sdk.js --runInBand",test:"npm run test-sdk",posttest:"cat ./coverage/sdk/lcov.info | coveralls","is-publish-allowed":"node scripts/is-publish-allowed.js",prepublishOnly:"npm run is-publish-allowed && npm run test && npm run tsc && npm run bundle-dts-file && npm run bundle-dts && npm run bundle-dts-react && npm run bundle-dts-react-full && npm run build","check-size":"npm run build && size-limit","publish-dev":"npm publish --tag dev","publish-prod":"npm publish --tag latest",dev:"vite -c vite.local.config.ts"};var peerDependencies={react:"> 16.8.0","react-dom":"> 16.8.0"};var dependencies={algoliasearch:"^4.10.5",classnames:"^2.3.1",dompurify:"^2.3.4",eventemitter3:"^4.0.7","gatsby-plugin-vercel":"^1.0.3","html-react-parser":"^1.4.12",lodash:"^4.17.21","mixpanel-browser":"2.47.0","ts-deepmerge":"^6.0.2",tslib:"^2.5.3","use-deep-compare-effect":"^1.8.1",yaml:"^2.5.1"};var devDependencies={"@mdx-js/mdx":"^1.6.22","@mdx-js/react":"^1.6.22","@react-icons/all-files":"^4.1.0","@rollup/plugin-commonjs":"^18.0.0","@rollup/plugin-json":"^4.1.0","@rollup/plugin-node-resolve":"^11.2.1","@rollup/plugin-replace":"^5.0.2","@size-limit/preset-big-lib":"^8.2.6","@testing-library/dom":"^7.31.0","@testing-library/jest-dom":"^5.14.1","@testing-library/react":"^11.2.7","@testing-library/user-event":"^13.1.8","@types/jest":"^22.2.3","@types/lodash":"^4.17.0","@types/mixpanel-browser":"^2.35.6","@types/react-test-renderer":"^17.0.1","@typescript-eslint/eslint-plugin":"^4.6.0","@typescript-eslint/parser":"^4.6.0",asciidoctor:"^2.2.1","babel-jest":"^26.6.3","babel-preset-gatsby":"^1.10.0","command-line-args":"^5.1.1",coveralls:"^3.1.0",crypto:"^1.0.1","current-git-branch":"^1.1.0","dts-bundle":"^0.7.3",eslint:"^7.12.1","eslint-config-airbnb-base":"^14.2.0","eslint-config-prettier":"^6.15.0","eslint-import-resolver-typescript":"^2.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-prettier":"^3.1.4","eslint-plugin-react-hooks":"^4.2.0","eslint-plugin-comment-length":"1.7.3","eslint-plugin-jsdoc":"^46.9.0","fs-extra":"^10.0.0","gh-pages":"^3.1.0","highlight.js":"^10.6.0","html-to-text":"^8.0.0","identity-obj-proxy":"^3.0.0","istanbul-merge":"^1.1.1",jest:"^26.6.3","jest-fetch-mock":"^3.0.3",jsdom:"^17.0.0","node-sass":"^8.0.0",prettier:"2.1.2",react:"^16.14.0","react-dom":"^16.14.0","react-resizable":"^1.11.0","react-resize-detector":"^6.6.0","react-test-renderer":"^17.0.2","react-use-flexsearch":"^0.1.1",rollup:"4.24.0","rollup-plugin-typescript2":"0.27.3","ts-jest":"^26.5.5","ts-loader":"8.0.4",typedoc:"0.21.6","typedoc-plugin-toc-group":"thoughtspot/typedoc-plugin-toc-group",typescript:"^4.9.4","url-search-params-polyfill":"^8.1.0",util:"^0.12.4",vite:"^5.3.4"};var author="ThoughtSpot";var email="support@thoughtspot.com";var license="ThoughtSpot Development Tools End User License Agreement";var directories={lib:"lib"};var repository={type:"git",url:"git+https://github.com/thoughtspot/visual-embed-sdk.git"};var publishConfig={registry:"https://registry.npmjs.org"};var keywords=["thoughtspot","everywhere","embedded","embed","sdk","analytics"];var bugs={url:"https://github.com/thoughtspot/visual-embed-sdk/issues"};var homepage="https://github.com/thoughtspot/visual-embed-sdk#readme";var globals={window:{}};var pkgInfo = {name:name,version:version$1,description:description,module:module,main:main,types:types,files:files,exports:exports$1,typesVersions:typesVersions,"size-limit":[{path:"dist/tsembed.es.js",limit:"31 kB"}],scripts:scripts,peerDependencies:peerDependencies,dependencies:dependencies,devDependencies:devDependencies,author:author,email:email,license:license,directories:directories,repository:repository,publishConfig:publishConfig,keywords:keywords,bugs:bugs,homepage:homepage,globals:globals};
14756
+
14744
14757
  /**
14745
14758
  * Reloads the ThoughtSpot iframe.
14746
14759
  * @param iFrame
@@ -14799,7 +14812,96 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
14799
14812
  });
14800
14813
  }
14801
14814
 
14802
- var name="@thoughtspot/visual-embed-sdk";var version$1="1.35.2";var description="ThoughtSpot Embed SDK";var module="lib/src/index.js";var main="dist/tsembed.js";var types="lib/src/index.d.ts";var files=["dist/**","lib/**","src/**","cjs/**"];var exports$1={".":{"import":"./lib/src/index.js",require:"./cjs/src/index.js",types:"./lib/src/index.d.ts"},"./react":{"import":"./lib/src/react/all-types-export.js",require:"./cjs/src/react/all-types-export.js",types:"./lib/src/react/all-types-export.d.ts"},"./lib/src/react":{"import":"./lib/src/react/all-types-export.js",require:"./cjs/src/react/all-types-export.js",types:"./lib/src/react/all-types-export.d.ts"}};var typesVersions={"*":{react:["./lib/src/react/all-types-export.d.ts"]}};var scripts={lint:"eslint 'src/**'","lint:fix":"eslint 'src/**/*.*' --fix",tsc:"tsc -p . --incremental false; tsc -p . --incremental false --module commonjs --outDir cjs","build-and-publish":"npm run build:gatsby && npm run publish","bundle-dts-file":"dts-bundle --name @thoughtspot/visual-embed-sdk --out visual-embed-sdk.d.ts --main lib/src/index.d.ts","bundle-dts":"dts-bundle --name ../../dist/visual-embed-sdk --main lib/src/index.d.ts --outputAsModuleFolder=true","bundle-dts-react":"dts-bundle --name ../../../dist/visual-embed-sdk-react --main lib/src/react/index.d.ts --outputAsModuleFolder=true","bundle-dts-react-full":"dts-bundle --name ../../../dist/visual-embed-sdk-react-full --main lib/src/react/all-types-export.d.ts --outputAsModuleFolder=true",build:"rollup -c",watch:"rollup -cw",docgen:"typedoc --tsconfig tsconfig.json --theme typedoc-theme --json static/typedoc/typedoc.json --disableOutputCheck","test-sdk":"jest -c jest.config.sdk.js --runInBand",test:"npm run test-sdk",posttest:"cat ./coverage/sdk/lcov.info | coveralls","is-publish-allowed":"node scripts/is-publish-allowed.js",prepublishOnly:"npm run is-publish-allowed && npm run test && npm run tsc && npm run bundle-dts-file && npm run bundle-dts && npm run bundle-dts-react && npm run bundle-dts-react-full && npm run build","check-size":"npm run build && size-limit","publish-dev":"npm publish --tag dev","publish-prod":"npm publish --tag latest",dev:"vite -c vite.local.config.ts"};var peerDependencies={react:"> 16.8.0","react-dom":"> 16.8.0"};var dependencies={algoliasearch:"^4.10.5",classnames:"^2.3.1",dompurify:"^2.3.4",eventemitter3:"^4.0.7","gatsby-plugin-vercel":"^1.0.3","html-react-parser":"^1.4.12",lodash:"^4.17.21","mixpanel-browser":"2.47.0","ts-deepmerge":"^6.0.2",tslib:"^2.5.3","use-deep-compare-effect":"^1.8.1",yaml:"^2.5.1"};var devDependencies={"@mdx-js/mdx":"^1.6.22","@mdx-js/react":"^1.6.22","@react-icons/all-files":"^4.1.0","@rollup/plugin-commonjs":"^18.0.0","@rollup/plugin-json":"^4.1.0","@rollup/plugin-node-resolve":"^11.2.1","@rollup/plugin-replace":"^5.0.2","@size-limit/preset-big-lib":"^8.2.6","@testing-library/dom":"^7.31.0","@testing-library/jest-dom":"^5.14.1","@testing-library/react":"^11.2.7","@testing-library/user-event":"^13.1.8","@types/jest":"^22.2.3","@types/lodash":"^4.17.0","@types/mixpanel-browser":"^2.35.6","@types/react-test-renderer":"^17.0.1","@typescript-eslint/eslint-plugin":"^4.6.0","@typescript-eslint/parser":"^4.6.0",asciidoctor:"^2.2.1","babel-jest":"^26.6.3","babel-preset-gatsby":"^1.10.0","command-line-args":"^5.1.1",coveralls:"^3.1.0",crypto:"^1.0.1","current-git-branch":"^1.1.0","dts-bundle":"^0.7.3",eslint:"^7.12.1","eslint-config-airbnb-base":"^14.2.0","eslint-config-prettier":"^6.15.0","eslint-import-resolver-typescript":"^2.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-prettier":"^3.1.4","eslint-plugin-react-hooks":"^4.2.0","eslint-plugin-comment-length":"1.7.3","eslint-plugin-jsdoc":"^46.9.0","fs-extra":"^10.0.0","gh-pages":"^3.1.0","highlight.js":"^10.6.0","html-to-text":"^8.0.0","identity-obj-proxy":"^3.0.0","istanbul-merge":"^1.1.1",jest:"^26.6.3","jest-fetch-mock":"^3.0.3",jsdom:"^17.0.0","node-sass":"^8.0.0",prettier:"2.1.2",react:"^16.14.0","react-dom":"^16.14.0","react-resizable":"^1.11.0","react-resize-detector":"^6.6.0","react-test-renderer":"^17.0.2","react-use-flexsearch":"^0.1.1",rollup:"4.24.0","rollup-plugin-typescript2":"0.27.3","ts-jest":"^26.5.5","ts-loader":"8.0.4",typedoc:"0.21.6","typedoc-plugin-toc-group":"thoughtspot/typedoc-plugin-toc-group",typescript:"^4.9.4","url-search-params-polyfill":"^8.1.0",util:"^0.12.4",vite:"^5.3.4"};var author="ThoughtSpot";var email="support@thoughtspot.com";var license="ThoughtSpot Development Tools End User License Agreement";var directories={lib:"lib"};var repository={type:"git",url:"git+https://github.com/thoughtspot/visual-embed-sdk.git"};var publishConfig={registry:"https://registry.npmjs.org"};var keywords=["thoughtspot","everywhere","embedded","embed","sdk","analytics"];var bugs={url:"https://github.com/thoughtspot/visual-embed-sdk/issues"};var homepage="https://github.com/thoughtspot/visual-embed-sdk#readme";var globals={window:{}};var pkgInfo = {name:name,version:version$1,description:description,module:module,main:main,types:types,files:files,exports:exports$1,typesVersions:typesVersions,"size-limit":[{path:"dist/tsembed.es.js",limit:"31 kB"}],scripts:scripts,peerDependencies:peerDependencies,dependencies:dependencies,devDependencies:devDependencies,author:author,email:email,license:license,directories:directories,repository:repository,publishConfig:publishConfig,keywords:keywords,bugs:bugs,homepage:homepage,globals:globals};
14815
+ exports.UIPassthroughEvent = void 0;
14816
+ (function (UIPassthroughEvent) {
14817
+ UIPassthroughEvent["PinAnswerToLiveboard"] = "addVizToPinboard";
14818
+ UIPassthroughEvent["SaveAnswer"] = "saveAnswer";
14819
+ UIPassthroughEvent["GetDiscoverabilityStatus"] = "getDiscoverabilityStatus";
14820
+ UIPassthroughEvent["GetAvailableUIPassthroughs"] = "getAvailableUIPassthroughs";
14821
+ UIPassthroughEvent["GetAnswerConfig"] = "getAnswerPageConfig";
14822
+ UIPassthroughEvent["GetLiveboardConfig"] = "getPinboardPageConfig";
14823
+ })(exports.UIPassthroughEvent || (exports.UIPassthroughEvent = {}));
14824
+
14825
+ class HostEventClient {
14826
+ constructor(iFrame) {
14827
+ this.iFrame = iFrame;
14828
+ }
14829
+ /**
14830
+ * A wrapper over process trigger to
14831
+ * @param {HostEvent} message Host event to send
14832
+ * @param {any} data Data to send with the host event
14833
+ * @returns {Promise<any>} - the response from the process trigger
14834
+ */
14835
+ async processTrigger(message, data) {
14836
+ if (!this.iFrame) {
14837
+ throw new Error('Iframe element is not set');
14838
+ }
14839
+ const thoughtspotHost = getEmbedConfig().thoughtSpotHost;
14840
+ return processTrigger(this.iFrame, message, thoughtspotHost, data);
14841
+ }
14842
+ async handleHostEventWithParam(apiName, parameters) {
14843
+ var _a, _b, _c, _d;
14844
+ const response = (_b = (_a = (await this.triggerUIPassthroughApi(apiName, parameters))) === null || _a === void 0 ? void 0 : _a.filter) === null || _b === void 0 ? void 0 : _b.call(_a, (r) => r.error || r.value)[0];
14845
+ if (!response) {
14846
+ const error = `No answer found${parameters.vizId ? ` for vizId: ${parameters.vizId}` : ''}.`;
14847
+ // eslint-disable-next-line no-throw-literal
14848
+ throw { error };
14849
+ }
14850
+ const errors = response.error
14851
+ || ((_c = response.value) === null || _c === void 0 ? void 0 : _c.errors)
14852
+ || ((_d = response.value) === null || _d === void 0 ? void 0 : _d.error);
14853
+ if (errors) {
14854
+ // eslint-disable-next-line no-throw-literal
14855
+ throw { error: response.error };
14856
+ }
14857
+ return { ...response.value };
14858
+ }
14859
+ async hostEventFallback(hostEvent, data) {
14860
+ return this.processTrigger(hostEvent, data);
14861
+ }
14862
+ /**
14863
+ * Setter for the iframe element used for host events
14864
+ * @param {HTMLIFrameElement} iFrame - the iframe element to set
14865
+ */
14866
+ setIframeElement(iFrame) {
14867
+ this.iFrame = iFrame;
14868
+ }
14869
+ async triggerUIPassthroughApi(apiName, parameters) {
14870
+ const res = await this.processTrigger(exports.HostEvent.UIPassthrough, {
14871
+ type: apiName,
14872
+ parameters,
14873
+ });
14874
+ return res;
14875
+ }
14876
+ async handlePinEvent(payload) {
14877
+ if (!payload || !('newVizName' in payload)) {
14878
+ return this.hostEventFallback(exports.HostEvent.Pin, payload);
14879
+ }
14880
+ return this.handleHostEventWithParam(exports.UIPassthroughEvent.PinAnswerToLiveboard, payload);
14881
+ }
14882
+ async handleSaveAnswerEvent(payload) {
14883
+ var _a, _b, _c, _d;
14884
+ if (!payload || !('name' in payload) || !('description' in payload)) {
14885
+ // Save is the fallback for SaveAnswer
14886
+ return this.hostEventFallback(exports.HostEvent.Save, payload);
14887
+ }
14888
+ const data = await this.handleHostEventWithParam(exports.UIPassthroughEvent.SaveAnswer, payload);
14889
+ return {
14890
+ ...data,
14891
+ answerId: (_d = (_c = (_b = (_a = data === null || data === void 0 ? void 0 : data.saveResponse) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.Answer__save) === null || _c === void 0 ? void 0 : _c.answer) === null || _d === void 0 ? void 0 : _d.id,
14892
+ };
14893
+ }
14894
+ async triggerHostEvent(hostEvent, payload) {
14895
+ switch (hostEvent) {
14896
+ case exports.HostEvent.Pin:
14897
+ return this.handlePinEvent(payload);
14898
+ case exports.HostEvent.SaveAnswer:
14899
+ return this.handleSaveAnswerEvent(payload);
14900
+ default:
14901
+ return this.hostEventFallback(hostEvent, payload);
14902
+ }
14903
+ }
14904
+ }
14803
14905
 
14804
14906
  /**
14805
14907
  * Copyright (c) 2022
@@ -14827,6 +14929,14 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
14827
14929
  * React+GraphQL
14828
14930
  */
14829
14931
  class TsEmbed {
14932
+ /**
14933
+ * Setter for the iframe element
14934
+ * @param {HTMLIFrameElement} iFrame HTMLIFrameElement
14935
+ */
14936
+ setIframeElement(iFrame) {
14937
+ this.iFrame = iFrame;
14938
+ this.hostEventClient.setIframeElement(iFrame);
14939
+ }
14830
14940
  constructor(domSelector, viewConfig) {
14831
14941
  /**
14832
14942
  * The key to store the embed instance in the DOM node
@@ -14955,6 +15065,7 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
14955
15065
  uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_EMBED_CREATE, {
14956
15066
  ...viewConfig,
14957
15067
  });
15068
+ this.hostEventClient = new HostEventClient(this.iFrame);
14958
15069
  }
14959
15070
  /**
14960
15071
  * Throws error encountered during initialization.
@@ -15229,6 +15340,9 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
15229
15340
  setAttributes(iFrame, restParams);
15230
15341
  iFrame.style.width = `${width}`;
15231
15342
  iFrame.style.height = `${height}`;
15343
+ // Set minimum height to the frame so that,
15344
+ // scaling down on the fullheight doesn't make it too small.
15345
+ iFrame.style.minHeight = `${height}`;
15232
15346
  iFrame.style.border = '0';
15233
15347
  iFrame.name = 'ThoughtSpot Embedded Analytics';
15234
15348
  return iFrame;
@@ -15272,7 +15386,7 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
15272
15386
  this.handleInsertionIntoDOM(this.embedConfig.loginFailedMessage);
15273
15387
  return;
15274
15388
  }
15275
- this.iFrame = this.iFrame || this.createIframeEl(url);
15389
+ this.setIframeElement(this.iFrame || this.createIframeEl(url));
15276
15390
  this.iFrame.addEventListener('load', () => {
15277
15391
  nextInQueue();
15278
15392
  const loadTimestamp = Date.now();
@@ -15331,7 +15445,7 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
15331
15445
  if (this.preRenderWrapper && this.preRenderChild) {
15332
15446
  this.isPreRendered = true;
15333
15447
  if (this.preRenderChild instanceof HTMLIFrameElement) {
15334
- this.iFrame = this.preRenderChild;
15448
+ this.setIframeElement(this.preRenderChild);
15335
15449
  }
15336
15450
  this.insertedDomEl = this.preRenderWrapper;
15337
15451
  this.isRendered = true;
@@ -15369,7 +15483,7 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
15369
15483
  this.preRenderChild = preRenderChild;
15370
15484
  this.preRenderWrapper = preRenderWrapper;
15371
15485
  if (preRenderChild instanceof HTMLIFrameElement) {
15372
- this.iFrame = preRenderChild;
15486
+ this.setIframeElement(preRenderChild);
15373
15487
  }
15374
15488
  this.insertedDomEl = preRenderWrapper;
15375
15489
  if (this.showPreRenderByDefault) {
@@ -15568,10 +15682,11 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
15568
15682
  }
15569
15683
  /**
15570
15684
  * Triggers an event to the embedded app
15571
- * @param messageType The event type
15572
- * @param data The payload to send with the message
15685
+ * @param {HostEvent} messageType The event type
15686
+ * @param {any} data The payload to send with the message
15687
+ * @returns A promise that resolves with the response from the embedded app
15573
15688
  */
15574
- trigger(messageType, data = {}) {
15689
+ async trigger(messageType, data) {
15575
15690
  uploadMixpanelEvent(`${MIXPANEL_EVENT.VISUAL_SDK_TRIGGER}-${messageType}`);
15576
15691
  if (!this.isRendered) {
15577
15692
  this.handleError('Please call render before triggering events');
@@ -15581,7 +15696,18 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
15581
15696
  this.handleError('Host event type is undefined');
15582
15697
  return null;
15583
15698
  }
15584
- return processTrigger(this.iFrame, messageType, this.thoughtSpotHost, data);
15699
+ return this.hostEventClient.triggerHostEvent(messageType, data);
15700
+ }
15701
+ /**
15702
+ * Triggers an event to the embedded app, skipping the UI flow.
15703
+ * @param {UIPassthroughEvent} apiName - The name of the API to be triggered.
15704
+ * @param {UIPassthroughRequest} parameters - The parameters to be passed to the API.
15705
+ * @returns {Promise<UIPassthroughRequest>} - A promise that resolves with the response
15706
+ * from the embedded app.
15707
+ */
15708
+ async triggerUIPassThrough(apiName, parameters) {
15709
+ const response = this.hostEventClient.triggerUIPassthroughApi(apiName, parameters);
15710
+ return response;
15585
15711
  }
15586
15712
  /**
15587
15713
  * Marks the ThoughtSpot object to have been rendered
@@ -15770,7 +15896,7 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
15770
15896
  /**
15771
15897
  * Returns the answerService which can be used to make arbitrary graphql calls on top
15772
15898
  * session.
15773
- * @param vizId [Optional] to get for a specific viz in case of a liveboard.
15899
+ * @param vizId [Optional] to get for a specific viz in case of a Liveboard.
15774
15900
  * @version SDK: 1.25.0 / ThoughtSpot 9.10.0
15775
15901
  */
15776
15902
  async getAnswerService(vizId) {
@@ -15939,10 +16065,11 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
15939
16065
  responder({ type: exports.EmbedEvent.EmbedIframeCenter, data: obj });
15940
16066
  };
15941
16067
  this.setIframeHeightForNonEmbedLiveboard = (data) => {
15942
- const { height: frameHeight, ...restParams } = this.viewConfig.frameParams || {};
15943
- if (!data.data.currentPath.startsWith('/pinboard/')) {
15944
- this.setIFrameHeight(frameHeight || this.defaultHeight);
16068
+ if (data.data.currentPath.startsWith('/embed/viz/')
16069
+ || data.data.currentPath.startsWith('/embed/insights/viz/')) {
16070
+ return;
15945
16071
  }
16072
+ this.setIFrameHeight(this.defaultHeight);
15946
16073
  };
15947
16074
  if (this.viewConfig.fullHeight === true) {
15948
16075
  this.on(exports.EmbedEvent.RouteChange, this.setIframeHeightForNonEmbedLiveboard);
@@ -16395,7 +16522,7 @@ query GetEurekaVizSnapshots(
16395
16522
  * @param messageType The event type
16396
16523
  * @param data The payload to send with the message
16397
16524
  */
16398
- trigger(messageType, data = {}) {
16525
+ trigger(messageType, data) {
16399
16526
  const dataWithVizId = data;
16400
16527
  if (messageType === exports.HostEvent.SetActiveTab) {
16401
16528
  this.setActiveTab(data);
@@ -16434,8 +16561,8 @@ query GetEurekaVizSnapshots(
16434
16561
  }
16435
16562
  }
16436
16563
  /**
16437
- * Returns the full url of the liveboard/viz which can be used to open
16438
- * this liveboard inside the full Thoughtspot application in a new tab.
16564
+ * Returns the full url of the Liveboard/visualization which can be used to open
16565
+ * this Liveboard inside the full Thoughtspot application in a new tab.
16439
16566
  * @returns url string
16440
16567
  */
16441
16568
  getLiveboardUrl() {