@thoughtspot/visual-embed-sdk 1.39.1 → 1.39.2-alpha.2

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 (190) hide show
  1. package/cjs/package.json +1 -1
  2. package/cjs/src/config.spec.js +9 -0
  3. package/cjs/src/config.spec.js.map +1 -1
  4. package/cjs/src/embed/app.d.ts +75 -15
  5. package/cjs/src/embed/app.d.ts.map +1 -1
  6. package/cjs/src/embed/app.js +69 -9
  7. package/cjs/src/embed/app.js.map +1 -1
  8. package/cjs/src/embed/app.spec.js +374 -12
  9. package/cjs/src/embed/app.spec.js.map +1 -1
  10. package/cjs/src/embed/bodyless-conversation.d.ts +19 -7
  11. package/cjs/src/embed/bodyless-conversation.d.ts.map +1 -1
  12. package/cjs/src/embed/bodyless-conversation.js +24 -4
  13. package/cjs/src/embed/bodyless-conversation.js.map +1 -1
  14. package/cjs/src/embed/bodyless-conversation.spec.js +8 -190
  15. package/cjs/src/embed/bodyless-conversation.spec.js.map +1 -1
  16. package/cjs/src/embed/conversation.spec.js +28 -0
  17. package/cjs/src/embed/conversation.spec.js.map +1 -1
  18. package/cjs/src/embed/embedConfig.d.ts +9 -7
  19. package/cjs/src/embed/embedConfig.d.ts.map +1 -1
  20. package/cjs/src/embed/embedConfig.js +9 -7
  21. package/cjs/src/embed/embedConfig.js.map +1 -1
  22. package/cjs/src/embed/liveboard.d.ts +56 -17
  23. package/cjs/src/embed/liveboard.d.ts.map +1 -1
  24. package/cjs/src/embed/liveboard.js +48 -4
  25. package/cjs/src/embed/liveboard.js.map +1 -1
  26. package/cjs/src/embed/liveboard.spec.js +215 -11
  27. package/cjs/src/embed/liveboard.spec.js.map +1 -1
  28. package/cjs/src/embed/ts-embed.d.ts +5 -0
  29. package/cjs/src/embed/ts-embed.d.ts.map +1 -1
  30. package/cjs/src/embed/ts-embed.js +16 -1
  31. package/cjs/src/embed/ts-embed.js.map +1 -1
  32. package/cjs/src/embed/ts-embed.spec.js +164 -0
  33. package/cjs/src/embed/ts-embed.spec.js.map +1 -1
  34. package/cjs/src/errors.d.ts +1 -0
  35. package/cjs/src/errors.d.ts.map +1 -1
  36. package/cjs/src/errors.js +1 -0
  37. package/cjs/src/errors.js.map +1 -1
  38. package/cjs/src/index.d.ts +2 -2
  39. package/cjs/src/index.d.ts.map +1 -1
  40. package/cjs/src/index.js +2 -1
  41. package/cjs/src/index.js.map +1 -1
  42. package/cjs/src/react/all-types-export.d.ts +1 -1
  43. package/cjs/src/react/all-types-export.d.ts.map +1 -1
  44. package/cjs/src/react/all-types-export.js +3 -2
  45. package/cjs/src/react/all-types-export.js.map +1 -1
  46. package/cjs/src/react/index.d.ts +71 -20
  47. package/cjs/src/react/index.d.ts.map +1 -1
  48. package/cjs/src/react/index.js +79 -42
  49. package/cjs/src/react/index.js.map +1 -1
  50. package/cjs/src/react/index.spec.js +436 -100
  51. package/cjs/src/react/index.spec.js.map +1 -1
  52. package/cjs/src/types.d.ts +80 -6
  53. package/cjs/src/types.d.ts.map +1 -1
  54. package/cjs/src/types.js +45 -1
  55. package/cjs/src/types.js.map +1 -1
  56. package/cjs/src/utils/graphql/nlsService/conversation-service.d.ts.map +1 -1
  57. package/cjs/src/utils/graphql/nlsService/conversation-service.js +2 -0
  58. package/cjs/src/utils/graphql/nlsService/conversation-service.js.map +1 -1
  59. package/cjs/src/utils/processTrigger.js +2 -1
  60. package/cjs/src/utils/processTrigger.js.map +1 -1
  61. package/cjs/src/utils.d.ts +6 -0
  62. package/cjs/src/utils.d.ts.map +1 -1
  63. package/cjs/src/utils.js +23 -3
  64. package/cjs/src/utils.js.map +1 -1
  65. package/cjs/src/utils.spec.js +237 -1
  66. package/cjs/src/utils.spec.js.map +1 -1
  67. package/dist/{index-JaFaxrvQ.js → index-CmEQfuE3.js} +1 -1
  68. package/dist/index-DeFzsyFF.js +7371 -0
  69. package/dist/index-Dpf0rd6w.js +7371 -0
  70. package/dist/index-UuEbsISo.js +7447 -0
  71. package/dist/index-e3Uw3YFO.js +7371 -0
  72. package/dist/src/embed/app.d.ts +75 -15
  73. package/dist/src/embed/app.d.ts.map +1 -1
  74. package/dist/src/embed/bodyless-conversation.d.ts +19 -7
  75. package/dist/src/embed/bodyless-conversation.d.ts.map +1 -1
  76. package/dist/src/embed/embedConfig.d.ts +9 -7
  77. package/dist/src/embed/embedConfig.d.ts.map +1 -1
  78. package/dist/src/embed/liveboard.d.ts +56 -17
  79. package/dist/src/embed/liveboard.d.ts.map +1 -1
  80. package/dist/src/embed/ts-embed.d.ts +5 -0
  81. package/dist/src/embed/ts-embed.d.ts.map +1 -1
  82. package/dist/src/errors.d.ts +1 -0
  83. package/dist/src/errors.d.ts.map +1 -1
  84. package/dist/src/index.d.ts +2 -2
  85. package/dist/src/index.d.ts.map +1 -1
  86. package/dist/src/react/all-types-export.d.ts +1 -1
  87. package/dist/src/react/all-types-export.d.ts.map +1 -1
  88. package/dist/src/react/index.d.ts +71 -20
  89. package/dist/src/react/index.d.ts.map +1 -1
  90. package/dist/src/types.d.ts +80 -6
  91. package/dist/src/types.d.ts.map +1 -1
  92. package/dist/src/utils/graphql/nlsService/conversation-service.d.ts.map +1 -1
  93. package/dist/src/utils.d.ts +6 -0
  94. package/dist/src/utils.d.ts.map +1 -1
  95. package/dist/tsembed-react.es.js +320 -78
  96. package/dist/tsembed-react.js +320 -76
  97. package/dist/tsembed.es.js +238 -31
  98. package/dist/tsembed.js +236 -29
  99. package/dist/visual-embed-sdk-react-full.d.ts +288 -72
  100. package/dist/visual-embed-sdk-react.d.ts +288 -72
  101. package/dist/visual-embed-sdk.d.ts +218 -53
  102. package/lib/package.json +1 -1
  103. package/lib/src/config.spec.js +9 -0
  104. package/lib/src/config.spec.js.map +1 -1
  105. package/lib/src/embed/app.d.ts +75 -15
  106. package/lib/src/embed/app.d.ts.map +1 -1
  107. package/lib/src/embed/app.js +69 -9
  108. package/lib/src/embed/app.js.map +1 -1
  109. package/lib/src/embed/app.spec.js +376 -14
  110. package/lib/src/embed/app.spec.js.map +1 -1
  111. package/lib/src/embed/bodyless-conversation.d.ts +19 -7
  112. package/lib/src/embed/bodyless-conversation.d.ts.map +1 -1
  113. package/lib/src/embed/bodyless-conversation.js +23 -4
  114. package/lib/src/embed/bodyless-conversation.js.map +1 -1
  115. package/lib/src/embed/bodyless-conversation.spec.js +9 -191
  116. package/lib/src/embed/bodyless-conversation.spec.js.map +1 -1
  117. package/lib/src/embed/conversation.spec.js +30 -2
  118. package/lib/src/embed/conversation.spec.js.map +1 -1
  119. package/lib/src/embed/embedConfig.d.ts +9 -7
  120. package/lib/src/embed/embedConfig.d.ts.map +1 -1
  121. package/lib/src/embed/embedConfig.js +9 -7
  122. package/lib/src/embed/embedConfig.js.map +1 -1
  123. package/lib/src/embed/liveboard.d.ts +56 -17
  124. package/lib/src/embed/liveboard.d.ts.map +1 -1
  125. package/lib/src/embed/liveboard.js +49 -5
  126. package/lib/src/embed/liveboard.js.map +1 -1
  127. package/lib/src/embed/liveboard.spec.js +215 -11
  128. package/lib/src/embed/liveboard.spec.js.map +1 -1
  129. package/lib/src/embed/ts-embed.d.ts +5 -0
  130. package/lib/src/embed/ts-embed.d.ts.map +1 -1
  131. package/lib/src/embed/ts-embed.js +16 -1
  132. package/lib/src/embed/ts-embed.js.map +1 -1
  133. package/lib/src/embed/ts-embed.spec.js +164 -0
  134. package/lib/src/embed/ts-embed.spec.js.map +1 -1
  135. package/lib/src/errors.d.ts +1 -0
  136. package/lib/src/errors.d.ts.map +1 -1
  137. package/lib/src/errors.js +1 -0
  138. package/lib/src/errors.js.map +1 -1
  139. package/lib/src/index.d.ts +2 -2
  140. package/lib/src/index.d.ts.map +1 -1
  141. package/lib/src/index.js +2 -2
  142. package/lib/src/index.js.map +1 -1
  143. package/lib/src/react/all-types-export.d.ts +1 -1
  144. package/lib/src/react/all-types-export.d.ts.map +1 -1
  145. package/lib/src/react/all-types-export.js +1 -1
  146. package/lib/src/react/all-types-export.js.map +1 -1
  147. package/lib/src/react/index.d.ts +71 -20
  148. package/lib/src/react/index.d.ts.map +1 -1
  149. package/lib/src/react/index.js +79 -43
  150. package/lib/src/react/index.js.map +1 -1
  151. package/lib/src/react/index.spec.js +439 -103
  152. package/lib/src/react/index.spec.js.map +1 -1
  153. package/lib/src/types.d.ts +80 -6
  154. package/lib/src/types.d.ts.map +1 -1
  155. package/lib/src/types.js +45 -1
  156. package/lib/src/types.js.map +1 -1
  157. package/lib/src/utils/graphql/nlsService/conversation-service.d.ts.map +1 -1
  158. package/lib/src/utils/graphql/nlsService/conversation-service.js +2 -0
  159. package/lib/src/utils/graphql/nlsService/conversation-service.js.map +1 -1
  160. package/lib/src/utils/processTrigger.js +2 -1
  161. package/lib/src/utils/processTrigger.js.map +1 -1
  162. package/lib/src/utils.d.ts +6 -0
  163. package/lib/src/utils.d.ts.map +1 -1
  164. package/lib/src/utils.js +21 -2
  165. package/lib/src/utils.js.map +1 -1
  166. package/lib/src/utils.spec.js +238 -2
  167. package/lib/src/utils.spec.js.map +1 -1
  168. package/lib/src/visual-embed-sdk.d.ts +219 -54
  169. package/package.json +1 -1
  170. package/src/config.spec.ts +11 -0
  171. package/src/embed/app.spec.ts +479 -26
  172. package/src/embed/app.ts +133 -27
  173. package/src/embed/bodyless-conversation.spec.ts +9 -203
  174. package/src/embed/bodyless-conversation.ts +24 -10
  175. package/src/embed/conversation.spec.ts +40 -2
  176. package/src/embed/embedConfig.ts +10 -8
  177. package/src/embed/liveboard.spec.ts +256 -5
  178. package/src/embed/liveboard.ts +99 -27
  179. package/src/embed/ts-embed.spec.ts +225 -0
  180. package/src/embed/ts-embed.ts +19 -0
  181. package/src/errors.ts +1 -0
  182. package/src/index.ts +2 -0
  183. package/src/react/all-types-export.ts +2 -1
  184. package/src/react/index.spec.tsx +556 -157
  185. package/src/react/index.tsx +117 -51
  186. package/src/types.ts +117 -43
  187. package/src/utils/graphql/nlsService/conversation-service.ts +2 -0
  188. package/src/utils/processTrigger.ts +1 -1
  189. package/src/utils.spec.ts +279 -2
  190. package/src/utils.ts +28 -2
@@ -1360,6 +1360,231 @@ describe('Unit test case for ts embed', () => {
1360
1360
  });
1361
1361
  });
1362
1362
 
1363
+ describe('Preauth Cache for FullAppEmbed with PrimaryNavBar', () => {
1364
+ beforeAll(() => {
1365
+ jest.clearAllMocks();
1366
+ init({
1367
+ thoughtSpotHost,
1368
+ authType: AuthType.None,
1369
+ });
1370
+ });
1371
+ afterEach(() => {
1372
+ jest.clearAllMocks();
1373
+ });
1374
+
1375
+ afterAll(() => {
1376
+ jest.clearAllMocks();
1377
+ });
1378
+
1379
+ const setupPreauthTest = async (
1380
+ embedType: 'AppEmbed' | 'SearchEmbed',
1381
+ showPrimaryNavbar?: boolean,
1382
+ overrideOrgId?: number,
1383
+ disablePreauthCache?: boolean
1384
+ ) => {
1385
+ jest.spyOn(window, 'addEventListener').mockImplementationOnce(
1386
+ (event, handler, options) => {
1387
+ handler({
1388
+ data: { type: 'xyz' },
1389
+ ports: [3000],
1390
+ source: null,
1391
+ });
1392
+ },
1393
+ );
1394
+ mockProcessTrigger.mockResolvedValueOnce({ session: 'test' });
1395
+ jest.spyOn(baseInstance, 'getAuthPromise').mockResolvedValueOnce(true);
1396
+
1397
+ let mockGetPreauthInfo = null;
1398
+
1399
+ // Determine if preauth cache should be enabled
1400
+ const isAppEmbedWithPrimaryNavbar = embedType === 'AppEmbed' && showPrimaryNavbar === true;
1401
+ const shouldDisableCache = overrideOrgId || disablePreauthCache || isAppEmbedWithPrimaryNavbar;
1402
+
1403
+ if (shouldDisableCache) {
1404
+ mockGetPreauthInfo = jest.spyOn(sessionInfoService, 'getPreauthInfo')
1405
+ .mockImplementation(jest.fn());
1406
+ } else {
1407
+ mockGetPreauthInfo = jest.spyOn(sessionInfoService, 'getPreauthInfo')
1408
+ .mockResolvedValue({ info: { test: 'data' } });
1409
+ }
1410
+
1411
+ const mockPreauthInfoFetch = jest.spyOn(authService, 'fetchPreauthInfoService')
1412
+ .mockResolvedValueOnce({
1413
+ ok: true,
1414
+ headers: new Headers({ 'content-type': 'application/json' }),
1415
+ json: async () => ({
1416
+ info: { test: 'data' },
1417
+ }),
1418
+ } as any);
1419
+
1420
+ const viewConfig: any = {
1421
+ frameParams: { width: 1280, height: 720 },
1422
+ };
1423
+
1424
+ if (showPrimaryNavbar !== undefined) {
1425
+ viewConfig.showPrimaryNavbar = showPrimaryNavbar;
1426
+ }
1427
+ if (overrideOrgId !== undefined) {
1428
+ viewConfig.overrideOrgId = overrideOrgId;
1429
+ }
1430
+
1431
+ // Mock getEmbedConfig for disablePreauthCache
1432
+ if (disablePreauthCache !== undefined) {
1433
+ jest.spyOn(embedConfig, 'getEmbedConfig').mockReturnValueOnce({
1434
+ thoughtSpotHost,
1435
+ authType: AuthType.None,
1436
+ disablePreauthCache,
1437
+ });
1438
+ }
1439
+
1440
+ let embed;
1441
+ if (embedType === 'AppEmbed') {
1442
+ embed = new AppEmbed(getRootEl(), viewConfig);
1443
+ } else {
1444
+ embed = new SearchEmbed(getRootEl(), viewConfig);
1445
+ }
1446
+
1447
+ const iFrame: any = document.createElement('div');
1448
+ iFrame.contentWindow = {
1449
+ postMessage: jest.fn(),
1450
+ };
1451
+ jest.spyOn(iFrame, 'addEventListener').mockImplementationOnce(
1452
+ (event, handler, options) => {
1453
+ handler({});
1454
+ },
1455
+ );
1456
+ jest.spyOn(document, 'createElement').mockReturnValueOnce(iFrame);
1457
+
1458
+ await embed.render();
1459
+
1460
+ return {
1461
+ embed,
1462
+ mockGetPreauthInfo,
1463
+ mockPreauthInfoFetch,
1464
+ iFrame,
1465
+ };
1466
+ };
1467
+
1468
+ test('should disable preauth cache for FullAppEmbed with showPrimaryNavbar = true (default)', async () => {
1469
+ const { mockGetPreauthInfo } = await setupPreauthTest('AppEmbed', true);
1470
+
1471
+ // Wait for any async operations
1472
+ await executeAfterWait(() => {
1473
+ expect(mockGetPreauthInfo).toHaveBeenCalledTimes(0);
1474
+ });
1475
+ });
1476
+
1477
+ test('should enable preauth cache for FullAppEmbed with showPrimaryNavbar = undefined (no longer defaults to true)', async () => {
1478
+ const { mockGetPreauthInfo } = await setupPreauthTest('AppEmbed', undefined);
1479
+
1480
+ await executeAfterWait(() => {
1481
+ expect(mockGetPreauthInfo).toHaveBeenCalledTimes(1);
1482
+ expect(mockProcessTrigger).toHaveBeenCalledWith(
1483
+ expect.any(Object),
1484
+ HostEvent.InfoSuccess,
1485
+ 'http://tshost',
1486
+ expect.objectContaining({ info: expect.any(Object) }),
1487
+ );
1488
+ });
1489
+ });
1490
+
1491
+ test('should enable preauth cache for FullAppEmbed with showPrimaryNavbar = false', async () => {
1492
+ const { mockGetPreauthInfo } = await setupPreauthTest('AppEmbed', false);
1493
+
1494
+ await executeAfterWait(() => {
1495
+ expect(mockGetPreauthInfo).toHaveBeenCalledTimes(1);
1496
+ expect(mockProcessTrigger).toHaveBeenCalledWith(
1497
+ expect.any(Object),
1498
+ HostEvent.InfoSuccess,
1499
+ 'http://tshost',
1500
+ expect.objectContaining({ info: expect.any(Object) }),
1501
+ );
1502
+ });
1503
+ });
1504
+
1505
+ test('should enable preauth cache for SearchEmbed regardless of showPrimaryNavbar', async () => {
1506
+ const { mockGetPreauthInfo } = await setupPreauthTest('SearchEmbed', true);
1507
+
1508
+ await executeAfterWait(() => {
1509
+ expect(mockGetPreauthInfo).toHaveBeenCalledTimes(1);
1510
+ expect(mockProcessTrigger).toHaveBeenCalledWith(
1511
+ expect.any(Object),
1512
+ HostEvent.InfoSuccess,
1513
+ 'http://tshost',
1514
+ expect.objectContaining({ info: expect.any(Object) }),
1515
+ );
1516
+ });
1517
+ });
1518
+
1519
+ test('should enable preauth cache for SearchEmbed (verifies fix for embed type regression)', async () => {
1520
+ const { mockGetPreauthInfo } = await setupPreauthTest('SearchEmbed', false);
1521
+
1522
+ await executeAfterWait(() => {
1523
+ expect(mockGetPreauthInfo).toHaveBeenCalledTimes(1);
1524
+ expect(mockProcessTrigger).toHaveBeenCalledWith(
1525
+ expect.any(Object),
1526
+ HostEvent.InfoSuccess,
1527
+ 'http://tshost',
1528
+ expect.objectContaining({ info: expect.any(Object) }),
1529
+ );
1530
+ });
1531
+ });
1532
+
1533
+ test('should disable preauth cache for FullAppEmbed with overrideOrgId (combined condition)', async () => {
1534
+ const { mockGetPreauthInfo } = await setupPreauthTest('AppEmbed', false, 123);
1535
+
1536
+ await executeAfterWait(() => {
1537
+ expect(mockGetPreauthInfo).toHaveBeenCalledTimes(0);
1538
+ });
1539
+ });
1540
+
1541
+ test('should disable preauth cache for FullAppEmbed with disablePreauthCache = true', async () => {
1542
+ const { mockGetPreauthInfo } = await setupPreauthTest('AppEmbed', false, undefined, true);
1543
+
1544
+ await executeAfterWait(() => {
1545
+ expect(mockGetPreauthInfo).toHaveBeenCalledTimes(0);
1546
+ });
1547
+ });
1548
+ });
1549
+
1550
+ describe('isFullAppEmbedWithVisiblePrimaryNavbar helper method', () => {
1551
+ beforeAll(() => {
1552
+ init({
1553
+ thoughtSpotHost,
1554
+ authType: AuthType.None,
1555
+ });
1556
+ });
1557
+
1558
+ afterEach(() => {
1559
+ jest.clearAllMocks();
1560
+ });
1561
+
1562
+ test('should return true for AppEmbed with showPrimaryNavbar = true', () => {
1563
+ const appEmbed = new AppEmbed(getRootEl(), { showPrimaryNavbar: true });
1564
+ expect(appEmbed['isFullAppEmbedWithVisiblePrimaryNavbar']()).toBe(true);
1565
+ });
1566
+
1567
+ test('should return false for AppEmbed with showPrimaryNavbar = undefined (no longer defaults to true)', () => {
1568
+ const appEmbed = new AppEmbed(getRootEl(), {});
1569
+ expect(appEmbed['isFullAppEmbedWithVisiblePrimaryNavbar']()).toBe(false);
1570
+ });
1571
+
1572
+ test('should return false for AppEmbed with showPrimaryNavbar = false', () => {
1573
+ const appEmbed = new AppEmbed(getRootEl(), { showPrimaryNavbar: false });
1574
+ expect(appEmbed['isFullAppEmbedWithVisiblePrimaryNavbar']()).toBe(false);
1575
+ });
1576
+
1577
+ test('should return false for SearchEmbed (not FullAppEmbed)', () => {
1578
+ const searchEmbed = new SearchEmbed(getRootEl(), {});
1579
+ expect(searchEmbed['isFullAppEmbedWithVisiblePrimaryNavbar']()).toBe(false);
1580
+ });
1581
+
1582
+ test('should return false for LiveboardEmbed (not FullAppEmbed)', () => {
1583
+ const liveboardEmbed = new LiveboardEmbed(getRootEl(), { liveboardId: 'test-id' });
1584
+ expect(liveboardEmbed['isFullAppEmbedWithVisiblePrimaryNavbar']()).toBe(false);
1585
+ });
1586
+ });
1587
+
1363
1588
  describe('when thoughtSpotHost have value and authPromise return error', () => {
1364
1589
  beforeAll(() => {
1365
1590
  init({
@@ -264,13 +264,32 @@ export class TsEmbed {
264
264
  // - cached auth info would be for wrong org
265
265
  // - info call response changes for each different overrideOrgId
266
266
  // 2. disablePreauthCache is explicitly set to true
267
+ // 3. FullAppEmbed has primary navbar visible since:
268
+ // - primary navbar requires fresh auth state for navigation
269
+ // - cached auth may not reflect current user permissions
267
270
  const isDisabled = (
268
271
  this.viewConfig.overrideOrgId !== undefined
269
272
  || this.embedConfig.disablePreauthCache === true
273
+ || this.isFullAppEmbedWithVisiblePrimaryNavbar()
270
274
  );
271
275
  return !isDisabled;
272
276
  }
273
277
 
278
+ /**
279
+ * Checks if current embed is FullAppEmbed with visible primary navbar
280
+ * @returns boolean
281
+ */
282
+ private isFullAppEmbedWithVisiblePrimaryNavbar(): boolean {
283
+ const appViewConfig = this.viewConfig as any;
284
+
285
+ // Check if this is a FullAppEmbed (AppEmbed)
286
+ // showPrimaryNavbar defaults to true if not explicitly set to false
287
+ return (
288
+ appViewConfig.embedComponentType === 'AppEmbed'
289
+ && appViewConfig.showPrimaryNavbar === true
290
+ );
291
+ }
292
+
274
293
  /**
275
294
  * fix for ts7.sep.cl
276
295
  * will be removed for ts7.oct.cl
package/src/errors.ts CHANGED
@@ -17,4 +17,5 @@ export const ERROR_MESSAGE = {
17
17
  CSP_FRAME_HOST_VIOLATION_LOG_MESSAGE: 'Please set up CSP correctly for the application to start working. For more information, see https://developers.thoughtspot.com/docs/security-settings#csp-viz-embed-hosts. \n If the issue persists, refer to https://developers.thoughtspot.com/docs/security-settings#csp-viz-embed-hosts',
18
18
  MISSING_REPORTING_OBSERVER: 'ReportingObserver not supported',
19
19
  RENDER_CALLED_BEFORE_INIT: 'Looks like render was called before calling init, the render won\'t start until init is called.\nFor more info check\n1. https://developers.thoughtspot.com/docs/Function_init#_init\n2.https://developers.thoughtspot.com/docs/getting-started#initSdk',
20
+ SPOTTER_AGENT_NOT_INITIALIZED: 'SpotterAgent not initialized',
20
21
  };
package/src/index.ts CHANGED
@@ -15,6 +15,7 @@ import {
15
15
  HomePageSearchBarMode,
16
16
  PrimaryNavbarVersion,
17
17
  HomePage,
18
+ ListPage,
18
19
  DataPanelCustomColumnGroupsAccordionState,
19
20
  } from './embed/app';
20
21
  import {
@@ -141,6 +142,7 @@ export {
141
142
  HomePageSearchBarMode,
142
143
  PrimaryNavbarVersion,
143
144
  HomePage,
145
+ ListPage,
144
146
  VizPoint,
145
147
  CustomActionPayload,
146
148
  UIPassthroughEvent,
@@ -12,7 +12,8 @@ export {
12
12
  SpotterEmbed,
13
13
  ConversationEmbed,
14
14
  PreRenderedConversationEmbed,
15
- SpotterAgentEmbed,
15
+ SpotterMessage,
16
+ useSpotterAgent,
16
17
  useEmbedRef,
17
18
  useInit,
18
19
  } from './index';