@thoughtspot/visual-embed-sdk 1.44.3 → 1.44.4

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 (82) hide show
  1. package/README.md +1 -1
  2. package/cjs/package.json +1 -1
  3. package/cjs/src/embed/app.d.ts +44 -32
  4. package/cjs/src/embed/app.d.ts.map +1 -1
  5. package/cjs/src/embed/app.js.map +1 -1
  6. package/cjs/src/embed/liveboard.d.ts +1 -1
  7. package/cjs/src/embed/ts-embed.d.ts +1 -1
  8. package/cjs/src/embed/ts-embed.d.ts.map +1 -1
  9. package/cjs/src/embed/ts-embed.js +24 -6
  10. package/cjs/src/embed/ts-embed.js.map +1 -1
  11. package/cjs/src/embed/ts-embed.spec.js +145 -13
  12. package/cjs/src/embed/ts-embed.spec.js.map +1 -1
  13. package/cjs/src/errors.d.ts +1 -0
  14. package/cjs/src/errors.d.ts.map +1 -1
  15. package/cjs/src/errors.js +1 -0
  16. package/cjs/src/errors.js.map +1 -1
  17. package/cjs/src/index.d.ts +2 -2
  18. package/cjs/src/index.d.ts.map +1 -1
  19. package/cjs/src/index.js +4 -1
  20. package/cjs/src/index.js.map +1 -1
  21. package/cjs/src/types.d.ts +100 -44
  22. package/cjs/src/types.d.ts.map +1 -1
  23. package/cjs/src/types.js +74 -15
  24. package/cjs/src/types.js.map +1 -1
  25. package/cjs/src/utils.d.ts.map +1 -1
  26. package/cjs/src/utils.js +2 -1
  27. package/cjs/src/utils.js.map +1 -1
  28. package/dist/{index-D0n5LIka.js → index-C5FAW929.js} +1 -1
  29. package/dist/src/embed/app.d.ts +44 -32
  30. package/dist/src/embed/app.d.ts.map +1 -1
  31. package/dist/src/embed/liveboard.d.ts +1 -1
  32. package/dist/src/embed/ts-embed.d.ts +1 -1
  33. package/dist/src/embed/ts-embed.d.ts.map +1 -1
  34. package/dist/src/errors.d.ts +1 -0
  35. package/dist/src/errors.d.ts.map +1 -1
  36. package/dist/src/index.d.ts +2 -2
  37. package/dist/src/index.d.ts.map +1 -1
  38. package/dist/src/types.d.ts +100 -44
  39. package/dist/src/types.d.ts.map +1 -1
  40. package/dist/src/utils.d.ts.map +1 -1
  41. package/dist/tsembed-react.es.js +104 -25
  42. package/dist/tsembed-react.js +103 -24
  43. package/dist/tsembed.es.js +105 -26
  44. package/dist/tsembed.js +130 -51
  45. package/dist/visual-embed-sdk-react-full.d.ts +140 -70
  46. package/dist/visual-embed-sdk-react.d.ts +146 -78
  47. package/dist/visual-embed-sdk.d.ts +193 -80
  48. package/lib/package.json +1 -1
  49. package/lib/src/embed/app.d.ts +44 -32
  50. package/lib/src/embed/app.d.ts.map +1 -1
  51. package/lib/src/embed/app.js.map +1 -1
  52. package/lib/src/embed/liveboard.d.ts +1 -1
  53. package/lib/src/embed/ts-embed.d.ts +1 -1
  54. package/lib/src/embed/ts-embed.d.ts.map +1 -1
  55. package/lib/src/embed/ts-embed.js +24 -6
  56. package/lib/src/embed/ts-embed.js.map +1 -1
  57. package/lib/src/embed/ts-embed.spec.js +145 -13
  58. package/lib/src/embed/ts-embed.spec.js.map +1 -1
  59. package/lib/src/errors.d.ts +1 -0
  60. package/lib/src/errors.d.ts.map +1 -1
  61. package/lib/src/errors.js +1 -0
  62. package/lib/src/errors.js.map +1 -1
  63. package/lib/src/index.d.ts +2 -2
  64. package/lib/src/index.d.ts.map +1 -1
  65. package/lib/src/index.js +2 -2
  66. package/lib/src/index.js.map +1 -1
  67. package/lib/src/types.d.ts +100 -44
  68. package/lib/src/types.d.ts.map +1 -1
  69. package/lib/src/types.js +74 -15
  70. package/lib/src/types.js.map +1 -1
  71. package/lib/src/utils.d.ts.map +1 -1
  72. package/lib/src/utils.js +2 -1
  73. package/lib/src/utils.js.map +1 -1
  74. package/package.json +1 -1
  75. package/src/embed/app.ts +44 -32
  76. package/src/embed/liveboard.ts +1 -1
  77. package/src/embed/ts-embed.spec.ts +190 -15
  78. package/src/embed/ts-embed.ts +24 -6
  79. package/src/errors.ts +1 -0
  80. package/src/index.ts +4 -0
  81. package/src/types.ts +100 -43
  82. package/src/utils.ts +2 -1
@@ -2059,6 +2059,36 @@ describe('Unit test case for ts embed', () => {
2059
2059
  libEmbed.hidePreRender();
2060
2060
  expect(libEmbed.preRender).toHaveBeenCalledTimes(0);
2061
2061
  });
2062
+ it('should set overflow:hidden when hidePreRender and remove when showPreRender', async () => {
2063
+ createRootEleForEmbed();
2064
+ window.ResizeObserver = window.ResizeObserver
2065
+ || jest.fn().mockImplementation(() => ({
2066
+ disconnect: jest.fn(),
2067
+ observe: jest.fn(),
2068
+ unobserve: jest.fn(),
2069
+ }));
2070
+ const libEmbed = new LiveboardEmbed('#tsEmbedDiv', {
2071
+ preRenderId: 'overflow-test',
2072
+ liveboardId: 'myLiveboardId',
2073
+ });
2074
+ await libEmbed.preRender();
2075
+ await waitFor(() => !!getIFrameEl());
2076
+ const preRenderIds = libEmbed.getPreRenderIds();
2077
+ const preRenderWrapper = document.getElementById(preRenderIds.wrapper);
2078
+ // After preRender (calls hidePreRender by default)
2079
+ // should have overflow:hidden
2080
+ expect(preRenderWrapper.style.overflow).toBe('hidden');
2081
+ expect(preRenderWrapper.style.opacity).toBe('0');
2082
+ // After showPreRender, overflow should be removed
2083
+ // to inherit from CSS
2084
+ libEmbed.showPreRender();
2085
+ expect(preRenderWrapper.style.overflow).toBe('');
2086
+ expect(preRenderWrapper.style.opacity).toBe('');
2087
+ // After hidePreRender again, overflow should be hidden
2088
+ libEmbed.hidePreRender();
2089
+ expect(preRenderWrapper.style.overflow).toBe('hidden');
2090
+ expect(preRenderWrapper.style.opacity).toBe('0');
2091
+ });
2062
2092
  it('it should connect with another object', async () => {
2063
2093
  createRootEleForEmbed();
2064
2094
  mockMessageChannel();
@@ -3356,17 +3386,7 @@ describe('Fullscreen change handler behavior', () => {
3356
3386
  });
3357
3387
  });
3358
3388
  describe('ShowPreRender with UpdateEmbedParams', () => {
3359
- beforeAll(() => {
3360
- init({
3361
- thoughtSpotHost: 'tshost',
3362
- authType: AuthType.None,
3363
- });
3364
- });
3365
- afterEach(() => {
3366
- const rootEle = document.getElementById('myRoot');
3367
- rootEle === null || rootEle === void 0 ? void 0 : rootEle.remove();
3368
- });
3369
- test('should trigger UpdateEmbedParams when showPreRender connects to existing prerendered component', async () => {
3389
+ const setupPreRenderTest = async (preRenderId, initialConfig) => {
3370
3390
  createRootEleForEmbed();
3371
3391
  mockMessageChannel();
3372
3392
  window.ResizeObserver = window.ResizeObserver
@@ -3376,14 +3396,28 @@ describe('ShowPreRender with UpdateEmbedParams', () => {
3376
3396
  unobserve: jest.fn(),
3377
3397
  }));
3378
3398
  const embed1 = new LiveboardEmbed('#tsEmbedDiv', {
3379
- preRenderId: 'update-params-test',
3380
- liveboardId: 'original-lb',
3399
+ preRenderId,
3400
+ ...initialConfig,
3381
3401
  });
3382
3402
  await embed1.preRender();
3383
3403
  await waitFor(() => !!getIFrameEl());
3384
3404
  embed1.isEmbedContainerLoaded = true;
3385
3405
  mockProcessTrigger.mockClear();
3386
3406
  mockProcessTrigger.mockResolvedValue({});
3407
+ return embed1;
3408
+ };
3409
+ beforeAll(() => {
3410
+ init({
3411
+ thoughtSpotHost: 'tshost',
3412
+ authType: AuthType.None,
3413
+ });
3414
+ });
3415
+ afterEach(() => {
3416
+ const rootEle = document.getElementById('myRoot');
3417
+ rootEle === null || rootEle === void 0 ? void 0 : rootEle.remove();
3418
+ });
3419
+ test('should trigger UpdateEmbedParams when showPreRender connects to existing prerendered component', async () => {
3420
+ await setupPreRenderTest('update-params-test', { liveboardId: 'original-lb' });
3387
3421
  const embed2 = new LiveboardEmbed('#tsEmbedDiv', {
3388
3422
  preRenderId: 'update-params-test',
3389
3423
  liveboardId: 'updated-lb',
@@ -3395,5 +3429,103 @@ describe('ShowPreRender with UpdateEmbedParams', () => {
3395
3429
  }));
3396
3430
  });
3397
3431
  });
3432
+ test('should trigger UpdateEmbedParams with runtime filters and visible vizs', async () => {
3433
+ await setupPreRenderTest('url-param-test', { liveboardId: 'original-lb' });
3434
+ const embed2 = new LiveboardEmbed('#tsEmbedDiv', {
3435
+ preRenderId: 'url-param-test',
3436
+ liveboardId: 'original-lb',
3437
+ visibleVizs: ['viz-1'],
3438
+ runtimeFilters: [
3439
+ {
3440
+ columnName: 'Color',
3441
+ operator: RuntimeFilterOp.IN,
3442
+ values: ['red', 'blue'],
3443
+ },
3444
+ {
3445
+ columnName: 'Region',
3446
+ operator: RuntimeFilterOp.EQ,
3447
+ values: ['North'],
3448
+ },
3449
+ ],
3450
+ });
3451
+ embed2.showPreRender();
3452
+ await executeAfterWait(() => {
3453
+ expect(mockProcessTrigger).toHaveBeenCalledWith(expect.any(Object), HostEvent.UpdateEmbedParams, expect.any(String), expect.objectContaining({
3454
+ liveboardId: 'original-lb',
3455
+ visibleVizs: ['viz-1'],
3456
+ runtimeFilters: [
3457
+ {
3458
+ columnName: 'Color',
3459
+ operator: RuntimeFilterOp.IN,
3460
+ values: ['red', 'blue'],
3461
+ },
3462
+ {
3463
+ columnName: 'Region',
3464
+ operator: RuntimeFilterOp.EQ,
3465
+ values: ['North'],
3466
+ },
3467
+ ],
3468
+ }));
3469
+ });
3470
+ });
3471
+ test('should trigger UpdateEmbedParams with updated config', async () => {
3472
+ await setupPreRenderTest('preserve-config-test', {
3473
+ liveboardId: 'original-lb',
3474
+ runtimeFilters: [
3475
+ {
3476
+ columnName: 'Color',
3477
+ operator: RuntimeFilterOp.IN,
3478
+ values: ['red', 'blue'],
3479
+ },
3480
+ ],
3481
+ });
3482
+ const embed2 = new LiveboardEmbed('#tsEmbedDiv', {
3483
+ preRenderId: 'preserve-config-test',
3484
+ liveboardId: 'original-lb',
3485
+ visibleVizs: ['viz-1', 'viz-2'],
3486
+ runtimeFilters: [
3487
+ {
3488
+ columnName: 'Region',
3489
+ operator: RuntimeFilterOp.EQ,
3490
+ values: ['North'],
3491
+ },
3492
+ ],
3493
+ });
3494
+ embed2.showPreRender();
3495
+ await executeAfterWait(() => {
3496
+ expect(mockProcessTrigger).toHaveBeenCalledWith(expect.any(Object), HostEvent.UpdateEmbedParams, expect.any(String), expect.objectContaining({
3497
+ liveboardId: 'original-lb',
3498
+ visibleVizs: ['viz-1', 'viz-2'],
3499
+ runtimeFilters: [
3500
+ {
3501
+ columnName: 'Region',
3502
+ operator: RuntimeFilterOp.EQ,
3503
+ values: ['North'],
3504
+ },
3505
+ ],
3506
+ }));
3507
+ });
3508
+ });
3509
+ test('should handle error when getUpdateEmbedParamsObject fails during showPreRender', async () => {
3510
+ await setupPreRenderTest('error-test', { liveboardId: 'original-lb' });
3511
+ const handleErrorSpy = jest.spyOn(LiveboardEmbed.prototype, 'handleError');
3512
+ const embed2 = new LiveboardEmbed('#tsEmbedDiv', {
3513
+ preRenderId: 'error-test',
3514
+ liveboardId: 'updated-lb',
3515
+ });
3516
+ const mockError = new Error('Failed to get params');
3517
+ jest.spyOn(embed2, 'getUpdateEmbedParamsObject').mockRejectedValue(mockError);
3518
+ embed2.showPreRender();
3519
+ await executeAfterWait(() => {
3520
+ expect(handleErrorSpy).toHaveBeenCalledWith(expect.objectContaining({
3521
+ errorType: ErrorDetailsTypes.API,
3522
+ message: 'Failed to get params',
3523
+ code: EmbedErrorCodes.UPDATE_PARAMS_FAILED,
3524
+ error: 'Failed to get params',
3525
+ }));
3526
+ expect(mockProcessTrigger).not.toHaveBeenCalledWith(expect.any(Object), HostEvent.UpdateEmbedParams, expect.any(String), expect.any(Object));
3527
+ });
3528
+ handleErrorSpy.mockRestore();
3529
+ });
3398
3530
  });
3399
3531
  //# sourceMappingURL=ts-embed.spec.js.map