@thoughtspot/visual-embed-sdk 1.52.2-beta.2 → 1.53.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/package.json +1 -1
- package/cjs/src/contracts/contracts.spec.js +4 -0
- package/cjs/src/contracts/contracts.spec.js.map +1 -1
- package/cjs/src/contracts/host-event-contracts.d.ts +10 -0
- package/cjs/src/contracts/host-event-contracts.d.ts.map +1 -1
- package/cjs/src/css-variables.d.ts +373 -5
- package/cjs/src/css-variables.d.ts.map +1 -1
- package/cjs/src/embed/app.d.ts +15 -0
- package/cjs/src/embed/app.d.ts.map +1 -1
- package/cjs/src/embed/app.js +6 -3
- package/cjs/src/embed/app.js.map +1 -1
- package/cjs/src/embed/app.spec.js +28 -0
- package/cjs/src/embed/app.spec.js.map +1 -1
- package/cjs/src/embed/auto-frame-renderer.d.ts.map +1 -1
- package/cjs/src/embed/auto-frame-renderer.js +244 -4
- package/cjs/src/embed/auto-frame-renderer.js.map +1 -1
- package/cjs/src/embed/auto-frame-renderer.spec.js +389 -0
- package/cjs/src/embed/auto-frame-renderer.spec.js.map +1 -1
- package/cjs/src/embed/bodyless-conversation.js +1 -1
- package/cjs/src/embed/bodyless-conversation.js.map +1 -1
- package/cjs/src/embed/conversation.d.ts +29 -0
- package/cjs/src/embed/conversation.d.ts.map +1 -1
- package/cjs/src/embed/conversation.js +7 -3
- package/cjs/src/embed/conversation.js.map +1 -1
- package/cjs/src/embed/conversation.spec.js +88 -0
- package/cjs/src/embed/conversation.spec.js.map +1 -1
- package/cjs/src/embed/host-events.spec.js +32 -0
- package/cjs/src/embed/host-events.spec.js.map +1 -1
- package/cjs/src/embed/liveboard-override-utils.d.ts +59 -0
- package/cjs/src/embed/liveboard-override-utils.d.ts.map +1 -0
- package/cjs/src/embed/liveboard-override-utils.js +19 -0
- package/cjs/src/embed/liveboard-override-utils.js.map +1 -0
- package/cjs/src/embed/liveboard-override-utils.spec.d.ts +2 -0
- package/cjs/src/embed/liveboard-override-utils.spec.d.ts.map +1 -0
- package/cjs/src/embed/liveboard-override-utils.spec.js +34 -0
- package/cjs/src/embed/liveboard-override-utils.spec.js.map +1 -0
- package/cjs/src/embed/liveboard.d.ts +44 -13
- package/cjs/src/embed/liveboard.d.ts.map +1 -1
- package/cjs/src/embed/liveboard.js +19 -23
- package/cjs/src/embed/liveboard.js.map +1 -1
- package/cjs/src/embed/liveboard.spec.js +122 -0
- package/cjs/src/embed/liveboard.spec.js.map +1 -1
- package/cjs/src/embed/search-bar.js +1 -1
- package/cjs/src/embed/search-bar.js.map +1 -1
- package/cjs/src/embed/search.js +1 -1
- package/cjs/src/embed/search.js.map +1 -1
- package/cjs/src/embed/search.spec.js +20 -0
- package/cjs/src/embed/search.spec.js.map +1 -1
- package/cjs/src/embed/spotter-utils.d.ts +12 -0
- package/cjs/src/embed/spotter-utils.d.ts.map +1 -1
- package/cjs/src/embed/spotter-utils.js +20 -2
- package/cjs/src/embed/spotter-utils.js.map +1 -1
- package/cjs/src/embed/spotter-utils.spec.js +19 -0
- package/cjs/src/embed/spotter-utils.spec.js.map +1 -1
- package/cjs/src/embed/spotter-viz-utils.d.ts +15 -0
- package/cjs/src/embed/spotter-viz-utils.d.ts.map +1 -1
- package/cjs/src/embed/spotter-viz-utils.js.map +1 -1
- package/cjs/src/embed/spotter-viz-utils.spec.js +11 -0
- package/cjs/src/embed/spotter-viz-utils.spec.js.map +1 -1
- package/cjs/src/embed/ts-embed.d.ts +18 -20
- package/cjs/src/embed/ts-embed.d.ts.map +1 -1
- package/cjs/src/embed/ts-embed.js +181 -45
- package/cjs/src/embed/ts-embed.js.map +1 -1
- package/cjs/src/embed/ts-embed.spec.d.ts.map +1 -1
- package/cjs/src/embed/ts-embed.spec.js +610 -0
- package/cjs/src/embed/ts-embed.spec.js.map +1 -1
- package/cjs/src/index.d.ts +5 -3
- package/cjs/src/index.d.ts.map +1 -1
- package/cjs/src/index.js +4 -2
- package/cjs/src/index.js.map +1 -1
- package/cjs/src/mixpanel-service.d.ts +1 -0
- package/cjs/src/mixpanel-service.d.ts.map +1 -1
- package/cjs/src/mixpanel-service.js +1 -0
- package/cjs/src/mixpanel-service.js.map +1 -1
- package/cjs/src/react/all-types-export.d.ts +1 -1
- package/cjs/src/react/all-types-export.d.ts.map +1 -1
- package/cjs/src/react/all-types-export.js +2 -1
- package/cjs/src/react/all-types-export.js.map +1 -1
- package/cjs/src/types.d.ts +251 -4
- package/cjs/src/types.d.ts.map +1 -1
- package/cjs/src/types.js +176 -0
- package/cjs/src/types.js.map +1 -1
- package/cjs/src/utils/graphql/answerService/answer-queries.d.ts +1 -0
- package/cjs/src/utils/graphql/answerService/answer-queries.d.ts.map +1 -1
- package/cjs/src/utils/graphql/answerService/answer-queries.js +8 -1
- package/cjs/src/utils/graphql/answerService/answer-queries.js.map +1 -1
- package/cjs/src/utils/graphql/answerService/answerService.d.ts +28 -4
- package/cjs/src/utils/graphql/answerService/answerService.d.ts.map +1 -1
- package/cjs/src/utils/graphql/answerService/answerService.js +39 -4
- package/cjs/src/utils/graphql/answerService/answerService.js.map +1 -1
- package/cjs/src/utils/graphql/answerService/answerService.spec.js +124 -0
- package/cjs/src/utils/graphql/answerService/answerService.spec.js.map +1 -1
- package/cjs/src/utils/runtimeTelemetry.d.ts +11 -0
- package/cjs/src/utils/runtimeTelemetry.d.ts.map +1 -0
- package/cjs/src/utils/runtimeTelemetry.js +34 -0
- package/cjs/src/utils/runtimeTelemetry.js.map +1 -0
- package/cjs/src/utils/runtimeTelemetry.spec.d.ts +2 -0
- package/cjs/src/utils/runtimeTelemetry.spec.d.ts.map +1 -0
- package/cjs/src/utils/runtimeTelemetry.spec.js +124 -0
- package/cjs/src/utils/runtimeTelemetry.spec.js.map +1 -0
- package/dist/{index-CnHREfvN.js → index-CrBnZBZv.js} +1 -1
- package/dist/src/contracts/host-event-contracts.d.ts +10 -0
- package/dist/src/contracts/host-event-contracts.d.ts.map +1 -1
- package/dist/src/css-variables.d.ts +373 -5
- package/dist/src/css-variables.d.ts.map +1 -1
- package/dist/src/embed/app.d.ts +15 -0
- package/dist/src/embed/app.d.ts.map +1 -1
- package/dist/src/embed/auto-frame-renderer.d.ts.map +1 -1
- package/dist/src/embed/conversation.d.ts +29 -0
- package/dist/src/embed/conversation.d.ts.map +1 -1
- package/dist/src/embed/liveboard-override-utils.d.ts +59 -0
- package/dist/src/embed/liveboard-override-utils.d.ts.map +1 -0
- package/dist/src/embed/liveboard-override-utils.spec.d.ts +2 -0
- package/dist/src/embed/liveboard-override-utils.spec.d.ts.map +1 -0
- package/dist/src/embed/liveboard.d.ts +44 -13
- package/dist/src/embed/liveboard.d.ts.map +1 -1
- package/dist/src/embed/spotter-utils.d.ts +12 -0
- package/dist/src/embed/spotter-utils.d.ts.map +1 -1
- package/dist/src/embed/spotter-viz-utils.d.ts +15 -0
- package/dist/src/embed/spotter-viz-utils.d.ts.map +1 -1
- package/dist/src/embed/ts-embed.d.ts +18 -20
- package/dist/src/embed/ts-embed.d.ts.map +1 -1
- package/dist/src/embed/ts-embed.spec.d.ts.map +1 -1
- package/dist/src/index.d.ts +5 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/mixpanel-service.d.ts +1 -0
- package/dist/src/mixpanel-service.d.ts.map +1 -1
- package/dist/src/react/all-types-export.d.ts +1 -1
- package/dist/src/react/all-types-export.d.ts.map +1 -1
- package/dist/src/types.d.ts +251 -4
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/utils/graphql/answerService/answer-queries.d.ts +1 -0
- package/dist/src/utils/graphql/answerService/answer-queries.d.ts.map +1 -1
- package/dist/src/utils/graphql/answerService/answerService.d.ts +28 -4
- package/dist/src/utils/graphql/answerService/answerService.d.ts.map +1 -1
- package/dist/src/utils/runtimeTelemetry.d.ts +11 -0
- package/dist/src/utils/runtimeTelemetry.d.ts.map +1 -0
- package/dist/src/utils/runtimeTelemetry.spec.d.ts +2 -0
- package/dist/src/utils/runtimeTelemetry.spec.d.ts.map +1 -0
- package/dist/tsembed-react.es.js +500 -85
- package/dist/tsembed-react.js +499 -84
- package/dist/tsembed.es.js +743 -90
- package/dist/tsembed.js +741 -88
- package/dist/visual-embed-sdk-react-full.d.ts +788 -44
- package/dist/visual-embed-sdk-react.d.ts +783 -44
- package/dist/visual-embed-sdk.d.ts +815 -45
- package/lib/package.json +1 -1
- package/lib/src/contracts/contracts.spec.js +4 -0
- package/lib/src/contracts/contracts.spec.js.map +1 -1
- package/lib/src/contracts/host-event-contracts.d.ts +10 -0
- package/lib/src/contracts/host-event-contracts.d.ts.map +1 -1
- package/lib/src/css-variables.d.ts +373 -5
- package/lib/src/css-variables.d.ts.map +1 -1
- package/lib/src/embed/app.d.ts +15 -0
- package/lib/src/embed/app.d.ts.map +1 -1
- package/lib/src/embed/app.js +7 -4
- package/lib/src/embed/app.js.map +1 -1
- package/lib/src/embed/app.spec.js +28 -0
- package/lib/src/embed/app.spec.js.map +1 -1
- package/lib/src/embed/auto-frame-renderer.d.ts.map +1 -1
- package/lib/src/embed/auto-frame-renderer.js +244 -4
- package/lib/src/embed/auto-frame-renderer.js.map +1 -1
- package/lib/src/embed/auto-frame-renderer.spec.js +389 -0
- package/lib/src/embed/auto-frame-renderer.spec.js.map +1 -1
- package/lib/src/embed/bodyless-conversation.js +1 -1
- package/lib/src/embed/bodyless-conversation.js.map +1 -1
- package/lib/src/embed/conversation.d.ts +29 -0
- package/lib/src/embed/conversation.d.ts.map +1 -1
- package/lib/src/embed/conversation.js +8 -4
- package/lib/src/embed/conversation.js.map +1 -1
- package/lib/src/embed/conversation.spec.js +89 -1
- package/lib/src/embed/conversation.spec.js.map +1 -1
- package/lib/src/embed/host-events.spec.js +32 -0
- package/lib/src/embed/host-events.spec.js.map +1 -1
- package/lib/src/embed/liveboard-override-utils.d.ts +59 -0
- package/lib/src/embed/liveboard-override-utils.d.ts.map +1 -0
- package/lib/src/embed/liveboard-override-utils.js +15 -0
- package/lib/src/embed/liveboard-override-utils.js.map +1 -0
- package/lib/src/embed/liveboard-override-utils.spec.d.ts +2 -0
- package/lib/src/embed/liveboard-override-utils.spec.d.ts.map +1 -0
- package/lib/src/embed/liveboard-override-utils.spec.js +32 -0
- package/lib/src/embed/liveboard-override-utils.spec.js.map +1 -0
- package/lib/src/embed/liveboard.d.ts +44 -13
- package/lib/src/embed/liveboard.d.ts.map +1 -1
- package/lib/src/embed/liveboard.js +19 -23
- package/lib/src/embed/liveboard.js.map +1 -1
- package/lib/src/embed/liveboard.spec.js +122 -0
- package/lib/src/embed/liveboard.spec.js.map +1 -1
- package/lib/src/embed/search-bar.js +1 -1
- package/lib/src/embed/search-bar.js.map +1 -1
- package/lib/src/embed/search.js +1 -1
- package/lib/src/embed/search.js.map +1 -1
- package/lib/src/embed/search.spec.js +20 -0
- package/lib/src/embed/search.spec.js.map +1 -1
- package/lib/src/embed/spotter-utils.d.ts +12 -0
- package/lib/src/embed/spotter-utils.d.ts.map +1 -1
- package/lib/src/embed/spotter-utils.js +19 -1
- package/lib/src/embed/spotter-utils.js.map +1 -1
- package/lib/src/embed/spotter-utils.spec.js +19 -0
- package/lib/src/embed/spotter-utils.spec.js.map +1 -1
- package/lib/src/embed/spotter-viz-utils.d.ts +15 -0
- package/lib/src/embed/spotter-viz-utils.d.ts.map +1 -1
- package/lib/src/embed/spotter-viz-utils.js.map +1 -1
- package/lib/src/embed/spotter-viz-utils.spec.js +11 -0
- package/lib/src/embed/spotter-viz-utils.spec.js.map +1 -1
- package/lib/src/embed/ts-embed.d.ts +18 -20
- package/lib/src/embed/ts-embed.d.ts.map +1 -1
- package/lib/src/embed/ts-embed.js +181 -45
- package/lib/src/embed/ts-embed.js.map +1 -1
- package/lib/src/embed/ts-embed.spec.d.ts.map +1 -1
- package/lib/src/embed/ts-embed.spec.js +611 -1
- package/lib/src/embed/ts-embed.spec.js.map +1 -1
- package/lib/src/index.d.ts +5 -3
- package/lib/src/index.d.ts.map +1 -1
- package/lib/src/index.js +3 -2
- package/lib/src/index.js.map +1 -1
- package/lib/src/mixpanel-service.d.ts +1 -0
- package/lib/src/mixpanel-service.d.ts.map +1 -1
- package/lib/src/mixpanel-service.js +1 -0
- package/lib/src/mixpanel-service.js.map +1 -1
- package/lib/src/react/all-types-export.d.ts +1 -1
- package/lib/src/react/all-types-export.d.ts.map +1 -1
- package/lib/src/react/all-types-export.js +1 -1
- package/lib/src/react/all-types-export.js.map +1 -1
- package/lib/src/types.d.ts +251 -4
- package/lib/src/types.d.ts.map +1 -1
- package/lib/src/types.js +176 -0
- package/lib/src/types.js.map +1 -1
- package/lib/src/utils/graphql/answerService/answer-queries.d.ts +1 -0
- package/lib/src/utils/graphql/answerService/answer-queries.d.ts.map +1 -1
- package/lib/src/utils/graphql/answerService/answer-queries.js +7 -0
- package/lib/src/utils/graphql/answerService/answer-queries.js.map +1 -1
- package/lib/src/utils/graphql/answerService/answerService.d.ts +28 -4
- package/lib/src/utils/graphql/answerService/answerService.d.ts.map +1 -1
- package/lib/src/utils/graphql/answerService/answerService.js +39 -4
- package/lib/src/utils/graphql/answerService/answerService.js.map +1 -1
- package/lib/src/utils/graphql/answerService/answerService.spec.js +125 -1
- package/lib/src/utils/graphql/answerService/answerService.spec.js.map +1 -1
- package/lib/src/utils/runtimeTelemetry.d.ts +11 -0
- package/lib/src/utils/runtimeTelemetry.d.ts.map +1 -0
- package/lib/src/utils/runtimeTelemetry.js +28 -0
- package/lib/src/utils/runtimeTelemetry.js.map +1 -0
- package/lib/src/utils/runtimeTelemetry.spec.d.ts +2 -0
- package/lib/src/utils/runtimeTelemetry.spec.d.ts.map +1 -0
- package/lib/src/utils/runtimeTelemetry.spec.js +122 -0
- package/lib/src/utils/runtimeTelemetry.spec.js.map +1 -0
- package/lib/src/visual-embed-sdk.d.ts +815 -45
- package/package.json +1 -1
- package/src/contracts/contracts.spec.ts +4 -0
- package/src/contracts/host-event-contracts.ts +13 -0
- package/src/css-variables.ts +475 -26
- package/src/embed/app.spec.ts +32 -0
- package/src/embed/app.ts +29 -4
- package/src/embed/auto-frame-renderer.spec.ts +464 -0
- package/src/embed/auto-frame-renderer.ts +305 -6
- package/src/embed/bodyless-conversation.ts +1 -1
- package/src/embed/conversation.spec.ts +118 -1
- package/src/embed/conversation.ts +42 -3
- package/src/embed/host-events.spec.ts +44 -0
- package/src/embed/liveboard-override-utils.spec.ts +38 -0
- package/src/embed/liveboard-override-utils.ts +71 -0
- package/src/embed/liveboard.spec.ts +138 -0
- package/src/embed/liveboard.ts +64 -24
- package/src/embed/search-bar.tsx +1 -1
- package/src/embed/search.spec.ts +23 -0
- package/src/embed/search.ts +1 -1
- package/src/embed/spotter-utils.spec.ts +20 -0
- package/src/embed/spotter-utils.ts +24 -1
- package/src/embed/spotter-viz-utils.spec.ts +11 -0
- package/src/embed/spotter-viz-utils.ts +15 -0
- package/src/embed/ts-embed.spec.ts +767 -0
- package/src/embed/ts-embed.ts +186 -41
- package/src/index.ts +18 -1
- package/src/mixpanel-service.ts +1 -0
- package/src/react/all-types-export.ts +7 -0
- package/src/types.ts +254 -5
- package/src/utils/graphql/answerService/answer-queries.ts +8 -0
- package/src/utils/graphql/answerService/answerService.spec.ts +145 -1
- package/src/utils/graphql/answerService/answerService.ts +65 -3
- package/src/utils/runtimeTelemetry.spec.ts +148 -0
- package/src/utils/runtimeTelemetry.ts +50 -0
package/dist/tsembed-react.es.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* @thoughtspot/visual-embed-sdk version 1.
|
|
1
|
+
/* @thoughtspot/visual-embed-sdk version 1.53.1 */
|
|
2
2
|
'use client';
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import React__default, { useRef, useCallback } from 'react';
|
|
@@ -1393,6 +1393,36 @@ var EmbedEvent;
|
|
|
1393
1393
|
* ```
|
|
1394
1394
|
*/
|
|
1395
1395
|
EmbedEvent["Edit"] = "edit";
|
|
1396
|
+
/**
|
|
1397
|
+
* Emitted when a user clicks **Edit** on a Liveboard.
|
|
1398
|
+
*
|
|
1399
|
+
* Fired alongside {@link EmbedEvent.Edit} for backward compatibility;
|
|
1400
|
+
* listen to this instead of `Edit` to target the Liveboard surface only.
|
|
1401
|
+
* @version SDK: 1.54.0 | ThoughtSpot Cloud: 26.11.0.cl
|
|
1402
|
+
* @example
|
|
1403
|
+
* ```js
|
|
1404
|
+
* liveboardEmbed.on(EmbedEvent.EditLiveboard, payload => {
|
|
1405
|
+
* console.log('Liveboard edit', payload);
|
|
1406
|
+
* })
|
|
1407
|
+
* ```
|
|
1408
|
+
*/
|
|
1409
|
+
EmbedEvent["EditLiveboard"] = "editLiveboard";
|
|
1410
|
+
/**
|
|
1411
|
+
* Emitted when a user clicks **Edit** on a visualization inside a
|
|
1412
|
+
* Liveboard.
|
|
1413
|
+
*
|
|
1414
|
+
* Fired alongside {@link EmbedEvent.Edit} for backward compatibility;
|
|
1415
|
+
* listen to this instead of `Edit` to target the visualization surface
|
|
1416
|
+
* only.
|
|
1417
|
+
* @version SDK: 1.54.0 | ThoughtSpot Cloud: 26.11.0.cl
|
|
1418
|
+
* @example
|
|
1419
|
+
* ```js
|
|
1420
|
+
* liveboardEmbed.on(EmbedEvent.EditVisualization, payload => {
|
|
1421
|
+
* console.log('visualization edit', payload);
|
|
1422
|
+
* })
|
|
1423
|
+
* ```
|
|
1424
|
+
*/
|
|
1425
|
+
EmbedEvent["EditVisualization"] = "editVisualization";
|
|
1396
1426
|
/**
|
|
1397
1427
|
* Emitted when a user clicks *Make a copy* on a Liveboard
|
|
1398
1428
|
* @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw
|
|
@@ -3364,6 +3394,46 @@ var HostEvent;
|
|
|
3364
3394
|
* @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1.sw
|
|
3365
3395
|
*/
|
|
3366
3396
|
HostEvent["Edit"] = "edit";
|
|
3397
|
+
/**
|
|
3398
|
+
* Trigger the **Edit** action on a Liveboard only — does not affect a
|
|
3399
|
+
* visualization's edit surface.
|
|
3400
|
+
*
|
|
3401
|
+
* Behaves like {@link HostEvent.Edit} restricted to the Liveboard
|
|
3402
|
+
* surface. Use {@link HostEvent.EditVisualization} to target a
|
|
3403
|
+
* visualization instead, or `HostEvent.Edit` to control whichever
|
|
3404
|
+
* surface applies contextually (unchanged, existing behavior).
|
|
3405
|
+
* @example
|
|
3406
|
+
* ```js
|
|
3407
|
+
* liveboardEmbed.trigger(HostEvent.EditLiveboard)
|
|
3408
|
+
* ```
|
|
3409
|
+
* @version SDK: 1.54.0 | ThoughtSpot Cloud: 26.11.0.cl
|
|
3410
|
+
*/
|
|
3411
|
+
HostEvent["EditLiveboard"] = "editLiveboard";
|
|
3412
|
+
/**
|
|
3413
|
+
* Trigger the **Edit** action on a specific visualization inside a
|
|
3414
|
+
* Liveboard only — does not affect the Liveboard-level edit surface.
|
|
3415
|
+
* @param - Object parameter. Includes the following keys:
|
|
3416
|
+
* - `vizId`: **Required.** The visualization to edit.
|
|
3417
|
+
*
|
|
3418
|
+
* @example
|
|
3419
|
+
* ```js
|
|
3420
|
+
* liveboardEmbed.trigger(HostEvent.EditVisualization, {vizId:
|
|
3421
|
+
* '730496d6-6903-4601-937e-2c691821af3c'})
|
|
3422
|
+
* ```
|
|
3423
|
+
* @version SDK: 1.54.0 | ThoughtSpot Cloud: 26.11.0.cl
|
|
3424
|
+
*/
|
|
3425
|
+
HostEvent["EditVisualization"] = "editVisualization";
|
|
3426
|
+
/**
|
|
3427
|
+
* Exits Liveboard edit mode , equivalent to clicking the
|
|
3428
|
+
* *Cancel* button in the Liveboard edit header. The Liveboard returns to
|
|
3429
|
+
* view mode and the embedded app emits the {@link EmbedEvent.Cancel} event.
|
|
3430
|
+
* @version SDK: 1.55.0 | ThoughtSpot Cloud: 26.12.0.cl
|
|
3431
|
+
* @example
|
|
3432
|
+
* ```js
|
|
3433
|
+
* liveboardEmbed.trigger(HostEvent.ExitEditMode);
|
|
3434
|
+
* ```
|
|
3435
|
+
*/
|
|
3436
|
+
HostEvent["ExitEditMode"] = "exitEditMode";
|
|
3367
3437
|
/**
|
|
3368
3438
|
* Trigger the **Copy link** action on a Liveboard or visualization
|
|
3369
3439
|
* Payload: {@link VizScopedRequest}.
|
|
@@ -4899,6 +4969,39 @@ var HostEvent;
|
|
|
4899
4969
|
* @version SDK: 1.49.0 | ThoughtSpot Cloud: 26.6.0.cl
|
|
4900
4970
|
*/
|
|
4901
4971
|
HostEvent["RefreshLiveboardBrowserCache"] = "refreshLiveboardBrowserCache";
|
|
4972
|
+
/**
|
|
4973
|
+
* Switch the embed between dark appearance and its default appearance
|
|
4974
|
+
* while it is open, without reloading it.
|
|
4975
|
+
* Payload: {@link UpdateThemeRequest}.
|
|
4976
|
+
*
|
|
4977
|
+
* Use it to keep the embed in step with a theme switch in your
|
|
4978
|
+
* application; the appearance the embed loads with is set by `isDarkMode`.
|
|
4979
|
+
* The event resolves with the applied value, such as `{ isDarkMode: true }`.
|
|
4980
|
+
* When dark appearance is not available in the embed, the embed does not
|
|
4981
|
+
* change and the event rejects with an error message instead.
|
|
4982
|
+
* @version SDK: 1.55.0 | ThoughtSpot Cloud: 26.12.0.cl
|
|
4983
|
+
* @param - `isDarkMode` - `true` for dark appearance, `false` for the
|
|
4984
|
+
* default appearance.
|
|
4985
|
+
* @example
|
|
4986
|
+
* ```js
|
|
4987
|
+
* appEmbed.trigger(HostEvent.UpdateTheme, { isDarkMode: true });
|
|
4988
|
+
* ```
|
|
4989
|
+
* @example
|
|
4990
|
+
* ```js
|
|
4991
|
+
* // Follow a theme switch in your application
|
|
4992
|
+
* const themeSwitch = document.querySelector('#theme-switch');
|
|
4993
|
+
* themeSwitch.addEventListener('change', async (event) => {
|
|
4994
|
+
* try {
|
|
4995
|
+
* await appEmbed.trigger(HostEvent.UpdateTheme, {
|
|
4996
|
+
* isDarkMode: event.target.checked,
|
|
4997
|
+
* });
|
|
4998
|
+
* } catch (error) {
|
|
4999
|
+
* console.warn(error);
|
|
5000
|
+
* }
|
|
5001
|
+
* });
|
|
5002
|
+
* ```
|
|
5003
|
+
*/
|
|
5004
|
+
HostEvent["UpdateTheme"] = "UpdateTheme";
|
|
4902
5005
|
})(HostEvent || (HostEvent = {}));
|
|
4903
5006
|
/**
|
|
4904
5007
|
* The different visual modes that the data sources panel within
|
|
@@ -4926,6 +5029,22 @@ var DataSourceVisualMode;
|
|
|
4926
5029
|
var Param;
|
|
4927
5030
|
(function (Param) {
|
|
4928
5031
|
Param["Tsmcp"] = "tsmcp";
|
|
5032
|
+
/**
|
|
5033
|
+
* Marker added by a host app replaying a stored conversation. Carries the
|
|
5034
|
+
* analytical session (conversation) identifier, from which the renderer
|
|
5035
|
+
* resolves the answer's current session parameters. Stripped before the
|
|
5036
|
+
* URL reaches the ThoughtSpot application.
|
|
5037
|
+
* @version SDK: 1.52.2 | ThoughtSpot Cloud: 26.9.0.cl
|
|
5038
|
+
*/
|
|
5039
|
+
Param["TsmcpConversationId"] = "tsmcpConversationId";
|
|
5040
|
+
/**
|
|
5041
|
+
* Zero-based position of the answer within the conversation, counting only
|
|
5042
|
+
* non-thinking answer items in message order. Accompanies
|
|
5043
|
+
* {@link TsmcpConversationId}; defaults to 0 when absent. Stripped before
|
|
5044
|
+
* the URL reaches the ThoughtSpot application.
|
|
5045
|
+
* @version SDK: 1.52.2 | ThoughtSpot Cloud: 26.9.0.cl
|
|
5046
|
+
*/
|
|
5047
|
+
Param["TsmcpAnswerIndex"] = "tsmcpAnswerIndex";
|
|
4929
5048
|
Param["EmbedApp"] = "embedApp";
|
|
4930
5049
|
Param["DataSources"] = "dataSources";
|
|
4931
5050
|
Param["DataSourceMode"] = "dataSourceMode";
|
|
@@ -5089,6 +5208,9 @@ var Param;
|
|
|
5089
5208
|
Param["SpotterDataSources"] = "spotterDataSources";
|
|
5090
5209
|
Param["OpenSpotterOnLiveboardByDefault"] = "openSpotterOnLiveboardByDefault";
|
|
5091
5210
|
Param["ShowAnswerEditPanel"] = "showAnswerEditPanel";
|
|
5211
|
+
Param["IsDarkMode"] = "isDarkMode";
|
|
5212
|
+
Param["RadiantThemeEnabled"] = "radiantThemeEnabled";
|
|
5213
|
+
Param["SpotterExperienceVersion"] = "spotterExperienceVersion";
|
|
5092
5214
|
})(Param || (Param = {}));
|
|
5093
5215
|
/**
|
|
5094
5216
|
* ThoughtSpot application pages include actions and menu commands
|
|
@@ -5543,12 +5665,43 @@ var Action;
|
|
|
5543
5665
|
* The *Edit* action on the Liveboard page and in the
|
|
5544
5666
|
* visualization menu.
|
|
5545
5667
|
* Opens a Liveboard or visualization in edit mode.
|
|
5668
|
+
*
|
|
5669
|
+
* Controls both surfaces together. To target one surface only, use
|
|
5670
|
+
* {@link Action.EditLiveboard} or {@link Action.EditVisualization}.
|
|
5546
5671
|
* @example
|
|
5547
5672
|
* ```js
|
|
5548
5673
|
* disabledActions: [Action.Edit]
|
|
5549
5674
|
* ```
|
|
5550
5675
|
*/
|
|
5551
5676
|
Action["Edit"] = "edit";
|
|
5677
|
+
/**
|
|
5678
|
+
* The *Edit* action on the Liveboard page only.
|
|
5679
|
+
* Opens a Liveboard in edit mode.
|
|
5680
|
+
*
|
|
5681
|
+
* Does not affect the *Edit* action in the visualization menu; use
|
|
5682
|
+
* {@link Action.EditVisualization} for that, or {@link Action.Edit} to
|
|
5683
|
+
* control both surfaces together.
|
|
5684
|
+
* @version SDK: 1.54.0 | ThoughtSpot Cloud: 26.11.0.cl
|
|
5685
|
+
* @example
|
|
5686
|
+
* ```js
|
|
5687
|
+
* disabledActions: [Action.EditLiveboard]
|
|
5688
|
+
* ```
|
|
5689
|
+
*/
|
|
5690
|
+
Action["EditLiveboard"] = "editLiveboard";
|
|
5691
|
+
/**
|
|
5692
|
+
* The *Edit* action in the visualization `...` menu only.
|
|
5693
|
+
* Opens a visualization in the editor.
|
|
5694
|
+
*
|
|
5695
|
+
* Does not affect the *Edit* action on the Liveboard page; use
|
|
5696
|
+
* {@link Action.EditLiveboard} for that, or {@link Action.Edit} to
|
|
5697
|
+
* control both surfaces together.
|
|
5698
|
+
* @version SDK: 1.54.0 | ThoughtSpot Cloud: 26.11.0.cl
|
|
5699
|
+
* @example
|
|
5700
|
+
* ```js
|
|
5701
|
+
* disabledActions: [Action.EditVisualization]
|
|
5702
|
+
* ```
|
|
5703
|
+
*/
|
|
5704
|
+
Action["EditVisualization"] = "editVisualization";
|
|
5552
5705
|
/**
|
|
5553
5706
|
* The text edit option for Liveboard and visualization titles.
|
|
5554
5707
|
* @example
|
|
@@ -7324,6 +7477,29 @@ var Action;
|
|
|
7324
7477
|
* ```
|
|
7325
7478
|
*/
|
|
7326
7479
|
Action["CustomizeHomepage"] = "customizeHomepage";
|
|
7480
|
+
/**
|
|
7481
|
+
* Controls the visibility and disabled state of the *Cancel* button in the
|
|
7482
|
+
* Liveboard edit header, the button that discards the changes made in edit
|
|
7483
|
+
* mode and returns the Liveboard to view mode. The button is shown only
|
|
7484
|
+
* while the Liveboard is in edit mode.
|
|
7485
|
+
* @version SDK: 1.55.0 | ThoughtSpot Cloud: 26.12.0.cl
|
|
7486
|
+
* @example
|
|
7487
|
+
* ```js
|
|
7488
|
+
* const liveboardEmbed = new LiveboardEmbed('#tsEmbed', {
|
|
7489
|
+
* ... // other embed view config
|
|
7490
|
+
* hiddenActions: [Action.Cancel],
|
|
7491
|
+
* });
|
|
7492
|
+
* ```
|
|
7493
|
+
* @example
|
|
7494
|
+
* ```js
|
|
7495
|
+
* const liveboardEmbed = new LiveboardEmbed('#tsEmbed', {
|
|
7496
|
+
* ... // other embed view config
|
|
7497
|
+
* disabledActions: [Action.Cancel],
|
|
7498
|
+
* disabledActionReason: 'Save your changes to leave edit mode',
|
|
7499
|
+
* });
|
|
7500
|
+
* ```
|
|
7501
|
+
*/
|
|
7502
|
+
Action["Cancel"] = "cancel";
|
|
7327
7503
|
})(Action || (Action = {}));
|
|
7328
7504
|
var PrefetchFeatures;
|
|
7329
7505
|
(function (PrefetchFeatures) {
|
|
@@ -7828,7 +8004,7 @@ var TableContentDensity;
|
|
|
7828
8004
|
TableContentDensity["Compact"] = "COMPACT";
|
|
7829
8005
|
})(TableContentDensity || (TableContentDensity = {}));
|
|
7830
8006
|
|
|
7831
|
-
var version$1="1.
|
|
8007
|
+
var version$1="1.53.1";var pkg = {version:version$1};
|
|
7832
8008
|
|
|
7833
8009
|
const { version } = pkg;
|
|
7834
8010
|
|
|
@@ -10097,6 +10273,13 @@ const addFilter = `
|
|
|
10097
10273
|
}
|
|
10098
10274
|
}
|
|
10099
10275
|
`;
|
|
10276
|
+
const updateSort = `
|
|
10277
|
+
mutation UpdateSort($session: BachSessionIdInput!, $sortOrder: [AnswerColumnSortInput!]!) {
|
|
10278
|
+
Answer__updateSort(session: $session, sortOrder: $sortOrder) {
|
|
10279
|
+
${bachSessionId}
|
|
10280
|
+
}
|
|
10281
|
+
}
|
|
10282
|
+
`;
|
|
10100
10283
|
const getAnswer = `
|
|
10101
10284
|
query GetAnswer($session: BachSessionIdInput!) {
|
|
10102
10285
|
getAnswer(session: $session) {
|
|
@@ -10401,6 +10584,26 @@ class AnswerService {
|
|
|
10401
10584
|
},
|
|
10402
10585
|
});
|
|
10403
10586
|
}
|
|
10587
|
+
/**
|
|
10588
|
+
* Adapt the sort options into the `updateSort` payload and send it.
|
|
10589
|
+
* @param sortOptions Columns to sort by, each with a direction.
|
|
10590
|
+
* @param sourceDetail
|
|
10591
|
+
*/
|
|
10592
|
+
async adaptSorting(sortOptions, sourceDetail) {
|
|
10593
|
+
const { answer } = await this.executeQuery(getAnswer, {});
|
|
10594
|
+
const guidToColumnId = getGuidToColumnIdMap(answer);
|
|
10595
|
+
const sortOrder = sortOptions.map((sort) => {
|
|
10596
|
+
const guid = getGuidsFromColumnNames(sourceDetail, [sort.columnName])
|
|
10597
|
+
.values().next().value;
|
|
10598
|
+
return {
|
|
10599
|
+
columnId: guidToColumnId.get(guid),
|
|
10600
|
+
sortType: sort.ascending ? 'ASCENDING' : 'DESCENDING',
|
|
10601
|
+
};
|
|
10602
|
+
});
|
|
10603
|
+
return this.executeQuery(updateSort, {
|
|
10604
|
+
sortOrder,
|
|
10605
|
+
});
|
|
10606
|
+
}
|
|
10404
10607
|
async updateDisplayMode(displayMode = "TABLE_MODE") {
|
|
10405
10608
|
return this.executeQuery(updateDisplayMode, {
|
|
10406
10609
|
displayMode,
|
|
@@ -10488,18 +10691,21 @@ class AnswerService {
|
|
|
10488
10691
|
* automatically passed.
|
|
10489
10692
|
* @param outputColumnNames
|
|
10490
10693
|
* @param selectedPoints
|
|
10694
|
+
* @param sortOptions Optional columns to sort the underlying data by.
|
|
10491
10695
|
* @example
|
|
10492
10696
|
* ```js
|
|
10493
10697
|
* embed.on(EmbedEvent.CustomAction, e => {
|
|
10494
|
-
* const underlying = await e.answerService.getUnderlyingDataForPoint(
|
|
10495
|
-
* 'col name 1' // The column should exist in the data source.
|
|
10496
|
-
*
|
|
10698
|
+
* const underlying = await e.answerService.getUnderlyingDataForPoint(
|
|
10699
|
+
* ['col name 1'], // The column should exist in the data source.
|
|
10700
|
+
* undefined,
|
|
10701
|
+
* [{ columnName: 'col name 1', ascending: true }],
|
|
10702
|
+
* );
|
|
10497
10703
|
* const data = await underlying.fetchData(0, 100);
|
|
10498
10704
|
* })
|
|
10499
10705
|
* ```
|
|
10500
10706
|
* @version SDK: 1.25.0 | ThoughtSpot: 9.10.0.cl
|
|
10501
10707
|
*/
|
|
10502
|
-
async getUnderlyingDataForPoint(outputColumnNames, selectedPoints) {
|
|
10708
|
+
async getUnderlyingDataForPoint(outputColumnNames, selectedPoints, sortOptions) {
|
|
10503
10709
|
if (!selectedPoints && !this.selectedPoints) {
|
|
10504
10710
|
throw new Error('Needs to be triggered in context of a point');
|
|
10505
10711
|
}
|
|
@@ -10527,6 +10733,9 @@ class AnswerService {
|
|
|
10527
10733
|
if (columnsToRemove.length) {
|
|
10528
10734
|
await unaggAnswerSession.removeColumns(columnsToRemove);
|
|
10529
10735
|
}
|
|
10736
|
+
if (sortOptions === null || sortOptions === void 0 ? void 0 : sortOptions.length) {
|
|
10737
|
+
await unaggAnswerSession.adaptSorting(sortOptions, sourceDetail);
|
|
10738
|
+
}
|
|
10530
10739
|
return unaggAnswerSession;
|
|
10531
10740
|
}
|
|
10532
10741
|
/**
|
|
@@ -10565,7 +10774,7 @@ class AnswerService {
|
|
|
10565
10774
|
async getTML() {
|
|
10566
10775
|
const { object } = await this.executeQuery(getAnswerTML, {});
|
|
10567
10776
|
const edoc = object[0].edoc;
|
|
10568
|
-
const YAML = await import('./index-
|
|
10777
|
+
const YAML = await import('./index-CrBnZBZv.js');
|
|
10569
10778
|
const parsedDoc = YAML.parse(edoc);
|
|
10570
10779
|
return {
|
|
10571
10780
|
answer: {
|
|
@@ -10586,6 +10795,15 @@ class AnswerService {
|
|
|
10586
10795
|
this.tmlOverride = override;
|
|
10587
10796
|
}
|
|
10588
10797
|
}
|
|
10798
|
+
/**
|
|
10799
|
+
* Build a map from a source column guid to the answer's viz column id, using
|
|
10800
|
+
* the `referencedColumns` link on each viz column.
|
|
10801
|
+
* @param answer
|
|
10802
|
+
*/
|
|
10803
|
+
function getGuidToColumnIdMap(answer) {
|
|
10804
|
+
const tableViz = answer.visualizations.find((viz) => viz.columns);
|
|
10805
|
+
return new Map(tableViz.columns.map((col) => [col.column.referencedColumns[0].guid, col.column.id]));
|
|
10806
|
+
}
|
|
10589
10807
|
/**
|
|
10590
10808
|
*
|
|
10591
10809
|
* @param sourceDetail
|
|
@@ -19666,6 +19884,7 @@ let mixpanelInstance;
|
|
|
19666
19884
|
const MIXPANEL_EVENT = {
|
|
19667
19885
|
VISUAL_SDK_RENDER_START: 'visual-sdk-render-start',
|
|
19668
19886
|
VISUAL_SDK_CALLED_INIT: 'visual-sdk-called-init',
|
|
19887
|
+
VISUAL_SDK_INIT_ACTIONS: 'visual-sdk-init-actions',
|
|
19669
19888
|
VISUAL_SDK_RENDER_COMPLETE: 'visual-sdk-render-complete',
|
|
19670
19889
|
VISUAL_SDK_RENDER_FAILED: 'visual-sdk-render-failed',
|
|
19671
19890
|
VISUAL_SDK_TRIGGER: 'visual-sdk-trigger',
|
|
@@ -19738,6 +19957,32 @@ function initMixpanel(sessionInfo) {
|
|
|
19738
19957
|
}
|
|
19739
19958
|
}
|
|
19740
19959
|
|
|
19960
|
+
// Membership is checked, not just the key: a bare key allowlist would upload an
|
|
19961
|
+
// arbitrary customer string sitting under `operator` verbatim.
|
|
19962
|
+
const isEnumMember = (enumObject, value) => typeof value === 'string' && Object.values(enumObject).includes(value);
|
|
19963
|
+
const uniqueEnumMembers = (enumObject, values) => Array.from(new Set(values.filter((v) => isEnumMember(enumObject, v))));
|
|
19964
|
+
const describeRuntimeFilters = (runtimeFilters) => ({
|
|
19965
|
+
count: runtimeFilters.length,
|
|
19966
|
+
operators: uniqueEnumMembers(RuntimeFilterOp, runtimeFilters.map((filter) => filter === null || filter === void 0 ? void 0 : filter.operator)),
|
|
19967
|
+
});
|
|
19968
|
+
const describeRuntimeParameters = (runtimeParameters) => ({
|
|
19969
|
+
count: runtimeParameters.length,
|
|
19970
|
+
applicabilityLevels: uniqueEnumMembers(ApplicabilityLevel, runtimeParameters.map((parameter) => { var _a; return (_a = parameter === null || parameter === void 0 ? void 0 : parameter.applicability) === null || _a === void 0 ? void 0 : _a.level; })),
|
|
19971
|
+
});
|
|
19972
|
+
// Column names, parameter names and operands are customer data and must never
|
|
19973
|
+
// reach Mixpanel; an unrecognized shape is dropped rather than forwarded.
|
|
19974
|
+
const summarizeRuntimeDataForTelemetry = (viewConfig) => {
|
|
19975
|
+
const { runtimeFilters, runtimeParameters, ...rest } = viewConfig !== null && viewConfig !== void 0 ? viewConfig : {};
|
|
19976
|
+
const telemetryProps = { ...rest };
|
|
19977
|
+
if (Array.isArray(runtimeFilters)) {
|
|
19978
|
+
telemetryProps.runtimeFilters = describeRuntimeFilters(runtimeFilters);
|
|
19979
|
+
}
|
|
19980
|
+
if (Array.isArray(runtimeParameters)) {
|
|
19981
|
+
telemetryProps.runtimeParameters = describeRuntimeParameters(runtimeParameters);
|
|
19982
|
+
}
|
|
19983
|
+
return telemetryProps;
|
|
19984
|
+
};
|
|
19985
|
+
|
|
19741
19986
|
var eventemitter3 = createCommonjsModule(function (module) {
|
|
19742
19987
|
|
|
19743
19988
|
var has = Object.prototype.hasOwnProperty
|
|
@@ -21877,6 +22122,97 @@ const UPDATE_EMBED_PARAMS_SETTLE_MS = 200;
|
|
|
21877
22122
|
// truthy, so null or '' leaves the previous embed's values in place. '&' is
|
|
21878
22123
|
// truthy and parses to {}.
|
|
21879
22124
|
const NO_RUNTIME_PARAMS = '&';
|
|
22125
|
+
/**
|
|
22126
|
+
* Params kept on the iframe `src` when `excludeConfigFromURL` is set. The rest
|
|
22127
|
+
* are sent in the APP_INIT payload.
|
|
22128
|
+
* @internal
|
|
22129
|
+
*/
|
|
22130
|
+
const BOOTSTRAP_URL_PARAMS = new Set([
|
|
22131
|
+
// Marks the app as embedded.
|
|
22132
|
+
Param.EmbedApp,
|
|
22133
|
+
// The host page URL, used to validate the postMessage origin.
|
|
22134
|
+
Param.HostAppUrl,
|
|
22135
|
+
// The SDK version.
|
|
22136
|
+
Param.Version,
|
|
22137
|
+
// The authentication type set in init.
|
|
22138
|
+
Param.AuthType,
|
|
22139
|
+
// Whether the app signs the user in automatically.
|
|
22140
|
+
Param.AutoLogin,
|
|
22141
|
+
// Stops the app from redirecting to its login page.
|
|
22142
|
+
Param.DisableLoginRedirect,
|
|
22143
|
+
// Forces the SAML redirect for EmbeddedSSO.
|
|
22144
|
+
Param.ForceSAMLAutoRedirect,
|
|
22145
|
+
// Set for cookieless trusted authentication.
|
|
22146
|
+
Param.cookieless,
|
|
22147
|
+
// Lets the app use the pre-fetched auth info.
|
|
22148
|
+
Param.preAuthCache,
|
|
22149
|
+
// Blocks access to the full app outside the embed.
|
|
22150
|
+
Param.blockNonEmbedFullAppAccess,
|
|
22151
|
+
// The org to load, which the auth info depends on.
|
|
22152
|
+
Param.OverrideOrgId,
|
|
22153
|
+
// The host window height when the iframe loads.
|
|
22154
|
+
Param.ViewPortHeight,
|
|
22155
|
+
// The host window width when the iframe loads.
|
|
22156
|
+
Param.ViewPortWidth,
|
|
22157
|
+
// The app's client log level.
|
|
22158
|
+
Param.ClientLogLevel,
|
|
22159
|
+
// Lets the app override the native console.
|
|
22160
|
+
Param.OverrideNativeConsole,
|
|
22161
|
+
// An extra Pendo tracking key.
|
|
22162
|
+
Param.PendoTrackingKey,
|
|
22163
|
+
// The locale for number formatting.
|
|
22164
|
+
Param.NumberFormatLocale,
|
|
22165
|
+
// The locale for date formatting.
|
|
22166
|
+
Param.DateFormatLocale,
|
|
22167
|
+
// The currency format.
|
|
22168
|
+
Param.CurrencyFormat,
|
|
22169
|
+
// The UI language.
|
|
22170
|
+
Param.Locale,
|
|
22171
|
+
// Turns on dark mode.
|
|
22172
|
+
Param.IsDarkMode,
|
|
22173
|
+
// Turns on the radiant theme that dark mode needs.
|
|
22174
|
+
Param.RadiantThemeEnabled,
|
|
22175
|
+
// Marks a SearchEmbed or SearchBarEmbed.
|
|
22176
|
+
Param.searchEmbed,
|
|
22177
|
+
// Marks a LiveboardEmbed.
|
|
22178
|
+
Param.livedBoardEmbed,
|
|
22179
|
+
// Marks a SpotterAgentEmbed.
|
|
22180
|
+
Param.isSpotterAgentEmbed,
|
|
22181
|
+
// Marks a SpotterEmbed.
|
|
22182
|
+
Param.SpotterEnabled,
|
|
22183
|
+
// Marks an AppEmbed.
|
|
22184
|
+
Param.IsFullAppEmbed,
|
|
22185
|
+
// Legacy flag for the onBeforeGetVizData API intercept.
|
|
22186
|
+
Param.IsOnBeforeGetVizDataInterceptEnabled,
|
|
22187
|
+
// Lets the host override links in the app.
|
|
22188
|
+
Param.LinkOverride,
|
|
22189
|
+
// Turns on version 2 of the link overrides.
|
|
22190
|
+
Param.EnableLinkOverridesV2,
|
|
22191
|
+
// Stops links from opening in a new tab.
|
|
22192
|
+
Param.DisableRedirectionLinksInNewTab,
|
|
22193
|
+
// Uses replaceState instead of pushState for app navigation.
|
|
22194
|
+
Param.OverrideHistoryState,
|
|
22195
|
+
// Shows search results as a table.
|
|
22196
|
+
Param.ForceTable,
|
|
22197
|
+
// The URL of the custom string IDs file.
|
|
22198
|
+
Param.StringIDsUrl,
|
|
22199
|
+
// The data sources that search opens with.
|
|
22200
|
+
Param.DataSources,
|
|
22201
|
+
// Exposes translation IDs in the app.
|
|
22202
|
+
Param.ExposeTranslationIDs,
|
|
22203
|
+
// The URL of the custom icon sprite.
|
|
22204
|
+
Param.IconSpriteUrl,
|
|
22205
|
+
// The tag that filters the metadata lists in an AppEmbed.
|
|
22206
|
+
Param.Tag,
|
|
22207
|
+
// Set when a Liveboard embed shows a single visualization (vizId).
|
|
22208
|
+
Param.vizEmbed,
|
|
22209
|
+
// Whether search opens with the last-selected data sources.
|
|
22210
|
+
Param.UseLastSelectedDataSource,
|
|
22211
|
+
// The query mode Spotter opens in.
|
|
22212
|
+
Param.DefaultQueryMode,
|
|
22213
|
+
// The initial search query. Omitted with excludeSearchTokenStringFromURL.
|
|
22214
|
+
Param.searchTokenString,
|
|
22215
|
+
]);
|
|
21880
22216
|
/**
|
|
21881
22217
|
* The event id map from v2 event names to v1 event id
|
|
21882
22218
|
* v1 events are the classic embed events implemented in Blink v1
|
|
@@ -21905,6 +22241,7 @@ class TsEmbed {
|
|
|
21905
22241
|
this.embedNodeKey = '__tsEmbed';
|
|
21906
22242
|
this.embedContainerLoadedKey = '__tsEmbedContainerLoaded';
|
|
21907
22243
|
this.isAppInitialized = false;
|
|
22244
|
+
this.initDataParams = {};
|
|
21908
22245
|
/**
|
|
21909
22246
|
* Should we encode URL Query Params using base64 encoding which ThoughtSpot
|
|
21910
22247
|
* will generate for embedding. This provides additional security to
|
|
@@ -21939,7 +22276,7 @@ class TsEmbed {
|
|
|
21939
22276
|
*/
|
|
21940
22277
|
this.appInitCb = async (_, responder) => {
|
|
21941
22278
|
try {
|
|
21942
|
-
const appInitData = await this.getAppInitData();
|
|
22279
|
+
const appInitData = this.withInitDataParams(await this.getAppInitData());
|
|
21943
22280
|
this.isAppInitialized = true;
|
|
21944
22281
|
responder({
|
|
21945
22282
|
type: EmbedEvent.APP_INIT,
|
|
@@ -22093,9 +22430,7 @@ class TsEmbed {
|
|
|
22093
22430
|
...viewConfig,
|
|
22094
22431
|
};
|
|
22095
22432
|
this.registerAppInit();
|
|
22096
|
-
uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_EMBED_CREATE,
|
|
22097
|
-
...viewConfig,
|
|
22098
|
-
});
|
|
22433
|
+
uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_EMBED_CREATE, summarizeRuntimeDataForTelemetry(viewConfig));
|
|
22099
22434
|
const embedConfig = getEmbedConfig();
|
|
22100
22435
|
if (embedConfig) {
|
|
22101
22436
|
this.embedConfig = embedConfig;
|
|
@@ -22367,6 +22702,18 @@ class TsEmbed {
|
|
|
22367
22702
|
async getAppInitData() {
|
|
22368
22703
|
return this.getDefaultAppInitData();
|
|
22369
22704
|
}
|
|
22705
|
+
withInitDataParams(appInitData) {
|
|
22706
|
+
if (isEmpty_1(this.initDataParams)) {
|
|
22707
|
+
return appInitData;
|
|
22708
|
+
}
|
|
22709
|
+
return {
|
|
22710
|
+
...appInitData,
|
|
22711
|
+
embedParams: {
|
|
22712
|
+
...this.initDataParams,
|
|
22713
|
+
...(appInitData.embedParams || {}),
|
|
22714
|
+
},
|
|
22715
|
+
};
|
|
22716
|
+
}
|
|
22370
22717
|
/**
|
|
22371
22718
|
* Helper method to refresh/update auth token for TrustedAuthTokenCookieless auth type
|
|
22372
22719
|
* @param responder - Function to send response back
|
|
@@ -22426,7 +22773,7 @@ class TsEmbed {
|
|
|
22426
22773
|
* @returns queryParams
|
|
22427
22774
|
*/
|
|
22428
22775
|
getBaseQueryParams(queryParams = {}) {
|
|
22429
|
-
var _a, _b, _c, _d;
|
|
22776
|
+
var _a, _b, _c, _d, _e;
|
|
22430
22777
|
let hostAppUrl = ((_a = window === null || window === void 0 ? void 0 : window.location) === null || _a === void 0 ? void 0 : _a.host) || '';
|
|
22431
22778
|
// The below check is needed because TS Cloud firewall, blocks
|
|
22432
22779
|
// localhost/127.0.0.1 in any url param.
|
|
@@ -22463,6 +22810,15 @@ class TsEmbed {
|
|
|
22463
22810
|
if (this.embedConfig.currencyFormat) {
|
|
22464
22811
|
queryParams[Param.CurrencyFormat] = this.embedConfig.currencyFormat;
|
|
22465
22812
|
}
|
|
22813
|
+
// The view config wins over init, so an embed can opt out of a dark
|
|
22814
|
+
// mode set in `init`. `??` and not `||`, so that an explicit `false`
|
|
22815
|
+
// overrides an init-level `true`.
|
|
22816
|
+
const isDarkMode = (_c = this.viewConfig.isDarkMode) !== null && _c !== void 0 ? _c : this.embedConfig.isDarkMode;
|
|
22817
|
+
setParamIfDefined(queryParams, Param.IsDarkMode, isDarkMode, true);
|
|
22818
|
+
// The app's dark mode lives in its radiant theme, so turn that on too.
|
|
22819
|
+
if (isDarkMode) {
|
|
22820
|
+
queryParams[Param.RadiantThemeEnabled] = true;
|
|
22821
|
+
}
|
|
22466
22822
|
const { disabledActions, disabledActionReason, hiddenActions, visibleActions, hiddenTabs, visibleTabs, showAlerts, additionalFlags: additionalFlagsFromView, locale, customizations, contextMenuTrigger, linkOverride, enableLinkOverridesV2, insertInToSlide, disableRedirectionLinksInNewTab, overrideOrgId, overrideHistoryState, exposeTranslationIDs, primaryAction, } = this.viewConfig;
|
|
22467
22823
|
const { additionalFlags: additionalFlagsFromInit } = this.embedConfig;
|
|
22468
22824
|
const additionalFlags = {
|
|
@@ -22528,7 +22884,7 @@ class TsEmbed {
|
|
|
22528
22884
|
if (spriteUrl) {
|
|
22529
22885
|
queryParams[Param.IconSpriteUrl] = spriteUrl.replace('https://', '');
|
|
22530
22886
|
}
|
|
22531
|
-
const stringIDsUrl = ((
|
|
22887
|
+
const stringIDsUrl = ((_d = customizations === null || customizations === void 0 ? void 0 : customizations.content) === null || _d === void 0 ? void 0 : _d.stringIDsUrl) || ((_e = embedCustomizations === null || embedCustomizations === void 0 ? void 0 : embedCustomizations.content) === null || _e === void 0 ? void 0 : _e.stringIDsUrl);
|
|
22532
22888
|
if (stringIDsUrl) {
|
|
22533
22889
|
queryParams[Param.StringIDsUrl] = stringIDsUrl;
|
|
22534
22890
|
}
|
|
@@ -22582,13 +22938,32 @@ class TsEmbed {
|
|
|
22582
22938
|
return path;
|
|
22583
22939
|
}
|
|
22584
22940
|
getEmbedParams() {
|
|
22585
|
-
const queryParams = this.
|
|
22941
|
+
const queryParams = this.getUrlQueryParamsObject();
|
|
22586
22942
|
return getQueryParamString(queryParams);
|
|
22587
22943
|
}
|
|
22588
22944
|
getEmbedParamsObject() {
|
|
22589
22945
|
const params = this.getBaseQueryParams();
|
|
22590
22946
|
return params;
|
|
22591
22947
|
}
|
|
22948
|
+
getUrlQueryParamsObject() {
|
|
22949
|
+
const queryParams = this.getEmbedParamsObject();
|
|
22950
|
+
if (!this.isConfigExcludedFromUrl()) {
|
|
22951
|
+
this.initDataParams = {};
|
|
22952
|
+
return queryParams;
|
|
22953
|
+
}
|
|
22954
|
+
const urlParams = {};
|
|
22955
|
+
const excludedParams = {};
|
|
22956
|
+
Object.entries(queryParams).forEach(([key, value]) => {
|
|
22957
|
+
if (BOOTSTRAP_URL_PARAMS.has(key)) {
|
|
22958
|
+
urlParams[key] = value;
|
|
22959
|
+
}
|
|
22960
|
+
else {
|
|
22961
|
+
excludedParams[key] = deserializeParam(value);
|
|
22962
|
+
}
|
|
22963
|
+
});
|
|
22964
|
+
this.initDataParams = excludedParams;
|
|
22965
|
+
return urlParams;
|
|
22966
|
+
}
|
|
22592
22967
|
getRootIframeSrc() {
|
|
22593
22968
|
const query = this.getEmbedParams();
|
|
22594
22969
|
return this.getEmbedBasePath(query);
|
|
@@ -22827,26 +23202,12 @@ class TsEmbed {
|
|
|
22827
23202
|
return placeholder;
|
|
22828
23203
|
}
|
|
22829
23204
|
/**
|
|
22830
|
-
* Resolves the configured preRenderContainer
|
|
22831
|
-
*
|
|
22832
|
-
*
|
|
22833
|
-
*
|
|
22834
|
-
*
|
|
22835
|
-
*
|
|
22836
|
-
* scrolling ancestor, falling back to `document.body`.
|
|
22837
|
-
*
|
|
22838
|
-
* The wrapper is absolutely positioned, so it follows the page for free —
|
|
22839
|
-
* but only while it sits inside whatever scrolls. `document.body` is right
|
|
22840
|
-
* only when the document itself is the scroller; an app that scrolls an
|
|
22841
|
-
* inner element instead left the frame pinned to the viewport while the page
|
|
22842
|
-
* moved under it (SCAL-338563). Being inside the scroller also lets wheel
|
|
22843
|
-
* events chain out of the frame into it, which they cannot do from
|
|
22844
|
-
* `document.body`.
|
|
22845
|
-
*
|
|
22846
|
-
* A scrolling ancestor is layout chrome rather than route content, so it
|
|
22847
|
-
* outlives the embed in practice; and if it does go, the host element goes
|
|
22848
|
-
* with it and this instance is remounting anyway.
|
|
22849
|
-
* `reconcilePreRenderContainer` re-runs this on a detached container.
|
|
23205
|
+
* Resolves the configured preRenderContainer, or defaults to the host's
|
|
23206
|
+
* nearest scrolling ancestor (document.body if none). The absolutely
|
|
23207
|
+
* positioned wrapper only follows the page while it sits inside what
|
|
23208
|
+
* scrolls, so body is right only when the document itself scrolls — an inner
|
|
23209
|
+
* scroller left the frame pinned to the viewport (SCAL-338563). A string
|
|
23210
|
+
* selector is re-queried each call so a remounted container resolves fresh.
|
|
22850
23211
|
*/
|
|
22851
23212
|
resolvePreRenderContainerTarget() {
|
|
22852
23213
|
var _a;
|
|
@@ -23288,9 +23649,16 @@ class TsEmbed {
|
|
|
23288
23649
|
* @param args
|
|
23289
23650
|
*/
|
|
23290
23651
|
async render() {
|
|
23652
|
+
var _a, _b, _c;
|
|
23291
23653
|
uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_RENDER_CALLED, {
|
|
23292
23654
|
embedComponentType: this.viewConfig.embedComponentType,
|
|
23293
23655
|
});
|
|
23656
|
+
uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_INIT_ACTIONS, {
|
|
23657
|
+
embedComponentType: this.viewConfig.embedComponentType,
|
|
23658
|
+
hiddenActions: (_a = this.viewConfig.hiddenActions) !== null && _a !== void 0 ? _a : [],
|
|
23659
|
+
visibleActions: (_b = this.viewConfig.visibleActions) !== null && _b !== void 0 ? _b : [],
|
|
23660
|
+
disabledActions: (_c = this.viewConfig.disabledActions) !== null && _c !== void 0 ? _c : [],
|
|
23661
|
+
});
|
|
23294
23662
|
if (!getIsInitCalled()) {
|
|
23295
23663
|
logger$3.error(ERROR_MESSAGE.RENDER_CALLED_BEFORE_INIT);
|
|
23296
23664
|
}
|
|
@@ -23525,6 +23893,26 @@ class TsEmbed {
|
|
|
23525
23893
|
this.isRendered = true;
|
|
23526
23894
|
return this.renderIFrame(prerenderFrameSrc);
|
|
23527
23895
|
}
|
|
23896
|
+
isConfigExcludedFromUrl() {
|
|
23897
|
+
var _a, _b, _c;
|
|
23898
|
+
const flag = (_b = (_a = this.viewConfig.additionalFlags) === null || _a === void 0 ? void 0 : _a.excludeConfigFromURL) !== null && _b !== void 0 ? _b : (_c = this.embedConfig.additionalFlags) === null || _c === void 0 ? void 0 : _c.excludeConfigFromURL;
|
|
23899
|
+
return flag === true || flag === 'true';
|
|
23900
|
+
}
|
|
23901
|
+
async triggerUpdateEmbedParams() {
|
|
23902
|
+
try {
|
|
23903
|
+
const params = await this.getUpdateEmbedParamsObject();
|
|
23904
|
+
this.trigger(HostEvent.UpdateEmbedParams, params);
|
|
23905
|
+
}
|
|
23906
|
+
catch (error) {
|
|
23907
|
+
logger$3.error(ERROR_MESSAGE.UPDATE_PARAMS_FAILED, error);
|
|
23908
|
+
this.handleError({
|
|
23909
|
+
errorType: ErrorDetailsTypes.API,
|
|
23910
|
+
message: (error === null || error === void 0 ? void 0 : error.message) || ERROR_MESSAGE.UPDATE_PARAMS_FAILED,
|
|
23911
|
+
code: EmbedErrorCodes.UPDATE_PARAMS_FAILED,
|
|
23912
|
+
error: (error === null || error === void 0 ? void 0 : error.message) || error,
|
|
23913
|
+
});
|
|
23914
|
+
}
|
|
23915
|
+
}
|
|
23528
23916
|
beforePrerenderVisible() {
|
|
23529
23917
|
// We can ignore this as its a bit expensive and the newer customers
|
|
23530
23918
|
// have moved on to UpdateEmbedParams supported clusters
|
|
@@ -23535,17 +23923,7 @@ class TsEmbed {
|
|
|
23535
23923
|
this.preRenderParamsApplied = new Promise((resolve) => {
|
|
23536
23924
|
this.executeAfterEmbedContainerLoaded(async () => {
|
|
23537
23925
|
try {
|
|
23538
|
-
|
|
23539
|
-
this.trigger(HostEvent.UpdateEmbedParams, params);
|
|
23540
|
-
}
|
|
23541
|
-
catch (error) {
|
|
23542
|
-
logger$3.error(ERROR_MESSAGE.UPDATE_PARAMS_FAILED, error);
|
|
23543
|
-
this.handleError({
|
|
23544
|
-
errorType: ErrorDetailsTypes.API,
|
|
23545
|
-
message: (error === null || error === void 0 ? void 0 : error.message) || ERROR_MESSAGE.UPDATE_PARAMS_FAILED,
|
|
23546
|
-
code: EmbedErrorCodes.UPDATE_PARAMS_FAILED,
|
|
23547
|
-
error: (error === null || error === void 0 ? void 0 : error.message) || error,
|
|
23548
|
-
});
|
|
23926
|
+
await this.triggerUpdateEmbedParams();
|
|
23549
23927
|
}
|
|
23550
23928
|
finally {
|
|
23551
23929
|
setTimeout(resolve, UPDATE_EMBED_PARAMS_SETTLE_MS);
|
|
@@ -23679,19 +24057,21 @@ class TsEmbed {
|
|
|
23679
24057
|
return;
|
|
23680
24058
|
}
|
|
23681
24059
|
const { zIndex } = this.getPreRenderConfig();
|
|
24060
|
+
// A hidden pre-render frame must add no scroll space to the host page.
|
|
23682
24061
|
const preRenderHideStyles = {
|
|
23683
24062
|
opacity: '0',
|
|
23684
24063
|
pointerEvents: 'none',
|
|
23685
24064
|
zIndex: zIndex !== undefined ? String(zIndex) : '-1000',
|
|
23686
|
-
|
|
24065
|
+
// Resolves to the viewport, so the hidden frame belongs to no
|
|
24066
|
+
// scroll container's overflow; syncPreRenderStyle restores absolute
|
|
24067
|
+
// on show.
|
|
24068
|
+
position: 'fixed',
|
|
23687
24069
|
top: '0',
|
|
23688
24070
|
left: '0',
|
|
23689
24071
|
overflow: 'hidden',
|
|
23690
|
-
//
|
|
23691
|
-
//
|
|
23692
|
-
//
|
|
23693
|
-
// downwards, so a hidden frame parked above the top edge adds
|
|
23694
|
-
// none, where one left at full height shows as blank scroll space.
|
|
24072
|
+
// The one exception: a transformed or contained ancestor captures
|
|
24073
|
+
// `fixed`; parking above the top edge keeps it out of that
|
|
24074
|
+
// overflow.
|
|
23695
24075
|
transform: PRERENDER_PARKED_TRANSFORM,
|
|
23696
24076
|
};
|
|
23697
24077
|
setStyleProperties(this.preRenderWrapper, preRenderHideStyles);
|
|
@@ -23880,7 +24260,7 @@ let SearchBarEmbed$1 = class SearchBarEmbed extends TsEmbed {
|
|
|
23880
24260
|
* @param dataSources A list of data source GUIDs
|
|
23881
24261
|
*/
|
|
23882
24262
|
getIFrameSrc() {
|
|
23883
|
-
const queryParams = this.
|
|
24263
|
+
const queryParams = this.getUrlQueryParamsObject();
|
|
23884
24264
|
const path = 'search-bar-embed';
|
|
23885
24265
|
let query = '';
|
|
23886
24266
|
const queryParamsString = getQueryParamString(queryParams, true);
|
|
@@ -24067,7 +24447,7 @@ let SearchEmbed$1 = class SearchEmbed extends TsEmbed {
|
|
|
24067
24447
|
}
|
|
24068
24448
|
getEmbedParams() {
|
|
24069
24449
|
const { runtimeParameters, runtimeFilters, excludeRuntimeParametersfromURL, excludeRuntimeFiltersfromURL, } = this.viewConfig;
|
|
24070
|
-
const queryParams = this.
|
|
24450
|
+
const queryParams = this.getUrlQueryParamsObject();
|
|
24071
24451
|
let query = '';
|
|
24072
24452
|
const queryParamsString = getQueryParamString(queryParams, true);
|
|
24073
24453
|
if (queryParamsString) {
|
|
@@ -24400,8 +24780,11 @@ function buildSpotterSidebarAppInitData(defaultAppInitData, viewConfig, handleEr
|
|
|
24400
24780
|
embedParams: { visualOverridesParams: visualOverrides },
|
|
24401
24781
|
};
|
|
24402
24782
|
}
|
|
24783
|
+
// The app reads enableSpotterInstructionAndMoreSettings from the top level
|
|
24784
|
+
// of embedParams, so lift it out of the sidebar config.
|
|
24785
|
+
const { enableSpotterInstructionAndMoreSettings, ...sidebarConfigRest } = spotterSidebarConfig || {};
|
|
24403
24786
|
const resolvedSidebarConfig = {
|
|
24404
|
-
...
|
|
24787
|
+
...sidebarConfigRest,
|
|
24405
24788
|
...(resolvedEnablePastConversations !== undefined && {
|
|
24406
24789
|
enablePastConversationsSidebar: resolvedEnablePastConversations,
|
|
24407
24790
|
}),
|
|
@@ -24423,6 +24806,9 @@ function buildSpotterSidebarAppInitData(defaultAppInitData, viewConfig, handleEr
|
|
|
24423
24806
|
embedParams: {
|
|
24424
24807
|
...(defaultAppInitData.embedParams || {}),
|
|
24425
24808
|
spotterSidebarConfig: resolvedSidebarConfig,
|
|
24809
|
+
...(enableSpotterInstructionAndMoreSettings !== undefined
|
|
24810
|
+
? { enableSpotterInstructionAndMoreSettings }
|
|
24811
|
+
: {}),
|
|
24426
24812
|
...(visualOverrides !== undefined ? { visualOverridesParams: visualOverrides } : {}),
|
|
24427
24813
|
},
|
|
24428
24814
|
};
|
|
@@ -24463,7 +24849,19 @@ function buildSpotterAnalystAppInitData(initData, viewConfig) {
|
|
|
24463
24849
|
spotterAnalystConfig,
|
|
24464
24850
|
},
|
|
24465
24851
|
};
|
|
24466
|
-
}
|
|
24852
|
+
}
|
|
24853
|
+
/**
|
|
24854
|
+
* The Spotter experience version to load in the embedded view.
|
|
24855
|
+
* @version SDK: 1.53.0 | ThoughtSpot Cloud: 26.11.0.cl
|
|
24856
|
+
* @group Embed components
|
|
24857
|
+
*/
|
|
24858
|
+
var SpotterExperienceVersion;
|
|
24859
|
+
(function (SpotterExperienceVersion) {
|
|
24860
|
+
/**
|
|
24861
|
+
* The Spotter experience version introduced in ThoughtSpot 26.11.
|
|
24862
|
+
*/
|
|
24863
|
+
SpotterExperienceVersion["SPOTTER_2026_11"] = "spotter_2026_11";
|
|
24864
|
+
})(SpotterExperienceVersion || (SpotterExperienceVersion = {}));
|
|
24467
24865
|
|
|
24468
24866
|
function buildSpotterVizAppInitData(initData, viewConfig) {
|
|
24469
24867
|
const { spotterViz } = viewConfig;
|
|
@@ -24660,12 +25058,12 @@ let AppEmbed$1 = class AppEmbed extends V1Embed {
|
|
|
24660
25058
|
* embedded Liveboard or visualization.
|
|
24661
25059
|
*/
|
|
24662
25060
|
getEmbedParams() {
|
|
24663
|
-
const params = this.
|
|
25061
|
+
const params = this.getUrlQueryParamsObject();
|
|
24664
25062
|
return getQueryParamString(params, true);
|
|
24665
25063
|
}
|
|
24666
25064
|
getEmbedParamsObject() {
|
|
24667
25065
|
var _a;
|
|
24668
|
-
const { tag, hideTagFilterChips, hideObjects, liveboardV2, showPrimaryNavbar, disableProfileAndHelp, hideHamburger, hideObjectSearch, hideNotification, hideApplicationSwitcher, hideOrgSwitcher, enableSearchAssist, newConnectionsExperience, dataPanelV2 = true, updatedSpotterExperience, hideLiveboardHeader = false, showLiveboardTitle = true, showLiveboardDescription = true, showMaskedFilterChip = false, isLiveboardMasterpiecesEnabled, newChartsLibrary, hideHomepageLeftNav = false, modularHomeExperience, isLiveboardHeaderSticky = true, enableAskSage, collapseSearchBarInitially = false, enable2ColumnLayout, isLiveboardAlwaysOn12ColLayout, enableCustomColumnGroups = false, dataPanelCustomGroupsAccordionInitialState = DataPanelCustomColumnGroupsAccordionState.EXPAND_ALL, collapseSearchBar = true, isLiveboardCompactHeaderEnabled, showLiveboardVerifiedBadge = true, showLiveboardReverifyBanner = true, hideIrrelevantChipsInLiveboardTabs, isEnhancedFilterInteractivityEnabled, homePageSearchBarMode, isUnifiedSearchExperienceEnabled = true, enablePendoHelp = true, discoveryExperience, coverAndFilterOptionInPDF, isLiveboardStylingAndGroupingEnabled, liveboardGutter, isPNGInScheduledEmailsEnabled = false, isLiveboardXLSXCSVDownloadEnabled, isGranularXLSXCSVSchedulesEnabled, isCentralizedLiveboardFilterUXEnabled = false, isScopedLiveboardFilteringEnabled, isLinkParametersEnabled, updatedSpotterChatPrompt, showSpotterRadiance, defaultQueryMode, enableStopAnswerGenerationEmbed, spotterChatConfig, spotterDataSources, isThisPeriodInDateFiltersEnabled, enableHomepageAnnouncement = false, isContinuousLiveboardPDFEnabled, enableLiveboardDataCache, hideAnswerEditPanel, } = this.viewConfig;
|
|
25066
|
+
const { tag, hideTagFilterChips, hideObjects, liveboardV2, showPrimaryNavbar, disableProfileAndHelp, hideHamburger, hideObjectSearch, hideNotification, hideApplicationSwitcher, hideOrgSwitcher, enableSearchAssist, newConnectionsExperience, dataPanelV2 = true, updatedSpotterExperience, hideLiveboardHeader = false, showLiveboardTitle = true, showLiveboardDescription = true, showMaskedFilterChip = false, isLiveboardMasterpiecesEnabled, newChartsLibrary, hideHomepageLeftNav = false, modularHomeExperience, isLiveboardHeaderSticky = true, enableAskSage, collapseSearchBarInitially = false, enable2ColumnLayout, isLiveboardAlwaysOn12ColLayout, enableCustomColumnGroups = false, dataPanelCustomGroupsAccordionInitialState = DataPanelCustomColumnGroupsAccordionState.EXPAND_ALL, collapseSearchBar = true, isLiveboardCompactHeaderEnabled, showLiveboardVerifiedBadge = true, showLiveboardReverifyBanner = true, hideIrrelevantChipsInLiveboardTabs, isEnhancedFilterInteractivityEnabled, homePageSearchBarMode, isUnifiedSearchExperienceEnabled = true, enablePendoHelp = true, discoveryExperience, coverAndFilterOptionInPDF, isLiveboardStylingAndGroupingEnabled, liveboardGutter, isPNGInScheduledEmailsEnabled = false, isLiveboardXLSXCSVDownloadEnabled, isGranularXLSXCSVSchedulesEnabled, isCentralizedLiveboardFilterUXEnabled = false, isScopedLiveboardFilteringEnabled, isLinkParametersEnabled, updatedSpotterChatPrompt, showSpotterRadiance, defaultQueryMode, enableStopAnswerGenerationEmbed, spotterChatConfig, spotterDataSources, isThisPeriodInDateFiltersEnabled, enableHomepageAnnouncement = false, isContinuousLiveboardPDFEnabled, enableLiveboardDataCache, hideAnswerEditPanel, spotterExperienceVersion, } = this.viewConfig;
|
|
24669
25067
|
let params = {};
|
|
24670
25068
|
params[Param.PrimaryNavHidden] = !showPrimaryNavbar;
|
|
24671
25069
|
params[Param.HideProfleAndHelp] = !!disableProfileAndHelp;
|
|
@@ -24720,6 +25118,9 @@ let AppEmbed$1 = class AppEmbed extends V1Embed {
|
|
|
24720
25118
|
if (spotterDataSources && spotterDataSources.length) {
|
|
24721
25119
|
params[Param.SpotterDataSources] = JSON.stringify(spotterDataSources);
|
|
24722
25120
|
}
|
|
25121
|
+
if (spotterExperienceVersion !== undefined) {
|
|
25122
|
+
params[Param.SpotterExperienceVersion] = spotterExperienceVersion;
|
|
25123
|
+
}
|
|
24723
25124
|
// Handle spotterChatConfig params
|
|
24724
25125
|
if (spotterChatConfig) {
|
|
24725
25126
|
const { hideToolResponseCardBranding, toolResponseCardBrandingLabel, spotterFileUploadEnabled, spotterFileUploadFileTypes, enableStarterPrompts, openSpotterOnLiveboardByDefault, } = spotterChatConfig;
|
|
@@ -24838,7 +25239,7 @@ let AppEmbed$1 = class AppEmbed extends V1Embed {
|
|
|
24838
25239
|
}
|
|
24839
25240
|
// Navigation V1/V2 and home page V1/V2 are deprecated. V3 is now the
|
|
24840
25241
|
// default experience, Need to send navigationVersion=v3 and
|
|
24841
|
-
// homepageVersion=v3 even when the no discoveryExperience /
|
|
25242
|
+
// homepageVersion=v3 even when the no discoveryExperience /
|
|
24842
25243
|
// modularHomeExperience config is set. Without these
|
|
24843
25244
|
// params, older TSA versions (< 26.7) fall back to V2 for nav and
|
|
24844
25245
|
// home page, so the defaults must be sent explicitly from the SDK.
|
|
@@ -25087,6 +25488,21 @@ const addPreviewStylesIfNotPresent = () => {
|
|
|
25087
25488
|
document.head.insertAdjacentHTML('beforeend', previewStyles);
|
|
25088
25489
|
};
|
|
25089
25490
|
|
|
25491
|
+
function buildLiveboardOverrideAppInitData(initData, viewConfig) {
|
|
25492
|
+
var _a;
|
|
25493
|
+
const { liveboardOverride } = viewConfig;
|
|
25494
|
+
// ThoughtSpot ignores an override with no data source entries; skip it.
|
|
25495
|
+
if (!((_a = liveboardOverride === null || liveboardOverride === void 0 ? void 0 : liveboardOverride.dataSourceOverride) === null || _a === void 0 ? void 0 : _a.length))
|
|
25496
|
+
return initData;
|
|
25497
|
+
return {
|
|
25498
|
+
...initData,
|
|
25499
|
+
embedParams: {
|
|
25500
|
+
...(initData.embedParams || {}),
|
|
25501
|
+
liveboardOverride,
|
|
25502
|
+
},
|
|
25503
|
+
};
|
|
25504
|
+
}
|
|
25505
|
+
|
|
25090
25506
|
/**
|
|
25091
25507
|
* Copyright (c) 2022
|
|
25092
25508
|
*
|
|
@@ -25156,14 +25572,15 @@ let LiveboardEmbed$1 = class LiveboardEmbed extends V1Embed {
|
|
|
25156
25572
|
async getAppInitData() {
|
|
25157
25573
|
const defaultAppInitData = await super.getAppInitData();
|
|
25158
25574
|
const vizInitData = buildSpotterVizAppInitData(defaultAppInitData, this.viewConfig);
|
|
25159
|
-
|
|
25575
|
+
const starterPromptsInitData = buildStarterPromptsAppInitData(vizInitData, this.viewConfig);
|
|
25576
|
+
return buildLiveboardOverrideAppInitData(starterPromptsInitData, this.viewConfig);
|
|
25160
25577
|
}
|
|
25161
25578
|
/**
|
|
25162
25579
|
* Construct a map of params to be passed on to the
|
|
25163
25580
|
* embedded Liveboard or visualization.
|
|
25164
25581
|
*/
|
|
25165
25582
|
getEmbedParams() {
|
|
25166
|
-
const params = this.
|
|
25583
|
+
const params = this.getUrlQueryParamsObject();
|
|
25167
25584
|
const queryParams = getQueryParamString(params, true);
|
|
25168
25585
|
return queryParams;
|
|
25169
25586
|
}
|
|
@@ -25171,7 +25588,7 @@ let LiveboardEmbed$1 = class LiveboardEmbed extends V1Embed {
|
|
|
25171
25588
|
var _a;
|
|
25172
25589
|
let params = {};
|
|
25173
25590
|
params = this.getBaseQueryParams(params);
|
|
25174
|
-
const { enableVizTransformations, visibleVizs, liveboardV2, vizId, hideTabPanel, activeTabId, hideLiveboardHeader, showLiveboardDescription, showLiveboardTitle, isLiveboardHeaderSticky = true, isLiveboardCompactHeaderEnabled, showLiveboardVerifiedBadge = true, showLiveboardReverifyBanner = true, hideIrrelevantChipsInLiveboardTabs, showMaskedFilterChip = false, isLiveboardMasterpiecesEnabled, newChartsLibrary, isEnhancedFilterInteractivityEnabled, enableAskSage, enable2ColumnLayout, isLiveboardAlwaysOn12ColLayout, dataPanelV2 = true, updatedSpotterExperience, enableCustomColumnGroups = false, oAuthPollingInterval, isForceRedirect, dataSourceId, coverAndFilterOptionInPDF, isLiveboardStylingAndGroupingEnabled, liveboardGutter, isPNGInScheduledEmailsEnabled = false, isLiveboardXLSXCSVDownloadEnabled, isGranularXLSXCSVSchedulesEnabled, showSpotterLimitations, isCentralizedLiveboardFilterUXEnabled = false, isScopedLiveboardFilteringEnabled, isLinkParametersEnabled, updatedSpotterChatPrompt, showSpotterRadiance, enableStopAnswerGenerationEmbed, spotterChatConfig, isThisPeriodInDateFiltersEnabled, isContinuousLiveboardPDFEnabled, enableLiveboardDataCache, } = this.viewConfig;
|
|
25591
|
+
const { enableVizTransformations, visibleVizs, liveboardV2, vizId, hideTabPanel, activeTabId, hideLiveboardHeader, showLiveboardDescription, showLiveboardTitle, isLiveboardHeaderSticky = true, isLiveboardCompactHeaderEnabled, showLiveboardVerifiedBadge = true, showLiveboardReverifyBanner = true, hideIrrelevantChipsInLiveboardTabs, showMaskedFilterChip = false, isLiveboardMasterpiecesEnabled, newChartsLibrary, isEnhancedFilterInteractivityEnabled, enableAskSage, enable2ColumnLayout, isLiveboardAlwaysOn12ColLayout, dataPanelV2 = true, updatedSpotterExperience, enableCustomColumnGroups = false, oAuthPollingInterval, isForceRedirect, dataSourceId, coverAndFilterOptionInPDF, isLiveboardStylingAndGroupingEnabled, liveboardGutter, isPNGInScheduledEmailsEnabled = false, isLiveboardXLSXCSVDownloadEnabled, isGranularXLSXCSVSchedulesEnabled, showSpotterLimitations, isCentralizedLiveboardFilterUXEnabled = false, isScopedLiveboardFilteringEnabled, isLinkParametersEnabled, updatedSpotterChatPrompt, showSpotterRadiance, enableStopAnswerGenerationEmbed, spotterChatConfig, isThisPeriodInDateFiltersEnabled, isContinuousLiveboardPDFEnabled, enableLiveboardDataCache, spotterExperienceVersion, } = this.viewConfig;
|
|
25175
25592
|
const preventLiveboardFilterRemoval = this.viewConfig.preventLiveboardFilterRemoval
|
|
25176
25593
|
|| this.viewConfig.preventPinboardFilterRemoval;
|
|
25177
25594
|
(_a = this.fullHeightController) === null || _a === void 0 ? void 0 : _a.addQueryParams(params);
|
|
@@ -25233,6 +25650,9 @@ let LiveboardEmbed$1 = class LiveboardEmbed extends V1Embed {
|
|
|
25233
25650
|
if (isLiveboardStylingAndGroupingEnabled !== undefined) {
|
|
25234
25651
|
params[Param.IsLiveboardStylingAndGroupingEnabled] = isLiveboardStylingAndGroupingEnabled;
|
|
25235
25652
|
}
|
|
25653
|
+
if (spotterExperienceVersion !== undefined) {
|
|
25654
|
+
params[Param.SpotterExperienceVersion] = spotterExperienceVersion;
|
|
25655
|
+
}
|
|
25236
25656
|
if (liveboardGutter !== undefined) {
|
|
25237
25657
|
params[Param.LiveboardGutter] = liveboardGutter;
|
|
25238
25658
|
}
|
|
@@ -25405,7 +25825,7 @@ let LiveboardEmbed$1 = class LiveboardEmbed extends V1Embed {
|
|
|
25405
25825
|
// instance. React builds a new instance per mount, so an equal config
|
|
25406
25826
|
// is a hide/show, not a hand-over: there is nothing stale to clear.
|
|
25407
25827
|
const previous = this.getPreRenderObj();
|
|
25408
|
-
const
|
|
25828
|
+
const previousRoute = this.isSameEmbedConfig(previous)
|
|
25409
25829
|
? undefined
|
|
25410
25830
|
: previous === null || previous === void 0 ? void 0 : previous.currentLiveboardState;
|
|
25411
25831
|
this.executeAfterEmbedContainerLoaded(async () => {
|
|
@@ -25413,7 +25833,7 @@ let LiveboardEmbed$1 = class LiveboardEmbed extends V1Embed {
|
|
|
25413
25833
|
// Navigate goes out first, so the container loads with the previous
|
|
25414
25834
|
// config's filters.
|
|
25415
25835
|
await this.preRenderParamsApplied;
|
|
25416
|
-
if (this.
|
|
25836
|
+
if (this.isAlreadyOnSameRoute(previousRoute)) {
|
|
25417
25837
|
// Navigate to the route we are already on is a no-op, so the
|
|
25418
25838
|
// liveboard keeps its state. Home unmounts the container, which
|
|
25419
25839
|
// clears it.
|
|
@@ -25434,18 +25854,9 @@ let LiveboardEmbed$1 = class LiveboardEmbed extends V1Embed {
|
|
|
25434
25854
|
};
|
|
25435
25855
|
});
|
|
25436
25856
|
}
|
|
25437
|
-
|
|
25438
|
-
|
|
25439
|
-
|
|
25440
|
-
* Undefined-valued keys are dropped before comparing. `navigateToLiveboard`
|
|
25441
|
-
* assigns `vizId`, `activeTabId` and `personalizedViewId` unconditionally,
|
|
25442
|
-
* so an instance that has been shown once carries those keys as `undefined`
|
|
25443
|
-
* while a freshly constructed one does not have them at all. `isEqual`
|
|
25444
|
-
* counts own keys, so without this the comparison can never be true after
|
|
25445
|
-
* the first show — which is the whole case this exists for.
|
|
25446
|
-
*
|
|
25447
|
-
* Callbacks compare as equal: React passes a fresh closure per render.
|
|
25448
|
-
*/
|
|
25857
|
+
// definedEntries drops undefined-valued keys: a shown instance carries
|
|
25858
|
+
// vizId/activeTabId/etc as undefined, so a raw isEqual never matches again.
|
|
25859
|
+
// Functions compare equal, since React passes a fresh closure per render.
|
|
25449
25860
|
isSameEmbedConfig(previous) {
|
|
25450
25861
|
if (!previous)
|
|
25451
25862
|
return false;
|
|
@@ -25456,14 +25867,14 @@ let LiveboardEmbed$1 = class LiveboardEmbed extends V1Embed {
|
|
|
25456
25867
|
// The whole route, not just the liveboard id: the path is built from the
|
|
25457
25868
|
// viz, tab and view too, so a same-liveboard show onto another tab is a
|
|
25458
25869
|
// real navigation.
|
|
25459
|
-
|
|
25460
|
-
if (!(
|
|
25870
|
+
isAlreadyOnSameRoute(previousRoute) {
|
|
25871
|
+
if (!(previousRoute === null || previousRoute === void 0 ? void 0 : previousRoute.liveboardId))
|
|
25461
25872
|
return false;
|
|
25462
25873
|
const { liveboardId, vizId, activeTabId, personalizedViewId, } = this.viewConfig;
|
|
25463
|
-
return
|
|
25464
|
-
&&
|
|
25465
|
-
&&
|
|
25466
|
-
&&
|
|
25874
|
+
return previousRoute.liveboardId === liveboardId
|
|
25875
|
+
&& previousRoute.vizId === vizId
|
|
25876
|
+
&& previousRoute.activeTabId === activeTabId
|
|
25877
|
+
&& previousRoute.personalizedViewId === personalizedViewId;
|
|
25467
25878
|
}
|
|
25468
25879
|
async handleRenderForPrerender() {
|
|
25469
25880
|
if (isUndefined$1(this.viewConfig.liveboardId)) {
|
|
@@ -25957,7 +26368,7 @@ let ConversationMessage$1 = class ConversationMessage extends TsEmbed {
|
|
|
25957
26368
|
getIframeSrc() {
|
|
25958
26369
|
const { sessionId, genNo, acSessionId, acGenNo, convId, messageId, } = this.viewConfig;
|
|
25959
26370
|
const path = 'conv-assist-answer';
|
|
25960
|
-
const queryParams = this.
|
|
26371
|
+
const queryParams = this.getUrlQueryParamsObject();
|
|
25961
26372
|
let query = '';
|
|
25962
26373
|
const queryParamsString = getQueryParamString(queryParams, true);
|
|
25963
26374
|
if (queryParamsString) {
|
|
@@ -26149,18 +26560,22 @@ let SpotterEmbed$1 = class SpotterEmbed extends TsEmbed {
|
|
|
26149
26560
|
}
|
|
26150
26561
|
}
|
|
26151
26562
|
setParamIfDefined(queryParams, Param.UpdatedSpotterExperience, updatedSpotterExperience, true);
|
|
26563
|
+
setParamIfDefined(queryParams, Param.SpotterExperienceVersion, this.viewConfig.spotterExperienceVersion);
|
|
26152
26564
|
return queryParams;
|
|
26153
26565
|
}
|
|
26154
26566
|
getIframeSrc() {
|
|
26155
|
-
const { worksheetId, searchOptions, runtimeFilters, excludeRuntimeFiltersfromURL, runtimeParameters, excludeRuntimeParametersfromURL, sharedConversationId, dataSources, } = this.viewConfig;
|
|
26567
|
+
const { worksheetId, searchOptions, runtimeFilters, excludeRuntimeFiltersfromURL, runtimeParameters, excludeRuntimeParametersfromURL, sharedConversationId, dataSources, spotterExperienceVersion, } = this.viewConfig;
|
|
26156
26568
|
// Deep-link into the read-only shared-conversation reader view when a
|
|
26157
26569
|
// shared conversation id is supplied (e.g. a recipient landing from a
|
|
26158
26570
|
// host-configured CONVERSATION_URL share link); otherwise the normal
|
|
26159
26571
|
// Spotter conversation surface.
|
|
26160
|
-
|
|
26572
|
+
let path = sharedConversationId
|
|
26161
26573
|
? `insights/conv-assist/s/${encodeURIComponent(sharedConversationId)}`
|
|
26162
26574
|
: 'insights/conv-assist';
|
|
26163
|
-
|
|
26575
|
+
if (spotterExperienceVersion === SpotterExperienceVersion.SPOTTER_2026_11) {
|
|
26576
|
+
path = path.replace('insights/conv-assist', 'insights/spotter');
|
|
26577
|
+
}
|
|
26578
|
+
const queryParams = this.getUrlQueryParamsObject();
|
|
26164
26579
|
let query = '';
|
|
26165
26580
|
const queryParamsString = getQueryParamString(queryParams, true);
|
|
26166
26581
|
if (queryParamsString) {
|