btv-base-controls 0.1.24 → 0.1.25
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/{esm2020 → esm2022}/btv-base-controls.mjs +4 -4
- package/{esm2020 → esm2022}/lib/basic.module.mjs +64 -64
- package/esm2022/lib/blink-message/blink-message.component.mjs +54 -0
- package/{esm2020 → esm2022}/lib/btv-icon-button/btv-counter-button.mjs +47 -47
- package/esm2022/lib/btv-icon-button/btv-icon-button.component.mjs +89 -0
- package/esm2022/lib/btv-progress/btv-progress.component.mjs +71 -0
- package/esm2022/lib/btv-search/btv-search.component.mjs +82 -0
- package/{esm2020 → esm2022}/lib/busy-indicator/busy-indicator.component.mjs +16 -16
- package/{esm2020 → esm2022}/lib/custom-tool-tip/custom-tool-tip.component.mjs +34 -34
- package/esm2022/lib/custom-tool-tip/tool-tip-renderer.directive.mjs +119 -0
- package/{esm2020 → esm2022}/lib/illustration/illustration.component.mjs +17 -17
- package/esm2022/lib/wm-avatar/avatar.component.mjs +175 -0
- package/{esm2020 → esm2022}/lib/wm-back-btn/wm-back-btn.component.mjs +26 -26
- package/{esm2020 → esm2022}/lib/wm-beta-text/wm-beta-text.component.mjs +19 -19
- package/{esm2020 → esm2022}/lib/wm-info/info-models.mjs +13 -13
- package/esm2022/lib/wm-info/wm-info.component.mjs +239 -0
- package/{esm2020 → esm2022}/lib/wm-info-card/wm-info-card.component.mjs +23 -23
- package/{esm2020 → esm2022}/lib/wm-no-content/wm-no-content.component.mjs +30 -30
- package/esm2022/lib/wm-panel-bar/wm-panel-bar.component.mjs +78 -0
- package/esm2022/lib/wm-scalable-div/scalable-div.component.mjs +105 -0
- package/esm2022/lib/wm-spinner/wm-spinner.component.mjs +135 -0
- package/{esm2020 → esm2022}/lib/wm-state-icon/wm-state-icon.component.mjs +18 -18
- package/{esm2020 → esm2022}/lib/wm-tag/wm-tag.component.mjs +28 -28
- package/esm2022/lib/wm-tamplate-image/wm-template-image.component.mjs +71 -0
- package/{esm2020 → esm2022}/lib/wm-toggle/wm-toggle.component.mjs +31 -31
- package/{esm2020 → esm2022}/models/guidExtension.mjs +14 -14
- package/{esm2020 → esm2022}/public-api.mjs +27 -27
- package/{fesm2020 → fesm2022}/btv-base-controls.mjs +1436 -1430
- package/fesm2022/btv-base-controls.mjs.map +1 -0
- package/index.d.ts +5 -5
- package/lib/basic.module.d.ts +33 -33
- package/lib/blink-message/blink-message.component.d.ts +20 -20
- package/lib/btv-icon-button/btv-counter-button.d.ts +12 -12
- package/lib/btv-icon-button/btv-icon-button.component.d.ts +30 -30
- package/lib/btv-progress/btv-progress.component.d.ts +20 -20
- package/lib/btv-search/btv-search.component.d.ts +31 -31
- package/lib/busy-indicator/busy-indicator.component.d.ts +7 -7
- package/lib/custom-tool-tip/custom-tool-tip.component.d.ts +35 -35
- package/lib/custom-tool-tip/tool-tip-renderer.directive.d.ts +49 -49
- package/lib/illustration/illustration.component.d.ts +10 -10
- package/lib/wm-avatar/avatar.component.d.ts +63 -63
- package/lib/wm-back-btn/wm-back-btn.component.d.ts +10 -10
- package/lib/wm-beta-text/wm-beta-text.component.d.ts +7 -7
- package/lib/wm-info/info-models.d.ts +21 -21
- package/lib/wm-info/wm-info.component.d.ts +34 -34
- package/lib/wm-info-card/wm-info-card.component.d.ts +9 -9
- package/lib/wm-no-content/wm-no-content.component.d.ts +11 -11
- package/lib/wm-panel-bar/wm-panel-bar.component.d.ts +25 -25
- package/lib/wm-scalable-div/scalable-div.component.d.ts +24 -24
- package/lib/wm-spinner/wm-spinner.component.d.ts +37 -37
- package/lib/wm-state-icon/wm-state-icon.component.d.ts +9 -9
- package/lib/wm-tag/wm-tag.component.d.ts +10 -10
- package/lib/wm-tamplate-image/wm-template-image.component.d.ts +49 -49
- package/lib/wm-toggle/wm-toggle.component.d.ts +11 -11
- package/models/guidExtension.d.ts +5 -5
- package/package.json +5 -11
- package/public-api.d.ts +24 -24
- package/esm2020/lib/blink-message/blink-message.component.mjs +0 -54
- package/esm2020/lib/btv-icon-button/btv-icon-button.component.mjs +0 -89
- package/esm2020/lib/btv-progress/btv-progress.component.mjs +0 -71
- package/esm2020/lib/btv-search/btv-search.component.mjs +0 -82
- package/esm2020/lib/custom-tool-tip/tool-tip-renderer.directive.mjs +0 -113
- package/esm2020/lib/wm-avatar/avatar.component.mjs +0 -175
- package/esm2020/lib/wm-info/wm-info.component.mjs +0 -239
- package/esm2020/lib/wm-panel-bar/wm-panel-bar.component.mjs +0 -78
- package/esm2020/lib/wm-scalable-div/scalable-div.component.mjs +0 -105
- package/esm2020/lib/wm-spinner/wm-spinner.component.mjs +0 -135
- package/esm2020/lib/wm-tamplate-image/wm-template-image.component.mjs +0 -71
- package/fesm2015/btv-base-controls.mjs +0 -1482
- package/fesm2015/btv-base-controls.mjs.map +0 -1
- package/fesm2020/btv-base-controls.mjs.map +0 -1
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
2
|
+
import { fromEvent } from 'rxjs';
|
|
3
|
+
import { debounceTime, distinctUntilChanged, map } from 'rxjs/operators';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common";
|
|
6
|
+
import * as i2 from "../wm-tamplate-image/wm-template-image.component";
|
|
7
|
+
export class ViewState {
|
|
8
|
+
get isLaptop() { return window.innerWidth <= 1440; }
|
|
9
|
+
get isMobile() { return window.innerWidth <= 1024; }
|
|
10
|
+
get isPhone() { return window.innerWidth <= 767; }
|
|
11
|
+
isWidthLessOrEqualTo(width) { return window.innerWidth <= width; }
|
|
12
|
+
}
|
|
13
|
+
export class BtvSearch {
|
|
14
|
+
set searchText(value) {
|
|
15
|
+
if (value === this._searchText)
|
|
16
|
+
return;
|
|
17
|
+
this._searchText = value;
|
|
18
|
+
if (value) {
|
|
19
|
+
this.expanded = true;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
get searchText() {
|
|
23
|
+
return this._searchText || '';
|
|
24
|
+
}
|
|
25
|
+
constructor() {
|
|
26
|
+
this.widthAuto = false;
|
|
27
|
+
this.isSmall = false;
|
|
28
|
+
this.placeholder = 'Search';
|
|
29
|
+
this.keepExpanded = false;
|
|
30
|
+
this.searchFocus = false;
|
|
31
|
+
this.view = new ViewState();
|
|
32
|
+
this.searchTextChange = new EventEmitter();
|
|
33
|
+
this.expanded = false;
|
|
34
|
+
}
|
|
35
|
+
ngOnInit() {
|
|
36
|
+
let box = this.box.nativeElement;
|
|
37
|
+
let observable = fromEvent(box, 'keyup').pipe(debounceTime(400), distinctUntilChanged(), map(x => x.target.value));
|
|
38
|
+
this._searchSubscription = observable.subscribe(it => {
|
|
39
|
+
this.searchTextChange.emit(it);
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
ngOnDestroy() {
|
|
43
|
+
if (this._searchSubscription)
|
|
44
|
+
this._searchSubscription.unsubscribe();
|
|
45
|
+
}
|
|
46
|
+
toggleSearch() {
|
|
47
|
+
this.expanded = !this.expanded;
|
|
48
|
+
if (this.box && this.expanded) {
|
|
49
|
+
this.box.nativeElement.focus();
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
onFocusOut() {
|
|
53
|
+
if (!this.box.nativeElement.value && this.expanded && !this.keepExpanded) {
|
|
54
|
+
this.expanded = false;
|
|
55
|
+
}
|
|
56
|
+
this.searchFocus = false;
|
|
57
|
+
}
|
|
58
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BtvSearch, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
59
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: BtvSearch, selector: "btv-search", inputs: { widthAuto: "widthAuto", isSmall: "isSmall", searchRight: "searchRight", placeholder: "placeholder", keepExpanded: "keepExpanded", searchText: "searchText" }, outputs: { searchTextChange: "searchTextChange" }, viewQueries: [{ propertyName: "box", first: true, predicate: ["searchBox"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"wm-search flex-row\" [ngClass]=\"{'search-reverse': searchRight == 'right', 'always-opened': keepExpanded, 'small': isSmall}\">\r\n\t<div class=\"search-icon inline-col\" [ngClass]=\"{'search-toggle-disabled': keepExpanded || !searchFocus}\"\r\n\t\t(click)=\"toggleSearch()\">\r\n\t\t<wm-template-image class=\"marginXA\" icon=\"search\" [light]=\"(!expanded && !searchFocus) || keepExpanded\">\r\n\t\t</wm-template-image>\r\n\t</div>\r\n\t<div class=\"search-wrap flex-col\"\r\n\t\t[ngClass]=\"{'search-open': keepExpanded || expanded, 'search-focused': (expanded && searchFocus) || (keepExpanded && searchFocus),\r\n\t'width-auto': widthAuto}\">\r\n\t\t<input class=\"search-field\" #searchBox \r\n\t\t\t[value]=\"searchText\" \r\n\t\t\t[placeholder]=\"placeholder\"\r\n\t\t\t(focus)=\"searchFocus = true\" (focusout)=\"onFocusOut()\">\r\n\t</div>\r\n</div>", styles: ["@media print{body{all:unset!important}.wm-page{margin:0!important;display:block!important}.not-printable{display:none!important}*{visibility:hidden}.printable,.printable *{visibility:visible!important}}.wm-search,.search-wrap,.search-field{box-sizing:border-box}.wm-search:hover{border-color:var(--brandColor)}.wm-search{background:var(--pageBackgroundColor);height:36px;max-width:280px;border-radius:4px;align-items:center;flex:1 0 100%;flex-shrink:0;border:1px solid var(--secondaryHover)}.wm-search.small{max-width:140px}.wm-search.small .search-open{width:auto}.search-icon{width:36px;height:100%;flex-shrink:0;cursor:pointer}.search-icon.search-toggle-disabled{cursor:text}.search-wrap{width:0px;height:100%;color:var(--mediumFontColor);direction:ltr}.search-open{width:280px;max-width:100%;flex-grow:1;flex-shrink:1}.search-open.width-auto{width:auto}.search-open:hover,.search-focused{color:var(--strongFontColor)}.search-field{width:100%;height:100%;color:inherit;text-indent:.1em;font-size:16px;background-color:transparent;border:none;outline:none;padding:0 8px 0 0}.search-field::placeholder{color:var(--disabledTextColor)}.search-reverse{display:flex;flex-direction:row-reverse}.search-reverse .search-wrap{direction:rtl}.search-reverse .search-field{direction:ltr;padding:0 8px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2.WmTemplateImageComponent, selector: "wm-template-image", inputs: ["icon", "disabled", "active", "light", "classes", "backgroundColor", "size", "sizeBox"] }] }); }
|
|
60
|
+
}
|
|
61
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BtvSearch, decorators: [{
|
|
62
|
+
type: Component,
|
|
63
|
+
args: [{ selector: 'btv-search', template: "<div class=\"wm-search flex-row\" [ngClass]=\"{'search-reverse': searchRight == 'right', 'always-opened': keepExpanded, 'small': isSmall}\">\r\n\t<div class=\"search-icon inline-col\" [ngClass]=\"{'search-toggle-disabled': keepExpanded || !searchFocus}\"\r\n\t\t(click)=\"toggleSearch()\">\r\n\t\t<wm-template-image class=\"marginXA\" icon=\"search\" [light]=\"(!expanded && !searchFocus) || keepExpanded\">\r\n\t\t</wm-template-image>\r\n\t</div>\r\n\t<div class=\"search-wrap flex-col\"\r\n\t\t[ngClass]=\"{'search-open': keepExpanded || expanded, 'search-focused': (expanded && searchFocus) || (keepExpanded && searchFocus),\r\n\t'width-auto': widthAuto}\">\r\n\t\t<input class=\"search-field\" #searchBox \r\n\t\t\t[value]=\"searchText\" \r\n\t\t\t[placeholder]=\"placeholder\"\r\n\t\t\t(focus)=\"searchFocus = true\" (focusout)=\"onFocusOut()\">\r\n\t</div>\r\n</div>", styles: ["@media print{body{all:unset!important}.wm-page{margin:0!important;display:block!important}.not-printable{display:none!important}*{visibility:hidden}.printable,.printable *{visibility:visible!important}}.wm-search,.search-wrap,.search-field{box-sizing:border-box}.wm-search:hover{border-color:var(--brandColor)}.wm-search{background:var(--pageBackgroundColor);height:36px;max-width:280px;border-radius:4px;align-items:center;flex:1 0 100%;flex-shrink:0;border:1px solid var(--secondaryHover)}.wm-search.small{max-width:140px}.wm-search.small .search-open{width:auto}.search-icon{width:36px;height:100%;flex-shrink:0;cursor:pointer}.search-icon.search-toggle-disabled{cursor:text}.search-wrap{width:0px;height:100%;color:var(--mediumFontColor);direction:ltr}.search-open{width:280px;max-width:100%;flex-grow:1;flex-shrink:1}.search-open.width-auto{width:auto}.search-open:hover,.search-focused{color:var(--strongFontColor)}.search-field{width:100%;height:100%;color:inherit;text-indent:.1em;font-size:16px;background-color:transparent;border:none;outline:none;padding:0 8px 0 0}.search-field::placeholder{color:var(--disabledTextColor)}.search-reverse{display:flex;flex-direction:row-reverse}.search-reverse .search-wrap{direction:rtl}.search-reverse .search-field{direction:ltr;padding:0 8px}\n"] }]
|
|
64
|
+
}], ctorParameters: () => [], propDecorators: { widthAuto: [{
|
|
65
|
+
type: Input
|
|
66
|
+
}], isSmall: [{
|
|
67
|
+
type: Input
|
|
68
|
+
}], searchRight: [{
|
|
69
|
+
type: Input
|
|
70
|
+
}], placeholder: [{
|
|
71
|
+
type: Input
|
|
72
|
+
}], keepExpanded: [{
|
|
73
|
+
type: Input
|
|
74
|
+
}], box: [{
|
|
75
|
+
type: ViewChild,
|
|
76
|
+
args: ['searchBox', { static: true }]
|
|
77
|
+
}], searchTextChange: [{
|
|
78
|
+
type: Output
|
|
79
|
+
}], searchText: [{
|
|
80
|
+
type: Input
|
|
81
|
+
}] } });
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnR2LXNlYXJjaC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9idHYtYmFzZS1jb250cm9scy9zcmMvbGliL2J0di1zZWFyY2gvYnR2LXNlYXJjaC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9idHYtYmFzZS1jb250cm9scy9zcmMvbGliL2J0di1zZWFyY2gvYnR2LXNlYXJjaC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQUUsU0FBUyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBRXpFLE1BQU0sT0FBTyxTQUFTO0lBQ3BCLElBQUksUUFBUSxLQUFLLE9BQU8sTUFBTSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3BELElBQUksUUFBUSxLQUFLLE9BQU8sTUFBTSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3BELElBQUksT0FBTyxLQUFLLE9BQU8sTUFBTSxDQUFDLFVBQVUsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzNDLG9CQUFvQixDQUFDLEtBQWEsSUFBSSxPQUFPLE1BQU0sQ0FBQyxVQUFVLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQztDQUNsRjtBQVFELE1BQU0sT0FBTyxTQUFTO0lBZXBCLElBQWEsVUFBVSxDQUFDLEtBQWE7UUFDbkMsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLFdBQVc7WUFBRSxPQUFPO1FBQ3ZDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUN2QixDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVEO1FBMUJTLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFDM0IsWUFBTyxHQUFZLEtBQUssQ0FBQztRQUV6QixnQkFBVyxHQUFXLFFBQVEsQ0FBQztRQUMvQixpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUN2QyxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUM3QixTQUFJLEdBQWMsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUV4QixxQkFBZ0IsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQW1CNUUsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDeEIsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQztRQUNqQyxJQUFJLFVBQVUsR0FBRyxTQUFTLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDM0MsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUNqQixvQkFBb0IsRUFBRSxFQUN0QixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBZSxDQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUN4QyxDQUFDO1FBQ0YsSUFBSSxDQUFDLG1CQUFtQixHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDbkQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsbUJBQW1CO1lBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3ZFLENBQUM7SUFDRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDL0IsSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNqQyxDQUFDO0lBQ0gsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDekUsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDeEIsQ0FBQztRQUNELElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQzNCLENBQUM7OEdBMURVLFNBQVM7a0dBQVQsU0FBUyw2WENqQnRCLDAyQkFjTTs7MkZER08sU0FBUztrQkFOckIsU0FBUzsrQkFDRSxZQUFZO3dEQU1iLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUdvQyxHQUFHO3NCQUE1QyxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQzlCLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFNTSxVQUFVO3NCQUF0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgZnJvbUV2ZW50LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuZXhwb3J0IGNsYXNzIFZpZXdTdGF0ZSB7XHJcbiAgZ2V0IGlzTGFwdG9wKCkgeyByZXR1cm4gd2luZG93LmlubmVyV2lkdGggPD0gMTQ0MDsgfVxyXG4gIGdldCBpc01vYmlsZSgpIHsgcmV0dXJuIHdpbmRvdy5pbm5lcldpZHRoIDw9IDEwMjQ7IH1cclxuICBnZXQgaXNQaG9uZSgpIHsgcmV0dXJuIHdpbmRvdy5pbm5lcldpZHRoIDw9IDc2NzsgfVxyXG4gIHB1YmxpYyBpc1dpZHRoTGVzc09yRXF1YWxUbyh3aWR0aDogbnVtYmVyKSB7IHJldHVybiB3aW5kb3cuaW5uZXJXaWR0aCA8PSB3aWR0aDsgfVxyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2J0di1zZWFyY2gnLFxyXG4gIHN0eWxlVXJsczogWycuL2J0di1zZWFyY2guc2NzcyddLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9idHYtc2VhcmNoLmh0bWwnXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgQnR2U2VhcmNoIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpIHdpZHRoQXV0bzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGlzU21hbGw6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzZWFyY2hSaWdodDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnU2VhcmNoJztcclxuICBASW5wdXQoKSBrZWVwRXhwYW5kZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzZWFyY2hGb2N1czogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHZpZXc6IFZpZXdTdGF0ZSA9IG5ldyBWaWV3U3RhdGUoKTtcclxuICBAVmlld0NoaWxkKCdzZWFyY2hCb3gnLCB7IHN0YXRpYzogdHJ1ZSB9KSBib3g6IEVsZW1lbnRSZWY7XHJcbiAgQE91dHB1dCgpIHNlYXJjaFRleHRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgcHVibGljIGV4cGFuZGVkOiBib29sZWFuO1xyXG4gIHByaXZhdGUgX3NlYXJjaFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBwcml2YXRlIF9zZWFyY2hUZXh0OiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpIHNldCBzZWFyY2hUZXh0KHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIGlmICh2YWx1ZSA9PT0gdGhpcy5fc2VhcmNoVGV4dCkgcmV0dXJuO1xyXG4gICAgdGhpcy5fc2VhcmNoVGV4dCA9IHZhbHVlO1xyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIHRoaXMuZXhwYW5kZWQgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IHNlYXJjaFRleHQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9zZWFyY2hUZXh0IHx8ICcnO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLmV4cGFuZGVkID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGxldCBib3ggPSB0aGlzLmJveC5uYXRpdmVFbGVtZW50O1xyXG4gICAgbGV0IG9ic2VydmFibGUgPSBmcm9tRXZlbnQoYm94LCAna2V5dXAnKS5waXBlKFxyXG4gICAgICBkZWJvdW5jZVRpbWUoNDAwKSxcclxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcclxuICAgICAgbWFwKHggPT4gPHN0cmluZz4oPGFueT54KS50YXJnZXQudmFsdWUpXHJcbiAgICApO1xyXG4gICAgdGhpcy5fc2VhcmNoU3Vic2NyaXB0aW9uID0gb2JzZXJ2YWJsZS5zdWJzY3JpYmUoaXQgPT4ge1xyXG4gICAgICB0aGlzLnNlYXJjaFRleHRDaGFuZ2UuZW1pdChpdCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX3NlYXJjaFN1YnNjcmlwdGlvbikgdGhpcy5fc2VhcmNoU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG4gIHRvZ2dsZVNlYXJjaCgpIHtcclxuICAgIHRoaXMuZXhwYW5kZWQgPSAhdGhpcy5leHBhbmRlZDtcclxuICAgIGlmICh0aGlzLmJveCAmJiB0aGlzLmV4cGFuZGVkKSB7XHJcbiAgICAgIHRoaXMuYm94Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uRm9jdXNPdXQoKSB7XHJcbiAgICBpZiAoIXRoaXMuYm94Lm5hdGl2ZUVsZW1lbnQudmFsdWUgJiYgdGhpcy5leHBhbmRlZCAmJiAhdGhpcy5rZWVwRXhwYW5kZWQpIHtcclxuICAgICAgdGhpcy5leHBhbmRlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZWFyY2hGb2N1cyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIndtLXNlYXJjaCBmbGV4LXJvd1wiIFtuZ0NsYXNzXT1cInsnc2VhcmNoLXJldmVyc2UnOiBzZWFyY2hSaWdodCA9PSAncmlnaHQnLCAnYWx3YXlzLW9wZW5lZCc6IGtlZXBFeHBhbmRlZCwgJ3NtYWxsJzogaXNTbWFsbH1cIj5cclxuXHQ8ZGl2IGNsYXNzPVwic2VhcmNoLWljb24gaW5saW5lLWNvbFwiIFtuZ0NsYXNzXT1cInsnc2VhcmNoLXRvZ2dsZS1kaXNhYmxlZCc6IGtlZXBFeHBhbmRlZCB8fCAhc2VhcmNoRm9jdXN9XCJcclxuXHRcdChjbGljayk9XCJ0b2dnbGVTZWFyY2goKVwiPlxyXG5cdFx0PHdtLXRlbXBsYXRlLWltYWdlIGNsYXNzPVwibWFyZ2luWEFcIiBpY29uPVwic2VhcmNoXCIgW2xpZ2h0XT1cIighZXhwYW5kZWQgJiYgIXNlYXJjaEZvY3VzKSB8fCBrZWVwRXhwYW5kZWRcIj5cclxuXHRcdDwvd20tdGVtcGxhdGUtaW1hZ2U+XHJcblx0PC9kaXY+XHJcblx0PGRpdiBjbGFzcz1cInNlYXJjaC13cmFwIGZsZXgtY29sXCJcclxuXHRcdFtuZ0NsYXNzXT1cInsnc2VhcmNoLW9wZW4nOiBrZWVwRXhwYW5kZWQgfHwgZXhwYW5kZWQsICdzZWFyY2gtZm9jdXNlZCc6IChleHBhbmRlZCAmJiBzZWFyY2hGb2N1cykgfHwgKGtlZXBFeHBhbmRlZCAmJiBzZWFyY2hGb2N1cyksXHJcblx0J3dpZHRoLWF1dG8nOiB3aWR0aEF1dG99XCI+XHJcblx0XHQ8aW5wdXQgY2xhc3M9XCJzZWFyY2gtZmllbGRcIiAjc2VhcmNoQm94IFxyXG5cdFx0XHRbdmFsdWVdPVwic2VhcmNoVGV4dFwiIFxyXG5cdFx0XHRbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxyXG5cdFx0XHQoZm9jdXMpPVwic2VhcmNoRm9jdXMgPSB0cnVlXCIgKGZvY3Vzb3V0KT1cIm9uRm9jdXNPdXQoKVwiPlxyXG5cdDwvZGl2PlxyXG48L2Rpdj4iXX0=
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "@angular/common";
|
|
4
|
-
export class BusyIndicatorComponent {
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
9
|
-
type: Component,
|
|
10
|
-
args: [{ selector: 'wm-busy-indicator', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"load-snake-wrap\" *ngIf=\"busy\" [ngClass]=\"{'long-snake-wrap': long}\">\r\n <span class=\"snake-field\" ></span>\r\n <span class=\"snake\" [ngClass]=\"{'longSnake': long}\">\r\n <span class=\"snake-shadow\" [ngClass]=\"{'longRotate': long}\"></span>\r\n </span>\r\n</div>", styles: ["@media print{body{all:unset!important}.wm-page{margin:0!important;display:block!important}.not-printable{display:none!important}*{visibility:hidden}.printable,.printable *{visibility:visible!important}}.load-snake-wrap{width:120px;height:12px;overflow:hidden;align-self:flex-end}.snake-field{display:block;width:100%;height:2px;background:#
|
|
11
|
-
}], propDecorators: { busy: [{
|
|
12
|
-
type: Input
|
|
13
|
-
}], long: [{
|
|
14
|
-
type: Input
|
|
15
|
-
}] } });
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
export class BusyIndicatorComponent {
|
|
5
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BusyIndicatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: BusyIndicatorComponent, selector: "wm-busy-indicator", inputs: { busy: "busy", long: "long" }, ngImport: i0, template: "<div class=\"load-snake-wrap\" *ngIf=\"busy\" [ngClass]=\"{'long-snake-wrap': long}\">\r\n <span class=\"snake-field\" ></span>\r\n <span class=\"snake\" [ngClass]=\"{'longSnake': long}\">\r\n <span class=\"snake-shadow\" [ngClass]=\"{'longRotate': long}\"></span>\r\n </span>\r\n</div>", styles: ["@media print{body{all:unset!important}.wm-page{margin:0!important;display:block!important}.not-printable{display:none!important}*{visibility:hidden}.printable,.printable *{visibility:visible!important}}.load-snake-wrap{width:120px;height:12px;overflow:hidden;align-self:flex-end}.snake-field{display:block;width:100%;height:2px;background:#22252c;top:5px;position:relative}.snake{display:inline-block;width:80px;height:2px;background:#7f868c;animation-play-state:running;position:relative;top:-9px;animation:snakeMove 2s linear 0s infinite}.snake-shadow{display:inline-block;width:40px;height:8px;position:absolute;margin-top:-3px;animation:rotate 2s linear 0s infinite;animation-play-state:running;border-radius:25%}.long-snake-wrap{width:400px}.longSnake{animation:snakeLongMove 3s linear 0s infinite}.longRotate{animation:rotate 3s linear 0s infinite}@keyframes snakeMove{0%{left:-80px}50%{left:200px}to{left:-200px}}@keyframes snakeLongMove{0%{left:-80px}50%{left:440px}to{left:-200px}}@keyframes rotate{0%{background:linear-gradient(to right,#0000,#988d6766);right:0}to{background:linear-gradient(to left,#0000,#988d6766);left:0;right:unset}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
7
|
+
}
|
|
8
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BusyIndicatorComponent, decorators: [{
|
|
9
|
+
type: Component,
|
|
10
|
+
args: [{ selector: 'wm-busy-indicator', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"load-snake-wrap\" *ngIf=\"busy\" [ngClass]=\"{'long-snake-wrap': long}\">\r\n <span class=\"snake-field\" ></span>\r\n <span class=\"snake\" [ngClass]=\"{'longSnake': long}\">\r\n <span class=\"snake-shadow\" [ngClass]=\"{'longRotate': long}\"></span>\r\n </span>\r\n</div>", styles: ["@media print{body{all:unset!important}.wm-page{margin:0!important;display:block!important}.not-printable{display:none!important}*{visibility:hidden}.printable,.printable *{visibility:visible!important}}.load-snake-wrap{width:120px;height:12px;overflow:hidden;align-self:flex-end}.snake-field{display:block;width:100%;height:2px;background:#22252c;top:5px;position:relative}.snake{display:inline-block;width:80px;height:2px;background:#7f868c;animation-play-state:running;position:relative;top:-9px;animation:snakeMove 2s linear 0s infinite}.snake-shadow{display:inline-block;width:40px;height:8px;position:absolute;margin-top:-3px;animation:rotate 2s linear 0s infinite;animation-play-state:running;border-radius:25%}.long-snake-wrap{width:400px}.longSnake{animation:snakeLongMove 3s linear 0s infinite}.longRotate{animation:rotate 3s linear 0s infinite}@keyframes snakeMove{0%{left:-80px}50%{left:200px}to{left:-200px}}@keyframes snakeLongMove{0%{left:-80px}50%{left:440px}to{left:-200px}}@keyframes rotate{0%{background:linear-gradient(to right,#0000,#988d6766);right:0}to{background:linear-gradient(to left,#0000,#988d6766);left:0;right:unset}}\n"] }]
|
|
11
|
+
}], propDecorators: { busy: [{
|
|
12
|
+
type: Input
|
|
13
|
+
}], long: [{
|
|
14
|
+
type: Input
|
|
15
|
+
}] } });
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVzeS1pbmRpY2F0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnR2LWJhc2UtY29udHJvbHMvc3JjL2xpYi9idXN5LWluZGljYXRvci9idXN5LWluZGljYXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9idHYtYmFzZS1jb250cm9scy9zcmMvbGliL2J1c3ktaW5kaWNhdG9yL2J1c3ktaW5kaWNhdG9yLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQVExRSxNQUFNLE9BQU8sc0JBQXNCOzhHQUF0QixzQkFBc0I7a0dBQXRCLHNCQUFzQixpR0NSbkMsZ1RBS007OzJGREdPLHNCQUFzQjtrQkFObEMsU0FBUzsrQkFDRSxtQkFBbUIsbUJBR1osdUJBQXVCLENBQUMsTUFBTTs4QkFJL0IsSUFBSTtzQkFBbkIsS0FBSztnQkFDVSxJQUFJO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnd20tYnVzeS1pbmRpY2F0b3InLFxyXG4gIHN0eWxlVXJsczogWycuL2J1c3ktaW5kaWNhdG9yLnNjc3MnXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vYnVzeS1pbmRpY2F0b3IuaHRtbCcsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIEJ1c3lJbmRpY2F0b3JDb21wb25lbnQge1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgYnVzeTogYm9vbGVhbjtcclxuICBASW5wdXQoKSBwdWJsaWMgbG9uZzogYm9vbGVhbjtcclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwibG9hZC1zbmFrZS13cmFwXCIgKm5nSWY9XCJidXN5XCIgW25nQ2xhc3NdPVwieydsb25nLXNuYWtlLXdyYXAnOiBsb25nfVwiPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJzbmFrZS1maWVsZFwiID48L3NwYW4+XHJcbiAgICA8c3BhbiBjbGFzcz1cInNuYWtlXCIgW25nQ2xhc3NdPVwieydsb25nU25ha2UnOiBsb25nfVwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwic25ha2Utc2hhZG93XCIgW25nQ2xhc3NdPVwieydsb25nUm90YXRlJzogbG9uZ31cIj48L3NwYW4+XHJcbiAgICA8L3NwYW4+XHJcbjwvZGl2PiJdfQ==
|
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "@angular/common";
|
|
4
|
-
/**
|
|
5
|
-
* This component will be used to show custom tooltip
|
|
6
|
-
*
|
|
7
|
-
* This component will be rendered using OverlayModule of angular material
|
|
8
|
-
* This component will be rendered by directive on an Overlay
|
|
9
|
-
*
|
|
10
|
-
* CONSUMER will not be using this component directly
|
|
11
|
-
* This component will be hosted in an overlay by ToolTipRenderer directive
|
|
12
|
-
* This component exposes two properties. These two properties will be filled by ToolTipRenderer directive
|
|
13
|
-
* 1. text - This is a simple string which is to be shown in the tooltip; This will be injected in the ToolTipRenderer directive
|
|
14
|
-
* by the consumer
|
|
15
|
-
* 2. contentTemplate - This gives finer control on the content to be shown in the tooltip
|
|
16
|
-
*
|
|
17
|
-
* NOTE - ONLY one should be specified; If BOTH are specified then "template" will be rendered and "text" will be ignored
|
|
18
|
-
*/
|
|
19
|
-
export class CustomToolTipComponent {
|
|
20
|
-
constructor() { }
|
|
21
|
-
ngOnInit() {
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
27
|
-
type: Component,
|
|
28
|
-
args: [{ selector: 'app-custom-tool-tip', template: "<div class=\"tooltip-container\">\r\n <div class=\"mat-tooltip\">\r\n <ng-template #simpleText >\r\n {{text}}\r\n </ng-template>\r\n <ng-container *ngTemplateOutlet=\"contentTemplate || simpleText\">\r\n </ng-container>\r\n </div>\r\n </div>", styles: ["@media print{body{all:unset!important}.wm-page{margin:0!important;display:block!important}.not-printable{display:none!important}*{visibility:hidden}.printable,.printable *{visibility:visible!important}}.tooltip-container{position:relative;box-sizing:border-box;box-shadow:0 16px 16px -1px #051d391a;border-radius:4px;-webkit-appearance:none}.tooltip-container:before{content:\"\";display:block;width:0;height:0;border-style:solid;border-width:6px;border-color:transparent;left:50%;bottom:-12px;margin-left:-6.0625px;border-top-color:var(--pageBackgroundColor);position:absolute}.mat-tooltip{font-family:Inter,Verdana,Geneva,Tahoma,sans-serif;margin:0;transform-origin:center top;box-shadow:none;background:var(--pageBackgroundColor);color:var(--strongFontColor);border-radius:2px;z-index:12000;border-style:solid;border-width:0;padding:5px 5px 5px 6px;background-repeat:repeat-x;min-width:20px;text-align:center;font-size:14px;transform:scale(1)!important}.mat-tooltip.mat-tooltip-show{animation:none}\n"] }]
|
|
29
|
-
}], ctorParameters:
|
|
30
|
-
type: Input
|
|
31
|
-
}], contentTemplate: [{
|
|
32
|
-
type: Input
|
|
33
|
-
}] } });
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
/**
|
|
5
|
+
* This component will be used to show custom tooltip
|
|
6
|
+
*
|
|
7
|
+
* This component will be rendered using OverlayModule of angular material
|
|
8
|
+
* This component will be rendered by directive on an Overlay
|
|
9
|
+
*
|
|
10
|
+
* CONSUMER will not be using this component directly
|
|
11
|
+
* This component will be hosted in an overlay by ToolTipRenderer directive
|
|
12
|
+
* This component exposes two properties. These two properties will be filled by ToolTipRenderer directive
|
|
13
|
+
* 1. text - This is a simple string which is to be shown in the tooltip; This will be injected in the ToolTipRenderer directive
|
|
14
|
+
* by the consumer
|
|
15
|
+
* 2. contentTemplate - This gives finer control on the content to be shown in the tooltip
|
|
16
|
+
*
|
|
17
|
+
* NOTE - ONLY one should be specified; If BOTH are specified then "template" will be rendered and "text" will be ignored
|
|
18
|
+
*/
|
|
19
|
+
export class CustomToolTipComponent {
|
|
20
|
+
constructor() { }
|
|
21
|
+
ngOnInit() {
|
|
22
|
+
}
|
|
23
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CustomToolTipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: CustomToolTipComponent, selector: "app-custom-tool-tip", inputs: { text: "text", contentTemplate: "contentTemplate" }, ngImport: i0, template: "<div class=\"tooltip-container\">\r\n <div class=\"mat-tooltip\">\r\n <ng-template #simpleText >\r\n {{text}}\r\n </ng-template>\r\n <ng-container *ngTemplateOutlet=\"contentTemplate || simpleText\">\r\n </ng-container>\r\n </div>\r\n </div>", styles: ["@media print{body{all:unset!important}.wm-page{margin:0!important;display:block!important}.not-printable{display:none!important}*{visibility:hidden}.printable,.printable *{visibility:visible!important}}.tooltip-container{position:relative;box-sizing:border-box;box-shadow:0 16px 16px -1px #051d391a;border-radius:4px;-webkit-appearance:none}.tooltip-container:before{content:\"\";display:block;width:0;height:0;border-style:solid;border-width:6px;border-color:transparent;left:50%;bottom:-12px;margin-left:-6.0625px;border-top-color:var(--pageBackgroundColor);position:absolute}.mat-tooltip{font-family:Inter,Verdana,Geneva,Tahoma,sans-serif;margin:0;transform-origin:center top;box-shadow:none;background:var(--pageBackgroundColor);color:var(--strongFontColor);border-radius:2px;z-index:12000;border-style:solid;border-width:0;padding:5px 5px 5px 6px;background-repeat:repeat-x;min-width:20px;text-align:center;font-size:14px;transform:scale(1)!important}.mat-tooltip.mat-tooltip-show{animation:none}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
|
|
25
|
+
}
|
|
26
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CustomToolTipComponent, decorators: [{
|
|
27
|
+
type: Component,
|
|
28
|
+
args: [{ selector: 'app-custom-tool-tip', template: "<div class=\"tooltip-container\">\r\n <div class=\"mat-tooltip\">\r\n <ng-template #simpleText >\r\n {{text}}\r\n </ng-template>\r\n <ng-container *ngTemplateOutlet=\"contentTemplate || simpleText\">\r\n </ng-container>\r\n </div>\r\n </div>", styles: ["@media print{body{all:unset!important}.wm-page{margin:0!important;display:block!important}.not-printable{display:none!important}*{visibility:hidden}.printable,.printable *{visibility:visible!important}}.tooltip-container{position:relative;box-sizing:border-box;box-shadow:0 16px 16px -1px #051d391a;border-radius:4px;-webkit-appearance:none}.tooltip-container:before{content:\"\";display:block;width:0;height:0;border-style:solid;border-width:6px;border-color:transparent;left:50%;bottom:-12px;margin-left:-6.0625px;border-top-color:var(--pageBackgroundColor);position:absolute}.mat-tooltip{font-family:Inter,Verdana,Geneva,Tahoma,sans-serif;margin:0;transform-origin:center top;box-shadow:none;background:var(--pageBackgroundColor);color:var(--strongFontColor);border-radius:2px;z-index:12000;border-style:solid;border-width:0;padding:5px 5px 5px 6px;background-repeat:repeat-x;min-width:20px;text-align:center;font-size:14px;transform:scale(1)!important}.mat-tooltip.mat-tooltip-show{animation:none}\n"] }]
|
|
29
|
+
}], ctorParameters: () => [], propDecorators: { text: [{
|
|
30
|
+
type: Input
|
|
31
|
+
}], contentTemplate: [{
|
|
32
|
+
type: Input
|
|
33
|
+
}] } });
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXRvb2wtdGlwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J0di1iYXNlLWNvbnRyb2xzL3NyYy9saWIvY3VzdG9tLXRvb2wtdGlwL2N1c3RvbS10b29sLXRpcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9idHYtYmFzZS1jb250cm9scy9zcmMvbGliL2N1c3RvbS10b29sLXRpcC9jdXN0b20tdG9vbC10aXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQWUsTUFBTSxlQUFlLENBQUM7OztBQUV0RTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQU1ILE1BQU0sT0FBTyxzQkFBc0I7SUFnQmpDLGdCQUFnQixDQUFDO0lBRWpCLFFBQVE7SUFDUixDQUFDOzhHQW5CVSxzQkFBc0I7a0dBQXRCLHNCQUFzQix5SEN0Qm5DLHFSQVFROzsyRkRjSyxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0UscUJBQXFCO3dEQVN0QixJQUFJO3NCQUFaLEtBQUs7Z0JBU0csZUFBZTtzQkFBdkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbi8qKlxyXG4gKiBUaGlzIGNvbXBvbmVudCB3aWxsIGJlIHVzZWQgdG8gc2hvdyBjdXN0b20gdG9vbHRpcFxyXG4gKiBcclxuICogVGhpcyBjb21wb25lbnQgd2lsbCBiZSByZW5kZXJlZCB1c2luZyBPdmVybGF5TW9kdWxlIG9mIGFuZ3VsYXIgbWF0ZXJpYWxcclxuICogVGhpcyBjb21wb25lbnQgd2lsbCBiZSByZW5kZXJlZCBieSBkaXJlY3RpdmUgb24gYW4gT3ZlcmxheVxyXG4gKiBcclxuICogQ09OU1VNRVIgd2lsbCBub3QgYmUgdXNpbmcgdGhpcyBjb21wb25lbnQgZGlyZWN0bHlcclxuICogVGhpcyBjb21wb25lbnQgd2lsbCBiZSBob3N0ZWQgaW4gYW4gb3ZlcmxheSBieSBUb29sVGlwUmVuZGVyZXIgZGlyZWN0aXZlXHJcbiAqIFRoaXMgY29tcG9uZW50IGV4cG9zZXMgdHdvIHByb3BlcnRpZXMuIFRoZXNlIHR3byBwcm9wZXJ0aWVzIHdpbGwgYmUgZmlsbGVkIGJ5IFRvb2xUaXBSZW5kZXJlciBkaXJlY3RpdmVcclxuICogMS4gdGV4dCAtIFRoaXMgaXMgYSBzaW1wbGUgc3RyaW5nIHdoaWNoIGlzIHRvIGJlIHNob3duIGluIHRoZSB0b29sdGlwOyBUaGlzIHdpbGwgYmUgaW5qZWN0ZWQgaW4gdGhlIFRvb2xUaXBSZW5kZXJlciBkaXJlY3RpdmVcclxuICogICAgYnkgdGhlIGNvbnN1bWVyXHJcbiAqIDIuIGNvbnRlbnRUZW1wbGF0ZSAtIFRoaXMgZ2l2ZXMgZmluZXIgY29udHJvbCBvbiB0aGUgY29udGVudCB0byBiZSBzaG93biBpbiB0aGUgdG9vbHRpcFxyXG4gKiBcclxuICogTk9URSAtIE9OTFkgb25lIHNob3VsZCBiZSBzcGVjaWZpZWQ7IElmIEJPVEggYXJlIHNwZWNpZmllZCB0aGVuIFwidGVtcGxhdGVcIiB3aWxsIGJlIHJlbmRlcmVkIGFuZCBcInRleHRcIiB3aWxsIGJlIGlnbm9yZWRcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWN1c3RvbS10b29sLXRpcCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2N1c3RvbS10b29sLXRpcC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY3VzdG9tLXRvb2wtdGlwLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEN1c3RvbVRvb2xUaXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICAvKipcclxuICAgKiBUaGlzIGlzIHNpbXBsZSB0ZXh0IHdoaWNoIGlzIHRvIGJlIHNob3duIGluIHRoZSB0b29sdGlwXHJcbiAgICovXHJcbiAgQElucHV0KCkgdGV4dDogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBUaGlzIHByb3ZpZGVzIGZpbmVyIGNvbnRyb2wgb24gdGhlIGNvbnRlbnQgdG8gYmUgdmlzaWJsZSBvbiB0aGUgdG9vbHRpcFxyXG4gICAqIFRoaXMgdGVtcGxhdGUgd2lsbCBiZSBpbmplY3RlZCBpbiBNY1Rvb2xUaXBSZW5kZXJlciBkaXJlY3RpdmUgaW4gdGhlIGNvbnN1bWVyIHRlbXBsYXRlXHJcbiAgICogPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZT5cclxuICAgKiAgY29udGVudC4uLi4uXHJcbiAgICogPC9uZy10ZW1wbGF0ZT5cclxuICAgKi9cclxuICBASW5wdXQoKSBjb250ZW50VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInRvb2x0aXAtY29udGFpbmVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWF0LXRvb2x0aXBcIj5cclxuICAgICAgPG5nLXRlbXBsYXRlICNzaW1wbGVUZXh0ID5cclxuICAgICAgICB7e3RleHR9fVxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFRlbXBsYXRlIHx8IHNpbXBsZVRleHRcIj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj4iXX0=
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { Directive, Input, HostListener } from '@angular/core';
|
|
2
|
+
import { ConnectionPositionPair } from '@angular/cdk/overlay';
|
|
3
|
+
import { CustomToolTipComponent } from './custom-tool-tip.component';
|
|
4
|
+
import { ComponentPortal } from '@angular/cdk/portal';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/cdk/overlay";
|
|
7
|
+
export class ToolTipRendererDirective {
|
|
8
|
+
constructor(_overlay, _elementRef) {
|
|
9
|
+
this._overlay = _overlay;
|
|
10
|
+
this._elementRef = _elementRef;
|
|
11
|
+
/**
|
|
12
|
+
* This will be used to show tooltip or not
|
|
13
|
+
* This can be used to show the tooltip conditionally
|
|
14
|
+
*/
|
|
15
|
+
this.showToolTip = true;
|
|
16
|
+
this.useCustom = false;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Init life cycle event handler
|
|
20
|
+
*/
|
|
21
|
+
ngOnInit() { }
|
|
22
|
+
get refElement() {
|
|
23
|
+
if (this.useCustom || this.customAnchor)
|
|
24
|
+
return this.customAnchor;
|
|
25
|
+
return this._elementRef;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* This method will be called whenever mouse enters in the Host element
|
|
29
|
+
* i.e. where this directive is applied
|
|
30
|
+
* This method will show the tooltip by instantiating the McToolTipComponent and attaching to the overlay
|
|
31
|
+
*/
|
|
32
|
+
show() {
|
|
33
|
+
if (this.refElement)
|
|
34
|
+
this.closeToolTip();
|
|
35
|
+
if (!this.showToolTip || (this.useCustom && !this.customAnchor)) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
const positionPairs = [
|
|
39
|
+
new ConnectionPositionPair({ originX: 'center', originY: 'top' }, { overlayX: 'center', overlayY: 'bottom' }, 0, 0, 'mat-tooltip-panel-above'),
|
|
40
|
+
new ConnectionPositionPair({ originX: 'center', originY: 'bottom' }, { overlayX: 'center', overlayY: 'top' }, 0, 0, 'mat-tooltip-panel-below')
|
|
41
|
+
];
|
|
42
|
+
const positionStrategy = this._overlay.position()
|
|
43
|
+
.flexibleConnectedTo(this.refElement)
|
|
44
|
+
.withPositions(positionPairs)
|
|
45
|
+
.withFlexibleDimensions(true)
|
|
46
|
+
.withPush(true);
|
|
47
|
+
this._overlayRef = this._overlay.create({
|
|
48
|
+
panelClass: 'mat-tooltip-panel',
|
|
49
|
+
scrollStrategy: this._overlay.scrollStrategies.close(),
|
|
50
|
+
positionStrategy
|
|
51
|
+
});
|
|
52
|
+
// attach the component if it has not already attached to the overlay
|
|
53
|
+
if (this._overlayRef && !this._overlayRef.hasAttached()) {
|
|
54
|
+
const content = new ComponentPortal(CustomToolTipComponent);
|
|
55
|
+
// todo check this
|
|
56
|
+
const tooltipRef = this._overlayRef.attach(content);
|
|
57
|
+
tooltipRef.instance.text = this.text;
|
|
58
|
+
tooltipRef.instance.contentTemplate = this.contentTemplate;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* This method will be called when mouse goes out of the host element
|
|
63
|
+
* i.e. where this directive is applied
|
|
64
|
+
* This method will close the tooltip by detaching the overlay from the view
|
|
65
|
+
*/
|
|
66
|
+
hide() {
|
|
67
|
+
this.closeToolTip();
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Destroy lifecycle event handler
|
|
71
|
+
* This method will make sure to close the tooltip
|
|
72
|
+
* It will be needed in case when app is navigating to different page
|
|
73
|
+
* and user is still seeing the tooltip; In that case we do not want to hang around the
|
|
74
|
+
* tooltip after the page [on which tooltip visible] is destroyed
|
|
75
|
+
*/
|
|
76
|
+
ngOnDestroy() {
|
|
77
|
+
this.closeToolTip();
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* This method will close the tooltip by detaching the component from the overlay
|
|
81
|
+
*/
|
|
82
|
+
closeToolTip() {
|
|
83
|
+
if (this._overlayRef) {
|
|
84
|
+
this._overlayRef.detach();
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: ToolTipRendererDirective, deps: [{ token: i1.Overlay }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
88
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.1", type: ToolTipRendererDirective, selector: "[customToolTip]", inputs: { showToolTip: "showToolTip", text: ["customToolTip", "text"], contentTemplate: "contentTemplate", customAnchor: "customAnchor", useCustom: "useCustom" }, host: { listeners: { "touchstart": "show()", "mousemove": "show($event)", "touchend": "hide()", "mouseleave": "hide()" } }, ngImport: i0 }); }
|
|
89
|
+
}
|
|
90
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: ToolTipRendererDirective, decorators: [{
|
|
91
|
+
type: Directive,
|
|
92
|
+
args: [{
|
|
93
|
+
selector: '[customToolTip]'
|
|
94
|
+
}]
|
|
95
|
+
}], ctorParameters: () => [{ type: i1.Overlay }, { type: i0.ElementRef }], propDecorators: { showToolTip: [{
|
|
96
|
+
type: Input
|
|
97
|
+
}], text: [{
|
|
98
|
+
type: Input,
|
|
99
|
+
args: [`customToolTip`]
|
|
100
|
+
}], contentTemplate: [{
|
|
101
|
+
type: Input
|
|
102
|
+
}], customAnchor: [{
|
|
103
|
+
type: Input
|
|
104
|
+
}], useCustom: [{
|
|
105
|
+
type: Input
|
|
106
|
+
}], show: [{
|
|
107
|
+
type: HostListener,
|
|
108
|
+
args: ['touchstart']
|
|
109
|
+
}, {
|
|
110
|
+
type: HostListener,
|
|
111
|
+
args: ['mousemove', ['$event']]
|
|
112
|
+
}], hide: [{
|
|
113
|
+
type: HostListener,
|
|
114
|
+
args: ['touchend']
|
|
115
|
+
}, {
|
|
116
|
+
type: HostListener,
|
|
117
|
+
args: ['mouseleave']
|
|
118
|
+
}] } });
|
|
119
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbC10aXAtcmVuZGVyZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnR2LWJhc2UtY29udHJvbHMvc3JjL2xpYi9jdXN0b20tdG9vbC10aXAvdG9vbC10aXAtcmVuZGVyZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFtQyxZQUFZLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBQzlHLE9BQU8sRUFBRSxzQkFBc0IsRUFBdUIsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQU10RCxNQUFNLE9BQU8sd0JBQXdCO0lBZ0JqQyxZQUFvQixRQUFpQixFQUN6QixXQUF1QjtRQURmLGFBQVEsR0FBUixRQUFRLENBQVM7UUFDekIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFoQm5DOzs7VUFHRTtRQUNPLGdCQUFXLEdBQVksSUFBSSxDQUFDO1FBUzVCLGNBQVMsR0FBYSxLQUFLLENBQUM7SUFHRSxDQUFDO0lBRXhDOztPQUVHO0lBQ0gsUUFBUSxLQUFLLENBQUM7SUFFZCxJQUFJLFVBQVU7UUFDVixJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFlBQVk7WUFBRSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDbEUsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzVCLENBQUM7SUFDRDs7OztPQUlHO0lBSUgsSUFBSTtRQUNBLElBQUksSUFBSSxDQUFDLFVBQVU7WUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDekMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDOUQsT0FBTztRQUNYLENBQUM7UUFFRCxNQUFNLGFBQWEsR0FBNkI7WUFDNUMsSUFBSSxzQkFBc0IsQ0FDdEIsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFDckMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUNoRCx5QkFBeUIsQ0FBQztZQUM5QixJQUFJLHNCQUFzQixDQUN0QixFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUN4QyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQzdDLHlCQUF5QixDQUFDO1NBRWpDLENBQUM7UUFDRixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFO2FBQzVDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7YUFDcEMsYUFBYSxDQUFDLGFBQWEsQ0FBQzthQUM1QixzQkFBc0IsQ0FBQyxJQUFJLENBQUM7YUFDNUIsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXBCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7WUFDcEMsVUFBVSxFQUFFLG1CQUFtQjtZQUMvQixjQUFjLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUU7WUFDdEQsZ0JBQWdCO1NBQ25CLENBQUMsQ0FBQztRQUNILHFFQUFxRTtRQUNyRSxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7WUFDdEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxlQUFlLENBQUMsc0JBQXNCLENBQUMsQ0FBQztZQUM1RCxrQkFBa0I7WUFDbEIsTUFBTSxVQUFVLEdBQXlDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBUSxDQUFDO1lBQ2pHLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDckMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUMvRCxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFHSCxJQUFJO1FBQ0EsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7T0FFRztJQUNLLFlBQVk7UUFDaEIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUM5QixDQUFDO0lBQ0wsQ0FBQzs4R0F2R1Esd0JBQXdCO2tHQUF4Qix3QkFBd0I7OzJGQUF4Qix3QkFBd0I7a0JBSnBDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGlCQUFpQjtpQkFDOUI7cUdBT1ksV0FBVztzQkFBbkIsS0FBSztnQkFHa0IsSUFBSTtzQkFBM0IsS0FBSzt1QkFBQyxlQUFlO2dCQUdiLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQXNCTixJQUFJO3NCQUZILFlBQVk7dUJBQUMsWUFBWTs7c0JBQ3pCLFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQThDckMsSUFBSTtzQkFGSCxZQUFZO3VCQUFDLFVBQVU7O3NCQUN2QixZQUFZO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBUZW1wbGF0ZVJlZiwgRWxlbWVudFJlZiwgT25Jbml0LCBIb3N0TGlzdGVuZXIsIENvbXBvbmVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb25uZWN0aW9uUG9zaXRpb25QYWlyLCBPdmVybGF5LCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xyXG5pbXBvcnQgeyBDdXN0b21Ub29sVGlwQ29tcG9uZW50IH0gZnJvbSAnLi9jdXN0b20tdG9vbC10aXAuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICAgIHNlbGVjdG9yOiAnW2N1c3RvbVRvb2xUaXBdJ1xyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIFRvb2xUaXBSZW5kZXJlckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICAvKipcclxuICAgICogVGhpcyB3aWxsIGJlIHVzZWQgdG8gc2hvdyB0b29sdGlwIG9yIG5vdFxyXG4gICAgKiBUaGlzIGNhbiBiZSB1c2VkIHRvIHNob3cgdGhlIHRvb2x0aXAgY29uZGl0aW9uYWxseVxyXG4gICAgKi9cclxuICAgIEBJbnB1dCgpIHNob3dUb29sVGlwOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICAvL0lmIHRoaXMgaXMgc3BlY2lmaWVkIHRoZW4gc3BlY2lmaWVkIHRleHQgd2lsbCBiZSBzaG93biBpbiB0aGUgdG9vbHRpcFxyXG4gICAgQElucHV0KGBjdXN0b21Ub29sVGlwYCkgdGV4dDogc3RyaW5nO1xyXG5cclxuICAgIC8vSWYgdGhpcyBpcyBzcGVjaWZpZWQgdGhlbiBzcGVjaWZpZWQgdGVtcGxhdGUgd2lsbCBiZSByZW5kZXJlZCBpbiB0aGUgdG9vbHRpcFxyXG4gICAgQElucHV0KCkgY29udGVudFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gICAgcHJpdmF0ZSBfb3ZlcmxheVJlZjogT3ZlcmxheVJlZjtcclxuICAgIEBJbnB1dCgpIGN1c3RvbUFuY2hvcj86IGFueTtcclxuICAgIEBJbnB1dCgpIHVzZUN1c3RvbT86IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9vdmVybGF5OiBPdmVybGF5LFxyXG4gICAgICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5pdCBsaWZlIGN5Y2xlIGV2ZW50IGhhbmRsZXJcclxuICAgICAqL1xyXG4gICAgbmdPbkluaXQoKSB7IH1cclxuXHJcbiAgICBnZXQgcmVmRWxlbWVudCgpIHtcclxuICAgICAgICBpZiAodGhpcy51c2VDdXN0b20gfHwgdGhpcy5jdXN0b21BbmNob3IpIHJldHVybiB0aGlzLmN1c3RvbUFuY2hvcjtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudFJlZjtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgd2hlbmV2ZXIgbW91c2UgZW50ZXJzIGluIHRoZSBIb3N0IGVsZW1lbnRcclxuICAgICAqIGkuZS4gd2hlcmUgdGhpcyBkaXJlY3RpdmUgaXMgYXBwbGllZFxyXG4gICAgICogVGhpcyBtZXRob2Qgd2lsbCBzaG93IHRoZSB0b29sdGlwIGJ5IGluc3RhbnRpYXRpbmcgdGhlIE1jVG9vbFRpcENvbXBvbmVudCBhbmQgYXR0YWNoaW5nIHRvIHRoZSBvdmVybGF5XHJcbiAgICAgKi9cclxuICAgIFxyXG4gICAgQEhvc3RMaXN0ZW5lcigndG91Y2hzdGFydCcpXHJcbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZW1vdmUnLCBbJyRldmVudCddKVxyXG4gICAgc2hvdygpIHtcclxuICAgICAgICBpZiAodGhpcy5yZWZFbGVtZW50KSB0aGlzLmNsb3NlVG9vbFRpcCgpO1xyXG4gICAgICAgIGlmICghdGhpcy5zaG93VG9vbFRpcCB8fCAodGhpcy51c2VDdXN0b20gJiYgIXRoaXMuY3VzdG9tQW5jaG9yKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBwb3NpdGlvblBhaXJzOiBDb25uZWN0aW9uUG9zaXRpb25QYWlyW10gPSBbXHJcbiAgICAgICAgICAgIG5ldyBDb25uZWN0aW9uUG9zaXRpb25QYWlyKFxyXG4gICAgICAgICAgICAgICAgeyBvcmlnaW5YOiAnY2VudGVyJywgb3JpZ2luWTogJ3RvcCcgfSxcclxuICAgICAgICAgICAgICAgIHsgb3ZlcmxheVg6ICdjZW50ZXInLCBvdmVybGF5WTogJ2JvdHRvbScgfSwgMCwgMCxcclxuICAgICAgICAgICAgICAgICdtYXQtdG9vbHRpcC1wYW5lbC1hYm92ZScpLFxyXG4gICAgICAgICAgICBuZXcgQ29ubmVjdGlvblBvc2l0aW9uUGFpcihcclxuICAgICAgICAgICAgICAgIHsgb3JpZ2luWDogJ2NlbnRlcicsIG9yaWdpblk6ICdib3R0b20nIH0sXHJcbiAgICAgICAgICAgICAgICB7IG92ZXJsYXlYOiAnY2VudGVyJywgb3ZlcmxheVk6ICd0b3AnIH0sIDAsIDAsXHJcbiAgICAgICAgICAgICAgICAnbWF0LXRvb2x0aXAtcGFuZWwtYmVsb3cnKVxyXG5cclxuICAgICAgICBdO1xyXG4gICAgICAgIGNvbnN0IHBvc2l0aW9uU3RyYXRlZ3kgPSB0aGlzLl9vdmVybGF5LnBvc2l0aW9uKClcclxuICAgICAgICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5yZWZFbGVtZW50KVxyXG4gICAgICAgICAgICAud2l0aFBvc2l0aW9ucyhwb3NpdGlvblBhaXJzKVxyXG4gICAgICAgICAgICAud2l0aEZsZXhpYmxlRGltZW5zaW9ucyh0cnVlKVxyXG4gICAgICAgICAgICAud2l0aFB1c2godHJ1ZSk7XHJcblxyXG4gICAgICAgIHRoaXMuX292ZXJsYXlSZWYgPSB0aGlzLl9vdmVybGF5LmNyZWF0ZSh7XHJcbiAgICAgICAgICAgIHBhbmVsQ2xhc3M6ICdtYXQtdG9vbHRpcC1wYW5lbCcsXHJcbiAgICAgICAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLl9vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMuY2xvc2UoKSxcclxuICAgICAgICAgICAgcG9zaXRpb25TdHJhdGVneVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIC8vIGF0dGFjaCB0aGUgY29tcG9uZW50IGlmIGl0IGhhcyBub3QgYWxyZWFkeSBhdHRhY2hlZCB0byB0aGUgb3ZlcmxheVxyXG4gICAgICAgIGlmICh0aGlzLl9vdmVybGF5UmVmICYmICF0aGlzLl9vdmVybGF5UmVmLmhhc0F0dGFjaGVkKCkpIHtcclxuICAgICAgICAgICAgY29uc3QgY29udGVudCA9IG5ldyBDb21wb25lbnRQb3J0YWwoQ3VzdG9tVG9vbFRpcENvbXBvbmVudCk7XHJcbiAgICAgICAgICAgIC8vIHRvZG8gY2hlY2sgdGhpc1xyXG4gICAgICAgICAgICBjb25zdCB0b29sdGlwUmVmOiBDb21wb25lbnRSZWY8Q3VzdG9tVG9vbFRpcENvbXBvbmVudD4gPSB0aGlzLl9vdmVybGF5UmVmLmF0dGFjaChjb250ZW50KSBhcyBhbnk7XHJcbiAgICAgICAgICAgIHRvb2x0aXBSZWYuaW5zdGFuY2UudGV4dCA9IHRoaXMudGV4dDtcclxuICAgICAgICAgICAgdG9vbHRpcFJlZi5pbnN0YW5jZS5jb250ZW50VGVtcGxhdGUgPSB0aGlzLmNvbnRlbnRUZW1wbGF0ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCB3aGVuIG1vdXNlIGdvZXMgb3V0IG9mIHRoZSBob3N0IGVsZW1lbnRcclxuICAgICAqIGkuZS4gd2hlcmUgdGhpcyBkaXJlY3RpdmUgaXMgYXBwbGllZFxyXG4gICAgICogVGhpcyBtZXRob2Qgd2lsbCBjbG9zZSB0aGUgdG9vbHRpcCBieSBkZXRhY2hpbmcgdGhlIG92ZXJsYXkgZnJvbSB0aGUgdmlld1xyXG4gICAgICovXHJcbiAgICBASG9zdExpc3RlbmVyKCd0b3VjaGVuZCcpXHJcbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZWxlYXZlJylcclxuICAgIGhpZGUoKSB7XHJcbiAgICAgICAgdGhpcy5jbG9zZVRvb2xUaXAoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIERlc3Ryb3kgbGlmZWN5Y2xlIGV2ZW50IGhhbmRsZXJcclxuICAgICAqIFRoaXMgbWV0aG9kIHdpbGwgbWFrZSBzdXJlIHRvIGNsb3NlIHRoZSB0b29sdGlwXHJcbiAgICAgKiBJdCB3aWxsIGJlIG5lZWRlZCBpbiBjYXNlIHdoZW4gYXBwIGlzIG5hdmlnYXRpbmcgdG8gZGlmZmVyZW50IHBhZ2VcclxuICAgICAqIGFuZCB1c2VyIGlzIHN0aWxsIHNlZWluZyB0aGUgdG9vbHRpcDsgSW4gdGhhdCBjYXNlIHdlIGRvIG5vdCB3YW50IHRvIGhhbmcgYXJvdW5kIHRoZVxyXG4gICAgICogdG9vbHRpcCBhZnRlciB0aGUgcGFnZSBbb24gd2hpY2ggdG9vbHRpcCB2aXNpYmxlXSBpcyBkZXN0cm95ZWRcclxuICAgICAqL1xyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgdGhpcy5jbG9zZVRvb2xUaXAoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgbWV0aG9kIHdpbGwgY2xvc2UgdGhlIHRvb2x0aXAgYnkgZGV0YWNoaW5nIHRoZSBjb21wb25lbnQgZnJvbSB0aGUgb3ZlcmxheVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGNsb3NlVG9vbFRpcCgpIHtcclxuICAgICAgICBpZiAodGhpcy5fb3ZlcmxheVJlZikge1xyXG4gICAgICAgICAgICB0aGlzLl9vdmVybGF5UmVmLmRldGFjaCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
|