@thoughtspot/visual-embed-sdk 1.24.0-preRender.1 → 1.24.0-preRender.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/cjs/package.json +1 -1
- package/cjs/src/embed/app.d.ts +1 -3
- package/cjs/src/embed/app.d.ts.map +1 -1
- package/cjs/src/embed/app.js +2 -8
- package/cjs/src/embed/app.js.map +1 -1
- package/cjs/src/embed/liveboard.d.ts +1 -2
- package/cjs/src/embed/liveboard.d.ts.map +1 -1
- package/cjs/src/embed/liveboard.js +2 -7
- package/cjs/src/embed/liveboard.js.map +1 -1
- package/cjs/src/embed/sage.d.ts +1 -3
- package/cjs/src/embed/sage.d.ts.map +1 -1
- package/cjs/src/embed/sage.js +2 -8
- package/cjs/src/embed/sage.js.map +1 -1
- package/cjs/src/embed/search.d.ts +1 -4
- package/cjs/src/embed/search.d.ts.map +1 -1
- package/cjs/src/embed/search.js +2 -9
- package/cjs/src/embed/search.js.map +1 -1
- package/cjs/src/embed/ts-embed.d.ts +47 -17
- package/cjs/src/embed/ts-embed.d.ts.map +1 -1
- package/cjs/src/embed/ts-embed.js +144 -99
- package/cjs/src/embed/ts-embed.js.map +1 -1
- package/cjs/src/embed/ts-embed.spec.js +102 -0
- package/cjs/src/embed/ts-embed.spec.js.map +1 -1
- package/cjs/src/react/all-types-export.d.ts +1 -1
- package/cjs/src/react/all-types-export.d.ts.map +1 -1
- package/cjs/src/react/all-types-export.js +6 -2
- package/cjs/src/react/all-types-export.js.map +1 -1
- package/cjs/src/react/index.d.ts +103 -5
- package/cjs/src/react/index.d.ts.map +1 -1
- package/cjs/src/react/index.js +81 -1
- package/cjs/src/react/index.js.map +1 -1
- package/cjs/src/react/index.spec.js +22 -0
- package/cjs/src/react/index.spec.js.map +1 -1
- package/cjs/src/types.d.ts +18 -0
- package/cjs/src/types.d.ts.map +1 -1
- package/cjs/src/types.js.map +1 -1
- package/cjs/src/utils.d.ts +27 -0
- package/cjs/src/utils.d.ts.map +1 -1
- package/cjs/src/utils.js +29 -2
- package/cjs/src/utils.js.map +1 -1
- package/cjs/src/utils.spec.d.ts +0 -3
- package/cjs/src/utils.spec.d.ts.map +1 -1
- package/cjs/src/utils.spec.js +59 -6
- package/cjs/src/utils.spec.js.map +1 -1
- package/dist/src/embed/app.d.ts +1 -3
- package/dist/src/embed/app.d.ts.map +1 -1
- package/dist/src/embed/liveboard.d.ts +1 -2
- package/dist/src/embed/liveboard.d.ts.map +1 -1
- package/dist/src/embed/sage.d.ts +1 -3
- package/dist/src/embed/sage.d.ts.map +1 -1
- package/dist/src/embed/search.d.ts +1 -4
- package/dist/src/embed/search.d.ts.map +1 -1
- package/dist/src/embed/ts-embed.d.ts +47 -17
- package/dist/src/embed/ts-embed.d.ts.map +1 -1
- package/dist/src/react/all-types-export.d.ts +1 -1
- package/dist/src/react/all-types-export.d.ts.map +1 -1
- package/dist/src/react/index.d.ts +103 -5
- package/dist/src/react/index.d.ts.map +1 -1
- package/dist/src/types.d.ts +18 -0
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/utils.d.ts +27 -0
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/src/utils.spec.d.ts +0 -3
- package/dist/src/utils.spec.d.ts.map +1 -1
- package/dist/tsembed-react.es.js +263 -135
- package/dist/tsembed-react.js +263 -134
- package/dist/tsembed.es.js +182 -134
- package/dist/tsembed.js +182 -134
- package/dist/visual-embed-sdk-react-full.d.ts +166 -33
- package/dist/visual-embed-sdk-react.d.ts +166 -33
- package/dist/visual-embed-sdk.d.ts +63 -28
- package/lib/package.json +1 -1
- package/lib/src/embed/app.d.ts +1 -3
- package/lib/src/embed/app.d.ts.map +1 -1
- package/lib/src/embed/app.js +2 -8
- package/lib/src/embed/app.js.map +1 -1
- package/lib/src/embed/liveboard.d.ts +1 -2
- package/lib/src/embed/liveboard.d.ts.map +1 -1
- package/lib/src/embed/liveboard.js +2 -7
- package/lib/src/embed/liveboard.js.map +1 -1
- package/lib/src/embed/sage.d.ts +1 -3
- package/lib/src/embed/sage.d.ts.map +1 -1
- package/lib/src/embed/sage.js +2 -8
- package/lib/src/embed/sage.js.map +1 -1
- package/lib/src/embed/search.d.ts +1 -4
- package/lib/src/embed/search.d.ts.map +1 -1
- package/lib/src/embed/search.js +2 -9
- package/lib/src/embed/search.js.map +1 -1
- package/lib/src/embed/ts-embed.d.ts +47 -17
- package/lib/src/embed/ts-embed.d.ts.map +1 -1
- package/lib/src/embed/ts-embed.js +144 -99
- package/lib/src/embed/ts-embed.js.map +1 -1
- package/lib/src/embed/ts-embed.spec.js +102 -0
- package/lib/src/embed/ts-embed.spec.js.map +1 -1
- package/lib/src/react/all-types-export.d.ts +1 -1
- package/lib/src/react/all-types-export.d.ts.map +1 -1
- package/lib/src/react/all-types-export.js +1 -1
- package/lib/src/react/all-types-export.js.map +1 -1
- package/lib/src/react/index.d.ts +103 -5
- package/lib/src/react/index.d.ts.map +1 -1
- package/lib/src/react/index.js +80 -0
- package/lib/src/react/index.js.map +1 -1
- package/lib/src/react/index.spec.js +23 -1
- package/lib/src/react/index.spec.js.map +1 -1
- package/lib/src/types.d.ts +18 -0
- package/lib/src/types.d.ts.map +1 -1
- package/lib/src/types.js.map +1 -1
- package/lib/src/utils.d.ts +27 -0
- package/lib/src/utils.d.ts.map +1 -1
- package/lib/src/utils.js +29 -2
- package/lib/src/utils.js.map +1 -1
- package/lib/src/utils.spec.d.ts +0 -3
- package/lib/src/utils.spec.d.ts.map +1 -1
- package/lib/src/utils.spec.js +60 -7
- package/lib/src/utils.spec.js.map +1 -1
- package/lib/src/visual-embed-sdk.d.ts +63 -28
- package/package.json +1 -1
- package/src/embed/app.ts +6 -11
- package/src/embed/liveboard.ts +2 -10
- package/src/embed/sage.ts +2 -11
- package/src/embed/search.ts +2 -12
- package/src/embed/ts-embed.spec.ts +127 -0
- package/src/embed/ts-embed.ts +170 -128
- package/src/react/all-types-export.ts +5 -1
- package/src/react/index.spec.tsx +42 -1
- package/src/react/index.tsx +120 -17
- package/src/types.ts +19 -0
- package/src/utils.spec.ts +78 -7
- package/src/utils.ts +30 -7
package/dist/tsembed.es.js
CHANGED
|
@@ -262,15 +262,42 @@ function removeTypename(obj) {
|
|
|
262
262
|
}
|
|
263
263
|
return obj;
|
|
264
264
|
}
|
|
265
|
+
/**
|
|
266
|
+
* Sets the specified style properties on an HTML element.
|
|
267
|
+
*
|
|
268
|
+
* @param {HTMLElement} element - The HTML element to which the styles should be applied.
|
|
269
|
+
* @param {Partial<CSSStyleDeclaration>} styleProperties - An object containing style
|
|
270
|
+
* property names and their values.
|
|
271
|
+
* @example
|
|
272
|
+
* // Apply styles to an element
|
|
273
|
+
* const element = document.getElementById('myElement');
|
|
274
|
+
* const styles = {
|
|
275
|
+
* backgroundColor: 'red',
|
|
276
|
+
* fontSize: '16px',
|
|
277
|
+
* };
|
|
278
|
+
* setStyleProperties(element, styles);
|
|
279
|
+
*/
|
|
265
280
|
const setStyleProperties = (element, styleProperties) => {
|
|
266
|
-
if (!element ||
|
|
281
|
+
if (!(element === null || element === void 0 ? void 0 : element.style))
|
|
267
282
|
return;
|
|
268
283
|
Object.keys(styleProperties).forEach((styleProperty) => {
|
|
269
284
|
element.style[styleProperty] = styleProperties[styleProperty].toString();
|
|
270
285
|
});
|
|
271
286
|
};
|
|
287
|
+
/**
|
|
288
|
+
* Removes specified style properties from an HTML element.
|
|
289
|
+
*
|
|
290
|
+
* @param {HTMLElement} element - The HTML element from which the styles should be removed.
|
|
291
|
+
* @param {string[]} styleProperties - An array of style property names to be removed.
|
|
292
|
+
* @example
|
|
293
|
+
* // Remove styles from an element
|
|
294
|
+
* const element = document.getElementById('myElement');
|
|
295
|
+
* element.style.backgroundColor = 'red';
|
|
296
|
+
* const propertiesToRemove = ['backgroundColor'];
|
|
297
|
+
* removeStyleProperties(element, propertiesToRemove);
|
|
298
|
+
*/
|
|
272
299
|
const removeStyleProperties = (element, styleProperties) => {
|
|
273
|
-
if (!element ||
|
|
300
|
+
if (!(element === null || element === void 0 ? void 0 : element.style))
|
|
274
301
|
return;
|
|
275
302
|
styleProperties.forEach((styleProperty) => {
|
|
276
303
|
element.style.removeProperty(styleProperty);
|
|
@@ -11625,7 +11652,7 @@ function processTrigger(iFrame, messageType, thoughtSpotHost, data) {
|
|
|
11625
11652
|
});
|
|
11626
11653
|
}
|
|
11627
11654
|
|
|
11628
|
-
var name="@thoughtspot/visual-embed-sdk";var version="1.24.0-preRender.
|
|
11655
|
+
var name="@thoughtspot/visual-embed-sdk";var version="1.24.0-preRender.3";var description="ThoughtSpot Embed SDK";var module="lib/src/index.js";var main="dist/tsembed.js";var types="lib/src/index.d.ts";var files=["dist/**","lib/**","src/**","cjs/**"];var exports={".":{"import":"./lib/src/index.js",require:"./cjs/src/index.js",types:"./lib/src/index.d.ts"},"./react":{"import":"./lib/src/react/all-types-export.js",require:"./cjs/src/react/all-types-export.js",types:"./lib/src/react/all-types-export.d.ts"},"./lib/src/react":{"import":"./lib/src/react/all-types-export.js",require:"./cjs/src/react/all-types-export.js",types:"./lib/src/react/all-types-export.d.ts"}};var typesVersions={"*":{react:["./lib/src/react/all-types-export.d.ts"]}};var scripts={lint:"eslint 'src/**'","lint:fix":"eslint 'src/**/*.*' --fix",tsc:"tsc -p . --incremental false; tsc -p . --incremental false --module commonjs --outDir cjs",start:"gatsby develop","build:gatsby":"npm run clean:gatsby && gatsby build --prefix-paths","build:gatsby:noprefix":"npm run clean:gatsby && gatsby build","serve:gatsby":"gatsby serve","clean:gatsby":"gatsby clean","build-and-publish":"npm run build:gatsby && npm run publish","bundle-dts-file":"dts-bundle --name @thoughtspot/visual-embed-sdk --out visual-embed-sdk.d.ts --main lib/src/index.d.ts","bundle-dts":"dts-bundle --name ../../dist/visual-embed-sdk --main lib/src/index.d.ts --outputAsModuleFolder=true","bundle-dts-react":"dts-bundle --name ../../../dist/visual-embed-sdk-react --main lib/src/react/index.d.ts --outputAsModuleFolder=true","bundle-dts-react-full":"dts-bundle --name ../../../dist/visual-embed-sdk-react-full --main lib/src/react/all-types-export.d.ts --outputAsModuleFolder=true",build:"rollup -c",watch:"rollup -cw","docs-cmd":"node scripts/gatsby-commands.js",docgen:"typedoc --tsconfig tsconfig.json --theme typedoc-theme","test-sdk":"jest -c jest.config.sdk.js --runInBand","test-docs":"jest -c jest.config.docs.js",test:"npm run test-sdk && npm run test-docs",posttest:"cat ./coverage/sdk/lcov.info | coveralls","is-publish-allowed":"node scripts/is-publish-allowed.js",prepublishOnly:"npm run tsc && npm run bundle-dts-file && npm run bundle-dts && npm run bundle-dts-react && npm run bundle-dts-react-full && npm run build","check-size":"npm run build && size-limit","publish-dev":"npm publish --tag dev","publish-prod":"npm publish --tag latest"};var peerDependencies={react:"> 16.8.0","react-dom":"> 16.8.0"};var dependencies={algoliasearch:"^4.10.5",classnames:"^2.3.1",dompurify:"^2.3.4","eslint-plugin-comment-length":"^0.9.2","eslint-plugin-jsdoc":"^40.1.0",eventemitter3:"^4.0.7","gatsby-plugin-vercel":"^1.0.3","html-react-parser":"^1.4.12",lodash:"^4.17.21","mixpanel-browser":"^2.45.0","ts-deepmerge":"^6.0.2",tslib:"^2.5.3","use-deep-compare-effect":"^1.8.1"};var devDependencies={"@mdx-js/mdx":"^1.6.22","@mdx-js/react":"^1.6.22","@react-icons/all-files":"^4.1.0","@rollup/plugin-commonjs":"^18.0.0","@rollup/plugin-json":"^4.1.0","@rollup/plugin-node-resolve":"^11.2.1","@rollup/plugin-replace":"^5.0.2","@size-limit/preset-big-lib":"^8.2.6","@testing-library/dom":"^7.31.0","@testing-library/jest-dom":"^5.14.1","@testing-library/react":"^11.2.7","@testing-library/user-event":"^13.1.8","@types/jest":"^22.2.3","@types/mixpanel-browser":"^2.35.6","@types/react-test-renderer":"^17.0.1","@typescript-eslint/eslint-plugin":"^4.6.0","@typescript-eslint/parser":"^4.6.0",asciidoctor:"^2.2.1","babel-jest":"^26.6.3","babel-preset-gatsby":"^1.10.0","command-line-args":"^5.1.1",coveralls:"^3.1.0","current-git-branch":"^1.1.0","dts-bundle":"^0.7.3",eslint:"^7.12.1","eslint-config-airbnb-base":"^14.2.0","eslint-config-prettier":"^6.15.0","eslint-import-resolver-typescript":"^2.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-prettier":"^3.1.4","eslint-plugin-react-hooks":"^4.2.0","fs-extra":"^10.0.0",gatsby:"3.13.1","gatsby-plugin-algolia":"^0.22.2","gatsby-plugin-catch-links":"^3.1.0","gatsby-plugin-env-variables":"^2.1.0","gatsby-plugin-intl":"^0.3.3","gatsby-plugin-manifest":"^3.2.0","gatsby-plugin-output":"^0.1.3","gatsby-plugin-sass":"6.7.0","gatsby-plugin-sitemap":"^4.10.0","gatsby-source-filesystem":"3.1.0","gatsby-transformer-asciidoc":"2.1.0","gatsby-transformer-rehype":"2.0.0","gh-pages":"^3.1.0","highlight.js":"^10.6.0","html-to-text":"^8.0.0","identity-obj-proxy":"^3.0.0","istanbul-merge":"^1.1.1",jest:"^26.6.3","jest-fetch-mock":"^3.0.3",jsdom:"^17.0.0","node-sass":"^8.0.0",prettier:"2.1.2",react:"^16.14.0","react-dom":"^16.14.0","react-resizable":"^1.11.0","react-resize-detector":"^6.6.0","react-test-renderer":"^17.0.2","react-use-flexsearch":"^0.1.1",rollup:"2.30.0","rollup-plugin-typescript2":"0.27.3","ts-jest":"^26.5.5","ts-loader":"8.0.4",typedoc:"0.21.6","typedoc-plugin-toc-group":"thoughtspot/typedoc-plugin-toc-group",typescript:"^4.9.4","url-search-params-polyfill":"^8.1.0",util:"^0.12.4"};var author="ThoughtSpot";var email="support@thoughtspot.com";var license="ThoughtSpot Development Tools End User License Agreement";var directories={lib:"lib"};var repository={type:"git",url:"git+https://github.com/thoughtspot/visual-embed-sdk.git"};var publishConfig={registry:"https://registry.npmjs.org"};var keywords=["thoughtspot","everywhere","embed","sdk","analytics"];var bugs={url:"https://github.com/thoughtspot/visual-embed-sdk/issues"};var homepage="https://github.com/thoughtspot/visual-embed-sdk#readme";var globals={window:{}};var pkgInfo = {name:name,version:version,description:description,module:module,main:main,types:types,files:files,exports:exports,typesVersions:typesVersions,"size-limit":[{path:"dist/tsembed.js",limit:"40 kB"}],scripts:scripts,peerDependencies:peerDependencies,dependencies:dependencies,devDependencies:devDependencies,author:author,email:email,license:license,directories:directories,repository:repository,publishConfig:publishConfig,keywords:keywords,bugs:bugs,homepage:homepage,globals:globals};
|
|
11629
11656
|
|
|
11630
11657
|
/**
|
|
11631
11658
|
* Copyright (c) 2022
|
|
@@ -11725,6 +11752,7 @@ class TsEmbed {
|
|
|
11725
11752
|
this.on(EmbedEvent.APP_INIT, this.appInitCb, { start: false }, true);
|
|
11726
11753
|
this.on(EmbedEvent.AuthExpire, this.updateAuthToken, { start: false }, true);
|
|
11727
11754
|
};
|
|
11755
|
+
this.showPreRenderByDefault = false;
|
|
11728
11756
|
this.el = getDOMNode(domSelector);
|
|
11729
11757
|
// TODO: handle error
|
|
11730
11758
|
this.embedConfig = getEmbedConfig();
|
|
@@ -12011,12 +12039,12 @@ class TsEmbed {
|
|
|
12011
12039
|
iFrame.name = 'ThoughtSpot Embedded Analytics';
|
|
12012
12040
|
return iFrame;
|
|
12013
12041
|
}
|
|
12014
|
-
handleInsertionIntoDOM(child
|
|
12042
|
+
handleInsertionIntoDOM(child) {
|
|
12015
12043
|
if (this.isPreRendered) {
|
|
12016
|
-
this.insertIntoDOMForPreRender(
|
|
12044
|
+
this.insertIntoDOMForPreRender(child);
|
|
12017
12045
|
}
|
|
12018
12046
|
else {
|
|
12019
|
-
this.insertIntoDOM(
|
|
12047
|
+
this.insertIntoDOM(child);
|
|
12020
12048
|
}
|
|
12021
12049
|
}
|
|
12022
12050
|
/**
|
|
@@ -12024,9 +12052,8 @@ class TsEmbed {
|
|
|
12024
12052
|
* event listeners.
|
|
12025
12053
|
*
|
|
12026
12054
|
* @param url - The URL of the embedded ThoughtSpot app.
|
|
12027
|
-
* @param showPreRenderByDefault - The flag to show the preRender by default.
|
|
12028
12055
|
*/
|
|
12029
|
-
async renderIFrame(url
|
|
12056
|
+
async renderIFrame(url) {
|
|
12030
12057
|
if (this.isError) {
|
|
12031
12058
|
return null;
|
|
12032
12059
|
}
|
|
@@ -12046,7 +12073,7 @@ class TsEmbed {
|
|
|
12046
12073
|
uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_RENDER_START);
|
|
12047
12074
|
return (_a = getAuthPromise()) === null || _a === void 0 ? void 0 : _a.then((isLoggedIn) => {
|
|
12048
12075
|
if (!isLoggedIn) {
|
|
12049
|
-
this.handleInsertionIntoDOM(this.embedConfig.loginFailedMessage
|
|
12076
|
+
this.handleInsertionIntoDOM(this.embedConfig.loginFailedMessage);
|
|
12050
12077
|
return;
|
|
12051
12078
|
}
|
|
12052
12079
|
this.iFrame = this.iFrame || this.createIframeEl(url);
|
|
@@ -12068,7 +12095,7 @@ class TsEmbed {
|
|
|
12068
12095
|
this.iFrame.addEventListener('error', () => {
|
|
12069
12096
|
nextInQueue();
|
|
12070
12097
|
});
|
|
12071
|
-
this.handleInsertionIntoDOM(this.iFrame
|
|
12098
|
+
this.handleInsertionIntoDOM(this.iFrame);
|
|
12072
12099
|
const prefetchIframe = document.querySelectorAll('.prefetchIframe');
|
|
12073
12100
|
if (prefetchIframe.length) {
|
|
12074
12101
|
prefetchIframe.forEach((el) => {
|
|
@@ -12086,45 +12113,28 @@ class TsEmbed {
|
|
|
12086
12113
|
});
|
|
12087
12114
|
});
|
|
12088
12115
|
}
|
|
12089
|
-
|
|
12090
|
-
|
|
12091
|
-
wrapper: `tsEmbed-pre-render-wrapper-${this.viewConfig.preRenderId}`,
|
|
12092
|
-
shield: `tsEmbed-pre-render-shield-${this.viewConfig.preRenderId}`,
|
|
12093
|
-
child: `tsEmbed-pre-render-child-${this.viewConfig.preRenderId}`,
|
|
12094
|
-
};
|
|
12095
|
-
}
|
|
12096
|
-
createPreRenderWrapper(child) {
|
|
12116
|
+
createPreRenderWrapper() {
|
|
12117
|
+
var _a;
|
|
12097
12118
|
if (!this.viewConfig.preRenderId) {
|
|
12098
|
-
throw new Error('PreRender id is required');
|
|
12119
|
+
throw new Error('PreRender id is required to create PreRender wrapper');
|
|
12099
12120
|
}
|
|
12100
12121
|
const preRenderIds = this.getPreRenderIds();
|
|
12101
|
-
|
|
12102
|
-
.map((id) => document.getElementById(id))
|
|
12103
|
-
.filter((element) => element)
|
|
12104
|
-
.forEach((existingElement) => existingElement.remove());
|
|
12122
|
+
(_a = document.getElementById(preRenderIds.wrapper)) === null || _a === void 0 ? void 0 : _a.remove();
|
|
12105
12123
|
const preRenderWrapper = document.createElement('div');
|
|
12106
12124
|
preRenderWrapper.id = preRenderIds.wrapper;
|
|
12107
|
-
|
|
12108
|
-
|
|
12109
|
-
|
|
12110
|
-
|
|
12111
|
-
|
|
12112
|
-
|
|
12113
|
-
preRenderWrapper.appendChild(child);
|
|
12114
|
-
// preRenderWrapper.appendChild(preRenderShield);
|
|
12115
|
-
this.preRenderWrapper = preRenderWrapper;
|
|
12116
|
-
// this.preRenderShield = preRenderShield;
|
|
12117
|
-
this.preRenderChild = child;
|
|
12125
|
+
const initialPreRenderWrapperStyle = {
|
|
12126
|
+
position: 'absolute',
|
|
12127
|
+
width: '100vw',
|
|
12128
|
+
height: '100vh',
|
|
12129
|
+
};
|
|
12130
|
+
setStyleProperties(preRenderWrapper, initialPreRenderWrapperStyle);
|
|
12118
12131
|
return preRenderWrapper;
|
|
12119
12132
|
}
|
|
12120
12133
|
connectPreRendered() {
|
|
12121
12134
|
const preRenderIds = this.getPreRenderIds();
|
|
12122
12135
|
this.preRenderWrapper = this.preRenderWrapper
|
|
12123
12136
|
|| document.getElementById(preRenderIds.wrapper);
|
|
12124
|
-
|
|
12125
|
-
// || document.getElementById(preRenderIds.shield);
|
|
12126
|
-
this.preRenderChild = this.preRenderChild
|
|
12127
|
-
|| document.getElementById(preRenderIds.child);
|
|
12137
|
+
this.preRenderChild = this.preRenderChild || document.getElementById(preRenderIds.child);
|
|
12128
12138
|
if (this.preRenderWrapper && this.preRenderChild) {
|
|
12129
12139
|
this.isPreRendered = true;
|
|
12130
12140
|
this.iFrame = this.preRenderChild;
|
|
@@ -12132,79 +12142,45 @@ class TsEmbed {
|
|
|
12132
12142
|
return this.isPreRenderAvailable();
|
|
12133
12143
|
}
|
|
12134
12144
|
isPreRenderAvailable() {
|
|
12135
|
-
return this.isPreRendered;
|
|
12145
|
+
return this.isPreRendered && Boolean(this.preRenderWrapper && this.preRenderChild);
|
|
12136
12146
|
}
|
|
12137
|
-
|
|
12138
|
-
|
|
12147
|
+
createPreRenderChild(child) {
|
|
12148
|
+
var _a;
|
|
12149
|
+
const preRenderIds = this.getPreRenderIds();
|
|
12150
|
+
(_a = document.getElementById(preRenderIds.child)) === null || _a === void 0 ? void 0 : _a.remove();
|
|
12151
|
+
if (child instanceof HTMLElement) {
|
|
12152
|
+
child.id = preRenderIds.child;
|
|
12153
|
+
return child;
|
|
12154
|
+
}
|
|
12155
|
+
const divChildNode = document.createElement('div');
|
|
12156
|
+
setStyleProperties(divChildNode, { width: '100%', height: '100%' });
|
|
12157
|
+
divChildNode.id = preRenderIds.child;
|
|
12139
12158
|
if (typeof child === 'string') {
|
|
12140
|
-
const divChildNode = document.createElement('div');
|
|
12141
12159
|
divChildNode.innerHTML = child;
|
|
12142
|
-
childNode = divChildNode;
|
|
12143
12160
|
}
|
|
12144
12161
|
else {
|
|
12145
|
-
|
|
12162
|
+
divChildNode.appendChild(child);
|
|
12163
|
+
}
|
|
12164
|
+
return divChildNode;
|
|
12165
|
+
}
|
|
12166
|
+
insertIntoDOMForPreRender(child) {
|
|
12167
|
+
const preRenderChild = this.createPreRenderChild(child);
|
|
12168
|
+
const preRenderWrapper = this.createPreRenderWrapper();
|
|
12169
|
+
preRenderWrapper.appendChild(preRenderChild);
|
|
12170
|
+
this.preRenderChild = preRenderChild;
|
|
12171
|
+
this.preRenderWrapper = preRenderWrapper;
|
|
12172
|
+
if (preRenderChild instanceof HTMLIFrameElement) {
|
|
12173
|
+
this.iFrame = preRenderChild;
|
|
12146
12174
|
}
|
|
12147
|
-
|
|
12148
|
-
if (showPreRenderByDefault) {
|
|
12175
|
+
if (this.showPreRenderByDefault) {
|
|
12149
12176
|
this.showPreRender();
|
|
12150
12177
|
}
|
|
12151
12178
|
else {
|
|
12152
12179
|
this.hidePreRender();
|
|
12153
12180
|
}
|
|
12181
|
+
this.insertedDomEl = preRenderWrapper;
|
|
12154
12182
|
document.body.appendChild(preRenderWrapper);
|
|
12155
12183
|
}
|
|
12156
|
-
hidePreRender() {
|
|
12157
|
-
if (!this.isPreRenderAvailable()) {
|
|
12158
|
-
// if the embed component is not preRendered , nothing to hide
|
|
12159
|
-
console.log('No preRender found, not hiding ');
|
|
12160
|
-
return;
|
|
12161
|
-
}
|
|
12162
|
-
setStyleProperties(this.preRenderWrapper, {
|
|
12163
|
-
opacity: '0',
|
|
12164
|
-
pointerEvents: 'none',
|
|
12165
|
-
zIndex: '-1000',
|
|
12166
|
-
position: 'absolute ',
|
|
12167
|
-
top: '0',
|
|
12168
|
-
left: '0',
|
|
12169
|
-
});
|
|
12170
|
-
const childBoundingRect = this.preRenderChild.getBoundingClientRect();
|
|
12171
|
-
// setStyleProperties(this.preRenderShield, {
|
|
12172
|
-
// opacity: '0',
|
|
12173
|
-
// pointerEvents: 'none',
|
|
12174
|
-
// zIndex: '1',
|
|
12175
|
-
// width: `${childBoundingRect.width}px`,
|
|
12176
|
-
// height: `${childBoundingRect.height}px`,
|
|
12177
|
-
// position: 'absolute',
|
|
12178
|
-
// top: '0',
|
|
12179
|
-
// left: '0',
|
|
12180
|
-
// });
|
|
12181
|
-
this.unsubscribeToEvents();
|
|
12182
|
-
}
|
|
12183
|
-
showPreRender() {
|
|
12184
|
-
if (!this.isPreRenderAvailable()) {
|
|
12185
|
-
const isAvailable = this.connectPreRendered();
|
|
12186
|
-
if (!isAvailable) {
|
|
12187
|
-
// if the Embed component is nor preRendered , Render it now and
|
|
12188
|
-
// show it (hide is defalt behaviour)
|
|
12189
|
-
console.log('No preRender found, creating new ');
|
|
12190
|
-
this.preRender(true);
|
|
12191
|
-
return;
|
|
12192
|
-
}
|
|
12193
|
-
}
|
|
12194
|
-
this.syncPreRenderStyle();
|
|
12195
|
-
removeStyleProperties(this.preRenderWrapper, ['z-index', 'opacity', 'pointer-events']);
|
|
12196
|
-
// setStyleProperties(this.preRenderShield, { zIndex: '-1' });
|
|
12197
|
-
this.subscribeToEvents();
|
|
12198
|
-
}
|
|
12199
|
-
syncPreRenderStyle() {
|
|
12200
|
-
if (!this.el) {
|
|
12201
|
-
throw new Error('Embed element is not defined');
|
|
12202
|
-
}
|
|
12203
|
-
const elBoundingClient = this.el.getBoundingClientRect();
|
|
12204
|
-
setStyleProperties(this.preRenderWrapper, {
|
|
12205
|
-
top: `${elBoundingClient.y}px`, left: `${elBoundingClient.x}px`, width: `${elBoundingClient.width}px`, height: `${elBoundingClient.height}px`,
|
|
12206
|
-
});
|
|
12207
|
-
}
|
|
12208
12184
|
insertIntoDOM(child) {
|
|
12209
12185
|
var _a;
|
|
12210
12186
|
if (this.viewConfig.insertAsSibling) {
|
|
@@ -12422,10 +12398,16 @@ class TsEmbed {
|
|
|
12422
12398
|
/**
|
|
12423
12399
|
* Creates the preRender shell
|
|
12424
12400
|
*
|
|
12425
|
-
* @param showPreRenderByDefault
|
|
12401
|
+
* @param showPreRenderByDefault - Show the preRender after render, hidden by default
|
|
12426
12402
|
*/
|
|
12427
12403
|
preRender(showPreRenderByDefault = false) {
|
|
12404
|
+
if (!this.viewConfig.preRenderId) {
|
|
12405
|
+
console.error('PreRender id is required for preRender');
|
|
12406
|
+
return this;
|
|
12407
|
+
}
|
|
12428
12408
|
this.isPreRendered = true;
|
|
12409
|
+
this.showPreRenderByDefault = showPreRenderByDefault;
|
|
12410
|
+
this.render();
|
|
12429
12411
|
return this;
|
|
12430
12412
|
}
|
|
12431
12413
|
/**
|
|
@@ -12484,6 +12466,97 @@ class TsEmbed {
|
|
|
12484
12466
|
const prerenderFrameSrc = this.getRootIframeSrc();
|
|
12485
12467
|
return this.renderIFrame(prerenderFrameSrc);
|
|
12486
12468
|
}
|
|
12469
|
+
/**
|
|
12470
|
+
* Displays the PreRender component.
|
|
12471
|
+
* If the component is not preRendered, it attempts to create and render it.
|
|
12472
|
+
* Also, synchronizes the style of the PreRender component with the embedding
|
|
12473
|
+
* element.
|
|
12474
|
+
*/
|
|
12475
|
+
showPreRender() {
|
|
12476
|
+
if (!this.isPreRenderAvailable()) {
|
|
12477
|
+
const isAvailable = this.connectPreRendered();
|
|
12478
|
+
if (!isAvailable) {
|
|
12479
|
+
// if the Embed component is not preRendered , Render it now and
|
|
12480
|
+
this.preRender(true);
|
|
12481
|
+
return;
|
|
12482
|
+
}
|
|
12483
|
+
}
|
|
12484
|
+
if (this.el) {
|
|
12485
|
+
this.syncPreRenderStyle();
|
|
12486
|
+
this.resizeObserver = new ResizeObserver((entries) => {
|
|
12487
|
+
entries.forEach((entry) => {
|
|
12488
|
+
if (entry.contentRect && entry.target === this.el) {
|
|
12489
|
+
setStyleProperties(this.preRenderWrapper, {
|
|
12490
|
+
width: `${entry.contentRect.width}px`,
|
|
12491
|
+
height: `${entry.contentRect.height}px`,
|
|
12492
|
+
});
|
|
12493
|
+
}
|
|
12494
|
+
});
|
|
12495
|
+
});
|
|
12496
|
+
this.resizeObserver.observe(this.el);
|
|
12497
|
+
}
|
|
12498
|
+
removeStyleProperties(this.preRenderWrapper, ['z-index', 'opacity', 'pointer-events']);
|
|
12499
|
+
this.subscribeToEvents();
|
|
12500
|
+
}
|
|
12501
|
+
/**
|
|
12502
|
+
* Synchronizes the style properties of the PreRender component with the embedding
|
|
12503
|
+
* element. This function adjusts the position, width, and height of the PreRender
|
|
12504
|
+
* component
|
|
12505
|
+
* to match the dimensions and position of the embedding element.
|
|
12506
|
+
*
|
|
12507
|
+
* @throws {Error} Throws an error if the embedding element (passed as domSelector)
|
|
12508
|
+
* is not defined or not found.
|
|
12509
|
+
*/
|
|
12510
|
+
syncPreRenderStyle() {
|
|
12511
|
+
if (!this.el) {
|
|
12512
|
+
throw new Error('Embed element is not defined');
|
|
12513
|
+
}
|
|
12514
|
+
const elBoundingClient = this.el.getBoundingClientRect();
|
|
12515
|
+
setStyleProperties(this.preRenderWrapper, {
|
|
12516
|
+
top: `${elBoundingClient.y}px`,
|
|
12517
|
+
left: `${elBoundingClient.x}px`,
|
|
12518
|
+
width: `${elBoundingClient.width}px`,
|
|
12519
|
+
height: `${elBoundingClient.height}px`,
|
|
12520
|
+
});
|
|
12521
|
+
}
|
|
12522
|
+
/**
|
|
12523
|
+
* Hides the PreRender component if it is available.
|
|
12524
|
+
* If the component is not preRendered, it issues a warning.
|
|
12525
|
+
*/
|
|
12526
|
+
hidePreRender() {
|
|
12527
|
+
if (!this.isPreRenderAvailable()) {
|
|
12528
|
+
// if the embed component is not preRendered , nothing to hide
|
|
12529
|
+
console.warn('Warning: You should call PreRender before hiding it using hidePreRender.');
|
|
12530
|
+
return;
|
|
12531
|
+
}
|
|
12532
|
+
const preRenderHideStyles = {
|
|
12533
|
+
opacity: '0',
|
|
12534
|
+
pointerEvents: 'none',
|
|
12535
|
+
zIndex: '-1000',
|
|
12536
|
+
position: 'absolute ',
|
|
12537
|
+
top: '0',
|
|
12538
|
+
left: '0',
|
|
12539
|
+
};
|
|
12540
|
+
setStyleProperties(this.preRenderWrapper, preRenderHideStyles);
|
|
12541
|
+
if (this.resizeObserver) {
|
|
12542
|
+
this.resizeObserver.disconnect();
|
|
12543
|
+
}
|
|
12544
|
+
this.unsubscribeToEvents();
|
|
12545
|
+
}
|
|
12546
|
+
/**
|
|
12547
|
+
* Retrieves unique HTML element IDs for PreRender-related elements.
|
|
12548
|
+
* These IDs are constructed based on the provided 'preRenderId' from 'viewConfig'.
|
|
12549
|
+
*
|
|
12550
|
+
* @returns {object} An object containing the IDs for the PreRender elements.
|
|
12551
|
+
* @property {string} wrapper - The HTML element ID for the PreRender wrapper.
|
|
12552
|
+
* @property {string} child - The HTML element ID for the PreRender child.
|
|
12553
|
+
*/
|
|
12554
|
+
getPreRenderIds() {
|
|
12555
|
+
return {
|
|
12556
|
+
wrapper: `tsEmbed-pre-render-wrapper-${this.viewConfig.preRenderId}`,
|
|
12557
|
+
child: `tsEmbed-pre-render-child-${this.viewConfig.preRenderId}`,
|
|
12558
|
+
};
|
|
12559
|
+
}
|
|
12487
12560
|
}
|
|
12488
12561
|
/**
|
|
12489
12562
|
* Base class for embedding v1 experience
|
|
@@ -12501,10 +12574,9 @@ class V1Embed extends TsEmbed {
|
|
|
12501
12574
|
* Render the app in an iframe and set up event handlers
|
|
12502
12575
|
*
|
|
12503
12576
|
* @param iframeSrc
|
|
12504
|
-
* @param showPreRenderByDefault - if true the preRender will be shown by default
|
|
12505
12577
|
*/
|
|
12506
|
-
renderV1Embed(iframeSrc
|
|
12507
|
-
return this.renderIFrame(iframeSrc
|
|
12578
|
+
renderV1Embed(iframeSrc) {
|
|
12579
|
+
return this.renderIFrame(iframeSrc);
|
|
12508
12580
|
}
|
|
12509
12581
|
getRootIframeSrc() {
|
|
12510
12582
|
const queryParams = this.getEmbedParams();
|
|
@@ -12747,17 +12819,11 @@ class AppEmbed extends V1Embed {
|
|
|
12747
12819
|
*
|
|
12748
12820
|
* @param renderOptions An object containing the page ID
|
|
12749
12821
|
* to be embedded.
|
|
12750
|
-
* @param showPreRenderByDefault
|
|
12751
12822
|
*/
|
|
12752
|
-
render(
|
|
12823
|
+
render() {
|
|
12753
12824
|
super.render();
|
|
12754
12825
|
const src = this.getIFrameSrc();
|
|
12755
|
-
this.renderV1Embed(src
|
|
12756
|
-
return this;
|
|
12757
|
-
}
|
|
12758
|
-
preRender(showPreRenderByDefault = false) {
|
|
12759
|
-
super.preRender(showPreRenderByDefault);
|
|
12760
|
-
this.render(showPreRenderByDefault);
|
|
12826
|
+
this.renderV1Embed(src);
|
|
12761
12827
|
return this;
|
|
12762
12828
|
}
|
|
12763
12829
|
}
|
|
@@ -12914,15 +12980,10 @@ class LiveboardEmbed extends V1Embed {
|
|
|
12914
12980
|
* @param renderOptions An object specifying the Liveboard ID,
|
|
12915
12981
|
* visualization ID and the runtime filters.
|
|
12916
12982
|
*/
|
|
12917
|
-
render(
|
|
12983
|
+
render() {
|
|
12918
12984
|
super.render();
|
|
12919
12985
|
const src = this.getIFrameSrc();
|
|
12920
|
-
this.renderV1Embed(src
|
|
12921
|
-
return this;
|
|
12922
|
-
}
|
|
12923
|
-
preRender(showPreRenderByDefault = false) {
|
|
12924
|
-
super.preRender(showPreRenderByDefault);
|
|
12925
|
-
this.render(showPreRenderByDefault);
|
|
12986
|
+
this.renderV1Embed(src);
|
|
12926
12987
|
return this;
|
|
12927
12988
|
}
|
|
12928
12989
|
navigateToLiveboard(liveboardId, vizId, activeTabId) {
|
|
@@ -13048,14 +13109,12 @@ class SearchEmbed extends TsEmbed {
|
|
|
13048
13109
|
}
|
|
13049
13110
|
/**
|
|
13050
13111
|
* Render the embedded ThoughtSpot search
|
|
13051
|
-
*
|
|
13052
|
-
* @param showPreRenderByDefault
|
|
13053
13112
|
*/
|
|
13054
|
-
render(
|
|
13113
|
+
render() {
|
|
13055
13114
|
super.render();
|
|
13056
13115
|
const { answerId } = this.viewConfig;
|
|
13057
13116
|
const src = this.getIFrameSrc(answerId);
|
|
13058
|
-
this.renderIFrame(src
|
|
13117
|
+
this.renderIFrame(src);
|
|
13059
13118
|
getAuthPromise().then(() => {
|
|
13060
13119
|
if (checkReleaseVersionInBeta(getReleaseVersion(), getEmbedConfig().suppressSearchEmbedBetaWarning)) {
|
|
13061
13120
|
alert(ERROR_MESSAGE.SEARCHEMBED_BETA_WRANING_MESSAGE);
|
|
@@ -13063,11 +13122,6 @@ class SearchEmbed extends TsEmbed {
|
|
|
13063
13122
|
});
|
|
13064
13123
|
return this;
|
|
13065
13124
|
}
|
|
13066
|
-
preRender(showPreRenderByDefault = false) {
|
|
13067
|
-
super.preRender(showPreRenderByDefault);
|
|
13068
|
-
this.render(showPreRenderByDefault);
|
|
13069
|
-
return this;
|
|
13070
|
-
}
|
|
13071
13125
|
}
|
|
13072
13126
|
|
|
13073
13127
|
/**
|
|
@@ -13210,18 +13264,12 @@ class SageEmbed extends V1Embed {
|
|
|
13210
13264
|
/**
|
|
13211
13265
|
* Render the embedded ThoughtSpot Sage
|
|
13212
13266
|
*
|
|
13213
|
-
* @param showPreRenderByDefault
|
|
13214
13267
|
* @returns {SageEmbed} Eureka/Sage embed
|
|
13215
13268
|
*/
|
|
13216
|
-
render(
|
|
13269
|
+
render() {
|
|
13217
13270
|
super.render();
|
|
13218
13271
|
const src = this.getIFrameSrc();
|
|
13219
|
-
this.renderV1Embed(src
|
|
13220
|
-
return this;
|
|
13221
|
-
}
|
|
13222
|
-
preRender(showPreRenderByDefault = false) {
|
|
13223
|
-
super.preRender(showPreRenderByDefault);
|
|
13224
|
-
this.render(showPreRenderByDefault);
|
|
13272
|
+
this.renderV1Embed(src);
|
|
13225
13273
|
return this;
|
|
13226
13274
|
}
|
|
13227
13275
|
}
|