@thoughtspot/visual-embed-sdk 1.52.2-beta.0 → 1.52.2-beta.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/embed/liveboard.d.ts +13 -15
- package/cjs/src/embed/liveboard.d.ts.map +1 -1
- package/cjs/src/embed/liveboard.js +31 -3
- package/cjs/src/embed/liveboard.js.map +1 -1
- package/cjs/src/embed/liveboard.spec.js +79 -0
- package/cjs/src/embed/liveboard.spec.js.map +1 -1
- package/cjs/src/embed/ts-embed.spec.d.ts.map +1 -1
- package/cjs/src/embed/ts-embed.spec.js +10 -15
- package/cjs/src/embed/ts-embed.spec.js.map +1 -1
- package/dist/{index-BrJMbt8r.js → index-CnHREfvN.js} +1 -1
- package/dist/src/embed/liveboard.d.ts +13 -15
- package/dist/src/embed/liveboard.d.ts.map +1 -1
- package/dist/src/embed/ts-embed.spec.d.ts.map +1 -1
- package/dist/tsembed-react.es.js +72 -6
- package/dist/tsembed-react.js +71 -5
- package/dist/tsembed.es.js +72 -6
- package/dist/tsembed.js +71 -5
- package/dist/visual-embed-sdk-react-full.d.ts +13 -0
- package/dist/visual-embed-sdk-react.d.ts +13 -0
- package/dist/visual-embed-sdk.d.ts +13 -15
- package/lib/package.json +1 -1
- package/lib/src/embed/liveboard.d.ts +13 -15
- package/lib/src/embed/liveboard.d.ts.map +1 -1
- package/lib/src/embed/liveboard.js +30 -3
- package/lib/src/embed/liveboard.js.map +1 -1
- package/lib/src/embed/liveboard.spec.js +79 -0
- package/lib/src/embed/liveboard.spec.js.map +1 -1
- package/lib/src/embed/ts-embed.spec.d.ts.map +1 -1
- package/lib/src/embed/ts-embed.spec.js +10 -15
- package/lib/src/embed/ts-embed.spec.js.map +1 -1
- package/lib/src/visual-embed-sdk.d.ts +13 -15
- package/package.json +1 -1
- package/src/embed/liveboard.spec.ts +92 -0
- package/src/embed/liveboard.ts +36 -3
- package/src/embed/ts-embed.spec.ts +11 -18
|
@@ -507,21 +507,6 @@ export interface LiveboardViewConfig extends BaseViewConfig, FullHeightViewConfi
|
|
|
507
507
|
*/
|
|
508
508
|
updatedSpotterExperience?: boolean;
|
|
509
509
|
}
|
|
510
|
-
/**
|
|
511
|
-
* Embed a ThoughtSpot Liveboard or visualization. When rendered it already
|
|
512
|
-
* waits for the authentication to complete, so you need not wait for
|
|
513
|
-
* `AuthStatus.SUCCESS`.
|
|
514
|
-
* @group Embed components
|
|
515
|
-
* @example
|
|
516
|
-
* ```js
|
|
517
|
-
* import { .. } from '@thoughtspot/visual-embed-sdk';
|
|
518
|
-
* init({ ... });
|
|
519
|
-
* const embed = new LiveboardEmbed("#container", {
|
|
520
|
-
* liveboardId: <your-id-here>,
|
|
521
|
-
* // .. other params here.
|
|
522
|
-
* })
|
|
523
|
-
* ```
|
|
524
|
-
*/
|
|
525
510
|
export declare class LiveboardEmbed extends V1Embed {
|
|
526
511
|
protected viewConfig: LiveboardViewConfig;
|
|
527
512
|
private readonly fullHeightController?;
|
|
@@ -553,6 +538,19 @@ export declare class LiveboardEmbed extends V1Embed {
|
|
|
553
538
|
personalizedViewId: string;
|
|
554
539
|
};
|
|
555
540
|
protected beforePrerenderVisible(): void;
|
|
541
|
+
/**
|
|
542
|
+
* Whether `previous` was showing what this instance is about to show.
|
|
543
|
+
*
|
|
544
|
+
* Undefined-valued keys are dropped before comparing. `navigateToLiveboard`
|
|
545
|
+
* assigns `vizId`, `activeTabId` and `personalizedViewId` unconditionally,
|
|
546
|
+
* so an instance that has been shown once carries those keys as `undefined`
|
|
547
|
+
* while a freshly constructed one does not have them at all. `isEqual`
|
|
548
|
+
* counts own keys, so without this the comparison can never be true after
|
|
549
|
+
* the first show — which is the whole case this exists for.
|
|
550
|
+
*
|
|
551
|
+
* Callbacks compare as equal: React passes a fresh closure per render.
|
|
552
|
+
*/
|
|
553
|
+
private isSameEmbedConfig;
|
|
556
554
|
private isShowingLiveboardRoute;
|
|
557
555
|
protected handleRenderForPrerender(): Promise<TsEmbed>;
|
|
558
556
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"liveboard.d.ts","sourceRoot":"","sources":["liveboard.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"liveboard.d.ts","sourceRoot":"","sources":["liveboard.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ts-embed.spec.d.ts","sourceRoot":"","sources":["ts-embed.spec.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ts-embed.spec.d.ts","sourceRoot":"","sources":["ts-embed.spec.ts"],"names":[],"mappings":"AAsFA,eAAO,MAAM,iCAAiC,QAAgJ,CAAC;AAC/L,eAAO,MAAM,aAAa,QAAmF,CAAC"}
|
package/dist/tsembed-react.es.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* @thoughtspot/visual-embed-sdk version 1.52.2-beta.
|
|
1
|
+
/* @thoughtspot/visual-embed-sdk version 1.52.2-beta.2 */
|
|
2
2
|
'use client';
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import React__default, { useRef, useCallback } from 'react';
|
|
@@ -7828,7 +7828,7 @@ var TableContentDensity;
|
|
|
7828
7828
|
TableContentDensity["Compact"] = "COMPACT";
|
|
7829
7829
|
})(TableContentDensity || (TableContentDensity = {}));
|
|
7830
7830
|
|
|
7831
|
-
var version$1="1.52.2-beta.
|
|
7831
|
+
var version$1="1.52.2-beta.2";var pkg = {version:version$1};
|
|
7832
7832
|
|
|
7833
7833
|
const { version } = pkg;
|
|
7834
7834
|
|
|
@@ -10565,7 +10565,7 @@ class AnswerService {
|
|
|
10565
10565
|
async getTML() {
|
|
10566
10566
|
const { object } = await this.executeQuery(getAnswerTML, {});
|
|
10567
10567
|
const edoc = object[0].edoc;
|
|
10568
|
-
const YAML = await import('./index-
|
|
10568
|
+
const YAML = await import('./index-CnHREfvN.js');
|
|
10569
10569
|
const parsedDoc = YAML.parse(edoc);
|
|
10570
10570
|
return {
|
|
10571
10571
|
answer: {
|
|
@@ -24977,6 +24977,46 @@ let AppEmbed$1 = class AppEmbed extends V1Embed {
|
|
|
24977
24977
|
}
|
|
24978
24978
|
};
|
|
24979
24979
|
|
|
24980
|
+
/**
|
|
24981
|
+
* This method is like `_.isEqual` except that it accepts `customizer` which
|
|
24982
|
+
* is invoked to compare values. If `customizer` returns `undefined`, comparisons
|
|
24983
|
+
* are handled by the method instead. The `customizer` is invoked with up to
|
|
24984
|
+
* six arguments: (objValue, othValue [, index|key, object, other, stack]).
|
|
24985
|
+
*
|
|
24986
|
+
* @static
|
|
24987
|
+
* @memberOf _
|
|
24988
|
+
* @since 4.0.0
|
|
24989
|
+
* @category Lang
|
|
24990
|
+
* @param {*} value The value to compare.
|
|
24991
|
+
* @param {*} other The other value to compare.
|
|
24992
|
+
* @param {Function} [customizer] The function to customize comparisons.
|
|
24993
|
+
* @returns {boolean} Returns `true` if the values are equivalent, else `false`.
|
|
24994
|
+
* @example
|
|
24995
|
+
*
|
|
24996
|
+
* function isGreeting(value) {
|
|
24997
|
+
* return /^h(?:i|ello)$/.test(value);
|
|
24998
|
+
* }
|
|
24999
|
+
*
|
|
25000
|
+
* function customizer(objValue, othValue) {
|
|
25001
|
+
* if (isGreeting(objValue) && isGreeting(othValue)) {
|
|
25002
|
+
* return true;
|
|
25003
|
+
* }
|
|
25004
|
+
* }
|
|
25005
|
+
*
|
|
25006
|
+
* var array = ['hello', 'goodbye'];
|
|
25007
|
+
* var other = ['hi', 'goodbye'];
|
|
25008
|
+
*
|
|
25009
|
+
* _.isEqualWith(array, other, customizer);
|
|
25010
|
+
* // => true
|
|
25011
|
+
*/
|
|
25012
|
+
function isEqualWith(value, other, customizer) {
|
|
25013
|
+
customizer = typeof customizer == 'function' ? customizer : undefined;
|
|
25014
|
+
var result = customizer ? customizer(value, other) : undefined;
|
|
25015
|
+
return result === undefined ? _baseIsEqual(value, other, undefined, customizer) : !!result;
|
|
25016
|
+
}
|
|
25017
|
+
|
|
25018
|
+
var isEqualWith_1 = isEqualWith;
|
|
25019
|
+
|
|
24980
25020
|
const getPreviewQuery = `
|
|
24981
25021
|
query GetEurekaVizSnapshots(
|
|
24982
25022
|
$vizId: String!, $liveboardId: String!) {
|
|
@@ -25076,6 +25116,11 @@ const HOME_SETTLE_MS = 200;
|
|
|
25076
25116
|
* })
|
|
25077
25117
|
* ```
|
|
25078
25118
|
*/
|
|
25119
|
+
/**
|
|
25120
|
+
* A shallow copy without the keys whose value is `undefined`, so a key that was
|
|
25121
|
+
* assigned `undefined` compares equal to one that was never set.
|
|
25122
|
+
*/
|
|
25123
|
+
const definedEntries = (config = {}) => Object.fromEntries(Object.entries(config).filter(([, value]) => value !== undefined));
|
|
25079
25124
|
let LiveboardEmbed$1 = class LiveboardEmbed extends V1Embed {
|
|
25080
25125
|
constructor(domSelector, viewConfig) {
|
|
25081
25126
|
viewConfig.embedComponentType = 'LiveboardEmbed';
|
|
@@ -25357,10 +25402,12 @@ let LiveboardEmbed$1 = class LiveboardEmbed extends V1Embed {
|
|
|
25357
25402
|
beforePrerenderVisible() {
|
|
25358
25403
|
super.beforePrerenderVisible();
|
|
25359
25404
|
// Captured before showPreRender() hands the wrapper over to this
|
|
25360
|
-
// instance.
|
|
25361
|
-
// nothing stale to clear.
|
|
25405
|
+
// instance. React builds a new instance per mount, so an equal config
|
|
25406
|
+
// is a hide/show, not a hand-over: there is nothing stale to clear.
|
|
25362
25407
|
const previous = this.getPreRenderObj();
|
|
25363
|
-
const showing =
|
|
25408
|
+
const showing = this.isSameEmbedConfig(previous)
|
|
25409
|
+
? undefined
|
|
25410
|
+
: previous === null || previous === void 0 ? void 0 : previous.currentLiveboardState;
|
|
25364
25411
|
this.executeAfterEmbedContainerLoaded(async () => {
|
|
25365
25412
|
// Without this the params callback suspends on its await and
|
|
25366
25413
|
// Navigate goes out first, so the container loads with the previous
|
|
@@ -25387,6 +25434,25 @@ let LiveboardEmbed$1 = class LiveboardEmbed extends V1Embed {
|
|
|
25387
25434
|
};
|
|
25388
25435
|
});
|
|
25389
25436
|
}
|
|
25437
|
+
/**
|
|
25438
|
+
* Whether `previous` was showing what this instance is about to show.
|
|
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
|
+
*/
|
|
25449
|
+
isSameEmbedConfig(previous) {
|
|
25450
|
+
if (!previous)
|
|
25451
|
+
return false;
|
|
25452
|
+
if (previous === this)
|
|
25453
|
+
return true;
|
|
25454
|
+
return isEqualWith_1(definedEntries(previous.viewConfig), definedEntries(this.viewConfig), (a, b) => (typeof a === 'function' && typeof b === 'function' ? true : undefined));
|
|
25455
|
+
}
|
|
25390
25456
|
// The whole route, not just the liveboard id: the path is built from the
|
|
25391
25457
|
// viz, tab and view too, so a same-liveboard show onto another tab is a
|
|
25392
25458
|
// real navigation.
|
package/dist/tsembed-react.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* @thoughtspot/visual-embed-sdk version 1.52.2-beta.
|
|
1
|
+
/* @thoughtspot/visual-embed-sdk version 1.52.2-beta.2 */
|
|
2
2
|
'use client';
|
|
3
3
|
(function (global, factory) {
|
|
4
4
|
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react')) :
|
|
@@ -7850,7 +7850,7 @@
|
|
|
7850
7850
|
TableContentDensity["Compact"] = "COMPACT";
|
|
7851
7851
|
})(TableContentDensity || (TableContentDensity = {}));
|
|
7852
7852
|
|
|
7853
|
-
var version$1="1.52.2-beta.
|
|
7853
|
+
var version$1="1.52.2-beta.2";var pkg = {version:version$1};
|
|
7854
7854
|
|
|
7855
7855
|
const { version } = pkg;
|
|
7856
7856
|
|
|
@@ -24999,6 +24999,46 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
|
|
|
24999
24999
|
}
|
|
25000
25000
|
};
|
|
25001
25001
|
|
|
25002
|
+
/**
|
|
25003
|
+
* This method is like `_.isEqual` except that it accepts `customizer` which
|
|
25004
|
+
* is invoked to compare values. If `customizer` returns `undefined`, comparisons
|
|
25005
|
+
* are handled by the method instead. The `customizer` is invoked with up to
|
|
25006
|
+
* six arguments: (objValue, othValue [, index|key, object, other, stack]).
|
|
25007
|
+
*
|
|
25008
|
+
* @static
|
|
25009
|
+
* @memberOf _
|
|
25010
|
+
* @since 4.0.0
|
|
25011
|
+
* @category Lang
|
|
25012
|
+
* @param {*} value The value to compare.
|
|
25013
|
+
* @param {*} other The other value to compare.
|
|
25014
|
+
* @param {Function} [customizer] The function to customize comparisons.
|
|
25015
|
+
* @returns {boolean} Returns `true` if the values are equivalent, else `false`.
|
|
25016
|
+
* @example
|
|
25017
|
+
*
|
|
25018
|
+
* function isGreeting(value) {
|
|
25019
|
+
* return /^h(?:i|ello)$/.test(value);
|
|
25020
|
+
* }
|
|
25021
|
+
*
|
|
25022
|
+
* function customizer(objValue, othValue) {
|
|
25023
|
+
* if (isGreeting(objValue) && isGreeting(othValue)) {
|
|
25024
|
+
* return true;
|
|
25025
|
+
* }
|
|
25026
|
+
* }
|
|
25027
|
+
*
|
|
25028
|
+
* var array = ['hello', 'goodbye'];
|
|
25029
|
+
* var other = ['hi', 'goodbye'];
|
|
25030
|
+
*
|
|
25031
|
+
* _.isEqualWith(array, other, customizer);
|
|
25032
|
+
* // => true
|
|
25033
|
+
*/
|
|
25034
|
+
function isEqualWith(value, other, customizer) {
|
|
25035
|
+
customizer = typeof customizer == 'function' ? customizer : undefined;
|
|
25036
|
+
var result = customizer ? customizer(value, other) : undefined;
|
|
25037
|
+
return result === undefined ? _baseIsEqual(value, other, undefined, customizer) : !!result;
|
|
25038
|
+
}
|
|
25039
|
+
|
|
25040
|
+
var isEqualWith_1 = isEqualWith;
|
|
25041
|
+
|
|
25002
25042
|
const getPreviewQuery = `
|
|
25003
25043
|
query GetEurekaVizSnapshots(
|
|
25004
25044
|
$vizId: String!, $liveboardId: String!) {
|
|
@@ -25098,6 +25138,11 @@ query GetEurekaVizSnapshots(
|
|
|
25098
25138
|
* })
|
|
25099
25139
|
* ```
|
|
25100
25140
|
*/
|
|
25141
|
+
/**
|
|
25142
|
+
* A shallow copy without the keys whose value is `undefined`, so a key that was
|
|
25143
|
+
* assigned `undefined` compares equal to one that was never set.
|
|
25144
|
+
*/
|
|
25145
|
+
const definedEntries = (config = {}) => Object.fromEntries(Object.entries(config).filter(([, value]) => value !== undefined));
|
|
25101
25146
|
let LiveboardEmbed$1 = class LiveboardEmbed extends V1Embed {
|
|
25102
25147
|
constructor(domSelector, viewConfig) {
|
|
25103
25148
|
viewConfig.embedComponentType = 'LiveboardEmbed';
|
|
@@ -25379,10 +25424,12 @@ query GetEurekaVizSnapshots(
|
|
|
25379
25424
|
beforePrerenderVisible() {
|
|
25380
25425
|
super.beforePrerenderVisible();
|
|
25381
25426
|
// Captured before showPreRender() hands the wrapper over to this
|
|
25382
|
-
// instance.
|
|
25383
|
-
// nothing stale to clear.
|
|
25427
|
+
// instance. React builds a new instance per mount, so an equal config
|
|
25428
|
+
// is a hide/show, not a hand-over: there is nothing stale to clear.
|
|
25384
25429
|
const previous = this.getPreRenderObj();
|
|
25385
|
-
const showing =
|
|
25430
|
+
const showing = this.isSameEmbedConfig(previous)
|
|
25431
|
+
? undefined
|
|
25432
|
+
: previous === null || previous === void 0 ? void 0 : previous.currentLiveboardState;
|
|
25386
25433
|
this.executeAfterEmbedContainerLoaded(async () => {
|
|
25387
25434
|
// Without this the params callback suspends on its await and
|
|
25388
25435
|
// Navigate goes out first, so the container loads with the previous
|
|
@@ -25409,6 +25456,25 @@ query GetEurekaVizSnapshots(
|
|
|
25409
25456
|
};
|
|
25410
25457
|
});
|
|
25411
25458
|
}
|
|
25459
|
+
/**
|
|
25460
|
+
* Whether `previous` was showing what this instance is about to show.
|
|
25461
|
+
*
|
|
25462
|
+
* Undefined-valued keys are dropped before comparing. `navigateToLiveboard`
|
|
25463
|
+
* assigns `vizId`, `activeTabId` and `personalizedViewId` unconditionally,
|
|
25464
|
+
* so an instance that has been shown once carries those keys as `undefined`
|
|
25465
|
+
* while a freshly constructed one does not have them at all. `isEqual`
|
|
25466
|
+
* counts own keys, so without this the comparison can never be true after
|
|
25467
|
+
* the first show — which is the whole case this exists for.
|
|
25468
|
+
*
|
|
25469
|
+
* Callbacks compare as equal: React passes a fresh closure per render.
|
|
25470
|
+
*/
|
|
25471
|
+
isSameEmbedConfig(previous) {
|
|
25472
|
+
if (!previous)
|
|
25473
|
+
return false;
|
|
25474
|
+
if (previous === this)
|
|
25475
|
+
return true;
|
|
25476
|
+
return isEqualWith_1(definedEntries(previous.viewConfig), definedEntries(this.viewConfig), (a, b) => (typeof a === 'function' && typeof b === 'function' ? true : undefined));
|
|
25477
|
+
}
|
|
25412
25478
|
// The whole route, not just the liveboard id: the path is built from the
|
|
25413
25479
|
// viz, tab and view too, so a same-liveboard show onto another tab is a
|
|
25414
25480
|
// real navigation.
|
package/dist/tsembed.es.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* @thoughtspot/visual-embed-sdk version 1.52.2-beta.
|
|
1
|
+
/* @thoughtspot/visual-embed-sdk version 1.52.2-beta.2 */
|
|
2
2
|
'use client';
|
|
3
3
|
function _mergeNamespaces(n, m) {
|
|
4
4
|
m.forEach(function (e) {
|
|
@@ -7643,7 +7643,7 @@ var TableContentDensity;
|
|
|
7643
7643
|
TableContentDensity["Compact"] = "COMPACT";
|
|
7644
7644
|
})(TableContentDensity || (TableContentDensity = {}));
|
|
7645
7645
|
|
|
7646
|
-
var version$1="1.52.2-beta.
|
|
7646
|
+
var version$1="1.52.2-beta.2";var pkg = {version:version$1};
|
|
7647
7647
|
|
|
7648
7648
|
const { version } = pkg;
|
|
7649
7649
|
|
|
@@ -10779,7 +10779,7 @@ class AnswerService {
|
|
|
10779
10779
|
async getTML() {
|
|
10780
10780
|
const { object } = await this.executeQuery(getAnswerTML, {});
|
|
10781
10781
|
const edoc = object[0].edoc;
|
|
10782
|
-
const YAML = await import('./index-
|
|
10782
|
+
const YAML = await import('./index-CnHREfvN.js');
|
|
10783
10783
|
const parsedDoc = YAML.parse(edoc);
|
|
10784
10784
|
return {
|
|
10785
10785
|
answer: {
|
|
@@ -24767,6 +24767,46 @@ class AppEmbed extends V1Embed {
|
|
|
24767
24767
|
}
|
|
24768
24768
|
}
|
|
24769
24769
|
|
|
24770
|
+
/**
|
|
24771
|
+
* This method is like `_.isEqual` except that it accepts `customizer` which
|
|
24772
|
+
* is invoked to compare values. If `customizer` returns `undefined`, comparisons
|
|
24773
|
+
* are handled by the method instead. The `customizer` is invoked with up to
|
|
24774
|
+
* six arguments: (objValue, othValue [, index|key, object, other, stack]).
|
|
24775
|
+
*
|
|
24776
|
+
* @static
|
|
24777
|
+
* @memberOf _
|
|
24778
|
+
* @since 4.0.0
|
|
24779
|
+
* @category Lang
|
|
24780
|
+
* @param {*} value The value to compare.
|
|
24781
|
+
* @param {*} other The other value to compare.
|
|
24782
|
+
* @param {Function} [customizer] The function to customize comparisons.
|
|
24783
|
+
* @returns {boolean} Returns `true` if the values are equivalent, else `false`.
|
|
24784
|
+
* @example
|
|
24785
|
+
*
|
|
24786
|
+
* function isGreeting(value) {
|
|
24787
|
+
* return /^h(?:i|ello)$/.test(value);
|
|
24788
|
+
* }
|
|
24789
|
+
*
|
|
24790
|
+
* function customizer(objValue, othValue) {
|
|
24791
|
+
* if (isGreeting(objValue) && isGreeting(othValue)) {
|
|
24792
|
+
* return true;
|
|
24793
|
+
* }
|
|
24794
|
+
* }
|
|
24795
|
+
*
|
|
24796
|
+
* var array = ['hello', 'goodbye'];
|
|
24797
|
+
* var other = ['hi', 'goodbye'];
|
|
24798
|
+
*
|
|
24799
|
+
* _.isEqualWith(array, other, customizer);
|
|
24800
|
+
* // => true
|
|
24801
|
+
*/
|
|
24802
|
+
function isEqualWith(value, other, customizer) {
|
|
24803
|
+
customizer = typeof customizer == 'function' ? customizer : undefined;
|
|
24804
|
+
var result = customizer ? customizer(value, other) : undefined;
|
|
24805
|
+
return result === undefined ? _baseIsEqual(value, other, undefined, customizer) : !!result;
|
|
24806
|
+
}
|
|
24807
|
+
|
|
24808
|
+
var isEqualWith_1 = isEqualWith;
|
|
24809
|
+
|
|
24770
24810
|
const getPreviewQuery = `
|
|
24771
24811
|
query GetEurekaVizSnapshots(
|
|
24772
24812
|
$vizId: String!, $liveboardId: String!) {
|
|
@@ -24866,6 +24906,11 @@ const HOME_SETTLE_MS = 200;
|
|
|
24866
24906
|
* })
|
|
24867
24907
|
* ```
|
|
24868
24908
|
*/
|
|
24909
|
+
/**
|
|
24910
|
+
* A shallow copy without the keys whose value is `undefined`, so a key that was
|
|
24911
|
+
* assigned `undefined` compares equal to one that was never set.
|
|
24912
|
+
*/
|
|
24913
|
+
const definedEntries = (config = {}) => Object.fromEntries(Object.entries(config).filter(([, value]) => value !== undefined));
|
|
24869
24914
|
class LiveboardEmbed extends V1Embed {
|
|
24870
24915
|
constructor(domSelector, viewConfig) {
|
|
24871
24916
|
viewConfig.embedComponentType = 'LiveboardEmbed';
|
|
@@ -25147,10 +25192,12 @@ class LiveboardEmbed extends V1Embed {
|
|
|
25147
25192
|
beforePrerenderVisible() {
|
|
25148
25193
|
super.beforePrerenderVisible();
|
|
25149
25194
|
// Captured before showPreRender() hands the wrapper over to this
|
|
25150
|
-
// instance.
|
|
25151
|
-
// nothing stale to clear.
|
|
25195
|
+
// instance. React builds a new instance per mount, so an equal config
|
|
25196
|
+
// is a hide/show, not a hand-over: there is nothing stale to clear.
|
|
25152
25197
|
const previous = this.getPreRenderObj();
|
|
25153
|
-
const showing =
|
|
25198
|
+
const showing = this.isSameEmbedConfig(previous)
|
|
25199
|
+
? undefined
|
|
25200
|
+
: previous === null || previous === void 0 ? void 0 : previous.currentLiveboardState;
|
|
25154
25201
|
this.executeAfterEmbedContainerLoaded(async () => {
|
|
25155
25202
|
// Without this the params callback suspends on its await and
|
|
25156
25203
|
// Navigate goes out first, so the container loads with the previous
|
|
@@ -25177,6 +25224,25 @@ class LiveboardEmbed extends V1Embed {
|
|
|
25177
25224
|
};
|
|
25178
25225
|
});
|
|
25179
25226
|
}
|
|
25227
|
+
/**
|
|
25228
|
+
* Whether `previous` was showing what this instance is about to show.
|
|
25229
|
+
*
|
|
25230
|
+
* Undefined-valued keys are dropped before comparing. `navigateToLiveboard`
|
|
25231
|
+
* assigns `vizId`, `activeTabId` and `personalizedViewId` unconditionally,
|
|
25232
|
+
* so an instance that has been shown once carries those keys as `undefined`
|
|
25233
|
+
* while a freshly constructed one does not have them at all. `isEqual`
|
|
25234
|
+
* counts own keys, so without this the comparison can never be true after
|
|
25235
|
+
* the first show — which is the whole case this exists for.
|
|
25236
|
+
*
|
|
25237
|
+
* Callbacks compare as equal: React passes a fresh closure per render.
|
|
25238
|
+
*/
|
|
25239
|
+
isSameEmbedConfig(previous) {
|
|
25240
|
+
if (!previous)
|
|
25241
|
+
return false;
|
|
25242
|
+
if (previous === this)
|
|
25243
|
+
return true;
|
|
25244
|
+
return isEqualWith_1(definedEntries(previous.viewConfig), definedEntries(this.viewConfig), (a, b) => (typeof a === 'function' && typeof b === 'function' ? true : undefined));
|
|
25245
|
+
}
|
|
25180
25246
|
// The whole route, not just the liveboard id: the path is built from the
|
|
25181
25247
|
// viz, tab and view too, so a same-liveboard show onto another tab is a
|
|
25182
25248
|
// real navigation.
|
package/dist/tsembed.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* @thoughtspot/visual-embed-sdk version 1.52.2-beta.
|
|
1
|
+
/* @thoughtspot/visual-embed-sdk version 1.52.2-beta.2 */
|
|
2
2
|
'use client';
|
|
3
3
|
(function (global, factory) {
|
|
4
4
|
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
|
|
@@ -7649,7 +7649,7 @@
|
|
|
7649
7649
|
TableContentDensity["Compact"] = "COMPACT";
|
|
7650
7650
|
})(exports.TableContentDensity || (exports.TableContentDensity = {}));
|
|
7651
7651
|
|
|
7652
|
-
var version$1="1.52.2-beta.
|
|
7652
|
+
var version$1="1.52.2-beta.2";var pkg = {version:version$1};
|
|
7653
7653
|
|
|
7654
7654
|
const { version } = pkg;
|
|
7655
7655
|
|
|
@@ -24773,6 +24773,46 @@ mutation GetUnsavedAnswerTML($session: BachSessionIdInput!, $exportDependencies:
|
|
|
24773
24773
|
}
|
|
24774
24774
|
}
|
|
24775
24775
|
|
|
24776
|
+
/**
|
|
24777
|
+
* This method is like `_.isEqual` except that it accepts `customizer` which
|
|
24778
|
+
* is invoked to compare values. If `customizer` returns `undefined`, comparisons
|
|
24779
|
+
* are handled by the method instead. The `customizer` is invoked with up to
|
|
24780
|
+
* six arguments: (objValue, othValue [, index|key, object, other, stack]).
|
|
24781
|
+
*
|
|
24782
|
+
* @static
|
|
24783
|
+
* @memberOf _
|
|
24784
|
+
* @since 4.0.0
|
|
24785
|
+
* @category Lang
|
|
24786
|
+
* @param {*} value The value to compare.
|
|
24787
|
+
* @param {*} other The other value to compare.
|
|
24788
|
+
* @param {Function} [customizer] The function to customize comparisons.
|
|
24789
|
+
* @returns {boolean} Returns `true` if the values are equivalent, else `false`.
|
|
24790
|
+
* @example
|
|
24791
|
+
*
|
|
24792
|
+
* function isGreeting(value) {
|
|
24793
|
+
* return /^h(?:i|ello)$/.test(value);
|
|
24794
|
+
* }
|
|
24795
|
+
*
|
|
24796
|
+
* function customizer(objValue, othValue) {
|
|
24797
|
+
* if (isGreeting(objValue) && isGreeting(othValue)) {
|
|
24798
|
+
* return true;
|
|
24799
|
+
* }
|
|
24800
|
+
* }
|
|
24801
|
+
*
|
|
24802
|
+
* var array = ['hello', 'goodbye'];
|
|
24803
|
+
* var other = ['hi', 'goodbye'];
|
|
24804
|
+
*
|
|
24805
|
+
* _.isEqualWith(array, other, customizer);
|
|
24806
|
+
* // => true
|
|
24807
|
+
*/
|
|
24808
|
+
function isEqualWith(value, other, customizer) {
|
|
24809
|
+
customizer = typeof customizer == 'function' ? customizer : undefined;
|
|
24810
|
+
var result = customizer ? customizer(value, other) : undefined;
|
|
24811
|
+
return result === undefined ? _baseIsEqual(value, other, undefined, customizer) : !!result;
|
|
24812
|
+
}
|
|
24813
|
+
|
|
24814
|
+
var isEqualWith_1 = isEqualWith;
|
|
24815
|
+
|
|
24776
24816
|
const getPreviewQuery = `
|
|
24777
24817
|
query GetEurekaVizSnapshots(
|
|
24778
24818
|
$vizId: String!, $liveboardId: String!) {
|
|
@@ -24872,6 +24912,11 @@ query GetEurekaVizSnapshots(
|
|
|
24872
24912
|
* })
|
|
24873
24913
|
* ```
|
|
24874
24914
|
*/
|
|
24915
|
+
/**
|
|
24916
|
+
* A shallow copy without the keys whose value is `undefined`, so a key that was
|
|
24917
|
+
* assigned `undefined` compares equal to one that was never set.
|
|
24918
|
+
*/
|
|
24919
|
+
const definedEntries = (config = {}) => Object.fromEntries(Object.entries(config).filter(([, value]) => value !== undefined));
|
|
24875
24920
|
class LiveboardEmbed extends V1Embed {
|
|
24876
24921
|
constructor(domSelector, viewConfig) {
|
|
24877
24922
|
viewConfig.embedComponentType = 'LiveboardEmbed';
|
|
@@ -25153,10 +25198,12 @@ query GetEurekaVizSnapshots(
|
|
|
25153
25198
|
beforePrerenderVisible() {
|
|
25154
25199
|
super.beforePrerenderVisible();
|
|
25155
25200
|
// Captured before showPreRender() hands the wrapper over to this
|
|
25156
|
-
// instance.
|
|
25157
|
-
// nothing stale to clear.
|
|
25201
|
+
// instance. React builds a new instance per mount, so an equal config
|
|
25202
|
+
// is a hide/show, not a hand-over: there is nothing stale to clear.
|
|
25158
25203
|
const previous = this.getPreRenderObj();
|
|
25159
|
-
const showing =
|
|
25204
|
+
const showing = this.isSameEmbedConfig(previous)
|
|
25205
|
+
? undefined
|
|
25206
|
+
: previous === null || previous === void 0 ? void 0 : previous.currentLiveboardState;
|
|
25160
25207
|
this.executeAfterEmbedContainerLoaded(async () => {
|
|
25161
25208
|
// Without this the params callback suspends on its await and
|
|
25162
25209
|
// Navigate goes out first, so the container loads with the previous
|
|
@@ -25183,6 +25230,25 @@ query GetEurekaVizSnapshots(
|
|
|
25183
25230
|
};
|
|
25184
25231
|
});
|
|
25185
25232
|
}
|
|
25233
|
+
/**
|
|
25234
|
+
* Whether `previous` was showing what this instance is about to show.
|
|
25235
|
+
*
|
|
25236
|
+
* Undefined-valued keys are dropped before comparing. `navigateToLiveboard`
|
|
25237
|
+
* assigns `vizId`, `activeTabId` and `personalizedViewId` unconditionally,
|
|
25238
|
+
* so an instance that has been shown once carries those keys as `undefined`
|
|
25239
|
+
* while a freshly constructed one does not have them at all. `isEqual`
|
|
25240
|
+
* counts own keys, so without this the comparison can never be true after
|
|
25241
|
+
* the first show — which is the whole case this exists for.
|
|
25242
|
+
*
|
|
25243
|
+
* Callbacks compare as equal: React passes a fresh closure per render.
|
|
25244
|
+
*/
|
|
25245
|
+
isSameEmbedConfig(previous) {
|
|
25246
|
+
if (!previous)
|
|
25247
|
+
return false;
|
|
25248
|
+
if (previous === this)
|
|
25249
|
+
return true;
|
|
25250
|
+
return isEqualWith_1(definedEntries(previous.viewConfig), definedEntries(this.viewConfig), (a, b) => (typeof a === 'function' && typeof b === 'function' ? true : undefined));
|
|
25251
|
+
}
|
|
25186
25252
|
// The whole route, not just the liveboard id: the path is built from the
|
|
25187
25253
|
// viz, tab and view too, so a same-liveboard show onto another tab is a
|
|
25188
25254
|
// real navigation.
|
|
@@ -15796,6 +15796,19 @@ declare class LiveboardEmbed extends V1Embed {
|
|
|
15796
15796
|
personalizedViewId: string;
|
|
15797
15797
|
};
|
|
15798
15798
|
protected beforePrerenderVisible(): void;
|
|
15799
|
+
/**
|
|
15800
|
+
* Whether `previous` was showing what this instance is about to show.
|
|
15801
|
+
*
|
|
15802
|
+
* Undefined-valued keys are dropped before comparing. `navigateToLiveboard`
|
|
15803
|
+
* assigns `vizId`, `activeTabId` and `personalizedViewId` unconditionally,
|
|
15804
|
+
* so an instance that has been shown once carries those keys as `undefined`
|
|
15805
|
+
* while a freshly constructed one does not have them at all. `isEqual`
|
|
15806
|
+
* counts own keys, so without this the comparison can never be true after
|
|
15807
|
+
* the first show — which is the whole case this exists for.
|
|
15808
|
+
*
|
|
15809
|
+
* Callbacks compare as equal: React passes a fresh closure per render.
|
|
15810
|
+
*/
|
|
15811
|
+
private isSameEmbedConfig;
|
|
15799
15812
|
private isShowingLiveboardRoute;
|
|
15800
15813
|
protected handleRenderForPrerender(): Promise<TsEmbed>;
|
|
15801
15814
|
/**
|
|
@@ -15693,6 +15693,19 @@ declare class LiveboardEmbed extends V1Embed {
|
|
|
15693
15693
|
personalizedViewId: string;
|
|
15694
15694
|
};
|
|
15695
15695
|
protected beforePrerenderVisible(): void;
|
|
15696
|
+
/**
|
|
15697
|
+
* Whether `previous` was showing what this instance is about to show.
|
|
15698
|
+
*
|
|
15699
|
+
* Undefined-valued keys are dropped before comparing. `navigateToLiveboard`
|
|
15700
|
+
* assigns `vizId`, `activeTabId` and `personalizedViewId` unconditionally,
|
|
15701
|
+
* so an instance that has been shown once carries those keys as `undefined`
|
|
15702
|
+
* while a freshly constructed one does not have them at all. `isEqual`
|
|
15703
|
+
* counts own keys, so without this the comparison can never be true after
|
|
15704
|
+
* the first show — which is the whole case this exists for.
|
|
15705
|
+
*
|
|
15706
|
+
* Callbacks compare as equal: React passes a fresh closure per render.
|
|
15707
|
+
*/
|
|
15708
|
+
private isSameEmbedConfig;
|
|
15696
15709
|
private isShowingLiveboardRoute;
|
|
15697
15710
|
protected handleRenderForPrerender(): Promise<TsEmbed>;
|
|
15698
15711
|
/**
|
|
@@ -15671,21 +15671,6 @@ export interface LiveboardViewConfig extends BaseViewConfig, FullHeightViewConfi
|
|
|
15671
15671
|
*/
|
|
15672
15672
|
updatedSpotterExperience?: boolean;
|
|
15673
15673
|
}
|
|
15674
|
-
/**
|
|
15675
|
-
* Embed a ThoughtSpot Liveboard or visualization. When rendered it already
|
|
15676
|
-
* waits for the authentication to complete, so you need not wait for
|
|
15677
|
-
* `AuthStatus.SUCCESS`.
|
|
15678
|
-
* @group Embed components
|
|
15679
|
-
* @example
|
|
15680
|
-
* ```js
|
|
15681
|
-
* import { .. } from '@thoughtspot/visual-embed-sdk';
|
|
15682
|
-
* init({ ... });
|
|
15683
|
-
* const embed = new LiveboardEmbed("#container", {
|
|
15684
|
-
* liveboardId: <your-id-here>,
|
|
15685
|
-
* // .. other params here.
|
|
15686
|
-
* })
|
|
15687
|
-
* ```
|
|
15688
|
-
*/
|
|
15689
15674
|
export declare class LiveboardEmbed extends V1Embed {
|
|
15690
15675
|
protected viewConfig: LiveboardViewConfig;
|
|
15691
15676
|
private readonly fullHeightController?;
|
|
@@ -15717,6 +15702,19 @@ export declare class LiveboardEmbed extends V1Embed {
|
|
|
15717
15702
|
personalizedViewId: string;
|
|
15718
15703
|
};
|
|
15719
15704
|
protected beforePrerenderVisible(): void;
|
|
15705
|
+
/**
|
|
15706
|
+
* Whether `previous` was showing what this instance is about to show.
|
|
15707
|
+
*
|
|
15708
|
+
* Undefined-valued keys are dropped before comparing. `navigateToLiveboard`
|
|
15709
|
+
* assigns `vizId`, `activeTabId` and `personalizedViewId` unconditionally,
|
|
15710
|
+
* so an instance that has been shown once carries those keys as `undefined`
|
|
15711
|
+
* while a freshly constructed one does not have them at all. `isEqual`
|
|
15712
|
+
* counts own keys, so without this the comparison can never be true after
|
|
15713
|
+
* the first show — which is the whole case this exists for.
|
|
15714
|
+
*
|
|
15715
|
+
* Callbacks compare as equal: React passes a fresh closure per render.
|
|
15716
|
+
*/
|
|
15717
|
+
private isSameEmbedConfig;
|
|
15720
15718
|
private isShowingLiveboardRoute;
|
|
15721
15719
|
protected handleRenderForPrerender(): Promise<TsEmbed>;
|
|
15722
15720
|
/**
|