@thoughtspot/visual-embed-sdk 1.24.0-alpha.6 → 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.
Files changed (119) hide show
  1. package/cjs/package.json +2 -2
  2. package/cjs/src/embed/app.d.ts +1 -0
  3. package/cjs/src/embed/app.d.ts.map +1 -1
  4. package/cjs/src/embed/app.js +1 -0
  5. package/cjs/src/embed/app.js.map +1 -1
  6. package/cjs/src/embed/liveboard.d.ts +6 -1
  7. package/cjs/src/embed/liveboard.d.ts.map +1 -1
  8. package/cjs/src/embed/liveboard.js +10 -2
  9. package/cjs/src/embed/liveboard.js.map +1 -1
  10. package/cjs/src/embed/liveboard.spec.js +23 -7
  11. package/cjs/src/embed/liveboard.spec.js.map +1 -1
  12. package/cjs/src/embed/search.d.ts +5 -1
  13. package/cjs/src/embed/search.d.ts.map +1 -1
  14. package/cjs/src/embed/search.js +4 -1
  15. package/cjs/src/embed/search.js.map +1 -1
  16. package/cjs/src/embed/search.spec.js +15 -0
  17. package/cjs/src/embed/search.spec.js.map +1 -1
  18. package/cjs/src/embed/ts-embed.d.ts +19 -0
  19. package/cjs/src/embed/ts-embed.d.ts.map +1 -1
  20. package/cjs/src/embed/ts-embed.js +136 -6
  21. package/cjs/src/embed/ts-embed.js.map +1 -1
  22. package/cjs/src/embed/ts-embed.spec.js +38 -1
  23. package/cjs/src/embed/ts-embed.spec.js.map +1 -1
  24. package/cjs/src/react/all-types-export.d.ts +1 -1
  25. package/cjs/src/react/all-types-export.d.ts.map +1 -1
  26. package/cjs/src/react/all-types-export.js +2 -1
  27. package/cjs/src/react/all-types-export.js.map +1 -1
  28. package/cjs/src/react/index.d.ts +1 -0
  29. package/cjs/src/react/index.d.ts.map +1 -1
  30. package/cjs/src/react/index.js +18 -4
  31. package/cjs/src/react/index.js.map +1 -1
  32. package/cjs/src/types.d.ts +87 -7
  33. package/cjs/src/types.d.ts.map +1 -1
  34. package/cjs/src/types.js +60 -5
  35. package/cjs/src/types.js.map +1 -1
  36. package/cjs/src/utils.d.ts +9 -1
  37. package/cjs/src/utils.d.ts.map +1 -1
  38. package/cjs/src/utils.js +36 -1
  39. package/cjs/src/utils.js.map +1 -1
  40. package/cjs/src/utils.spec.js +24 -0
  41. package/cjs/src/utils.spec.js.map +1 -1
  42. package/dist/src/embed/app.d.ts +1 -0
  43. package/dist/src/embed/app.d.ts.map +1 -1
  44. package/dist/src/embed/liveboard.d.ts +6 -1
  45. package/dist/src/embed/liveboard.d.ts.map +1 -1
  46. package/dist/src/embed/search.d.ts +5 -1
  47. package/dist/src/embed/search.d.ts.map +1 -1
  48. package/dist/src/embed/ts-embed.d.ts +19 -0
  49. package/dist/src/embed/ts-embed.d.ts.map +1 -1
  50. package/dist/src/react/all-types-export.d.ts +1 -1
  51. package/dist/src/react/all-types-export.d.ts.map +1 -1
  52. package/dist/src/react/index.d.ts +1 -0
  53. package/dist/src/react/index.d.ts.map +1 -1
  54. package/dist/src/types.d.ts +87 -7
  55. package/dist/src/types.d.ts.map +1 -1
  56. package/dist/src/utils.d.ts +9 -1
  57. package/dist/src/utils.d.ts.map +1 -1
  58. package/dist/tsembed-react.es.js +264 -21
  59. package/dist/tsembed-react.js +264 -20
  60. package/dist/tsembed.es.js +245 -16
  61. package/dist/tsembed.js +245 -16
  62. package/dist/visual-embed-sdk-react-full.d.ts +115 -7
  63. package/dist/visual-embed-sdk-react.d.ts +115 -7
  64. package/dist/visual-embed-sdk.d.ts +114 -7
  65. package/lib/package.json +2 -2
  66. package/lib/src/embed/app.d.ts +1 -0
  67. package/lib/src/embed/app.d.ts.map +1 -1
  68. package/lib/src/embed/app.js +1 -0
  69. package/lib/src/embed/app.js.map +1 -1
  70. package/lib/src/embed/liveboard.d.ts +6 -1
  71. package/lib/src/embed/liveboard.d.ts.map +1 -1
  72. package/lib/src/embed/liveboard.js +11 -3
  73. package/lib/src/embed/liveboard.js.map +1 -1
  74. package/lib/src/embed/liveboard.spec.js +23 -7
  75. package/lib/src/embed/liveboard.spec.js.map +1 -1
  76. package/lib/src/embed/search.d.ts +5 -1
  77. package/lib/src/embed/search.d.ts.map +1 -1
  78. package/lib/src/embed/search.js +5 -2
  79. package/lib/src/embed/search.js.map +1 -1
  80. package/lib/src/embed/search.spec.js +15 -0
  81. package/lib/src/embed/search.spec.js.map +1 -1
  82. package/lib/src/embed/ts-embed.d.ts +19 -0
  83. package/lib/src/embed/ts-embed.d.ts.map +1 -1
  84. package/lib/src/embed/ts-embed.js +137 -7
  85. package/lib/src/embed/ts-embed.js.map +1 -1
  86. package/lib/src/embed/ts-embed.spec.js +38 -1
  87. package/lib/src/embed/ts-embed.spec.js.map +1 -1
  88. package/lib/src/react/all-types-export.d.ts +1 -1
  89. package/lib/src/react/all-types-export.d.ts.map +1 -1
  90. package/lib/src/react/all-types-export.js +1 -1
  91. package/lib/src/react/all-types-export.js.map +1 -1
  92. package/lib/src/react/index.d.ts +1 -0
  93. package/lib/src/react/index.d.ts.map +1 -1
  94. package/lib/src/react/index.js +17 -3
  95. package/lib/src/react/index.js.map +1 -1
  96. package/lib/src/types.d.ts +87 -7
  97. package/lib/src/types.d.ts.map +1 -1
  98. package/lib/src/types.js +60 -5
  99. package/lib/src/types.js.map +1 -1
  100. package/lib/src/utils.d.ts +9 -1
  101. package/lib/src/utils.d.ts.map +1 -1
  102. package/lib/src/utils.js +32 -0
  103. package/lib/src/utils.js.map +1 -1
  104. package/lib/src/utils.spec.js +25 -1
  105. package/lib/src/utils.spec.js.map +1 -1
  106. package/lib/src/visual-embed-sdk.d.ts +116 -9
  107. package/package.json +5 -5
  108. package/src/embed/app.ts +1 -0
  109. package/src/embed/liveboard.spec.ts +29 -10
  110. package/src/embed/liveboard.ts +19 -2
  111. package/src/embed/search.spec.ts +18 -0
  112. package/src/embed/search.ts +16 -1
  113. package/src/embed/ts-embed.spec.ts +40 -1
  114. package/src/embed/ts-embed.ts +174 -14
  115. package/src/react/all-types-export.ts +1 -0
  116. package/src/react/index.tsx +25 -8
  117. package/src/types.ts +97 -16
  118. package/src/utils.spec.ts +31 -0
  119. package/src/utils.ts +43 -0
@@ -194,6 +194,24 @@
194
194
  }
195
195
  return null;
196
196
  };
197
+ /**
198
+ * Construct a runtime parameter override query string from the given option.
199
+ *
200
+ * @param runtimeParameters
201
+ */
202
+ const getRuntimeParameters = (runtimeParameters) => {
203
+ if (runtimeParameters && runtimeParameters.length) {
204
+ const params = runtimeParameters.map((param, valueIndex) => {
205
+ const index = valueIndex + 1;
206
+ const filterExpr = [];
207
+ filterExpr.push(`param${index}=${encodeURIComponent(param.name)}`);
208
+ filterExpr.push(`paramVal${index}=${encodeURIComponent(param.value)}`);
209
+ return filterExpr.join('&');
210
+ });
211
+ return `${params.join('&')}`;
212
+ }
213
+ return null;
214
+ };
197
215
  /**
198
216
  * Convert a value to a string representation to be sent as a query
199
217
  * parameter to the ThoughtSpot app.
@@ -342,7 +360,21 @@
342
360
  function getDOMNode(domSelector) {
343
361
  return typeof domSelector === 'string' ? document.querySelector(domSelector) : domSelector;
344
362
  }
345
- 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
+ };
346
378
 
347
379
  /**
348
380
  * Copyright (c) 2023
@@ -1020,21 +1052,21 @@
1020
1052
  */
1021
1053
  EmbedEvent["InsertIntoSlide"] = "insertInToSlide";
1022
1054
  /**
1055
+ * @hidden
1023
1056
  * Emitted when a user changes any filter on a Liveboard.
1024
- *
1025
1057
  * @version SDK: 1.23.0 | ThoughtSpot: 9.4.0.cl
1026
1058
  */
1027
1059
  EmbedEvent["FilterChanged"] = "filterChanged";
1028
1060
  /**
1029
1061
  * Emitted when a user click on Go button in Sage Embed
1030
1062
  *
1031
- * @version SDK : 1.27.0 | Thoughtspot: 9.7.0.cl
1063
+ * @version SDK : 1.26.0 | Thoughtspot: 9.7.0.cl
1032
1064
  */
1033
1065
  EmbedEvent["SageEmbedQuery"] = "sageEmbedQuery";
1034
1066
  /**
1035
1067
  * Emitten when a user select data source in Sage Embed
1036
1068
  *
1037
- * @version SDK : 1.27.0 | Thoughtspot: 9.7.0.cl
1069
+ * @version SDK : 1.26.0 | Thoughtspot: 9.7.0.cl
1038
1070
  */
1039
1071
  EmbedEvent["SageWorksheetUpdated"] = "sageWorksheetUpdated";
1040
1072
  /**
@@ -1043,6 +1075,51 @@
1043
1075
  * @version SDK : 1.27.0 | Thoughtspot: 9.8.0.cl
1044
1076
  */
1045
1077
  EmbedEvent["UpdateConnection"] = "updateConnection";
1078
+ /**
1079
+ * Emitted when name, status (private or public) or filter values of a
1080
+ * PersonalisedView is updated.
1081
+ *
1082
+ * @returns viewName: string
1083
+ * @returns viewId: string
1084
+ * @returns liveboardId: string
1085
+ * @returns isPublic: boolean
1086
+ * @version SDK : 1.26.0 | Thoughtspot: 9.7.0.cl
1087
+ */
1088
+ EmbedEvent["UpdatePersonalisedView"] = "updatePersonalisedView";
1089
+ /**
1090
+ * Emitted when a PersonalisedView is saved.
1091
+ *
1092
+ * @returns viewName: string
1093
+ * @returns viewId: string
1094
+ * @returns liveboardId: string
1095
+ * @returns isPublic: boolean
1096
+ * @version SDK : 1.26.0 | Thoughtspot: 9.7.0.cl
1097
+ */
1098
+ EmbedEvent["SavePersonalisedView"] = "savePersonalisedView";
1099
+ /**
1100
+ * Emitted when a Liveboard is reset.
1101
+ *
1102
+ * @returns viewName: string
1103
+ * @returns viewId: string
1104
+ * @returns liveboardId: string
1105
+ * @returns isPublic: boolean
1106
+ * @version SDK : 1.26.0 | Thoughtspot: 9.7.0.cl
1107
+ */
1108
+ EmbedEvent["ResetLiveboard"] = "resetLiveboard";
1109
+ /**
1110
+ * Emitted when a PersonalisedView is deleted.
1111
+ *
1112
+ * @returns views: string[]
1113
+ * @returns liveboardId: string
1114
+ * @version SDK : 1.26.0 | Thoughtspot: 9.7.0.cl
1115
+ */
1116
+ EmbedEvent["DeletePersonalisedView"] = "deletePersonalisedView";
1117
+ /**
1118
+ * Emitten when a user creates a new worksheet
1119
+ *
1120
+ * @version SDK : 1.27.0 | Thoughtspot: 9.8.0.cl
1121
+ */
1122
+ EmbedEvent["CreateWorksheet"] = "createWorksheet";
1046
1123
  })(exports.EmbedEvent || (exports.EmbedEvent = {}));
1047
1124
  (function (HostEvent) {
1048
1125
  /**
@@ -1663,16 +1740,16 @@
1663
1740
  */
1664
1741
  HostEvent["ResetSearch"] = "resetSearch";
1665
1742
  /**
1743
+ * @hidden
1666
1744
  * Gets the currents visible and runtime filters applied on a Liveboard
1667
- *
1668
1745
  * @example
1669
1746
  * liveboardEmbed.trigger(HostEvent.GetFilters)
1670
1747
  * @version SDK: 1.23.0 | ThoughtSpot: 9.4.0.cl
1671
1748
  */
1672
1749
  HostEvent["GetFilters"] = "getFilters";
1673
1750
  /**
1751
+ * @hidden
1674
1752
  * Updates the visible filters on the Liveboard.
1675
- *
1676
1753
  * @param - filter: filter object containing column name and filter operation and values
1677
1754
  * @example
1678
1755
  *
@@ -2631,6 +2708,16 @@
2631
2708
  * ```
2632
2709
  */
2633
2710
  Action["ManageMonitor"] = "ManageMonitor";
2711
+ /**
2712
+ * Action ID for Liveboard Personalised Views dropdown
2713
+ *
2714
+ * @example
2715
+ * ```js
2716
+ * disabledActions: [Action.PersonalisedViewsDropdown]
2717
+ * ```
2718
+ * @version SDK : 1.26.0 | Thoughtspot: 9.7.0.cl
2719
+ */
2720
+ Action["PersonalisedViewsDropdown"] = "personalisedViewsDropdown";
2634
2721
  })(exports.Action || (exports.Action = {}));
2635
2722
  // eslint-disable-next-line no-shadow
2636
2723
  var OperationType;
@@ -10245,7 +10332,7 @@
10245
10332
  });
10246
10333
  }
10247
10334
 
10248
- var name="@thoughtspot/visual-embed-sdk";var version="1.24.0-alpha.6";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 is-publish-allowed && npm run test && 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};
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};
10249
10336
 
10250
10337
  /**
10251
10338
  * Copyright (c) 2022
@@ -10304,11 +10391,14 @@
10304
10391
  data: {
10305
10392
  customisations: getCustomisations(this.embedConfig, this.viewConfig),
10306
10393
  authToken,
10307
- runtimeFilterParams: getRuntimeFilters(this.viewConfig.runtimeFilters),
10394
+ runtimeFilterParams: this.viewConfig.excludeRuntimeFiltersfromURL
10395
+ ? getRuntimeFilters(this.viewConfig.runtimeFilters)
10396
+ : null,
10308
10397
  hiddenHomepageModules: this.viewConfig.hiddenHomepageModules || [],
10309
10398
  hostConfig: this.embedConfig.hostConfig,
10310
10399
  hiddenHomeLeftNavItems: ((_a = this.viewConfig) === null || _a === void 0 ? void 0 : _a.hiddenHomeLeftNavItems)
10311
- ? (_b = this.viewConfig) === null || _b === void 0 ? void 0 : _b.hiddenHomeLeftNavItems : [],
10400
+ ? (_b = this.viewConfig) === null || _b === void 0 ? void 0 : _b.hiddenHomeLeftNavItems
10401
+ : [],
10312
10402
  },
10313
10403
  });
10314
10404
  };
@@ -10637,7 +10727,12 @@
10637
10727
  uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_RENDER_START);
10638
10728
  return (_a = getAuthPromise()) === null || _a === void 0 ? void 0 : _a.then((isLoggedIn) => {
10639
10729
  if (!isLoggedIn) {
10640
- this.insertIntoDOM(this.embedConfig.loginFailedMessage);
10730
+ if (this.isPreRendered) {
10731
+ this.insertIntoDOMForPreRender(this.embedConfig.loginFailedMessage);
10732
+ }
10733
+ else {
10734
+ this.insertIntoDOM(this.embedConfig.loginFailedMessage);
10735
+ }
10641
10736
  return;
10642
10737
  }
10643
10738
  this.iFrame = this.iFrame || this.createIframeEl(url);
@@ -10659,7 +10754,12 @@
10659
10754
  this.iFrame.addEventListener('error', () => {
10660
10755
  nextInQueue();
10661
10756
  });
10662
- this.insertIntoDOM(this.iFrame);
10757
+ if (this.isPreRendered) {
10758
+ this.insertIntoDOMForPreRender(this.iFrame);
10759
+ }
10760
+ else {
10761
+ this.insertIntoDOM(this.iFrame);
10762
+ }
10663
10763
  const prefetchIframe = document.querySelectorAll('.prefetchIframe');
10664
10764
  if (prefetchIframe.length) {
10665
10765
  prefetchIframe.forEach((el) => {
@@ -10672,11 +10772,119 @@
10672
10772
  uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_RENDER_FAILED, {
10673
10773
  error: JSON.stringify(error),
10674
10774
  });
10675
- this.insertIntoDOM(this.embedConfig.loginFailedMessage);
10775
+ if (this.isPreRendered) {
10776
+ this.insertIntoDOMForPreRender(this.embedConfig.loginFailedMessage);
10777
+ }
10778
+ else {
10779
+ this.insertIntoDOM(this.embedConfig.loginFailedMessage);
10780
+ }
10676
10781
  this.handleError(error);
10677
10782
  });
10678
10783
  });
10679
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
+ }
10680
10888
  insertIntoDOM(child) {
10681
10889
  var _a;
10682
10890
  if (this.viewConfig.insertAsSibling) {
@@ -10891,6 +11099,13 @@
10891
11099
  this.isRendered = true;
10892
11100
  return this;
10893
11101
  }
11102
+ /**
11103
+ * Creates the preRender shell
11104
+ */
11105
+ preRender() {
11106
+ this.isPreRendered = true;
11107
+ return this;
11108
+ }
10894
11109
  /**
10895
11110
  * Get the Post Url Params for THOUGHTSPOT from the current
10896
11111
  * host app URL.
@@ -10972,8 +11187,10 @@
10972
11187
  let queryString = queryParams;
10973
11188
  if (!this.viewConfig.excludeRuntimeFiltersfromURL) {
10974
11189
  const runtimeFilters = this.viewConfig.runtimeFilters;
11190
+ const runtimeParameters = this.viewConfig.runtimeParameters;
11191
+ const parameterQuery = getRuntimeParameters(runtimeParameters || []);
10975
11192
  const filterQuery = getFilterQuery(runtimeFilters || []);
10976
- queryString = [filterQuery, queryParams].filter(Boolean).join('&');
11193
+ queryString = [parameterQuery, filterQuery, queryParams].filter(Boolean).join('&');
10977
11194
  }
10978
11195
  return this.getV1EmbedBasePath(queryString);
10979
11196
  }
@@ -11189,7 +11406,7 @@
11189
11406
  }
11190
11407
  getEmbedParams() {
11191
11408
  var _a;
11192
- const { hideResults, enableSearchAssist, forceTable, searchOptions, runtimeFilters, dataSource, dataSources, excludeRuntimeFiltersfromURL, dataPanelV2 = false, useLastSelectedSources = false, } = this.viewConfig;
11409
+ const { hideResults, enableSearchAssist, forceTable, searchOptions, runtimeFilters, dataSource, dataSources, excludeRuntimeFiltersfromURL, dataPanelV2 = false, useLastSelectedSources = false, runtimeParameters, } = this.viewConfig;
11193
11410
  const queryParams = this.getBaseQueryParams();
11194
11411
  queryParams[Param.HideActions] = [
11195
11412
  ...((_a = queryParams[Param.HideActions]) !== null && _a !== void 0 ? _a : []),
@@ -11228,6 +11445,9 @@
11228
11445
  if (queryParamsString) {
11229
11446
  query = `?${queryParamsString}`;
11230
11447
  }
11448
+ const parameterQuery = getRuntimeParameters(runtimeParameters || []);
11449
+ if (parameterQuery)
11450
+ query += `&${parameterQuery}`;
11231
11451
  const filterQuery = getFilterQuery(runtimeFilters || []);
11232
11452
  if (filterQuery && !excludeRuntimeFiltersfromURL) {
11233
11453
  query += `&${filterQuery}`;
@@ -11390,6 +11610,7 @@
11390
11610
  * Gets the ThoughtSpot route of the page for a particular page ID.
11391
11611
  *
11392
11612
  * @param pageId The identifier for a page in the ThoughtSpot app.
11613
+ * @param modularHomeExperience
11393
11614
  */
11394
11615
  getPageRoute(pageId, modularHomeExperience = false) {
11395
11616
  switch (pageId) {
@@ -11533,7 +11754,7 @@
11533
11754
  let params = {};
11534
11755
  params[Param.EmbedApp] = true;
11535
11756
  params = this.getBaseQueryParams(params);
11536
- const { enableVizTransformations, fullHeight, defaultHeight, visibleVizs, liveboardV2, vizId, hideTabPanel, activeTabId, } = this.viewConfig;
11757
+ const { enableVizTransformations, fullHeight, defaultHeight, visibleVizs, liveboardV2, vizId, hideTabPanel, activeTabId, runtimeParameters, } = this.viewConfig;
11537
11758
  const preventLiveboardFilterRemoval = this.viewConfig.preventLiveboardFilterRemoval
11538
11759
  || this.viewConfig.preventPinboardFilterRemoval;
11539
11760
  if (fullHeight === true) {
@@ -11561,7 +11782,10 @@
11561
11782
  if (hideTabPanel) {
11562
11783
  params[Param.HideTabPanel] = hideTabPanel;
11563
11784
  }
11564
- const queryParams = getQueryParamString(params, true);
11785
+ let queryParams = getQueryParamString(params, true);
11786
+ const parameterQuery = getRuntimeParameters(runtimeParameters || []);
11787
+ if (parameterQuery)
11788
+ queryParams += `&${parameterQuery}`;
11565
11789
  return queryParams;
11566
11790
  }
11567
11791
  getIframeSuffixSrc(liveboardId, vizId, activeTabId) {
@@ -11625,6 +11849,11 @@
11625
11849
  this.renderV1Embed(src);
11626
11850
  return this;
11627
11851
  }
11852
+ preRender() {
11853
+ super.preRender();
11854
+ this.render();
11855
+ return this;
11856
+ }
11628
11857
  navigateToLiveboard(liveboardId, vizId, activeTabId) {
11629
11858
  const path = this.getIframeSuffixSrc(liveboardId, vizId, activeTabId);
11630
11859
  this.viewConfig.liveboardId = liveboardId;
@@ -11659,7 +11888,7 @@
11659
11888
  });
11660
11889
  }
11661
11890
 
11662
- const componentFactory = (EmbedConstructor) => React__default['default'].forwardRef((props, forwardedRef) => {
11891
+ const componentFactory = (EmbedConstructor, isPreRenderedComponent = false) => React__default['default'].forwardRef((props, forwardedRef) => {
11663
11892
  const ref = React__default['default'].useRef(null);
11664
11893
  const { className, ...embedProps } = props;
11665
11894
  const { viewConfig, listeners } = getViewPropsAndListeners(embedProps);
@@ -11675,13 +11904,26 @@
11675
11904
  Object.keys(listeners).forEach((eventName) => {
11676
11905
  tsEmbed.on(eventName, listeners[eventName]);
11677
11906
  });
11678
- tsEmbed.render();
11907
+ if (isPreRenderedComponent) {
11908
+ tsEmbed.preRender();
11909
+ }
11910
+ else if (props.preRenderId) {
11911
+ tsEmbed.showPreRender();
11912
+ }
11913
+ else {
11914
+ tsEmbed.render();
11915
+ }
11679
11916
  if (forwardedRef) {
11680
11917
  // eslint-disable-next-line no-param-reassign
11681
11918
  forwardedRef.current = tsEmbed;
11682
11919
  }
11683
11920
  return () => {
11684
- tsEmbed.destroy();
11921
+ if (!isPreRenderedComponent) {
11922
+ if (props.preRenderId)
11923
+ tsEmbed.hidePreRender();
11924
+ else
11925
+ tsEmbed.destroy();
11926
+ }
11685
11927
  };
11686
11928
  }, [viewConfig, listeners]);
11687
11929
  return ((viewConfig.insertAsSibling)
@@ -11781,11 +12023,13 @@
11781
12023
  */
11782
12024
  function useEmbedRef() {
11783
12025
  return React__default['default'].useRef(null);
11784
- }
12026
+ }
12027
+ const PreRenderedLiveboardEmbed = componentFactory(LiveboardEmbed, true);
11785
12028
 
11786
12029
  exports.AppEmbed = AppEmbed$1;
11787
12030
  exports.LiveboardEmbed = LiveboardEmbed$1;
11788
12031
  exports.PinboardEmbed = PinboardEmbed;
12032
+ exports.PreRenderedLiveboardEmbed = PreRenderedLiveboardEmbed;
11789
12033
  exports.SageEmbed = SageEmbed$1;
11790
12034
  exports.SearchBarEmbed = SearchBarEmbed$1;
11791
12035
  exports.SearchEmbed = SearchEmbed$1;