@flywheel-io/vision 2.6.3 → 2.7.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/avatar-list/avatar-list.component.d.ts +1 -1
- package/components/form-heading/form-heading.component.d.ts +1 -3
- package/components/form-heading/form-heading.module.d.ts +1 -2
- package/components/menu/menu-close-triggers.directive.d.ts +1 -1
- package/components/menu/menu-item/menu-item.component.d.ts +5 -0
- package/components/tooltip/tooltip-panel/tooltip-panel.component.d.ts +14 -3
- package/components/tooltip/tooltip.component.d.ts +5 -12
- package/components/tooltip/tooltip.directive.d.ts +30 -0
- package/components/tooltip/tooltip.module.d.ts +3 -1
- package/components/wrapped-input/wrapped-input.component.d.ts +1 -4
- package/esm2022/components/avatar/avatar.component.mjs +3 -7
- package/esm2022/components/avatar-list/avatar-list.component.mjs +15 -23
- package/esm2022/components/chip-list/chip-list.component.mjs +2 -3
- package/esm2022/components/form-heading/form-heading.component.mjs +3 -9
- package/esm2022/components/form-heading/form-heading.module.mjs +3 -7
- package/esm2022/components/menu/menu-close-triggers.directive.mjs +9 -15
- package/esm2022/components/menu/menu-item/menu-item.component.mjs +13 -2
- package/esm2022/components/tooltip/tooltip-panel/tooltip-panel.component.mjs +70 -6
- package/esm2022/components/tooltip/tooltip.component.mjs +15 -69
- package/esm2022/components/tooltip/tooltip.directive.mjs +114 -0
- package/esm2022/components/tooltip/tooltip.module.mjs +11 -3
- package/esm2022/components/typeahead/typeahead.component.mjs +4 -8
- package/esm2022/components/wrapped-input/wrapped-input.component.mjs +3 -10
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/flywheel-io-vision.mjs +242 -187
- package/fesm2022/flywheel-io-vision.mjs.map +1 -1
- package/flywheel-io-vision-2.7.0-beta.1.tgz +0 -0
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
- package/components/tag/tag.component.d.ts +0 -10
- package/components/tag/tag.module.d.ts +0 -9
- package/esm2022/components/tag/tag.component.mjs +0 -25
- package/esm2022/components/tag/tag.module.mjs +0 -28
|
@@ -80,8 +80,16 @@ export class FwMenuItemComponent {
|
|
|
80
80
|
evt.stopPropagation();
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
|
+
/**
|
|
84
|
+
* stops the browser built-in tooltip from showing up
|
|
85
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Global_attributes/title
|
|
86
|
+
*/
|
|
87
|
+
get attrTitle() {
|
|
88
|
+
return '';
|
|
89
|
+
}
|
|
90
|
+
;
|
|
83
91
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwMenuItemComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
84
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", type: FwMenuItemComponent, selector: "fw-menu-item", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: false, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: false, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: false, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: false, isRequired: false, transformFunction: null }, iconColor: { classPropertyName: "iconColor", publicName: "iconColor", isSignal: false, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null }, showCheckbox: { classPropertyName: "showCheckbox", publicName: "showCheckbox", isSignal: false, isRequired: false, transformFunction: null }, checkboxColor: { classPropertyName: "checkboxColor", publicName: "checkboxColor", isSignal: false, isRequired: false, transformFunction: null }, multiSelect: { classPropertyName: "multiSelect", publicName: "multiSelect", isSignal: false, isRequired: false, transformFunction: null }, hidden: { classPropertyName: "hidden", publicName: "hidden", isSignal: false, isRequired: false, transformFunction: null }, collapsed: { classPropertyName: "collapsed", publicName: "collapsed", isSignal: false, isRequired: false, transformFunction: null }, href: { classPropertyName: "href", publicName: "href", isSignal: false, isRequired: false, transformFunction: null }, target: { classPropertyName: "target", publicName: "target", isSignal: false, isRequired: false, transformFunction: null }, subItemsOpen: { classPropertyName: "subItemsOpen", publicName: "subItemsOpen", isSignal: false, isRequired: false, transformFunction: null }, mouseEnterHandler: { classPropertyName: "mouseEnterHandler", publicName: "mouseEnterHandler", isSignal: true, isRequired: false, transformFunction: null }, focused: { classPropertyName: "focused", publicName: "focused", isSignal: false, isRequired: false, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { mouseEnterHandler: "mouseEnterHandlerChange", click: "click" }, host: { listeners: { "mouseenter": "onMouseEnter($event)" }, properties: { "class.collapsed": "this.collapsed", "class.focused": "this.focused", "class.selected": "this.selected" } }, queries: [{ propertyName: "subItems", predicate: FwMenuSubItemComponent }], usesOnChanges: true, ngImport: i0, template: "<div (click)=\"handleClick($event)\" *ngIf=\"!hidden\">\n <div\n [ngClass]=\"['menu-item', 'size-'+size, disabled?'disabled':'']\"\n [class.disabled]=\"disabled\">\n <div class=\"item-checkbox\" *ngIf=\"showCheckbox && multiSelect\">\n <fw-checkbox\n [disabled]=\"disabled\"\n [color]=\"checkboxColor\"\n [checked]=\"selected\">\n </fw-checkbox>\n </div>\n <div class=\"item-radiobutton\" *ngIf=\"showCheckbox && !multiSelect\">\n <fw-radio-button\n [value]=\"value\"\n [color]=\"checkboxColor\"\n [disabled]=\"disabled\"\n [checked]=\"selected\">\n </fw-radio-button>\n </div>\n <fw-icon [color]=\"iconColor\" *ngIf=\"icon\" class=\"menu-icon {{iconColor}}\">{{ icon }}</fw-icon>\n <ng-content select=\"fw-avatar\"></ng-content>\n <div class=\"menu-text\" *ngIf=\"title\">\n <h4 class=\"vision-h4\">{{ title }}</h4>\n <p *ngIf=\"description\" class=\"vision-p4 description\">{{ description }}</p>\n </div>\n <div class=\"key-text vision-p2\">\n <ng-content select=\"p\"></ng-content>\n <ng-content select=\"fw-badge\"></ng-content>\n <ng-content select=\"fw-icon\"></ng-content>\n <ng-content select=\"fw-icon-button\"></ng-content>\n <fw-icon-button\n [size]=\"'small'\"\n [icon]=\"subItemsOpen?'chevron-up':'chevron-down'\"\n *ngIf=\"subItems.length>0\"\n (click)=\"toggleSubItemsView()\">\n </fw-icon-button>\n </div>\n </div>\n</div>\n<div class=\"item-subitems\">\n <ng-content select=\"fw-menu-sub-item\"></ng-content>\n</div>\n", styles: [":host{position:relative;display:flex;flex-direction:column}:host>div{display:flex;flex:1;text-decoration:none;max-width:100%}:host h4{text-overflow:ellipsis}:host:hover:not(.selected) .menu-item:not(.disabled),:host.focused .menu-item:not(.disabled){background-color:var(--slate-hover);cursor:pointer}:host:hover:not(.selected) .menu-item:not(.disabled) .menu-icon,:host.focused .menu-item:not(.disabled) .menu-icon{color:var(--primary-base)}:host:hover:not(.selected) .menu-item:not(.disabled) .menu-text h4,:host.focused .menu-item:not(.disabled) .menu-text h4{color:var(--typography-base)}:host.selected .menu-item{background-color:var(--primary-hover);cursor:pointer}:host.selected .menu-item .menu-icon{color:var(--primary-base)}:host.selected .menu-item .menu-text h4{color:var(--typography-base)}:host.collapsed .menu-item{container-name:menuitem;container-type:size}:host .menu-item{box-sizing:border-box;display:flex;flex-direction:row;align-items:center;flex:1;gap:8px;padding:8px;margin:1px 4px;border-radius:4px;color:var(--typography-muted);min-height:40px;width:stretch}:host .menu-item .item-checkbox:empty{display:none}:host .menu-item .item-radiobutton{padding:0}:host .menu-item .item-radiobutton:empty{display:none}:host .menu-item .menu-icon{font-size:18px;min-width:18px;width:18px;white-space:nowrap}:host .menu-item .menu-text{flex:1;overflow:hidden;padding:2px 0}:host .menu-item .menu-text h4{margin:0;color:var(--typography-muted);white-space:nowrap;overflow:hidden}:host .menu-item .menu-text p{margin:0}:host .menu-item .menu-text p.description{color:var(--typography-light)}:host .menu-item .key-text{display:flex;align-items:center;gap:8px;color:var(--typography-light)}:host .menu-item .key-text fw-icon-button{min-height:22px!important;min-width:22px!important;width:22px!important}:host .menu-item.size-compact{min-height:32px}:host .menu-item.size-compact .menu-text .description{display:none}:host .menu-item.disabled{opacity:.4;cursor:not-allowed}:host .item-subitems{display:flex;flex-direction:column}@container menuitem (max-width: 60px){.menu-item{gap:0}.menu-item .menu-text{opacity:0}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.FwIconButtonComponent, selector: "fw-icon-button", inputs: ["color", "icon", "size", "disabled", "selected"] }, { kind: "component", type: i3.FwIconComponent, selector: "fw-icon", inputs: ["size", "color"] }, { kind: "component", type: i4.FwCheckboxComponent, selector: "fw-checkbox", inputs: ["name", "disabled", "size", "color", "title", "focused", "checked"], outputs: ["change"] }, { kind: "component", type: i5.FwRadioComponent, selector: "fw-radio-button", inputs: ["checked", "value", "group", "disabled", "size", "color", "title", "focused"], outputs: ["change"] }] }); }
|
|
92
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", type: FwMenuItemComponent, selector: "fw-menu-item", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: false, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: false, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: false, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: false, isRequired: false, transformFunction: null }, iconColor: { classPropertyName: "iconColor", publicName: "iconColor", isSignal: false, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null }, showCheckbox: { classPropertyName: "showCheckbox", publicName: "showCheckbox", isSignal: false, isRequired: false, transformFunction: null }, checkboxColor: { classPropertyName: "checkboxColor", publicName: "checkboxColor", isSignal: false, isRequired: false, transformFunction: null }, multiSelect: { classPropertyName: "multiSelect", publicName: "multiSelect", isSignal: false, isRequired: false, transformFunction: null }, hidden: { classPropertyName: "hidden", publicName: "hidden", isSignal: false, isRequired: false, transformFunction: null }, collapsed: { classPropertyName: "collapsed", publicName: "collapsed", isSignal: false, isRequired: false, transformFunction: null }, href: { classPropertyName: "href", publicName: "href", isSignal: false, isRequired: false, transformFunction: null }, target: { classPropertyName: "target", publicName: "target", isSignal: false, isRequired: false, transformFunction: null }, subItemsOpen: { classPropertyName: "subItemsOpen", publicName: "subItemsOpen", isSignal: false, isRequired: false, transformFunction: null }, mouseEnterHandler: { classPropertyName: "mouseEnterHandler", publicName: "mouseEnterHandler", isSignal: true, isRequired: false, transformFunction: null }, focused: { classPropertyName: "focused", publicName: "focused", isSignal: false, isRequired: false, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { mouseEnterHandler: "mouseEnterHandlerChange", click: "click" }, host: { listeners: { "mouseenter": "onMouseEnter($event)" }, properties: { "class.collapsed": "this.collapsed", "class.focused": "this.focused", "class.selected": "this.selected", "attr.title": "this.attrTitle" } }, queries: [{ propertyName: "subItems", predicate: FwMenuSubItemComponent }], usesOnChanges: true, ngImport: i0, template: "<div (click)=\"handleClick($event)\" *ngIf=\"!hidden\">\n <div\n [ngClass]=\"['menu-item', 'size-'+size, disabled?'disabled':'']\"\n [class.disabled]=\"disabled\">\n <div class=\"item-checkbox\" *ngIf=\"showCheckbox && multiSelect\">\n <fw-checkbox\n [disabled]=\"disabled\"\n [color]=\"checkboxColor\"\n [checked]=\"selected\">\n </fw-checkbox>\n </div>\n <div class=\"item-radiobutton\" *ngIf=\"showCheckbox && !multiSelect\">\n <fw-radio-button\n [value]=\"value\"\n [color]=\"checkboxColor\"\n [disabled]=\"disabled\"\n [checked]=\"selected\">\n </fw-radio-button>\n </div>\n <fw-icon [color]=\"iconColor\" *ngIf=\"icon\" class=\"menu-icon {{iconColor}}\">{{ icon }}</fw-icon>\n <ng-content select=\"fw-avatar\"></ng-content>\n <div class=\"menu-text\" *ngIf=\"title\">\n <h4 class=\"vision-h4\">{{ title }}</h4>\n <p *ngIf=\"description\" class=\"vision-p4 description\">{{ description }}</p>\n </div>\n <div class=\"key-text vision-p2\">\n <ng-content select=\"p\"></ng-content>\n <ng-content select=\"fw-badge\"></ng-content>\n <ng-content select=\"fw-icon\"></ng-content>\n <ng-content select=\"fw-icon-button\"></ng-content>\n <fw-icon-button\n [size]=\"'small'\"\n [icon]=\"subItemsOpen?'chevron-up':'chevron-down'\"\n *ngIf=\"subItems.length>0\"\n (click)=\"toggleSubItemsView()\">\n </fw-icon-button>\n </div>\n </div>\n</div>\n<div class=\"item-subitems\">\n <ng-content select=\"fw-menu-sub-item\"></ng-content>\n</div>\n", styles: [":host{position:relative;display:flex;flex-direction:column}:host>div{display:flex;flex:1;text-decoration:none;max-width:100%}:host h4{text-overflow:ellipsis}:host:hover:not(.selected) .menu-item:not(.disabled),:host.focused .menu-item:not(.disabled){background-color:var(--slate-hover);cursor:pointer}:host:hover:not(.selected) .menu-item:not(.disabled) .menu-icon,:host.focused .menu-item:not(.disabled) .menu-icon{color:var(--primary-base)}:host:hover:not(.selected) .menu-item:not(.disabled) .menu-text h4,:host.focused .menu-item:not(.disabled) .menu-text h4{color:var(--typography-base)}:host.selected .menu-item{background-color:var(--primary-hover);cursor:pointer}:host.selected .menu-item .menu-icon{color:var(--primary-base)}:host.selected .menu-item .menu-text h4{color:var(--typography-base)}:host.collapsed .menu-item{container-name:menuitem;container-type:size}:host .menu-item{box-sizing:border-box;display:flex;flex-direction:row;align-items:center;flex:1;gap:8px;padding:8px;margin:1px 4px;border-radius:4px;color:var(--typography-muted);min-height:40px;width:stretch}:host .menu-item .item-checkbox:empty{display:none}:host .menu-item .item-radiobutton{padding:0}:host .menu-item .item-radiobutton:empty{display:none}:host .menu-item .menu-icon{font-size:18px;min-width:18px;width:18px;white-space:nowrap}:host .menu-item .menu-text{flex:1;overflow:hidden;padding:2px 0}:host .menu-item .menu-text h4{margin:0;color:var(--typography-muted);white-space:nowrap;overflow:hidden}:host .menu-item .menu-text p{margin:0}:host .menu-item .menu-text p.description{color:var(--typography-light)}:host .menu-item .key-text{display:flex;align-items:center;gap:8px;color:var(--typography-light)}:host .menu-item .key-text fw-icon-button{min-height:22px!important;min-width:22px!important;width:22px!important}:host .menu-item.size-compact{min-height:32px}:host .menu-item.size-compact .menu-text .description{display:none}:host .menu-item.disabled{opacity:.4;cursor:not-allowed}:host .item-subitems{display:flex;flex-direction:column}@container menuitem (max-width: 60px){.menu-item{gap:0}.menu-item .menu-text{opacity:0}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.FwIconButtonComponent, selector: "fw-icon-button", inputs: ["color", "icon", "size", "disabled", "selected"] }, { kind: "component", type: i3.FwIconComponent, selector: "fw-icon", inputs: ["size", "color"] }, { kind: "component", type: i4.FwCheckboxComponent, selector: "fw-checkbox", inputs: ["name", "disabled", "size", "color", "title", "focused", "checked"], outputs: ["change"] }, { kind: "component", type: i5.FwRadioComponent, selector: "fw-radio-button", inputs: ["checked", "value", "group", "disabled", "size", "color", "title", "focused"], outputs: ["change"] }] }); }
|
|
85
93
|
}
|
|
86
94
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwMenuItemComponent, decorators: [{
|
|
87
95
|
type: Component,
|
|
@@ -137,5 +145,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
137
145
|
}], onMouseEnter: [{
|
|
138
146
|
type: HostListener,
|
|
139
147
|
args: ['mouseenter', ['$event']]
|
|
148
|
+
}], attrTitle: [{
|
|
149
|
+
type: HostBinding,
|
|
150
|
+
args: ['attr.title']
|
|
140
151
|
}] } });
|
|
141
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21lbnUvbWVudS1pdGVtL21lbnUtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tZW51L21lbnUtaXRlbS9tZW51LWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUNMLEtBQUssRUFHTCxNQUFNLEdBR1AsTUFBTSxlQUFlLENBQUM7QUFJdkIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMENBQTBDLENBQUM7Ozs7Ozs7QUFTbEYsTUFBTSxPQUFPLG1CQUFtQjtJQXdCOUIsWUFBb0IsVUFBbUM7UUFBbkMsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7UUF0QjlDLFNBQUksR0FBMkIsU0FBUyxDQUFDO1FBSXpDLGNBQVMsR0FBbUYsU0FBUyxDQUFDO1FBRXRHLGlCQUFZLEdBQWEsS0FBSyxDQUFDO1FBQy9CLGtCQUFhLEdBQTZCLFNBQVMsQ0FBQztRQUNwRCxnQkFBVyxHQUFhLEtBQUssQ0FBQztRQUM5QixXQUFNLEdBQWEsS0FBSyxDQUFDO1FBSXpCLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBQ3ZDLHNCQUFpQixHQUFHLEtBQUssQ0FBb0IsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdkQsNERBQTREO1FBQ2xELFVBQUssR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUM1QixZQUFPLEdBQWEsS0FBSyxDQUFDO1FBQ3pCLGFBQVEsR0FBYSxLQUFLLENBQUM7UUFFM0Qsa0JBQWEsR0FBbUIsRUFBRSxDQUFDO0lBRWUsQ0FBQztJQUUzRCxjQUFjO1FBQ1osdUVBQXVFO1FBQ3ZFLElBQUksQ0FB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QkFBYixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ21DLFNBQVM7c0JBQWpELFdBQVc7dUJBQUMsaUJBQWlCOztzQkFBRyxLQUFLO2dCQUM3QixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBR0ksS0FBSztzQkFBZCxNQUFNO2dCQUNnQyxPQUFPO3NCQUE3QyxXQUFXO3VCQUFDLGVBQWU7O3NCQUFHLEtBQUs7Z0JBQ0ksUUFBUTtzQkFBL0MsV0FBVzt1QkFBQyxnQkFBZ0I7O3NCQUFHLEtBQUs7Z0JBQ0ksUUFBUTtzQkFBaEQsZUFBZTt1QkFBQyxzQkFBc0I7Z0JBNkJDLFlBQVk7c0JBQW5ELFlBQVk7dUJBQUMsWUFBWSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIG1vZGVsLFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEljb25UeXBlIH0gZnJvbSAnLi4vLi4vaWNvbi9pY29uLnR5cGVzJztcbmltcG9ydCB7IEZ3TWVudVN1Ykl0ZW1Db21wb25lbnQgfSBmcm9tICcuLi9tZW51LXN1Yi1pdGVtL21lbnUtc3ViLWl0ZW0uY29tcG9uZW50JztcblxudHlwZSBNb3VzZUVudGVySGFuZGxlciA9ICgkZXZlbnQ6IFBvaW50ZXJFdmVudCwgaXRlbTogRndNZW51SXRlbUNvbXBvbmVudCkgPT4gdm9pZDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZnctbWVudS1pdGVtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21lbnUtaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21lbnUtaXRlbS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBGd01lbnVJdGVtQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIEFmdGVyQ29udGVudEluaXQge1xuICBASW5wdXQoKSB2YWx1ZT86IHN0cmluZztcbiAgQElucHV0KCkgc2l6ZT86ICdkZWZhdWx0JyB8ICdjb21wYWN0JyA9ICdkZWZhdWx0JztcbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZztcbiAgQElucHV0KCkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGljb24/OiBJY29uVHlwZTtcbiAgQElucHV0KCkgaWNvbkNvbG9yPzogJ3ByaW1hcnknIHwgJ3NlY29uZGFyeScgfCAncmVkJyB8ICdvcmFuZ2UnIHwgJ2dyZWVuJyB8ICdzbGF0ZScgfCAndHlwb2dyYXBoeScgPSAncHJpbWFyeSc7XG4gIEBJbnB1dCgpIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgQElucHV0KCkgc2hvd0NoZWNrYm94PzogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBjaGVja2JveENvbG9yPzogJ3ByaW1hcnknIHwgJ3NlY29uZGFyeScgPSAncHJpbWFyeSc7XG4gIEBJbnB1dCgpIG11bHRpU2VsZWN0PzogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBoaWRkZW4/OiBib29sZWFuID0gZmFsc2U7XG4gIEBIb3N0QmluZGluZygnY2xhc3MuY29sbGFwc2VkJykgQElucHV0KCkgY29sbGFwc2VkPzogYm9vbGVhbjtcbiAgQElucHV0KCkgaHJlZj86IHN0cmluZztcbiAgQElucHV0KCkgdGFyZ2V0Pzogc3RyaW5nO1xuICBASW5wdXQoKSBzdWJJdGVtc09wZW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgbW91c2VFbnRlckhhbmRsZXIgPSBtb2RlbDxNb3VzZUVudGVySGFuZGxlcj4oKCkgPT4ge30pO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1uYXRpdmVcbiAgQE91dHB1dCgpIGNsaWNrOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZvY3VzZWQnKSBASW5wdXQoKSBmb2N1c2VkPzogYm9vbGVhbiA9IGZhbHNlO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNlbGVjdGVkJykgQElucHV0KCkgc2VsZWN0ZWQ/OiBib29sZWFuID0gZmFsc2U7XG4gIEBDb250ZW50Q2hpbGRyZW4oRndNZW51U3ViSXRlbUNvbXBvbmVudCkgc3ViSXRlbXM6IFF1ZXJ5TGlzdDxGd01lbnVTdWJJdGVtQ29tcG9uZW50PjtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pIHt9XG5cbiAgc2Nyb2xsSW50b1ZpZXcoKTogdm9pZCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEByeC1hbmd1bGFyL3ByZWZlci1uby1sYXlvdXQtc2Vuc2l0aXZlLWFwaXNcbiAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJyB9KTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IHN1YnNjcmlwdGlvbiBvZiB0aGlzLnN1YnNjcmlwdGlvbnMpIHtcbiAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN1Ykl0ZW1zLmZvckVhY2goc3ViSXRlbSA9PiB7XG4gICAgICBjb25zdCBzdWIgPSBzdWJJdGVtLmNsaWNrLnN1YnNjcmliZSh2YWx1ZSA9PiB0aGlzLmNsaWNrLmVtaXQodmFsdWUpKTtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHN1Yik7XG4gICAgfSk7XG4gICAgdGhpcy51cGRhdGVMYXlvdXQoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlZW50ZXInLCBbJyRldmVudCddKSBvbk1vdXNlRW50ZXIoZXZlbnQ6IFBvaW50ZXJFdmVudCk6IHZvaWQge1xuICAgIHRoaXMubW91c2VFbnRlckhhbmRsZXIoKT8uKGV2ZW50LCB0aGlzKTtcbiAgfVxuXG4gIHVwZGF0ZUxheW91dCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdWJJdGVtcykge1xuICAgICAgdGhpcy5zdWJJdGVtcy5mb3JFYWNoKHN1Ykl0ZW0gPT4ge1xuICAgICAgICBzdWJJdGVtLnNpemUgPSB0aGlzLnNpemU7XG4gICAgICAgIHN1Ykl0ZW0uaGlkZGVuID0gISh0aGlzLnN1Ykl0ZW1zT3BlbiAmJiAhdGhpcy5jb2xsYXBzZWQpO1xuICAgICAgICBzdWJJdGVtLmNvbGxhcHNlZCA9IHRoaXMuY29sbGFwc2VkO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlU3ViSXRlbXNWaWV3KCk6IHZvaWQge1xuICAgIHRoaXMuc3ViSXRlbXNPcGVuID0gIXRoaXMuc3ViSXRlbXNPcGVuO1xuICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7XG4gIH1cblxuICBoYW5kbGVDbGljayhldnQ/OiBFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaHJlZikge1xuICAgICAgaWYgKHRoaXMudGFyZ2V0KSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAcngtYW5ndWxhci9wcmVmZXItbm8tbGF5b3V0LXNlbnNpdGl2ZS1hcGlzXG4gICAgICAgIHdpbmRvdy5vcGVuKHRoaXMuaHJlZiwgdGhpcy50YXJnZXQpLmZvY3VzKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHRoaXMuaHJlZjtcbiAgICAgIH1cbiAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy52YWx1ZSkge1xuICAgICAgdGhpcy5jbGljay5lbWl0KHRoaXMudmFsdWUpO1xuICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiAoY2xpY2spPVwiaGFuZGxlQ2xpY2soJGV2ZW50KVwiICpuZ0lmPVwiIWhpZGRlblwiPlxuICA8ZGl2XG4gICAgW25nQ2xhc3NdPVwiWydtZW51LWl0ZW0nLCAnc2l6ZS0nK3NpemUsIGRpc2FibGVkPydkaXNhYmxlZCc6JyddXCJcbiAgICBbY2xhc3MuZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaXRlbS1jaGVja2JveFwiICpuZ0lmPVwic2hvd0NoZWNrYm94ICYmIG11bHRpU2VsZWN0XCI+XG4gICAgICA8ZnctY2hlY2tib3hcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW2NvbG9yXT1cImNoZWNrYm94Q29sb3JcIlxuICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZFwiPlxuICAgICAgPC9mdy1jaGVja2JveD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiaXRlbS1yYWRpb2J1dHRvblwiICpuZ0lmPVwic2hvd0NoZWNrYm94ICYmICFtdWx0aVNlbGVjdFwiPlxuICAgICAgPGZ3LXJhZGlvLWJ1dHRvblxuICAgICAgICBbdmFsdWVdPVwidmFsdWVcIlxuICAgICAgICBbY29sb3JdPVwiY2hlY2tib3hDb2xvclwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGVkXCI+XG4gICAgICA8L2Z3LXJhZGlvLWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZnctaWNvbiBbY29sb3JdPVwiaWNvbkNvbG9yXCIgKm5nSWY9XCJpY29uXCIgY2xhc3M9XCJtZW51LWljb24ge3tpY29uQ29sb3J9fVwiPnt7IGljb24gfX08L2Z3LWljb24+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZnctYXZhdGFyXCI+PC9uZy1jb250ZW50PlxuICAgIDxkaXYgY2xhc3M9XCJtZW51LXRleHRcIiAqbmdJZj1cInRpdGxlXCI+XG4gICAgICA8aDQgY2xhc3M9XCJ2aXNpb24taDRcIj57eyB0aXRsZSB9fTwvaDQ+XG4gICAgICA8cCAqbmdJZj1cImRlc2NyaXB0aW9uXCIgY2xhc3M9XCJ2aXNpb24tcDQgZGVzY3JpcHRpb25cIj57eyBkZXNjcmlwdGlvbiB9fTwvcD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwia2V5LXRleHQgdmlzaW9uLXAyXCI+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJwXCI+PC9uZy1jb250ZW50PlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZnctYmFkZ2VcIj48L25nLWNvbnRlbnQ+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJmdy1pY29uXCI+PC9uZy1jb250ZW50PlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZnctaWNvbi1idXR0b25cIj48L25nLWNvbnRlbnQ+XG4gICAgICA8ZnctaWNvbi1idXR0b25cbiAgICAgICAgW3NpemVdPVwiJ3NtYWxsJ1wiXG4gICAgICAgIFtpY29uXT1cInN1Ykl0ZW1zT3Blbj8nY2hldnJvbi11cCc6J2NoZXZyb24tZG93bidcIlxuICAgICAgICAqbmdJZj1cInN1Ykl0ZW1zLmxlbmd0aD4wXCJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVN1Ykl0ZW1zVmlldygpXCI+XG4gICAgICA8L2Z3LWljb24tYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cIml0ZW0tc3ViaXRlbXNcIj5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZnctbWVudS1zdWItaXRlbVwiPjwvbmctY29udGVudD5cbjwvZGl2PlxuIl19
|
|
152
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21lbnUvbWVudS1pdGVtL21lbnUtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tZW51L21lbnUtaXRlbS9tZW51LWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUNMLEtBQUssRUFHTCxNQUFNLEdBR1AsTUFBTSxlQUFlLENBQUM7QUFJdkIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMENBQTBDLENBQUM7Ozs7Ozs7QUFTbEYsTUFBTSxPQUFPLG1CQUFtQjtJQXdCOUIsWUFBb0IsVUFBbUM7UUFBbkMsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7UUF0QjlDLFNBQUksR0FBMkIsU0FBUyxDQUFDO1FBSXpDLGNBQVMsR0FBbUYsU0FBUyxDQUFDO1FBRXRHLGlCQUFZLEdBQWEsS0FBSyxDQUFDO1FBQy9CLGtCQUFhLEdBQTZCLFNBQVMsQ0FBQztRQUNwRCxnQkFBVyxHQUFhLEtBQUssQ0FBQztRQUM5QixXQUFNLEdBQWEsS0FBSyxDQUFDO1FBSXpCLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBQ3ZDLHNCQUFpQixHQUFHLEtBQUssQ0FBb0IsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdkQsNERBQTREO1FBQ2xELFVBQUssR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUM1QixZQUFPLEdBQWEsS0FBSyxDQUFDO1FBQ3pCLGFBQVEsR0FBYSxLQUFLLENBQUM7UUFFM0Qsa0JBQWEsR0FBbUIsRUFBRSxDQUFDO0lBRWUsQ0FBQztJQUUzRCxjQUFjO1FBQ1osdUVBQXVFO1FBQ3ZFLElBQUksQ0FB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UzsrQkFDRSxjQUFjOytFQUtmLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ21DLFNBQVM7c0JBQWpELFdBQVc7dUJBQUMsaUJBQWlCOztzQkFBRyxLQUFLO2dCQUM3QixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBR0ksS0FBSztzQkFBZCxNQUFNO2dCQUNnQyxPQUFPO3NCQUE3QyxXQUFXO3VCQUFDLGVBQWU7O3NCQUFHLEtBQUs7Z0JBQ0ksUUFBUTtzQkFBL0MsV0FBVzt1QkFBQyxnQkFBZ0I7O3NCQUFHLEtBQUs7Z0JBQ0ksUUFBUTtzQkFBaEQsZUFBZTt1QkFBQyxzQkFBc0I7Z0JBNkJDLFlBQVk7c0JBQW5ELFlBQVk7dUJBQUMsWUFBWSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQThDUCxTQUFTO3NCQUF2QyxXQUFXO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgbW9kZWwsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgSWNvblR5cGUgfSBmcm9tICcuLi8uLi9pY29uL2ljb24udHlwZXMnO1xuaW1wb3J0IHsgRndNZW51U3ViSXRlbUNvbXBvbmVudCB9IGZyb20gJy4uL21lbnUtc3ViLWl0ZW0vbWVudS1zdWItaXRlbS5jb21wb25lbnQnO1xuXG50eXBlIE1vdXNlRW50ZXJIYW5kbGVyID0gKCRldmVudDogUG9pbnRlckV2ZW50LCBpdGVtOiBGd01lbnVJdGVtQ29tcG9uZW50KSA9PiB2b2lkO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmdy1tZW51LWl0ZW0nLFxuICB0ZW1wbGF0ZVVybDogJy4vbWVudS1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWVudS1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEZ3TWVudUl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSwgQWZ0ZXJDb250ZW50SW5pdCB7XG4gIEBJbnB1dCgpIHZhbHVlPzogc3RyaW5nO1xuICBASW5wdXQoKSBzaXplPzogJ2RlZmF1bHQnIHwgJ2NvbXBhY3QnID0gJ2RlZmF1bHQnO1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgQElucHV0KCkgaWNvbj86IEljb25UeXBlO1xuICBASW5wdXQoKSBpY29uQ29sb3I/OiAncHJpbWFyeScgfCAnc2Vjb25kYXJ5JyB8ICdyZWQnIHwgJ29yYW5nZScgfCAnZ3JlZW4nIHwgJ3NsYXRlJyB8ICd0eXBvZ3JhcGh5JyA9ICdwcmltYXJ5JztcbiAgQElucHV0KCkgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBASW5wdXQoKSBzaG93Q2hlY2tib3g/OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNoZWNrYm94Q29sb3I/OiAncHJpbWFyeScgfCAnc2Vjb25kYXJ5JyA9ICdwcmltYXJ5JztcbiAgQElucHV0KCkgbXVsdGlTZWxlY3Q/OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGhpZGRlbj86IGJvb2xlYW4gPSBmYWxzZTtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jb2xsYXBzZWQnKSBASW5wdXQoKSBjb2xsYXBzZWQ/OiBib29sZWFuO1xuICBASW5wdXQoKSBocmVmPzogc3RyaW5nO1xuICBASW5wdXQoKSB0YXJnZXQ/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHN1Ykl0ZW1zT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuICBtb3VzZUVudGVySGFuZGxlciA9IG1vZGVsPE1vdXNlRW50ZXJIYW5kbGVyPigoKSA9PiB7fSk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW5hdGl2ZVxuICBAT3V0cHV0KCkgY2xpY2s6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBIb3N0QmluZGluZygnY2xhc3MuZm9jdXNlZCcpIEBJbnB1dCgpIGZvY3VzZWQ/OiBib29sZWFuID0gZmFsc2U7XG4gIEBIb3N0QmluZGluZygnY2xhc3Muc2VsZWN0ZWQnKSBASW5wdXQoKSBzZWxlY3RlZD86IGJvb2xlYW4gPSBmYWxzZTtcbiAgQENvbnRlbnRDaGlsZHJlbihGd01lbnVTdWJJdGVtQ29tcG9uZW50KSBzdWJJdGVtczogUXVlcnlMaXN0PEZ3TWVudVN1Ykl0ZW1Db21wb25lbnQ+O1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge31cblxuICBzY3JvbGxJbnRvVmlldygpOiB2b2lkIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHJ4LWFuZ3VsYXIvcHJlZmVyLW5vLWxheW91dC1zZW5zaXRpdmUtYXBpc1xuICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnIH0pO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVMYXlvdXQoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGZvciAoY29uc3Qgc3Vic2NyaXB0aW9uIG9mIHRoaXMuc3Vic2NyaXB0aW9ucykge1xuICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc3ViSXRlbXMuZm9yRWFjaChzdWJJdGVtID0+IHtcbiAgICAgIGNvbnN0IHN1YiA9IHN1Ykl0ZW0uY2xpY2suc3Vic2NyaWJlKHZhbHVlID0+IHRoaXMuY2xpY2suZW1pdCh2YWx1ZSkpO1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goc3ViKTtcbiAgICB9KTtcbiAgICB0aGlzLnVwZGF0ZUxheW91dCgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicsIFsnJGV2ZW50J10pIG9uTW91c2VFbnRlcihldmVudDogUG9pbnRlckV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5tb3VzZUVudGVySGFuZGxlcigpPy4oZXZlbnQsIHRoaXMpO1xuICB9XG5cbiAgdXBkYXRlTGF5b3V0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN1Ykl0ZW1zKSB7XG4gICAgICB0aGlzLnN1Ykl0ZW1zLmZvckVhY2goc3ViSXRlbSA9PiB7XG4gICAgICAgIHN1Ykl0ZW0uc2l6ZSA9IHRoaXMuc2l6ZTtcbiAgICAgICAgc3ViSXRlbS5oaWRkZW4gPSAhKHRoaXMuc3ViSXRlbXNPcGVuICYmICF0aGlzLmNvbGxhcHNlZCk7XG4gICAgICAgIHN1Ykl0ZW0uY29sbGFwc2VkID0gdGhpcy5jb2xsYXBzZWQ7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVTdWJJdGVtc1ZpZXcoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJJdGVtc09wZW4gPSAhdGhpcy5zdWJJdGVtc09wZW47XG4gICAgdGhpcy51cGRhdGVMYXlvdXQoKTtcbiAgfVxuXG4gIGhhbmRsZUNsaWNrKGV2dD86IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5ocmVmKSB7XG4gICAgICBpZiAodGhpcy50YXJnZXQpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEByeC1hbmd1bGFyL3ByZWZlci1uby1sYXlvdXQtc2Vuc2l0aXZlLWFwaXNcbiAgICAgICAgd2luZG93Lm9wZW4odGhpcy5ocmVmLCB0aGlzLnRhcmdldCkuZm9jdXMoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdGhpcy5ocmVmO1xuICAgICAgfVxuICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnZhbHVlKSB7XG4gICAgICB0aGlzLmNsaWNrLmVtaXQodGhpcy52YWx1ZSk7XG4gICAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIHN0b3BzIHRoZSBicm93c2VyIGJ1aWx0LWluIHRvb2x0aXAgZnJvbSBzaG93aW5nIHVwXG4gICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9SZWZlcmVuY2UvR2xvYmFsX2F0dHJpYnV0ZXMvdGl0bGVcbiAgKi9cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnRpdGxlJykgZ2V0IGF0dHJUaXRsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnJztcbiAgfTtcbn1cbiIsIjxkaXYgKGNsaWNrKT1cImhhbmRsZUNsaWNrKCRldmVudClcIiAqbmdJZj1cIiFoaWRkZW5cIj5cbiAgPGRpdlxuICAgIFtuZ0NsYXNzXT1cIlsnbWVudS1pdGVtJywgJ3NpemUtJytzaXplLCBkaXNhYmxlZD8nZGlzYWJsZWQnOicnXVwiXG4gICAgW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVkXCI+XG4gICAgPGRpdiBjbGFzcz1cIml0ZW0tY2hlY2tib3hcIiAqbmdJZj1cInNob3dDaGVja2JveCAmJiBtdWx0aVNlbGVjdFwiPlxuICAgICAgPGZ3LWNoZWNrYm94XG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFtjb2xvcl09XCJjaGVja2JveENvbG9yXCJcbiAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0ZWRcIj5cbiAgICAgIDwvZnctY2hlY2tib3g+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIml0ZW0tcmFkaW9idXR0b25cIiAqbmdJZj1cInNob3dDaGVja2JveCAmJiAhbXVsdGlTZWxlY3RcIj5cbiAgICAgIDxmdy1yYWRpby1idXR0b25cbiAgICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICAgICAgW2NvbG9yXT1cImNoZWNrYm94Q29sb3JcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZFwiPlxuICAgICAgPC9mdy1yYWRpby1idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGZ3LWljb24gW2NvbG9yXT1cImljb25Db2xvclwiICpuZ0lmPVwiaWNvblwiIGNsYXNzPVwibWVudS1pY29uIHt7aWNvbkNvbG9yfX1cIj57eyBpY29uIH19PC9mdy1pY29uPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImZ3LWF2YXRhclwiPjwvbmctY29udGVudD5cbiAgICA8ZGl2IGNsYXNzPVwibWVudS10ZXh0XCIgKm5nSWY9XCJ0aXRsZVwiPlxuICAgICAgPGg0IGNsYXNzPVwidmlzaW9uLWg0XCI+e3sgdGl0bGUgfX08L2g0PlxuICAgICAgPHAgKm5nSWY9XCJkZXNjcmlwdGlvblwiIGNsYXNzPVwidmlzaW9uLXA0IGRlc2NyaXB0aW9uXCI+e3sgZGVzY3JpcHRpb24gfX08L3A+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImtleS10ZXh0IHZpc2lvbi1wMlwiPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwicFwiPjwvbmctY29udGVudD5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImZ3LWJhZGdlXCI+PC9uZy1jb250ZW50PlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZnctaWNvblwiPjwvbmctY29udGVudD5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImZ3LWljb24tYnV0dG9uXCI+PC9uZy1jb250ZW50PlxuICAgICAgPGZ3LWljb24tYnV0dG9uXG4gICAgICAgIFtzaXplXT1cIidzbWFsbCdcIlxuICAgICAgICBbaWNvbl09XCJzdWJJdGVtc09wZW4/J2NoZXZyb24tdXAnOidjaGV2cm9uLWRvd24nXCJcbiAgICAgICAgKm5nSWY9XCJzdWJJdGVtcy5sZW5ndGg+MFwiXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVTdWJJdGVtc1ZpZXcoKVwiPlxuICAgICAgPC9mdy1pY29uLWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJpdGVtLXN1Yml0ZW1zXCI+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cImZ3LW1lbnUtc3ViLWl0ZW1cIj48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -1,11 +1,55 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { animate, style, transition, trigger } from '@angular/animations';
|
|
2
|
+
import { CdkOverlayOrigin, Overlay } from '@angular/cdk/overlay';
|
|
3
|
+
import { Component, computed, effect, EventEmitter, HostBinding, HostListener, inject, Input, input, Output, ViewEncapsulation } from '@angular/core';
|
|
2
4
|
import * as i0 from "@angular/core";
|
|
3
5
|
import * as i1 from "@angular/common";
|
|
6
|
+
const delayMap = {
|
|
7
|
+
'none': 0,
|
|
8
|
+
'short': 400,
|
|
9
|
+
'long': 700,
|
|
10
|
+
};
|
|
11
|
+
const positionMap = {
|
|
12
|
+
'none': { originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom', offsetY: 3 },
|
|
13
|
+
'above': { originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom', offsetY: 3 },
|
|
14
|
+
'below': { originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'top', offsetY: -3 },
|
|
15
|
+
'left': { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center' },
|
|
16
|
+
'right': { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center' },
|
|
17
|
+
};
|
|
18
|
+
const isElementRef = (input) => ((Boolean(input.nativeElement)));
|
|
4
19
|
export class FwTooltipPanelComponent {
|
|
5
20
|
constructor() {
|
|
6
|
-
this.
|
|
21
|
+
this.trigger = input(undefined, {
|
|
22
|
+
transform: (unparsed) => {
|
|
23
|
+
if (isElementRef(unparsed)) {
|
|
24
|
+
return new CdkOverlayOrigin(unparsed);
|
|
25
|
+
}
|
|
26
|
+
return unparsed;
|
|
27
|
+
},
|
|
28
|
+
});
|
|
29
|
+
this.title = '';
|
|
30
|
+
this.isOpen = input(false);
|
|
31
|
+
this.position = input('below');
|
|
32
|
+
this.connectedPosition = computed(() => [positionMap[this.position()]]);
|
|
33
|
+
this.color = 'dark';
|
|
7
34
|
this.maxWidth = 200;
|
|
8
35
|
this.mouseLeave = new EventEmitter();
|
|
36
|
+
this.delay = input('short');
|
|
37
|
+
this.delayMs = computed(() => delayMap[this.delay()]);
|
|
38
|
+
/*
|
|
39
|
+
<ng-template
|
|
40
|
+
cdkConnectedOverlay
|
|
41
|
+
[cdkConnectedOverlayOrigin]="trigger"
|
|
42
|
+
[cdkConnectedOverlayOpen]="isOpen"
|
|
43
|
+
[cdkConnectedOverlayPositions]="connectedPosition()"
|
|
44
|
+
[cdkConnectedOverlayScrollStrategy]="this.overlayService.scrollStrategies.close()">
|
|
45
|
+
*/
|
|
46
|
+
this.overlayService = inject(Overlay);
|
|
47
|
+
this.updateOverlayOnChange = effect(() => {
|
|
48
|
+
// this.overlayRef.origin = this.trigger();
|
|
49
|
+
// this.overlayRef.positions = this.connectedPosition();
|
|
50
|
+
// this.overlayRef.open = this.isOpen();
|
|
51
|
+
// this.overlayRef.scrollStrategy = this.overlayService.scrollStrategies.close();
|
|
52
|
+
});
|
|
9
53
|
}
|
|
10
54
|
get classes() {
|
|
11
55
|
return ['fw-tooltip-panel', 'fw-tooltip-' + this.position].join(' ');
|
|
@@ -14,12 +58,32 @@ export class FwTooltipPanelComponent {
|
|
|
14
58
|
this.mouseLeave.emit(e);
|
|
15
59
|
}
|
|
16
60
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwTooltipPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
17
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
61
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", type: FwTooltipPanelComponent, selector: "fw-tooltip-panel", inputs: { trigger: { classPropertyName: "trigger", publicName: "trigger", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: false, isRequired: false, transformFunction: null }, isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: false, isRequired: false, transformFunction: null }, maxWidth: { classPropertyName: "maxWidth", publicName: "maxWidth", isSignal: false, isRequired: false, transformFunction: null }, delay: { classPropertyName: "delay", publicName: "delay", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { mouseLeave: "mouseLeave" }, host: { listeners: { "mouseleave": "hidePopover($event)" }, properties: { "attr.class": "this.classes" } }, ngImport: i0, template: "<div\n @fadeInFadeOut\n class=\"fw-tooltip-content-wrapper vision-dark-theme\"\n [ngClass]=\"'fw-tooltip-' + position()\"\n [ngStyle]=\"{'maxWidth': maxWidth+'px'}\">\n <ng-content></ng-content>\n <h5 class=\"vision-h5\">{{ title }}</h5>\n <div class=\"fw-tooltip-caret\"></div>\n</div>\n", styles: [":host{position:absolute;height:0;width:0}.fw-tooltip-content-wrapper{position:relative;border-radius:8px;border:1px solid var(--separations-border);min-width:60px;box-sizing:border-box;padding:4px 8px;background-color:var(--card-header);text-align:center;overflow-wrap:break-word;white-space:pre-wrap}.fw-tooltip-content-wrapper h5{margin:0!important;color:var(--typography-muted)}.fw-tooltip-content-wrapper .fw-tooltip-caret{position:absolute;overflow:hidden;width:16px;height:16px}.fw-tooltip-content-wrapper .fw-tooltip-caret:after{display:block;content:\"\";width:10px;height:10px;background:var(--separations-border);border:1px solid var(--separations-border);transform:rotate(45deg);position:relative}.fw-tooltip-content-wrapper.fw-tooltip-none{margin-bottom:10px}.fw-tooltip-content-wrapper.fw-tooltip-none .fw-tooltip-caret{display:none}.fw-tooltip-content-wrapper.fw-tooltip-above{margin-bottom:10px}.fw-tooltip-content-wrapper.fw-tooltip-above .fw-tooltip-caret{left:calc(50% - 8px);bottom:-10px;height:10px!important}.fw-tooltip-content-wrapper.fw-tooltip-above .fw-tooltip-caret:after{margin:-8px auto;width:10px}.fw-tooltip-content-wrapper.fw-tooltip-below{margin-top:10px}.fw-tooltip-content-wrapper.fw-tooltip-below .fw-tooltip-caret{left:calc(50% - 8px);top:-10px;height:10px!important}.fw-tooltip-content-wrapper.fw-tooltip-below .fw-tooltip-caret:after{top:10px;margin:-4px auto;width:10px}.fw-tooltip-content-wrapper.fw-tooltip-left{margin-right:10px}.fw-tooltip-content-wrapper.fw-tooltip-left .fw-tooltip-caret{right:-10px;top:max(50% - 10px,3px);width:10px!important}.fw-tooltip-content-wrapper.fw-tooltip-left .fw-tooltip-caret:after{top:calc(50% - 5px);left:-8px;width:10px}.fw-tooltip-content-wrapper.fw-tooltip-right{margin-left:10px}.fw-tooltip-content-wrapper.fw-tooltip-right .fw-tooltip-caret{left:-10px;top:max(50% - 10px,3px);width:10px!important}.fw-tooltip-content-wrapper.fw-tooltip-right .fw-tooltip-caret:after{top:calc(50% - 5px);right:-6px;width:10px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], animations: [
|
|
62
|
+
trigger('fadeInFadeOut', [
|
|
63
|
+
transition(':enter', [
|
|
64
|
+
style({ opacity: 0 }),
|
|
65
|
+
animate('150ms', style({ opacity: 1 })),
|
|
66
|
+
]),
|
|
67
|
+
transition(':leave', [
|
|
68
|
+
animate('200ms', style({ opacity: 0 })),
|
|
69
|
+
]),
|
|
70
|
+
]),
|
|
71
|
+
], encapsulation: i0.ViewEncapsulation.None }); }
|
|
18
72
|
}
|
|
19
73
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwTooltipPanelComponent, decorators: [{
|
|
20
74
|
type: Component,
|
|
21
|
-
args: [{ selector: 'fw-tooltip-panel', encapsulation: ViewEncapsulation.None,
|
|
22
|
-
|
|
75
|
+
args: [{ selector: 'fw-tooltip-panel', encapsulation: ViewEncapsulation.None, animations: [
|
|
76
|
+
trigger('fadeInFadeOut', [
|
|
77
|
+
transition(':enter', [
|
|
78
|
+
style({ opacity: 0 }),
|
|
79
|
+
animate('150ms', style({ opacity: 1 })),
|
|
80
|
+
]),
|
|
81
|
+
transition(':leave', [
|
|
82
|
+
animate('200ms', style({ opacity: 0 })),
|
|
83
|
+
]),
|
|
84
|
+
]),
|
|
85
|
+
], template: "<div\n @fadeInFadeOut\n class=\"fw-tooltip-content-wrapper vision-dark-theme\"\n [ngClass]=\"'fw-tooltip-' + position()\"\n [ngStyle]=\"{'maxWidth': maxWidth+'px'}\">\n <ng-content></ng-content>\n <h5 class=\"vision-h5\">{{ title }}</h5>\n <div class=\"fw-tooltip-caret\"></div>\n</div>\n", styles: [":host{position:absolute;height:0;width:0}.fw-tooltip-content-wrapper{position:relative;border-radius:8px;border:1px solid var(--separations-border);min-width:60px;box-sizing:border-box;padding:4px 8px;background-color:var(--card-header);text-align:center;overflow-wrap:break-word;white-space:pre-wrap}.fw-tooltip-content-wrapper h5{margin:0!important;color:var(--typography-muted)}.fw-tooltip-content-wrapper .fw-tooltip-caret{position:absolute;overflow:hidden;width:16px;height:16px}.fw-tooltip-content-wrapper .fw-tooltip-caret:after{display:block;content:\"\";width:10px;height:10px;background:var(--separations-border);border:1px solid var(--separations-border);transform:rotate(45deg);position:relative}.fw-tooltip-content-wrapper.fw-tooltip-none{margin-bottom:10px}.fw-tooltip-content-wrapper.fw-tooltip-none .fw-tooltip-caret{display:none}.fw-tooltip-content-wrapper.fw-tooltip-above{margin-bottom:10px}.fw-tooltip-content-wrapper.fw-tooltip-above .fw-tooltip-caret{left:calc(50% - 8px);bottom:-10px;height:10px!important}.fw-tooltip-content-wrapper.fw-tooltip-above .fw-tooltip-caret:after{margin:-8px auto;width:10px}.fw-tooltip-content-wrapper.fw-tooltip-below{margin-top:10px}.fw-tooltip-content-wrapper.fw-tooltip-below .fw-tooltip-caret{left:calc(50% - 8px);top:-10px;height:10px!important}.fw-tooltip-content-wrapper.fw-tooltip-below .fw-tooltip-caret:after{top:10px;margin:-4px auto;width:10px}.fw-tooltip-content-wrapper.fw-tooltip-left{margin-right:10px}.fw-tooltip-content-wrapper.fw-tooltip-left .fw-tooltip-caret{right:-10px;top:max(50% - 10px,3px);width:10px!important}.fw-tooltip-content-wrapper.fw-tooltip-left .fw-tooltip-caret:after{top:calc(50% - 5px);left:-8px;width:10px}.fw-tooltip-content-wrapper.fw-tooltip-right{margin-left:10px}.fw-tooltip-content-wrapper.fw-tooltip-right .fw-tooltip-caret{left:-10px;top:max(50% - 10px,3px);width:10px!important}.fw-tooltip-content-wrapper.fw-tooltip-right .fw-tooltip-caret:after{top:calc(50% - 5px);right:-6px;width:10px}\n"] }]
|
|
86
|
+
}], propDecorators: { title: [{
|
|
23
87
|
type: Input
|
|
24
88
|
}], color: [{
|
|
25
89
|
type: Input
|
|
@@ -34,4 +98,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
34
98
|
type: HostListener,
|
|
35
99
|
args: ['mouseleave', ['$event']]
|
|
36
100
|
}] } });
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC1wYW5lbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy90b29sdGlwL3Rvb2x0aXAtcGFuZWwvdG9vbHRpcC1wYW5lbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy90b29sdGlwL3Rvb2x0aXAtcGFuZWwvdG9vbHRpcC1wYW5lbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDMUUsT0FBTyxFQUFFLGdCQUFnQixFQUFxQixPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRixPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQWMsWUFBWSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFJbEssTUFBTSxRQUFRLEdBQWE7SUFDekIsTUFBTSxFQUFFLENBQUM7SUFDVCxPQUFPLEVBQUUsR0FBRztJQUNaLE1BQU0sRUFBRSxHQUFHO0NBQ1osQ0FBQTtBQUdELE1BQU0sV0FBVyxHQUF5QztJQUN4RCxNQUFNLEVBQUUsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUU7SUFDakcsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFO0lB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QyxFQUFFLENBQUMsQ0FBQztpQkFDeEMsQ0FBQzthQUNILENBQUM7U0FDSDs7NEZBRVUsdUJBQXVCO2tCQWpCbkMsU0FBUzsrQkFDRSxrQkFBa0IsaUJBR2IsaUJBQWlCLENBQUMsSUFBSSxjQUN6Qjt3QkFDVixPQUFPLENBQUMsZUFBZSxFQUFFOzRCQUN2QixVQUFVLENBQUMsUUFBUSxFQUFFO2dDQUNuQixLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0NBQ3JCLE9BQU8sQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7NkJBQ3hDLENBQUM7NEJBQ0YsVUFBVSxDQUFDLFFBQVEsRUFBRTtnQ0FDbkIsT0FBTyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQzs2QkFDeEMsQ0FBQzt5QkFDSCxDQUFDO3FCQUNIOzhCQVlRLEtBQUs7c0JBQWIsS0FBSztnQkFJRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDSSxVQUFVO3NCQUFuQixNQUFNO2dCQXFCd0IsT0FBTztzQkFBckMsV0FBVzt1QkFBQyxZQUFZO2dCQUllLFdBQVc7c0JBQWxELFlBQVk7dUJBQUMsWUFBWSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYW5pbWF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IENka092ZXJsYXlPcmlnaW4sIENvbm5lY3RlZFBvc2l0aW9uLCBPdmVybGF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgZWZmZWN0LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIsIGluamVjdCwgSW5wdXQsIGlucHV0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCB0eXBlIERlbGF5TGVuZ3RoID0gJ25vbmUnIHwgJ3Nob3J0JyB8ICdsb25nJztcbnR5cGUgRGVsYXlNYXAgPSB7IFtLIGluIERlbGF5TGVuZ3RoXTogbnVtYmVyIH07XG5jb25zdCBkZWxheU1hcDogRGVsYXlNYXAgPSB7XG4gICdub25lJzogMCxcbiAgJ3Nob3J0JzogNDAwLFxuICAnbG9uZyc6IDcwMCxcbn1cblxuZXhwb3J0IHR5cGUgU2ltcGxlUG9zaXRpb24gPSAnYWJvdmUnIHwgJ2JlbG93JyB8ICdsZWZ0JyB8ICdyaWdodCcgfCAnbm9uZSc7XG5jb25zdCBwb3NpdGlvbk1hcDogeyBba2V5OiBzdHJpbmddOiBDb25uZWN0ZWRQb3NpdGlvbiB9ID0ge1xuICAnbm9uZSc6IHsgb3JpZ2luWDogJ2NlbnRlcicsIG9yaWdpblk6ICd0b3AnLCBvdmVybGF5WDogJ2NlbnRlcicsIG92ZXJsYXlZOiAnYm90dG9tJywgb2Zmc2V0WTogMyB9LFxuICAnYWJvdmUnOiB7IG9yaWdpblg6ICdjZW50ZXInLCBvcmlnaW5ZOiAndG9wJywgb3ZlcmxheVg6ICdjZW50ZXInLCBvdmVybGF5WTogJ2JvdHRvbScsIG9mZnNldFk6IDMgfSxcbiAgJ2JlbG93JzogeyBvcmlnaW5YOiAnY2VudGVyJywgb3JpZ2luWTogJ2JvdHRvbScsIG92ZXJsYXlYOiAnY2VudGVyJywgb3ZlcmxheVk6ICd0b3AnLCBvZmZzZXRZOiAtMyB9LFxuICAnbGVmdCc6IHsgb3JpZ2luWDogJ3N0YXJ0Jywgb3JpZ2luWTogJ2NlbnRlcicsIG92ZXJsYXlYOiAnZW5kJywgb3ZlcmxheVk6ICdjZW50ZXInIH0sXG4gICdyaWdodCc6IHsgb3JpZ2luWDogJ2VuZCcsIG9yaWdpblk6ICdjZW50ZXInLCBvdmVybGF5WDogJ3N0YXJ0Jywgb3ZlcmxheVk6ICdjZW50ZXInIH0sXG59O1xuXG5jb25zdCBpc0VsZW1lbnRSZWYgPSAoaW5wdXQ6IHVua25vd24pOiBpbnB1dCBpcyBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiA9PiAoXG4gIChCb29sZWFuKChpbnB1dCBhcyBFbGVtZW50UmVmPEhUTUxFbGVtZW50PikubmF0aXZlRWxlbWVudCkpXG4pXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Z3LXRvb2x0aXAtcGFuZWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vdG9vbHRpcC1wYW5lbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Rvb2x0aXAtcGFuZWwuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgYW5pbWF0aW9uczogW1xuICAgIHRyaWdnZXIoJ2ZhZGVJbkZhZGVPdXQnLCBbXG4gICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXG4gICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCB9KSxcbiAgICAgICAgYW5pbWF0ZSgnMTUwbXMnLCBzdHlsZSh7IG9wYWNpdHk6IDEgfSkpLFxuICAgICAgXSksXG4gICAgICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbXG4gICAgICAgIGFuaW1hdGUoJzIwMG1zJywgc3R5bGUoeyBvcGFjaXR5OiAwIH0pKSxcbiAgICAgIF0pLFxuICAgIF0pLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGd1Rvb2x0aXBQYW5lbENvbXBvbmVudCB7XG5cbiAgdHJpZ2dlciA9IGlucHV0KHVuZGVmaW5lZCwge1xuICAgIHRyYW5zZm9ybTogKHVucGFyc2VkOiBDZGtPdmVybGF5T3JpZ2luIHwgRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pOiBDZGtPdmVybGF5T3JpZ2luID0+IHtcbiAgICAgIGlmIChpc0VsZW1lbnRSZWYodW5wYXJzZWQpKSB7XG4gICAgICAgIHJldHVybiBuZXcgQ2RrT3ZlcmxheU9yaWdpbih1bnBhcnNlZCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdW5wYXJzZWQ7XG4gICAgfSxcbiAgfSlcbiAgQElucHV0KCkgdGl0bGUgPSAnJztcbiAgaXNPcGVuID0gaW5wdXQoZmFsc2UpO1xuICBwb3NpdGlvbiA9IGlucHV0PFNpbXBsZVBvc2l0aW9uPignYmVsb3cnKTtcbiAgY29ubmVjdGVkUG9zaXRpb24gPSBjb21wdXRlZCgoKSA9PiBbcG9zaXRpb25NYXBbdGhpcy5wb3NpdGlvbigpXV0pO1xuICBASW5wdXQoKSBjb2xvcj86ICdsaWdodCcgfCAnZGFyaycgPSAnZGFyayc7XG4gIEBJbnB1dCgpIG1heFdpZHRoPzogbnVtYmVyID0gMjAwO1xuICBAT3V0cHV0KCkgbW91c2VMZWF2ZTogRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50PigpO1xuICBkZWxheSA9IGlucHV0PERlbGF5TGVuZ3RoPignc2hvcnQnKTtcbiAgZGVsYXlNcyA9IGNvbXB1dGVkKCgpID0+IGRlbGF5TWFwW3RoaXMuZGVsYXkoKV0pO1xuXG4gIC8qXG4gIDxuZy10ZW1wbGF0ZVxuICBjZGtDb25uZWN0ZWRPdmVybGF5XG4gIFtjZGtDb25uZWN0ZWRPdmVybGF5T3JpZ2luXT1cInRyaWdnZXJcIlxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW5dPVwiaXNPcGVuXCJcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbnNdPVwiY29ubmVjdGVkUG9zaXRpb24oKVwiXG4gIFtjZGtDb25uZWN0ZWRPdmVybGF5U2Nyb2xsU3RyYXRlZ3ldPVwidGhpcy5vdmVybGF5U2VydmljZS5zY3JvbGxTdHJhdGVnaWVzLmNsb3NlKClcIj5cbiAgKi9cbiAgb3ZlcmxheVNlcnZpY2UgPSBpbmplY3QoT3ZlcmxheSk7XG5cbiAgdXBkYXRlT3ZlcmxheU9uQ2hhbmdlID0gZWZmZWN0KCgpID0+IHtcbiAgICAvLyB0aGlzLm92ZXJsYXlSZWYub3JpZ2luID0gdGhpcy50cmlnZ2VyKCk7XG4gICAgLy8gdGhpcy5vdmVybGF5UmVmLnBvc2l0aW9ucyA9IHRoaXMuY29ubmVjdGVkUG9zaXRpb24oKTtcbiAgICAvLyB0aGlzLm92ZXJsYXlSZWYub3BlbiA9IHRoaXMuaXNPcGVuKCk7XG4gICAgLy8gdGhpcy5vdmVybGF5UmVmLnNjcm9sbFN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5U2VydmljZS5zY3JvbGxTdHJhdGVnaWVzLmNsb3NlKCk7XG4gIH0pXG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmNsYXNzJykgZ2V0IGNsYXNzZXMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gWydmdy10b29sdGlwLXBhbmVsJywgJ2Z3LXRvb2x0aXAtJyArIHRoaXMucG9zaXRpb25dLmpvaW4oJyAnKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCBbJyRldmVudCddKSBoaWRlUG9wb3ZlcihlOiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5tb3VzZUxlYXZlLmVtaXQoZSk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgQGZhZGVJbkZhZGVPdXRcbiAgY2xhc3M9XCJmdy10b29sdGlwLWNvbnRlbnQtd3JhcHBlciB2aXNpb24tZGFyay10aGVtZVwiXG4gIFtuZ0NsYXNzXT1cIidmdy10b29sdGlwLScgKyBwb3NpdGlvbigpXCJcbiAgW25nU3R5bGVdPVwieydtYXhXaWR0aCc6IG1heFdpZHRoKydweCd9XCI+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPGg1IGNsYXNzPVwidmlzaW9uLWg1XCI+e3sgdGl0bGUgfX08L2g1PlxuICA8ZGl2IGNsYXNzPVwiZnctdG9vbHRpcC1jYXJldFwiPjwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -1,93 +1,39 @@
|
|
|
1
|
-
|
|
2
|
-
import { animate, style, transition, trigger } from '@angular/animations';
|
|
3
|
-
import { ChangeDetectorRef, Component, computed, HostBinding, inject, Input, input } from '@angular/core';
|
|
1
|
+
import { Component, HostBinding, Input, input } from '@angular/core';
|
|
4
2
|
import * as i0 from "@angular/core";
|
|
5
3
|
import * as i1 from "@angular/common";
|
|
6
|
-
import * as i2 from "
|
|
7
|
-
import * as i3 from "./tooltip-panel/tooltip-panel.component";
|
|
8
|
-
const delayMap = {
|
|
9
|
-
'none': 0,
|
|
10
|
-
'short': 400,
|
|
11
|
-
'long': 700,
|
|
12
|
-
};
|
|
4
|
+
import * as i2 from "./tooltip.directive";
|
|
13
5
|
/**
|
|
14
6
|
* component for giving extra context when a user hovers something
|
|
15
7
|
* @see [Vision Docs](https://cdn.flywheel.io/docs/vision/master/?path=/docs/components-tooltip--docs)
|
|
16
8
|
*/
|
|
17
9
|
export class FwTooltipComponent {
|
|
18
10
|
constructor() {
|
|
19
|
-
this.color = '
|
|
11
|
+
this.color = 'dark';
|
|
20
12
|
this.position = 'above';
|
|
21
13
|
this.maxWidth = 200;
|
|
22
14
|
this.fullWidth = false;
|
|
15
|
+
// TODO v3: remove, we shouldn't need to give direct control over a tooltip's open state
|
|
23
16
|
this.isOpen = false;
|
|
24
|
-
this.cdRef = inject(ChangeDetectorRef);
|
|
25
17
|
this.delay = input('short');
|
|
26
|
-
this.delayMs = computed(() => delayMap[this.delay()]);
|
|
27
|
-
this.positionMap = {
|
|
28
|
-
'none': { originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom', offsetY: 3 },
|
|
29
|
-
'above': { originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom', offsetY: 3 },
|
|
30
|
-
'below': { originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'top', offsetY: -3 },
|
|
31
|
-
'left': { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center' },
|
|
32
|
-
'right': { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center' },
|
|
33
|
-
};
|
|
34
18
|
}
|
|
35
19
|
get classes() {
|
|
36
20
|
return ['fw-tooltip', this.fullWidth ? 'full-width' : null].filter(Boolean).join(' ');
|
|
37
21
|
}
|
|
38
22
|
;
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
const delayMs = this.delayMs();
|
|
46
|
-
if (!delayMs) {
|
|
47
|
-
this.isOpen = true;
|
|
48
|
-
this.openDelayTimer = null;
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
this.openDelayTimer = window.setTimeout(() => {
|
|
52
|
-
this.isOpen = true;
|
|
53
|
-
this.openDelayTimer = null;
|
|
54
|
-
// eslint-disable-next-line @rx-angular/no-explicit-change-detection-apis
|
|
55
|
-
this.cdRef.detectChanges();
|
|
56
|
-
}, delayMs);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
handleMouseLeave() {
|
|
60
|
-
if (this.openDelayTimer) {
|
|
61
|
-
window.clearTimeout(this.openDelayTimer);
|
|
62
|
-
}
|
|
63
|
-
this.isOpen = false;
|
|
23
|
+
/**
|
|
24
|
+
* stops the browser built-in tooltip from showing up
|
|
25
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Global_attributes/title
|
|
26
|
+
*/
|
|
27
|
+
get attrTitle() {
|
|
28
|
+
return '';
|
|
64
29
|
}
|
|
30
|
+
;
|
|
65
31
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwTooltipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
66
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", type: FwTooltipComponent, selector: "fw-tooltip", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: false, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: false, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: false, isRequired: false, transformFunction: null }, maxWidth: { classPropertyName: "maxWidth", publicName: "maxWidth", isSignal: false, isRequired: false, transformFunction: null }, fullWidth: { classPropertyName: "fullWidth", publicName: "fullWidth", isSignal: false, isRequired: false, transformFunction: null }, isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: false, isRequired: false, transformFunction: null }, trigger: { classPropertyName: "trigger", publicName: "trigger", isSignal: false, isRequired: false, transformFunction: null }, delay: { classPropertyName: "delay", publicName: "delay", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.class": "this.classes", "attr.title": "this
|
|
67
|
-
trigger('fadeInFadeOut', [
|
|
68
|
-
transition(':enter', [
|
|
69
|
-
style({ opacity: 0 }),
|
|
70
|
-
animate('150ms', style({ opacity: 1 })),
|
|
71
|
-
]),
|
|
72
|
-
transition(':leave', [
|
|
73
|
-
animate('200ms', style({ opacity: 0 })),
|
|
74
|
-
]),
|
|
75
|
-
]),
|
|
76
|
-
] }); }
|
|
32
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", type: FwTooltipComponent, selector: "fw-tooltip", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: false, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: false, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: false, isRequired: false, transformFunction: null }, maxWidth: { classPropertyName: "maxWidth", publicName: "maxWidth", isSignal: false, isRequired: false, transformFunction: null }, fullWidth: { classPropertyName: "fullWidth", publicName: "fullWidth", isSignal: false, isRequired: false, transformFunction: null }, isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: false, isRequired: false, transformFunction: null }, trigger: { classPropertyName: "trigger", publicName: "trigger", isSignal: false, isRequired: false, transformFunction: null }, delay: { classPropertyName: "delay", publicName: "delay", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.class": "this.classes", "attr.title": "this.attrTitle" } }, ngImport: i0, template: "<div\n [ngClass]=\"['tooltip-trigger',fullWidth?'full-width':'']\"\n [fwTooltip]=\"title\"\n [fwTooltipDelay]=\"delay()\"\n [fwTooltipPosition]=\"position\">\n <ng-content></ng-content>\n</div>\n", styles: [":host.full-width{flex:1;display:flex;width:stretch}:host.full-width button{flex:1}:host .tooltip-trigger{width:fit-content;display:inline-block}:host .tooltip-trigger.full-width{flex:1;display:flex;width:stretch}:host .tooltip-trigger.full-width button{flex:1}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.FwTooltipDirective, selector: "[fwTooltip]", inputs: ["fwTooltipDelay", "fwTooltip", "fwTooltipPosition", "fwTooltipMaxWidthPx", "fwTooltipEnabled"], outputs: ["fwTooltipChange", "fwTooltipPositionChange", "fwTooltipMaxWidthPxChange", "fwTooltipEnabledChange"] }] }); }
|
|
77
33
|
}
|
|
78
34
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwTooltipComponent, decorators: [{
|
|
79
35
|
type: Component,
|
|
80
|
-
args: [{ selector: 'fw-tooltip',
|
|
81
|
-
trigger('fadeInFadeOut', [
|
|
82
|
-
transition(':enter', [
|
|
83
|
-
style({ opacity: 0 }),
|
|
84
|
-
animate('150ms', style({ opacity: 1 })),
|
|
85
|
-
]),
|
|
86
|
-
transition(':leave', [
|
|
87
|
-
animate('200ms', style({ opacity: 0 })),
|
|
88
|
-
]),
|
|
89
|
-
]),
|
|
90
|
-
], template: "<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen\"\n [cdkConnectedOverlayPositions]=\"[positionMap[position]]\">\n <fw-tooltip-panel\n @fadeInFadeOut\n *ngIf=\"title\"\n [position]=\"position\"\n [color]=\"color\"\n [maxWidth]=\"maxWidth\">\n <h5 class=\"vision-h5\">{{ title }}</h5>\n </fw-tooltip-panel>\n</ng-template>\n<div\n [ngClass]=\"['tooltip-trigger',fullWidth?'full-width':'']\"\n cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\"\n (mouseenter)=\"handleMouseEnter($event)\" (mouseleave)=\"handleMouseLeave()\">\n <ng-content></ng-content>\n</div>\n", styles: [":host.full-width{flex:1;display:flex;width:stretch}:host.full-width button{flex:1}:host .tooltip-trigger{width:fit-content;display:inline-block}:host .tooltip-trigger.full-width{flex:1;display:flex;width:stretch}:host .tooltip-trigger.full-width button{flex:1}\n"] }]
|
|
36
|
+
args: [{ selector: 'fw-tooltip', template: "<div\n [ngClass]=\"['tooltip-trigger',fullWidth?'full-width':'']\"\n [fwTooltip]=\"title\"\n [fwTooltipDelay]=\"delay()\"\n [fwTooltipPosition]=\"position\">\n <ng-content></ng-content>\n</div>\n", styles: [":host.full-width{flex:1;display:flex;width:stretch}:host.full-width button{flex:1}:host .tooltip-trigger{width:fit-content;display:inline-block}:host .tooltip-trigger.full-width{flex:1;display:flex;width:stretch}:host .tooltip-trigger.full-width button{flex:1}\n"] }]
|
|
91
37
|
}], propDecorators: { title: [{
|
|
92
38
|
type: Input
|
|
93
39
|
}], color: [{
|
|
@@ -105,8 +51,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
105
51
|
}], classes: [{
|
|
106
52
|
type: HostBinding,
|
|
107
53
|
args: ['attr.class']
|
|
108
|
-
}],
|
|
54
|
+
}], attrTitle: [{
|
|
109
55
|
type: HostBinding,
|
|
110
56
|
args: ['attr.title']
|
|
111
57
|
}] } });
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy90b29sdGlwL3Rvb2x0aXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvdG9vbHRpcC90b29sdGlwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBQyxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFNcEU7OztHQUdHO0FBTUgsTUFBTSxPQUFPLGtCQUFrQjtJQUwvQjtRQU9XLFVBQUssR0FBcUIsTUFBTSxDQUFDO1FBQ2pDLGFBQVEsR0FBbUIsT0FBTyxDQUFDO1FBQ25DLGFBQVEsR0FBWSxHQUFHLENBQUM7UUFDeEIsY0FBUyxHQUFhLEtBQUssQ0FBQztRQUNyQyx3RkFBd0Y7UUFDL0UsV0FBTSxHQUFZLEtBQUssQ0FBQztRQUlqQyxVQUFLLEdBQUcsS0FBSyxDQUFjLE9BQU8sQ0FBQyxDQUFDO0tBY3JDO0lBWkMsSUFBK0IsT0FBTztRQUNwQyxPQUFPLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN4RixDQUFDO0lBQUEsQ0FBQztJQUVGOzs7TUFHRTtJQUNGLElBQStCLFNBQVM7UUFDdEMsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBQUEsQ0FBQzsrR0F2QlMsa0JBQWtCO21HQUFsQixrQkFBa0Isb29DQ2pCL0IsME1BT0E7OzRGRFVhLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDRSxZQUFZOzhCQUtiLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFJeUIsT0FBTztzQkFBckMsV0FBVzt1QkFBQyxZQUFZO2dCQVFNLFNBQVM7c0JBQXZDLFdBQVc7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEByeC1hbmd1bGFyL3ByZWZlci1uby1sYXlvdXQtc2Vuc2l0aXZlLWFwaXMgKi9cbmltcG9ydCB7IENka092ZXJsYXlPcmlnaW4sIEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneU9yaWdpbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIElucHV0LGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNpbXBsZVBvc2l0aW9uIH0gZnJvbSAnLi90b29sdGlwLXBhbmVsL3Rvb2x0aXAtcGFuZWwuY29tcG9uZW50JztcblxudHlwZSBEZWxheUxlbmd0aCA9ICdub25lJyB8ICdzaG9ydCcgfCAnbG9uZyc7XG5cbi8qKlxuICogY29tcG9uZW50IGZvciBnaXZpbmcgZXh0cmEgY29udGV4dCB3aGVuIGEgdXNlciBob3ZlcnMgc29tZXRoaW5nXG4gKiBAc2VlIFtWaXNpb24gRG9jc10oaHR0cHM6Ly9jZG4uZmx5d2hlZWwuaW8vZG9jcy92aXNpb24vbWFzdGVyLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdG9vbHRpcC0tZG9jcylcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZnctdG9vbHRpcCcsXG4gIHRlbXBsYXRlVXJsOiAnLi90b29sdGlwLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdG9vbHRpcC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBGd1Rvb2x0aXBDb21wb25lbnQge1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSBjb2xvcjogJ2xpZ2h0JyB8ICdkYXJrJyA9ICdkYXJrJztcbiAgQElucHV0KCkgcG9zaXRpb246IFNpbXBsZVBvc2l0aW9uID0gJ2Fib3ZlJztcbiAgQElucHV0KCkgbWF4V2lkdGg/OiBudW1iZXIgPSAyMDA7XG4gIEBJbnB1dCgpIGZ1bGxXaWR0aD86IGJvb2xlYW4gPSBmYWxzZTtcbiAgLy8gVE9ETyB2MzogcmVtb3ZlLCB3ZSBzaG91bGRuJ3QgbmVlZCB0byBnaXZlIGRpcmVjdCBjb250cm9sIG92ZXIgYSB0b29sdGlwJ3Mgb3BlbiBzdGF0ZVxuICBASW5wdXQoKSBpc09wZW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgLy8gVE9ETyB2MzogdGhpcyBpcyBhIG5vLW9wIGlucHV0LCB3ZSBzaG91bGQgcmVtb3ZlXG4gIEBJbnB1dCgpIHRyaWdnZXI6IENka092ZXJsYXlPcmlnaW4gfCBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3lPcmlnaW47XG5cbiAgZGVsYXkgPSBpbnB1dDxEZWxheUxlbmd0aD4oJ3Nob3J0Jyk7XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmNsYXNzJykgZ2V0IGNsYXNzZXMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gWydmdy10b29sdGlwJywgdGhpcy5mdWxsV2lkdGggPyAnZnVsbC13aWR0aCcgOiBudWxsXS5maWx0ZXIoQm9vbGVhbikuam9pbignICcpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBzdG9wcyB0aGUgYnJvd3NlciBidWlsdC1pbiB0b29sdGlwIGZyb20gc2hvd2luZyB1cFxuICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvUmVmZXJlbmNlL0dsb2JhbF9hdHRyaWJ1dGVzL3RpdGxlXG4gICovXG4gIEBIb3N0QmluZGluZygnYXR0ci50aXRsZScpIGdldCBhdHRyVGl0bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJyc7XG4gIH07XG5cbn1cbiIsIjxkaXZcbiAgW25nQ2xhc3NdPVwiWyd0b29sdGlwLXRyaWdnZXInLGZ1bGxXaWR0aD8nZnVsbC13aWR0aCc6JyddXCJcbiAgW2Z3VG9vbHRpcF09XCJ0aXRsZVwiXG4gIFtmd1Rvb2x0aXBEZWxheV09XCJkZWxheSgpXCJcbiAgW2Z3VG9vbHRpcFBvc2l0aW9uXT1cInBvc2l0aW9uXCI+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { Overlay } from '@angular/cdk/overlay';
|
|
2
|
+
import { ComponentPortal } from '@angular/cdk/portal';
|
|
3
|
+
import { computed, Directive, effect, ElementRef, inject, input, model, signal, ViewContainerRef } from '@angular/core';
|
|
4
|
+
import { FwTooltipPanelComponent } from './tooltip-panel/tooltip-panel.component';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
const positionMap = {
|
|
7
|
+
'none': { originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom', offsetY: 3 },
|
|
8
|
+
'above': { originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom', offsetY: 3 },
|
|
9
|
+
'below': { originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'top', offsetY: -3 },
|
|
10
|
+
'left': { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center' },
|
|
11
|
+
'right': { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center' },
|
|
12
|
+
};
|
|
13
|
+
const delayMap = {
|
|
14
|
+
'none': 0,
|
|
15
|
+
'short': 400,
|
|
16
|
+
'long': 700,
|
|
17
|
+
};
|
|
18
|
+
const delayNameToMs = (name) => {
|
|
19
|
+
return delayMap[name];
|
|
20
|
+
};
|
|
21
|
+
export class FwTooltipDirective {
|
|
22
|
+
constructor() {
|
|
23
|
+
// External Context
|
|
24
|
+
this.elementRef = inject(ElementRef);
|
|
25
|
+
this.viewContainerRef = inject(ViewContainerRef);
|
|
26
|
+
this.overlayService = inject(Overlay);
|
|
27
|
+
// Internal refs
|
|
28
|
+
this.overlayRef = signal(undefined);
|
|
29
|
+
this.tooltipRef = signal(undefined);
|
|
30
|
+
// Inputs
|
|
31
|
+
this.delayMs = input(400, {
|
|
32
|
+
transform: delayNameToMs,
|
|
33
|
+
alias: 'fwTooltipDelay',
|
|
34
|
+
});
|
|
35
|
+
// a lot of these ideally wouldn't be models,
|
|
36
|
+
// but it makes it easier to interact with this from derivative directives
|
|
37
|
+
this.title = model('undefined', {
|
|
38
|
+
alias: 'fwTooltip',
|
|
39
|
+
});
|
|
40
|
+
this.position = model('above', {
|
|
41
|
+
alias: 'fwTooltipPosition',
|
|
42
|
+
});
|
|
43
|
+
this.maxWidth = model(200, {
|
|
44
|
+
alias: 'fwTooltipMaxWidthPx',
|
|
45
|
+
});
|
|
46
|
+
this.enabled = model(true, {
|
|
47
|
+
alias: 'fwTooltipEnabled'
|
|
48
|
+
});
|
|
49
|
+
// derived state
|
|
50
|
+
this.connectedPosition = computed(() => [positionMap[this.position()]]);
|
|
51
|
+
this.positionStrategy = computed(() => {
|
|
52
|
+
const positionBuilder = this.overlayService.position();
|
|
53
|
+
const withOrigin = positionBuilder.flexibleConnectedTo(this.elementRef);
|
|
54
|
+
const completedStrategy = withOrigin.withPositions(this.connectedPosition());
|
|
55
|
+
return completedStrategy;
|
|
56
|
+
});
|
|
57
|
+
this.overlayConfig = computed(() => ({
|
|
58
|
+
positionStrategy: this.positionStrategy(),
|
|
59
|
+
maxWidth: this.maxWidth(),
|
|
60
|
+
ScrollStrategyOptions: this.overlayService.scrollStrategies.close(),
|
|
61
|
+
disposeOnNavigation: true,
|
|
62
|
+
}));
|
|
63
|
+
// effects and methods
|
|
64
|
+
this.addMouseEventListeners = effect(() => {
|
|
65
|
+
const nativeElement = this.elementRef.nativeElement;
|
|
66
|
+
nativeElement.addEventListener('mouseenter', () => {
|
|
67
|
+
this.showTooltip();
|
|
68
|
+
});
|
|
69
|
+
nativeElement.addEventListener('mouseleave', () => {
|
|
70
|
+
this.hideTooltip();
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
ngOnInit() {
|
|
75
|
+
this.tooltipPortal = new ComponentPortal(FwTooltipPanelComponent, this.viewContainerRef);
|
|
76
|
+
this.overlayRef.set(this.overlayService.create());
|
|
77
|
+
}
|
|
78
|
+
showTooltip() {
|
|
79
|
+
if (!this.enabled() || !this.title()) {
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
const overlayRef = this.overlayRef();
|
|
83
|
+
overlayRef.updatePositionStrategy(this.positionStrategy());
|
|
84
|
+
if (this.openDelayTimer) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
this.openDelayTimer = window.setTimeout(() => {
|
|
88
|
+
const tooltipRef = overlayRef.attach(this.tooltipPortal);
|
|
89
|
+
this.tooltipRef.set(tooltipRef);
|
|
90
|
+
tooltipRef.setInput('title', this.title());
|
|
91
|
+
tooltipRef.setInput('position', this.position());
|
|
92
|
+
tooltipRef.changeDetectorRef.detectChanges();
|
|
93
|
+
}, this.delayMs());
|
|
94
|
+
}
|
|
95
|
+
hideTooltip() {
|
|
96
|
+
const animationDelayMs = 200;
|
|
97
|
+
this.closeDelayTimer = window.setTimeout(() => {
|
|
98
|
+
window.clearTimeout(this.openDelayTimer);
|
|
99
|
+
this.openDelayTimer = undefined;
|
|
100
|
+
this.overlayRef().detach();
|
|
101
|
+
this.tooltipRef.set(undefined);
|
|
102
|
+
}, animationDelayMs);
|
|
103
|
+
}
|
|
104
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwTooltipDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
105
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "17.3.12", type: FwTooltipDirective, isStandalone: true, selector: "[fwTooltip]", inputs: { delayMs: { classPropertyName: "delayMs", publicName: "fwTooltipDelay", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "fwTooltip", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "fwTooltipPosition", isSignal: true, isRequired: false, transformFunction: null }, maxWidth: { classPropertyName: "maxWidth", publicName: "fwTooltipMaxWidthPx", isSignal: true, isRequired: false, transformFunction: null }, enabled: { classPropertyName: "enabled", publicName: "fwTooltipEnabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { title: "fwTooltipChange", position: "fwTooltipPositionChange", maxWidth: "fwTooltipMaxWidthPxChange", enabled: "fwTooltipEnabledChange" }, ngImport: i0 }); }
|
|
106
|
+
}
|
|
107
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwTooltipDirective, decorators: [{
|
|
108
|
+
type: Directive,
|
|
109
|
+
args: [{
|
|
110
|
+
selector: '[fwTooltip]',
|
|
111
|
+
standalone: true,
|
|
112
|
+
}]
|
|
113
|
+
}] });
|
|
114
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy90b29sdGlwL3Rvb2x0aXAuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsT0FBTyxFQUE2QixNQUFNLHNCQUFzQixDQUFDO0FBQzdGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQWdCLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUksT0FBTyxFQUFFLHVCQUF1QixFQUFrQixNQUFNLHlDQUF5QyxDQUFDOztBQUtsRyxNQUFNLFdBQVcsR0FBeUM7SUFDeEQsTUFBTSxFQUFFLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFO0lBQ2pHLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRTtJQUNsRyxPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRTtJQUNuRyxNQUFNLEVBQUUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsUUFBUSxF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LGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQy9DLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsV0FBVztRQUVULE1BQU0sZ0JBQWdCLEdBQUcsR0FBRyxDQUFDO1FBRzdCLElBQUksQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDNUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUM7WUFDaEMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2pDLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7K0dBaEhVLGtCQUFrQjttR0FBbEIsa0JBQWtCOzs0RkFBbEIsa0JBQWtCO2tCQUo5QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxhQUFhO29CQUN2QixVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25uZWN0ZWRQb3NpdGlvbiwgT3ZlcmxheSwgT3ZlcmxheUNvbmZpZywgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IENvbXBvbmVudFBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgQ29tcG9uZW50UmVmLCBjb21wdXRlZCwgRGlyZWN0aXZlLCBlZmZlY3QsIEVsZW1lbnRSZWYsIGluamVjdCwgaW5wdXQsIG1vZGVsLCBPbkluaXQsIHNpZ25hbCwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBGd1Rvb2x0aXBQYW5lbENvbXBvbmVudCwgU2ltcGxlUG9zaXRpb24gfSBmcm9tICcuL3Rvb2x0aXAtcGFuZWwvdG9vbHRpcC1wYW5lbC5jb21wb25lbnQnO1xuXG50eXBlIERlbGF5TGVuZ3RoID0gJ25vbmUnIHwgJ3Nob3J0JyB8ICdsb25nJztcbnR5cGUgRGVsYXlNYXAgPSB7IFtLIGluIERlbGF5TGVuZ3RoXTogbnVtYmVyIH07XG5cbmNvbnN0IHBvc2l0aW9uTWFwOiB7IFtrZXk6IHN0cmluZ106IENvbm5lY3RlZFBvc2l0aW9uIH0gPSB7XG4gICdub25lJzogeyBvcmlnaW5YOiAnY2VudGVyJywgb3JpZ2luWTogJ3RvcCcsIG92ZXJsYXlYOiAnY2VudGVyJywgb3ZlcmxheVk6ICdib3R0b20nLCBvZmZzZXRZOiAzIH0sXG4gICdhYm92ZSc6IHsgb3JpZ2luWDogJ2NlbnRlcicsIG9yaWdpblk6ICd0b3AnLCBvdmVybGF5WDogJ2NlbnRlcicsIG92ZXJsYXlZOiAnYm90dG9tJywgb2Zmc2V0WTogMyB9LFxuICAnYmVsb3cnOiB7IG9yaWdpblg6ICdjZW50ZXInLCBvcmlnaW5ZOiAnYm90dG9tJywgb3ZlcmxheVg6ICdjZW50ZXInLCBvdmVybGF5WTogJ3RvcCcsIG9mZnNldFk6IC0zIH0sXG4gICdsZWZ0JzogeyBvcmlnaW5YOiAnc3RhcnQnLCBvcmlnaW5ZOiAnY2VudGVyJywgb3ZlcmxheVg6ICdlbmQnLCBvdmVybGF5WTogJ2NlbnRlcicgfSxcbiAgJ3JpZ2h0JzogeyBvcmlnaW5YOiAnZW5kJywgb3JpZ2luWTogJ2NlbnRlcicsIG92ZXJsYXlYOiAnc3RhcnQnLCBvdmVybGF5WTogJ2NlbnRlcicgfSxcbn07XG5cbmNvbnN0IGRlbGF5TWFwOiBEZWxheU1hcCA9IHtcbiAgJ25vbmUnOiAwLFxuICAnc2hvcnQnOiA0MDAsXG4gICdsb25nJzogNzAwLFxufVxuXG5jb25zdCBkZWxheU5hbWVUb01zID0gKG5hbWU6IERlbGF5TGVuZ3RoKTogbnVtYmVyID0+IHtcbiAgcmV0dXJuIGRlbGF5TWFwW25hbWVdO1xufVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZndUb29sdGlwXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEZ3VG9vbHRpcERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgLy8gRXh0ZXJuYWwgQ29udGV4dFxuICBwcml2YXRlIGVsZW1lbnRSZWYgPSBpbmplY3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KEVsZW1lbnRSZWYpO1xuICBwcml2YXRlIHZpZXdDb250YWluZXJSZWYgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG4gIHByaXZhdGUgb3ZlcmxheVNlcnZpY2UgPSBpbmplY3QoT3ZlcmxheSk7XG5cbiAgLy8gSW50ZXJuYWwgcmVmc1xuICBwcml2YXRlIG92ZXJsYXlSZWYgPSBzaWduYWw8T3ZlcmxheVJlZj4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSB0b29sdGlwUmVmID0gc2lnbmFsPENvbXBvbmVudFJlZjxGd1Rvb2x0aXBQYW5lbENvbXBvbmVudD4+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgdG9vbHRpcFBvcnRhbDogQ29tcG9uZW50UG9ydGFsPEZ3VG9vbHRpcFBhbmVsQ29tcG9uZW50PjtcblxuICAvLyBJbnB1dHNcbiAgZGVsYXlNcyA9IGlucHV0KDQwMCwge1xuICAgIHRyYW5zZm9ybTogZGVsYXlOYW1lVG9NcyxcbiAgICBhbGlhczogJ2Z3VG9vbHRpcERlbGF5JyxcbiAgfSk7XG5cbiAgLy8gYSBsb3Qgb2YgdGhlc2UgaWRlYWxseSB3b3VsZG4ndCBiZSBtb2RlbHMsXG4gIC8vIGJ1dCBpdCBtYWtlcyBpdCBlYXNpZXIgdG8gaW50ZXJhY3Qgd2l0aCB0aGlzIGZyb20gZGVyaXZhdGl2ZSBkaXJlY3RpdmVzXG5cbiAgdGl0bGUgPSBtb2RlbDxzdHJpbmc+KCd1bmRlZmluZWQnLCB7XG4gICAgYWxpYXM6ICdmd1Rvb2x0aXAnLFxuICB9KVxuXG4gIHBvc2l0aW9uID0gbW9kZWw8U2ltcGxlUG9zaXRpb24+KCdhYm92ZScsIHtcbiAgICBhbGlhczogJ2Z3VG9vbHRpcFBvc2l0aW9uJyxcbiAgfSk7XG5cbiAgbWF4V2lkdGggPSBtb2RlbDxudW1iZXI+KDIwMCwge1xuICAgIGFsaWFzOiAnZndUb29sdGlwTWF4V2lkdGhQeCcsXG4gIH0pXG5cbiAgZW5hYmxlZCA9IG1vZGVsKHRydWUsIHtcbiAgICBhbGlhczogJ2Z3VG9vbHRpcEVuYWJsZWQnXG4gIH0pO1xuXG4gIC8vIGRlcml2ZWQgc3RhdGVcbiAgY29ubmVjdGVkUG9zaXRpb24gPSBjb21wdXRlZCgoKSA9PiBbcG9zaXRpb25NYXBbdGhpcy5wb3NpdGlvbigpXV0pO1xuXG4gIHBvc2l0aW9uU3RyYXRlZ3kgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcG9zaXRpb25CdWlsZGVyID0gdGhpcy5vdmVybGF5U2VydmljZS5wb3NpdGlvbigpO1xuICAgIGNvbnN0IHdpdGhPcmlnaW4gPSBwb3NpdGlvbkJ1aWxkZXIuZmxleGlibGVDb25uZWN0ZWRUbyh0aGlzLmVsZW1lbnRSZWYpO1xuICAgIGNvbnN0IGNvbXBsZXRlZFN0cmF0ZWd5ID0gd2l0aE9yaWdpbi53aXRoUG9zaXRpb25zKHRoaXMuY29ubmVjdGVkUG9zaXRpb24oKSk7XG4gICAgcmV0dXJuIGNvbXBsZXRlZFN0cmF0ZWd5O1xuICB9KTtcblxuICBvdmVybGF5Q29uZmlnID0gY29tcHV0ZWQ8T3ZlcmxheUNvbmZpZz4oKCkgPT4gKHtcbiAgICBwb3NpdGlvblN0cmF0ZWd5OiB0aGlzLnBvc2l0aW9uU3RyYXRlZ3koKSxcbiAgICBtYXhXaWR0aDogdGhpcy5tYXhXaWR0aCgpLFxuICAgIFNjcm9sbFN0cmF0ZWd5T3B0aW9uczogdGhpcy5vdmVybGF5U2VydmljZS5zY3JvbGxTdHJhdGVnaWVzLmNsb3NlKCksXG4gICAgZGlzcG9zZU9uTmF2aWdhdGlvbjogdHJ1ZSxcbiAgfSkpO1xuXG4gIC8vIGVmZmVjdHMgYW5kIG1ldGhvZHNcbiAgYWRkTW91c2VFdmVudExpc3RlbmVycyA9IGVmZmVjdCgoKSA9PiB7XG5cbiAgICBjb25zdCBuYXRpdmVFbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICBuYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZW50ZXInLCAoKSA9PiB7XG4gICAgICB0aGlzLnNob3dUb29sdGlwKCk7XG4gICAgfSk7XG5cbiAgICBuYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCAoKSA9PiB7XG4gICAgICB0aGlzLmhpZGVUb29sdGlwKCk7XG4gICAgfSk7XG4gIH0pXG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy50b29sdGlwUG9ydGFsID0gbmV3IENvbXBvbmVudFBvcnRhbChGd1Rvb2x0aXBQYW5lbENvbXBvbmVudCwgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcblxuICAgIHRoaXMub3ZlcmxheVJlZi5zZXQodGhpcy5vdmVybGF5U2VydmljZS5jcmVhdGUoKSk7XG4gIH1cblxuXG4gIHByaXZhdGUgb3BlbkRlbGF5VGltZXI6IG51bWJlcjtcbiAgcHJpdmF0ZSBjbG9zZURlbGF5VGltZXI6IG51bWJlcjtcblxuICBzaG93VG9vbHRpcCgpOiB2b2lkIHtcblxuICAgIGlmKCF0aGlzLmVuYWJsZWQoKSB8fCAhdGhpcy50aXRsZSgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgb3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheVJlZigpO1xuICAgIG92ZXJsYXlSZWYudXBkYXRlUG9zaXRpb25TdHJhdGVneSh0aGlzLnBvc2l0aW9uU3RyYXRlZ3koKSk7XG5cbiAgICBpZiAodGhpcy5vcGVuRGVsYXlUaW1lcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMub3BlbkRlbGF5VGltZXIgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCB0b29sdGlwUmVmID0gb3ZlcmxheVJlZi5hdHRhY2godGhpcy50b29sdGlwUG9ydGFsKTtcbiAgICAgIHRoaXMudG9vbHRpcFJlZi5zZXQodG9vbHRpcFJlZik7XG5cbiAgICAgIHRvb2x0aXBSZWYuc2V0SW5wdXQoJ3RpdGxlJywgdGhpcy50aXRsZSgpKTtcbiAgICAgIHRvb2x0aXBSZWYuc2V0SW5wdXQoJ3Bvc2l0aW9uJywgdGhpcy5wb3NpdGlvbigpKTtcbiAgICAgIHRvb2x0aXBSZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0sIHRoaXMuZGVsYXlNcygpKTtcbiAgfVxuXG4gIGhpZGVUb29sdGlwKCk6IHZvaWQge1xuXG4gICAgY29uc3QgYW5pbWF0aW9uRGVsYXlNcyA9IDIwMDtcblxuXG4gICAgdGhpcy5jbG9zZURlbGF5VGltZXIgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMub3BlbkRlbGF5VGltZXIpO1xuICAgICAgdGhpcy5vcGVuRGVsYXlUaW1lciA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMub3ZlcmxheVJlZigpLmRldGFjaCgpO1xuICAgICAgdGhpcy50b29sdGlwUmVmLnNldCh1bmRlZmluZWQpO1xuICAgIH0sIGFuaW1hdGlvbkRlbGF5TXMpO1xuICB9XG5cbn1cbiJdfQ==
|