@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.
- package/cjs/package.json +1 -1
- 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 +2 -1
- package/cjs/src/embed/liveboard.js.map +1 -1
- package/cjs/src/embed/search.js +1 -1
- package/cjs/src/embed/search.js.map +1 -1
- package/cjs/src/embed/ts-embed.d.ts +3 -3
- package/cjs/src/embed/ts-embed.d.ts.map +1 -1
- package/cjs/src/embed/ts-embed.js +57 -32
- package/cjs/src/embed/ts-embed.js.map +1 -1
- package/cjs/src/utils.d.ts.map +1 -1
- package/cjs/src/utils.js +0 -4
- 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 +3 -3
- package/dist/src/embed/ts-embed.d.ts.map +1 -1
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/tsembed-react.es.js +61 -39
- package/dist/tsembed-react.js +61 -39
- package/dist/tsembed.es.js +61 -39
- package/dist/tsembed.js +61 -39
- package/dist/visual-embed-sdk-react-full.d.ts +4 -3
- package/dist/visual-embed-sdk-react.d.ts +4 -3
- package/dist/visual-embed-sdk.d.ts +4 -3
- package/lib/package.json +1 -1
- 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 +2 -1
- package/lib/src/embed/liveboard.js.map +1 -1
- package/lib/src/embed/search.js +1 -1
- package/lib/src/embed/search.js.map +1 -1
- package/lib/src/embed/ts-embed.d.ts +3 -3
- package/lib/src/embed/ts-embed.d.ts.map +1 -1
- package/lib/src/embed/ts-embed.js +57 -32
- package/lib/src/embed/ts-embed.js.map +1 -1
- package/lib/src/utils.d.ts.map +1 -1
- package/lib/src/utils.js +0 -4
- package/lib/src/utils.js.map +1 -1
- package/lib/src/visual-embed-sdk.d.ts +4 -3
- package/package.json +1 -1
- package/src/embed/liveboard.ts +2 -1
- package/src/embed/search.ts +1 -1
- package/src/embed/ts-embed.ts +72 -49
- package/src/utils.ts +1 -6
package/src/embed/ts-embed.ts
CHANGED
|
@@ -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.
|
|
555
|
-
|
|
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(
|
|
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,
|
|
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:
|
|
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(
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
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
|
-
|
|
721
|
+
divChildNode.appendChild(child);
|
|
720
722
|
}
|
|
721
723
|
|
|
722
|
-
|
|
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.
|
|
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
|
|
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`,
|
|
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
|
});
|