@progressio_resources/gravity-design-system 3.0.2 → 3.0.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 (36) hide show
  1. package/esm2022/lib/components/gravity-avatar-stack/gravity-avatar-stack.component.mjs +26 -11
  2. package/esm2022/lib/vendor/gravity-tooltip/gravity-tooltip.component.mjs +55 -21
  3. package/fesm2022/progressio_resources-gravity-design-system.mjs +79 -30
  4. package/fesm2022/progressio_resources-gravity-design-system.mjs.map +1 -1
  5. package/lib/components/gravity-avatar-stack/gravity-avatar-stack.component.d.ts +5 -4
  6. package/package.json +1 -1
  7. package/src/lib/assets/icon-set/gt-icon-deposit/gt-icon-deposit-lg-24.svg +10 -0
  8. package/src/lib/assets/icon-set/gt-icon-deposit/gt-icon-deposit-md-16.svg +10 -0
  9. package/src/lib/assets/icon-set/gt-icon-deposit/gt-icon-deposit-sm-12.svg +10 -0
  10. package/src/lib/assets/icon-set/gt-icon-deposit/gt-icon-deposit-xl-32.svg +10 -0
  11. package/src/lib/assets/icon-set/gt-icon-exchange-provider/gt-icon-exchange-provider-lg-24.svg +5 -0
  12. package/src/lib/assets/icon-set/gt-icon-exchange-provider/gt-icon-exchange-provider-md-16.svg +5 -0
  13. package/src/lib/assets/icon-set/gt-icon-exchange-provider/gt-icon-exchange-provider-sm-12.svg +5 -0
  14. package/src/lib/assets/icon-set/gt-icon-exchange-provider/gt-icon-exchange-provider-xl-32.svg +5 -0
  15. package/src/lib/assets/icon-set/gt-icon-new-tab/gt-icon-new-tab-lg-24.svg +3 -0
  16. package/src/lib/assets/icon-set/gt-icon-new-tab/gt-icon-new-tab-md-16.svg +3 -0
  17. package/src/lib/assets/icon-set/gt-icon-new-tab/gt-icon-new-tab-sm-12.svg +3 -0
  18. package/src/lib/assets/icon-set/gt-icon-new-tab/gt-icon-new-tab-xl-32.svg +3 -0
  19. package/src/lib/assets/icon-set/gt-icon-payout/gt-icon-payout-lg-24.svg +10 -0
  20. package/src/lib/assets/icon-set/gt-icon-payout/gt-icon-payout-md-16.svg +10 -0
  21. package/src/lib/assets/icon-set/gt-icon-payout/gt-icon-payout-sm-12.svg +10 -0
  22. package/src/lib/assets/icon-set/gt-icon-payout/gt-icon-payout-xl-32.svg +10 -0
  23. package/src/lib/assets/icon-set/gt-icon-switch/gt-icon-switch-lg-24.svg +10 -0
  24. package/src/lib/assets/icon-set/gt-icon-switch/gt-icon-switch-md-16.svg +10 -0
  25. package/src/lib/assets/icon-set/gt-icon-switch/gt-icon-switch-sm-12.svg +10 -0
  26. package/src/lib/assets/icon-set/gt-icon-switch/gt-icon-switch-xl-32.svg +10 -0
  27. package/src/lib/assets/icon-set/gt-icon-tool/gt-icon-tool-lg-24.svg +10 -0
  28. package/src/lib/assets/icon-set/gt-icon-tool/gt-icon-tool-md-16.svg +10 -0
  29. package/src/lib/assets/icon-set/gt-icon-tool/gt-icon-tool-sm-12.svg +10 -0
  30. package/src/lib/assets/icon-set/gt-icon-tool/gt-icon-tool-xl-32.svg +10 -0
  31. package/src/lib/assets/json/icons.json +96 -0
  32. package/src/lib/styles/components/_link.scss +9 -1
  33. package/src/lib/styles/foundations/colors/themes/_hero.theme.scss +6 -6
  34. package/src/lib/styles/foundations/colors/tokens/_hero.tokens.scss +2 -2
  35. package/src/lib/vendor/gravity-tooltip/gravity-tooltip.component.sass +56 -0
  36. package/src/lib/vendor/gravity-tooltip/gravity-tooltip.component.ts +52 -23
@@ -5,37 +5,52 @@ import * as i2 from "../gravity-icon/gravity-icon.component";
5
5
  export class GravityAvatarStackComponent {
6
6
  constructor() {
7
7
  this.isCoin = true;
8
+ this.selectMultipleItems = false;
8
9
  this.clickOnIcon = new EventEmitter();
9
10
  this.selectedIndexes = [];
10
11
  this.selectedItems = [];
11
12
  }
12
13
  onClick(index) {
13
14
  const selectedIndex = this.selectedIndexes.indexOf(index);
14
- if (selectedIndex !== -1) {
15
- this.selectedIndexes = this.selectedIndexes.filter(i => i !== index);
16
- this.selectedItems = this.selectedItems.filter(item => item !== this.items[index]);
15
+ if (this.selectMultipleItems) {
16
+ if (selectedIndex !== -1) {
17
+ this.selectedIndexes = this.selectedIndexes.filter(i => i !== index);
18
+ this.selectedItems = this.selectedItems.filter(item => item !== this.items[index]);
19
+ }
20
+ else {
21
+ this.selectedIndexes.push(index);
22
+ this.selectedItems.push(this.items[index]);
23
+ }
17
24
  }
18
25
  else {
19
- this.selectedIndexes.push(index);
20
- this.selectedItems.push(this.items[index]);
26
+ if (selectedIndex === -1) {
27
+ this.selectedIndexes = [index];
28
+ this.selectedItems = [this.items[index]];
29
+ }
30
+ else {
31
+ this.selectedIndexes = [];
32
+ this.selectedItems = [];
33
+ }
21
34
  }
22
35
  this.clickOnIcon.emit(this.selectedItems);
23
36
  }
24
37
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GravityAvatarStackComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
25
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: GravityAvatarStackComponent, selector: "gravity-avatar-stack", inputs: { items: "items", isCoin: "isCoin", size: "size", config: "config" }, outputs: { clickOnIcon: "clickOnIcon" }, ngImport: i0, template: "<div class=\"stack-icon-container\">\n <ng-container *ngFor=\"let item of items; let i = index\">\n <div class=\"icon-wrapper\" [style.z-index]=\"selectedIndexes.includes(i) ? 100 : items.length - i\"\n [class.selected]=\"selectedIndexes.includes(i)\">\n <gravity-icon\n class=\"avatar-icon pointer {{size}}\"\n (click)=\"onClick(i);\"\n [iconName]=\"'coin-id-' + item[config.icon]\"\n [isCoin]=\"isCoin\">\n </gravity-icon>\n <p *ngIf=\"config.label\" class=\"hr-body-text sm-regular hover-text\">{{ item[config.label] }}</p>\n </div>\n </ng-container>\n</div>", styles: [".border-radius-none{border-radius:0}.border-radius-xs{border-radius:.0625rem}.border-radius-sm{border-radius:.3125rem}.border-radius-md{border-radius:.625rem}.border-radius-lg{border-radius:.9375rem}.border-radius-xl{border-radius:1.25rem}.border-radius-xxl{border-radius:2rem}.border-radius-rounded{border-radius:6.25rem}.stack-icon-container{display:flex;position:relative}.icon-wrapper{position:relative}.icon-wrapper:not(:first-child){margin-left:-4px}.selected .avatar-icon{outline:1px solid var(--bg-button-active-primary);border-radius:6.25rem}.avatar-icon{height:var(--avatar-icon-height);min-height:var(--avatar-icon-height);width:var(--avatar-icon-width);min-width:var(--avatar-icon-width)}.hover-text{background-color:var(--bg-button-pressed-primary);color:var(--on-bg-button-active-primary);display:none;position:absolute;padding:2px;top:calc(100% + 4px);left:50%;transform:translate(-50%);white-space:nowrap;line-height:normal;border-radius:1.105px}.icon-wrapper:hover .hover-text{display:block}@media (max-width: 992px){.icon-wrapper .hover-text{display:none}.icon-wrapper.selected .hover-text{display:block}.icon-wrapper:not(.selected) .hover-text{display:none!important}}.sm{--avatar-icon-height: 24px;--avatar-icon-width: 24px}.md{--avatar-icon-height: 32px;--avatar-icon-width: 32px}.lg{--avatar-icon-height: 46px;--avatar-icon-width: 46px}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.GravityIconComponent, selector: "gravity-icon", inputs: ["customIconColorVariable", "iconName", "iconSize", "hoverIcon", "size", "isCoin"] }] }); }
38
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: GravityAvatarStackComponent, selector: "gravity-avatar-stack", inputs: { config: "config", isCoin: "isCoin", items: "items", selectMultipleItems: "selectMultipleItems", size: "size" }, outputs: { clickOnIcon: "clickOnIcon" }, ngImport: i0, template: "<div class=\"stack-icon-container\">\n <ng-container *ngFor=\"let item of items; let i = index\">\n <div class=\"icon-wrapper\" [style.z-index]=\"selectedIndexes.includes(i) ? 100 : items.length - i\"\n [class.selected]=\"selectedIndexes.includes(i)\">\n <gravity-icon\n class=\"avatar-icon pointer {{size}}\"\n (click)=\"onClick(i);\" [attr.data-cy]=\"'stack-item-' + item[config.label]\"\n [iconName]=\"'coin-id-' + item[config.icon]\"\n [isCoin]=\"isCoin\">\n </gravity-icon>\n <p *ngIf=\"config.label\" class=\"hr-body-text sm-regular hover-text\">{{ item[config.label] }}</p>\n </div>\n </ng-container>\n</div>", styles: [".border-radius-none{border-radius:0}.border-radius-xs{border-radius:.0625rem}.border-radius-sm{border-radius:.3125rem}.border-radius-md{border-radius:.625rem}.border-radius-lg{border-radius:.9375rem}.border-radius-xl{border-radius:1.25rem}.border-radius-xxl{border-radius:2rem}.border-radius-rounded{border-radius:6.25rem}.stack-icon-container{display:flex;position:relative}.icon-wrapper{position:relative}.icon-wrapper:not(:first-child){margin-left:-4px}.selected .avatar-icon{outline:1px solid var(--bg-button-active-primary);border-radius:6.25rem}.avatar-icon{height:var(--avatar-icon-height);min-height:var(--avatar-icon-height);width:var(--avatar-icon-width);min-width:var(--avatar-icon-width)}.hover-text{background-color:var(--bg-button-pressed-primary);color:var(--on-bg-button-active-primary);display:none;position:absolute;padding:2px;top:calc(100% + 4px);left:50%;transform:translate(-50%);white-space:nowrap;line-height:normal;border-radius:1.105px}.icon-wrapper:hover .hover-text{display:block}@media (max-width: 992px){.icon-wrapper .hover-text{display:none}.icon-wrapper.selected .hover-text{display:block}.icon-wrapper:not(.selected) .hover-text{display:none!important}}.sm{--avatar-icon-height: 24px;--avatar-icon-width: 24px}.md{--avatar-icon-height: 32px;--avatar-icon-width: 32px}.lg{--avatar-icon-height: 46px;--avatar-icon-width: 46px}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.GravityIconComponent, selector: "gravity-icon", inputs: ["customIconColorVariable", "iconName", "iconSize", "hoverIcon", "size", "isCoin"] }] }); }
26
39
  }
27
40
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GravityAvatarStackComponent, decorators: [{
28
41
  type: Component,
29
- args: [{ selector: 'gravity-avatar-stack', template: "<div class=\"stack-icon-container\">\n <ng-container *ngFor=\"let item of items; let i = index\">\n <div class=\"icon-wrapper\" [style.z-index]=\"selectedIndexes.includes(i) ? 100 : items.length - i\"\n [class.selected]=\"selectedIndexes.includes(i)\">\n <gravity-icon\n class=\"avatar-icon pointer {{size}}\"\n (click)=\"onClick(i);\"\n [iconName]=\"'coin-id-' + item[config.icon]\"\n [isCoin]=\"isCoin\">\n </gravity-icon>\n <p *ngIf=\"config.label\" class=\"hr-body-text sm-regular hover-text\">{{ item[config.label] }}</p>\n </div>\n </ng-container>\n</div>", styles: [".border-radius-none{border-radius:0}.border-radius-xs{border-radius:.0625rem}.border-radius-sm{border-radius:.3125rem}.border-radius-md{border-radius:.625rem}.border-radius-lg{border-radius:.9375rem}.border-radius-xl{border-radius:1.25rem}.border-radius-xxl{border-radius:2rem}.border-radius-rounded{border-radius:6.25rem}.stack-icon-container{display:flex;position:relative}.icon-wrapper{position:relative}.icon-wrapper:not(:first-child){margin-left:-4px}.selected .avatar-icon{outline:1px solid var(--bg-button-active-primary);border-radius:6.25rem}.avatar-icon{height:var(--avatar-icon-height);min-height:var(--avatar-icon-height);width:var(--avatar-icon-width);min-width:var(--avatar-icon-width)}.hover-text{background-color:var(--bg-button-pressed-primary);color:var(--on-bg-button-active-primary);display:none;position:absolute;padding:2px;top:calc(100% + 4px);left:50%;transform:translate(-50%);white-space:nowrap;line-height:normal;border-radius:1.105px}.icon-wrapper:hover .hover-text{display:block}@media (max-width: 992px){.icon-wrapper .hover-text{display:none}.icon-wrapper.selected .hover-text{display:block}.icon-wrapper:not(.selected) .hover-text{display:none!important}}.sm{--avatar-icon-height: 24px;--avatar-icon-width: 24px}.md{--avatar-icon-height: 32px;--avatar-icon-width: 32px}.lg{--avatar-icon-height: 46px;--avatar-icon-width: 46px}\n"] }]
30
- }], propDecorators: { items: [{
42
+ args: [{ selector: 'gravity-avatar-stack', template: "<div class=\"stack-icon-container\">\n <ng-container *ngFor=\"let item of items; let i = index\">\n <div class=\"icon-wrapper\" [style.z-index]=\"selectedIndexes.includes(i) ? 100 : items.length - i\"\n [class.selected]=\"selectedIndexes.includes(i)\">\n <gravity-icon\n class=\"avatar-icon pointer {{size}}\"\n (click)=\"onClick(i);\" [attr.data-cy]=\"'stack-item-' + item[config.label]\"\n [iconName]=\"'coin-id-' + item[config.icon]\"\n [isCoin]=\"isCoin\">\n </gravity-icon>\n <p *ngIf=\"config.label\" class=\"hr-body-text sm-regular hover-text\">{{ item[config.label] }}</p>\n </div>\n </ng-container>\n</div>", styles: [".border-radius-none{border-radius:0}.border-radius-xs{border-radius:.0625rem}.border-radius-sm{border-radius:.3125rem}.border-radius-md{border-radius:.625rem}.border-radius-lg{border-radius:.9375rem}.border-radius-xl{border-radius:1.25rem}.border-radius-xxl{border-radius:2rem}.border-radius-rounded{border-radius:6.25rem}.stack-icon-container{display:flex;position:relative}.icon-wrapper{position:relative}.icon-wrapper:not(:first-child){margin-left:-4px}.selected .avatar-icon{outline:1px solid var(--bg-button-active-primary);border-radius:6.25rem}.avatar-icon{height:var(--avatar-icon-height);min-height:var(--avatar-icon-height);width:var(--avatar-icon-width);min-width:var(--avatar-icon-width)}.hover-text{background-color:var(--bg-button-pressed-primary);color:var(--on-bg-button-active-primary);display:none;position:absolute;padding:2px;top:calc(100% + 4px);left:50%;transform:translate(-50%);white-space:nowrap;line-height:normal;border-radius:1.105px}.icon-wrapper:hover .hover-text{display:block}@media (max-width: 992px){.icon-wrapper .hover-text{display:none}.icon-wrapper.selected .hover-text{display:block}.icon-wrapper:not(.selected) .hover-text{display:none!important}}.sm{--avatar-icon-height: 24px;--avatar-icon-width: 24px}.md{--avatar-icon-height: 32px;--avatar-icon-width: 32px}.lg{--avatar-icon-height: 46px;--avatar-icon-width: 46px}\n"] }]
43
+ }], propDecorators: { config: [{
31
44
  type: Input
32
45
  }], isCoin: [{
33
46
  type: Input
34
- }], size: [{
47
+ }], items: [{
48
+ type: Input
49
+ }], selectMultipleItems: [{
35
50
  type: Input
36
- }], config: [{
51
+ }], size: [{
37
52
  type: Input
38
53
  }], clickOnIcon: [{
39
54
  type: Output
40
55
  }] } });
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3Jhdml0eS1hdmF0YXItc3RhY2suY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3Jhdml0eS1kZXNpZ24tc3lzdGVtL3NyYy9saWIvY29tcG9uZW50cy9ncmF2aXR5LWF2YXRhci1zdGFjay9ncmF2aXR5LWF2YXRhci1zdGFjay5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncmF2aXR5LWRlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2dyYXZpdHktYXZhdGFyLXN0YWNrL2dyYXZpdHktYXZhdGFyLXN0YWNrLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7Ozs7QUFPckUsTUFBTSxPQUFPLDJCQUEyQjtJQUx4QztRQU9rQixXQUFNLEdBQVksSUFBSSxDQUFDO1FBSXRCLGdCQUFXLEdBQXdCLElBQUksWUFBWSxFQUFPLENBQUM7UUFFckUsb0JBQWUsR0FBYSxFQUFFLENBQUM7UUFDL0Isa0JBQWEsR0FBZSxFQUFFLENBQUM7S0FjdkM7SUFaUSxPQUFPLENBQUMsS0FBYTtRQUMxQixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUxRCxJQUFJLGFBQWEsS0FBSyxDQUFDLENBQUMsRUFBRTtZQUN4QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDO1lBQ3JFLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQ3BGO2FBQU07WUFDTCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDNUM7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDNUMsQ0FBQzsrR0F0QlUsMkJBQTJCO21HQUEzQiwyQkFBMkIsbUxDUHhDLHNuQkFhTTs7NEZETk8sMkJBQTJCO2tCQUx2QyxTQUFTOytCQUNFLHNCQUFzQjs4QkFLaEIsS0FBSztzQkFBcEIsS0FBSztnQkFDVSxNQUFNO3NCQUFyQixLQUFLO2dCQUNVLElBQUk7c0JBQW5CLEtBQUs7Z0JBQ1UsTUFBTTtzQkFBckIsS0FBSztnQkFFVyxXQUFXO3NCQUEzQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2dyYXZpdHktYXZhdGFyLXN0YWNrJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dyYXZpdHktYXZhdGFyLXN0YWNrLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ3Jhdml0eS1hdmF0YXItc3RhY2suY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBHcmF2aXR5QXZhdGFyU3RhY2tDb21wb25lbnQge1xuICBASW5wdXQoKSBwdWJsaWMgaXRlbXM6IEFycmF5PGFueT47XG4gIEBJbnB1dCgpIHB1YmxpYyBpc0NvaW46IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBwdWJsaWMgc2l6ZTogJ2xnJyB8ICdtZCcgfCAnc20nO1xuICBASW5wdXQoKSBwdWJsaWMgY29uZmlnOiB7IGljb246IHN0cmluZywgbGFiZWw6IHN0cmluZyB9O1xuXG4gIEBPdXRwdXQoKSBwdWJsaWMgY2xpY2tPbkljb246IEV2ZW50RW1pdHRlcjxhbnlbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBwdWJsaWMgc2VsZWN0ZWRJbmRleGVzOiBudW1iZXJbXSA9IFtdO1xuICBwdWJsaWMgc2VsZWN0ZWRJdGVtczogQXJyYXk8YW55PiA9IFtdO1xuXG4gIHB1YmxpYyBvbkNsaWNrKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gdGhpcy5zZWxlY3RlZEluZGV4ZXMuaW5kZXhPZihpbmRleCk7XG5cbiAgICBpZiAoc2VsZWN0ZWRJbmRleCAhPT0gLTEpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleGVzID0gdGhpcy5zZWxlY3RlZEluZGV4ZXMuZmlsdGVyKGkgPT4gaSAhPT0gaW5kZXgpO1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmZpbHRlcihpdGVtID0+IGl0ZW0gIT09IHRoaXMuaXRlbXNbaW5kZXhdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ZXMucHVzaChpbmRleCk7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaCh0aGlzLml0ZW1zW2luZGV4XSk7XG4gICAgfVxuICAgIHRoaXMuY2xpY2tPbkljb24uZW1pdCh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuICB9XG59IiwiPGRpdiBjbGFzcz1cInN0YWNrLWljb24tY29udGFpbmVyXCI+XG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXM7IGxldCBpID0gaW5kZXhcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaWNvbi13cmFwcGVyXCIgW3N0eWxlLnotaW5kZXhdPVwic2VsZWN0ZWRJbmRleGVzLmluY2x1ZGVzKGkpID8gMTAwIDogaXRlbXMubGVuZ3RoIC0gaVwiXG4gICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwic2VsZWN0ZWRJbmRleGVzLmluY2x1ZGVzKGkpXCI+XG4gICAgICA8Z3Jhdml0eS1pY29uXG4gICAgICAgICAgY2xhc3M9XCJhdmF0YXItaWNvbiBwb2ludGVyIHt7c2l6ZX19XCJcbiAgICAgICAgICAoY2xpY2spPVwib25DbGljayhpKTtcIlxuICAgICAgICAgIFtpY29uTmFtZV09XCInY29pbi1pZC0nICsgaXRlbVtjb25maWcuaWNvbl1cIlxuICAgICAgICAgIFtpc0NvaW5dPVwiaXNDb2luXCI+XG4gICAgICA8L2dyYXZpdHktaWNvbj5cbiAgICAgIDxwICpuZ0lmPVwiY29uZmlnLmxhYmVsXCIgY2xhc3M9XCJoci1ib2R5LXRleHQgc20tcmVndWxhciBob3Zlci10ZXh0XCI+e3sgaXRlbVtjb25maWcubGFiZWxdIH19PC9wPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PiJdfQ==
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3Jhdml0eS1hdmF0YXItc3RhY2suY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3Jhdml0eS1kZXNpZ24tc3lzdGVtL3NyYy9saWIvY29tcG9uZW50cy9ncmF2aXR5LWF2YXRhci1zdGFjay9ncmF2aXR5LWF2YXRhci1zdGFjay5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncmF2aXR5LWRlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2dyYXZpdHktYXZhdGFyLXN0YWNrL2dyYXZpdHktYXZhdGFyLXN0YWNrLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7Ozs7QUFPckUsTUFBTSxPQUFPLDJCQUEyQjtJQUx4QztRQU9rQixXQUFNLEdBQVksSUFBSSxDQUFDO1FBRXZCLHdCQUFtQixHQUFZLEtBQUssQ0FBQztRQUdwQyxnQkFBVyxHQUF3QixJQUFJLFlBQVksRUFBTyxDQUFDO1FBRXJFLG9CQUFlLEdBQWEsRUFBRSxDQUFDO1FBQy9CLGtCQUFhLEdBQWUsRUFBRSxDQUFDO0tBd0J2QztJQXRCUSxPQUFPLENBQUMsS0FBYTtRQUMxQixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUxRCxJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtZQUM1QixJQUFJLGFBQWEsS0FBSyxDQUFDLENBQUMsRUFBRTtnQkFDeEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQztnQkFDckUsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7YUFDcEY7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUM1QztTQUNGO2FBQU07WUFDTCxJQUFJLGFBQWEsS0FBSyxDQUFDLENBQUMsRUFBRTtnQkFDeEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMvQixJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2FBQzFDO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO2dCQUMxQixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQzthQUN6QjtTQUNGO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzVDLENBQUM7K0dBakNVLDJCQUEyQjttR0FBM0IsMkJBQTJCLCtOQ1B4Qyw0cUJBYU07OzRGRE5PLDJCQUEyQjtrQkFMdkMsU0FBUzsrQkFDRSxzQkFBc0I7OEJBS2hCLE1BQU07c0JBQXJCLEtBQUs7Z0JBQ1UsTUFBTTtzQkFBckIsS0FBSztnQkFDVSxLQUFLO3NCQUFwQixLQUFLO2dCQUNVLG1CQUFtQjtzQkFBbEMsS0FBSztnQkFDVSxJQUFJO3NCQUFuQixLQUFLO2dCQUVXLFdBQVc7c0JBQTNCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ3Jhdml0eS1hdmF0YXItc3RhY2snLFxuICB0ZW1wbGF0ZVVybDogJy4vZ3Jhdml0eS1hdmF0YXItc3RhY2suY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ncmF2aXR5LWF2YXRhci1zdGFjay5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEdyYXZpdHlBdmF0YXJTdGFja0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHB1YmxpYyBjb25maWc6IHsgaWNvbjogc3RyaW5nLCBsYWJlbDogc3RyaW5nIH07XG4gIEBJbnB1dCgpIHB1YmxpYyBpc0NvaW46IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBwdWJsaWMgaXRlbXM6IEFycmF5PGFueT47XG4gIEBJbnB1dCgpIHB1YmxpYyBzZWxlY3RNdWx0aXBsZUl0ZW1zOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBzaXplOiAnbGcnIHwgJ21kJyB8ICdzbSc7XG5cbiAgQE91dHB1dCgpIHB1YmxpYyBjbGlja09uSWNvbjogRXZlbnRFbWl0dGVyPGFueVtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIHB1YmxpYyBzZWxlY3RlZEluZGV4ZXM6IG51bWJlcltdID0gW107XG4gIHB1YmxpYyBzZWxlY3RlZEl0ZW1zOiBBcnJheTxhbnk+ID0gW107XG5cbiAgcHVibGljIG9uQ2xpY2soaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdGVkSW5kZXggPSB0aGlzLnNlbGVjdGVkSW5kZXhlcy5pbmRleE9mKGluZGV4KTtcblxuICAgIGlmICh0aGlzLnNlbGVjdE11bHRpcGxlSXRlbXMpIHtcbiAgICAgIGlmIChzZWxlY3RlZEluZGV4ICE9PSAtMSkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXhlcyA9IHRoaXMuc2VsZWN0ZWRJbmRleGVzLmZpbHRlcihpID0+IGkgIT09IGluZGV4KTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmZpbHRlcihpdGVtID0+IGl0ZW0gIT09IHRoaXMuaXRlbXNbaW5kZXhdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleGVzLnB1c2goaW5kZXgpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaCh0aGlzLml0ZW1zW2luZGV4XSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChzZWxlY3RlZEluZGV4ID09PSAtMSkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXhlcyA9IFtpbmRleF07XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFt0aGlzLml0ZW1zW2luZGV4XV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXhlcyA9IFtdO1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5jbGlja09uSWNvbi5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtcyk7XG4gIH1cbn0iLCI8ZGl2IGNsYXNzPVwic3RhY2staWNvbi1jb250YWluZXJcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtczsgbGV0IGkgPSBpbmRleFwiPlxuICAgIDxkaXYgY2xhc3M9XCJpY29uLXdyYXBwZXJcIiBbc3R5bGUuei1pbmRleF09XCJzZWxlY3RlZEluZGV4ZXMuaW5jbHVkZXMoaSkgPyAxMDAgOiBpdGVtcy5sZW5ndGggLSBpXCJcbiAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJzZWxlY3RlZEluZGV4ZXMuaW5jbHVkZXMoaSlcIj5cbiAgICAgIDxncmF2aXR5LWljb25cbiAgICAgICAgICBjbGFzcz1cImF2YXRhci1pY29uIHBvaW50ZXIge3tzaXplfX1cIlxuICAgICAgICAgIChjbGljayk9XCJvbkNsaWNrKGkpO1wiIFthdHRyLmRhdGEtY3ldPVwiJ3N0YWNrLWl0ZW0tJyArIGl0ZW1bY29uZmlnLmxhYmVsXVwiXG4gICAgICAgICAgW2ljb25OYW1lXT1cIidjb2luLWlkLScgKyBpdGVtW2NvbmZpZy5pY29uXVwiXG4gICAgICAgICAgW2lzQ29pbl09XCJpc0NvaW5cIj5cbiAgICAgIDwvZ3Jhdml0eS1pY29uPlxuICAgICAgPHAgKm5nSWY9XCJjb25maWcubGFiZWxcIiBjbGFzcz1cImhyLWJvZHktdGV4dCBzbS1yZWd1bGFyIGhvdmVyLXRleHRcIj57eyBpdGVtW2NvbmZpZy5sYWJlbF0gfX08L3A+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+Il19
@@ -59,7 +59,7 @@ export class GravityTooltipComponent {
59
59
  }
60
60
  else {
61
61
  /* Is tooltip outside the visible area */
62
- const placements = ['top', 'right', 'bottom', 'left'];
62
+ const placements = ['top', 'top-left', 'top-right', 'right', 'right-top', 'right-bottom', 'bottom', 'bottom-right', 'bottom-left', 'left', 'left-top', 'left-bottom'];
63
63
  let isPlacementSet;
64
64
  for (const placement of placements) {
65
65
  if (this.setHostStyle(placement)) {
@@ -93,23 +93,57 @@ export class GravityTooltipComponent {
93
93
  }
94
94
  let topStyle;
95
95
  let leftStyle;
96
- if (placement === 'top') {
97
- topStyle = (this.elementPosition.top + scrollY) - (tooltipHeight + this.tooltipOffset);
98
- }
99
- if (placement === 'bottom') {
100
- topStyle = (this.elementPosition.top + scrollY) + elementHeight + this.tooltipOffset;
101
- }
102
- if (placement === 'top' || placement === 'bottom') {
103
- leftStyle = (this.elementPosition.left + elementWidth / 2) - tooltipWidth / 2;
104
- }
105
- if (placement === 'left') {
106
- leftStyle = this.elementPosition.left - tooltipWidth - this.tooltipOffset;
107
- }
108
- if (placement === 'right') {
109
- leftStyle = this.elementPosition.left + elementWidth + this.tooltipOffset;
110
- }
111
- if (placement === 'left' || placement === 'right') {
112
- topStyle = (this.elementPosition.top + scrollY) + elementHeight / 2 - tooltip.clientHeight / 2;
96
+ switch (placement) {
97
+ case 'top':
98
+ topStyle = (this.elementPosition.top + scrollY) - (tooltipHeight + this.tooltipOffset);
99
+ leftStyle = (this.elementPosition.left + elementWidth / 2) - tooltipWidth / 2;
100
+ break;
101
+ case 'top-left':
102
+ topStyle = (this.elementPosition.top + scrollY) - (tooltipHeight + this.tooltipOffset);
103
+ leftStyle = (this.elementPosition.left + elementWidth / 2) - (tooltipWidth * 0.1);
104
+ break;
105
+ case 'top-right':
106
+ topStyle = (this.elementPosition.top + scrollY) - (tooltipHeight + this.tooltipOffset);
107
+ leftStyle = (this.elementPosition.left + elementWidth / 2) - (tooltipWidth * 0.9);
108
+ break;
109
+ case 'bottom':
110
+ topStyle = (this.elementPosition.top + scrollY) + elementHeight + this.tooltipOffset;
111
+ leftStyle = (this.elementPosition.left + elementWidth / 2) - tooltipWidth / 2;
112
+ break;
113
+ case 'bottom-left':
114
+ topStyle = (this.elementPosition.top + scrollY) + elementHeight + this.tooltipOffset;
115
+ leftStyle = (this.elementPosition.left + elementWidth / 2) - (tooltipWidth * 0.1);
116
+ break;
117
+ case 'bottom-right':
118
+ topStyle = (this.elementPosition.top + scrollY) + elementHeight + this.tooltipOffset;
119
+ leftStyle = (this.elementPosition.left + elementWidth / 2) - (tooltipWidth * 0.9);
120
+ break;
121
+ case 'left':
122
+ leftStyle = this.elementPosition.left - tooltipWidth - this.tooltipOffset;
123
+ topStyle = (this.elementPosition.top + scrollY) + elementHeight / 2 - tooltipHeight / 2;
124
+ break;
125
+ case 'left-top':
126
+ leftStyle = this.elementPosition.left - tooltipWidth - this.tooltipOffset;
127
+ topStyle = (this.elementPosition.top + scrollY + elementHeight / 2) - (tooltipHeight * 0.1);
128
+ break;
129
+ case 'left-bottom':
130
+ leftStyle = this.elementPosition.left - tooltipWidth - this.tooltipOffset;
131
+ topStyle = (this.elementPosition.top + scrollY + elementHeight / 2) - (tooltipHeight * 0.9);
132
+ break;
133
+ case 'right':
134
+ leftStyle = this.elementPosition.left + elementWidth + this.tooltipOffset;
135
+ topStyle = (this.elementPosition.top + scrollY) + elementHeight / 2 - tooltipHeight / 2;
136
+ break;
137
+ case 'right-top':
138
+ leftStyle = this.elementPosition.left + elementWidth + this.tooltipOffset;
139
+ topStyle = (this.elementPosition.top + scrollY + elementHeight / 2) - (tooltipHeight * 0.1);
140
+ break;
141
+ case 'right-bottom':
142
+ leftStyle = this.elementPosition.left + elementWidth + this.tooltipOffset;
143
+ topStyle = (this.elementPosition.top + scrollY + elementHeight / 2) - (tooltipHeight * 0.9);
144
+ break;
145
+ default:
146
+ return false;
113
147
  }
114
148
  /* Is tooltip outside the visible area */
115
149
  if (this.autoPlacement && !disableAutoPlacement) {
@@ -159,11 +193,11 @@ export class GravityTooltipComponent {
159
193
  this.hostStyleWidth = this.options['width'] ? this.options['width'] : '';
160
194
  }
161
195
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GravityTooltipComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
162
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: GravityTooltipComponent, selector: "tooltip", inputs: { data: "data", show: "show" }, host: { listeners: { "transitionend": "transitionEnd($event)" }, properties: { "style.top": "this.hostStyleTop", "style.left": "this.hostStyleLeft", "style.z-index": "this.hostStyleZIndex", "style.transition": "this.hostStyleTransition", "style.width": "this.hostStyleWidth", "style.max-width": "this.hostStyleMaxWidth", "style.pointer-events": "this.hostStylePointerEvents", "class.tooltip-show": "this.hostClassShow", "class.tooltip-shadow": "this.hostClassShadow", "class.tooltip-light": "this.hostClassLight" }, classAttribute: "tooltip" }, ngImport: i0, template: "<div *ngIf=\"isThemeLight\" class=\"tooltip-arrow\"></div>\n\n<div *ngIf=\"options['contentType'] === 'template' else htmlOrStringTemplate\">\n <ng-container *ngTemplateOutlet=\"value\"></ng-container>\n</div>\n\n<ng-template #htmlOrStringTemplate>\n <div [innerHTML]=\"value\"></div>\n</ng-template>\n", styles: [":host{max-width:200px;background-color:var(--bg-tooltip-primary);color:var(--on-bg-tooltip-primary);text-align:center;border-radius:6px;padding:5px 8px;position:absolute;pointer-events:none;z-index:1000;display:block;opacity:0;transition:opacity .3s;top:0;left:0}:host.tooltip-show{opacity:1}:host.tooltip-shadow{box-shadow:0 7px 15px -5px #0006}:host.tooltip-light.tooltip-shadow{box-shadow:0 5px 15px -5px #0006}:host.tooltip:after{content:\"\";position:absolute;border-style:solid}:host.tooltip-top:after{top:100%;left:50%;margin-left:-5px;border-width:5px;border-color:var(--bg-tooltip-primary) transparent transparent transparent}:host.tooltip-bottom:after{bottom:100%;left:50%;margin-left:-5px;border-width:5px;border-color:transparent transparent var(--bg-tooltip-primary) transparent}:host.tooltip-left:after{top:50%;left:100%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--bg-tooltip-primary)}:host.tooltip-right:after{top:50%;right:100%;margin-top:-5px;border-width:5px;border-color:transparent var(--bg-tooltip-primary) transparent transparent}:host.tooltip-light:after{display:none}:host.tooltip-light{border:1px solid rgba(0,0,0,.06);background-color:#fff;color:#000}:host.tooltip-light .tooltip-arrow{position:absolute;width:10px;height:10px;transform:rotate(135deg);background-color:#00000012}:host.tooltip-light .tooltip-arrow:after{background-color:#fff;content:\"\";display:block;position:absolute;width:10px;height:10px}:host.tooltip-top.tooltip-light{margin-top:-2px}:host.tooltip-top.tooltip-light .tooltip-arrow{top:100%;left:50%;margin-top:-4px;margin-left:-5px;background:linear-gradient(to bottom left,rgba(0,0,0,.07) 50%,transparent 50%)}:host.tooltip-top.tooltip-light .tooltip-arrow:after{top:1px;right:1px}:host.tooltip-bottom.tooltip-light .tooltip-arrow{bottom:100%;left:50%;margin-bottom:-4px;margin-left:-5px;background:linear-gradient(to top right,rgba(0,0,0,.1) 50%,transparent 50%)}:host.tooltip-bottom.tooltip-light .tooltip-arrow:after{top:-1px;right:-1px}:host.tooltip-left.tooltip-light .tooltip-arrow{top:50%;left:100%;margin-top:-5px;margin-left:-4px;background:linear-gradient(to bottom right,rgba(0,0,0,.07) 50%,transparent 50%)}:host.tooltip-left.tooltip-light .tooltip-arrow:after{top:1px;right:-1px}:host.tooltip-right.tooltip-light .tooltip-arrow{top:50%;right:100%;margin-top:-5px;margin-right:-4px;background:linear-gradient(to top left,rgba(0,0,0,.07) 50%,transparent 50%)}:host.tooltip-right.tooltip-light .tooltip-arrow:after{top:-1px;right:1px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
196
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: GravityTooltipComponent, selector: "tooltip", inputs: { data: "data", show: "show" }, host: { listeners: { "transitionend": "transitionEnd($event)" }, properties: { "style.top": "this.hostStyleTop", "style.left": "this.hostStyleLeft", "style.z-index": "this.hostStyleZIndex", "style.transition": "this.hostStyleTransition", "style.width": "this.hostStyleWidth", "style.max-width": "this.hostStyleMaxWidth", "style.pointer-events": "this.hostStylePointerEvents", "class.tooltip-show": "this.hostClassShow", "class.tooltip-shadow": "this.hostClassShadow", "class.tooltip-light": "this.hostClassLight" }, classAttribute: "tooltip" }, ngImport: i0, template: "<div *ngIf=\"isThemeLight\" class=\"tooltip-arrow\"></div>\n\n<div *ngIf=\"options['contentType'] === 'template' else htmlOrStringTemplate\">\n <ng-container *ngTemplateOutlet=\"value\"></ng-container>\n</div>\n\n<ng-template #htmlOrStringTemplate>\n <div [innerHTML]=\"value\"></div>\n</ng-template>\n", styles: [":host{max-width:200px;background-color:var(--bg-tooltip-primary);color:var(--on-bg-tooltip-primary);text-align:center;border-radius:6px;padding:5px 8px;position:absolute;pointer-events:none;z-index:1000;display:block;opacity:0;transition:opacity .3s;top:0;left:0}:host.tooltip-show{opacity:1}:host.tooltip-shadow{box-shadow:0 7px 15px -5px #0006}:host.tooltip-light.tooltip-shadow{box-shadow:0 5px 15px -5px #0006}:host.tooltip:after{content:\"\";position:absolute;border-style:solid}:host.tooltip-top:after{top:100%;left:50%;margin-left:-5px;border-width:5px;border-color:var(--bg-tooltip-primary) transparent transparent transparent}:host.tooltip-top-left:after{top:100%;left:10%;margin-left:-5px;border-width:5px;border-color:var(--bg-tooltip-primary) transparent transparent transparent}:host.tooltip-top-right:after{top:100%;left:90%;margin-left:-5px;border-width:5px;border-color:var(--bg-tooltip-primary) transparent transparent transparent}:host.tooltip-bottom:after{bottom:100%;left:50%;margin-left:-5px;border-width:5px;border-color:transparent transparent var(--bg-tooltip-primary) transparent}:host.tooltip-bottom-left:after{bottom:100%;left:10%;margin-left:-5px;border-width:5px;border-color:transparent transparent var(--bg-tooltip-primary) transparent}:host.tooltip-bottom-right:after{bottom:100%;left:90%;margin-left:-5px;border-width:5px;border-color:transparent transparent var(--bg-tooltip-primary) transparent}:host.tooltip-left:after{top:50%;left:100%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--bg-tooltip-primary)}:host.tooltip-left-top:after{top:10%;left:100%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--bg-tooltip-primary)}:host.tooltip-left-bottom:after{top:90%;left:100%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--bg-tooltip-primary)}:host.tooltip-right:after{top:50%;right:100%;margin-top:-5px;border-width:5px;border-color:transparent var(--bg-tooltip-primary) transparent transparent}:host.tooltip-right-top:after{top:10%;right:100%;margin-top:-5px;border-width:5px;border-color:transparent var(--bg-tooltip-primary) transparent transparent}:host.tooltip-right-bottom:after{top:90%;right:100%;margin-top:-5px;border-width:5px;border-color:transparent var(--bg-tooltip-primary) transparent transparent}:host.tooltip-light:after{display:none}:host.tooltip-light{border:1px solid rgba(0,0,0,.06);background-color:#fff;color:#000}:host.tooltip-light .tooltip-arrow{position:absolute;width:10px;height:10px;transform:rotate(135deg);background-color:#00000012}:host.tooltip-light .tooltip-arrow:after{background-color:#fff;content:\"\";display:block;position:absolute;width:10px;height:10px}:host.tooltip-top.tooltip-light{margin-top:-2px}:host.tooltip-top.tooltip-light .tooltip-arrow{top:100%;left:50%;margin-top:-4px;margin-left:-5px;background:linear-gradient(to bottom left,rgba(0,0,0,.07) 50%,transparent 50%)}:host.tooltip-top.tooltip-light .tooltip-arrow:after{top:1px;right:1px}:host.tooltip-bottom.tooltip-light .tooltip-arrow{bottom:100%;left:50%;margin-bottom:-4px;margin-left:-5px;background:linear-gradient(to top right,rgba(0,0,0,.1) 50%,transparent 50%)}:host.tooltip-bottom.tooltip-light .tooltip-arrow:after{top:-1px;right:-1px}:host.tooltip-left.tooltip-light .tooltip-arrow{top:50%;left:100%;margin-top:-5px;margin-left:-4px;background:linear-gradient(to bottom right,rgba(0,0,0,.07) 50%,transparent 50%)}:host.tooltip-left.tooltip-light .tooltip-arrow:after{top:1px;right:-1px}:host.tooltip-right.tooltip-light .tooltip-arrow{top:50%;right:100%;margin-top:-5px;margin-right:-4px;background:linear-gradient(to top left,rgba(0,0,0,.07) 50%,transparent 50%)}:host.tooltip-right.tooltip-light .tooltip-arrow:after{top:-1px;right:1px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
163
197
  }
164
198
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GravityTooltipComponent, decorators: [{
165
199
  type: Component,
166
- args: [{ selector: 'tooltip', host: { 'class': 'tooltip' }, template: "<div *ngIf=\"isThemeLight\" class=\"tooltip-arrow\"></div>\n\n<div *ngIf=\"options['contentType'] === 'template' else htmlOrStringTemplate\">\n <ng-container *ngTemplateOutlet=\"value\"></ng-container>\n</div>\n\n<ng-template #htmlOrStringTemplate>\n <div [innerHTML]=\"value\"></div>\n</ng-template>\n", styles: [":host{max-width:200px;background-color:var(--bg-tooltip-primary);color:var(--on-bg-tooltip-primary);text-align:center;border-radius:6px;padding:5px 8px;position:absolute;pointer-events:none;z-index:1000;display:block;opacity:0;transition:opacity .3s;top:0;left:0}:host.tooltip-show{opacity:1}:host.tooltip-shadow{box-shadow:0 7px 15px -5px #0006}:host.tooltip-light.tooltip-shadow{box-shadow:0 5px 15px -5px #0006}:host.tooltip:after{content:\"\";position:absolute;border-style:solid}:host.tooltip-top:after{top:100%;left:50%;margin-left:-5px;border-width:5px;border-color:var(--bg-tooltip-primary) transparent transparent transparent}:host.tooltip-bottom:after{bottom:100%;left:50%;margin-left:-5px;border-width:5px;border-color:transparent transparent var(--bg-tooltip-primary) transparent}:host.tooltip-left:after{top:50%;left:100%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--bg-tooltip-primary)}:host.tooltip-right:after{top:50%;right:100%;margin-top:-5px;border-width:5px;border-color:transparent var(--bg-tooltip-primary) transparent transparent}:host.tooltip-light:after{display:none}:host.tooltip-light{border:1px solid rgba(0,0,0,.06);background-color:#fff;color:#000}:host.tooltip-light .tooltip-arrow{position:absolute;width:10px;height:10px;transform:rotate(135deg);background-color:#00000012}:host.tooltip-light .tooltip-arrow:after{background-color:#fff;content:\"\";display:block;position:absolute;width:10px;height:10px}:host.tooltip-top.tooltip-light{margin-top:-2px}:host.tooltip-top.tooltip-light .tooltip-arrow{top:100%;left:50%;margin-top:-4px;margin-left:-5px;background:linear-gradient(to bottom left,rgba(0,0,0,.07) 50%,transparent 50%)}:host.tooltip-top.tooltip-light .tooltip-arrow:after{top:1px;right:1px}:host.tooltip-bottom.tooltip-light .tooltip-arrow{bottom:100%;left:50%;margin-bottom:-4px;margin-left:-5px;background:linear-gradient(to top right,rgba(0,0,0,.1) 50%,transparent 50%)}:host.tooltip-bottom.tooltip-light .tooltip-arrow:after{top:-1px;right:-1px}:host.tooltip-left.tooltip-light .tooltip-arrow{top:50%;left:100%;margin-top:-5px;margin-left:-4px;background:linear-gradient(to bottom right,rgba(0,0,0,.07) 50%,transparent 50%)}:host.tooltip-left.tooltip-light .tooltip-arrow:after{top:1px;right:-1px}:host.tooltip-right.tooltip-light .tooltip-arrow{top:50%;right:100%;margin-top:-5px;margin-right:-4px;background:linear-gradient(to top left,rgba(0,0,0,.07) 50%,transparent 50%)}:host.tooltip-right.tooltip-light .tooltip-arrow:after{top:-1px;right:1px}\n"] }]
200
+ args: [{ selector: 'tooltip', host: { 'class': 'tooltip' }, template: "<div *ngIf=\"isThemeLight\" class=\"tooltip-arrow\"></div>\n\n<div *ngIf=\"options['contentType'] === 'template' else htmlOrStringTemplate\">\n <ng-container *ngTemplateOutlet=\"value\"></ng-container>\n</div>\n\n<ng-template #htmlOrStringTemplate>\n <div [innerHTML]=\"value\"></div>\n</ng-template>\n", styles: [":host{max-width:200px;background-color:var(--bg-tooltip-primary);color:var(--on-bg-tooltip-primary);text-align:center;border-radius:6px;padding:5px 8px;position:absolute;pointer-events:none;z-index:1000;display:block;opacity:0;transition:opacity .3s;top:0;left:0}:host.tooltip-show{opacity:1}:host.tooltip-shadow{box-shadow:0 7px 15px -5px #0006}:host.tooltip-light.tooltip-shadow{box-shadow:0 5px 15px -5px #0006}:host.tooltip:after{content:\"\";position:absolute;border-style:solid}:host.tooltip-top:after{top:100%;left:50%;margin-left:-5px;border-width:5px;border-color:var(--bg-tooltip-primary) transparent transparent transparent}:host.tooltip-top-left:after{top:100%;left:10%;margin-left:-5px;border-width:5px;border-color:var(--bg-tooltip-primary) transparent transparent transparent}:host.tooltip-top-right:after{top:100%;left:90%;margin-left:-5px;border-width:5px;border-color:var(--bg-tooltip-primary) transparent transparent transparent}:host.tooltip-bottom:after{bottom:100%;left:50%;margin-left:-5px;border-width:5px;border-color:transparent transparent var(--bg-tooltip-primary) transparent}:host.tooltip-bottom-left:after{bottom:100%;left:10%;margin-left:-5px;border-width:5px;border-color:transparent transparent var(--bg-tooltip-primary) transparent}:host.tooltip-bottom-right:after{bottom:100%;left:90%;margin-left:-5px;border-width:5px;border-color:transparent transparent var(--bg-tooltip-primary) transparent}:host.tooltip-left:after{top:50%;left:100%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--bg-tooltip-primary)}:host.tooltip-left-top:after{top:10%;left:100%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--bg-tooltip-primary)}:host.tooltip-left-bottom:after{top:90%;left:100%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--bg-tooltip-primary)}:host.tooltip-right:after{top:50%;right:100%;margin-top:-5px;border-width:5px;border-color:transparent var(--bg-tooltip-primary) transparent transparent}:host.tooltip-right-top:after{top:10%;right:100%;margin-top:-5px;border-width:5px;border-color:transparent var(--bg-tooltip-primary) transparent transparent}:host.tooltip-right-bottom:after{top:90%;right:100%;margin-top:-5px;border-width:5px;border-color:transparent var(--bg-tooltip-primary) transparent transparent}:host.tooltip-light:after{display:none}:host.tooltip-light{border:1px solid rgba(0,0,0,.06);background-color:#fff;color:#000}:host.tooltip-light .tooltip-arrow{position:absolute;width:10px;height:10px;transform:rotate(135deg);background-color:#00000012}:host.tooltip-light .tooltip-arrow:after{background-color:#fff;content:\"\";display:block;position:absolute;width:10px;height:10px}:host.tooltip-top.tooltip-light{margin-top:-2px}:host.tooltip-top.tooltip-light .tooltip-arrow{top:100%;left:50%;margin-top:-4px;margin-left:-5px;background:linear-gradient(to bottom left,rgba(0,0,0,.07) 50%,transparent 50%)}:host.tooltip-top.tooltip-light .tooltip-arrow:after{top:1px;right:1px}:host.tooltip-bottom.tooltip-light .tooltip-arrow{bottom:100%;left:50%;margin-bottom:-4px;margin-left:-5px;background:linear-gradient(to top right,rgba(0,0,0,.1) 50%,transparent 50%)}:host.tooltip-bottom.tooltip-light .tooltip-arrow:after{top:-1px;right:-1px}:host.tooltip-left.tooltip-light .tooltip-arrow{top:50%;left:100%;margin-top:-5px;margin-left:-4px;background:linear-gradient(to bottom right,rgba(0,0,0,.07) 50%,transparent 50%)}:host.tooltip-left.tooltip-light .tooltip-arrow:after{top:1px;right:-1px}:host.tooltip-right.tooltip-light .tooltip-arrow{top:50%;right:100%;margin-top:-5px;margin-right:-4px;background:linear-gradient(to top left,rgba(0,0,0,.07) 50%,transparent 50%)}:host.tooltip-right.tooltip-light .tooltip-arrow:after{top:-1px;right:1px}\n"] }]
167
201
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { data: [{
168
202
  type: Input
169
203
  }], hostStyleTop: [{
@@ -202,4 +236,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
202
236
  }], show: [{
203
237
  type: Input
204
238
  }] } });
205
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3Jhdml0eS10b29sdGlwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dyYXZpdHktZGVzaWduLXN5c3RlbS9zcmMvbGliL3ZlbmRvci9ncmF2aXR5LXRvb2x0aXAvZ3Jhdml0eS10b29sdGlwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dyYXZpdHktZGVzaWduLXN5c3RlbS9zcmMvbGliL3ZlbmRvci9ncmF2aXR5LXRvb2x0aXAvZ3Jhdml0eS10b29sdGlwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQWMsWUFBWSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFvQixNQUFNLGVBQWUsQ0FBQzs7O0FBU3ZILE1BQU0sT0FBTyx1QkFBdUI7SUFrQmxDLGFBQWE7UUFDWCxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDYixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztnQkFDZixJQUFJLEVBQUUsT0FBTzthQUNkLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVELElBQWEsSUFBSSxDQUFDLEtBQWM7UUFDOUIsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDcEI7UUFDRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQzFDLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEs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LFVBQVUsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzNFLENBQUM7K0dBNU1VLHVCQUF1QjttR0FBdkIsdUJBQXVCLHduQkNUcEMsa1RBU0E7OzRGREFhLHVCQUF1QjtrQkFQbkMsU0FBUzsrQkFDRSxTQUFTLFFBRWIsRUFBQyxPQUFPLEVBQUUsU0FBUyxFQUFDO3lIQVFqQixJQUFJO3NCQUFaLEtBQUs7Z0JBRW9CLFlBQVk7c0JBQXJDLFdBQVc7dUJBQUMsV0FBVztnQkFDRyxhQUFhO3NCQUF2QyxXQUFXO3VCQUFDLFlBQVk7Z0JBQ0ssZUFBZTtzQkFBNUMsV0FBVzt1QkFBQyxlQUFlO2dCQUNLLG1CQUFtQjtzQkFBbkQsV0FBVzt1QkFBQyxrQkFBa0I7Z0JBQ0gsY0FBYztzQkFBekMsV0FBVzt1QkFBQyxhQUFhO2dCQUNNLGlCQUFpQjtzQkFBaEQsV0FBVzt1QkFBQyxpQkFBaUI7Z0JBQ08sc0JBQXNCO3NCQUExRCxXQUFXO3VCQUFDLHNCQUFzQjtnQkFDQSxhQUFhO3NCQUEvQyxXQUFXO3VCQUFDLG9CQUFvQjtnQkFDSSxlQUFlO3NCQUFuRCxXQUFXO3VCQUFDLHNCQUFzQjtnQkFDQyxjQUFjO3NCQUFqRCxXQUFXO3VCQUFDLHFCQUFxQjtnQkFHbEMsYUFBYTtzQkFEWixZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFTNUIsSUFBSTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkluaXQsIFJlbmRlcmVyMn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Rvb2x0aXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vZ3Jhdml0eS10b29sdGlwLmNvbXBvbmVudC5odG1sJyxcbiAgaG9zdDogeydjbGFzcyc6ICd0b29sdGlwJ30sXG4gIHN0eWxlVXJsczogWycuL2dyYXZpdHktdG9vbHRpcC5jb21wb25lbnQuc2FzcyddXG59KVxuXG5leHBvcnQgY2xhc3MgR3Jhdml0eVRvb2x0aXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBfc2hvdzogYm9vbGVhbiA9IGZhbHNlO1xuICBldmVudHMgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQElucHV0KCkgZGF0YTogYW55O1xuXG4gIEBIb3N0QmluZGluZygnc3R5bGUudG9wJykgaG9zdFN0eWxlVG9wITogc3RyaW5nO1xuICBASG9zdEJpbmRpbmcoJ3N0eWxlLmxlZnQnKSBob3N0U3R5bGVMZWZ0ITogc3RyaW5nO1xuICBASG9zdEJpbmRpbmcoJ3N0eWxlLnotaW5kZXgnKSBob3N0U3R5bGVaSW5kZXghOiBudW1iZXI7XG4gIEBIb3N0QmluZGluZygnc3R5bGUudHJhbnNpdGlvbicpIGhvc3RTdHlsZVRyYW5zaXRpb24hOiBzdHJpbmc7XG4gIEBIb3N0QmluZGluZygnc3R5bGUud2lkdGgnKSBob3N0U3R5bGVXaWR0aCE6IHN0cmluZztcbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5tYXgtd2lkdGgnKSBob3N0U3R5bGVNYXhXaWR0aCE6IHN0cmluZztcbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5wb2ludGVyLWV2ZW50cycpIGhvc3RTdHlsZVBvaW50ZXJFdmVudHMhOiBzdHJpbmc7XG4gIEBIb3N0QmluZGluZygnY2xhc3MudG9vbHRpcC1zaG93JykgaG9zdENsYXNzU2hvdyE6IGJvb2xlYW47XG4gIEBIb3N0QmluZGluZygnY2xhc3MudG9vbHRpcC1zaGFkb3cnKSBob3N0Q2xhc3NTaGFkb3chOiBib29sZWFuO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRvb2x0aXAtbGlnaHQnKSBob3N0Q2xhc3NMaWdodCE6IGJvb2xlYW47XG5cbiAgQEhvc3RMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIFsnJGV2ZW50J10pXG4gIHRyYW5zaXRpb25FbmQoKSB7XG4gICAgaWYgKHRoaXMuc2hvdykge1xuICAgICAgdGhpcy5ldmVudHMuZW1pdCh7XG4gICAgICAgIHR5cGU6ICdzaG93bidcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBzaG93KHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLnNldFBvc2l0aW9uKCk7XG4gICAgfVxuICAgIHRoaXMuX3Nob3cgPSB0aGlzLmhvc3RDbGFzc1Nob3cgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBzaG93KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zaG93O1xuICB9XG5cbiAgZ2V0IHBsYWNlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLm9wdGlvbnMucGxhY2VtZW50O1xuICB9XG5cbiAgZ2V0IGF1dG9QbGFjZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5vcHRpb25zLmF1dG9QbGFjZW1lbnQ7XG4gIH1cblxuICBnZXQgZWxlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLmVsZW1lbnQ7XG4gIH1cblxuICBnZXQgZWxlbWVudFBvc2l0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmRhdGEuZWxlbWVudFBvc2l0aW9uO1xuICB9XG5cbiAgZ2V0IG9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5vcHRpb25zO1xuICB9XG5cbiAgZ2V0IHZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLmRhdGEudmFsdWU7XG4gIH1cblxuICBnZXQgdG9vbHRpcE9mZnNldCgpOiBudW1iZXIge1xuICAgIHJldHVybiBOdW1iZXIodGhpcy5kYXRhLm9wdGlvbnMub2Zmc2V0KTtcbiAgfVxuXG4gIGdldCBpc1RoZW1lTGlnaHQoKSB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9uc1sndGhlbWUnXSA9PT0gJ2xpZ2h0JztcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZiwgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyKSB7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNldEN1c3RvbUNsYXNzKCk7XG4gICAgdGhpcy5zZXRTdHlsZXMoKTtcbiAgfVxuXG4gIHNldFBvc2l0aW9uKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNldEhvc3RTdHlsZSh0aGlzLnBsYWNlbWVudCkpIHtcbiAgICAgIHRoaXMuc2V0UGxhY2VtZW50Q2xhc3ModGhpcy5wbGFjZW1lbnQpO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICAvKiBJcyB0b29sdGlwIG91dHNpZGUgdGhlIHZpc2libGUgYXJlYSAqL1xuICAgICAgY29uc3QgcGxhY2VtZW50cyA9IFsndG9wJywgJ3JpZ2h0JywgJ2JvdHRvbScsICdsZWZ0J107XG4gICAgICBsZXQgaXNQbGFjZW1lbnRTZXQ7XG5cbiAgICAgIGZvciAoY29uc3QgcGxhY2VtZW50IG9mIHBsYWNlbWVudHMpIHtcbiAgICAgICAgaWYgKHRoaXMuc2V0SG9zdFN0eWxlKHBsYWNlbWVudCkpIHtcbiAgICAgICAgICB0aGlzLnNldFBsYWNlbWVudENsYXNzKHBsYWNlbWVudCk7XG4gICAgICAgICAgaXNQbGFjZW1lbnRTZXQgPSB0cnVlO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvKiBTZXQgb3JpZ2luYWwgcGxhY2VtZW50ICovXG4gICAgICBpZiAoIWlzUGxhY2VtZW50U2V0KSB7XG4gICAgICAgIHRoaXMuc2V0SG9zdFN0eWxlKHRoaXMucGxhY2VtZW50LCB0cnVlKTtcbiAgICAgICAgdGhpcy5zZXRQbGFjZW1lbnRDbGFzcyh0aGlzLnBsYWNlbWVudCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cblxuICBzZXRQbGFjZW1lbnRDbGFzcyhwbGFjZW1lbnQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICd0b29sdGlwLScgKyBwbGFjZW1lbnQpO1xuICB9XG5cbiAgc2V0SG9zdFN0eWxlKHBsYWNlbWVudDogc3RyaW5nLCBkaXNhYmxlQXV0b1BsYWNlbWVudDogYm9vbGVhbiA9IGZhbHNlKTogYm9vbGVhbiB7XG4gICAgY29uc3QgaXNTdmcgPSB0aGlzLmVsZW1lbnQgaW5zdGFuY2VvZiBTVkdFbGVtZW50O1xuICAgIGNvbnN0IHRvb2x0aXAgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBpc0N1c3RvbVBvc2l0aW9uID0gIXRoaXMuZWxlbWVudFBvc2l0aW9uLnJpZ2h0O1xuXG4gICAgbGV0IGVsZW1lbnRIZWlnaHQgPSBpc1N2ZyA/IHRoaXMuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQgOiB0aGlzLmVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xuICAgIGxldCBlbGVtZW50V2lkdGggPSBpc1N2ZyA/IHRoaXMuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCA6IHRoaXMuZWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICBjb25zdCB0b29sdGlwSGVpZ2h0ID0gdG9vbHRpcC5jbGllbnRIZWlnaHQ7XG4gICAgY29uc3QgdG9vbHRpcFdpZHRoID0gdG9vbHRpcC5jbGllbnRXaWR0aDtcbiAgICBjb25zdCBzY3JvbGxZID0gd2luZG93LnBhZ2VZT2Zmc2V0O1xuXG4gICAgaWYgKGlzQ3VzdG9tUG9zaXRpb24pIHtcbiAgICAgIGVsZW1lbnRIZWlnaHQgPSAwO1xuICAgICAgZWxlbWVudFdpZHRoID0gMDtcbiAgICB9XG5cbiAgICBsZXQgdG9wU3R5bGU7XG4gICAgbGV0IGxlZnRTdHlsZTtcblxuICAgIGlmIChwbGFjZW1lbnQgPT09ICd0b3AnKSB7XG4gICAgICB0b3BTdHlsZSA9ICh0aGlzLmVsZW1lbnRQb3NpdGlvbi50b3AgKyBzY3JvbGxZKSAtICh0b29sdGlwSGVpZ2h0ICsgdGhpcy50b29sdGlwT2Zmc2V0KTtcbiAgICB9XG5cbiAgICBpZiAocGxhY2VtZW50ID09PSAnYm90dG9tJykge1xuICAgICAgdG9wU3R5bGUgPSAodGhpcy5lbGVtZW50UG9zaXRpb24udG9wICsgc2Nyb2xsWSkgKyBlbGVtZW50SGVpZ2h0ICsgdGhpcy50b29sdGlwT2Zmc2V0O1xuICAgIH1cblxuICAgIGlmIChwbGFjZW1lbnQgPT09ICd0b3AnIHx8IHBsYWNlbWVudCA9PT0gJ2JvdHRvbScpIHtcbiAgICAgIGxlZnRTdHlsZSA9ICh0aGlzLmVsZW1lbnRQb3NpdGlvbi5sZWZ0ICsgZWxlbWVudFdpZHRoIC8gMikgLSB0b29sdGlwV2lkdGggLyAyO1xuICAgIH1cblxuICAgIGlmIChwbGFjZW1lbnQgPT09ICdsZWZ0Jykge1xuICAgICAgbGVmdFN0eWxlID0gdGhpcy5lbGVtZW50UG9zaXRpb24ubGVmdCAtIHRvb2x0aXBXaWR0aCAtIHRoaXMudG9vbHRpcE9mZnNldDtcbiAgICB9XG5cbiAgICBpZiAocGxhY2VtZW50ID09PSAncmlnaHQnKSB7XG4gICAgICBsZWZ0U3R5bGUgPSB0aGlzLmVsZW1lbnRQb3NpdGlvbi5sZWZ0ICsgZWxlbWVudFdpZHRoICsgdGhpcy50b29sdGlwT2Zmc2V0O1xuICAgIH1cblxuICAgIGlmIChwbGFjZW1lbnQgPT09ICdsZWZ0JyB8fCBwbGFjZW1lbnQgPT09ICdyaWdodCcpIHtcbiAgICAgIHRvcFN0eWxlID0gKHRoaXMuZWxlbWVudFBvc2l0aW9uLnRvcCArIHNjcm9sbFkpICsgZWxlbWVudEhlaWdodCAvIDIgLSB0b29sdGlwLmNsaWVudEhlaWdodCAvIDI7XG4gICAgfVxuXG4gICAgLyogSXMgdG9vbHRpcCBvdXRzaWRlIHRoZSB2aXNpYmxlIGFyZWEgKi9cbiAgICBpZiAodGhpcy5hdXRvUGxhY2VtZW50ICYmICFkaXNhYmxlQXV0b1BsYWNlbWVudCkge1xuICAgICAgY29uc3QgdG9wRWRnZSA9IHRvcFN0eWxlO1xuICAgICAgY29uc3QgYm90dG9tRWRnZSA9IHRvcFN0eWxlICsgdG9vbHRpcEhlaWdodDtcbiAgICAgIGNvbnN0IGxlZnRFZGdlID0gbGVmdFN0eWxlO1xuICAgICAgY29uc3QgcmlnaHRFZGdlID0gbGVmdFN0eWxlICsgdG9vbHRpcFdpZHRoO1xuICAgICAgY29uc3QgYm9keUhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodCArIHNjcm9sbFk7XG4gICAgICBjb25zdCBib2R5V2lkdGggPSBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoO1xuXG4gICAgICBpZiAodG9wRWRnZSA8IDAgfHwgYm90dG9tRWRnZSA+IGJvZHlIZWlnaHQgfHwgbGVmdEVkZ2UgPCAwIHx8IHJpZ2h0RWRnZSA+IGJvZHlXaWR0aCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5ob3N0U3R5bGVUb3AgPSB0b3BTdHlsZSArICdweCc7XG4gICAgdGhpcy5ob3N0U3R5bGVMZWZ0ID0gbGVmdFN0eWxlICsgJ3B4JztcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHNldFpJbmRleCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5vcHRpb25zWyd6SW5kZXgnXSAhPT0gMCkge1xuICAgICAgdGhpcy5ob3N0U3R5bGVaSW5kZXggPSB0aGlzLm9wdGlvbnNbJ3pJbmRleCddO1xuICAgIH1cbiAgfVxuXG4gIHNldFBvaW50ZXJFdmVudHMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub3B0aW9uc1sncG9pbnRlckV2ZW50cyddKSB7XG4gICAgICB0aGlzLmhvc3RTdHlsZVBvaW50ZXJFdmVudHMgPSB0aGlzLm9wdGlvbnNbJ3BvaW50ZXJFdmVudHMnXTtcbiAgICB9XG4gIH1cblxuICBzZXRDdXN0b21DbGFzcygpIHtcbiAgICBpZiAodGhpcy5vcHRpb25zWyd0b29sdGlwQ2xhc3MnXSkge1xuICAgICAgdGhpcy5vcHRpb25zWyd0b29sdGlwQ2xhc3MnXS5zcGxpdCgnICcpLmZvckVhY2goKGNsYXNzTmFtZTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIGNsYXNzTmFtZSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBzZXRBbmltYXRpb25EdXJhdGlvbigpIHtcbiAgICBpZiAoTnVtYmVyKHRoaXMub3B0aW9uc1snYW5pbWF0aW9uRHVyYXRpb24nXSkgIT0gdGhpcy5vcHRpb25zWydhbmltYXRpb25EdXJhdGlvbkRlZmF1bHQnXSkge1xuICAgICAgdGhpcy5ob3N0U3R5bGVUcmFuc2l0aW9uID0gJ29wYWNpdHkgJyArIHRoaXMub3B0aW9uc1snYW5pbWF0aW9uRHVyYXRpb24nXSArICdtcyc7XG4gICAgfVxuICB9XG5cbiAgc2V0U3R5bGVzKCkge1xuICAgIHRoaXMuc2V0WkluZGV4KCk7XG4gICAgdGhpcy5zZXRQb2ludGVyRXZlbnRzKCk7XG4gICAgdGhpcy5zZXRBbmltYXRpb25EdXJhdGlvbigpO1xuXG4gICAgdGhpcy5ob3N0Q2xhc3NTaGFkb3cgPSB0aGlzLm9wdGlvbnNbJ3NoYWRvdyddO1xuICAgIHRoaXMuaG9zdENsYXNzTGlnaHQgPSB0aGlzLmlzVGhlbWVMaWdodDtcbiAgICB0aGlzLmhvc3RTdHlsZU1heFdpZHRoID0gdGhpcy5vcHRpb25zWydtYXhXaWR0aCddO1xuICAgIHRoaXMuaG9zdFN0eWxlV2lkdGggPSB0aGlzLm9wdGlvbnNbJ3dpZHRoJ10gPyB0aGlzLm9wdGlvbnNbJ3dpZHRoJ10gOiAnJztcbiAgfVxufVxuIiwiPGRpdiAqbmdJZj1cImlzVGhlbWVMaWdodFwiIGNsYXNzPVwidG9vbHRpcC1hcnJvd1wiPjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwib3B0aW9uc1snY29udGVudFR5cGUnXSA9PT0gJ3RlbXBsYXRlJyBlbHNlIGh0bWxPclN0cmluZ1RlbXBsYXRlXCI+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ2YWx1ZVwiPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjaHRtbE9yU3RyaW5nVGVtcGxhdGU+XG4gIDxkaXYgW2lubmVySFRNTF09XCJ2YWx1ZVwiPjwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
239
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3Jhdml0eS10b29sdGlwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dyYXZpdHktZGVzaWduLXN5c3RlbS9zcmMvbGliL3ZlbmRvci9ncmF2aXR5LXRvb2x0aXAvZ3Jhdml0eS10b29sdGlwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dyYXZpdHktZGVzaWduLXN5c3RlbS9zcmMvbGliL3ZlbmRvci9ncmF2aXR5LXRvb2x0aXAvZ3Jhdml0eS10b29sdGlwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQWMsWUFBWSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFvQixNQUFNLGVBQWUsQ0FBQzs7O0FBU3ZILE1BQU0sT0FBTyx1QkFBdUI7SUFrQmxDLGFBQWE7UUFDWCxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDYixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztnQkFDZixJQUFJLEVBQUUsT0FBTzthQUNkLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVELElBQWEsSUFBSSxDQUFDLEtBQWM7UUFDOUIsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDcEI7UUFDRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQzFDLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEs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QUM7Z0JBUzVCLElBQUk7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25Jbml0LCBSZW5kZXJlcjJ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0b29sdGlwJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dyYXZpdHktdG9vbHRpcC5jb21wb25lbnQuaHRtbCcsXG4gIGhvc3Q6IHsnY2xhc3MnOiAndG9vbHRpcCd9LFxuICBzdHlsZVVybHM6IFsnLi9ncmF2aXR5LXRvb2x0aXAuY29tcG9uZW50LnNhc3MnXVxufSlcblxuZXhwb3J0IGNsYXNzIEdyYXZpdHlUb29sdGlwQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgX3Nob3c6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZXZlbnRzID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBJbnB1dCgpIGRhdGE6IGFueTtcblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLnRvcCcpIGhvc3RTdHlsZVRvcCE6IHN0cmluZztcbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5sZWZ0JykgaG9zdFN0eWxlTGVmdCE6IHN0cmluZztcbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS56LWluZGV4JykgaG9zdFN0eWxlWkluZGV4ITogbnVtYmVyO1xuICBASG9zdEJpbmRpbmcoJ3N0eWxlLnRyYW5zaXRpb24nKSBob3N0U3R5bGVUcmFuc2l0aW9uITogc3RyaW5nO1xuICBASG9zdEJpbmRpbmcoJ3N0eWxlLndpZHRoJykgaG9zdFN0eWxlV2lkdGghOiBzdHJpbmc7XG4gIEBIb3N0QmluZGluZygnc3R5bGUubWF4LXdpZHRoJykgaG9zdFN0eWxlTWF4V2lkdGghOiBzdHJpbmc7XG4gIEBIb3N0QmluZGluZygnc3R5bGUucG9pbnRlci1ldmVudHMnKSBob3N0U3R5bGVQb2ludGVyRXZlbnRzITogc3RyaW5nO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRvb2x0aXAtc2hvdycpIGhvc3RDbGFzc1Nob3chOiBib29sZWFuO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRvb2x0aXAtc2hhZG93JykgaG9zdENsYXNzU2hhZG93ITogYm9vbGVhbjtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy50b29sdGlwLWxpZ2h0JykgaG9zdENsYXNzTGlnaHQhOiBib29sZWFuO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCBbJyRldmVudCddKVxuICB0cmFuc2l0aW9uRW5kKCkge1xuICAgIGlmICh0aGlzLnNob3cpIHtcbiAgICAgIHRoaXMuZXZlbnRzLmVtaXQoe1xuICAgICAgICB0eXBlOiAnc2hvd24nXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKSBzZXQgc2hvdyh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5zZXRQb3NpdGlvbigpO1xuICAgIH1cbiAgICB0aGlzLl9zaG93ID0gdGhpcy5ob3N0Q2xhc3NTaG93ID0gdmFsdWU7XG4gIH1cblxuICBnZXQgc2hvdygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc2hvdztcbiAgfVxuXG4gIGdldCBwbGFjZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5vcHRpb25zLnBsYWNlbWVudDtcbiAgfVxuXG4gIGdldCBhdXRvUGxhY2VtZW50KCkge1xuICAgIHJldHVybiB0aGlzLmRhdGEub3B0aW9ucy5hdXRvUGxhY2VtZW50O1xuICB9XG5cbiAgZ2V0IGVsZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5lbGVtZW50O1xuICB9XG5cbiAgZ2V0IGVsZW1lbnRQb3NpdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLmVsZW1lbnRQb3NpdGlvbjtcbiAgfVxuXG4gIGdldCBvcHRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLmRhdGEub3B0aW9ucztcbiAgfVxuXG4gIGdldCB2YWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLnZhbHVlO1xuICB9XG5cbiAgZ2V0IHRvb2x0aXBPZmZzZXQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTnVtYmVyKHRoaXMuZGF0YS5vcHRpb25zLm9mZnNldCk7XG4gIH1cblxuICBnZXQgaXNUaGVtZUxpZ2h0KCkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnNbJ3RoZW1lJ10gPT09ICdsaWdodCc7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMikge1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zZXRDdXN0b21DbGFzcygpO1xuICAgIHRoaXMuc2V0U3R5bGVzKCk7XG4gIH1cblxuICBzZXRQb3NpdGlvbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZXRIb3N0U3R5bGUodGhpcy5wbGFjZW1lbnQpKSB7XG4gICAgICB0aGlzLnNldFBsYWNlbWVudENsYXNzKHRoaXMucGxhY2VtZW50KTtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2Uge1xuICAgICAgLyogSXMgdG9vbHRpcCBvdXRzaWRlIHRoZSB2aXNpYmxlIGFyZWEgKi9cbiAgICAgIGNvbnN0IHBsYWNlbWVudHMgPSBbJ3RvcCcsICd0b3AtbGVmdCcsICd0b3AtcmlnaHQnLCAncmlnaHQnLCAncmlnaHQtdG9wJywgJ3JpZ2h0LWJvdHRvbScsICdib3R0b20nLCAnYm90dG9tLXJpZ2h0JywgJ2JvdHRvbS1sZWZ0JywgJ2xlZnQnLCAnbGVmdC10b3AnLCAnbGVmdC1ib3R0b20nXTtcbiAgICAgIGxldCBpc1BsYWNlbWVudFNldDtcblxuICAgICAgZm9yIChjb25zdCBwbGFjZW1lbnQgb2YgcGxhY2VtZW50cykge1xuICAgICAgICBpZiAodGhpcy5zZXRIb3N0U3R5bGUocGxhY2VtZW50KSkge1xuICAgICAgICAgIHRoaXMuc2V0UGxhY2VtZW50Q2xhc3MocGxhY2VtZW50KTtcbiAgICAgICAgICBpc1BsYWNlbWVudFNldCA9IHRydWU7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8qIFNldCBvcmlnaW5hbCBwbGFjZW1lbnQgKi9cbiAgICAgIGlmICghaXNQbGFjZW1lbnRTZXQpIHtcbiAgICAgICAgdGhpcy5zZXRIb3N0U3R5bGUodGhpcy5wbGFjZW1lbnQsIHRydWUpO1xuICAgICAgICB0aGlzLnNldFBsYWNlbWVudENsYXNzKHRoaXMucGxhY2VtZW50KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuXG4gIHNldFBsYWNlbWVudENsYXNzKHBsYWNlbWVudDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ3Rvb2x0aXAtJyArIHBsYWNlbWVudCk7XG4gIH1cblxuICBzZXRIb3N0U3R5bGUocGxhY2VtZW50OiBzdHJpbmcsIGRpc2FibGVBdXRvUGxhY2VtZW50OiBib29sZWFuID0gZmFsc2UpOiBib29sZWFuIHtcbiAgICBjb25zdCBpc1N2ZyA9IHRoaXMuZWxlbWVudCBpbnN0YW5jZW9mIFNWR0VsZW1lbnQ7XG4gICAgY29uc3QgdG9vbHRpcCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IGlzQ3VzdG9tUG9zaXRpb24gPSAhdGhpcy5lbGVtZW50UG9zaXRpb24ucmlnaHQ7XG5cbiAgICBsZXQgZWxlbWVudEhlaWdodCA9IGlzU3ZnID8gdGhpcy5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCA6IHRoaXMuZWxlbWVudC5vZmZzZXRIZWlnaHQ7XG4gICAgbGV0IGVsZW1lbnRXaWR0aCA9IGlzU3ZnID8gdGhpcy5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoIDogdGhpcy5lbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgIGNvbnN0IHRvb2x0aXBIZWlnaHQgPSB0b29sdGlwLmNsaWVudEhlaWdodDtcbiAgICBjb25zdCB0b29sdGlwV2lkdGggPSB0b29sdGlwLmNsaWVudFdpZHRoO1xuICAgIGNvbnN0IHNjcm9sbFkgPSB3aW5kb3cucGFnZVlPZmZzZXQ7XG5cbiAgICBpZiAoaXNDdXN0b21Qb3NpdGlvbikge1xuICAgICAgZWxlbWVudEhlaWdodCA9IDA7XG4gICAgICBlbGVtZW50V2lkdGggPSAwO1xuICAgIH1cblxuICAgIGxldCB0b3BTdHlsZTtcbiAgICBsZXQgbGVmdFN0eWxlO1xuXG4gICAgc3dpdGNoIChwbGFjZW1lbnQpIHtcbiAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgIHRvcFN0eWxlID0gKHRoaXMuZWxlbWVudFBvc2l0aW9uLnRvcCArIHNjcm9sbFkpIC0gKHRvb2x0aXBIZWlnaHQgKyB0aGlzLnRvb2x0aXBPZmZzZXQpO1xuICAgICAgICBsZWZ0U3R5bGUgPSAodGhpcy5lbGVtZW50UG9zaXRpb24ubGVmdCArIGVsZW1lbnRXaWR0aCAvIDIpIC0gdG9vbHRpcFdpZHRoIC8gMjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0b3AtbGVmdCc6XG4gICAgICAgIHRvcFN0eWxlID0gKHRoaXMuZWxlbWVudFBvc2l0aW9uLnRvcCArIHNjcm9sbFkpIC0gKHRvb2x0aXBIZWlnaHQgKyB0aGlzLnRvb2x0aXBPZmZzZXQpO1xuICAgICAgICBsZWZ0U3R5bGUgPSAodGhpcy5lbGVtZW50UG9zaXRpb24ubGVmdCArIGVsZW1lbnRXaWR0aCAvIDIpIC0gKHRvb2x0aXBXaWR0aCAqIDAuMSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndG9wLXJpZ2h0JzpcbiAgICAgICAgdG9wU3R5bGUgPSAodGhpcy5lbGVtZW50UG9zaXRpb24udG9wICsgc2Nyb2xsWSkgLSAodG9vbHRpcEhlaWdodCArIHRoaXMudG9vbHRpcE9mZnNldCk7XG4gICAgICAgIGxlZnRTdHlsZSA9ICh0aGlzLmVsZW1lbnRQb3NpdGlvbi5sZWZ0ICsgZWxlbWVudFdpZHRoIC8gMikgLSAodG9vbHRpcFdpZHRoICogMC45KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICB0b3BTdHlsZSA9ICh0aGlzLmVsZW1lbnRQb3NpdGlvbi50b3AgKyBzY3JvbGxZKSArIGVsZW1lbnRIZWlnaHQgKyB0aGlzLnRvb2x0aXBPZmZzZXQ7XG4gICAgICAgIGxlZnRTdHlsZSA9ICh0aGlzLmVsZW1lbnRQb3NpdGlvbi5sZWZ0ICsgZWxlbWVudFdpZHRoIC8gMikgLSB0b29sdGlwV2lkdGggLyAyO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2JvdHRvbS1sZWZ0JzpcbiAgICAgICAgdG9wU3R5bGUgPSAodGhpcy5lbGVtZW50UG9zaXRpb24udG9wICsgc2Nyb2xsWSkgKyBlbGVtZW50SGVpZ2h0ICsgdGhpcy50b29sdGlwT2Zmc2V0O1xuICAgICAgICBsZWZ0U3R5bGUgPSAodGhpcy5lbGVtZW50UG9zaXRpb24ubGVmdCArIGVsZW1lbnRXaWR0aCAvIDIpIC0gKHRvb2x0aXBXaWR0aCAqIDAuMSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYm90dG9tLXJpZ2h0JzpcbiAgICAgICAgdG9wU3R5bGUgPSAodGhpcy5lbGVtZW50UG9zaXRpb24udG9wICsgc2Nyb2xsWSkgKyBlbGVtZW50SGVpZ2h0ICsgdGhpcy50b29sdGlwT2Zmc2V0O1xuICAgICAgICBsZWZ0U3R5bGUgPSAodGhpcy5lbGVtZW50UG9zaXRpb24ubGVmdCArIGVsZW1lbnRXaWR0aCAvIDIpIC0gKHRvb2x0aXBXaWR0aCAqIDAuOSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgIGxlZnRTdHlsZSA9IHRoaXMuZWxlbWVudFBvc2l0aW9uLmxlZnQgLSB0b29sdGlwV2lkdGggLSB0aGlzLnRvb2x0aXBPZmZzZXQ7XG4gICAgICAgIHRvcFN0eWxlID0gKHRoaXMuZWxlbWVudFBvc2l0aW9uLnRvcCArIHNjcm9sbFkpICsgZWxlbWVudEhlaWdodCAvIDIgLSB0b29sdGlwSGVpZ2h0IC8gMjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdsZWZ0LXRvcCc6XG4gICAgICAgIGxlZnRTdHlsZSA9IHRoaXMuZWxlbWVudFBvc2l0aW9uLmxlZnQgLSB0b29sdGlwV2lkdGggLSB0aGlzLnRvb2x0aXBPZmZzZXQ7XG4gICAgICAgIHRvcFN0eWxlID0gKHRoaXMuZWxlbWVudFBvc2l0aW9uLnRvcCArIHNjcm9sbFkgKyBlbGVtZW50SGVpZ2h0IC8gMikgLSAodG9vbHRpcEhlaWdodCAqIDAuMSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbGVmdC1ib3R0b20nOlxuICAgICAgICBsZWZ0U3R5bGUgPSB0aGlzLmVsZW1lbnRQb3NpdGlvbi5sZWZ0IC0gdG9vbHRpcFdpZHRoIC0gdGhpcy50b29sdGlwT2Zmc2V0O1xuICAgICAgICB0b3BTdHlsZSA9ICh0aGlzLmVsZW1lbnRQb3NpdGlvbi50b3AgKyBzY3JvbGxZICsgZWxlbWVudEhlaWdodCAvIDIpIC0gKHRvb2x0aXBIZWlnaHQgKiAwLjkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgbGVmdFN0eWxlID0gdGhpcy5lbGVtZW50UG9zaXRpb24ubGVmdCArIGVsZW1lbnRXaWR0aCArIHRoaXMudG9vbHRpcE9mZnNldDtcbiAgICAgICAgdG9wU3R5bGUgPSAodGhpcy5lbGVtZW50UG9zaXRpb24udG9wICsgc2Nyb2xsWSkgKyBlbGVtZW50SGVpZ2h0IC8gMiAtIHRvb2x0aXBIZWlnaHQgLyAyO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3JpZ2h0LXRvcCc6XG4gICAgICAgIGxlZnRTdHlsZSA9IHRoaXMuZWxlbWVudFBvc2l0aW9uLmxlZnQgKyBlbGVtZW50V2lkdGggKyB0aGlzLnRvb2x0aXBPZmZzZXQ7XG4gICAgICAgIHRvcFN0eWxlID0gKHRoaXMuZWxlbWVudFBvc2l0aW9uLnRvcCArIHNjcm9sbFkgKyBlbGVtZW50SGVpZ2h0IC8gMikgLSAodG9vbHRpcEhlaWdodCAqIDAuMSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncmlnaHQtYm90dG9tJzpcbiAgICAgICAgbGVmdFN0eWxlID0gdGhpcy5lbGVtZW50UG9zaXRpb24ubGVmdCArIGVsZW1lbnRXaWR0aCArIHRoaXMudG9vbHRpcE9mZnNldDtcbiAgICAgICAgdG9wU3R5bGUgPSAodGhpcy5lbGVtZW50UG9zaXRpb24udG9wICsgc2Nyb2xsWSArIGVsZW1lbnRIZWlnaHQgLyAyKSAtICh0b29sdGlwSGVpZ2h0ICogMC45KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLyogSXMgdG9vbHRpcCBvdXRzaWRlIHRoZSB2aXNpYmxlIGFyZWEgKi9cbiAgICBpZiAodGhpcy5hdXRvUGxhY2VtZW50ICYmICFkaXNhYmxlQXV0b1BsYWNlbWVudCkge1xuICAgICAgY29uc3QgdG9wRWRnZSA9IHRvcFN0eWxlO1xuICAgICAgY29uc3QgYm90dG9tRWRnZSA9IHRvcFN0eWxlICsgdG9vbHRpcEhlaWdodDtcbiAgICAgIGNvbnN0IGxlZnRFZGdlID0gbGVmdFN0eWxlO1xuICAgICAgY29uc3QgcmlnaHRFZGdlID0gbGVmdFN0eWxlICsgdG9vbHRpcFdpZHRoO1xuICAgICAgY29uc3QgYm9keUhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodCArIHNjcm9sbFk7XG4gICAgICBjb25zdCBib2R5V2lkdGggPSBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoO1xuXG4gICAgICBpZiAodG9wRWRnZSA8IDAgfHwgYm90dG9tRWRnZSA+IGJvZHlIZWlnaHQgfHwgbGVmdEVkZ2UgPCAwIHx8IHJpZ2h0RWRnZSA+IGJvZHlXaWR0aCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5ob3N0U3R5bGVUb3AgPSB0b3BTdHlsZSArICdweCc7XG4gICAgdGhpcy5ob3N0U3R5bGVMZWZ0ID0gbGVmdFN0eWxlICsgJ3B4JztcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHNldFpJbmRleCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5vcHRpb25zWyd6SW5kZXgnXSAhPT0gMCkge1xuICAgICAgdGhpcy5ob3N0U3R5bGVaSW5kZXggPSB0aGlzLm9wdGlvbnNbJ3pJbmRleCddO1xuICAgIH1cbiAgfVxuXG4gIHNldFBvaW50ZXJFdmVudHMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub3B0aW9uc1sncG9pbnRlckV2ZW50cyddKSB7XG4gICAgICB0aGlzLmhvc3RTdHlsZVBvaW50ZXJFdmVudHMgPSB0aGlzLm9wdGlvbnNbJ3BvaW50ZXJFdmVudHMnXTtcbiAgICB9XG4gIH1cblxuICBzZXRDdXN0b21DbGFzcygpIHtcbiAgICBpZiAodGhpcy5vcHRpb25zWyd0b29sdGlwQ2xhc3MnXSkge1xuICAgICAgdGhpcy5vcHRpb25zWyd0b29sdGlwQ2xhc3MnXS5zcGxpdCgnICcpLmZvckVhY2goKGNsYXNzTmFtZTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIGNsYXNzTmFtZSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBzZXRBbmltYXRpb25EdXJhdGlvbigpIHtcbiAgICBpZiAoTnVtYmVyKHRoaXMub3B0aW9uc1snYW5pbWF0aW9uRHVyYXRpb24nXSkgIT0gdGhpcy5vcHRpb25zWydhbmltYXRpb25EdXJhdGlvbkRlZmF1bHQnXSkge1xuICAgICAgdGhpcy5ob3N0U3R5bGVUcmFuc2l0aW9uID0gJ29wYWNpdHkgJyArIHRoaXMub3B0aW9uc1snYW5pbWF0aW9uRHVyYXRpb24nXSArICdtcyc7XG4gICAgfVxuICB9XG5cbiAgc2V0U3R5bGVzKCkge1xuICAgIHRoaXMuc2V0WkluZGV4KCk7XG4gICAgdGhpcy5zZXRQb2ludGVyRXZlbnRzKCk7XG4gICAgdGhpcy5zZXRBbmltYXRpb25EdXJhdGlvbigpO1xuXG4gICAgdGhpcy5ob3N0Q2xhc3NTaGFkb3cgPSB0aGlzLm9wdGlvbnNbJ3NoYWRvdyddO1xuICAgIHRoaXMuaG9zdENsYXNzTGlnaHQgPSB0aGlzLmlzVGhlbWVMaWdodDtcbiAgICB0aGlzLmhvc3RTdHlsZU1heFdpZHRoID0gdGhpcy5vcHRpb25zWydtYXhXaWR0aCddO1xuICAgIHRoaXMuaG9zdFN0eWxlV2lkdGggPSB0aGlzLm9wdGlvbnNbJ3dpZHRoJ10gPyB0aGlzLm9wdGlvbnNbJ3dpZHRoJ10gOiAnJztcbiAgfVxufVxuIiwiPGRpdiAqbmdJZj1cImlzVGhlbWVMaWdodFwiIGNsYXNzPVwidG9vbHRpcC1hcnJvd1wiPjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwib3B0aW9uc1snY29udGVudFR5cGUnXSA9PT0gJ3RlbXBsYXRlJyBlbHNlIGh0bWxPclN0cmluZ1RlbXBsYXRlXCI+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ2YWx1ZVwiPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjaHRtbE9yU3RyaW5nVGVtcGxhdGU+XG4gIDxkaXYgW2lubmVySFRNTF09XCJ2YWx1ZVwiPjwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -676,7 +676,7 @@ class GravityTooltipComponent {
676
676
  }
677
677
  else {
678
678
  /* Is tooltip outside the visible area */
679
- const placements = ['top', 'right', 'bottom', 'left'];
679
+ const placements = ['top', 'top-left', 'top-right', 'right', 'right-top', 'right-bottom', 'bottom', 'bottom-right', 'bottom-left', 'left', 'left-top', 'left-bottom'];
680
680
  let isPlacementSet;
681
681
  for (const placement of placements) {
682
682
  if (this.setHostStyle(placement)) {
@@ -710,23 +710,57 @@ class GravityTooltipComponent {
710
710
  }
711
711
  let topStyle;
712
712
  let leftStyle;
713
- if (placement === 'top') {
714
- topStyle = (this.elementPosition.top + scrollY) - (tooltipHeight + this.tooltipOffset);
715
- }
716
- if (placement === 'bottom') {
717
- topStyle = (this.elementPosition.top + scrollY) + elementHeight + this.tooltipOffset;
718
- }
719
- if (placement === 'top' || placement === 'bottom') {
720
- leftStyle = (this.elementPosition.left + elementWidth / 2) - tooltipWidth / 2;
721
- }
722
- if (placement === 'left') {
723
- leftStyle = this.elementPosition.left - tooltipWidth - this.tooltipOffset;
724
- }
725
- if (placement === 'right') {
726
- leftStyle = this.elementPosition.left + elementWidth + this.tooltipOffset;
727
- }
728
- if (placement === 'left' || placement === 'right') {
729
- topStyle = (this.elementPosition.top + scrollY) + elementHeight / 2 - tooltip.clientHeight / 2;
713
+ switch (placement) {
714
+ case 'top':
715
+ topStyle = (this.elementPosition.top + scrollY) - (tooltipHeight + this.tooltipOffset);
716
+ leftStyle = (this.elementPosition.left + elementWidth / 2) - tooltipWidth / 2;
717
+ break;
718
+ case 'top-left':
719
+ topStyle = (this.elementPosition.top + scrollY) - (tooltipHeight + this.tooltipOffset);
720
+ leftStyle = (this.elementPosition.left + elementWidth / 2) - (tooltipWidth * 0.1);
721
+ break;
722
+ case 'top-right':
723
+ topStyle = (this.elementPosition.top + scrollY) - (tooltipHeight + this.tooltipOffset);
724
+ leftStyle = (this.elementPosition.left + elementWidth / 2) - (tooltipWidth * 0.9);
725
+ break;
726
+ case 'bottom':
727
+ topStyle = (this.elementPosition.top + scrollY) + elementHeight + this.tooltipOffset;
728
+ leftStyle = (this.elementPosition.left + elementWidth / 2) - tooltipWidth / 2;
729
+ break;
730
+ case 'bottom-left':
731
+ topStyle = (this.elementPosition.top + scrollY) + elementHeight + this.tooltipOffset;
732
+ leftStyle = (this.elementPosition.left + elementWidth / 2) - (tooltipWidth * 0.1);
733
+ break;
734
+ case 'bottom-right':
735
+ topStyle = (this.elementPosition.top + scrollY) + elementHeight + this.tooltipOffset;
736
+ leftStyle = (this.elementPosition.left + elementWidth / 2) - (tooltipWidth * 0.9);
737
+ break;
738
+ case 'left':
739
+ leftStyle = this.elementPosition.left - tooltipWidth - this.tooltipOffset;
740
+ topStyle = (this.elementPosition.top + scrollY) + elementHeight / 2 - tooltipHeight / 2;
741
+ break;
742
+ case 'left-top':
743
+ leftStyle = this.elementPosition.left - tooltipWidth - this.tooltipOffset;
744
+ topStyle = (this.elementPosition.top + scrollY + elementHeight / 2) - (tooltipHeight * 0.1);
745
+ break;
746
+ case 'left-bottom':
747
+ leftStyle = this.elementPosition.left - tooltipWidth - this.tooltipOffset;
748
+ topStyle = (this.elementPosition.top + scrollY + elementHeight / 2) - (tooltipHeight * 0.9);
749
+ break;
750
+ case 'right':
751
+ leftStyle = this.elementPosition.left + elementWidth + this.tooltipOffset;
752
+ topStyle = (this.elementPosition.top + scrollY) + elementHeight / 2 - tooltipHeight / 2;
753
+ break;
754
+ case 'right-top':
755
+ leftStyle = this.elementPosition.left + elementWidth + this.tooltipOffset;
756
+ topStyle = (this.elementPosition.top + scrollY + elementHeight / 2) - (tooltipHeight * 0.1);
757
+ break;
758
+ case 'right-bottom':
759
+ leftStyle = this.elementPosition.left + elementWidth + this.tooltipOffset;
760
+ topStyle = (this.elementPosition.top + scrollY + elementHeight / 2) - (tooltipHeight * 0.9);
761
+ break;
762
+ default:
763
+ return false;
730
764
  }
731
765
  /* Is tooltip outside the visible area */
732
766
  if (this.autoPlacement && !disableAutoPlacement) {
@@ -776,11 +810,11 @@ class GravityTooltipComponent {
776
810
  this.hostStyleWidth = this.options['width'] ? this.options['width'] : '';
777
811
  }
778
812
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GravityTooltipComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
779
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: GravityTooltipComponent, selector: "tooltip", inputs: { data: "data", show: "show" }, host: { listeners: { "transitionend": "transitionEnd($event)" }, properties: { "style.top": "this.hostStyleTop", "style.left": "this.hostStyleLeft", "style.z-index": "this.hostStyleZIndex", "style.transition": "this.hostStyleTransition", "style.width": "this.hostStyleWidth", "style.max-width": "this.hostStyleMaxWidth", "style.pointer-events": "this.hostStylePointerEvents", "class.tooltip-show": "this.hostClassShow", "class.tooltip-shadow": "this.hostClassShadow", "class.tooltip-light": "this.hostClassLight" }, classAttribute: "tooltip" }, ngImport: i0, template: "<div *ngIf=\"isThemeLight\" class=\"tooltip-arrow\"></div>\n\n<div *ngIf=\"options['contentType'] === 'template' else htmlOrStringTemplate\">\n <ng-container *ngTemplateOutlet=\"value\"></ng-container>\n</div>\n\n<ng-template #htmlOrStringTemplate>\n <div [innerHTML]=\"value\"></div>\n</ng-template>\n", styles: [":host{max-width:200px;background-color:var(--bg-tooltip-primary);color:var(--on-bg-tooltip-primary);text-align:center;border-radius:6px;padding:5px 8px;position:absolute;pointer-events:none;z-index:1000;display:block;opacity:0;transition:opacity .3s;top:0;left:0}:host.tooltip-show{opacity:1}:host.tooltip-shadow{box-shadow:0 7px 15px -5px #0006}:host.tooltip-light.tooltip-shadow{box-shadow:0 5px 15px -5px #0006}:host.tooltip:after{content:\"\";position:absolute;border-style:solid}:host.tooltip-top:after{top:100%;left:50%;margin-left:-5px;border-width:5px;border-color:var(--bg-tooltip-primary) transparent transparent transparent}:host.tooltip-bottom:after{bottom:100%;left:50%;margin-left:-5px;border-width:5px;border-color:transparent transparent var(--bg-tooltip-primary) transparent}:host.tooltip-left:after{top:50%;left:100%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--bg-tooltip-primary)}:host.tooltip-right:after{top:50%;right:100%;margin-top:-5px;border-width:5px;border-color:transparent var(--bg-tooltip-primary) transparent transparent}:host.tooltip-light:after{display:none}:host.tooltip-light{border:1px solid rgba(0,0,0,.06);background-color:#fff;color:#000}:host.tooltip-light .tooltip-arrow{position:absolute;width:10px;height:10px;transform:rotate(135deg);background-color:#00000012}:host.tooltip-light .tooltip-arrow:after{background-color:#fff;content:\"\";display:block;position:absolute;width:10px;height:10px}:host.tooltip-top.tooltip-light{margin-top:-2px}:host.tooltip-top.tooltip-light .tooltip-arrow{top:100%;left:50%;margin-top:-4px;margin-left:-5px;background:linear-gradient(to bottom left,rgba(0,0,0,.07) 50%,transparent 50%)}:host.tooltip-top.tooltip-light .tooltip-arrow:after{top:1px;right:1px}:host.tooltip-bottom.tooltip-light .tooltip-arrow{bottom:100%;left:50%;margin-bottom:-4px;margin-left:-5px;background:linear-gradient(to top right,rgba(0,0,0,.1) 50%,transparent 50%)}:host.tooltip-bottom.tooltip-light .tooltip-arrow:after{top:-1px;right:-1px}:host.tooltip-left.tooltip-light .tooltip-arrow{top:50%;left:100%;margin-top:-5px;margin-left:-4px;background:linear-gradient(to bottom right,rgba(0,0,0,.07) 50%,transparent 50%)}:host.tooltip-left.tooltip-light .tooltip-arrow:after{top:1px;right:-1px}:host.tooltip-right.tooltip-light .tooltip-arrow{top:50%;right:100%;margin-top:-5px;margin-right:-4px;background:linear-gradient(to top left,rgba(0,0,0,.07) 50%,transparent 50%)}:host.tooltip-right.tooltip-light .tooltip-arrow:after{top:-1px;right:1px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
813
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: GravityTooltipComponent, selector: "tooltip", inputs: { data: "data", show: "show" }, host: { listeners: { "transitionend": "transitionEnd($event)" }, properties: { "style.top": "this.hostStyleTop", "style.left": "this.hostStyleLeft", "style.z-index": "this.hostStyleZIndex", "style.transition": "this.hostStyleTransition", "style.width": "this.hostStyleWidth", "style.max-width": "this.hostStyleMaxWidth", "style.pointer-events": "this.hostStylePointerEvents", "class.tooltip-show": "this.hostClassShow", "class.tooltip-shadow": "this.hostClassShadow", "class.tooltip-light": "this.hostClassLight" }, classAttribute: "tooltip" }, ngImport: i0, template: "<div *ngIf=\"isThemeLight\" class=\"tooltip-arrow\"></div>\n\n<div *ngIf=\"options['contentType'] === 'template' else htmlOrStringTemplate\">\n <ng-container *ngTemplateOutlet=\"value\"></ng-container>\n</div>\n\n<ng-template #htmlOrStringTemplate>\n <div [innerHTML]=\"value\"></div>\n</ng-template>\n", styles: [":host{max-width:200px;background-color:var(--bg-tooltip-primary);color:var(--on-bg-tooltip-primary);text-align:center;border-radius:6px;padding:5px 8px;position:absolute;pointer-events:none;z-index:1000;display:block;opacity:0;transition:opacity .3s;top:0;left:0}:host.tooltip-show{opacity:1}:host.tooltip-shadow{box-shadow:0 7px 15px -5px #0006}:host.tooltip-light.tooltip-shadow{box-shadow:0 5px 15px -5px #0006}:host.tooltip:after{content:\"\";position:absolute;border-style:solid}:host.tooltip-top:after{top:100%;left:50%;margin-left:-5px;border-width:5px;border-color:var(--bg-tooltip-primary) transparent transparent transparent}:host.tooltip-top-left:after{top:100%;left:10%;margin-left:-5px;border-width:5px;border-color:var(--bg-tooltip-primary) transparent transparent transparent}:host.tooltip-top-right:after{top:100%;left:90%;margin-left:-5px;border-width:5px;border-color:var(--bg-tooltip-primary) transparent transparent transparent}:host.tooltip-bottom:after{bottom:100%;left:50%;margin-left:-5px;border-width:5px;border-color:transparent transparent var(--bg-tooltip-primary) transparent}:host.tooltip-bottom-left:after{bottom:100%;left:10%;margin-left:-5px;border-width:5px;border-color:transparent transparent var(--bg-tooltip-primary) transparent}:host.tooltip-bottom-right:after{bottom:100%;left:90%;margin-left:-5px;border-width:5px;border-color:transparent transparent var(--bg-tooltip-primary) transparent}:host.tooltip-left:after{top:50%;left:100%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--bg-tooltip-primary)}:host.tooltip-left-top:after{top:10%;left:100%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--bg-tooltip-primary)}:host.tooltip-left-bottom:after{top:90%;left:100%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--bg-tooltip-primary)}:host.tooltip-right:after{top:50%;right:100%;margin-top:-5px;border-width:5px;border-color:transparent var(--bg-tooltip-primary) transparent transparent}:host.tooltip-right-top:after{top:10%;right:100%;margin-top:-5px;border-width:5px;border-color:transparent var(--bg-tooltip-primary) transparent transparent}:host.tooltip-right-bottom:after{top:90%;right:100%;margin-top:-5px;border-width:5px;border-color:transparent var(--bg-tooltip-primary) transparent transparent}:host.tooltip-light:after{display:none}:host.tooltip-light{border:1px solid rgba(0,0,0,.06);background-color:#fff;color:#000}:host.tooltip-light .tooltip-arrow{position:absolute;width:10px;height:10px;transform:rotate(135deg);background-color:#00000012}:host.tooltip-light .tooltip-arrow:after{background-color:#fff;content:\"\";display:block;position:absolute;width:10px;height:10px}:host.tooltip-top.tooltip-light{margin-top:-2px}:host.tooltip-top.tooltip-light .tooltip-arrow{top:100%;left:50%;margin-top:-4px;margin-left:-5px;background:linear-gradient(to bottom left,rgba(0,0,0,.07) 50%,transparent 50%)}:host.tooltip-top.tooltip-light .tooltip-arrow:after{top:1px;right:1px}:host.tooltip-bottom.tooltip-light .tooltip-arrow{bottom:100%;left:50%;margin-bottom:-4px;margin-left:-5px;background:linear-gradient(to top right,rgba(0,0,0,.1) 50%,transparent 50%)}:host.tooltip-bottom.tooltip-light .tooltip-arrow:after{top:-1px;right:-1px}:host.tooltip-left.tooltip-light .tooltip-arrow{top:50%;left:100%;margin-top:-5px;margin-left:-4px;background:linear-gradient(to bottom right,rgba(0,0,0,.07) 50%,transparent 50%)}:host.tooltip-left.tooltip-light .tooltip-arrow:after{top:1px;right:-1px}:host.tooltip-right.tooltip-light .tooltip-arrow{top:50%;right:100%;margin-top:-5px;margin-right:-4px;background:linear-gradient(to top left,rgba(0,0,0,.07) 50%,transparent 50%)}:host.tooltip-right.tooltip-light .tooltip-arrow:after{top:-1px;right:1px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
780
814
  }
781
815
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GravityTooltipComponent, decorators: [{
782
816
  type: Component,
783
- args: [{ selector: 'tooltip', host: { 'class': 'tooltip' }, template: "<div *ngIf=\"isThemeLight\" class=\"tooltip-arrow\"></div>\n\n<div *ngIf=\"options['contentType'] === 'template' else htmlOrStringTemplate\">\n <ng-container *ngTemplateOutlet=\"value\"></ng-container>\n</div>\n\n<ng-template #htmlOrStringTemplate>\n <div [innerHTML]=\"value\"></div>\n</ng-template>\n", styles: [":host{max-width:200px;background-color:var(--bg-tooltip-primary);color:var(--on-bg-tooltip-primary);text-align:center;border-radius:6px;padding:5px 8px;position:absolute;pointer-events:none;z-index:1000;display:block;opacity:0;transition:opacity .3s;top:0;left:0}:host.tooltip-show{opacity:1}:host.tooltip-shadow{box-shadow:0 7px 15px -5px #0006}:host.tooltip-light.tooltip-shadow{box-shadow:0 5px 15px -5px #0006}:host.tooltip:after{content:\"\";position:absolute;border-style:solid}:host.tooltip-top:after{top:100%;left:50%;margin-left:-5px;border-width:5px;border-color:var(--bg-tooltip-primary) transparent transparent transparent}:host.tooltip-bottom:after{bottom:100%;left:50%;margin-left:-5px;border-width:5px;border-color:transparent transparent var(--bg-tooltip-primary) transparent}:host.tooltip-left:after{top:50%;left:100%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--bg-tooltip-primary)}:host.tooltip-right:after{top:50%;right:100%;margin-top:-5px;border-width:5px;border-color:transparent var(--bg-tooltip-primary) transparent transparent}:host.tooltip-light:after{display:none}:host.tooltip-light{border:1px solid rgba(0,0,0,.06);background-color:#fff;color:#000}:host.tooltip-light .tooltip-arrow{position:absolute;width:10px;height:10px;transform:rotate(135deg);background-color:#00000012}:host.tooltip-light .tooltip-arrow:after{background-color:#fff;content:\"\";display:block;position:absolute;width:10px;height:10px}:host.tooltip-top.tooltip-light{margin-top:-2px}:host.tooltip-top.tooltip-light .tooltip-arrow{top:100%;left:50%;margin-top:-4px;margin-left:-5px;background:linear-gradient(to bottom left,rgba(0,0,0,.07) 50%,transparent 50%)}:host.tooltip-top.tooltip-light .tooltip-arrow:after{top:1px;right:1px}:host.tooltip-bottom.tooltip-light .tooltip-arrow{bottom:100%;left:50%;margin-bottom:-4px;margin-left:-5px;background:linear-gradient(to top right,rgba(0,0,0,.1) 50%,transparent 50%)}:host.tooltip-bottom.tooltip-light .tooltip-arrow:after{top:-1px;right:-1px}:host.tooltip-left.tooltip-light .tooltip-arrow{top:50%;left:100%;margin-top:-5px;margin-left:-4px;background:linear-gradient(to bottom right,rgba(0,0,0,.07) 50%,transparent 50%)}:host.tooltip-left.tooltip-light .tooltip-arrow:after{top:1px;right:-1px}:host.tooltip-right.tooltip-light .tooltip-arrow{top:50%;right:100%;margin-top:-5px;margin-right:-4px;background:linear-gradient(to top left,rgba(0,0,0,.07) 50%,transparent 50%)}:host.tooltip-right.tooltip-light .tooltip-arrow:after{top:-1px;right:1px}\n"] }]
817
+ args: [{ selector: 'tooltip', host: { 'class': 'tooltip' }, template: "<div *ngIf=\"isThemeLight\" class=\"tooltip-arrow\"></div>\n\n<div *ngIf=\"options['contentType'] === 'template' else htmlOrStringTemplate\">\n <ng-container *ngTemplateOutlet=\"value\"></ng-container>\n</div>\n\n<ng-template #htmlOrStringTemplate>\n <div [innerHTML]=\"value\"></div>\n</ng-template>\n", styles: [":host{max-width:200px;background-color:var(--bg-tooltip-primary);color:var(--on-bg-tooltip-primary);text-align:center;border-radius:6px;padding:5px 8px;position:absolute;pointer-events:none;z-index:1000;display:block;opacity:0;transition:opacity .3s;top:0;left:0}:host.tooltip-show{opacity:1}:host.tooltip-shadow{box-shadow:0 7px 15px -5px #0006}:host.tooltip-light.tooltip-shadow{box-shadow:0 5px 15px -5px #0006}:host.tooltip:after{content:\"\";position:absolute;border-style:solid}:host.tooltip-top:after{top:100%;left:50%;margin-left:-5px;border-width:5px;border-color:var(--bg-tooltip-primary) transparent transparent transparent}:host.tooltip-top-left:after{top:100%;left:10%;margin-left:-5px;border-width:5px;border-color:var(--bg-tooltip-primary) transparent transparent transparent}:host.tooltip-top-right:after{top:100%;left:90%;margin-left:-5px;border-width:5px;border-color:var(--bg-tooltip-primary) transparent transparent transparent}:host.tooltip-bottom:after{bottom:100%;left:50%;margin-left:-5px;border-width:5px;border-color:transparent transparent var(--bg-tooltip-primary) transparent}:host.tooltip-bottom-left:after{bottom:100%;left:10%;margin-left:-5px;border-width:5px;border-color:transparent transparent var(--bg-tooltip-primary) transparent}:host.tooltip-bottom-right:after{bottom:100%;left:90%;margin-left:-5px;border-width:5px;border-color:transparent transparent var(--bg-tooltip-primary) transparent}:host.tooltip-left:after{top:50%;left:100%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--bg-tooltip-primary)}:host.tooltip-left-top:after{top:10%;left:100%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--bg-tooltip-primary)}:host.tooltip-left-bottom:after{top:90%;left:100%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--bg-tooltip-primary)}:host.tooltip-right:after{top:50%;right:100%;margin-top:-5px;border-width:5px;border-color:transparent var(--bg-tooltip-primary) transparent transparent}:host.tooltip-right-top:after{top:10%;right:100%;margin-top:-5px;border-width:5px;border-color:transparent var(--bg-tooltip-primary) transparent transparent}:host.tooltip-right-bottom:after{top:90%;right:100%;margin-top:-5px;border-width:5px;border-color:transparent var(--bg-tooltip-primary) transparent transparent}:host.tooltip-light:after{display:none}:host.tooltip-light{border:1px solid rgba(0,0,0,.06);background-color:#fff;color:#000}:host.tooltip-light .tooltip-arrow{position:absolute;width:10px;height:10px;transform:rotate(135deg);background-color:#00000012}:host.tooltip-light .tooltip-arrow:after{background-color:#fff;content:\"\";display:block;position:absolute;width:10px;height:10px}:host.tooltip-top.tooltip-light{margin-top:-2px}:host.tooltip-top.tooltip-light .tooltip-arrow{top:100%;left:50%;margin-top:-4px;margin-left:-5px;background:linear-gradient(to bottom left,rgba(0,0,0,.07) 50%,transparent 50%)}:host.tooltip-top.tooltip-light .tooltip-arrow:after{top:1px;right:1px}:host.tooltip-bottom.tooltip-light .tooltip-arrow{bottom:100%;left:50%;margin-bottom:-4px;margin-left:-5px;background:linear-gradient(to top right,rgba(0,0,0,.1) 50%,transparent 50%)}:host.tooltip-bottom.tooltip-light .tooltip-arrow:after{top:-1px;right:-1px}:host.tooltip-left.tooltip-light .tooltip-arrow{top:50%;left:100%;margin-top:-5px;margin-left:-4px;background:linear-gradient(to bottom right,rgba(0,0,0,.07) 50%,transparent 50%)}:host.tooltip-left.tooltip-light .tooltip-arrow:after{top:1px;right:-1px}:host.tooltip-right.tooltip-light .tooltip-arrow{top:50%;right:100%;margin-top:-5px;margin-right:-4px;background:linear-gradient(to top left,rgba(0,0,0,.07) 50%,transparent 50%)}:host.tooltip-right.tooltip-light .tooltip-arrow:after{top:-1px;right:1px}\n"] }]
784
818
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { data: [{
785
819
  type: Input
786
820
  }], hostStyleTop: [{
@@ -4825,35 +4859,50 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
4825
4859
  class GravityAvatarStackComponent {
4826
4860
  constructor() {
4827
4861
  this.isCoin = true;
4862
+ this.selectMultipleItems = false;
4828
4863
  this.clickOnIcon = new EventEmitter();
4829
4864
  this.selectedIndexes = [];
4830
4865
  this.selectedItems = [];
4831
4866
  }
4832
4867
  onClick(index) {
4833
4868
  const selectedIndex = this.selectedIndexes.indexOf(index);
4834
- if (selectedIndex !== -1) {
4835
- this.selectedIndexes = this.selectedIndexes.filter(i => i !== index);
4836
- this.selectedItems = this.selectedItems.filter(item => item !== this.items[index]);
4869
+ if (this.selectMultipleItems) {
4870
+ if (selectedIndex !== -1) {
4871
+ this.selectedIndexes = this.selectedIndexes.filter(i => i !== index);
4872
+ this.selectedItems = this.selectedItems.filter(item => item !== this.items[index]);
4873
+ }
4874
+ else {
4875
+ this.selectedIndexes.push(index);
4876
+ this.selectedItems.push(this.items[index]);
4877
+ }
4837
4878
  }
4838
4879
  else {
4839
- this.selectedIndexes.push(index);
4840
- this.selectedItems.push(this.items[index]);
4880
+ if (selectedIndex === -1) {
4881
+ this.selectedIndexes = [index];
4882
+ this.selectedItems = [this.items[index]];
4883
+ }
4884
+ else {
4885
+ this.selectedIndexes = [];
4886
+ this.selectedItems = [];
4887
+ }
4841
4888
  }
4842
4889
  this.clickOnIcon.emit(this.selectedItems);
4843
4890
  }
4844
4891
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GravityAvatarStackComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4845
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: GravityAvatarStackComponent, selector: "gravity-avatar-stack", inputs: { items: "items", isCoin: "isCoin", size: "size", config: "config" }, outputs: { clickOnIcon: "clickOnIcon" }, ngImport: i0, template: "<div class=\"stack-icon-container\">\n <ng-container *ngFor=\"let item of items; let i = index\">\n <div class=\"icon-wrapper\" [style.z-index]=\"selectedIndexes.includes(i) ? 100 : items.length - i\"\n [class.selected]=\"selectedIndexes.includes(i)\">\n <gravity-icon\n class=\"avatar-icon pointer {{size}}\"\n (click)=\"onClick(i);\"\n [iconName]=\"'coin-id-' + item[config.icon]\"\n [isCoin]=\"isCoin\">\n </gravity-icon>\n <p *ngIf=\"config.label\" class=\"hr-body-text sm-regular hover-text\">{{ item[config.label] }}</p>\n </div>\n </ng-container>\n</div>", styles: [".border-radius-none{border-radius:0}.border-radius-xs{border-radius:.0625rem}.border-radius-sm{border-radius:.3125rem}.border-radius-md{border-radius:.625rem}.border-radius-lg{border-radius:.9375rem}.border-radius-xl{border-radius:1.25rem}.border-radius-xxl{border-radius:2rem}.border-radius-rounded{border-radius:6.25rem}.stack-icon-container{display:flex;position:relative}.icon-wrapper{position:relative}.icon-wrapper:not(:first-child){margin-left:-4px}.selected .avatar-icon{outline:1px solid var(--bg-button-active-primary);border-radius:6.25rem}.avatar-icon{height:var(--avatar-icon-height);min-height:var(--avatar-icon-height);width:var(--avatar-icon-width);min-width:var(--avatar-icon-width)}.hover-text{background-color:var(--bg-button-pressed-primary);color:var(--on-bg-button-active-primary);display:none;position:absolute;padding:2px;top:calc(100% + 4px);left:50%;transform:translate(-50%);white-space:nowrap;line-height:normal;border-radius:1.105px}.icon-wrapper:hover .hover-text{display:block}@media (max-width: 992px){.icon-wrapper .hover-text{display:none}.icon-wrapper.selected .hover-text{display:block}.icon-wrapper:not(.selected) .hover-text{display:none!important}}.sm{--avatar-icon-height: 24px;--avatar-icon-width: 24px}.md{--avatar-icon-height: 32px;--avatar-icon-width: 32px}.lg{--avatar-icon-height: 46px;--avatar-icon-width: 46px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: GravityIconComponent, selector: "gravity-icon", inputs: ["customIconColorVariable", "iconName", "iconSize", "hoverIcon", "size", "isCoin"] }] }); }
4892
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: GravityAvatarStackComponent, selector: "gravity-avatar-stack", inputs: { config: "config", isCoin: "isCoin", items: "items", selectMultipleItems: "selectMultipleItems", size: "size" }, outputs: { clickOnIcon: "clickOnIcon" }, ngImport: i0, template: "<div class=\"stack-icon-container\">\n <ng-container *ngFor=\"let item of items; let i = index\">\n <div class=\"icon-wrapper\" [style.z-index]=\"selectedIndexes.includes(i) ? 100 : items.length - i\"\n [class.selected]=\"selectedIndexes.includes(i)\">\n <gravity-icon\n class=\"avatar-icon pointer {{size}}\"\n (click)=\"onClick(i);\" [attr.data-cy]=\"'stack-item-' + item[config.label]\"\n [iconName]=\"'coin-id-' + item[config.icon]\"\n [isCoin]=\"isCoin\">\n </gravity-icon>\n <p *ngIf=\"config.label\" class=\"hr-body-text sm-regular hover-text\">{{ item[config.label] }}</p>\n </div>\n </ng-container>\n</div>", styles: [".border-radius-none{border-radius:0}.border-radius-xs{border-radius:.0625rem}.border-radius-sm{border-radius:.3125rem}.border-radius-md{border-radius:.625rem}.border-radius-lg{border-radius:.9375rem}.border-radius-xl{border-radius:1.25rem}.border-radius-xxl{border-radius:2rem}.border-radius-rounded{border-radius:6.25rem}.stack-icon-container{display:flex;position:relative}.icon-wrapper{position:relative}.icon-wrapper:not(:first-child){margin-left:-4px}.selected .avatar-icon{outline:1px solid var(--bg-button-active-primary);border-radius:6.25rem}.avatar-icon{height:var(--avatar-icon-height);min-height:var(--avatar-icon-height);width:var(--avatar-icon-width);min-width:var(--avatar-icon-width)}.hover-text{background-color:var(--bg-button-pressed-primary);color:var(--on-bg-button-active-primary);display:none;position:absolute;padding:2px;top:calc(100% + 4px);left:50%;transform:translate(-50%);white-space:nowrap;line-height:normal;border-radius:1.105px}.icon-wrapper:hover .hover-text{display:block}@media (max-width: 992px){.icon-wrapper .hover-text{display:none}.icon-wrapper.selected .hover-text{display:block}.icon-wrapper:not(.selected) .hover-text{display:none!important}}.sm{--avatar-icon-height: 24px;--avatar-icon-width: 24px}.md{--avatar-icon-height: 32px;--avatar-icon-width: 32px}.lg{--avatar-icon-height: 46px;--avatar-icon-width: 46px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: GravityIconComponent, selector: "gravity-icon", inputs: ["customIconColorVariable", "iconName", "iconSize", "hoverIcon", "size", "isCoin"] }] }); }
4846
4893
  }
4847
4894
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GravityAvatarStackComponent, decorators: [{
4848
4895
  type: Component,
4849
- args: [{ selector: 'gravity-avatar-stack', template: "<div class=\"stack-icon-container\">\n <ng-container *ngFor=\"let item of items; let i = index\">\n <div class=\"icon-wrapper\" [style.z-index]=\"selectedIndexes.includes(i) ? 100 : items.length - i\"\n [class.selected]=\"selectedIndexes.includes(i)\">\n <gravity-icon\n class=\"avatar-icon pointer {{size}}\"\n (click)=\"onClick(i);\"\n [iconName]=\"'coin-id-' + item[config.icon]\"\n [isCoin]=\"isCoin\">\n </gravity-icon>\n <p *ngIf=\"config.label\" class=\"hr-body-text sm-regular hover-text\">{{ item[config.label] }}</p>\n </div>\n </ng-container>\n</div>", styles: [".border-radius-none{border-radius:0}.border-radius-xs{border-radius:.0625rem}.border-radius-sm{border-radius:.3125rem}.border-radius-md{border-radius:.625rem}.border-radius-lg{border-radius:.9375rem}.border-radius-xl{border-radius:1.25rem}.border-radius-xxl{border-radius:2rem}.border-radius-rounded{border-radius:6.25rem}.stack-icon-container{display:flex;position:relative}.icon-wrapper{position:relative}.icon-wrapper:not(:first-child){margin-left:-4px}.selected .avatar-icon{outline:1px solid var(--bg-button-active-primary);border-radius:6.25rem}.avatar-icon{height:var(--avatar-icon-height);min-height:var(--avatar-icon-height);width:var(--avatar-icon-width);min-width:var(--avatar-icon-width)}.hover-text{background-color:var(--bg-button-pressed-primary);color:var(--on-bg-button-active-primary);display:none;position:absolute;padding:2px;top:calc(100% + 4px);left:50%;transform:translate(-50%);white-space:nowrap;line-height:normal;border-radius:1.105px}.icon-wrapper:hover .hover-text{display:block}@media (max-width: 992px){.icon-wrapper .hover-text{display:none}.icon-wrapper.selected .hover-text{display:block}.icon-wrapper:not(.selected) .hover-text{display:none!important}}.sm{--avatar-icon-height: 24px;--avatar-icon-width: 24px}.md{--avatar-icon-height: 32px;--avatar-icon-width: 32px}.lg{--avatar-icon-height: 46px;--avatar-icon-width: 46px}\n"] }]
4850
- }], propDecorators: { items: [{
4896
+ args: [{ selector: 'gravity-avatar-stack', template: "<div class=\"stack-icon-container\">\n <ng-container *ngFor=\"let item of items; let i = index\">\n <div class=\"icon-wrapper\" [style.z-index]=\"selectedIndexes.includes(i) ? 100 : items.length - i\"\n [class.selected]=\"selectedIndexes.includes(i)\">\n <gravity-icon\n class=\"avatar-icon pointer {{size}}\"\n (click)=\"onClick(i);\" [attr.data-cy]=\"'stack-item-' + item[config.label]\"\n [iconName]=\"'coin-id-' + item[config.icon]\"\n [isCoin]=\"isCoin\">\n </gravity-icon>\n <p *ngIf=\"config.label\" class=\"hr-body-text sm-regular hover-text\">{{ item[config.label] }}</p>\n </div>\n </ng-container>\n</div>", styles: [".border-radius-none{border-radius:0}.border-radius-xs{border-radius:.0625rem}.border-radius-sm{border-radius:.3125rem}.border-radius-md{border-radius:.625rem}.border-radius-lg{border-radius:.9375rem}.border-radius-xl{border-radius:1.25rem}.border-radius-xxl{border-radius:2rem}.border-radius-rounded{border-radius:6.25rem}.stack-icon-container{display:flex;position:relative}.icon-wrapper{position:relative}.icon-wrapper:not(:first-child){margin-left:-4px}.selected .avatar-icon{outline:1px solid var(--bg-button-active-primary);border-radius:6.25rem}.avatar-icon{height:var(--avatar-icon-height);min-height:var(--avatar-icon-height);width:var(--avatar-icon-width);min-width:var(--avatar-icon-width)}.hover-text{background-color:var(--bg-button-pressed-primary);color:var(--on-bg-button-active-primary);display:none;position:absolute;padding:2px;top:calc(100% + 4px);left:50%;transform:translate(-50%);white-space:nowrap;line-height:normal;border-radius:1.105px}.icon-wrapper:hover .hover-text{display:block}@media (max-width: 992px){.icon-wrapper .hover-text{display:none}.icon-wrapper.selected .hover-text{display:block}.icon-wrapper:not(.selected) .hover-text{display:none!important}}.sm{--avatar-icon-height: 24px;--avatar-icon-width: 24px}.md{--avatar-icon-height: 32px;--avatar-icon-width: 32px}.lg{--avatar-icon-height: 46px;--avatar-icon-width: 46px}\n"] }]
4897
+ }], propDecorators: { config: [{
4851
4898
  type: Input
4852
4899
  }], isCoin: [{
4853
4900
  type: Input
4854
- }], size: [{
4901
+ }], items: [{
4855
4902
  type: Input
4856
- }], config: [{
4903
+ }], selectMultipleItems: [{
4904
+ type: Input
4905
+ }], size: [{
4857
4906
  type: Input
4858
4907
  }], clickOnIcon: [{
4859
4908
  type: Output