@thoughtspot/visual-embed-sdk 1.24.0-preRender.1 → 1.24.0-preRender.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 (46) hide show
  1. package/cjs/package.json +1 -1
  2. package/cjs/src/embed/liveboard.d.ts +1 -0
  3. package/cjs/src/embed/liveboard.d.ts.map +1 -1
  4. package/cjs/src/embed/liveboard.js +2 -1
  5. package/cjs/src/embed/liveboard.js.map +1 -1
  6. package/cjs/src/embed/search.js +1 -1
  7. package/cjs/src/embed/search.js.map +1 -1
  8. package/cjs/src/embed/ts-embed.d.ts +3 -3
  9. package/cjs/src/embed/ts-embed.d.ts.map +1 -1
  10. package/cjs/src/embed/ts-embed.js +57 -32
  11. package/cjs/src/embed/ts-embed.js.map +1 -1
  12. package/cjs/src/utils.d.ts.map +1 -1
  13. package/cjs/src/utils.js +0 -4
  14. package/cjs/src/utils.js.map +1 -1
  15. package/dist/src/embed/liveboard.d.ts +1 -0
  16. package/dist/src/embed/liveboard.d.ts.map +1 -1
  17. package/dist/src/embed/ts-embed.d.ts +3 -3
  18. package/dist/src/embed/ts-embed.d.ts.map +1 -1
  19. package/dist/src/utils.d.ts.map +1 -1
  20. package/dist/tsembed-react.es.js +61 -39
  21. package/dist/tsembed-react.js +61 -39
  22. package/dist/tsembed.es.js +61 -39
  23. package/dist/tsembed.js +61 -39
  24. package/dist/visual-embed-sdk-react-full.d.ts +4 -3
  25. package/dist/visual-embed-sdk-react.d.ts +4 -3
  26. package/dist/visual-embed-sdk.d.ts +4 -3
  27. package/lib/package.json +1 -1
  28. package/lib/src/embed/liveboard.d.ts +1 -0
  29. package/lib/src/embed/liveboard.d.ts.map +1 -1
  30. package/lib/src/embed/liveboard.js +2 -1
  31. package/lib/src/embed/liveboard.js.map +1 -1
  32. package/lib/src/embed/search.js +1 -1
  33. package/lib/src/embed/search.js.map +1 -1
  34. package/lib/src/embed/ts-embed.d.ts +3 -3
  35. package/lib/src/embed/ts-embed.d.ts.map +1 -1
  36. package/lib/src/embed/ts-embed.js +57 -32
  37. package/lib/src/embed/ts-embed.js.map +1 -1
  38. package/lib/src/utils.d.ts.map +1 -1
  39. package/lib/src/utils.js +0 -4
  40. package/lib/src/utils.js.map +1 -1
  41. package/lib/src/visual-embed-sdk.d.ts +4 -3
  42. package/package.json +1 -1
  43. package/src/embed/liveboard.ts +2 -1
  44. package/src/embed/search.ts +1 -1
  45. package/src/embed/ts-embed.ts +72 -49
  46. package/src/utils.ts +1 -6
@@ -377,8 +377,7 @@ export class TsEmbed {
377
377
  queryParams[Param.ViewPortWidth] = window.innerWidth;
378
378
  queryParams[Param.Version] = version;
379
379
  queryParams[Param.AuthType] = this.embedConfig.authType;
380
- queryParams[Param.blockNonEmbedFullAppAccess] = this.embedConfig.blockNonEmbedFullAppAccess
381
- ?? true;
380
+ queryParams[Param.blockNonEmbedFullAppAccess] = this.embedConfig.blockNonEmbedFullAppAccess ?? true;
382
381
  if (this.embedConfig.disableLoginRedirect === true || this.embedConfig.autoLogin === true) {
383
382
  queryParams[Param.DisableLoginRedirect] = true;
384
383
  }
@@ -455,8 +454,7 @@ export class TsEmbed {
455
454
  queryParams[Param.ContextMenuTrigger] = false;
456
455
  }
457
456
 
458
- const spriteUrl = customizations?.iconSpriteUrl
459
- || this.embedConfig.customizations?.iconSpriteUrl;
457
+ const spriteUrl = customizations?.iconSpriteUrl || this.embedConfig.customizations?.iconSpriteUrl;
460
458
  if (spriteUrl) {
461
459
  queryParams[Param.IconSpriteUrl] = spriteUrl.replace('https://', '');
462
460
  }
@@ -535,9 +533,7 @@ export class TsEmbed {
535
533
  // @ts-ignore
536
534
  iFrame.allow = 'clipboard-read; clipboard-write';
537
535
 
538
- const {
539
- height: frameHeight, width: frameWidth, ...restParams
540
- } = this.viewConfig.frameParams || {};
536
+ const { height: frameHeight, width: frameWidth, ...restParams } = this.viewConfig.frameParams || {};
541
537
  const width = getCssDimension(frameWidth || DEFAULT_EMBED_WIDTH);
542
538
  const height = getCssDimension(frameHeight || DEFAULT_EMBED_HEIGHT);
543
539
  setAttributes(iFrame, restParams);
@@ -551,11 +547,12 @@ export class TsEmbed {
551
547
 
552
548
  protected handleInsertionIntoDOM(child: string | Node, showPreRenderByDefault = false): void {
553
549
  if (this.isPreRendered) {
554
- this.insertIntoDOMForPreRender(
555
- this.embedConfig.loginFailedMessage, showPreRenderByDefault,
556
- );
550
+ if (!this.viewConfig.preRenderId) {
551
+ throw Error('PreRender id is required for preRender');
552
+ }
553
+ this.insertIntoDOMForPreRender(child, showPreRenderByDefault);
557
554
  } else {
558
- this.insertIntoDOM(this.embedConfig.loginFailedMessage);
555
+ this.insertIntoDOM(child);
559
556
  }
560
557
  }
561
558
 
@@ -592,7 +589,8 @@ export class TsEmbed {
592
589
  ?.then((isLoggedIn: boolean) => {
593
590
  if (!isLoggedIn) {
594
591
  this.handleInsertionIntoDOM(
595
- this.embedConfig.loginFailedMessage, showPreRenderByDefault,
592
+ this.embedConfig.loginFailedMessage,
593
+ showPreRenderByDefault,
596
594
  );
597
595
  return;
598
596
  }
@@ -616,9 +614,7 @@ export class TsEmbed {
616
614
  this.iFrame.addEventListener('error', () => {
617
615
  nextInQueue();
618
616
  });
619
- this.handleInsertionIntoDOM(
620
- this.iFrame, showPreRenderByDefault,
621
- );
617
+ this.handleInsertionIntoDOM(this.iFrame, showPreRenderByDefault);
622
618
  const prefetchIframe = document.querySelectorAll('.prefetchIframe');
623
619
  if (prefetchIframe.length) {
624
620
  prefetchIframe.forEach((el) => {
@@ -641,40 +637,40 @@ export class TsEmbed {
641
637
  public getPreRenderIds() {
642
638
  return {
643
639
  wrapper: `tsEmbed-pre-render-wrapper-${this.viewConfig.preRenderId}`,
644
- shield: `tsEmbed-pre-render-shield-${this.viewConfig.preRenderId}`,
640
+ // shield:
641
+ // `tsEmbed-pre-render-shield-${this.viewConfig.preRenderId}`,
645
642
  child: `tsEmbed-pre-render-child-${this.viewConfig.preRenderId}`,
646
643
  };
647
644
  }
648
645
 
649
- protected createPreRenderWrapper(child: HTMLElement): HTMLDivElement {
646
+ protected createPreRenderWrapper(): HTMLDivElement {
650
647
  if (!this.viewConfig.preRenderId) {
651
- throw new Error('PreRender id is required');
648
+ throw new Error('PreRender id is required to create PreRender wrapper');
652
649
  }
653
650
 
654
651
  const preRenderIds = this.getPreRenderIds();
655
652
 
656
- [preRenderIds.wrapper, preRenderIds.shield, preRenderIds.child]
657
- .map((id) => document.getElementById(id))
658
- .filter((element) => element)
659
- .forEach((existingElement) => existingElement.remove());
653
+ document.getElementById(preRenderIds.wrapper)?.remove();
660
654
 
661
655
  const preRenderWrapper = document.createElement('div');
662
656
  preRenderWrapper.id = preRenderIds.wrapper;
663
- setStyleProperties(preRenderWrapper, { position: 'absolute', width: '100vw', height: '100vh' });
657
+ const initialPreRenderWrapperStyle = {
658
+ position: 'absolute',
659
+ width: '100vw',
660
+ height: '100vh',
661
+ };
662
+ setStyleProperties(preRenderWrapper, initialPreRenderWrapperStyle);
664
663
 
665
664
  // const preRenderShield = document.createElement('div');
666
665
  // preRenderShield.id = preRenderIds.shield;
667
666
  // setStyleProperties(preRenderShield, { position: 'absolute',
668
667
  // width: '100%', height: '100%' });
669
668
 
670
- child.id = preRenderIds.child;
671
-
672
- preRenderWrapper.appendChild(child);
673
669
  // preRenderWrapper.appendChild(preRenderShield);
674
670
 
675
- this.preRenderWrapper = preRenderWrapper;
671
+ // this.preRenderWrapper = preRenderWrapper;
676
672
  // this.preRenderShield = preRenderShield;
677
- this.preRenderChild = child;
673
+ // this.preRenderChild = child;
678
674
 
679
675
  return preRenderWrapper;
680
676
  }
@@ -691,8 +687,7 @@ export class TsEmbed {
691
687
  || document.getElementById(preRenderIds.wrapper);
692
688
  // this.preRenderShield = this.preRenderShield
693
689
  // || document.getElementById(preRenderIds.shield);
694
- this.preRenderChild = this.preRenderChild
695
- || document.getElementById(preRenderIds.child);
690
+ this.preRenderChild = this.preRenderChild || document.getElementById(preRenderIds.child);
696
691
 
697
692
  if (this.preRenderWrapper && this.preRenderChild) {
698
693
  this.isPreRendered = true;
@@ -706,20 +701,43 @@ export class TsEmbed {
706
701
  return this.isPreRendered;
707
702
  }
708
703
 
709
- protected insertIntoDOMForPreRender(
710
- child: string | HTMLElement,
711
- showPreRenderByDefault = false,
712
- ): void {
713
- let childNode: HTMLElement;
704
+ protected createPreRenderChild(child: string | Node): HTMLElement {
705
+ const preRenderIds = this.getPreRenderIds();
706
+
707
+ document.getElementById(preRenderIds.child)?.remove();
708
+
709
+ if (child instanceof HTMLElement) {
710
+ child.id = preRenderIds.child;
711
+ return child;
712
+ }
713
+
714
+ const divChildNode = document.createElement('div');
715
+ setStyleProperties(divChildNode, { width: '100%', height: '100%' });
716
+ divChildNode.id = preRenderIds.child;
717
+
714
718
  if (typeof child === 'string') {
715
- const divChildNode = document.createElement('div');
716
719
  divChildNode.innerHTML = child;
717
- childNode = divChildNode;
718
720
  } else {
719
- childNode = child;
721
+ divChildNode.appendChild(child);
720
722
  }
721
723
 
722
- const preRenderWrapper = this.createPreRenderWrapper(childNode);
724
+ return divChildNode;
725
+ }
726
+
727
+ protected insertIntoDOMForPreRender(
728
+ child: string | Node,
729
+ showPreRenderByDefault = false,
730
+ ): void {
731
+ const preRenderChild = this.createPreRenderChild(child);
732
+ const preRenderWrapper = this.createPreRenderWrapper();
733
+ preRenderWrapper.appendChild(preRenderChild);
734
+
735
+ this.preRenderChild = preRenderChild;
736
+ this.preRenderWrapper = preRenderWrapper;
737
+
738
+ if (preRenderChild instanceof HTMLIFrameElement) {
739
+ this.iFrame = preRenderChild;
740
+ }
723
741
 
724
742
  if (showPreRenderByDefault) {
725
743
  this.showPreRender();
@@ -733,21 +751,23 @@ export class TsEmbed {
733
751
  public hidePreRender(): void {
734
752
  if (!this.isPreRenderAvailable()) {
735
753
  // if the embed component is not preRendered , nothing to hide
736
- console.log('No preRender found, not hiding ');
754
+ console.warn(
755
+ 'Warning: You should call PreRender before hiding it using hidePreRender.',
756
+ );
737
757
  return;
738
758
  }
739
-
740
- setStyleProperties(this.preRenderWrapper, {
759
+ const preRenderHideStyles = {
741
760
  opacity: '0',
742
761
  pointerEvents: 'none',
743
762
  zIndex: '-1000',
744
763
  position: 'absolute ',
745
764
  top: '0',
746
765
  left: '0',
747
- });
748
-
749
- const childBoundingRect = this.preRenderChild.getBoundingClientRect();
766
+ };
767
+ setStyleProperties(this.preRenderWrapper, preRenderHideStyles);
750
768
 
769
+ // const childBoundingRect = this.preRenderChild.getBoundingClientRect();
770
+ //
751
771
  // setStyleProperties(this.preRenderShield, {
752
772
  // opacity: '0',
753
773
  // pointerEvents: 'none',
@@ -766,10 +786,10 @@ export class TsEmbed {
766
786
  if (!this.isPreRenderAvailable()) {
767
787
  const isAvailable = this.connectPreRendered();
768
788
  if (!isAvailable) {
769
- // if the Embed component is nor preRendered , Render it now and
770
- // show it (hide is defalt behaviour)
771
- console.log('No preRender found, creating new ');
789
+ // if the Embed component is not preRendered , Render it now and
772
790
  this.preRender(true);
791
+ // show it (hide is defalt behaviour)
792
+ // console.log('No preRender found, creating new ');
773
793
  return;
774
794
  }
775
795
  }
@@ -790,7 +810,10 @@ export class TsEmbed {
790
810
  const elBoundingClient = this.el.getBoundingClientRect();
791
811
 
792
812
  setStyleProperties(this.preRenderWrapper, {
793
- top: `${elBoundingClient.y}px`, left: `${elBoundingClient.x}px`, width: `${elBoundingClient.width}px`, height: `${elBoundingClient.height}px`,
813
+ top: `${elBoundingClient.y}px`,
814
+ left: `${elBoundingClient.x}px`,
815
+ width: `${elBoundingClient.width}px`,
816
+ height: `${elBoundingClient.height}px`,
794
817
  });
795
818
  }
796
819
 
package/src/utils.ts CHANGED
@@ -277,17 +277,12 @@ export const setStyleProperties = (
277
277
  element: HTMLElement,
278
278
  styleProperties: Partial<CSSStyleDeclaration>,
279
279
  ): void => {
280
- if (!element || !styleProperties) return;
281
280
  Object.keys(styleProperties).forEach((styleProperty) => {
282
281
  element.style[styleProperty] = styleProperties[styleProperty].toString();
283
282
  });
284
283
  };
285
284
 
286
- export const removeStyleProperties = (
287
- element: HTMLElement,
288
- styleProperties: string[],
289
- ): void => {
290
- if (!element || !styleProperties) return;
285
+ export const removeStyleProperties = (element: HTMLElement, styleProperties: string[]): void => {
291
286
  styleProperties.forEach((styleProperty) => {
292
287
  element.style.removeProperty(styleProperty);
293
288
  });