@thoughtspot/visual-embed-sdk 1.20.1 → 1.20.3
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 +1 -1
- package/cjs/package.json +171 -0
- package/cjs/src/auth.d.ts +183 -0
- package/cjs/src/auth.d.ts.map +1 -0
- package/cjs/src/auth.js +457 -0
- package/cjs/src/auth.js.map +1 -0
- package/cjs/src/auth.spec.d.ts +13 -0
- package/cjs/src/auth.spec.d.ts.map +1 -0
- package/cjs/src/auth.spec.js +397 -0
- package/cjs/src/auth.spec.js.map +1 -0
- package/cjs/src/config.d.ts +22 -0
- package/cjs/src/config.d.ts.map +1 -0
- package/cjs/src/config.js +70 -0
- package/cjs/src/config.js.map +1 -0
- package/cjs/src/config.spec.d.ts +5 -0
- package/cjs/src/config.spec.d.ts.map +1 -0
- package/cjs/src/config.spec.js +65 -0
- package/cjs/src/config.spec.js.map +1 -0
- package/cjs/src/embed/app.d.ts +168 -0
- package/cjs/src/embed/app.d.ts.map +1 -0
- package/cjs/src/embed/app.js +215 -0
- package/cjs/src/embed/app.js.map +1 -0
- package/cjs/src/embed/app.spec.d.ts +2 -0
- package/cjs/src/embed/app.spec.d.ts.map +1 -0
- package/cjs/src/embed/app.spec.js +239 -0
- package/cjs/src/embed/app.spec.js.map +1 -0
- package/cjs/src/embed/base.d.ts +79 -0
- package/cjs/src/embed/base.d.ts.map +1 -0
- package/cjs/src/embed/base.js +229 -0
- package/cjs/src/embed/base.js.map +1 -0
- package/cjs/src/embed/base.spec.d.ts +2 -0
- package/cjs/src/embed/base.spec.d.ts.map +1 -0
- package/cjs/src/embed/base.spec.js +198 -0
- package/cjs/src/embed/base.spec.js.map +1 -0
- package/cjs/src/embed/embed.spec.d.ts +2 -0
- package/cjs/src/embed/embed.spec.d.ts.map +1 -0
- package/cjs/src/embed/embed.spec.js +74 -0
- package/cjs/src/embed/embed.spec.js.map +1 -0
- package/cjs/src/embed/events.spec.d.ts +2 -0
- package/cjs/src/embed/events.spec.d.ts.map +1 -0
- package/cjs/src/embed/events.spec.js +238 -0
- package/cjs/src/embed/events.spec.js.map +1 -0
- package/cjs/src/embed/liveboard.d.ts +150 -0
- package/cjs/src/embed/liveboard.d.ts.map +1 -0
- package/cjs/src/embed/liveboard.js +168 -0
- package/cjs/src/embed/liveboard.js.map +1 -0
- package/cjs/src/embed/liveboard.spec.d.ts +2 -0
- package/cjs/src/embed/liveboard.spec.d.ts.map +1 -0
- package/cjs/src/embed/liveboard.spec.js +229 -0
- package/cjs/src/embed/liveboard.spec.js.map +1 -0
- package/cjs/src/embed/pinboard.spec.d.ts +2 -0
- package/cjs/src/embed/pinboard.spec.d.ts.map +1 -0
- package/cjs/src/embed/pinboard.spec.js +148 -0
- package/cjs/src/embed/pinboard.spec.js.map +1 -0
- package/cjs/src/embed/search-bar.d.ts +50 -0
- package/cjs/src/embed/search-bar.d.ts.map +1 -0
- package/cjs/src/embed/search-bar.js +63 -0
- package/cjs/src/embed/search-bar.js.map +1 -0
- package/cjs/src/embed/search.d.ts +129 -0
- package/cjs/src/embed/search.d.ts.map +1 -0
- package/cjs/src/embed/search.js +121 -0
- package/cjs/src/embed/search.js.map +1 -0
- package/cjs/src/embed/search.spec.d.ts +2 -0
- package/cjs/src/embed/search.spec.d.ts.map +1 -0
- package/cjs/src/embed/search.spec.js +238 -0
- package/cjs/src/embed/search.spec.js.map +1 -0
- package/cjs/src/embed/searchEmbed-basic-auth.spec.d.ts +2 -0
- package/cjs/src/embed/searchEmbed-basic-auth.spec.d.ts.map +1 -0
- package/cjs/src/embed/searchEmbed-basic-auth.spec.js +103 -0
- package/cjs/src/embed/searchEmbed-basic-auth.spec.js.map +1 -0
- package/cjs/src/embed/ts-embed.d.ts +323 -0
- package/cjs/src/embed/ts-embed.d.ts.map +1 -0
- package/cjs/src/embed/ts-embed.js +719 -0
- package/cjs/src/embed/ts-embed.js.map +1 -0
- package/cjs/src/embed/ts-embed.spec.d.ts +2 -0
- package/cjs/src/embed/ts-embed.spec.d.ts.map +1 -0
- package/cjs/src/embed/ts-embed.spec.js +771 -0
- package/cjs/src/embed/ts-embed.spec.js.map +1 -0
- package/cjs/src/errors.d.ts +7 -0
- package/cjs/src/errors.d.ts.map +1 -0
- package/cjs/src/errors.js +10 -0
- package/cjs/src/errors.js.map +1 -0
- package/cjs/src/index.d.ts +18 -0
- package/cjs/src/index.d.ts.map +1 -0
- package/cjs/src/index.js +42 -0
- package/cjs/src/index.js.map +1 -0
- package/cjs/src/mixpanel-service.d.ts +29 -0
- package/cjs/src/mixpanel-service.d.ts.map +1 -0
- package/cjs/src/mixpanel-service.js +76 -0
- package/cjs/src/mixpanel-service.js.map +1 -0
- package/cjs/src/mixpanel-service.spec.d.ts +2 -0
- package/cjs/src/mixpanel-service.spec.d.ts.map +1 -0
- package/cjs/src/mixpanel-service.spec.js +63 -0
- package/cjs/src/mixpanel-service.spec.js.map +1 -0
- package/cjs/src/react/all-types-export.d.ts +3 -0
- package/cjs/src/react/all-types-export.d.ts.map +1 -0
- package/cjs/src/react/all-types-export.js +29 -0
- package/cjs/src/react/all-types-export.js.map +1 -0
- package/cjs/src/react/all-types-export.spec.d.ts +2 -0
- package/cjs/src/react/all-types-export.spec.d.ts.map +1 -0
- package/cjs/src/react/all-types-export.spec.js +13 -0
- package/cjs/src/react/all-types-export.spec.js.map +1 -0
- package/cjs/src/react/index.d.ts +95 -0
- package/cjs/src/react/index.d.ts.map +1 -0
- package/cjs/src/react/index.js +121 -0
- package/cjs/src/react/index.js.map +1 -0
- package/cjs/src/react/index.spec.d.ts +3 -0
- package/cjs/src/react/index.spec.d.ts.map +1 -0
- package/cjs/src/react/index.spec.js +138 -0
- package/cjs/src/react/index.spec.js.map +1 -0
- package/cjs/src/react/util.d.ts +19 -0
- package/cjs/src/react/util.d.ts.map +1 -0
- package/cjs/src/react/util.js +25 -0
- package/cjs/src/react/util.js.map +1 -0
- package/cjs/src/test/test-utils.d.ts +48 -0
- package/cjs/src/test/test-utils.d.ts.map +1 -0
- package/cjs/src/test/test-utils.js +108 -0
- package/cjs/src/test/test-utils.js.map +1 -0
- package/cjs/src/types.d.ts +2020 -0
- package/cjs/src/types.d.ts.map +1 -0
- package/cjs/src/types.js +1543 -0
- package/cjs/src/types.js.map +1 -0
- package/cjs/src/utils/answerService.d.ts +10 -0
- package/cjs/src/utils/answerService.d.ts.map +1 -0
- package/cjs/src/utils/answerService.js +61 -0
- package/cjs/src/utils/answerService.js.map +1 -0
- package/cjs/src/utils/answerService.spec.d.ts +2 -0
- package/cjs/src/utils/answerService.spec.d.ts.map +1 -0
- package/cjs/src/utils/answerService.spec.js +31 -0
- package/cjs/src/utils/answerService.spec.js.map +1 -0
- package/cjs/src/utils/authService.d.ts +37 -0
- package/cjs/src/utils/authService.d.ts.map +1 -0
- package/cjs/src/utils/authService.js +106 -0
- package/cjs/src/utils/authService.js.map +1 -0
- package/cjs/src/utils/authService.spec.d.ts +2 -0
- package/cjs/src/utils/authService.spec.d.ts.map +1 -0
- package/cjs/src/utils/authService.spec.js +72 -0
- package/cjs/src/utils/authService.spec.js.map +1 -0
- package/cjs/src/utils/processData.d.ts +16 -0
- package/cjs/src/utils/processData.d.ts.map +1 -0
- package/cjs/src/utils/processData.js +110 -0
- package/cjs/src/utils/processData.js.map +1 -0
- package/cjs/src/utils/processData.spec.d.ts +2 -0
- package/cjs/src/utils/processData.spec.d.ts.map +1 -0
- package/cjs/src/utils/processData.spec.js +142 -0
- package/cjs/src/utils/processData.spec.js.map +1 -0
- package/cjs/src/utils/processTrigger.d.ts +10 -0
- package/cjs/src/utils/processTrigger.d.ts.map +1 -0
- package/cjs/src/utils/processTrigger.js +63 -0
- package/cjs/src/utils/processTrigger.js.map +1 -0
- package/cjs/src/utils/processTrigger.spec.d.ts +2 -0
- package/cjs/src/utils/processTrigger.spec.d.ts.map +1 -0
- package/cjs/src/utils/processTrigger.spec.js +58 -0
- package/cjs/src/utils/processTrigger.spec.js.map +1 -0
- package/cjs/src/utils.d.ts +68 -0
- package/cjs/src/utils.d.ts.map +1 -0
- package/cjs/src/utils.js +196 -0
- package/cjs/src/utils.js.map +1 -0
- package/cjs/src/utils.spec.d.ts +5 -0
- package/cjs/src/utils.spec.d.ts.map +1 -0
- package/cjs/src/utils.spec.js +98 -0
- package/cjs/src/utils.spec.js.map +1 -0
- package/dist/src/auth.d.ts +54 -5
- package/dist/src/auth.d.ts.map +1 -1
- package/dist/src/auth.spec.d.ts +3 -0
- package/dist/src/auth.spec.d.ts.map +1 -1
- package/dist/src/config.d.ts +1 -0
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/embed/app.d.ts +35 -6
- package/dist/src/embed/app.d.ts.map +1 -1
- package/dist/src/embed/base.d.ts +23 -10
- package/dist/src/embed/base.d.ts.map +1 -1
- package/dist/src/embed/liveboard.d.ts +28 -6
- package/dist/src/embed/liveboard.d.ts.map +1 -1
- package/dist/src/embed/search-bar.d.ts +3 -0
- package/dist/src/embed/search-bar.d.ts.map +1 -1
- package/dist/src/embed/search.d.ts +9 -1
- package/dist/src/embed/search.d.ts.map +1 -1
- package/dist/src/embed/ts-embed.d.ts +65 -7
- package/dist/src/embed/ts-embed.d.ts.map +1 -1
- 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/mixpanel-service.d.ts +8 -0
- package/dist/src/mixpanel-service.d.ts.map +1 -1
- package/dist/src/react/all-types-export.d.ts +3 -0
- package/dist/src/react/all-types-export.d.ts.map +1 -0
- package/dist/src/react/all-types-export.spec.d.ts +2 -0
- package/dist/src/react/all-types-export.spec.d.ts.map +1 -0
- package/dist/src/react/index.d.ts +72 -0
- package/dist/src/react/index.d.ts.map +1 -1
- package/dist/src/react/util.d.ts +4 -0
- package/dist/src/react/util.d.ts.map +1 -1
- package/dist/src/test/test-utils.d.ts +11 -2
- package/dist/src/test/test-utils.d.ts.map +1 -1
- package/dist/src/types.d.ts +540 -98
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/utils/answerService.d.ts +7 -0
- package/dist/src/utils/answerService.d.ts.map +1 -1
- package/dist/src/utils/authService.d.ts +30 -0
- package/dist/src/utils/authService.d.ts.map +1 -1
- package/dist/src/utils/processData.d.ts +12 -0
- package/dist/src/utils/processData.d.ts.map +1 -1
- package/dist/src/utils/processTrigger.d.ts +7 -0
- package/dist/src/utils/processTrigger.d.ts.map +1 -1
- package/dist/src/utils.d.ts +12 -0
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/tsembed-react.es.js +28024 -0
- package/dist/tsembed-react.js +27966 -0
- package/dist/tsembed.es.js +18163 -303
- package/dist/tsembed.js +18120 -308
- package/dist/visual-embed-sdk-react-full.d.ts +3092 -0
- package/dist/visual-embed-sdk-react.d.ts +2781 -0
- package/dist/visual-embed-sdk.d.ts +2944 -0
- package/lib/package.json +15 -14
- package/lib/src/auth.d.ts +54 -5
- package/lib/src/auth.d.ts.map +1 -1
- package/lib/src/auth.js +91 -31
- package/lib/src/auth.js.map +1 -1
- package/lib/src/auth.spec.d.ts +3 -0
- package/lib/src/auth.spec.d.ts.map +1 -1
- package/lib/src/auth.spec.js +37 -6
- package/lib/src/auth.spec.js.map +1 -1
- package/lib/src/config.d.ts +1 -0
- package/lib/src/config.d.ts.map +1 -1
- package/lib/src/config.js +5 -3
- package/lib/src/config.js.map +1 -1
- package/lib/src/config.spec.js.map +1 -1
- package/lib/src/embed/app.d.ts +35 -6
- package/lib/src/embed/app.d.ts.map +1 -1
- package/lib/src/embed/app.js +55 -16
- package/lib/src/embed/app.js.map +1 -1
- package/lib/src/embed/app.spec.js +41 -12
- package/lib/src/embed/app.spec.js.map +1 -1
- package/lib/src/embed/base.d.ts +23 -10
- package/lib/src/embed/base.d.ts.map +1 -1
- package/lib/src/embed/base.js +34 -16
- package/lib/src/embed/base.js.map +1 -1
- package/lib/src/embed/base.spec.js.map +1 -1
- package/lib/src/embed/embed.spec.js +1 -1
- package/lib/src/embed/embed.spec.js.map +1 -1
- package/lib/src/embed/liveboard.d.ts +28 -6
- package/lib/src/embed/liveboard.d.ts.map +1 -1
- package/lib/src/embed/liveboard.js +60 -38
- package/lib/src/embed/liveboard.js.map +1 -1
- package/lib/src/embed/liveboard.spec.js +37 -30
- package/lib/src/embed/liveboard.spec.js.map +1 -1
- package/lib/src/embed/pinboard.spec.js +14 -26
- package/lib/src/embed/pinboard.spec.js.map +1 -1
- package/lib/src/embed/search-bar.d.ts +3 -0
- package/lib/src/embed/search-bar.d.ts.map +1 -1
- package/lib/src/embed/search-bar.js +5 -6
- package/lib/src/embed/search-bar.js.map +1 -1
- package/lib/src/embed/search.d.ts +9 -1
- package/lib/src/embed/search.d.ts.map +1 -1
- package/lib/src/embed/search.js +18 -14
- package/lib/src/embed/search.js.map +1 -1
- package/lib/src/embed/search.spec.js +16 -19
- package/lib/src/embed/search.spec.js.map +1 -1
- package/lib/src/embed/searchEmbed-basic-auth.spec.js +4 -0
- package/lib/src/embed/searchEmbed-basic-auth.spec.js.map +1 -1
- package/lib/src/embed/ts-embed.d.ts +65 -7
- package/lib/src/embed/ts-embed.d.ts.map +1 -1
- package/lib/src/embed/ts-embed.js +154 -77
- package/lib/src/embed/ts-embed.js.map +1 -1
- package/lib/src/embed/ts-embed.spec.js +46 -24
- package/lib/src/embed/ts-embed.spec.js.map +1 -1
- package/lib/src/errors.d.ts.map +1 -1
- 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 +4 -4
- package/lib/src/index.js.map +1 -1
- package/lib/src/mixpanel-service.d.ts +8 -0
- package/lib/src/mixpanel-service.d.ts.map +1 -1
- package/lib/src/mixpanel-service.js +13 -1
- package/lib/src/mixpanel-service.js.map +1 -1
- package/lib/src/mixpanel-service.spec.js.map +1 -1
- package/lib/src/react/all-types-export.d.ts +3 -0
- package/lib/src/react/all-types-export.d.ts.map +1 -0
- package/lib/src/react/all-types-export.js +5 -0
- package/lib/src/react/all-types-export.js.map +1 -0
- package/lib/src/react/all-types-export.spec.d.ts +2 -0
- package/lib/src/react/all-types-export.spec.d.ts.map +1 -0
- package/lib/src/react/all-types-export.spec.js +10 -0
- package/lib/src/react/all-types-export.spec.js.map +1 -0
- package/lib/src/react/index.d.ts +72 -0
- package/lib/src/react/index.d.ts.map +1 -1
- package/lib/src/react/index.js +79 -7
- package/lib/src/react/index.js.map +1 -1
- package/lib/src/react/index.spec.js +27 -6
- package/lib/src/react/index.spec.js.map +1 -1
- package/lib/src/react/util.d.ts +4 -0
- package/lib/src/react/util.d.ts.map +1 -1
- package/lib/src/react/util.js +4 -0
- package/lib/src/react/util.js.map +1 -1
- package/lib/src/test/test-utils.d.ts +11 -2
- package/lib/src/test/test-utils.d.ts.map +1 -1
- package/lib/src/test/test-utils.js +36 -25
- package/lib/src/test/test-utils.js.map +1 -1
- package/lib/src/types.d.ts +540 -98
- package/lib/src/types.d.ts.map +1 -1
- package/lib/src/types.js +415 -70
- package/lib/src/types.js.map +1 -1
- package/lib/src/utils/answerService.d.ts +7 -0
- package/lib/src/utils/answerService.d.ts.map +1 -1
- package/lib/src/utils/answerService.js +7 -0
- package/lib/src/utils/answerService.js.map +1 -1
- package/lib/src/utils/answerService.spec.js.map +1 -1
- package/lib/src/utils/authService.d.ts +30 -0
- package/lib/src/utils/authService.d.ts.map +1 -1
- package/lib/src/utils/authService.js +39 -2
- package/lib/src/utils/authService.js.map +1 -1
- package/lib/src/utils/authService.spec.js.map +1 -1
- package/lib/src/utils/processData.d.ts +12 -0
- package/lib/src/utils/processData.d.ts.map +1 -1
- package/lib/src/utils/processData.js +33 -5
- package/lib/src/utils/processData.js.map +1 -1
- package/lib/src/utils/processData.spec.js.map +1 -1
- package/lib/src/utils/processTrigger.d.ts +7 -0
- package/lib/src/utils/processTrigger.d.ts.map +1 -1
- package/lib/src/utils/processTrigger.js +17 -3
- package/lib/src/utils/processTrigger.js.map +1 -1
- package/lib/src/utils/processTrigger.spec.js.map +1 -1
- package/lib/src/utils.d.ts +12 -0
- package/lib/src/utils.d.ts.map +1 -1
- package/lib/src/utils.js +24 -19
- package/lib/src/utils.js.map +1 -1
- package/lib/src/utils.spec.js.map +1 -1
- package/package.json +15 -14
- package/src/auth.spec.ts +83 -133
- package/src/auth.ts +148 -115
- package/src/config.spec.ts +2 -4
- package/src/config.ts +5 -3
- package/src/embed/app.spec.ts +57 -14
- package/src/embed/app.ts +91 -36
- package/src/embed/base.spec.ts +3 -9
- package/src/embed/base.ts +55 -55
- package/src/embed/embed.spec.ts +5 -6
- package/src/embed/liveboard.spec.ts +56 -37
- package/src/embed/liveboard.ts +77 -65
- package/src/embed/pinboard.spec.ts +26 -29
- package/src/embed/search-bar.tsx +10 -8
- package/src/embed/search.spec.ts +31 -21
- package/src/embed/search.ts +26 -20
- package/src/embed/searchEmbed-basic-auth.spec.ts +22 -28
- package/src/embed/ts-embed.spec.ts +99 -144
- package/src/embed/ts-embed.ts +188 -162
- package/src/errors.ts +3 -6
- package/src/index.ts +6 -10
- package/src/mixpanel-service.spec.ts +1 -3
- package/src/mixpanel-service.ts +13 -1
- package/src/react/index.spec.tsx +66 -13
- package/src/react/index.tsx +111 -62
- package/src/react/util.ts +8 -4
- package/src/test/test-utils.ts +43 -39
- package/src/types.ts +537 -98
- package/src/utils/answerService.spec.ts +3 -5
- package/src/utils/answerService.ts +21 -17
- package/src/utils/authService.spec.ts +26 -41
- package/src/utils/authService.ts +47 -21
- package/src/utils/processData.spec.ts +26 -59
- package/src/utils/processData.ts +36 -14
- package/src/utils/processTrigger.spec.ts +1 -6
- package/src/utils/processTrigger.ts +18 -9
- package/src/utils.spec.ts +8 -12
- package/src/utils.ts +25 -26
- package/lib/src/visual-embed-sdk.d.ts +0 -2368
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2022
|
|
3
|
+
*
|
|
4
|
+
* Full application embedding
|
|
5
|
+
* https://developers.thoughtspot.com/docs/?pageid=full-embed
|
|
6
|
+
*
|
|
7
|
+
* @summary Full app embed
|
|
8
|
+
* @module
|
|
9
|
+
* @author Ayon Ghosh <ayon.ghosh@thoughtspot.com>
|
|
10
|
+
*/
|
|
11
|
+
import { DOMSelector, ViewConfig, MessagePayload } from '../types';
|
|
12
|
+
import { V1Embed } from './ts-embed';
|
|
13
|
+
/**
|
|
14
|
+
* Pages within the ThoughtSpot app that can be embedded.
|
|
15
|
+
*/
|
|
16
|
+
export declare enum Page {
|
|
17
|
+
/**
|
|
18
|
+
* Home page
|
|
19
|
+
*/
|
|
20
|
+
Home = "home",
|
|
21
|
+
/**
|
|
22
|
+
* Search page
|
|
23
|
+
*/
|
|
24
|
+
Search = "search",
|
|
25
|
+
/**
|
|
26
|
+
* Saved answers listing page
|
|
27
|
+
*/
|
|
28
|
+
Answers = "answers",
|
|
29
|
+
/**
|
|
30
|
+
* Liveboards listing page
|
|
31
|
+
*/
|
|
32
|
+
Liveboards = "liveboards",
|
|
33
|
+
/**
|
|
34
|
+
* @hidden
|
|
35
|
+
*/
|
|
36
|
+
Pinboards = "pinboards",
|
|
37
|
+
/**
|
|
38
|
+
* Data management page
|
|
39
|
+
*/
|
|
40
|
+
Data = "data",
|
|
41
|
+
/**
|
|
42
|
+
* SpotIQ listing page
|
|
43
|
+
*/
|
|
44
|
+
SpotIQ = "spotiq"
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* The view configuration for full app embedding.
|
|
48
|
+
*
|
|
49
|
+
* @group Embed components
|
|
50
|
+
*/
|
|
51
|
+
export interface AppViewConfig extends ViewConfig {
|
|
52
|
+
/**
|
|
53
|
+
* If true, the main navigation bar within the ThoughtSpot app
|
|
54
|
+
* is displayed. By default, the navigation bar is hidden.
|
|
55
|
+
*/
|
|
56
|
+
showPrimaryNavbar?: boolean;
|
|
57
|
+
/**
|
|
58
|
+
* If true, help and profile buttons will hide on NavBar. By default,
|
|
59
|
+
* they are shown.
|
|
60
|
+
*/
|
|
61
|
+
disableProfileAndHelp?: boolean;
|
|
62
|
+
/**
|
|
63
|
+
* A URL path within the app that is to be embedded.
|
|
64
|
+
* If both path and pageId attributes are defined, the path definition
|
|
65
|
+
* takes precedence.
|
|
66
|
+
*/
|
|
67
|
+
path?: string;
|
|
68
|
+
/**
|
|
69
|
+
* The application page to set as the start page
|
|
70
|
+
* in the embedded view.
|
|
71
|
+
*/
|
|
72
|
+
pageId?: Page;
|
|
73
|
+
/**
|
|
74
|
+
* This puts a filter tag on the application. All metadata lists in the
|
|
75
|
+
* application, such as Liveboards and answers, would be filtered by this
|
|
76
|
+
* tag.
|
|
77
|
+
*/
|
|
78
|
+
tag?: string;
|
|
79
|
+
/**
|
|
80
|
+
* The array of GUIDs to be hidden
|
|
81
|
+
*/
|
|
82
|
+
hideObjects?: string[];
|
|
83
|
+
/**
|
|
84
|
+
* Render liveboards using the new v2 rendering mode
|
|
85
|
+
* This is a transient flag which is primarily meant for internal use
|
|
86
|
+
*
|
|
87
|
+
* @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1-sw
|
|
88
|
+
* @hidden
|
|
89
|
+
*/
|
|
90
|
+
liveboardV2?: boolean;
|
|
91
|
+
/**
|
|
92
|
+
* If set to true, the Search Assist feature is enabled.
|
|
93
|
+
*
|
|
94
|
+
* @version SDK: 1.13.0 | ThoughtSpot: 8.5.0.cl, 8.8.1-sw
|
|
95
|
+
*/
|
|
96
|
+
enableSearchAssist?: boolean;
|
|
97
|
+
/**
|
|
98
|
+
* If set to true, the embedded object container dynamically resizes
|
|
99
|
+
* according to the height of the pages which support fullHeight mode.
|
|
100
|
+
*
|
|
101
|
+
* @version SDK: 1.21.0 | ThoughtSpot: 9.4.0.cl, 9.4.0-sw
|
|
102
|
+
*/
|
|
103
|
+
fullHeight?: boolean;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Embeds full ThoughtSpot experience in a host application.
|
|
107
|
+
*
|
|
108
|
+
* @group Embed components
|
|
109
|
+
*/
|
|
110
|
+
export declare class AppEmbed extends V1Embed {
|
|
111
|
+
protected viewConfig: AppViewConfig;
|
|
112
|
+
private defaultHeight;
|
|
113
|
+
constructor(domSelector: DOMSelector, viewConfig: AppViewConfig);
|
|
114
|
+
/**
|
|
115
|
+
* Constructs a map of parameters to be passed on to the
|
|
116
|
+
* embedded Liveboard or visualization.
|
|
117
|
+
*/
|
|
118
|
+
protected getEmbedParams(): string;
|
|
119
|
+
/**
|
|
120
|
+
* Constructs the URL of the ThoughtSpot app page to be rendered.
|
|
121
|
+
*
|
|
122
|
+
* @param pageId The ID of the page to be embedded.
|
|
123
|
+
*/
|
|
124
|
+
private getIFrameSrc;
|
|
125
|
+
/**
|
|
126
|
+
* Set the iframe height as per the computed height received
|
|
127
|
+
* from the ThoughtSpot app.
|
|
128
|
+
*
|
|
129
|
+
* @param data The event payload
|
|
130
|
+
*/
|
|
131
|
+
protected updateIFrameHeight: (data: MessagePayload) => void;
|
|
132
|
+
private embedIframeCenter;
|
|
133
|
+
private setIframeHeightForNonEmbedLiveboard;
|
|
134
|
+
/**
|
|
135
|
+
* Gets the ThoughtSpot route of the page for a particular page ID.
|
|
136
|
+
*
|
|
137
|
+
* @param pageId The identifier for a page in the ThoughtSpot app.
|
|
138
|
+
*/
|
|
139
|
+
private getPageRoute;
|
|
140
|
+
/**
|
|
141
|
+
* Formats the path provided by the user.
|
|
142
|
+
*
|
|
143
|
+
* @param path The URL path.
|
|
144
|
+
* @returns The URL path that the embedded app understands.
|
|
145
|
+
*/
|
|
146
|
+
private formatPath;
|
|
147
|
+
/**
|
|
148
|
+
* Navigate to particular page for app embed. eg:answers/pinboards/home
|
|
149
|
+
* This is used for embedding answers, pinboards, visualizations and full application
|
|
150
|
+
* only.
|
|
151
|
+
*
|
|
152
|
+
* @param path string | number The string, set to iframe src and navigate to new page
|
|
153
|
+
* eg: appEmbed.navigateToPage('pinboards')
|
|
154
|
+
* When used with `noReload` (default: true) this can also be a number
|
|
155
|
+
* like 1/-1 to go forward/back.
|
|
156
|
+
* @param noReload boolean Trigger the navigation without reloading the page
|
|
157
|
+
* @version SDK: 1.12.0 | ThoughtSpot: 8.4.0.cl, 8.4.1-sw
|
|
158
|
+
*/
|
|
159
|
+
navigateToPage(path: string | number, noReload?: boolean): void;
|
|
160
|
+
/**
|
|
161
|
+
* Renders the embedded application pages in the ThoughtSpot app.
|
|
162
|
+
*
|
|
163
|
+
* @param renderOptions An object containing the page ID
|
|
164
|
+
* to be embedded.
|
|
165
|
+
*/
|
|
166
|
+
render(): AppEmbed;
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=app.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/embed/app.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EACI,WAAW,EAAa,UAAU,EAAc,cAAc,EACxE,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC;;GAEG;AAEH,oBAAY,IAAI;IACZ;;OAEG;IACH,IAAI,SAAS;IACb;;OAEG;IACH,MAAM,WAAW;IACjB;;OAEG;IACH,OAAO,YAAY;IACnB;;OAEG;IACH,UAAU,eAAe;IACzB;;OAEG;IACH,SAAS,cAAc;IACvB;;OAEG;IACH,IAAI,SAAS;IACb;;OAEG;IACH,MAAM,WAAW;CACpB;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAc,SAAQ,UAAU;IAC7C;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,MAAM,CAAC,EAAE,IAAI,CAAC;IACd;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;;OAKG;IACJ,UAAU,CAAC,EAAC,OAAO,CAAC;CACvB;AAED;;;;GAIG;AACH,qBAAa,QAAS,SAAQ,OAAO;IACjC,SAAS,CAAC,UAAU,EAAE,aAAa,CAAC;IAEpC,OAAO,CAAC,aAAa,CAAU;gBAGnB,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa;IAS/D;;;OAGG;IACH,SAAS,CAAC,cAAc;IAyCxB;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAWpB;;;;;OAKG;IACH,SAAS,CAAC,kBAAkB,SAAU,cAAc,UAEnD;IAED,OAAO,CAAC,iBAAiB,CAGvB;IAEF,OAAO,CAAC,mCAAmC,CAOzC;IAEF;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAoBpB;;;;;OAKG;IACH,OAAO,CAAC,UAAU;IAalB;;;;;;;;;;;OAWG;IACI,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,UAAQ,GAAG,IAAI;IAsBpE;;;;;OAKG;IACI,MAAM,IAAI,QAAQ;CAO5B"}
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) 2022
|
|
4
|
+
*
|
|
5
|
+
* Full application embedding
|
|
6
|
+
* https://developers.thoughtspot.com/docs/?pageid=full-embed
|
|
7
|
+
*
|
|
8
|
+
* @summary Full app embed
|
|
9
|
+
* @module
|
|
10
|
+
* @author Ayon Ghosh <ayon.ghosh@thoughtspot.com>
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.AppEmbed = exports.Page = void 0;
|
|
14
|
+
const utils_1 = require("../utils");
|
|
15
|
+
const types_1 = require("../types");
|
|
16
|
+
const ts_embed_1 = require("./ts-embed");
|
|
17
|
+
/**
|
|
18
|
+
* Pages within the ThoughtSpot app that can be embedded.
|
|
19
|
+
*/
|
|
20
|
+
// eslint-disable-next-line no-shadow
|
|
21
|
+
var Page;
|
|
22
|
+
(function (Page) {
|
|
23
|
+
/**
|
|
24
|
+
* Home page
|
|
25
|
+
*/
|
|
26
|
+
Page["Home"] = "home";
|
|
27
|
+
/**
|
|
28
|
+
* Search page
|
|
29
|
+
*/
|
|
30
|
+
Page["Search"] = "search";
|
|
31
|
+
/**
|
|
32
|
+
* Saved answers listing page
|
|
33
|
+
*/
|
|
34
|
+
Page["Answers"] = "answers";
|
|
35
|
+
/**
|
|
36
|
+
* Liveboards listing page
|
|
37
|
+
*/
|
|
38
|
+
Page["Liveboards"] = "liveboards";
|
|
39
|
+
/**
|
|
40
|
+
* @hidden
|
|
41
|
+
*/
|
|
42
|
+
Page["Pinboards"] = "pinboards";
|
|
43
|
+
/**
|
|
44
|
+
* Data management page
|
|
45
|
+
*/
|
|
46
|
+
Page["Data"] = "data";
|
|
47
|
+
/**
|
|
48
|
+
* SpotIQ listing page
|
|
49
|
+
*/
|
|
50
|
+
Page["SpotIQ"] = "spotiq";
|
|
51
|
+
})(Page = exports.Page || (exports.Page = {}));
|
|
52
|
+
/**
|
|
53
|
+
* Embeds full ThoughtSpot experience in a host application.
|
|
54
|
+
*
|
|
55
|
+
* @group Embed components
|
|
56
|
+
*/
|
|
57
|
+
class AppEmbed extends ts_embed_1.V1Embed {
|
|
58
|
+
// eslint-disable-next-line no-useless-constructor
|
|
59
|
+
constructor(domSelector, viewConfig) {
|
|
60
|
+
super(domSelector, viewConfig);
|
|
61
|
+
this.defaultHeight = '100%';
|
|
62
|
+
/**
|
|
63
|
+
* Set the iframe height as per the computed height received
|
|
64
|
+
* from the ThoughtSpot app.
|
|
65
|
+
*
|
|
66
|
+
* @param data The event payload
|
|
67
|
+
*/
|
|
68
|
+
this.updateIFrameHeight = (data) => {
|
|
69
|
+
var _a;
|
|
70
|
+
this.setIFrameHeight(Math.max(data.data, (_a = this.iFrame) === null || _a === void 0 ? void 0 : _a.scrollHeight));
|
|
71
|
+
};
|
|
72
|
+
this.embedIframeCenter = (data, responder) => {
|
|
73
|
+
const obj = this.getIframeCenter();
|
|
74
|
+
responder({ type: types_1.EmbedEvent.EmbedIframeCenter, data: obj });
|
|
75
|
+
};
|
|
76
|
+
this.setIframeHeightForNonEmbedLiveboard = (data) => {
|
|
77
|
+
const { height: frameHeight, ...restParams } = this.viewConfig.frameParams || {};
|
|
78
|
+
if (!data.data.currentPath.startsWith('/pinboard/')) {
|
|
79
|
+
this.setIFrameHeight(frameHeight || this.defaultHeight);
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
if (this.viewConfig.fullHeight === true) {
|
|
83
|
+
this.on(types_1.EmbedEvent.RouteChange, this.setIframeHeightForNonEmbedLiveboard);
|
|
84
|
+
this.on(types_1.EmbedEvent.EmbedHeight, this.updateIFrameHeight);
|
|
85
|
+
this.on(types_1.EmbedEvent.EmbedIframeCenter, this.embedIframeCenter);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Constructs a map of parameters to be passed on to the
|
|
90
|
+
* embedded Liveboard or visualization.
|
|
91
|
+
*/
|
|
92
|
+
getEmbedParams() {
|
|
93
|
+
const { tag, hideObjects, liveboardV2, showPrimaryNavbar, disableProfileAndHelp, enableSearchAssist, fullHeight, } = this.viewConfig;
|
|
94
|
+
let params = {};
|
|
95
|
+
params[types_1.Param.EmbedApp] = true;
|
|
96
|
+
params[types_1.Param.PrimaryNavHidden] = !showPrimaryNavbar;
|
|
97
|
+
params[types_1.Param.HideProfleAndHelp] = !!disableProfileAndHelp;
|
|
98
|
+
params = this.getBaseQueryParams(params);
|
|
99
|
+
if (fullHeight === true) {
|
|
100
|
+
params[types_1.Param.fullHeight] = true;
|
|
101
|
+
}
|
|
102
|
+
if (tag) {
|
|
103
|
+
params[types_1.Param.Tag] = tag;
|
|
104
|
+
}
|
|
105
|
+
if (hideObjects && hideObjects.length) {
|
|
106
|
+
params[types_1.Param.HideObjects] = JSON.stringify(hideObjects);
|
|
107
|
+
}
|
|
108
|
+
if (liveboardV2 !== undefined) {
|
|
109
|
+
params[types_1.Param.LiveboardV2Enabled] = liveboardV2;
|
|
110
|
+
}
|
|
111
|
+
if (enableSearchAssist !== undefined) {
|
|
112
|
+
params[types_1.Param.EnableSearchAssist] = enableSearchAssist;
|
|
113
|
+
}
|
|
114
|
+
const queryParams = (0, utils_1.getQueryParamString)(params, true);
|
|
115
|
+
return queryParams;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Constructs the URL of the ThoughtSpot app page to be rendered.
|
|
119
|
+
*
|
|
120
|
+
* @param pageId The ID of the page to be embedded.
|
|
121
|
+
*/
|
|
122
|
+
getIFrameSrc() {
|
|
123
|
+
const { pageId, path } = this.viewConfig;
|
|
124
|
+
const pageRoute = this.formatPath(path) || this.getPageRoute(pageId);
|
|
125
|
+
let url = `${this.getRootIframeSrc()}/${pageRoute}`;
|
|
126
|
+
const tsPostHashParams = this.getThoughtSpotPostUrlParams();
|
|
127
|
+
url = `${url}${tsPostHashParams}`;
|
|
128
|
+
return url;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Gets the ThoughtSpot route of the page for a particular page ID.
|
|
132
|
+
*
|
|
133
|
+
* @param pageId The identifier for a page in the ThoughtSpot app.
|
|
134
|
+
*/
|
|
135
|
+
getPageRoute(pageId) {
|
|
136
|
+
switch (pageId) {
|
|
137
|
+
case Page.Search:
|
|
138
|
+
return 'answer';
|
|
139
|
+
case Page.Answers:
|
|
140
|
+
return 'answers';
|
|
141
|
+
case Page.Liveboards:
|
|
142
|
+
return 'pinboards';
|
|
143
|
+
case Page.Pinboards:
|
|
144
|
+
return 'pinboards';
|
|
145
|
+
case Page.Data:
|
|
146
|
+
return 'data/tables';
|
|
147
|
+
case Page.SpotIQ:
|
|
148
|
+
return 'insights/results';
|
|
149
|
+
case Page.Home:
|
|
150
|
+
default:
|
|
151
|
+
return 'home';
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Formats the path provided by the user.
|
|
156
|
+
*
|
|
157
|
+
* @param path The URL path.
|
|
158
|
+
* @returns The URL path that the embedded app understands.
|
|
159
|
+
*/
|
|
160
|
+
formatPath(path) {
|
|
161
|
+
if (!path) {
|
|
162
|
+
return null;
|
|
163
|
+
}
|
|
164
|
+
// remove leading slash
|
|
165
|
+
if (path.indexOf('/') === 0) {
|
|
166
|
+
return path.substring(1);
|
|
167
|
+
}
|
|
168
|
+
return path;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Navigate to particular page for app embed. eg:answers/pinboards/home
|
|
172
|
+
* This is used for embedding answers, pinboards, visualizations and full application
|
|
173
|
+
* only.
|
|
174
|
+
*
|
|
175
|
+
* @param path string | number The string, set to iframe src and navigate to new page
|
|
176
|
+
* eg: appEmbed.navigateToPage('pinboards')
|
|
177
|
+
* When used with `noReload` (default: true) this can also be a number
|
|
178
|
+
* like 1/-1 to go forward/back.
|
|
179
|
+
* @param noReload boolean Trigger the navigation without reloading the page
|
|
180
|
+
* @version SDK: 1.12.0 | ThoughtSpot: 8.4.0.cl, 8.4.1-sw
|
|
181
|
+
*/
|
|
182
|
+
navigateToPage(path, noReload = false) {
|
|
183
|
+
if (!this.iFrame) {
|
|
184
|
+
console.log('Please call render before invoking this method');
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
if (noReload) {
|
|
188
|
+
this.trigger(types_1.HostEvent.Navigate, path);
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
if (typeof path !== 'string') {
|
|
192
|
+
console.warn('Path can only by a string when triggered without noReload');
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
const iframeSrc = this.iFrame.src;
|
|
196
|
+
const embedPath = '#/embed';
|
|
197
|
+
const currentPath = iframeSrc.includes(embedPath) ? embedPath : '#';
|
|
198
|
+
this.iFrame.src = `${iframeSrc.split(currentPath)[0]}${currentPath}/${path.replace(/^\/?#?\//, '')}`;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Renders the embedded application pages in the ThoughtSpot app.
|
|
203
|
+
*
|
|
204
|
+
* @param renderOptions An object containing the page ID
|
|
205
|
+
* to be embedded.
|
|
206
|
+
*/
|
|
207
|
+
render() {
|
|
208
|
+
super.render();
|
|
209
|
+
const src = this.getIFrameSrc();
|
|
210
|
+
this.renderV1Embed(src);
|
|
211
|
+
return this;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
exports.AppEmbed = AppEmbed;
|
|
215
|
+
//# sourceMappingURL=app.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/embed/app.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.spec.d.ts","sourceRoot":"","sources":["../../../src/embed/app.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const app_1 = require("./app");
|
|
5
|
+
const index_1 = require("../index");
|
|
6
|
+
const types_1 = require("../types");
|
|
7
|
+
const test_utils_1 = require("../test/test-utils");
|
|
8
|
+
const config = tslib_1.__importStar(require("../config"));
|
|
9
|
+
const ts_embed_1 = require("./ts-embed");
|
|
10
|
+
const defaultViewConfig = {
|
|
11
|
+
frameParams: {
|
|
12
|
+
width: 1280,
|
|
13
|
+
height: 720,
|
|
14
|
+
},
|
|
15
|
+
};
|
|
16
|
+
const thoughtSpotHost = 'tshost';
|
|
17
|
+
const defaultParamsPost = '';
|
|
18
|
+
beforeAll(() => {
|
|
19
|
+
(0, index_1.init)({
|
|
20
|
+
thoughtSpotHost,
|
|
21
|
+
authType: types_1.AuthType.None,
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
const cleanUp = () => {
|
|
25
|
+
document.body.innerHTML = (0, test_utils_1.getDocumentBody)();
|
|
26
|
+
};
|
|
27
|
+
describe('App embed tests', () => {
|
|
28
|
+
beforeEach(() => {
|
|
29
|
+
cleanUp();
|
|
30
|
+
});
|
|
31
|
+
test('should render home page by default', async () => {
|
|
32
|
+
const appEmbed = new app_1.AppEmbed((0, test_utils_1.getRootEl)(), defaultViewConfig);
|
|
33
|
+
appEmbed.render();
|
|
34
|
+
await (0, test_utils_1.executeAfterWait)(() => {
|
|
35
|
+
(0, test_utils_1.expectUrlMatchesWithParams)((0, test_utils_1.getIFrameSrc)(), `http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=true&profileAndHelpInNavBarHidden=false${test_utils_1.defaultParams}${defaultParamsPost}#/home`);
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
test('should hide the primary nav bar', async () => {
|
|
39
|
+
const appEmbed = new app_1.AppEmbed((0, test_utils_1.getRootEl)(), {
|
|
40
|
+
...defaultViewConfig,
|
|
41
|
+
showPrimaryNavbar: true,
|
|
42
|
+
});
|
|
43
|
+
appEmbed.render();
|
|
44
|
+
await (0, test_utils_1.executeAfterWait)(() => {
|
|
45
|
+
(0, test_utils_1.expectUrlMatchesWithParams)((0, test_utils_1.getIFrameSrc)(), `http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=false&profileAndHelpInNavBarHidden=false${test_utils_1.defaultParams}${defaultParamsPost}#/home`);
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
test('should hide the help and profile buttons from nav bar', async () => {
|
|
49
|
+
const appEmbed = new app_1.AppEmbed((0, test_utils_1.getRootEl)(), {
|
|
50
|
+
...defaultViewConfig,
|
|
51
|
+
disableProfileAndHelp: true,
|
|
52
|
+
});
|
|
53
|
+
appEmbed.render();
|
|
54
|
+
await (0, test_utils_1.executeAfterWait)(() => {
|
|
55
|
+
(0, test_utils_1.expectUrlMatchesWithParams)((0, test_utils_1.getIFrameSrc)(), `http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=true&profileAndHelpInNavBarHidden=true${test_utils_1.defaultParams}${defaultParamsPost}#/home`);
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
describe('should render the correct routes for pages', () => {
|
|
59
|
+
/* eslint-disable no-loop-func */
|
|
60
|
+
const pageRouteMap = {
|
|
61
|
+
[app_1.Page.Search]: 'answer',
|
|
62
|
+
[app_1.Page.Answers]: 'answers',
|
|
63
|
+
[app_1.Page.Pinboards]: 'pinboards',
|
|
64
|
+
[app_1.Page.Liveboards]: 'pinboards',
|
|
65
|
+
[app_1.Page.Data]: 'data/tables',
|
|
66
|
+
[app_1.Page.Home]: 'home',
|
|
67
|
+
[app_1.Page.SpotIQ]: 'insights/results',
|
|
68
|
+
};
|
|
69
|
+
const pageIds = Object.keys(pageRouteMap);
|
|
70
|
+
for (let i = 0; i < pageIds.length; i++) {
|
|
71
|
+
const pageId = pageIds[i];
|
|
72
|
+
test(`${pageId}`, async () => {
|
|
73
|
+
const route = pageRouteMap[pageId];
|
|
74
|
+
const appEmbed = new app_1.AppEmbed((0, test_utils_1.getRootEl)(), {
|
|
75
|
+
...defaultViewConfig,
|
|
76
|
+
pageId: pageId,
|
|
77
|
+
});
|
|
78
|
+
appEmbed.render();
|
|
79
|
+
await (0, test_utils_1.executeAfterWait)(() => {
|
|
80
|
+
(0, test_utils_1.expectUrlMatchesWithParams)((0, test_utils_1.getIFrameSrc)(), `http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=true&profileAndHelpInNavBarHidden=false${test_utils_1.defaultParams}${defaultParamsPost}#/${route}`);
|
|
81
|
+
cleanUp();
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
test('should navigate to a path', async () => {
|
|
87
|
+
const appEmbed = new app_1.AppEmbed((0, test_utils_1.getRootEl)(), {
|
|
88
|
+
...defaultViewConfig,
|
|
89
|
+
path: 'foo/bar',
|
|
90
|
+
});
|
|
91
|
+
appEmbed.render();
|
|
92
|
+
await (0, test_utils_1.executeAfterWait)(() => {
|
|
93
|
+
(0, test_utils_1.expectUrlMatchesWithParams)((0, test_utils_1.getIFrameSrc)(), `http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=true&profileAndHelpInNavBarHidden=false${test_utils_1.defaultParams}${defaultParamsPost}#/foo/bar`);
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
test('should apply runtime filters', async () => {
|
|
97
|
+
const appEmbed = new app_1.AppEmbed((0, test_utils_1.getRootEl)(), {
|
|
98
|
+
...defaultViewConfig,
|
|
99
|
+
showPrimaryNavbar: true,
|
|
100
|
+
runtimeFilters: [
|
|
101
|
+
{
|
|
102
|
+
columnName: 'sales',
|
|
103
|
+
operator: types_1.RuntimeFilterOp.EQ,
|
|
104
|
+
values: [1000],
|
|
105
|
+
},
|
|
106
|
+
],
|
|
107
|
+
});
|
|
108
|
+
appEmbed.render();
|
|
109
|
+
await (0, test_utils_1.executeAfterWait)(() => {
|
|
110
|
+
(0, test_utils_1.expectUrlMatchesWithParams)((0, test_utils_1.getIFrameSrc)(), `http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=false&profileAndHelpInNavBarHidden=false&col1=sales&op1=EQ&val1=1000${test_utils_1.defaultParams}${defaultParamsPost}#/home`);
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
test('should disable and hide actions', async () => {
|
|
114
|
+
const appEmbed = new app_1.AppEmbed((0, test_utils_1.getRootEl)(), {
|
|
115
|
+
...defaultViewConfig,
|
|
116
|
+
showPrimaryNavbar: true,
|
|
117
|
+
disabledActions: [types_1.Action.Save, types_1.Action.Update],
|
|
118
|
+
disabledActionReason: 'Access denied',
|
|
119
|
+
hiddenActions: [types_1.Action.Download],
|
|
120
|
+
});
|
|
121
|
+
appEmbed.render();
|
|
122
|
+
await (0, test_utils_1.executeAfterWait)(() => {
|
|
123
|
+
(0, test_utils_1.expectUrlMatchesWithParams)((0, test_utils_1.getIFrameSrc)(), `http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=false&profileAndHelpInNavBarHidden=false&${test_utils_1.defaultParamsWithoutHiddenActions}&disableAction=[%22save%22,%22update%22]&disableHint=Access%20denied&hideAction=[%22${types_1.Action.ReportError}%22,%22download%22]${defaultParamsPost}#/home`);
|
|
124
|
+
});
|
|
125
|
+
});
|
|
126
|
+
test('Should add the tag to the iframe src', async () => {
|
|
127
|
+
const appEmbed = new app_1.AppEmbed((0, test_utils_1.getRootEl)(), {
|
|
128
|
+
...defaultViewConfig,
|
|
129
|
+
showPrimaryNavbar: false,
|
|
130
|
+
tag: 'Finance',
|
|
131
|
+
});
|
|
132
|
+
appEmbed.render();
|
|
133
|
+
await (0, test_utils_1.executeAfterWait)(() => {
|
|
134
|
+
(0, test_utils_1.expectUrlMatchesWithParams)((0, test_utils_1.getIFrameSrc)(), `http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=true&profileAndHelpInNavBarHidden=false${test_utils_1.defaultParams}&tag=Finance${defaultParamsPost}#/home`);
|
|
135
|
+
});
|
|
136
|
+
});
|
|
137
|
+
test('Should add enableSearchAssist flagto the iframe src', async () => {
|
|
138
|
+
const appEmbed = new app_1.AppEmbed((0, test_utils_1.getRootEl)(), {
|
|
139
|
+
...defaultViewConfig,
|
|
140
|
+
enableSearchAssist: true,
|
|
141
|
+
});
|
|
142
|
+
appEmbed.render();
|
|
143
|
+
await (0, test_utils_1.executeAfterWait)(() => {
|
|
144
|
+
(0, test_utils_1.expectUrlMatchesWithParams)((0, test_utils_1.getIFrameSrc)(), `http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=true&profileAndHelpInNavBarHidden=false&enableSearchAssist=true${test_utils_1.defaultParams}${defaultParamsPost}#/home`);
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
test('should register event handlers to adjust iframe height', async () => {
|
|
148
|
+
const onSpy = jest.spyOn(app_1.AppEmbed.prototype, 'on')
|
|
149
|
+
.mockImplementation((event, callback) => {
|
|
150
|
+
if (event === types_1.EmbedEvent.RouteChange) {
|
|
151
|
+
callback({ data: { currentPath: '/answers' } }, jest.fn());
|
|
152
|
+
}
|
|
153
|
+
if (event === types_1.EmbedEvent.EmbedHeight) {
|
|
154
|
+
callback({ data: '100%' });
|
|
155
|
+
}
|
|
156
|
+
if (event === types_1.EmbedEvent.EmbedIframeCenter) {
|
|
157
|
+
callback({}, jest.fn());
|
|
158
|
+
}
|
|
159
|
+
return null;
|
|
160
|
+
});
|
|
161
|
+
jest.spyOn(ts_embed_1.TsEmbed.prototype, 'getIframeCenter').mockReturnValue({});
|
|
162
|
+
jest.spyOn(ts_embed_1.TsEmbed.prototype, 'setIFrameHeight').mockReturnValue({});
|
|
163
|
+
const appEmbed = new app_1.AppEmbed((0, test_utils_1.getRootEl)(), {
|
|
164
|
+
...defaultViewConfig,
|
|
165
|
+
fullHeight: true,
|
|
166
|
+
});
|
|
167
|
+
appEmbed.render();
|
|
168
|
+
await (0, test_utils_1.executeAfterWait)(() => {
|
|
169
|
+
expect(onSpy).toHaveBeenCalledWith(types_1.EmbedEvent.EmbedHeight, expect.anything());
|
|
170
|
+
expect(onSpy).toHaveBeenCalledWith(types_1.EmbedEvent.RouteChange, expect.anything());
|
|
171
|
+
expect(onSpy).toHaveBeenCalledWith(types_1.EmbedEvent.EmbedIframeCenter, expect.anything());
|
|
172
|
+
});
|
|
173
|
+
jest.clearAllMocks();
|
|
174
|
+
});
|
|
175
|
+
describe('Navigate to Page API', () => {
|
|
176
|
+
const path = 'pinboard/e0836cad-4fdf-42d4-bd97-567a6b2a6058';
|
|
177
|
+
beforeEach(() => {
|
|
178
|
+
jest.spyOn(config, 'getThoughtSpotHost').mockImplementation(() => 'http://tshost');
|
|
179
|
+
});
|
|
180
|
+
test('when app is AppEmbed after navigateToPage function call, new path should be set to iframe', async () => {
|
|
181
|
+
const appEmbed = new app_1.AppEmbed((0, test_utils_1.getRootEl)(), {
|
|
182
|
+
frameParams: {
|
|
183
|
+
width: '100%',
|
|
184
|
+
height: '100%',
|
|
185
|
+
},
|
|
186
|
+
});
|
|
187
|
+
await appEmbed.render();
|
|
188
|
+
appEmbed.navigateToPage(path);
|
|
189
|
+
(0, test_utils_1.expectUrlMatchesWithParams)((0, test_utils_1.getIFrameSrc)(), `http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=true&profileAndHelpInNavBarHidden=false&${test_utils_1.defaultParamsForPinboardEmbed}${defaultParamsPost}#/${path}`);
|
|
190
|
+
});
|
|
191
|
+
test('navigateToPage with noReload should trigger the appropriate event', async () => {
|
|
192
|
+
(0, test_utils_1.mockMessageChannel)();
|
|
193
|
+
const appEmbed = new app_1.AppEmbed((0, test_utils_1.getRootEl)(), {
|
|
194
|
+
frameParams: {
|
|
195
|
+
width: '100%',
|
|
196
|
+
height: '100%',
|
|
197
|
+
},
|
|
198
|
+
});
|
|
199
|
+
await appEmbed.render();
|
|
200
|
+
const iframe = (0, test_utils_1.getIFrameEl)();
|
|
201
|
+
iframe.contentWindow.postMessage = jest.fn();
|
|
202
|
+
appEmbed.navigateToPage(path, true);
|
|
203
|
+
expect(iframe.contentWindow.postMessage).toHaveBeenCalledWith(expect.objectContaining({
|
|
204
|
+
type: types_1.HostEvent.Navigate,
|
|
205
|
+
data: path,
|
|
206
|
+
}), `http://${thoughtSpotHost}`, expect.anything());
|
|
207
|
+
appEmbed.navigateToPage(-1, true);
|
|
208
|
+
expect(iframe.contentWindow.postMessage).toHaveBeenCalledWith(expect.objectContaining({
|
|
209
|
+
type: types_1.HostEvent.Navigate,
|
|
210
|
+
data: -1,
|
|
211
|
+
}), `http://${thoughtSpotHost}`, expect.anything());
|
|
212
|
+
});
|
|
213
|
+
test('Do not allow number path without noReload in navigateToPage', async () => {
|
|
214
|
+
const appEmbed = new app_1.AppEmbed((0, test_utils_1.getRootEl)(), {
|
|
215
|
+
frameParams: {
|
|
216
|
+
width: '100%',
|
|
217
|
+
height: '100%',
|
|
218
|
+
},
|
|
219
|
+
});
|
|
220
|
+
await appEmbed.render();
|
|
221
|
+
spyOn(console, 'warn');
|
|
222
|
+
appEmbed.navigateToPage(-1);
|
|
223
|
+
expect(console.warn).toHaveBeenCalledWith('Path can only by a string when triggered without noReload');
|
|
224
|
+
});
|
|
225
|
+
test('navigateToPage function use before render', async () => {
|
|
226
|
+
spyOn(console, 'log');
|
|
227
|
+
const appEmbed = new app_1.AppEmbed((0, test_utils_1.getRootEl)(), {
|
|
228
|
+
frameParams: {
|
|
229
|
+
width: '100%',
|
|
230
|
+
height: '100%',
|
|
231
|
+
},
|
|
232
|
+
});
|
|
233
|
+
appEmbed.navigateToPage(path);
|
|
234
|
+
await appEmbed.render();
|
|
235
|
+
expect(console.log).toHaveBeenCalledWith('Please call render before invoking this method');
|
|
236
|
+
});
|
|
237
|
+
});
|
|
238
|
+
});
|
|
239
|
+
//# sourceMappingURL=app.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.spec.js","sourceRoot":"","sources":["../../../src/embed/app.spec.ts"],"names":[],"mappings":"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"}
|