@thoughtspot/visual-embed-sdk 1.39.1 → 1.39.2-alpha.2
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/config.spec.js +9 -0
- package/cjs/src/config.spec.js.map +1 -1
- package/cjs/src/embed/app.d.ts +75 -15
- package/cjs/src/embed/app.d.ts.map +1 -1
- package/cjs/src/embed/app.js +69 -9
- package/cjs/src/embed/app.js.map +1 -1
- package/cjs/src/embed/app.spec.js +374 -12
- package/cjs/src/embed/app.spec.js.map +1 -1
- package/cjs/src/embed/bodyless-conversation.d.ts +19 -7
- package/cjs/src/embed/bodyless-conversation.d.ts.map +1 -1
- package/cjs/src/embed/bodyless-conversation.js +24 -4
- package/cjs/src/embed/bodyless-conversation.js.map +1 -1
- package/cjs/src/embed/bodyless-conversation.spec.js +8 -190
- package/cjs/src/embed/bodyless-conversation.spec.js.map +1 -1
- package/cjs/src/embed/conversation.spec.js +28 -0
- package/cjs/src/embed/conversation.spec.js.map +1 -1
- package/cjs/src/embed/embedConfig.d.ts +9 -7
- package/cjs/src/embed/embedConfig.d.ts.map +1 -1
- package/cjs/src/embed/embedConfig.js +9 -7
- package/cjs/src/embed/embedConfig.js.map +1 -1
- package/cjs/src/embed/liveboard.d.ts +56 -17
- package/cjs/src/embed/liveboard.d.ts.map +1 -1
- package/cjs/src/embed/liveboard.js +48 -4
- package/cjs/src/embed/liveboard.js.map +1 -1
- package/cjs/src/embed/liveboard.spec.js +215 -11
- package/cjs/src/embed/liveboard.spec.js.map +1 -1
- package/cjs/src/embed/ts-embed.d.ts +5 -0
- package/cjs/src/embed/ts-embed.d.ts.map +1 -1
- package/cjs/src/embed/ts-embed.js +16 -1
- package/cjs/src/embed/ts-embed.js.map +1 -1
- package/cjs/src/embed/ts-embed.spec.js +164 -0
- package/cjs/src/embed/ts-embed.spec.js.map +1 -1
- package/cjs/src/errors.d.ts +1 -0
- package/cjs/src/errors.d.ts.map +1 -1
- package/cjs/src/errors.js +1 -0
- package/cjs/src/errors.js.map +1 -1
- package/cjs/src/index.d.ts +2 -2
- package/cjs/src/index.d.ts.map +1 -1
- package/cjs/src/index.js +2 -1
- package/cjs/src/index.js.map +1 -1
- package/cjs/src/react/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 +3 -2
- package/cjs/src/react/all-types-export.js.map +1 -1
- package/cjs/src/react/index.d.ts +71 -20
- package/cjs/src/react/index.d.ts.map +1 -1
- package/cjs/src/react/index.js +79 -42
- package/cjs/src/react/index.js.map +1 -1
- package/cjs/src/react/index.spec.js +436 -100
- package/cjs/src/react/index.spec.js.map +1 -1
- package/cjs/src/types.d.ts +80 -6
- package/cjs/src/types.d.ts.map +1 -1
- package/cjs/src/types.js +45 -1
- package/cjs/src/types.js.map +1 -1
- package/cjs/src/utils/graphql/nlsService/conversation-service.d.ts.map +1 -1
- package/cjs/src/utils/graphql/nlsService/conversation-service.js +2 -0
- package/cjs/src/utils/graphql/nlsService/conversation-service.js.map +1 -1
- package/cjs/src/utils/processTrigger.js +2 -1
- package/cjs/src/utils/processTrigger.js.map +1 -1
- package/cjs/src/utils.d.ts +6 -0
- package/cjs/src/utils.d.ts.map +1 -1
- package/cjs/src/utils.js +23 -3
- package/cjs/src/utils.js.map +1 -1
- package/cjs/src/utils.spec.js +237 -1
- package/cjs/src/utils.spec.js.map +1 -1
- package/dist/{index-JaFaxrvQ.js → index-CmEQfuE3.js} +1 -1
- package/dist/index-DeFzsyFF.js +7371 -0
- package/dist/index-Dpf0rd6w.js +7371 -0
- package/dist/index-UuEbsISo.js +7447 -0
- package/dist/index-e3Uw3YFO.js +7371 -0
- package/dist/src/embed/app.d.ts +75 -15
- package/dist/src/embed/app.d.ts.map +1 -1
- package/dist/src/embed/bodyless-conversation.d.ts +19 -7
- package/dist/src/embed/bodyless-conversation.d.ts.map +1 -1
- package/dist/src/embed/embedConfig.d.ts +9 -7
- package/dist/src/embed/embedConfig.d.ts.map +1 -1
- package/dist/src/embed/liveboard.d.ts +56 -17
- package/dist/src/embed/liveboard.d.ts.map +1 -1
- package/dist/src/embed/ts-embed.d.ts +5 -0
- package/dist/src/embed/ts-embed.d.ts.map +1 -1
- package/dist/src/errors.d.ts +1 -0
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/index.d.ts +2 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/react/all-types-export.d.ts +1 -1
- package/dist/src/react/all-types-export.d.ts.map +1 -1
- package/dist/src/react/index.d.ts +71 -20
- package/dist/src/react/index.d.ts.map +1 -1
- package/dist/src/types.d.ts +80 -6
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/utils/graphql/nlsService/conversation-service.d.ts.map +1 -1
- package/dist/src/utils.d.ts +6 -0
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/tsembed-react.es.js +320 -78
- package/dist/tsembed-react.js +320 -76
- package/dist/tsembed.es.js +238 -31
- package/dist/tsembed.js +236 -29
- package/dist/visual-embed-sdk-react-full.d.ts +288 -72
- package/dist/visual-embed-sdk-react.d.ts +288 -72
- package/dist/visual-embed-sdk.d.ts +218 -53
- package/lib/package.json +1 -1
- package/lib/src/config.spec.js +9 -0
- package/lib/src/config.spec.js.map +1 -1
- package/lib/src/embed/app.d.ts +75 -15
- package/lib/src/embed/app.d.ts.map +1 -1
- package/lib/src/embed/app.js +69 -9
- package/lib/src/embed/app.js.map +1 -1
- package/lib/src/embed/app.spec.js +376 -14
- package/lib/src/embed/app.spec.js.map +1 -1
- package/lib/src/embed/bodyless-conversation.d.ts +19 -7
- package/lib/src/embed/bodyless-conversation.d.ts.map +1 -1
- package/lib/src/embed/bodyless-conversation.js +23 -4
- package/lib/src/embed/bodyless-conversation.js.map +1 -1
- package/lib/src/embed/bodyless-conversation.spec.js +9 -191
- package/lib/src/embed/bodyless-conversation.spec.js.map +1 -1
- package/lib/src/embed/conversation.spec.js +30 -2
- package/lib/src/embed/conversation.spec.js.map +1 -1
- package/lib/src/embed/embedConfig.d.ts +9 -7
- package/lib/src/embed/embedConfig.d.ts.map +1 -1
- package/lib/src/embed/embedConfig.js +9 -7
- package/lib/src/embed/embedConfig.js.map +1 -1
- package/lib/src/embed/liveboard.d.ts +56 -17
- package/lib/src/embed/liveboard.d.ts.map +1 -1
- package/lib/src/embed/liveboard.js +49 -5
- package/lib/src/embed/liveboard.js.map +1 -1
- package/lib/src/embed/liveboard.spec.js +215 -11
- package/lib/src/embed/liveboard.spec.js.map +1 -1
- package/lib/src/embed/ts-embed.d.ts +5 -0
- package/lib/src/embed/ts-embed.d.ts.map +1 -1
- package/lib/src/embed/ts-embed.js +16 -1
- package/lib/src/embed/ts-embed.js.map +1 -1
- package/lib/src/embed/ts-embed.spec.js +164 -0
- package/lib/src/embed/ts-embed.spec.js.map +1 -1
- package/lib/src/errors.d.ts +1 -0
- package/lib/src/errors.d.ts.map +1 -1
- package/lib/src/errors.js +1 -0
- package/lib/src/errors.js.map +1 -1
- package/lib/src/index.d.ts +2 -2
- package/lib/src/index.d.ts.map +1 -1
- package/lib/src/index.js +2 -2
- package/lib/src/index.js.map +1 -1
- package/lib/src/react/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/react/index.d.ts +71 -20
- package/lib/src/react/index.d.ts.map +1 -1
- package/lib/src/react/index.js +79 -43
- package/lib/src/react/index.js.map +1 -1
- package/lib/src/react/index.spec.js +439 -103
- package/lib/src/react/index.spec.js.map +1 -1
- package/lib/src/types.d.ts +80 -6
- package/lib/src/types.d.ts.map +1 -1
- package/lib/src/types.js +45 -1
- package/lib/src/types.js.map +1 -1
- package/lib/src/utils/graphql/nlsService/conversation-service.d.ts.map +1 -1
- package/lib/src/utils/graphql/nlsService/conversation-service.js +2 -0
- package/lib/src/utils/graphql/nlsService/conversation-service.js.map +1 -1
- package/lib/src/utils/processTrigger.js +2 -1
- package/lib/src/utils/processTrigger.js.map +1 -1
- package/lib/src/utils.d.ts +6 -0
- package/lib/src/utils.d.ts.map +1 -1
- package/lib/src/utils.js +21 -2
- package/lib/src/utils.js.map +1 -1
- package/lib/src/utils.spec.js +238 -2
- package/lib/src/utils.spec.js.map +1 -1
- package/lib/src/visual-embed-sdk.d.ts +219 -54
- package/package.json +1 -1
- package/src/config.spec.ts +11 -0
- package/src/embed/app.spec.ts +479 -26
- package/src/embed/app.ts +133 -27
- package/src/embed/bodyless-conversation.spec.ts +9 -203
- package/src/embed/bodyless-conversation.ts +24 -10
- package/src/embed/conversation.spec.ts +40 -2
- package/src/embed/embedConfig.ts +10 -8
- package/src/embed/liveboard.spec.ts +256 -5
- package/src/embed/liveboard.ts +99 -27
- package/src/embed/ts-embed.spec.ts +225 -0
- package/src/embed/ts-embed.ts +19 -0
- package/src/errors.ts +1 -0
- package/src/index.ts +2 -0
- package/src/react/all-types-export.ts +2 -1
- package/src/react/index.spec.tsx +556 -157
- package/src/react/index.tsx +117 -51
- package/src/types.ts +117 -43
- package/src/utils/graphql/nlsService/conversation-service.ts +2 -0
- package/src/utils/processTrigger.ts +1 -1
- package/src/utils.spec.ts +279 -2
- package/src/utils.ts +28 -2
|
@@ -7,13 +7,14 @@ const configKey = 'embedConfig';
|
|
|
7
7
|
*
|
|
8
8
|
* @example
|
|
9
9
|
* ```js
|
|
10
|
+
* import { getInitConfig } from '@thoughtspot/visual-embed-sdk';
|
|
11
|
+
* // Call the getInitConfig method to retrieve the embed configuration
|
|
10
12
|
* const config = getInitConfig();
|
|
13
|
+
* // Log the configuration settings
|
|
11
14
|
* console.log(config);
|
|
12
15
|
* ```
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* Returns the `EmbedConfig` object, which
|
|
16
|
-
* contains the configuration settings used to
|
|
16
|
+
* Returns the link:https://developers.thoughtspot.com/docs/Interface_EmbedConfig[EmbedConfig]
|
|
17
|
+
* object, which contains the configuration settings used to
|
|
17
18
|
* initialize the SDK, including the following:
|
|
18
19
|
*
|
|
19
20
|
* - `thoughtSpotHost` - ThoughtSpot host URL
|
|
@@ -22,9 +23,10 @@ const configKey = 'embedConfig';
|
|
|
22
23
|
* - `customizations` - Style, text, and icon customization settings
|
|
23
24
|
* that were applied during the SDK initialization.
|
|
24
25
|
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
26
|
+
* The following JSON output shows the embed configuration
|
|
27
|
+
* settings returned from the code in the previous example:
|
|
27
28
|
*
|
|
29
|
+
* @example
|
|
28
30
|
* ```json
|
|
29
31
|
* {
|
|
30
32
|
* "thoughtSpotHost": "https://{ThoughtSpot-Host}",
|
|
@@ -46,7 +48,7 @@ const configKey = 'embedConfig';
|
|
|
46
48
|
* "authTriggerContainer": "#your-own-div"
|
|
47
49
|
* }
|
|
48
50
|
* ```
|
|
49
|
-
* @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.
|
|
51
|
+
* @version SDK: 1.19.0 | ThoughtSpot: 9.0.0.cl, 9.0.1.sw, and later
|
|
50
52
|
* @group Global methods
|
|
51
53
|
*/
|
|
52
54
|
export const getEmbedConfig = () => getValueFromWindow(configKey) || {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embedConfig.js","sourceRoot":"","sources":["../../../src/embed/embedConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAGlE,MAAM,SAAS,GAAG,aAAa,CAAC;AAEhC
|
|
1
|
+
{"version":3,"file":"embedConfig.js","sourceRoot":"","sources":["../../../src/embed/embedConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAGlE,MAAM,SAAS,GAAG,aAAa,CAAC;AAEhC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,GAAgB,EAAE,CAAC,kBAAkB,CAAC,SAAS,CAAC,IAAK,EAAU,CAAC;AAE9F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,SAAsB,EAAE,EAAE;IACrD,kBAAkB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACzC,OAAO,kBAAkB,CAAC,SAAS,CAAC,CAAC;AACzC,CAAC,CAAC"}
|
|
@@ -248,23 +248,6 @@ export interface LiveboardViewConfig extends BaseViewConfig, LiveboardOtherViewC
|
|
|
248
248
|
* })
|
|
249
249
|
*/
|
|
250
250
|
dataSourceId?: string;
|
|
251
|
-
/**
|
|
252
|
-
* This flag is for show/hide checkboxes for include or exclude
|
|
253
|
-
* cover page and filters in the Liveboard PDF.
|
|
254
|
-
*
|
|
255
|
-
* Supported embed types: `LiveboardEmbed`
|
|
256
|
-
* @version SDK: 1.37.0 | ThoughtSpot:10.8.0.cl
|
|
257
|
-
* @default true
|
|
258
|
-
* Supported embed types: `LiveboardEmbed`
|
|
259
|
-
* @example
|
|
260
|
-
* ```js
|
|
261
|
-
* const embed = new LiveboardEmbed('#tsEmbed', {
|
|
262
|
-
* ... //other embed view config
|
|
263
|
-
* coverAndFilterOptionInPDF: false,
|
|
264
|
-
* })
|
|
265
|
-
* ```
|
|
266
|
-
*/
|
|
267
|
-
coverAndFilterOptionInPDF?: boolean;
|
|
268
251
|
/**
|
|
269
252
|
* The list of tab IDs to hide from the embedded.
|
|
270
253
|
* This Tabs will be hidden from their respective LBs.
|
|
@@ -320,6 +303,46 @@ export interface LiveboardViewConfig extends BaseViewConfig, LiveboardOtherViewC
|
|
|
320
303
|
* ```
|
|
321
304
|
*/
|
|
322
305
|
isLiveboardStylingAndGroupingEnabled?: boolean;
|
|
306
|
+
/**
|
|
307
|
+
* This flag is used to enable the full height lazy load data.
|
|
308
|
+
*
|
|
309
|
+
* @example
|
|
310
|
+
* ```js
|
|
311
|
+
* const embed = new LiveboardEmbed('#embed-container', {
|
|
312
|
+
* // ...other options
|
|
313
|
+
* fullHeight: true,
|
|
314
|
+
* lazyLoadingForFullHeight: true,
|
|
315
|
+
* })
|
|
316
|
+
* ```
|
|
317
|
+
*
|
|
318
|
+
* @type {boolean}
|
|
319
|
+
* @default false
|
|
320
|
+
* @version SDK: 1.39.0 | ThoughtSpot:10.10.0.cl
|
|
321
|
+
*/
|
|
322
|
+
lazyLoadingForFullHeight?: boolean;
|
|
323
|
+
/**
|
|
324
|
+
* The margin to be used for lazy loading.
|
|
325
|
+
*
|
|
326
|
+
* For example, if the margin is set to '10px',
|
|
327
|
+
* the visualization will be loaded 10px before the its top edge is visible in the
|
|
328
|
+
* viewport.
|
|
329
|
+
*
|
|
330
|
+
* The format is similar to CSS margin.
|
|
331
|
+
*
|
|
332
|
+
* @example
|
|
333
|
+
* ```js
|
|
334
|
+
* const embed = new LiveboardEmbed('#embed-container', {
|
|
335
|
+
* // ...other options
|
|
336
|
+
* fullHeight: true,
|
|
337
|
+
* lazyLoadingForFullHeight: true,
|
|
338
|
+
* // Using 0px, the visualization will be only loaded when its visible in the viewport.
|
|
339
|
+
* lazyLoadingMargin: '0px',
|
|
340
|
+
* })
|
|
341
|
+
* ```
|
|
342
|
+
* @type {string}
|
|
343
|
+
* @version SDK: 1.39.0 | ThoughtSpot:10.10.0.cl
|
|
344
|
+
*/
|
|
345
|
+
lazyLoadingMargin?: string;
|
|
323
346
|
}
|
|
324
347
|
/**
|
|
325
348
|
* Embed a ThoughtSpot Liveboard or visualization. When rendered it already
|
|
@@ -346,6 +369,14 @@ export declare class LiveboardEmbed extends V1Embed {
|
|
|
346
369
|
*/
|
|
347
370
|
protected getEmbedParams(): string;
|
|
348
371
|
private getIframeSuffixSrc;
|
|
372
|
+
private sendFullHeightLazyLoadData;
|
|
373
|
+
/**
|
|
374
|
+
* This is a handler for the RequestVisibleEmbedCoordinates event.
|
|
375
|
+
* It is used to send the visible coordinates data to the host application.
|
|
376
|
+
* @param data The event payload
|
|
377
|
+
* @param responder The responder function
|
|
378
|
+
*/
|
|
379
|
+
private requestVisibleEmbedCoordinatesHandler;
|
|
349
380
|
/**
|
|
350
381
|
* Construct the URL of the embedded ThoughtSpot Liveboard or visualization
|
|
351
382
|
* to be loaded within the iFrame.
|
|
@@ -370,6 +401,14 @@ export declare class LiveboardEmbed extends V1Embed {
|
|
|
370
401
|
* @returns A promise that resolves with the response from the embedded app
|
|
371
402
|
*/
|
|
372
403
|
trigger<HostEventT extends HostEvent, PayloadT>(messageType: HostEventT, data?: TriggerPayload<PayloadT, HostEventT>): Promise<TriggerResponse<PayloadT, HostEventT>>;
|
|
404
|
+
/**
|
|
405
|
+
* Destroys the ThoughtSpot embed, and remove any nodes from the DOM.
|
|
406
|
+
* @version SDK: 1.39.0 | ThoughtSpot: 10.10.0.cl
|
|
407
|
+
*/
|
|
408
|
+
destroy(): void;
|
|
409
|
+
private postRender;
|
|
410
|
+
private registerLazyLoadEvents;
|
|
411
|
+
private unregisterLazyLoadEvents;
|
|
373
412
|
/**
|
|
374
413
|
* Render an embedded ThoughtSpot Liveboard or visualization
|
|
375
414
|
* @param renderOptions An object specifying the Liveboard ID,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"liveboard.d.ts","sourceRoot":"","sources":["../../../src/embed/liveboard.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAKH,WAAW,EACX,SAAS,EACT,+BAA+B,IAAI,wBAAwB,EAC3D,cAAc,EACd,2BAA2B,EAC9B,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE9C,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAI9E;;;GAGG;AACH,MAAM,WAAW,mBAAoB,SAAQ,cAAc,EAAE,wBAAwB,EAAE,2BAA2B;IAC9G;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;;;;;;;;;;;;OAgBG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;;;;;OAUG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC;;;;;;;;;;;;OAYG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;;;;;;;OAaG;IACH,6BAA6B,CAAC,EAAE,OAAO,CAAC;IACxC;;;;;;;;;;;;;;;;OAgBG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB;;;OAGG;IACH,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC;;;;;;;;;;;;;OAaG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;;;;;;;;;OAaG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;;;;;;OAYG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;;;;;;;;;OAYG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B;;;;;;;;;;;;OAYG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;;;;;;;;;;OAYG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"liveboard.d.ts","sourceRoot":"","sources":["../../../src/embed/liveboard.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
import { getPreview } from '../utils/graphql/preview-service';
|
|
11
11
|
import { ERROR_MESSAGE } from '../errors';
|
|
12
12
|
import { EmbedEvent, Param, HostEvent, } from '../types';
|
|
13
|
-
import { getQueryParamString, isUndefined } from '../utils';
|
|
13
|
+
import { calculateVisibleElementData, getQueryParamString, isUndefined } from '../utils';
|
|
14
14
|
import { V1Embed } from './ts-embed';
|
|
15
15
|
import { addPreviewStylesIfNotPresent } from '../utils/global-styles';
|
|
16
16
|
import { logger } from '../utils/logger';
|
|
@@ -34,6 +34,21 @@ export class LiveboardEmbed extends V1Embed {
|
|
|
34
34
|
viewConfig.embedComponentType = 'LiveboardEmbed';
|
|
35
35
|
super(domSelector, viewConfig);
|
|
36
36
|
this.defaultHeight = 500;
|
|
37
|
+
this.sendFullHeightLazyLoadData = () => {
|
|
38
|
+
const data = calculateVisibleElementData(this.iFrame);
|
|
39
|
+
this.trigger(HostEvent.VisibleEmbedCoordinates, data);
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* This is a handler for the RequestVisibleEmbedCoordinates event.
|
|
43
|
+
* It is used to send the visible coordinates data to the host application.
|
|
44
|
+
* @param data The event payload
|
|
45
|
+
* @param responder The responder function
|
|
46
|
+
*/
|
|
47
|
+
this.requestVisibleEmbedCoordinatesHandler = (data, responder) => {
|
|
48
|
+
logger.info('Sending RequestVisibleEmbedCoordinates', data);
|
|
49
|
+
const visibleCoordinatesData = calculateVisibleElementData(this.iFrame);
|
|
50
|
+
responder({ type: EmbedEvent.RequestVisibleEmbedCoordinates, data: visibleCoordinatesData });
|
|
51
|
+
};
|
|
37
52
|
/**
|
|
38
53
|
* Set the iframe height as per the computed height received
|
|
39
54
|
* from the ThoughtSpot app.
|
|
@@ -41,6 +56,7 @@ export class LiveboardEmbed extends V1Embed {
|
|
|
41
56
|
*/
|
|
42
57
|
this.updateIFrameHeight = (data) => {
|
|
43
58
|
this.setIFrameHeight(Math.max(data.data, this.defaultHeight));
|
|
59
|
+
this.sendFullHeightLazyLoadData();
|
|
44
60
|
};
|
|
45
61
|
this.embedIframeCenter = (data, responder) => {
|
|
46
62
|
const obj = this.getIframeCenter();
|
|
@@ -74,6 +90,7 @@ export class LiveboardEmbed extends V1Embed {
|
|
|
74
90
|
this.on(EmbedEvent.RouteChange, this.setIframeHeightForNonEmbedLiveboard);
|
|
75
91
|
this.on(EmbedEvent.EmbedHeight, this.updateIFrameHeight);
|
|
76
92
|
this.on(EmbedEvent.EmbedIframeCenter, this.embedIframeCenter);
|
|
93
|
+
this.on(EmbedEvent.RequestVisibleEmbedCoordinates, this.requestVisibleEmbedCoordinatesHandler);
|
|
77
94
|
}
|
|
78
95
|
}
|
|
79
96
|
/**
|
|
@@ -83,11 +100,15 @@ export class LiveboardEmbed extends V1Embed {
|
|
|
83
100
|
getEmbedParams() {
|
|
84
101
|
let params = {};
|
|
85
102
|
params = this.getBaseQueryParams(params);
|
|
86
|
-
const { enableVizTransformations, fullHeight, defaultHeight, visibleVizs, liveboardV2, vizId, hideTabPanel, activeTabId, hideLiveboardHeader, showLiveboardDescription, showLiveboardTitle, isLiveboardHeaderSticky = true, isLiveboardCompactHeaderEnabled = false, showLiveboardVerifiedBadge = true, showLiveboardReverifyBanner = true, hideIrrelevantChipsInLiveboardTabs = false, enableAskSage, enable2ColumnLayout, dataPanelV2 = false, enableCustomColumnGroups = false, oAuthPollingInterval, isForceRedirect, dataSourceId, coverAndFilterOptionInPDF, isLiveboardStylingAndGroupingEnabled, } = this.viewConfig;
|
|
103
|
+
const { enableVizTransformations, fullHeight, defaultHeight, visibleVizs, liveboardV2, vizId, hideTabPanel, activeTabId, hideLiveboardHeader, showLiveboardDescription, showLiveboardTitle, isLiveboardHeaderSticky = true, isLiveboardCompactHeaderEnabled = false, showLiveboardVerifiedBadge = true, showLiveboardReverifyBanner = true, hideIrrelevantChipsInLiveboardTabs = false, enableAskSage, enable2ColumnLayout, dataPanelV2 = false, enableCustomColumnGroups = false, oAuthPollingInterval, isForceRedirect, dataSourceId, coverAndFilterOptionInPDF = false, isLiveboardStylingAndGroupingEnabled, } = this.viewConfig;
|
|
87
104
|
const preventLiveboardFilterRemoval = this.viewConfig.preventLiveboardFilterRemoval
|
|
88
105
|
|| this.viewConfig.preventPinboardFilterRemoval;
|
|
89
106
|
if (fullHeight === true) {
|
|
90
107
|
params[Param.fullHeight] = true;
|
|
108
|
+
if (this.viewConfig.lazyLoadingForFullHeight) {
|
|
109
|
+
params[Param.IsLazyLoadingForEmbedEnabled] = true;
|
|
110
|
+
params[Param.RootMarginForLazyLoad] = this.viewConfig.lazyLoadingMargin;
|
|
111
|
+
}
|
|
91
112
|
}
|
|
92
113
|
if (defaultHeight) {
|
|
93
114
|
this.defaultHeight = defaultHeight;
|
|
@@ -135,9 +156,6 @@ export class LiveboardEmbed extends V1Embed {
|
|
|
135
156
|
if (dataSourceId !== undefined) {
|
|
136
157
|
params[Param.DataSourceId] = dataSourceId;
|
|
137
158
|
}
|
|
138
|
-
if (coverAndFilterOptionInPDF !== undefined) {
|
|
139
|
-
params[Param.CoverAndFilterOptionInPDF] = coverAndFilterOptionInPDF;
|
|
140
|
-
}
|
|
141
159
|
if (isLiveboardStylingAndGroupingEnabled !== undefined) {
|
|
142
160
|
params[Param.IsLiveboardStylingAndGroupingEnabled] = isLiveboardStylingAndGroupingEnabled;
|
|
143
161
|
}
|
|
@@ -148,6 +166,7 @@ export class LiveboardEmbed extends V1Embed {
|
|
|
148
166
|
params[Param.HideIrrelevantFiltersInTab] = hideIrrelevantChipsInLiveboardTabs;
|
|
149
167
|
params[Param.DataPanelV2Enabled] = dataPanelV2;
|
|
150
168
|
params[Param.EnableCustomColumnGroups] = enableCustomColumnGroups;
|
|
169
|
+
params[Param.CoverAndFilterOptionInPDF] = coverAndFilterOptionInPDF;
|
|
151
170
|
const queryParams = getQueryParamString(params, true);
|
|
152
171
|
return queryParams;
|
|
153
172
|
}
|
|
@@ -245,6 +264,30 @@ export class LiveboardEmbed extends V1Embed {
|
|
|
245
264
|
}
|
|
246
265
|
return super.trigger(messageType, dataWithVizId);
|
|
247
266
|
}
|
|
267
|
+
/**
|
|
268
|
+
* Destroys the ThoughtSpot embed, and remove any nodes from the DOM.
|
|
269
|
+
* @version SDK: 1.39.0 | ThoughtSpot: 10.10.0.cl
|
|
270
|
+
*/
|
|
271
|
+
destroy() {
|
|
272
|
+
super.destroy();
|
|
273
|
+
this.unregisterLazyLoadEvents();
|
|
274
|
+
}
|
|
275
|
+
postRender() {
|
|
276
|
+
this.registerLazyLoadEvents();
|
|
277
|
+
}
|
|
278
|
+
registerLazyLoadEvents() {
|
|
279
|
+
if (this.viewConfig.fullHeight && this.viewConfig.lazyLoadingForFullHeight) {
|
|
280
|
+
// TODO: Use passive: true, install modernizr to check for passive
|
|
281
|
+
window.addEventListener('resize', this.sendFullHeightLazyLoadData);
|
|
282
|
+
window.addEventListener('scroll', this.sendFullHeightLazyLoadData);
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
unregisterLazyLoadEvents() {
|
|
286
|
+
if (this.viewConfig.fullHeight && this.viewConfig.lazyLoadingForFullHeight) {
|
|
287
|
+
window.removeEventListener('resize', this.sendFullHeightLazyLoadData);
|
|
288
|
+
window.removeEventListener('scroll', this.sendFullHeightLazyLoadData);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
248
291
|
/**
|
|
249
292
|
* Render an embedded ThoughtSpot Liveboard or visualization
|
|
250
293
|
* @param renderOptions An object specifying the Liveboard ID,
|
|
@@ -255,6 +298,7 @@ export class LiveboardEmbed extends V1Embed {
|
|
|
255
298
|
const src = this.getIFrameSrc();
|
|
256
299
|
await this.renderV1Embed(src);
|
|
257
300
|
this.showPreviewLoader();
|
|
301
|
+
this.postRender();
|
|
258
302
|
return this;
|
|
259
303
|
}
|
|
260
304
|
navigateToLiveboard(liveboardId, vizId, activeTabId) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"liveboard.js","sourceRoot":"","sources":["../../../src/embed/liveboard.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EACH,UAAU,EAEV,KAAK,EAGL,SAAS,GAIZ,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"liveboard.js","sourceRoot":"","sources":["../../../src/embed/liveboard.ts"],"names":[],"mappings":"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"}
|
|
@@ -245,7 +245,7 @@ describe('Liveboard/viz embed tests', () => {
|
|
|
245
245
|
});
|
|
246
246
|
liveboardEmbed.render();
|
|
247
247
|
await executeAfterWait(() => {
|
|
248
|
-
expectUrlMatchesWithParams(getIFrameSrc(), `http://${thoughtSpotHost}/?embedApp=true${defaultParams}&
|
|
248
|
+
expectUrlMatchesWithParams(getIFrameSrc(), `http://${thoughtSpotHost}/?embedApp=true${defaultParams}&arePdfCoverFilterPageCheckboxesEnabled=true${prefixParams}#/embed/viz/${liveboardId}`);
|
|
249
249
|
});
|
|
250
250
|
});
|
|
251
251
|
test('should add coverAndFilterOptionInPDF flag and set value to false to the iframe src', async () => {
|
|
@@ -256,7 +256,7 @@ describe('Liveboard/viz embed tests', () => {
|
|
|
256
256
|
});
|
|
257
257
|
liveboardEmbed.render();
|
|
258
258
|
await executeAfterWait(() => {
|
|
259
|
-
expectUrlMatchesWithParams(getIFrameSrc(), `http://${thoughtSpotHost}/?embedApp=true${defaultParams}&
|
|
259
|
+
expectUrlMatchesWithParams(getIFrameSrc(), `http://${thoughtSpotHost}/?embedApp=true${defaultParams}&arePdfCoverFilterPageCheckboxesEnabled=false&${prefixParams}#/embed/viz/${liveboardId}`);
|
|
260
260
|
});
|
|
261
261
|
});
|
|
262
262
|
test('should not append runtime filters in URL if excludeRuntimeFiltersfromURL is true', async () => {
|
|
@@ -599,15 +599,16 @@ describe('Liveboard/viz embed tests', () => {
|
|
|
599
599
|
preRenderId: testPreRenderId,
|
|
600
600
|
});
|
|
601
601
|
let resizeObserverCb;
|
|
602
|
-
window.ResizeObserver =
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
602
|
+
window.ResizeObserver =
|
|
603
|
+
window.ResizeObserver ||
|
|
604
|
+
jest.fn().mockImplementation((resizeObserverCbParam) => {
|
|
605
|
+
resizeObserverCb = resizeObserverCbParam;
|
|
606
|
+
return {
|
|
607
|
+
disconnect: jest.fn(),
|
|
608
|
+
observe: jest.fn(),
|
|
609
|
+
unobserve: jest.fn(),
|
|
610
|
+
};
|
|
611
|
+
});
|
|
611
612
|
await libEmbed.preRender();
|
|
612
613
|
await waitFor(() => !!getIFrameEl());
|
|
613
614
|
const ts = '__tsEmbed';
|
|
@@ -629,6 +630,209 @@ describe('Liveboard/viz embed tests', () => {
|
|
|
629
630
|
});
|
|
630
631
|
});
|
|
631
632
|
});
|
|
633
|
+
describe('LazyLoadingForFullHeight functionality', () => {
|
|
634
|
+
let mockIFrame;
|
|
635
|
+
beforeEach(() => {
|
|
636
|
+
mockIFrame = document.createElement('iframe');
|
|
637
|
+
mockIFrame.getBoundingClientRect = jest.fn().mockReturnValue({
|
|
638
|
+
top: 100,
|
|
639
|
+
left: 150,
|
|
640
|
+
bottom: 600,
|
|
641
|
+
right: 800,
|
|
642
|
+
width: 650,
|
|
643
|
+
height: 500,
|
|
644
|
+
});
|
|
645
|
+
jest.spyOn(document, 'createElement').mockImplementation((tagName) => {
|
|
646
|
+
if (tagName === 'iframe') {
|
|
647
|
+
return mockIFrame;
|
|
648
|
+
}
|
|
649
|
+
return document.createElement(tagName);
|
|
650
|
+
});
|
|
651
|
+
});
|
|
652
|
+
afterEach(() => {
|
|
653
|
+
jest.restoreAllMocks();
|
|
654
|
+
});
|
|
655
|
+
test('should set lazyLoadingMargin parameter when provided', async () => {
|
|
656
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
657
|
+
...defaultViewConfig,
|
|
658
|
+
liveboardId,
|
|
659
|
+
fullHeight: true,
|
|
660
|
+
lazyLoadingForFullHeight: true,
|
|
661
|
+
lazyLoadingMargin: '100px 0px',
|
|
662
|
+
});
|
|
663
|
+
await liveboardEmbed.render();
|
|
664
|
+
await executeAfterWait(() => {
|
|
665
|
+
const iframeSrc = getIFrameSrc();
|
|
666
|
+
expect(iframeSrc).toContain('isLazyLoadingForEmbedEnabled=true');
|
|
667
|
+
expect(iframeSrc).toContain('isFullHeightPinboard=true');
|
|
668
|
+
expect(iframeSrc).toContain('rootMarginForLazyLoad=100px%200px');
|
|
669
|
+
}, 100);
|
|
670
|
+
});
|
|
671
|
+
test('should set isLazyLoadingForEmbedEnabled=true when both fullHeight and lazyLoadingForFullHeight are enabled', async () => {
|
|
672
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
673
|
+
...defaultViewConfig,
|
|
674
|
+
liveboardId,
|
|
675
|
+
fullHeight: true,
|
|
676
|
+
lazyLoadingForFullHeight: true,
|
|
677
|
+
});
|
|
678
|
+
await liveboardEmbed.render();
|
|
679
|
+
await executeAfterWait(() => {
|
|
680
|
+
const iframeSrc = getIFrameSrc();
|
|
681
|
+
expect(iframeSrc).toContain('isLazyLoadingForEmbedEnabled=true');
|
|
682
|
+
expect(iframeSrc).toContain('isFullHeightPinboard=true');
|
|
683
|
+
}, 100);
|
|
684
|
+
});
|
|
685
|
+
test('should not set lazyLoadingForEmbed when lazyLoadingForFullHeight is enabled but fullHeight is false', async () => {
|
|
686
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
687
|
+
...defaultViewConfig,
|
|
688
|
+
liveboardId,
|
|
689
|
+
fullHeight: false,
|
|
690
|
+
lazyLoadingForFullHeight: true,
|
|
691
|
+
});
|
|
692
|
+
await liveboardEmbed.render();
|
|
693
|
+
await executeAfterWait(() => {
|
|
694
|
+
const iframeSrc = getIFrameSrc();
|
|
695
|
+
expect(iframeSrc).not.toContain('isLazyLoadingForEmbedEnabled=true');
|
|
696
|
+
expect(iframeSrc).not.toContain('isFullHeightPinboard=true');
|
|
697
|
+
}, 100);
|
|
698
|
+
});
|
|
699
|
+
test('should not set isLazyLoadingForEmbedEnabled when fullHeight is true but lazyLoadingForFullHeight is false', async () => {
|
|
700
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
701
|
+
...defaultViewConfig,
|
|
702
|
+
liveboardId,
|
|
703
|
+
fullHeight: true,
|
|
704
|
+
lazyLoadingForFullHeight: false,
|
|
705
|
+
});
|
|
706
|
+
await liveboardEmbed.render();
|
|
707
|
+
await executeAfterWait(() => {
|
|
708
|
+
const iframeSrc = getIFrameSrc();
|
|
709
|
+
expect(iframeSrc).not.toContain('isLazyLoadingForEmbedEnabled=true');
|
|
710
|
+
expect(iframeSrc).toContain('isFullHeightPinboard=true');
|
|
711
|
+
}, 100);
|
|
712
|
+
});
|
|
713
|
+
test('should register event handlers to adjust iframe height', async () => {
|
|
714
|
+
const onSpy = jest.spyOn(LiveboardEmbed.prototype, 'on');
|
|
715
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
716
|
+
...defaultViewConfig,
|
|
717
|
+
liveboardId,
|
|
718
|
+
fullHeight: true,
|
|
719
|
+
lazyLoadingForFullHeight: true,
|
|
720
|
+
});
|
|
721
|
+
await liveboardEmbed.render();
|
|
722
|
+
await executeAfterWait(() => {
|
|
723
|
+
expect(onSpy).toHaveBeenCalledWith(EmbedEvent.EmbedHeight, expect.anything());
|
|
724
|
+
expect(onSpy).toHaveBeenCalledWith(EmbedEvent.RouteChange, expect.anything());
|
|
725
|
+
expect(onSpy).toHaveBeenCalledWith(EmbedEvent.EmbedIframeCenter, expect.anything());
|
|
726
|
+
expect(onSpy).toHaveBeenCalledWith(EmbedEvent.RequestVisibleEmbedCoordinates, expect.anything());
|
|
727
|
+
}, 100);
|
|
728
|
+
});
|
|
729
|
+
test('should send correct visible data when RequestVisibleEmbedCoordinates is triggered', async () => {
|
|
730
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
731
|
+
...defaultViewConfig,
|
|
732
|
+
liveboardId,
|
|
733
|
+
fullHeight: true,
|
|
734
|
+
lazyLoadingForFullHeight: true,
|
|
735
|
+
});
|
|
736
|
+
const mockTrigger = jest.spyOn(liveboardEmbed, 'trigger');
|
|
737
|
+
await liveboardEmbed.render();
|
|
738
|
+
// Trigger the lazy load data calculation
|
|
739
|
+
liveboardEmbed.sendFullHeightLazyLoadData();
|
|
740
|
+
expect(mockTrigger).toHaveBeenCalledWith(HostEvent.VisibleEmbedCoordinates, {
|
|
741
|
+
top: 0,
|
|
742
|
+
height: 500,
|
|
743
|
+
left: 0,
|
|
744
|
+
width: 650,
|
|
745
|
+
});
|
|
746
|
+
});
|
|
747
|
+
test('should calculate correct visible data for partially visible full height element', async () => {
|
|
748
|
+
mockIFrame.getBoundingClientRect = jest.fn().mockReturnValue({
|
|
749
|
+
top: -50,
|
|
750
|
+
left: -30,
|
|
751
|
+
bottom: 700,
|
|
752
|
+
right: 1024,
|
|
753
|
+
width: 1054,
|
|
754
|
+
height: 750,
|
|
755
|
+
});
|
|
756
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
757
|
+
...defaultViewConfig,
|
|
758
|
+
liveboardId,
|
|
759
|
+
fullHeight: true,
|
|
760
|
+
lazyLoadingForFullHeight: true,
|
|
761
|
+
});
|
|
762
|
+
const mockTrigger = jest.spyOn(liveboardEmbed, 'trigger');
|
|
763
|
+
await liveboardEmbed.render();
|
|
764
|
+
// Trigger the lazy load data calculation
|
|
765
|
+
liveboardEmbed.sendFullHeightLazyLoadData();
|
|
766
|
+
expect(mockTrigger).toHaveBeenCalledWith(HostEvent.VisibleEmbedCoordinates, {
|
|
767
|
+
top: 50,
|
|
768
|
+
height: 700,
|
|
769
|
+
left: 30,
|
|
770
|
+
width: 1024,
|
|
771
|
+
});
|
|
772
|
+
});
|
|
773
|
+
test('should add window event listeners for resize and scroll when fullHeight and lazyLoadingForFullHeight are enabled', async () => {
|
|
774
|
+
const addEventListenerSpy = jest.spyOn(window, 'addEventListener');
|
|
775
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
776
|
+
...defaultViewConfig,
|
|
777
|
+
liveboardId,
|
|
778
|
+
fullHeight: true,
|
|
779
|
+
lazyLoadingForFullHeight: true,
|
|
780
|
+
});
|
|
781
|
+
await liveboardEmbed.render();
|
|
782
|
+
expect(addEventListenerSpy).toHaveBeenCalledWith('resize', expect.anything());
|
|
783
|
+
expect(addEventListenerSpy).toHaveBeenCalledWith('scroll', expect.anything());
|
|
784
|
+
addEventListenerSpy.mockRestore();
|
|
785
|
+
});
|
|
786
|
+
test('should remove window event listeners on destroy when fullHeight and lazyLoadingForFullHeight are enabled', async () => {
|
|
787
|
+
const removeEventListenerSpy = jest.spyOn(window, 'removeEventListener');
|
|
788
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
789
|
+
...defaultViewConfig,
|
|
790
|
+
liveboardId,
|
|
791
|
+
fullHeight: true,
|
|
792
|
+
lazyLoadingForFullHeight: true,
|
|
793
|
+
});
|
|
794
|
+
await liveboardEmbed.render();
|
|
795
|
+
liveboardEmbed.destroy();
|
|
796
|
+
expect(removeEventListenerSpy).toHaveBeenCalledWith('resize', expect.anything());
|
|
797
|
+
expect(removeEventListenerSpy).toHaveBeenCalledWith('scroll', expect.anything());
|
|
798
|
+
removeEventListenerSpy.mockRestore();
|
|
799
|
+
});
|
|
800
|
+
test('should handle RequestVisibleEmbedCoordinates event and respond with correct data', async () => {
|
|
801
|
+
// Mock the iframe element
|
|
802
|
+
mockIFrame.getBoundingClientRect = jest.fn().mockReturnValue({
|
|
803
|
+
top: 100,
|
|
804
|
+
left: 150,
|
|
805
|
+
bottom: 600,
|
|
806
|
+
right: 800,
|
|
807
|
+
width: 650,
|
|
808
|
+
height: 500,
|
|
809
|
+
});
|
|
810
|
+
Object.defineProperty(mockIFrame, 'scrollHeight', { value: 500 });
|
|
811
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
812
|
+
...defaultViewConfig,
|
|
813
|
+
liveboardId,
|
|
814
|
+
fullHeight: true,
|
|
815
|
+
lazyLoadingForFullHeight: true,
|
|
816
|
+
});
|
|
817
|
+
// Set the iframe before render
|
|
818
|
+
liveboardEmbed.iFrame = mockIFrame;
|
|
819
|
+
await liveboardEmbed.render();
|
|
820
|
+
// Create a mock responder function
|
|
821
|
+
const mockResponder = jest.fn();
|
|
822
|
+
// Trigger the handler directly
|
|
823
|
+
liveboardEmbed.requestVisibleEmbedCoordinatesHandler({}, mockResponder);
|
|
824
|
+
// Verify the responder was called with the correct data
|
|
825
|
+
expect(mockResponder).toHaveBeenCalledWith({
|
|
826
|
+
type: EmbedEvent.RequestVisibleEmbedCoordinates,
|
|
827
|
+
data: {
|
|
828
|
+
top: 0,
|
|
829
|
+
height: 500,
|
|
830
|
+
left: 0,
|
|
831
|
+
width: 650,
|
|
832
|
+
},
|
|
833
|
+
});
|
|
834
|
+
});
|
|
835
|
+
});
|
|
632
836
|
describe('Host events for liveborad', () => {
|
|
633
837
|
test('Host event with empty param', async () => {
|
|
634
838
|
const mockProcessTrigger = jest.spyOn(tsEmbed.TsEmbed.prototype, 'trigger');
|