@thoughtspot/visual-embed-sdk 1.26.6 → 1.26.7
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/README.md +2 -2
- package/cjs/package.json +1 -1
- package/cjs/src/auth.d.ts +4 -4
- package/cjs/src/auth.d.ts.map +1 -1
- package/cjs/src/auth.js +16 -9
- package/cjs/src/auth.js.map +1 -1
- package/cjs/src/embed/app.d.ts +15 -15
- package/cjs/src/embed/app.d.ts.map +1 -1
- package/cjs/src/embed/app.js +4 -3
- package/cjs/src/embed/app.js.map +1 -1
- package/cjs/src/embed/app.spec.js +5 -4
- package/cjs/src/embed/app.spec.js.map +1 -1
- package/cjs/src/embed/base.d.ts +1 -1
- package/cjs/src/embed/base.d.ts.map +1 -1
- package/cjs/src/embed/base.js +9 -6
- package/cjs/src/embed/base.js.map +1 -1
- package/cjs/src/embed/base.spec.js +4 -3
- package/cjs/src/embed/base.spec.js.map +1 -1
- package/cjs/src/embed/embed.spec.js +2 -1
- package/cjs/src/embed/embed.spec.js.map +1 -1
- package/cjs/src/embed/embedConfig.d.ts +2 -1
- package/cjs/src/embed/embedConfig.d.ts.map +1 -1
- package/cjs/src/embed/embedConfig.js +2 -0
- package/cjs/src/embed/embedConfig.js.map +1 -1
- package/cjs/src/embed/events.spec.js +3 -2
- package/cjs/src/embed/events.spec.js.map +1 -1
- package/cjs/src/embed/liveboard.d.ts +35 -23
- package/cjs/src/embed/liveboard.d.ts.map +1 -1
- package/cjs/src/embed/liveboard.js +8 -4
- package/cjs/src/embed/liveboard.js.map +1 -1
- package/cjs/src/embed/liveboard.spec.js +2 -1
- package/cjs/src/embed/liveboard.spec.js.map +1 -1
- package/cjs/src/embed/sage.d.ts +48 -30
- package/cjs/src/embed/sage.d.ts.map +1 -1
- package/cjs/src/embed/sage.js +7 -6
- package/cjs/src/embed/sage.js.map +1 -1
- package/cjs/src/embed/sage.spec.js +3 -3
- package/cjs/src/embed/sage.spec.js.map +1 -1
- package/cjs/src/embed/search-bar.d.ts +22 -6
- package/cjs/src/embed/search-bar.d.ts.map +1 -1
- package/cjs/src/embed/search-bar.js.map +1 -1
- package/cjs/src/embed/search.d.ts +35 -16
- package/cjs/src/embed/search.d.ts.map +1 -1
- package/cjs/src/embed/search.js +10 -6
- package/cjs/src/embed/search.js.map +1 -1
- package/cjs/src/embed/search.spec.js +10 -0
- package/cjs/src/embed/search.spec.js.map +1 -1
- package/cjs/src/embed/ts-embed.d.ts +2 -1
- package/cjs/src/embed/ts-embed.d.ts.map +1 -1
- package/cjs/src/embed/ts-embed.js +45 -22
- package/cjs/src/embed/ts-embed.js.map +1 -1
- package/cjs/src/embed/ts-embed.spec.js +153 -32
- package/cjs/src/embed/ts-embed.spec.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/mixpanel-service.d.ts.map +1 -1
- package/cjs/src/mixpanel-service.js +2 -1
- package/cjs/src/mixpanel-service.js.map +1 -1
- package/cjs/src/react/index.d.ts +1 -1
- package/cjs/src/react/index.d.ts.map +1 -1
- package/cjs/src/react/index.js +2 -1
- package/cjs/src/react/index.js.map +1 -1
- package/cjs/src/react/index.spec.js +2 -2
- package/cjs/src/react/index.spec.js.map +1 -1
- package/cjs/src/types.d.ts +742 -237
- package/cjs/src/types.d.ts.map +1 -1
- package/cjs/src/types.js +653 -169
- package/cjs/src/types.js.map +1 -1
- package/cjs/src/utils/authService/authService.d.ts.map +1 -1
- package/cjs/src/utils/authService/authService.js +3 -2
- package/cjs/src/utils/authService/authService.js.map +1 -1
- package/cjs/src/utils/authService/authService.spec.js +3 -2
- package/cjs/src/utils/authService/authService.spec.js.map +1 -1
- package/cjs/src/utils/authService/tokenizedAuthService.d.ts.map +1 -1
- package/cjs/src/utils/authService/tokenizedAuthService.js +2 -1
- package/cjs/src/utils/authService/tokenizedAuthService.js.map +1 -1
- package/cjs/src/utils/graphql/answerService/answerService.d.ts +2 -4
- package/cjs/src/utils/graphql/answerService/answerService.d.ts.map +1 -1
- package/cjs/src/utils/graphql/answerService/answerService.js +2 -4
- package/cjs/src/utils/graphql/answerService/answerService.js.map +1 -1
- package/cjs/src/utils/logger.d.ts +18 -0
- package/cjs/src/utils/logger.d.ts.map +1 -0
- package/cjs/src/utils/logger.js +80 -0
- package/cjs/src/utils/logger.js.map +1 -0
- package/cjs/src/utils/logger.spec.d.ts +25 -0
- package/cjs/src/utils/logger.spec.d.ts.map +1 -0
- package/cjs/src/utils/logger.spec.js +116 -0
- package/cjs/src/utils/logger.spec.js.map +1 -0
- package/cjs/src/utils/processData.d.ts +6 -0
- package/cjs/src/utils/processData.d.ts.map +1 -1
- package/cjs/src/utils/processData.js +5 -1
- package/cjs/src/utils/processData.js.map +1 -1
- package/cjs/src/utils/processTrigger.js +1 -1
- package/dist/src/auth.d.ts +4 -4
- package/dist/src/auth.d.ts.map +1 -1
- package/dist/src/embed/app.d.ts +15 -15
- package/dist/src/embed/app.d.ts.map +1 -1
- package/dist/src/embed/base.d.ts +1 -1
- package/dist/src/embed/base.d.ts.map +1 -1
- package/dist/src/embed/embedConfig.d.ts +2 -1
- package/dist/src/embed/embedConfig.d.ts.map +1 -1
- package/dist/src/embed/liveboard.d.ts +35 -23
- package/dist/src/embed/liveboard.d.ts.map +1 -1
- package/dist/src/embed/sage.d.ts +48 -30
- package/dist/src/embed/sage.d.ts.map +1 -1
- package/dist/src/embed/search-bar.d.ts +22 -6
- package/dist/src/embed/search-bar.d.ts.map +1 -1
- package/dist/src/embed/search.d.ts +35 -16
- package/dist/src/embed/search.d.ts.map +1 -1
- package/dist/src/embed/ts-embed.d.ts +2 -1
- package/dist/src/embed/ts-embed.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/mixpanel-service.d.ts.map +1 -1
- package/dist/src/react/index.d.ts +1 -1
- package/dist/src/react/index.d.ts.map +1 -1
- package/dist/src/types.d.ts +742 -237
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/utils/authService/authService.d.ts.map +1 -1
- package/dist/src/utils/authService/tokenizedAuthService.d.ts.map +1 -1
- package/dist/src/utils/graphql/answerService/answerService.d.ts +2 -4
- package/dist/src/utils/graphql/answerService/answerService.d.ts.map +1 -1
- package/dist/src/utils/logger.d.ts +18 -0
- package/dist/src/utils/logger.d.ts.map +1 -0
- package/dist/src/utils/logger.spec.d.ts +25 -0
- package/dist/src/utils/logger.spec.d.ts.map +1 -0
- package/dist/src/utils/processData.d.ts +6 -0
- package/dist/src/utils/processData.d.ts.map +1 -1
- package/dist/tsembed-react.es.js +3716 -3107
- package/dist/tsembed-react.js +3620 -3012
- package/dist/tsembed.es.js +9830 -9212
- package/dist/tsembed.js +15079 -14462
- package/dist/visual-embed-sdk-react-full.d.ts +923 -332
- package/dist/visual-embed-sdk-react.d.ts +923 -332
- package/dist/visual-embed-sdk.d.ts +923 -332
- package/lib/package.json +1 -1
- package/lib/src/auth.d.ts +4 -4
- package/lib/src/auth.d.ts.map +1 -1
- package/lib/src/auth.js +17 -10
- package/lib/src/auth.js.map +1 -1
- package/lib/src/embed/app.d.ts +15 -15
- package/lib/src/embed/app.d.ts.map +1 -1
- package/lib/src/embed/app.js +4 -3
- package/lib/src/embed/app.js.map +1 -1
- package/lib/src/embed/app.spec.js +5 -4
- package/lib/src/embed/app.spec.js.map +1 -1
- package/lib/src/embed/base.d.ts +1 -1
- package/lib/src/embed/base.d.ts.map +1 -1
- package/lib/src/embed/base.js +9 -6
- package/lib/src/embed/base.js.map +1 -1
- package/lib/src/embed/base.spec.js +5 -4
- package/lib/src/embed/base.spec.js.map +1 -1
- package/lib/src/embed/embed.spec.js +2 -1
- package/lib/src/embed/embed.spec.js.map +1 -1
- package/lib/src/embed/embedConfig.d.ts +2 -1
- package/lib/src/embed/embedConfig.d.ts.map +1 -1
- package/lib/src/embed/embedConfig.js +2 -0
- package/lib/src/embed/embedConfig.js.map +1 -1
- package/lib/src/embed/events.spec.js +3 -2
- package/lib/src/embed/events.spec.js.map +1 -1
- package/lib/src/embed/liveboard.d.ts +35 -23
- package/lib/src/embed/liveboard.d.ts.map +1 -1
- package/lib/src/embed/liveboard.js +8 -4
- package/lib/src/embed/liveboard.js.map +1 -1
- package/lib/src/embed/liveboard.spec.js +2 -1
- package/lib/src/embed/liveboard.spec.js.map +1 -1
- package/lib/src/embed/sage.d.ts +48 -30
- package/lib/src/embed/sage.d.ts.map +1 -1
- package/lib/src/embed/sage.js +7 -6
- package/lib/src/embed/sage.js.map +1 -1
- package/lib/src/embed/sage.spec.js +3 -3
- package/lib/src/embed/sage.spec.js.map +1 -1
- package/lib/src/embed/search-bar.d.ts +22 -6
- package/lib/src/embed/search-bar.d.ts.map +1 -1
- package/lib/src/embed/search-bar.js.map +1 -1
- package/lib/src/embed/search.d.ts +35 -16
- package/lib/src/embed/search.d.ts.map +1 -1
- package/lib/src/embed/search.js +11 -7
- package/lib/src/embed/search.js.map +1 -1
- package/lib/src/embed/search.spec.js +10 -0
- package/lib/src/embed/search.spec.js.map +1 -1
- package/lib/src/embed/ts-embed.d.ts +2 -1
- package/lib/src/embed/ts-embed.d.ts.map +1 -1
- package/lib/src/embed/ts-embed.js +48 -25
- package/lib/src/embed/ts-embed.js.map +1 -1
- package/lib/src/embed/ts-embed.spec.js +153 -32
- package/lib/src/embed/ts-embed.spec.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/mixpanel-service.d.ts.map +1 -1
- package/lib/src/mixpanel-service.js +2 -1
- package/lib/src/mixpanel-service.js.map +1 -1
- package/lib/src/react/index.d.ts +1 -1
- package/lib/src/react/index.d.ts.map +1 -1
- package/lib/src/react/index.js +1 -1
- package/lib/src/react/index.js.map +1 -1
- package/lib/src/react/index.spec.js +2 -2
- package/lib/src/react/index.spec.js.map +1 -1
- package/lib/src/types.d.ts +742 -237
- package/lib/src/types.d.ts.map +1 -1
- package/lib/src/types.js +652 -168
- package/lib/src/types.js.map +1 -1
- package/lib/src/utils/authService/authService.d.ts.map +1 -1
- package/lib/src/utils/authService/authService.js +3 -2
- package/lib/src/utils/authService/authService.js.map +1 -1
- package/lib/src/utils/authService/authService.spec.js +4 -3
- package/lib/src/utils/authService/authService.spec.js.map +1 -1
- package/lib/src/utils/authService/tokenizedAuthService.d.ts.map +1 -1
- package/lib/src/utils/authService/tokenizedAuthService.js +2 -1
- package/lib/src/utils/authService/tokenizedAuthService.js.map +1 -1
- package/lib/src/utils/graphql/answerService/answerService.d.ts +2 -4
- package/lib/src/utils/graphql/answerService/answerService.d.ts.map +1 -1
- package/lib/src/utils/graphql/answerService/answerService.js +2 -4
- package/lib/src/utils/graphql/answerService/answerService.js.map +1 -1
- package/lib/src/utils/logger.d.ts +18 -0
- package/lib/src/utils/logger.d.ts.map +1 -0
- package/lib/src/utils/logger.js +74 -0
- package/lib/src/utils/logger.js.map +1 -0
- package/lib/src/utils/logger.spec.d.ts +25 -0
- package/lib/src/utils/logger.spec.d.ts.map +1 -0
- package/lib/src/utils/logger.spec.js +93 -0
- package/lib/src/utils/logger.spec.js.map +1 -0
- package/lib/src/utils/processData.d.ts +6 -0
- package/lib/src/utils/processData.d.ts.map +1 -1
- package/lib/src/utils/processData.js +4 -1
- package/lib/src/utils/processData.js.map +1 -1
- package/lib/src/utils/processTrigger.js +1 -1
- package/lib/src/visual-embed-sdk.d.ts +927 -336
- package/package.json +1 -1
- package/src/auth.ts +20 -13
- package/src/embed/app.spec.ts +5 -4
- package/src/embed/app.ts +23 -22
- package/src/embed/base.spec.ts +6 -5
- package/src/embed/base.ts +18 -11
- package/src/embed/embed.spec.ts +2 -1
- package/src/embed/embedConfig.ts +2 -0
- package/src/embed/events.spec.ts +3 -2
- package/src/embed/liveboard.spec.ts +2 -1
- package/src/embed/liveboard.ts +43 -27
- package/src/embed/sage.spec.ts +3 -3
- package/src/embed/sage.ts +54 -36
- package/src/embed/search-bar.tsx +22 -6
- package/src/embed/search.spec.ts +13 -0
- package/src/embed/search.ts +46 -21
- package/src/embed/ts-embed.spec.ts +182 -43
- package/src/embed/ts-embed.ts +78 -59
- package/src/index.ts +2 -0
- package/src/mixpanel-service.ts +2 -1
- package/src/react/index.spec.tsx +2 -2
- package/src/react/index.tsx +1 -0
- package/src/types.ts +753 -245
- package/src/utils/authService/authService.spec.ts +7 -6
- package/src/utils/authService/authService.ts +4 -2
- package/src/utils/authService/tokenizedAuthService.ts +2 -1
- package/src/utils/graphql/answerService/answerService.ts +2 -4
- package/src/utils/logger.spec.ts +108 -0
- package/src/utils/logger.ts +88 -0
- package/src/utils/processData.ts +4 -1
- package/src/utils/processTrigger.ts +1 -1
|
@@ -1,37 +1,38 @@
|
|
|
1
1
|
/* eslint-disable dot-notation */
|
|
2
|
+
import * as authInstance from '../auth';
|
|
2
3
|
import { resetCachedAuthToken } from '../authToken';
|
|
4
|
+
import * as config from '../config';
|
|
3
5
|
import {
|
|
6
|
+
AppEmbed,
|
|
4
7
|
AuthType,
|
|
5
|
-
init,
|
|
6
8
|
EmbedEvent,
|
|
7
|
-
SearchEmbed,
|
|
8
|
-
PinboardEmbed,
|
|
9
|
-
LiveboardViewConfig,
|
|
10
|
-
AppEmbed,
|
|
11
9
|
LiveboardEmbed,
|
|
10
|
+
LiveboardViewConfig,
|
|
11
|
+
PinboardEmbed,
|
|
12
|
+
SearchEmbed,
|
|
13
|
+
init,
|
|
12
14
|
} from '../index';
|
|
15
|
+
import * as mixpanelInstance from '../mixpanel-service';
|
|
16
|
+
import { MIXPANEL_EVENT } from '../mixpanel-service';
|
|
13
17
|
import {
|
|
14
|
-
|
|
15
|
-
} from '../types';
|
|
16
|
-
import {
|
|
18
|
+
defaultParamsForPinboardEmbed,
|
|
17
19
|
executeAfterWait,
|
|
20
|
+
expectUrlMatchesWithParams,
|
|
18
21
|
getDocumentBody,
|
|
19
22
|
getIFrameEl,
|
|
20
23
|
getIFrameSrc,
|
|
21
24
|
getRootEl,
|
|
25
|
+
mockMessageChannel,
|
|
22
26
|
postMessageToParent,
|
|
23
|
-
defaultParamsForPinboardEmbed,
|
|
24
27
|
waitFor,
|
|
25
|
-
expectUrlMatchesWithParams,
|
|
26
|
-
mockMessageChannel,
|
|
27
28
|
} from '../test/test-utils';
|
|
28
|
-
import
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
import * as authInstance from '../auth';
|
|
32
|
-
import * as baseInstance from './base';
|
|
33
|
-
import { MIXPANEL_EVENT } from '../mixpanel-service';
|
|
29
|
+
import {
|
|
30
|
+
Action, HomeLeftNavItem, HomepageModule, RuntimeFilter, RuntimeFilterOp,
|
|
31
|
+
} from '../types';
|
|
34
32
|
import * as authService from '../utils/authService/authService';
|
|
33
|
+
import { logger } from '../utils/logger';
|
|
34
|
+
import * as baseInstance from './base';
|
|
35
|
+
import * as tsEmbedInstance from './ts-embed';
|
|
35
36
|
|
|
36
37
|
const defaultViewConfig = {
|
|
37
38
|
frameParams: {
|
|
@@ -425,7 +426,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
425
426
|
const searchEmbed = new SearchEmbed(getRootEl(), defaultViewConfig);
|
|
426
427
|
searchEmbed
|
|
427
428
|
.on(EmbedEvent.Save, () => {
|
|
428
|
-
|
|
429
|
+
logger.log('non callable');
|
|
429
430
|
})
|
|
430
431
|
.render();
|
|
431
432
|
|
|
@@ -468,7 +469,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
468
469
|
.on(
|
|
469
470
|
EmbedEvent.Save,
|
|
470
471
|
() => {
|
|
471
|
-
|
|
472
|
+
logger.log('non callable');
|
|
472
473
|
},
|
|
473
474
|
{ start: true },
|
|
474
475
|
)
|
|
@@ -562,6 +563,144 @@ describe('Unit test case for ts embed', () => {
|
|
|
562
563
|
});
|
|
563
564
|
});
|
|
564
565
|
|
|
566
|
+
describe('Token fetch fails in cookieless authentication authType', () => {
|
|
567
|
+
beforeEach(() => {
|
|
568
|
+
jest.spyOn(authInstance, 'doCookielessTokenAuth').mockResolvedValueOnce(true);
|
|
569
|
+
init({
|
|
570
|
+
thoughtSpotHost: 'tshost',
|
|
571
|
+
customizations: customisations,
|
|
572
|
+
customCssUrl: 'http://localhost:5000',
|
|
573
|
+
authType: AuthType.TrustedAuthTokenCookieless,
|
|
574
|
+
getAuthToken: () => Promise.reject(),
|
|
575
|
+
});
|
|
576
|
+
});
|
|
577
|
+
|
|
578
|
+
afterEach(() => {
|
|
579
|
+
jest.clearAllMocks();
|
|
580
|
+
baseInstance.reset();
|
|
581
|
+
});
|
|
582
|
+
|
|
583
|
+
test('should show login failure message if token failed during app_init', async () => {
|
|
584
|
+
const a = jest.spyOn(authService, 'verifyTokenService');
|
|
585
|
+
a.mockResolvedValue(true);
|
|
586
|
+
|
|
587
|
+
// authVerifyMock.mockResolvedValue(true);
|
|
588
|
+
const mockEmbedEventPayload = {
|
|
589
|
+
type: EmbedEvent.APP_INIT,
|
|
590
|
+
data: {},
|
|
591
|
+
};
|
|
592
|
+
const searchEmbed = new SearchEmbed(getRootEl(), defaultViewConfig);
|
|
593
|
+
searchEmbed.render();
|
|
594
|
+
const mockPort: any = {
|
|
595
|
+
postMessage: jest.fn(),
|
|
596
|
+
};
|
|
597
|
+
await executeAfterWait(() => {
|
|
598
|
+
const iframe = getIFrameEl();
|
|
599
|
+
postMessageToParent(iframe.contentWindow, mockEmbedEventPayload, mockPort);
|
|
600
|
+
});
|
|
601
|
+
await executeAfterWait(() => {
|
|
602
|
+
expect(mockPort.postMessage).not.toHaveBeenCalled();
|
|
603
|
+
expect(getRootEl().innerHTML).toContain('Not logged in');
|
|
604
|
+
});
|
|
605
|
+
|
|
606
|
+
jest.spyOn(authService, 'verifyTokenService').mockClear();
|
|
607
|
+
});
|
|
608
|
+
|
|
609
|
+
test('should show login failure message if token failed during app_init prerender', async () => {
|
|
610
|
+
const a = jest.spyOn(authService, 'verifyTokenService');
|
|
611
|
+
a.mockResolvedValue(true);
|
|
612
|
+
|
|
613
|
+
// authVerifyMock.mockResolvedValue(true);
|
|
614
|
+
const mockEmbedEventPayload = {
|
|
615
|
+
type: EmbedEvent.APP_INIT,
|
|
616
|
+
data: {},
|
|
617
|
+
};
|
|
618
|
+
const searchEmbed = new SearchEmbed(getRootEl(), {
|
|
619
|
+
...defaultViewConfig,
|
|
620
|
+
preRenderId: 'test',
|
|
621
|
+
});
|
|
622
|
+
searchEmbed.preRender();
|
|
623
|
+
const mockPort: any = {
|
|
624
|
+
postMessage: jest.fn(),
|
|
625
|
+
};
|
|
626
|
+
await executeAfterWait(() => {
|
|
627
|
+
const iframe = getIFrameEl();
|
|
628
|
+
postMessageToParent(iframe.contentWindow, mockEmbedEventPayload, mockPort);
|
|
629
|
+
});
|
|
630
|
+
const preRenderWrapper = document.getElementById('tsEmbed-pre-render-wrapper-test');
|
|
631
|
+
await executeAfterWait(() => {
|
|
632
|
+
expect(mockPort.postMessage).not.toHaveBeenCalled();
|
|
633
|
+
expect(preRenderWrapper.innerHTML).toContain('Not logged in');
|
|
634
|
+
});
|
|
635
|
+
|
|
636
|
+
jest.spyOn(authService, 'verifyTokenService').mockClear();
|
|
637
|
+
});
|
|
638
|
+
|
|
639
|
+
test('should show login failure message if update token failed', async () => {
|
|
640
|
+
const a = jest.spyOn(authService, 'verifyTokenService');
|
|
641
|
+
a.mockResolvedValue(true);
|
|
642
|
+
|
|
643
|
+
// authVerifyMock.mockResolvedValue(true);
|
|
644
|
+
const mockEmbedEventPayload = {
|
|
645
|
+
type: EmbedEvent.AuthExpire,
|
|
646
|
+
data: {},
|
|
647
|
+
};
|
|
648
|
+
const searchEmbed = new SearchEmbed(getRootEl(), defaultViewConfig);
|
|
649
|
+
jest.spyOn(baseInstance, 'notifyAuthFailure');
|
|
650
|
+
searchEmbed.render();
|
|
651
|
+
const mockPort: any = {
|
|
652
|
+
postMessage: jest.fn(),
|
|
653
|
+
};
|
|
654
|
+
await executeAfterWait(() => {
|
|
655
|
+
const iframe = getIFrameEl();
|
|
656
|
+
postMessageToParent(iframe.contentWindow, mockEmbedEventPayload, mockPort);
|
|
657
|
+
});
|
|
658
|
+
await executeAfterWait(() => {
|
|
659
|
+
expect(getRootEl().innerHTML).toContain('Not logged in');
|
|
660
|
+
expect(baseInstance.notifyAuthFailure).toBeCalledWith(
|
|
661
|
+
authInstance.AuthFailureType.EXPIRY,
|
|
662
|
+
);
|
|
663
|
+
});
|
|
664
|
+
|
|
665
|
+
jest.spyOn(authService, 'verifyTokenService').mockClear();
|
|
666
|
+
jest.spyOn(baseInstance, 'notifyAuthFailure').mockClear();
|
|
667
|
+
});
|
|
668
|
+
|
|
669
|
+
test('should show login failure message if update token failed prerender', async () => {
|
|
670
|
+
const a = jest.spyOn(authService, 'verifyTokenService');
|
|
671
|
+
a.mockResolvedValue(true);
|
|
672
|
+
|
|
673
|
+
// authVerifyMock.mockResolvedValue(true);
|
|
674
|
+
const mockEmbedEventPayload = {
|
|
675
|
+
type: EmbedEvent.AuthExpire,
|
|
676
|
+
data: {},
|
|
677
|
+
};
|
|
678
|
+
const searchEmbed = new SearchEmbed(getRootEl(), {
|
|
679
|
+
...defaultViewConfig,
|
|
680
|
+
preRenderId: 'test',
|
|
681
|
+
});
|
|
682
|
+
jest.spyOn(baseInstance, 'notifyAuthFailure');
|
|
683
|
+
searchEmbed.preRender();
|
|
684
|
+
const mockPort: any = {
|
|
685
|
+
postMessage: jest.fn(),
|
|
686
|
+
};
|
|
687
|
+
await executeAfterWait(() => {
|
|
688
|
+
const iframe = getIFrameEl();
|
|
689
|
+
postMessageToParent(iframe.contentWindow, mockEmbedEventPayload, mockPort);
|
|
690
|
+
});
|
|
691
|
+
const preRenderWrapper = document.getElementById('tsEmbed-pre-render-wrapper-test');
|
|
692
|
+
await executeAfterWait(() => {
|
|
693
|
+
expect(preRenderWrapper.innerHTML).toContain('Not logged in');
|
|
694
|
+
expect(baseInstance.notifyAuthFailure).toBeCalledWith(
|
|
695
|
+
authInstance.AuthFailureType.EXPIRY,
|
|
696
|
+
);
|
|
697
|
+
});
|
|
698
|
+
|
|
699
|
+
jest.spyOn(authService, 'verifyTokenService').mockClear();
|
|
700
|
+
jest.spyOn(baseInstance, 'notifyAuthFailure').mockClear();
|
|
701
|
+
});
|
|
702
|
+
});
|
|
703
|
+
|
|
565
704
|
xdescribe('AuthExpire embedEvent in TrustedAuthToken authType', () => {
|
|
566
705
|
test('AutoLogin true scenario', async () => {
|
|
567
706
|
init({
|
|
@@ -698,7 +837,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
698
837
|
const iFrame: any = document.createElement('div');
|
|
699
838
|
iFrame.contentWindow = null;
|
|
700
839
|
jest.spyOn(document, 'createElement').mockReturnValueOnce(iFrame);
|
|
701
|
-
spyOn(
|
|
840
|
+
spyOn(logger, 'error');
|
|
702
841
|
tsEmbed.render();
|
|
703
842
|
});
|
|
704
843
|
|
|
@@ -712,7 +851,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
712
851
|
|
|
713
852
|
describe('when visible actions are set', () => {
|
|
714
853
|
test('should throw error when there are both visible and hidden actions - pinboard', async () => {
|
|
715
|
-
spyOn(
|
|
854
|
+
spyOn(logger, 'error');
|
|
716
855
|
const pinboardEmbed = new PinboardEmbed(getRootEl(), {
|
|
717
856
|
hiddenActions: [Action.DownloadAsCsv],
|
|
718
857
|
visibleActions: [Action.DownloadAsCsv],
|
|
@@ -721,7 +860,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
721
860
|
} as LiveboardViewConfig);
|
|
722
861
|
await pinboardEmbed.render();
|
|
723
862
|
expect(pinboardEmbed['isError']).toBe(true);
|
|
724
|
-
expect(
|
|
863
|
+
expect(logger.error).toHaveBeenCalledWith(
|
|
725
864
|
'You cannot have both hidden actions and visible actions',
|
|
726
865
|
);
|
|
727
866
|
});
|
|
@@ -744,7 +883,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
744
883
|
hiddenActions: Array<Action>,
|
|
745
884
|
visibleActions: Array<Action>,
|
|
746
885
|
) {
|
|
747
|
-
spyOn(
|
|
886
|
+
spyOn(logger, 'error');
|
|
748
887
|
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
749
888
|
hiddenActions,
|
|
750
889
|
visibleActions,
|
|
@@ -753,7 +892,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
753
892
|
} as LiveboardViewConfig);
|
|
754
893
|
await liveboardEmbed.render();
|
|
755
894
|
expect(liveboardEmbed['isError']).toBe(true);
|
|
756
|
-
expect(
|
|
895
|
+
expect(logger.error).toHaveBeenCalledWith(
|
|
757
896
|
'You cannot have both hidden actions and visible actions',
|
|
758
897
|
);
|
|
759
898
|
}
|
|
@@ -789,7 +928,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
789
928
|
|
|
790
929
|
describe('when visible Tabs are set', () => {
|
|
791
930
|
test('should throw error when there are both visible and hidden Tabs - pinboard', async () => {
|
|
792
|
-
spyOn(
|
|
931
|
+
spyOn(logger, 'error');
|
|
793
932
|
const pinboardEmbed = new PinboardEmbed(getRootEl(), {
|
|
794
933
|
visibleTabs: [tabId1],
|
|
795
934
|
hiddenTabs: [tabId2],
|
|
@@ -798,7 +937,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
798
937
|
} as LiveboardViewConfig);
|
|
799
938
|
await pinboardEmbed.render();
|
|
800
939
|
expect(pinboardEmbed['isError']).toBe(true);
|
|
801
|
-
expect(
|
|
940
|
+
expect(logger.error).toHaveBeenCalledWith(
|
|
802
941
|
'You cannot have both hidden Tabs and visible Tabs',
|
|
803
942
|
);
|
|
804
943
|
});
|
|
@@ -821,7 +960,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
821
960
|
hiddenTabs: Array<string>,
|
|
822
961
|
visibleTabs: Array<string>,
|
|
823
962
|
) {
|
|
824
|
-
spyOn(
|
|
963
|
+
spyOn(logger, 'error');
|
|
825
964
|
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
826
965
|
hiddenTabs,
|
|
827
966
|
visibleTabs,
|
|
@@ -830,7 +969,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
830
969
|
} as LiveboardViewConfig);
|
|
831
970
|
await liveboardEmbed.render();
|
|
832
971
|
expect(liveboardEmbed['isError']).toBe(true);
|
|
833
|
-
expect(
|
|
972
|
+
expect(logger.error).toHaveBeenCalledWith(
|
|
834
973
|
'You cannot have both hidden Tabs and visible Tabs',
|
|
835
974
|
);
|
|
836
975
|
}
|
|
@@ -874,11 +1013,11 @@ describe('Unit test case for ts embed', () => {
|
|
|
874
1013
|
});
|
|
875
1014
|
|
|
876
1015
|
test('Error should be true', async () => {
|
|
877
|
-
spyOn(
|
|
1016
|
+
spyOn(logger, 'error');
|
|
878
1017
|
const tsEmbed = new SearchEmbed(getRootEl(), {});
|
|
879
1018
|
tsEmbed.render();
|
|
880
1019
|
expect(tsEmbed['isError']).toBe(true);
|
|
881
|
-
expect(
|
|
1020
|
+
expect(logger.error).toHaveBeenCalledWith(
|
|
882
1021
|
'You need to init the ThoughtSpot SDK module first',
|
|
883
1022
|
);
|
|
884
1023
|
});
|
|
@@ -886,13 +1025,13 @@ describe('Unit test case for ts embed', () => {
|
|
|
886
1025
|
|
|
887
1026
|
describe('V1Embed ', () => {
|
|
888
1027
|
test('when isRendered is true than isError will be true', () => {
|
|
889
|
-
spyOn(
|
|
1028
|
+
spyOn(logger, 'error');
|
|
890
1029
|
const viEmbedIns = new tsEmbedInstance.V1Embed(getRootEl(), defaultViewConfig);
|
|
891
1030
|
expect(viEmbedIns['isError']).toBe(false);
|
|
892
1031
|
viEmbedIns.render();
|
|
893
1032
|
viEmbedIns.on(EmbedEvent.CustomAction, jest.fn()).render();
|
|
894
1033
|
expect(viEmbedIns['isError']).toBe(true);
|
|
895
|
-
expect(
|
|
1034
|
+
expect(logger.error).toHaveBeenCalledWith(
|
|
896
1035
|
'Please register event handlers before calling render',
|
|
897
1036
|
);
|
|
898
1037
|
});
|
|
@@ -933,7 +1072,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
933
1072
|
});
|
|
934
1073
|
|
|
935
1074
|
test('navigateToPage function use before render', async () => {
|
|
936
|
-
spyOn(
|
|
1075
|
+
spyOn(logger, 'log');
|
|
937
1076
|
const appEmbed = new AppEmbed(getRootEl(), {
|
|
938
1077
|
frameParams: {
|
|
939
1078
|
width: '100%',
|
|
@@ -942,7 +1081,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
942
1081
|
});
|
|
943
1082
|
appEmbed.navigateToPage(path, false);
|
|
944
1083
|
await appEmbed.render();
|
|
945
|
-
expect(
|
|
1084
|
+
expect(logger.log).toHaveBeenCalledWith(
|
|
946
1085
|
'Please call render before invoking this method',
|
|
947
1086
|
);
|
|
948
1087
|
});
|
|
@@ -1330,7 +1469,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
1330
1469
|
});
|
|
1331
1470
|
|
|
1332
1471
|
// show preRender
|
|
1333
|
-
const warnSpy = spyOn(
|
|
1472
|
+
const warnSpy = spyOn(logger, 'warn');
|
|
1334
1473
|
libEmbed.showPreRender();
|
|
1335
1474
|
expect(warnSpy).toHaveBeenCalledTimes(0);
|
|
1336
1475
|
|
|
@@ -1360,13 +1499,13 @@ describe('Unit test case for ts embed', () => {
|
|
|
1360
1499
|
it('preRender called without preRenderId should log error ', () => {
|
|
1361
1500
|
createRootEleForEmbed();
|
|
1362
1501
|
|
|
1363
|
-
spyOn(
|
|
1502
|
+
spyOn(logger, 'error');
|
|
1364
1503
|
const libEmbed = new LiveboardEmbed('#tsEmbedDiv', {
|
|
1365
1504
|
liveboardId: 'myLiveboardId',
|
|
1366
1505
|
});
|
|
1367
1506
|
libEmbed.preRender();
|
|
1368
1507
|
|
|
1369
|
-
expect(
|
|
1508
|
+
expect(logger.error).toHaveBeenCalledWith('PreRender id is required for preRender');
|
|
1370
1509
|
});
|
|
1371
1510
|
|
|
1372
1511
|
it('showPreRender should preRender if not available', async () => {
|
|
@@ -1414,7 +1553,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
1414
1553
|
|
|
1415
1554
|
libEmbed.preRender();
|
|
1416
1555
|
await waitFor(() => !!getIFrameEl());
|
|
1417
|
-
const warnSpy = jest.spyOn(
|
|
1556
|
+
const warnSpy = jest.spyOn(logger, 'warn');
|
|
1418
1557
|
const newEmbed = new LiveboardEmbed('#tsEmbedDiv', {
|
|
1419
1558
|
preRenderId: 'i-am-preRendered',
|
|
1420
1559
|
liveboardId: 'awdawda',
|
|
@@ -1433,10 +1572,10 @@ describe('Unit test case for ts embed', () => {
|
|
|
1433
1572
|
liveboardId: 'myLiveboardId',
|
|
1434
1573
|
});
|
|
1435
1574
|
spyOn(libEmbed, 'preRender');
|
|
1436
|
-
spyOn(
|
|
1575
|
+
spyOn(logger, 'error');
|
|
1437
1576
|
libEmbed.showPreRender();
|
|
1438
1577
|
expect(libEmbed.preRender).toHaveBeenCalledTimes(0);
|
|
1439
|
-
expect(
|
|
1578
|
+
expect(logger.error).toHaveBeenCalledTimes(1);
|
|
1440
1579
|
});
|
|
1441
1580
|
|
|
1442
1581
|
it('should get underlying iframe', async () => {
|
|
@@ -1464,16 +1603,16 @@ describe('Unit test case for ts embed', () => {
|
|
|
1464
1603
|
);
|
|
1465
1604
|
});
|
|
1466
1605
|
it('should log error if sync is called before preRender', async () => {
|
|
1467
|
-
jest.spyOn(
|
|
1606
|
+
jest.spyOn(logger, 'error').mockImplementation(jest.fn());
|
|
1468
1607
|
const libEmbed = new LiveboardEmbed('#tsEmbedDiv', {
|
|
1469
1608
|
liveboardId: 'myLiveboardId',
|
|
1470
1609
|
preRenderId: 'test',
|
|
1471
1610
|
});
|
|
1472
1611
|
await libEmbed.syncPreRenderStyle();
|
|
1473
|
-
expect(
|
|
1612
|
+
expect(logger.error).toBeCalledWith(
|
|
1474
1613
|
'PreRender should be called before using syncPreRenderStyle',
|
|
1475
1614
|
);
|
|
1476
|
-
(
|
|
1615
|
+
(logger.error as any).mockClear();
|
|
1477
1616
|
});
|
|
1478
1617
|
});
|
|
1479
1618
|
});
|
package/src/embed/ts-embed.ts
CHANGED
|
@@ -8,57 +8,54 @@
|
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
import isEqual from 'lodash/isEqual';
|
|
11
|
-
|
|
11
|
+
import pkgInfo from '../../package.json';
|
|
12
|
+
import { AuthFailureType } from '../auth';
|
|
12
13
|
import { getAuthenticationToken } from '../authToken';
|
|
13
|
-
import { AnswerService } from '../utils/graphql/answerService/answerService';
|
|
14
14
|
import {
|
|
15
|
-
getEncodedQueryParamsString,
|
|
16
|
-
getCssDimension,
|
|
17
|
-
getOffsetTop,
|
|
18
|
-
embedEventStatus,
|
|
19
|
-
setAttributes,
|
|
20
|
-
getCustomisations,
|
|
21
|
-
getRuntimeFilters,
|
|
22
|
-
getDOMNode,
|
|
23
|
-
getFilterQuery,
|
|
24
|
-
getQueryParamString,
|
|
25
|
-
getRuntimeParameters,
|
|
26
|
-
setStyleProperties,
|
|
27
|
-
removeStyleProperties,
|
|
28
|
-
isUndefined,
|
|
29
|
-
} from '../utils';
|
|
30
|
-
import {
|
|
31
|
-
getThoughtSpotHost,
|
|
32
|
-
URL_MAX_LENGTH,
|
|
33
|
-
DEFAULT_EMBED_WIDTH,
|
|
34
15
|
DEFAULT_EMBED_HEIGHT,
|
|
16
|
+
DEFAULT_EMBED_WIDTH,
|
|
17
|
+
URL_MAX_LENGTH,
|
|
18
|
+
getThoughtSpotHost,
|
|
35
19
|
getV2BasePath,
|
|
36
20
|
} from '../config';
|
|
21
|
+
import { MIXPANEL_EVENT, uploadMixpanelEvent } from '../mixpanel-service';
|
|
37
22
|
import {
|
|
23
|
+
Action,
|
|
38
24
|
AuthType,
|
|
25
|
+
ContextMenuTriggerOptions,
|
|
39
26
|
DOMSelector,
|
|
40
|
-
|
|
27
|
+
EmbedConfig,
|
|
41
28
|
EmbedEvent,
|
|
29
|
+
HostEvent,
|
|
42
30
|
MessageCallback,
|
|
43
|
-
Action,
|
|
44
|
-
Param,
|
|
45
|
-
EmbedConfig,
|
|
46
|
-
MessageOptions,
|
|
47
|
-
MessagePayload,
|
|
48
31
|
MessageCallbackObj,
|
|
32
|
+
MessageOptions,
|
|
33
|
+
Param,
|
|
49
34
|
ViewConfig,
|
|
50
|
-
FrameParams,
|
|
51
|
-
ContextMenuTriggerOptions,
|
|
52
|
-
RuntimeFilter,
|
|
53
35
|
} from '../types';
|
|
54
|
-
import {
|
|
55
|
-
|
|
36
|
+
import {
|
|
37
|
+
embedEventStatus,
|
|
38
|
+
getCssDimension,
|
|
39
|
+
getCustomisations,
|
|
40
|
+
getDOMNode,
|
|
41
|
+
getEncodedQueryParamsString,
|
|
42
|
+
getFilterQuery,
|
|
43
|
+
getOffsetTop,
|
|
44
|
+
getQueryParamString,
|
|
45
|
+
getRuntimeFilters,
|
|
46
|
+
getRuntimeParameters,
|
|
47
|
+
isUndefined,
|
|
48
|
+
removeStyleProperties,
|
|
49
|
+
setAttributes,
|
|
50
|
+
setStyleProperties,
|
|
51
|
+
} from '../utils';
|
|
52
|
+
import { AnswerService } from '../utils/graphql/answerService/answerService';
|
|
53
|
+
import { logger } from '../utils/logger';
|
|
54
|
+
import { processAuthFailure, processEventData } from '../utils/processData';
|
|
56
55
|
import { processTrigger } from '../utils/processTrigger';
|
|
57
|
-
import pkgInfo from '../../package.json';
|
|
58
56
|
import {
|
|
59
|
-
getAuthPromise,
|
|
57
|
+
getAuthPromise, handleAuth, notifyAuthFailure, renderInQueue,
|
|
60
58
|
} from './base';
|
|
61
|
-
import { AuthFailureType } from '../auth';
|
|
62
59
|
import { getEmbedConfig } from './embedConfig';
|
|
63
60
|
|
|
64
61
|
const { version } = pkgInfo;
|
|
@@ -196,7 +193,7 @@ export class TsEmbed {
|
|
|
196
193
|
error,
|
|
197
194
|
});
|
|
198
195
|
// Log error
|
|
199
|
-
|
|
196
|
+
logger.error(error);
|
|
200
197
|
}
|
|
201
198
|
|
|
202
199
|
/**
|
|
@@ -280,7 +277,7 @@ export class TsEmbed {
|
|
|
280
277
|
this.executeCallbacks(EmbedEvent.Error, {
|
|
281
278
|
offlineWarning,
|
|
282
279
|
});
|
|
283
|
-
|
|
280
|
+
logger.warn(offlineWarning);
|
|
284
281
|
};
|
|
285
282
|
window.addEventListener('offline', offlineEventListener);
|
|
286
283
|
|
|
@@ -306,7 +303,12 @@ export class TsEmbed {
|
|
|
306
303
|
private appInitCb = async (_: any, responder: any) => {
|
|
307
304
|
let authToken = '';
|
|
308
305
|
if (this.embedConfig.authType === AuthType.TrustedAuthTokenCookieless) {
|
|
309
|
-
|
|
306
|
+
try {
|
|
307
|
+
authToken = await getAuthenticationToken(this.embedConfig);
|
|
308
|
+
} catch (e) {
|
|
309
|
+
processAuthFailure(e, this.isPreRendered ? this.preRenderWrapper : this.el);
|
|
310
|
+
return;
|
|
311
|
+
}
|
|
310
312
|
}
|
|
311
313
|
this.isAppInitialized = true;
|
|
312
314
|
responder({
|
|
@@ -336,11 +338,16 @@ export class TsEmbed {
|
|
|
336
338
|
private updateAuthToken = async (_: any, responder: any) => {
|
|
337
339
|
const { autoLogin = false, authType } = this.embedConfig; // Set autoLogin default to false
|
|
338
340
|
if (authType === AuthType.TrustedAuthTokenCookieless) {
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
341
|
+
let authToken = '';
|
|
342
|
+
try {
|
|
343
|
+
authToken = await getAuthenticationToken(this.embedConfig);
|
|
344
|
+
responder({
|
|
345
|
+
type: EmbedEvent.AuthExpire,
|
|
346
|
+
data: { authToken },
|
|
347
|
+
});
|
|
348
|
+
} catch (e) {
|
|
349
|
+
processAuthFailure(e, this.isPreRendered ? this.preRenderWrapper : this.el);
|
|
350
|
+
}
|
|
344
351
|
} else if (autoLogin) {
|
|
345
352
|
handleAuth();
|
|
346
353
|
}
|
|
@@ -490,6 +497,9 @@ export class TsEmbed {
|
|
|
490
497
|
queryParams[Param.ShowInsertToSlide] = insertInToSlide;
|
|
491
498
|
}
|
|
492
499
|
|
|
500
|
+
queryParams[Param.OverrideNativeConsole] = true;
|
|
501
|
+
queryParams[Param.ClientLogLevel] = this.embedConfig.logLevel;
|
|
502
|
+
|
|
493
503
|
return queryParams;
|
|
494
504
|
}
|
|
495
505
|
|
|
@@ -505,7 +515,11 @@ export class TsEmbed {
|
|
|
505
515
|
const queryParams = this.shouldEncodeUrlQueryParams
|
|
506
516
|
? `?base64UrlEncodedFlags=${getEncodedQueryParamsString(queryString)}`
|
|
507
517
|
: `?${queryString}`;
|
|
508
|
-
|
|
518
|
+
let host = this.thoughtSpotHost;
|
|
519
|
+
if (!isUndefined(this.embedConfig.enableReactShell)) {
|
|
520
|
+
host = (this.embedConfig.enableReactShell as boolean) ? '/v2' : '/v1';
|
|
521
|
+
}
|
|
522
|
+
const path = `${host}/${queryParams}#`;
|
|
509
523
|
return path;
|
|
510
524
|
}
|
|
511
525
|
|
|
@@ -524,6 +538,7 @@ export class TsEmbed {
|
|
|
524
538
|
|
|
525
539
|
iFrame.src = frameSrc;
|
|
526
540
|
iFrame.id = TS_EMBED_ID;
|
|
541
|
+
iFrame.setAttribute('data-ts-iframe', 'true');
|
|
527
542
|
|
|
528
543
|
// according to screenfull.js documentation
|
|
529
544
|
// allowFullscreen, webkitallowfullscreen and mozallowfullscreen must be
|
|
@@ -664,7 +679,7 @@ export class TsEmbed {
|
|
|
664
679
|
protected connectPreRendered(): boolean {
|
|
665
680
|
const preRenderIds = this.getPreRenderIds();
|
|
666
681
|
this.preRenderWrapper = this.preRenderWrapper
|
|
667
|
-
|
|
682
|
+
|| document.getElementById(preRenderIds.wrapper);
|
|
668
683
|
|
|
669
684
|
this.preRenderChild = this.preRenderChild || document.getElementById(preRenderIds.child);
|
|
670
685
|
|
|
@@ -935,10 +950,10 @@ export class TsEmbed {
|
|
|
935
950
|
});
|
|
936
951
|
} catch (e) {
|
|
937
952
|
eventPort.postMessage({ error: e });
|
|
938
|
-
|
|
953
|
+
logger.log(e);
|
|
939
954
|
}
|
|
940
955
|
} else {
|
|
941
|
-
|
|
956
|
+
logger.log('Event Port is not defined');
|
|
942
957
|
}
|
|
943
958
|
}
|
|
944
959
|
|
|
@@ -966,6 +981,10 @@ export class TsEmbed {
|
|
|
966
981
|
return this;
|
|
967
982
|
}
|
|
968
983
|
|
|
984
|
+
public getIframeSrc(): string {
|
|
985
|
+
return '';
|
|
986
|
+
}
|
|
987
|
+
|
|
969
988
|
protected handleRenderForPrerender() {
|
|
970
989
|
this.render();
|
|
971
990
|
}
|
|
@@ -977,7 +996,7 @@ export class TsEmbed {
|
|
|
977
996
|
*/
|
|
978
997
|
public preRender(showPreRenderByDefault = false): TsEmbed {
|
|
979
998
|
if (!this.viewConfig.preRenderId) {
|
|
980
|
-
|
|
999
|
+
logger.error('PreRender id is required for preRender');
|
|
981
1000
|
return this;
|
|
982
1001
|
}
|
|
983
1002
|
this.isPreRendered = true;
|
|
@@ -1026,7 +1045,7 @@ export class TsEmbed {
|
|
|
1026
1045
|
this.insertedDomEl?.parentNode.removeChild(this.insertedDomEl);
|
|
1027
1046
|
this.unsubscribeToEvents();
|
|
1028
1047
|
} catch (e) {
|
|
1029
|
-
|
|
1048
|
+
logger.log('Error destroying TS Embed', e);
|
|
1030
1049
|
}
|
|
1031
1050
|
}
|
|
1032
1051
|
|
|
@@ -1066,13 +1085,13 @@ export class TsEmbed {
|
|
|
1066
1085
|
!isUndefined(viewConfig[key])
|
|
1067
1086
|
&& !isEqual(viewConfig[key], preRenderedObject.viewConfig[key])
|
|
1068
1087
|
) {
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1088
|
+
logger.warn(
|
|
1089
|
+
`${viewConfig.embedComponentType || 'Component'} was pre-rendered with `
|
|
1090
|
+
+ `"${key}" as "${JSON.stringify(preRenderedObject.viewConfig[key])}" `
|
|
1091
|
+
+ `but a different value "${JSON.stringify(viewConfig[key])}" `
|
|
1092
|
+
+ 'was passed to the Embed component. '
|
|
1093
|
+
+ 'The new value provided is ignored, the value provided during '
|
|
1094
|
+
+ 'preRender is used.',
|
|
1076
1095
|
);
|
|
1077
1096
|
}
|
|
1078
1097
|
});
|
|
@@ -1087,7 +1106,7 @@ export class TsEmbed {
|
|
|
1087
1106
|
*/
|
|
1088
1107
|
public showPreRender(): void {
|
|
1089
1108
|
if (!this.viewConfig.preRenderId) {
|
|
1090
|
-
|
|
1109
|
+
logger.error('PreRender id is required for preRender');
|
|
1091
1110
|
return;
|
|
1092
1111
|
}
|
|
1093
1112
|
if (!this.isPreRenderAvailable()) {
|
|
@@ -1136,7 +1155,7 @@ export class TsEmbed {
|
|
|
1136
1155
|
*/
|
|
1137
1156
|
public syncPreRenderStyle(): void {
|
|
1138
1157
|
if (!this.isPreRenderAvailable() || !this.el) {
|
|
1139
|
-
|
|
1158
|
+
logger.error('PreRender should be called before using syncPreRenderStyle');
|
|
1140
1159
|
return;
|
|
1141
1160
|
}
|
|
1142
1161
|
const elBoundingClient = this.el.getBoundingClientRect();
|
|
@@ -1156,7 +1175,7 @@ export class TsEmbed {
|
|
|
1156
1175
|
public hidePreRender(): void {
|
|
1157
1176
|
if (!this.isPreRenderAvailable()) {
|
|
1158
1177
|
// if the embed component is not preRendered , nothing to hide
|
|
1159
|
-
|
|
1178
|
+
logger.warn('PreRender should be called before hiding it using hidePreRender.');
|
|
1160
1179
|
return;
|
|
1161
1180
|
}
|
|
1162
1181
|
const preRenderHideStyles = {
|
package/src/index.ts
CHANGED
|
@@ -45,6 +45,7 @@ import {
|
|
|
45
45
|
customCssInterface,
|
|
46
46
|
ContextMenuTriggerOptions,
|
|
47
47
|
RuntimeParameter,
|
|
48
|
+
LogLevel,
|
|
48
49
|
} from './types';
|
|
49
50
|
import { CustomCssVariables } from './css-variables';
|
|
50
51
|
import { SageEmbed, SageViewConfig } from './embed/sage';
|
|
@@ -101,4 +102,5 @@ export {
|
|
|
101
102
|
customCssInterface,
|
|
102
103
|
CustomCssVariables,
|
|
103
104
|
RuntimeParameter,
|
|
105
|
+
LogLevel,
|
|
104
106
|
};
|