@thoughtspot/visual-embed-sdk 1.24.0-alpha.7 → 1.24.0-dev
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 +2 -2
- package/cjs/src/embed/liveboard.d.ts +1 -0
- package/cjs/src/embed/liveboard.d.ts.map +1 -1
- package/cjs/src/embed/liveboard.js +5 -0
- package/cjs/src/embed/liveboard.js.map +1 -1
- package/cjs/src/embed/ts-embed.d.ts +19 -0
- package/cjs/src/embed/ts-embed.d.ts.map +1 -1
- package/cjs/src/embed/ts-embed.js +131 -4
- package/cjs/src/embed/ts-embed.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 +2 -1
- package/cjs/src/react/all-types-export.js.map +1 -1
- package/cjs/src/react/index.d.ts +1 -0
- package/cjs/src/react/index.d.ts.map +1 -1
- package/cjs/src/react/index.js +18 -4
- package/cjs/src/react/index.js.map +1 -1
- package/cjs/src/types.d.ts +9 -0
- package/cjs/src/types.d.ts.map +1 -1
- package/cjs/src/types.js.map +1 -1
- package/cjs/src/utils.d.ts +2 -0
- package/cjs/src/utils.d.ts.map +1 -1
- package/cjs/src/utils.js +17 -1
- package/cjs/src/utils.js.map +1 -1
- package/dist/src/embed/liveboard.d.ts +1 -0
- package/dist/src/embed/liveboard.d.ts.map +1 -1
- package/dist/src/embed/ts-embed.d.ts +19 -0
- 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 +1 -0
- package/dist/src/react/index.d.ts.map +1 -1
- package/dist/src/types.d.ts +9 -0
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/utils.d.ts +2 -0
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/tsembed-react.es.js +171 -11
- package/dist/tsembed-react.js +171 -10
- package/dist/tsembed.es.js +152 -6
- package/dist/tsembed.js +152 -6
- package/dist/visual-embed-sdk-react-full.d.ts +29 -0
- package/dist/visual-embed-sdk-react.d.ts +29 -0
- package/dist/visual-embed-sdk.d.ts +28 -0
- package/lib/package.json +2 -2
- package/lib/src/embed/liveboard.d.ts +1 -0
- package/lib/src/embed/liveboard.d.ts.map +1 -1
- package/lib/src/embed/liveboard.js +5 -0
- package/lib/src/embed/liveboard.js.map +1 -1
- package/lib/src/embed/ts-embed.d.ts +19 -0
- package/lib/src/embed/ts-embed.d.ts.map +1 -1
- package/lib/src/embed/ts-embed.js +132 -5
- package/lib/src/embed/ts-embed.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 +1 -0
- package/lib/src/react/index.d.ts.map +1 -1
- package/lib/src/react/index.js +17 -3
- package/lib/src/react/index.js.map +1 -1
- package/lib/src/types.d.ts +9 -0
- package/lib/src/types.d.ts.map +1 -1
- package/lib/src/types.js.map +1 -1
- package/lib/src/utils.d.ts +2 -0
- package/lib/src/utils.d.ts.map +1 -1
- package/lib/src/utils.js +14 -0
- package/lib/src/utils.js.map +1 -1
- package/lib/src/visual-embed-sdk.d.ts +28 -0
- package/package.json +5 -5
- package/src/embed/liveboard.ts +8 -0
- package/src/embed/ts-embed.ts +169 -12
- package/src/react/all-types-export.ts +1 -0
- package/src/react/index.tsx +25 -8
- package/src/types.ts +10 -0
- package/src/utils.ts +20 -0
package/dist/tsembed-react.es.js
CHANGED
|
@@ -352,7 +352,21 @@ const getRuntimeFilters = (runtimefilters) => getFilterQuery(runtimefilters || [
|
|
|
352
352
|
function getDOMNode(domSelector) {
|
|
353
353
|
return typeof domSelector === 'string' ? document.querySelector(domSelector) : domSelector;
|
|
354
354
|
}
|
|
355
|
-
const deepMerge = (target, source) => merge(target, source);
|
|
355
|
+
const deepMerge = (target, source) => merge(target, source);
|
|
356
|
+
const setStyleProperties = (element, styleProperties) => {
|
|
357
|
+
if (!element || !styleProperties)
|
|
358
|
+
return;
|
|
359
|
+
Object.keys(styleProperties).forEach((styleProperty) => {
|
|
360
|
+
element.style[styleProperty] = styleProperties[styleProperty].toString();
|
|
361
|
+
});
|
|
362
|
+
};
|
|
363
|
+
const removeStyleProperties = (element, styleProperties) => {
|
|
364
|
+
if (!element || !styleProperties)
|
|
365
|
+
return;
|
|
366
|
+
styleProperties.forEach((styleProperty) => {
|
|
367
|
+
element.style.removeProperty(styleProperty);
|
|
368
|
+
});
|
|
369
|
+
};
|
|
356
370
|
|
|
357
371
|
/**
|
|
358
372
|
* Copyright (c) 2023
|
|
@@ -10396,7 +10410,7 @@ function processTrigger(iFrame, messageType, thoughtSpotHost, data) {
|
|
|
10396
10410
|
});
|
|
10397
10411
|
}
|
|
10398
10412
|
|
|
10399
|
-
var name="@thoughtspot/visual-embed-sdk";var version="1.24.0-
|
|
10413
|
+
var name="@thoughtspot/visual-embed-sdk";var version="1.24.0-dev";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-puppeteer":"^4.4.0",jsdom:"^17.0.0","node-sass":"^8.0.0",prettier:"2.1.2",puppeteer:"^7.0.1",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};
|
|
10400
10414
|
|
|
10401
10415
|
/**
|
|
10402
10416
|
* Copyright (c) 2022
|
|
@@ -10791,7 +10805,12 @@ class TsEmbed {
|
|
|
10791
10805
|
uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_RENDER_START);
|
|
10792
10806
|
return (_a = getAuthPromise()) === null || _a === void 0 ? void 0 : _a.then((isLoggedIn) => {
|
|
10793
10807
|
if (!isLoggedIn) {
|
|
10794
|
-
|
|
10808
|
+
if (this.isPreRendered) {
|
|
10809
|
+
this.insertIntoDOMForPreRender(this.embedConfig.loginFailedMessage);
|
|
10810
|
+
}
|
|
10811
|
+
else {
|
|
10812
|
+
this.insertIntoDOM(this.embedConfig.loginFailedMessage);
|
|
10813
|
+
}
|
|
10795
10814
|
return;
|
|
10796
10815
|
}
|
|
10797
10816
|
this.iFrame = this.iFrame || this.createIframeEl(url);
|
|
@@ -10813,7 +10832,12 @@ class TsEmbed {
|
|
|
10813
10832
|
this.iFrame.addEventListener('error', () => {
|
|
10814
10833
|
nextInQueue();
|
|
10815
10834
|
});
|
|
10816
|
-
|
|
10835
|
+
if (this.isPreRendered) {
|
|
10836
|
+
this.insertIntoDOMForPreRender(this.iFrame);
|
|
10837
|
+
}
|
|
10838
|
+
else {
|
|
10839
|
+
this.insertIntoDOM(this.iFrame);
|
|
10840
|
+
}
|
|
10817
10841
|
const prefetchIframe = document.querySelectorAll('.prefetchIframe');
|
|
10818
10842
|
if (prefetchIframe.length) {
|
|
10819
10843
|
prefetchIframe.forEach((el) => {
|
|
@@ -10826,11 +10850,119 @@ class TsEmbed {
|
|
|
10826
10850
|
uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_RENDER_FAILED, {
|
|
10827
10851
|
error: JSON.stringify(error),
|
|
10828
10852
|
});
|
|
10829
|
-
|
|
10853
|
+
if (this.isPreRendered) {
|
|
10854
|
+
this.insertIntoDOMForPreRender(this.embedConfig.loginFailedMessage);
|
|
10855
|
+
}
|
|
10856
|
+
else {
|
|
10857
|
+
this.insertIntoDOM(this.embedConfig.loginFailedMessage);
|
|
10858
|
+
}
|
|
10830
10859
|
this.handleError(error);
|
|
10831
10860
|
});
|
|
10832
10861
|
});
|
|
10833
10862
|
}
|
|
10863
|
+
getPreRenderIds() {
|
|
10864
|
+
return {
|
|
10865
|
+
wrapper: `tsEmbed-pre-render-wrapper-${this.viewConfig.preRenderId}`,
|
|
10866
|
+
shield: `tsEmbed-pre-render-shield-${this.viewConfig.preRenderId}`,
|
|
10867
|
+
child: `tsEmbed-pre-render-child-${this.viewConfig.preRenderId}`,
|
|
10868
|
+
};
|
|
10869
|
+
}
|
|
10870
|
+
createPreRenderWrapper(child) {
|
|
10871
|
+
if (!this.viewConfig.preRenderId) {
|
|
10872
|
+
throw new Error('Pre render id is required');
|
|
10873
|
+
}
|
|
10874
|
+
const preRenderIds = this.getPreRenderIds();
|
|
10875
|
+
const stalePreRenderWrapper = document.getElementById(preRenderIds.wrapper);
|
|
10876
|
+
if (stalePreRenderWrapper) {
|
|
10877
|
+
console.log('Found stale wrapper , removing');
|
|
10878
|
+
stalePreRenderWrapper.remove();
|
|
10879
|
+
}
|
|
10880
|
+
const preRenderWrapper = document.createElement('div');
|
|
10881
|
+
preRenderWrapper.id = preRenderIds.wrapper;
|
|
10882
|
+
setStyleProperties(preRenderWrapper, { position: 'absolute', width: '100vw', height: '100vh' });
|
|
10883
|
+
const preRenderShield = document.createElement('div');
|
|
10884
|
+
preRenderShield.id = preRenderIds.shield;
|
|
10885
|
+
setStyleProperties(preRenderShield, { position: 'absolute', width: '100%', height: '100%' });
|
|
10886
|
+
child.id = preRenderIds.child;
|
|
10887
|
+
preRenderWrapper.appendChild(child);
|
|
10888
|
+
preRenderWrapper.appendChild(preRenderShield);
|
|
10889
|
+
this.preRenderWrapper = preRenderWrapper;
|
|
10890
|
+
this.preRenderShield = preRenderShield;
|
|
10891
|
+
this.preRenderChild = child;
|
|
10892
|
+
return preRenderWrapper;
|
|
10893
|
+
}
|
|
10894
|
+
isPreRenderAvailable() {
|
|
10895
|
+
const preRenderIds = this.getPreRenderIds();
|
|
10896
|
+
this.preRenderWrapper = this.preRenderWrapper
|
|
10897
|
+
|| document.getElementById(preRenderIds.wrapper);
|
|
10898
|
+
this.preRenderShield = this.preRenderShield
|
|
10899
|
+
|| document.getElementById(preRenderIds.shield);
|
|
10900
|
+
this.preRenderChild = this.preRenderChild
|
|
10901
|
+
|| document.getElementById(preRenderIds.child);
|
|
10902
|
+
return !!this.preRenderWrapper && !!this.preRenderShield
|
|
10903
|
+
&& !!this.preRenderChild;
|
|
10904
|
+
}
|
|
10905
|
+
insertIntoDOMForPreRender(child) {
|
|
10906
|
+
let childNode;
|
|
10907
|
+
if (typeof child === 'string') {
|
|
10908
|
+
const divChildNode = document.createElement('div');
|
|
10909
|
+
divChildNode.innerHTML = child;
|
|
10910
|
+
childNode = divChildNode;
|
|
10911
|
+
}
|
|
10912
|
+
else {
|
|
10913
|
+
childNode = child;
|
|
10914
|
+
}
|
|
10915
|
+
const preRenderWrapper = this.createPreRenderWrapper(childNode);
|
|
10916
|
+
document.body.appendChild(preRenderWrapper);
|
|
10917
|
+
this.hidePreRender();
|
|
10918
|
+
}
|
|
10919
|
+
hidePreRender() {
|
|
10920
|
+
if (!this.isPreRenderAvailable()) {
|
|
10921
|
+
// if the embed component is not preRendered , nothing to hide
|
|
10922
|
+
console.log('No preRender found, not hiding ');
|
|
10923
|
+
return;
|
|
10924
|
+
}
|
|
10925
|
+
setStyleProperties(this.preRenderWrapper, {
|
|
10926
|
+
opacity: '0',
|
|
10927
|
+
pointerEvents: 'none',
|
|
10928
|
+
zIndex: '-1000',
|
|
10929
|
+
position: 'absolute ',
|
|
10930
|
+
top: '0',
|
|
10931
|
+
left: '0',
|
|
10932
|
+
});
|
|
10933
|
+
const childBoundingRect = this.preRenderChild.getBoundingClientRect();
|
|
10934
|
+
setStyleProperties(this.preRenderShield, {
|
|
10935
|
+
opacity: '0',
|
|
10936
|
+
pointerEvents: 'none',
|
|
10937
|
+
zIndex: '1',
|
|
10938
|
+
width: `${childBoundingRect.width}px`,
|
|
10939
|
+
height: `${childBoundingRect.height}px`,
|
|
10940
|
+
position: 'absolute',
|
|
10941
|
+
top: '0',
|
|
10942
|
+
left: '0',
|
|
10943
|
+
});
|
|
10944
|
+
}
|
|
10945
|
+
showPreRender() {
|
|
10946
|
+
if (!this.isPreRenderAvailable()) {
|
|
10947
|
+
// if the Embed component is nor preRendered , Render it now and
|
|
10948
|
+
// show it (hide is defalt behaviour)
|
|
10949
|
+
console.log('No preRender found, creating new ');
|
|
10950
|
+
this.render();
|
|
10951
|
+
return;
|
|
10952
|
+
}
|
|
10953
|
+
this.syncPreRenderStyle();
|
|
10954
|
+
removeStyleProperties(this.preRenderWrapper, ['z-index', 'opacity', 'pointer-events']);
|
|
10955
|
+
setStyleProperties(this.preRenderShield, { zIndex: '-1' });
|
|
10956
|
+
}
|
|
10957
|
+
syncPreRenderStyle() {
|
|
10958
|
+
if (!this.el) {
|
|
10959
|
+
throw new Error('Embed element is not defined');
|
|
10960
|
+
}
|
|
10961
|
+
const elBoundingClient = this.el.getBoundingClientRect();
|
|
10962
|
+
setStyleProperties(this.preRenderWrapper, {
|
|
10963
|
+
top: `${elBoundingClient.y}px`, left: `${elBoundingClient.x}px`, width: `${elBoundingClient.width}px`, height: `${elBoundingClient.height}px`,
|
|
10964
|
+
});
|
|
10965
|
+
}
|
|
10834
10966
|
insertIntoDOM(child) {
|
|
10835
10967
|
var _a;
|
|
10836
10968
|
if (this.viewConfig.insertAsSibling) {
|
|
@@ -11045,6 +11177,13 @@ class TsEmbed {
|
|
|
11045
11177
|
this.isRendered = true;
|
|
11046
11178
|
return this;
|
|
11047
11179
|
}
|
|
11180
|
+
/**
|
|
11181
|
+
* Creates the preRender shell
|
|
11182
|
+
*/
|
|
11183
|
+
preRender() {
|
|
11184
|
+
this.isPreRendered = true;
|
|
11185
|
+
return this;
|
|
11186
|
+
}
|
|
11048
11187
|
/**
|
|
11049
11188
|
* Get the Post Url Params for THOUGHTSPOT from the current
|
|
11050
11189
|
* host app URL.
|
|
@@ -11126,8 +11265,10 @@ class V1Embed extends TsEmbed {
|
|
|
11126
11265
|
let queryString = queryParams;
|
|
11127
11266
|
if (!this.viewConfig.excludeRuntimeFiltersfromURL) {
|
|
11128
11267
|
const runtimeFilters = this.viewConfig.runtimeFilters;
|
|
11268
|
+
const runtimeParameters = this.viewConfig.runtimeParameters;
|
|
11269
|
+
const parameterQuery = getRuntimeParameters(runtimeParameters || []);
|
|
11129
11270
|
const filterQuery = getFilterQuery(runtimeFilters || []);
|
|
11130
|
-
queryString = [filterQuery, queryParams].filter(Boolean).join('&');
|
|
11271
|
+
queryString = [parameterQuery, filterQuery, queryParams].filter(Boolean).join('&');
|
|
11131
11272
|
}
|
|
11132
11273
|
return this.getV1EmbedBasePath(queryString);
|
|
11133
11274
|
}
|
|
@@ -11791,6 +11932,11 @@ class LiveboardEmbed extends V1Embed {
|
|
|
11791
11932
|
this.renderV1Embed(src);
|
|
11792
11933
|
return this;
|
|
11793
11934
|
}
|
|
11935
|
+
preRender() {
|
|
11936
|
+
super.preRender();
|
|
11937
|
+
this.render();
|
|
11938
|
+
return this;
|
|
11939
|
+
}
|
|
11794
11940
|
navigateToLiveboard(liveboardId, vizId, activeTabId) {
|
|
11795
11941
|
const path = this.getIframeSuffixSrc(liveboardId, vizId, activeTabId);
|
|
11796
11942
|
this.viewConfig.liveboardId = liveboardId;
|
|
@@ -11825,7 +11971,7 @@ function getViewPropsAndListeners(props) {
|
|
|
11825
11971
|
});
|
|
11826
11972
|
}
|
|
11827
11973
|
|
|
11828
|
-
const componentFactory = (EmbedConstructor) => React.forwardRef((props, forwardedRef) => {
|
|
11974
|
+
const componentFactory = (EmbedConstructor, isPreRenderedComponent = false) => React.forwardRef((props, forwardedRef) => {
|
|
11829
11975
|
const ref = React.useRef(null);
|
|
11830
11976
|
const { className, ...embedProps } = props;
|
|
11831
11977
|
const { viewConfig, listeners } = getViewPropsAndListeners(embedProps);
|
|
@@ -11841,13 +11987,26 @@ const componentFactory = (EmbedConstructor) => React.forwardRef((props, forwarde
|
|
|
11841
11987
|
Object.keys(listeners).forEach((eventName) => {
|
|
11842
11988
|
tsEmbed.on(eventName, listeners[eventName]);
|
|
11843
11989
|
});
|
|
11844
|
-
|
|
11990
|
+
if (isPreRenderedComponent) {
|
|
11991
|
+
tsEmbed.preRender();
|
|
11992
|
+
}
|
|
11993
|
+
else if (props.preRenderId) {
|
|
11994
|
+
tsEmbed.showPreRender();
|
|
11995
|
+
}
|
|
11996
|
+
else {
|
|
11997
|
+
tsEmbed.render();
|
|
11998
|
+
}
|
|
11845
11999
|
if (forwardedRef) {
|
|
11846
12000
|
// eslint-disable-next-line no-param-reassign
|
|
11847
12001
|
forwardedRef.current = tsEmbed;
|
|
11848
12002
|
}
|
|
11849
12003
|
return () => {
|
|
11850
|
-
|
|
12004
|
+
if (!isPreRenderedComponent) {
|
|
12005
|
+
if (props.preRenderId)
|
|
12006
|
+
tsEmbed.hidePreRender();
|
|
12007
|
+
else
|
|
12008
|
+
tsEmbed.destroy();
|
|
12009
|
+
}
|
|
11851
12010
|
};
|
|
11852
12011
|
}, [viewConfig, listeners]);
|
|
11853
12012
|
return ((viewConfig.insertAsSibling)
|
|
@@ -11947,6 +12106,7 @@ const SageEmbed$1 = componentFactory(SageEmbed);
|
|
|
11947
12106
|
*/
|
|
11948
12107
|
function useEmbedRef() {
|
|
11949
12108
|
return React.useRef(null);
|
|
11950
|
-
}
|
|
12109
|
+
}
|
|
12110
|
+
const PreRenderedLiveboardEmbed = componentFactory(LiveboardEmbed, true);
|
|
11951
12111
|
|
|
11952
|
-
export { Action, AppEmbed$1 as AppEmbed, EmbedEvent, HomeLeftNavItem, HomepageModule, HostEvent, LiveboardEmbed$1 as LiveboardEmbed, Page, PinboardEmbed, RuntimeFilterOp, SageEmbed$1 as SageEmbed, SearchBarEmbed$1 as SearchBarEmbed, SearchEmbed$1 as SearchEmbed, useEmbedRef };
|
|
12112
|
+
export { Action, AppEmbed$1 as AppEmbed, EmbedEvent, HomeLeftNavItem, HomepageModule, HostEvent, LiveboardEmbed$1 as LiveboardEmbed, Page, PinboardEmbed, PreRenderedLiveboardEmbed, RuntimeFilterOp, SageEmbed$1 as SageEmbed, SearchBarEmbed$1 as SearchBarEmbed, SearchEmbed$1 as SearchEmbed, useEmbedRef };
|
package/dist/tsembed-react.js
CHANGED
|
@@ -360,7 +360,21 @@
|
|
|
360
360
|
function getDOMNode(domSelector) {
|
|
361
361
|
return typeof domSelector === 'string' ? document.querySelector(domSelector) : domSelector;
|
|
362
362
|
}
|
|
363
|
-
const deepMerge = (target, source) => merge(target, source);
|
|
363
|
+
const deepMerge = (target, source) => merge(target, source);
|
|
364
|
+
const setStyleProperties = (element, styleProperties) => {
|
|
365
|
+
if (!element || !styleProperties)
|
|
366
|
+
return;
|
|
367
|
+
Object.keys(styleProperties).forEach((styleProperty) => {
|
|
368
|
+
element.style[styleProperty] = styleProperties[styleProperty].toString();
|
|
369
|
+
});
|
|
370
|
+
};
|
|
371
|
+
const removeStyleProperties = (element, styleProperties) => {
|
|
372
|
+
if (!element || !styleProperties)
|
|
373
|
+
return;
|
|
374
|
+
styleProperties.forEach((styleProperty) => {
|
|
375
|
+
element.style.removeProperty(styleProperty);
|
|
376
|
+
});
|
|
377
|
+
};
|
|
364
378
|
|
|
365
379
|
/**
|
|
366
380
|
* Copyright (c) 2023
|
|
@@ -10318,7 +10332,7 @@
|
|
|
10318
10332
|
});
|
|
10319
10333
|
}
|
|
10320
10334
|
|
|
10321
|
-
var name="@thoughtspot/visual-embed-sdk";var version="1.24.0-
|
|
10335
|
+
var name="@thoughtspot/visual-embed-sdk";var version="1.24.0-dev";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$1={".":{"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-puppeteer":"^4.4.0",jsdom:"^17.0.0","node-sass":"^8.0.0",prettier:"2.1.2",puppeteer:"^7.0.1",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$1,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};
|
|
10322
10336
|
|
|
10323
10337
|
/**
|
|
10324
10338
|
* Copyright (c) 2022
|
|
@@ -10713,7 +10727,12 @@
|
|
|
10713
10727
|
uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_RENDER_START);
|
|
10714
10728
|
return (_a = getAuthPromise()) === null || _a === void 0 ? void 0 : _a.then((isLoggedIn) => {
|
|
10715
10729
|
if (!isLoggedIn) {
|
|
10716
|
-
|
|
10730
|
+
if (this.isPreRendered) {
|
|
10731
|
+
this.insertIntoDOMForPreRender(this.embedConfig.loginFailedMessage);
|
|
10732
|
+
}
|
|
10733
|
+
else {
|
|
10734
|
+
this.insertIntoDOM(this.embedConfig.loginFailedMessage);
|
|
10735
|
+
}
|
|
10717
10736
|
return;
|
|
10718
10737
|
}
|
|
10719
10738
|
this.iFrame = this.iFrame || this.createIframeEl(url);
|
|
@@ -10735,7 +10754,12 @@
|
|
|
10735
10754
|
this.iFrame.addEventListener('error', () => {
|
|
10736
10755
|
nextInQueue();
|
|
10737
10756
|
});
|
|
10738
|
-
|
|
10757
|
+
if (this.isPreRendered) {
|
|
10758
|
+
this.insertIntoDOMForPreRender(this.iFrame);
|
|
10759
|
+
}
|
|
10760
|
+
else {
|
|
10761
|
+
this.insertIntoDOM(this.iFrame);
|
|
10762
|
+
}
|
|
10739
10763
|
const prefetchIframe = document.querySelectorAll('.prefetchIframe');
|
|
10740
10764
|
if (prefetchIframe.length) {
|
|
10741
10765
|
prefetchIframe.forEach((el) => {
|
|
@@ -10748,11 +10772,119 @@
|
|
|
10748
10772
|
uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_RENDER_FAILED, {
|
|
10749
10773
|
error: JSON.stringify(error),
|
|
10750
10774
|
});
|
|
10751
|
-
|
|
10775
|
+
if (this.isPreRendered) {
|
|
10776
|
+
this.insertIntoDOMForPreRender(this.embedConfig.loginFailedMessage);
|
|
10777
|
+
}
|
|
10778
|
+
else {
|
|
10779
|
+
this.insertIntoDOM(this.embedConfig.loginFailedMessage);
|
|
10780
|
+
}
|
|
10752
10781
|
this.handleError(error);
|
|
10753
10782
|
});
|
|
10754
10783
|
});
|
|
10755
10784
|
}
|
|
10785
|
+
getPreRenderIds() {
|
|
10786
|
+
return {
|
|
10787
|
+
wrapper: `tsEmbed-pre-render-wrapper-${this.viewConfig.preRenderId}`,
|
|
10788
|
+
shield: `tsEmbed-pre-render-shield-${this.viewConfig.preRenderId}`,
|
|
10789
|
+
child: `tsEmbed-pre-render-child-${this.viewConfig.preRenderId}`,
|
|
10790
|
+
};
|
|
10791
|
+
}
|
|
10792
|
+
createPreRenderWrapper(child) {
|
|
10793
|
+
if (!this.viewConfig.preRenderId) {
|
|
10794
|
+
throw new Error('Pre render id is required');
|
|
10795
|
+
}
|
|
10796
|
+
const preRenderIds = this.getPreRenderIds();
|
|
10797
|
+
const stalePreRenderWrapper = document.getElementById(preRenderIds.wrapper);
|
|
10798
|
+
if (stalePreRenderWrapper) {
|
|
10799
|
+
console.log('Found stale wrapper , removing');
|
|
10800
|
+
stalePreRenderWrapper.remove();
|
|
10801
|
+
}
|
|
10802
|
+
const preRenderWrapper = document.createElement('div');
|
|
10803
|
+
preRenderWrapper.id = preRenderIds.wrapper;
|
|
10804
|
+
setStyleProperties(preRenderWrapper, { position: 'absolute', width: '100vw', height: '100vh' });
|
|
10805
|
+
const preRenderShield = document.createElement('div');
|
|
10806
|
+
preRenderShield.id = preRenderIds.shield;
|
|
10807
|
+
setStyleProperties(preRenderShield, { position: 'absolute', width: '100%', height: '100%' });
|
|
10808
|
+
child.id = preRenderIds.child;
|
|
10809
|
+
preRenderWrapper.appendChild(child);
|
|
10810
|
+
preRenderWrapper.appendChild(preRenderShield);
|
|
10811
|
+
this.preRenderWrapper = preRenderWrapper;
|
|
10812
|
+
this.preRenderShield = preRenderShield;
|
|
10813
|
+
this.preRenderChild = child;
|
|
10814
|
+
return preRenderWrapper;
|
|
10815
|
+
}
|
|
10816
|
+
isPreRenderAvailable() {
|
|
10817
|
+
const preRenderIds = this.getPreRenderIds();
|
|
10818
|
+
this.preRenderWrapper = this.preRenderWrapper
|
|
10819
|
+
|| document.getElementById(preRenderIds.wrapper);
|
|
10820
|
+
this.preRenderShield = this.preRenderShield
|
|
10821
|
+
|| document.getElementById(preRenderIds.shield);
|
|
10822
|
+
this.preRenderChild = this.preRenderChild
|
|
10823
|
+
|| document.getElementById(preRenderIds.child);
|
|
10824
|
+
return !!this.preRenderWrapper && !!this.preRenderShield
|
|
10825
|
+
&& !!this.preRenderChild;
|
|
10826
|
+
}
|
|
10827
|
+
insertIntoDOMForPreRender(child) {
|
|
10828
|
+
let childNode;
|
|
10829
|
+
if (typeof child === 'string') {
|
|
10830
|
+
const divChildNode = document.createElement('div');
|
|
10831
|
+
divChildNode.innerHTML = child;
|
|
10832
|
+
childNode = divChildNode;
|
|
10833
|
+
}
|
|
10834
|
+
else {
|
|
10835
|
+
childNode = child;
|
|
10836
|
+
}
|
|
10837
|
+
const preRenderWrapper = this.createPreRenderWrapper(childNode);
|
|
10838
|
+
document.body.appendChild(preRenderWrapper);
|
|
10839
|
+
this.hidePreRender();
|
|
10840
|
+
}
|
|
10841
|
+
hidePreRender() {
|
|
10842
|
+
if (!this.isPreRenderAvailable()) {
|
|
10843
|
+
// if the embed component is not preRendered , nothing to hide
|
|
10844
|
+
console.log('No preRender found, not hiding ');
|
|
10845
|
+
return;
|
|
10846
|
+
}
|
|
10847
|
+
setStyleProperties(this.preRenderWrapper, {
|
|
10848
|
+
opacity: '0',
|
|
10849
|
+
pointerEvents: 'none',
|
|
10850
|
+
zIndex: '-1000',
|
|
10851
|
+
position: 'absolute ',
|
|
10852
|
+
top: '0',
|
|
10853
|
+
left: '0',
|
|
10854
|
+
});
|
|
10855
|
+
const childBoundingRect = this.preRenderChild.getBoundingClientRect();
|
|
10856
|
+
setStyleProperties(this.preRenderShield, {
|
|
10857
|
+
opacity: '0',
|
|
10858
|
+
pointerEvents: 'none',
|
|
10859
|
+
zIndex: '1',
|
|
10860
|
+
width: `${childBoundingRect.width}px`,
|
|
10861
|
+
height: `${childBoundingRect.height}px`,
|
|
10862
|
+
position: 'absolute',
|
|
10863
|
+
top: '0',
|
|
10864
|
+
left: '0',
|
|
10865
|
+
});
|
|
10866
|
+
}
|
|
10867
|
+
showPreRender() {
|
|
10868
|
+
if (!this.isPreRenderAvailable()) {
|
|
10869
|
+
// if the Embed component is nor preRendered , Render it now and
|
|
10870
|
+
// show it (hide is defalt behaviour)
|
|
10871
|
+
console.log('No preRender found, creating new ');
|
|
10872
|
+
this.render();
|
|
10873
|
+
return;
|
|
10874
|
+
}
|
|
10875
|
+
this.syncPreRenderStyle();
|
|
10876
|
+
removeStyleProperties(this.preRenderWrapper, ['z-index', 'opacity', 'pointer-events']);
|
|
10877
|
+
setStyleProperties(this.preRenderShield, { zIndex: '-1' });
|
|
10878
|
+
}
|
|
10879
|
+
syncPreRenderStyle() {
|
|
10880
|
+
if (!this.el) {
|
|
10881
|
+
throw new Error('Embed element is not defined');
|
|
10882
|
+
}
|
|
10883
|
+
const elBoundingClient = this.el.getBoundingClientRect();
|
|
10884
|
+
setStyleProperties(this.preRenderWrapper, {
|
|
10885
|
+
top: `${elBoundingClient.y}px`, left: `${elBoundingClient.x}px`, width: `${elBoundingClient.width}px`, height: `${elBoundingClient.height}px`,
|
|
10886
|
+
});
|
|
10887
|
+
}
|
|
10756
10888
|
insertIntoDOM(child) {
|
|
10757
10889
|
var _a;
|
|
10758
10890
|
if (this.viewConfig.insertAsSibling) {
|
|
@@ -10967,6 +11099,13 @@
|
|
|
10967
11099
|
this.isRendered = true;
|
|
10968
11100
|
return this;
|
|
10969
11101
|
}
|
|
11102
|
+
/**
|
|
11103
|
+
* Creates the preRender shell
|
|
11104
|
+
*/
|
|
11105
|
+
preRender() {
|
|
11106
|
+
this.isPreRendered = true;
|
|
11107
|
+
return this;
|
|
11108
|
+
}
|
|
10970
11109
|
/**
|
|
10971
11110
|
* Get the Post Url Params for THOUGHTSPOT from the current
|
|
10972
11111
|
* host app URL.
|
|
@@ -11048,8 +11187,10 @@
|
|
|
11048
11187
|
let queryString = queryParams;
|
|
11049
11188
|
if (!this.viewConfig.excludeRuntimeFiltersfromURL) {
|
|
11050
11189
|
const runtimeFilters = this.viewConfig.runtimeFilters;
|
|
11190
|
+
const runtimeParameters = this.viewConfig.runtimeParameters;
|
|
11191
|
+
const parameterQuery = getRuntimeParameters(runtimeParameters || []);
|
|
11051
11192
|
const filterQuery = getFilterQuery(runtimeFilters || []);
|
|
11052
|
-
queryString = [filterQuery, queryParams].filter(Boolean).join('&');
|
|
11193
|
+
queryString = [parameterQuery, filterQuery, queryParams].filter(Boolean).join('&');
|
|
11053
11194
|
}
|
|
11054
11195
|
return this.getV1EmbedBasePath(queryString);
|
|
11055
11196
|
}
|
|
@@ -11708,6 +11849,11 @@
|
|
|
11708
11849
|
this.renderV1Embed(src);
|
|
11709
11850
|
return this;
|
|
11710
11851
|
}
|
|
11852
|
+
preRender() {
|
|
11853
|
+
super.preRender();
|
|
11854
|
+
this.render();
|
|
11855
|
+
return this;
|
|
11856
|
+
}
|
|
11711
11857
|
navigateToLiveboard(liveboardId, vizId, activeTabId) {
|
|
11712
11858
|
const path = this.getIframeSuffixSrc(liveboardId, vizId, activeTabId);
|
|
11713
11859
|
this.viewConfig.liveboardId = liveboardId;
|
|
@@ -11742,7 +11888,7 @@
|
|
|
11742
11888
|
});
|
|
11743
11889
|
}
|
|
11744
11890
|
|
|
11745
|
-
const componentFactory = (EmbedConstructor) => React__default['default'].forwardRef((props, forwardedRef) => {
|
|
11891
|
+
const componentFactory = (EmbedConstructor, isPreRenderedComponent = false) => React__default['default'].forwardRef((props, forwardedRef) => {
|
|
11746
11892
|
const ref = React__default['default'].useRef(null);
|
|
11747
11893
|
const { className, ...embedProps } = props;
|
|
11748
11894
|
const { viewConfig, listeners } = getViewPropsAndListeners(embedProps);
|
|
@@ -11758,13 +11904,26 @@
|
|
|
11758
11904
|
Object.keys(listeners).forEach((eventName) => {
|
|
11759
11905
|
tsEmbed.on(eventName, listeners[eventName]);
|
|
11760
11906
|
});
|
|
11761
|
-
|
|
11907
|
+
if (isPreRenderedComponent) {
|
|
11908
|
+
tsEmbed.preRender();
|
|
11909
|
+
}
|
|
11910
|
+
else if (props.preRenderId) {
|
|
11911
|
+
tsEmbed.showPreRender();
|
|
11912
|
+
}
|
|
11913
|
+
else {
|
|
11914
|
+
tsEmbed.render();
|
|
11915
|
+
}
|
|
11762
11916
|
if (forwardedRef) {
|
|
11763
11917
|
// eslint-disable-next-line no-param-reassign
|
|
11764
11918
|
forwardedRef.current = tsEmbed;
|
|
11765
11919
|
}
|
|
11766
11920
|
return () => {
|
|
11767
|
-
|
|
11921
|
+
if (!isPreRenderedComponent) {
|
|
11922
|
+
if (props.preRenderId)
|
|
11923
|
+
tsEmbed.hidePreRender();
|
|
11924
|
+
else
|
|
11925
|
+
tsEmbed.destroy();
|
|
11926
|
+
}
|
|
11768
11927
|
};
|
|
11769
11928
|
}, [viewConfig, listeners]);
|
|
11770
11929
|
return ((viewConfig.insertAsSibling)
|
|
@@ -11864,11 +12023,13 @@
|
|
|
11864
12023
|
*/
|
|
11865
12024
|
function useEmbedRef() {
|
|
11866
12025
|
return React__default['default'].useRef(null);
|
|
11867
|
-
}
|
|
12026
|
+
}
|
|
12027
|
+
const PreRenderedLiveboardEmbed = componentFactory(LiveboardEmbed, true);
|
|
11868
12028
|
|
|
11869
12029
|
exports.AppEmbed = AppEmbed$1;
|
|
11870
12030
|
exports.LiveboardEmbed = LiveboardEmbed$1;
|
|
11871
12031
|
exports.PinboardEmbed = PinboardEmbed;
|
|
12032
|
+
exports.PreRenderedLiveboardEmbed = PreRenderedLiveboardEmbed;
|
|
11872
12033
|
exports.SageEmbed = SageEmbed$1;
|
|
11873
12034
|
exports.SearchBarEmbed = SearchBarEmbed$1;
|
|
11874
12035
|
exports.SearchEmbed = SearchEmbed$1;
|