@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/src/embed/ts-embed.ts
CHANGED
|
@@ -46,6 +46,7 @@ import {
|
|
|
46
46
|
getValueFromWindow,
|
|
47
47
|
deserializeParam,
|
|
48
48
|
getScrollableAncestors,
|
|
49
|
+
setParamIfDefined,
|
|
49
50
|
} from '../utils';
|
|
50
51
|
import { getCustomActions } from '../utils/custom-actions';
|
|
51
52
|
import {
|
|
@@ -80,6 +81,7 @@ import {
|
|
|
80
81
|
BaseViewConfig,
|
|
81
82
|
} from '../types';
|
|
82
83
|
import { uploadMixpanelEvent, MIXPANEL_EVENT } from '../mixpanel-service';
|
|
84
|
+
import { summarizeRuntimeDataForTelemetry } from '../utils/runtimeTelemetry';
|
|
83
85
|
import { processEventData, processAuthFailure } from '../utils/processData';
|
|
84
86
|
import { version } from '../utils/sdk-version';
|
|
85
87
|
import {
|
|
@@ -129,6 +131,98 @@ const UPDATE_EMBED_PARAMS_SETTLE_MS = 200;
|
|
|
129
131
|
// truthy and parses to {}.
|
|
130
132
|
const NO_RUNTIME_PARAMS = '&';
|
|
131
133
|
|
|
134
|
+
/**
|
|
135
|
+
* Params kept on the iframe `src` when `excludeConfigFromURL` is set. The rest
|
|
136
|
+
* are sent in the APP_INIT payload.
|
|
137
|
+
* @internal
|
|
138
|
+
*/
|
|
139
|
+
export const BOOTSTRAP_URL_PARAMS: ReadonlySet<string> = new Set<string>([
|
|
140
|
+
// Marks the app as embedded.
|
|
141
|
+
Param.EmbedApp,
|
|
142
|
+
// The host page URL, used to validate the postMessage origin.
|
|
143
|
+
Param.HostAppUrl,
|
|
144
|
+
// The SDK version.
|
|
145
|
+
Param.Version,
|
|
146
|
+
// The authentication type set in init.
|
|
147
|
+
Param.AuthType,
|
|
148
|
+
// Whether the app signs the user in automatically.
|
|
149
|
+
Param.AutoLogin,
|
|
150
|
+
// Stops the app from redirecting to its login page.
|
|
151
|
+
Param.DisableLoginRedirect,
|
|
152
|
+
// Forces the SAML redirect for EmbeddedSSO.
|
|
153
|
+
Param.ForceSAMLAutoRedirect,
|
|
154
|
+
// Set for cookieless trusted authentication.
|
|
155
|
+
Param.cookieless,
|
|
156
|
+
// Lets the app use the pre-fetched auth info.
|
|
157
|
+
Param.preAuthCache,
|
|
158
|
+
// Blocks access to the full app outside the embed.
|
|
159
|
+
Param.blockNonEmbedFullAppAccess,
|
|
160
|
+
// The org to load, which the auth info depends on.
|
|
161
|
+
Param.OverrideOrgId,
|
|
162
|
+
// The host window height when the iframe loads.
|
|
163
|
+
Param.ViewPortHeight,
|
|
164
|
+
// The host window width when the iframe loads.
|
|
165
|
+
Param.ViewPortWidth,
|
|
166
|
+
// The app's client log level.
|
|
167
|
+
Param.ClientLogLevel,
|
|
168
|
+
// Lets the app override the native console.
|
|
169
|
+
Param.OverrideNativeConsole,
|
|
170
|
+
// An extra Pendo tracking key.
|
|
171
|
+
Param.PendoTrackingKey,
|
|
172
|
+
// The locale for number formatting.
|
|
173
|
+
Param.NumberFormatLocale,
|
|
174
|
+
// The locale for date formatting.
|
|
175
|
+
Param.DateFormatLocale,
|
|
176
|
+
// The currency format.
|
|
177
|
+
Param.CurrencyFormat,
|
|
178
|
+
// The UI language.
|
|
179
|
+
Param.Locale,
|
|
180
|
+
// Turns on dark mode.
|
|
181
|
+
Param.IsDarkMode,
|
|
182
|
+
// Turns on the radiant theme that dark mode needs.
|
|
183
|
+
Param.RadiantThemeEnabled,
|
|
184
|
+
// Marks a SearchEmbed or SearchBarEmbed.
|
|
185
|
+
Param.searchEmbed,
|
|
186
|
+
// Marks a LiveboardEmbed.
|
|
187
|
+
Param.livedBoardEmbed,
|
|
188
|
+
// Marks a SpotterAgentEmbed.
|
|
189
|
+
Param.isSpotterAgentEmbed,
|
|
190
|
+
// Marks a SpotterEmbed.
|
|
191
|
+
Param.SpotterEnabled,
|
|
192
|
+
// Marks an AppEmbed.
|
|
193
|
+
Param.IsFullAppEmbed,
|
|
194
|
+
// Legacy flag for the onBeforeGetVizData API intercept.
|
|
195
|
+
Param.IsOnBeforeGetVizDataInterceptEnabled,
|
|
196
|
+
// Lets the host override links in the app.
|
|
197
|
+
Param.LinkOverride,
|
|
198
|
+
// Turns on version 2 of the link overrides.
|
|
199
|
+
Param.EnableLinkOverridesV2,
|
|
200
|
+
// Stops links from opening in a new tab.
|
|
201
|
+
Param.DisableRedirectionLinksInNewTab,
|
|
202
|
+
// Uses replaceState instead of pushState for app navigation.
|
|
203
|
+
Param.OverrideHistoryState,
|
|
204
|
+
// Shows search results as a table.
|
|
205
|
+
Param.ForceTable,
|
|
206
|
+
// The URL of the custom string IDs file.
|
|
207
|
+
Param.StringIDsUrl,
|
|
208
|
+
// The data sources that search opens with.
|
|
209
|
+
Param.DataSources,
|
|
210
|
+
// Exposes translation IDs in the app.
|
|
211
|
+
Param.ExposeTranslationIDs,
|
|
212
|
+
// The URL of the custom icon sprite.
|
|
213
|
+
Param.IconSpriteUrl,
|
|
214
|
+
// The tag that filters the metadata lists in an AppEmbed.
|
|
215
|
+
Param.Tag,
|
|
216
|
+
// Set when a Liveboard embed shows a single visualization (vizId).
|
|
217
|
+
Param.vizEmbed,
|
|
218
|
+
// Whether search opens with the last-selected data sources.
|
|
219
|
+
Param.UseLastSelectedDataSource,
|
|
220
|
+
// The query mode Spotter opens in.
|
|
221
|
+
Param.DefaultQueryMode,
|
|
222
|
+
// The initial search query. Omitted with excludeSearchTokenStringFromURL.
|
|
223
|
+
Param.searchTokenString,
|
|
224
|
+
]);
|
|
225
|
+
|
|
132
226
|
/**
|
|
133
227
|
* The event id map from v2 event names to v1 event id
|
|
134
228
|
* v1 events are the classic embed events implemented in Blink v1
|
|
@@ -165,6 +259,8 @@ export class TsEmbed {
|
|
|
165
259
|
|
|
166
260
|
protected isAppInitialized = false;
|
|
167
261
|
|
|
262
|
+
private initDataParams: Partial<Record<Param, any>> & Record<string, any> = {};
|
|
263
|
+
|
|
168
264
|
/**
|
|
169
265
|
* A reference to the iframe within which the ThoughtSpot app
|
|
170
266
|
* will be rendered.
|
|
@@ -255,9 +351,10 @@ export class TsEmbed {
|
|
|
255
351
|
...viewConfig,
|
|
256
352
|
};
|
|
257
353
|
this.registerAppInit();
|
|
258
|
-
uploadMixpanelEvent(
|
|
259
|
-
|
|
260
|
-
|
|
354
|
+
uploadMixpanelEvent(
|
|
355
|
+
MIXPANEL_EVENT.VISUAL_SDK_EMBED_CREATE,
|
|
356
|
+
summarizeRuntimeDataForTelemetry(viewConfig),
|
|
357
|
+
);
|
|
261
358
|
const embedConfig = getEmbedConfig();
|
|
262
359
|
if (embedConfig) {
|
|
263
360
|
this.embedConfig = embedConfig;
|
|
@@ -585,6 +682,19 @@ export class TsEmbed {
|
|
|
585
682
|
return this.getDefaultAppInitData();
|
|
586
683
|
}
|
|
587
684
|
|
|
685
|
+
private withInitDataParams(appInitData: Record<string, any>): Record<string, any> {
|
|
686
|
+
if (isEmpty(this.initDataParams)) {
|
|
687
|
+
return appInitData;
|
|
688
|
+
}
|
|
689
|
+
return {
|
|
690
|
+
...appInitData,
|
|
691
|
+
embedParams: {
|
|
692
|
+
...this.initDataParams,
|
|
693
|
+
...(appInitData.embedParams || {}),
|
|
694
|
+
},
|
|
695
|
+
};
|
|
696
|
+
}
|
|
697
|
+
|
|
588
698
|
/**
|
|
589
699
|
* Send Custom style as part of payload of APP_INIT
|
|
590
700
|
* @param _
|
|
@@ -592,7 +702,7 @@ export class TsEmbed {
|
|
|
592
702
|
*/
|
|
593
703
|
private appInitCb = async (_: any, responder: any) => {
|
|
594
704
|
try {
|
|
595
|
-
const appInitData = await this.getAppInitData();
|
|
705
|
+
const appInitData = this.withInitDataParams(await this.getAppInitData());
|
|
596
706
|
this.isAppInitialized = true;
|
|
597
707
|
responder({
|
|
598
708
|
type: EmbedEvent.APP_INIT,
|
|
@@ -798,6 +908,15 @@ export class TsEmbed {
|
|
|
798
908
|
if (this.embedConfig.currencyFormat) {
|
|
799
909
|
queryParams[Param.CurrencyFormat] = this.embedConfig.currencyFormat;
|
|
800
910
|
}
|
|
911
|
+
// The view config wins over init, so an embed can opt out of a dark
|
|
912
|
+
// mode set in `init`. `??` and not `||`, so that an explicit `false`
|
|
913
|
+
// overrides an init-level `true`.
|
|
914
|
+
const isDarkMode = this.viewConfig.isDarkMode ?? this.embedConfig.isDarkMode;
|
|
915
|
+
setParamIfDefined(queryParams, Param.IsDarkMode, isDarkMode, true);
|
|
916
|
+
// The app's dark mode lives in its radiant theme, so turn that on too.
|
|
917
|
+
if (isDarkMode) {
|
|
918
|
+
queryParams[Param.RadiantThemeEnabled] = true;
|
|
919
|
+
}
|
|
801
920
|
|
|
802
921
|
const {
|
|
803
922
|
disabledActions,
|
|
@@ -953,7 +1072,7 @@ export class TsEmbed {
|
|
|
953
1072
|
}
|
|
954
1073
|
|
|
955
1074
|
protected getEmbedParams() {
|
|
956
|
-
const queryParams = this.
|
|
1075
|
+
const queryParams = this.getUrlQueryParamsObject();
|
|
957
1076
|
return getQueryParamString(queryParams);
|
|
958
1077
|
}
|
|
959
1078
|
|
|
@@ -962,6 +1081,25 @@ export class TsEmbed {
|
|
|
962
1081
|
return params;
|
|
963
1082
|
}
|
|
964
1083
|
|
|
1084
|
+
protected getUrlQueryParamsObject(): Record<any, any> {
|
|
1085
|
+
const queryParams = this.getEmbedParamsObject();
|
|
1086
|
+
if (!this.isConfigExcludedFromUrl()) {
|
|
1087
|
+
this.initDataParams = {};
|
|
1088
|
+
return queryParams;
|
|
1089
|
+
}
|
|
1090
|
+
const urlParams: Record<any, any> = {};
|
|
1091
|
+
const excludedParams: Partial<Record<Param, any>> & Record<string, any> = {};
|
|
1092
|
+
Object.entries(queryParams).forEach(([key, value]) => {
|
|
1093
|
+
if (BOOTSTRAP_URL_PARAMS.has(key)) {
|
|
1094
|
+
urlParams[key] = value;
|
|
1095
|
+
} else {
|
|
1096
|
+
excludedParams[key] = deserializeParam(value);
|
|
1097
|
+
}
|
|
1098
|
+
});
|
|
1099
|
+
this.initDataParams = excludedParams;
|
|
1100
|
+
return urlParams;
|
|
1101
|
+
}
|
|
1102
|
+
|
|
965
1103
|
protected getRootIframeSrc() {
|
|
966
1104
|
const query = this.getEmbedParams();
|
|
967
1105
|
return this.getEmbedBasePath(query);
|
|
@@ -1236,26 +1374,12 @@ export class TsEmbed {
|
|
|
1236
1374
|
}
|
|
1237
1375
|
|
|
1238
1376
|
/**
|
|
1239
|
-
* Resolves the configured preRenderContainer
|
|
1240
|
-
*
|
|
1241
|
-
*
|
|
1242
|
-
*
|
|
1243
|
-
*
|
|
1244
|
-
*
|
|
1245
|
-
* scrolling ancestor, falling back to `document.body`.
|
|
1246
|
-
*
|
|
1247
|
-
* The wrapper is absolutely positioned, so it follows the page for free —
|
|
1248
|
-
* but only while it sits inside whatever scrolls. `document.body` is right
|
|
1249
|
-
* only when the document itself is the scroller; an app that scrolls an
|
|
1250
|
-
* inner element instead left the frame pinned to the viewport while the page
|
|
1251
|
-
* moved under it (SCAL-338563). Being inside the scroller also lets wheel
|
|
1252
|
-
* events chain out of the frame into it, which they cannot do from
|
|
1253
|
-
* `document.body`.
|
|
1254
|
-
*
|
|
1255
|
-
* A scrolling ancestor is layout chrome rather than route content, so it
|
|
1256
|
-
* outlives the embed in practice; and if it does go, the host element goes
|
|
1257
|
-
* with it and this instance is remounting anyway.
|
|
1258
|
-
* `reconcilePreRenderContainer` re-runs this on a detached container.
|
|
1377
|
+
* Resolves the configured preRenderContainer, or defaults to the host's
|
|
1378
|
+
* nearest scrolling ancestor (document.body if none). The absolutely
|
|
1379
|
+
* positioned wrapper only follows the page while it sits inside what
|
|
1380
|
+
* scrolls, so body is right only when the document itself scrolls — an inner
|
|
1381
|
+
* scroller left the frame pinned to the viewport (SCAL-338563). A string
|
|
1382
|
+
* selector is re-queried each call so a remounted container resolves fresh.
|
|
1259
1383
|
*/
|
|
1260
1384
|
private resolvePreRenderContainerTarget(): HTMLElement {
|
|
1261
1385
|
const containerConfig = this.getPreRenderConfig().containerSelector;
|
|
@@ -1821,6 +1945,12 @@ export class TsEmbed {
|
|
|
1821
1945
|
uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_RENDER_CALLED, {
|
|
1822
1946
|
embedComponentType: this.viewConfig.embedComponentType,
|
|
1823
1947
|
});
|
|
1948
|
+
uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_INIT_ACTIONS, {
|
|
1949
|
+
embedComponentType: this.viewConfig.embedComponentType,
|
|
1950
|
+
hiddenActions: this.viewConfig.hiddenActions ?? [],
|
|
1951
|
+
visibleActions: this.viewConfig.visibleActions ?? [],
|
|
1952
|
+
disabledActions: this.viewConfig.disabledActions ?? [],
|
|
1953
|
+
});
|
|
1824
1954
|
if (!getIsInitCalled()) {
|
|
1825
1955
|
logger.error(ERROR_MESSAGE.RENDER_CALLED_BEFORE_INIT);
|
|
1826
1956
|
}
|
|
@@ -2079,6 +2209,28 @@ export class TsEmbed {
|
|
|
2079
2209
|
// blocked.
|
|
2080
2210
|
protected preRenderParamsApplied: Promise<void> = Promise.resolve();
|
|
2081
2211
|
|
|
2212
|
+
protected isConfigExcludedFromUrl(): boolean {
|
|
2213
|
+
const flag =
|
|
2214
|
+
this.viewConfig.additionalFlags?.excludeConfigFromURL ??
|
|
2215
|
+
this.embedConfig.additionalFlags?.excludeConfigFromURL;
|
|
2216
|
+
return flag === true || flag === 'true';
|
|
2217
|
+
}
|
|
2218
|
+
|
|
2219
|
+
protected async triggerUpdateEmbedParams(): Promise<void> {
|
|
2220
|
+
try {
|
|
2221
|
+
const params = await this.getUpdateEmbedParamsObject();
|
|
2222
|
+
this.trigger(HostEvent.UpdateEmbedParams, params);
|
|
2223
|
+
} catch (error) {
|
|
2224
|
+
logger.error(ERROR_MESSAGE.UPDATE_PARAMS_FAILED, error);
|
|
2225
|
+
this.handleError({
|
|
2226
|
+
errorType: ErrorDetailsTypes.API,
|
|
2227
|
+
message: error?.message || ERROR_MESSAGE.UPDATE_PARAMS_FAILED,
|
|
2228
|
+
code: EmbedErrorCodes.UPDATE_PARAMS_FAILED,
|
|
2229
|
+
error: error?.message || error,
|
|
2230
|
+
});
|
|
2231
|
+
}
|
|
2232
|
+
}
|
|
2233
|
+
|
|
2082
2234
|
protected beforePrerenderVisible(): void {
|
|
2083
2235
|
// We can ignore this as its a bit expensive and the newer customers
|
|
2084
2236
|
// have moved on to UpdateEmbedParams supported clusters
|
|
@@ -2089,16 +2241,7 @@ export class TsEmbed {
|
|
|
2089
2241
|
this.preRenderParamsApplied = new Promise<void>((resolve) => {
|
|
2090
2242
|
this.executeAfterEmbedContainerLoaded(async () => {
|
|
2091
2243
|
try {
|
|
2092
|
-
|
|
2093
|
-
this.trigger(HostEvent.UpdateEmbedParams, params);
|
|
2094
|
-
} catch (error) {
|
|
2095
|
-
logger.error(ERROR_MESSAGE.UPDATE_PARAMS_FAILED, error);
|
|
2096
|
-
this.handleError({
|
|
2097
|
-
errorType: ErrorDetailsTypes.API,
|
|
2098
|
-
message: error?.message || ERROR_MESSAGE.UPDATE_PARAMS_FAILED,
|
|
2099
|
-
code: EmbedErrorCodes.UPDATE_PARAMS_FAILED,
|
|
2100
|
-
error: error?.message || error,
|
|
2101
|
-
});
|
|
2244
|
+
await this.triggerUpdateEmbedParams();
|
|
2102
2245
|
} finally {
|
|
2103
2246
|
setTimeout(resolve, UPDATE_EMBED_PARAMS_SETTLE_MS);
|
|
2104
2247
|
}
|
|
@@ -2247,19 +2390,21 @@ export class TsEmbed {
|
|
|
2247
2390
|
return;
|
|
2248
2391
|
}
|
|
2249
2392
|
const { zIndex } = this.getPreRenderConfig();
|
|
2393
|
+
// A hidden pre-render frame must add no scroll space to the host page.
|
|
2250
2394
|
const preRenderHideStyles = {
|
|
2251
2395
|
opacity: '0',
|
|
2252
2396
|
pointerEvents: 'none',
|
|
2253
2397
|
zIndex: zIndex !== undefined ? String(zIndex) : '-1000',
|
|
2254
|
-
|
|
2398
|
+
// Resolves to the viewport, so the hidden frame belongs to no
|
|
2399
|
+
// scroll container's overflow; syncPreRenderStyle restores absolute
|
|
2400
|
+
// on show.
|
|
2401
|
+
position: 'fixed',
|
|
2255
2402
|
top: '0',
|
|
2256
2403
|
left: '0',
|
|
2257
2404
|
overflow: 'hidden',
|
|
2258
|
-
//
|
|
2259
|
-
//
|
|
2260
|
-
//
|
|
2261
|
-
// downwards, so a hidden frame parked above the top edge adds
|
|
2262
|
-
// none, where one left at full height shows as blank scroll space.
|
|
2405
|
+
// The one exception: a transformed or contained ancestor captures
|
|
2406
|
+
// `fixed`; parking above the top edge keeps it out of that
|
|
2407
|
+
// overflow.
|
|
2263
2408
|
transform: PRERENDER_PARKED_TRANSFORM,
|
|
2264
2409
|
};
|
|
2265
2410
|
setStyleProperties(this.preRenderWrapper, preRenderHideStyles);
|
package/src/index.ts
CHANGED
|
@@ -34,6 +34,13 @@ import { SearchBarEmbed, SearchBarViewConfig } from './embed/search-bar';
|
|
|
34
34
|
import { SpotterAgentEmbed, SpotterAgentEmbedViewConfig, BodylessConversation, BodylessConversationViewConfig} from './embed/bodyless-conversation';
|
|
35
35
|
import { SpotterEmbed, SpotterEmbedViewConfig, SpotterChatViewConfig, SpotterSidebarViewConfig, SpotterAnalystConfig, SpotterQueryMode, SpotterShareConversationConfig, StarterPromptsConfig, StarterPromptCategory, StarterPreviewDataCategory, StarterPromptQuestion, ConversationEmbed, ConversationViewConfig } from './embed/conversation';
|
|
36
36
|
import { SpotterVizConfig, SpotterVizStarterPrompt, SpotterVizLoaderTip } from './embed/spotter-viz-utils';
|
|
37
|
+
import { SpotterExperienceVersion } from './embed/spotter-utils';
|
|
38
|
+
import {
|
|
39
|
+
LiveboardOverride,
|
|
40
|
+
LiveboardDataSourceOverride,
|
|
41
|
+
LiveboardFilterQuery,
|
|
42
|
+
LiveboardParameterQuery,
|
|
43
|
+
} from './embed/liveboard-override-utils';
|
|
37
44
|
import {
|
|
38
45
|
AuthFailureType, AuthStatus, AuthEvent, AuthEventEmitter,
|
|
39
46
|
} from './auth';
|
|
@@ -84,7 +91,9 @@ import {
|
|
|
84
91
|
VisualizationOverrides,
|
|
85
92
|
} from './types';
|
|
86
93
|
import { CustomCssVariables } from './css-variables';
|
|
87
|
-
import {
|
|
94
|
+
import {
|
|
95
|
+
AnswerService, SessionInterface, UnderlyingDataPoint, SortOptions,
|
|
96
|
+
} from './utils/graphql/answerService/answerService';
|
|
88
97
|
import { getEmbedConfig } from './embed/embedConfig';
|
|
89
98
|
import { uploadMixpanelEvent, MIXPANEL_EVENT } from './mixpanel-service';
|
|
90
99
|
import { tokenizedFetch } from './tokenizedFetch';
|
|
@@ -150,6 +159,7 @@ import {
|
|
|
150
159
|
ScheduleEmailRequest,
|
|
151
160
|
NavigateRequest,
|
|
152
161
|
SetActiveTabRequest,
|
|
162
|
+
UpdateThemeRequest,
|
|
153
163
|
} from './contracts/host-event-contracts';
|
|
154
164
|
import {
|
|
155
165
|
convertFilterChangedToUpdateFiltersPayload,
|
|
@@ -202,6 +212,7 @@ export {
|
|
|
202
212
|
// types
|
|
203
213
|
SessionInterface,
|
|
204
214
|
UnderlyingDataPoint,
|
|
215
|
+
SortOptions,
|
|
205
216
|
Page,
|
|
206
217
|
AuthType,
|
|
207
218
|
RuntimeFilter,
|
|
@@ -216,9 +227,14 @@ export {
|
|
|
216
227
|
SearchViewConfig,
|
|
217
228
|
SearchBarViewConfig,
|
|
218
229
|
LiveboardViewConfig,
|
|
230
|
+
LiveboardOverride,
|
|
231
|
+
LiveboardDataSourceOverride,
|
|
232
|
+
LiveboardFilterQuery,
|
|
233
|
+
LiveboardParameterQuery,
|
|
219
234
|
SpotterVizConfig,
|
|
220
235
|
SpotterVizStarterPrompt,
|
|
221
236
|
SpotterVizLoaderTip,
|
|
237
|
+
SpotterExperienceVersion,
|
|
222
238
|
AppViewConfig,
|
|
223
239
|
PrefetchFeatures,
|
|
224
240
|
FrameParams,
|
|
@@ -277,6 +293,7 @@ export {
|
|
|
277
293
|
ScheduleEmailRequest,
|
|
278
294
|
NavigateRequest,
|
|
279
295
|
SetActiveTabRequest,
|
|
296
|
+
UpdateThemeRequest,
|
|
280
297
|
LiveboardTab,
|
|
281
298
|
LiveboardGroup,
|
|
282
299
|
ApplicabilityLevel,
|
package/src/mixpanel-service.ts
CHANGED
|
@@ -19,6 +19,7 @@ let mixpanelInstance: mixpanel.Mixpanel;
|
|
|
19
19
|
export const MIXPANEL_EVENT = {
|
|
20
20
|
VISUAL_SDK_RENDER_START: 'visual-sdk-render-start',
|
|
21
21
|
VISUAL_SDK_CALLED_INIT: 'visual-sdk-called-init',
|
|
22
|
+
VISUAL_SDK_INIT_ACTIONS: 'visual-sdk-init-actions',
|
|
22
23
|
VISUAL_SDK_RENDER_COMPLETE: 'visual-sdk-render-complete',
|
|
23
24
|
VISUAL_SDK_RENDER_FAILED: 'visual-sdk-render-failed',
|
|
24
25
|
VISUAL_SDK_TRIGGER: 'visual-sdk-trigger',
|
|
@@ -34,6 +34,7 @@ export {
|
|
|
34
34
|
AuthType,
|
|
35
35
|
RuntimeFilter,
|
|
36
36
|
RuntimeFilterOp,
|
|
37
|
+
SortOptions,
|
|
37
38
|
EmbedEvent,
|
|
38
39
|
HostEvent,
|
|
39
40
|
DataSourceVisualMode,
|
|
@@ -42,6 +43,10 @@ export {
|
|
|
42
43
|
SearchViewConfig,
|
|
43
44
|
SearchBarViewConfig,
|
|
44
45
|
LiveboardViewConfig,
|
|
46
|
+
LiveboardOverride,
|
|
47
|
+
LiveboardDataSourceOverride,
|
|
48
|
+
LiveboardFilterQuery,
|
|
49
|
+
LiveboardParameterQuery,
|
|
45
50
|
AppViewConfig,
|
|
46
51
|
PrefetchFeatures,
|
|
47
52
|
FrameParams,
|
|
@@ -87,6 +92,7 @@ export {
|
|
|
87
92
|
ScheduleEmailRequest,
|
|
88
93
|
NavigateRequest,
|
|
89
94
|
SetActiveTabRequest,
|
|
95
|
+
UpdateThemeRequest,
|
|
90
96
|
LiveboardTab,
|
|
91
97
|
LiveboardGroup,
|
|
92
98
|
ApplicabilityLevel,
|
|
@@ -124,6 +130,7 @@ export {
|
|
|
124
130
|
CustomActionsPosition,
|
|
125
131
|
CustomActionTarget,
|
|
126
132
|
SpotterAnalystConfig,
|
|
133
|
+
SpotterExperienceVersion,
|
|
127
134
|
StarterPromptsConfig,
|
|
128
135
|
StarterPromptCategory,
|
|
129
136
|
StarterPreviewDataCategory,
|