@metadev/lux 0.27.0 → 0.29.0
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/LICENSE +1 -1
- package/README.md +1 -1
- package/esm2022/lib/autocomplete/autocomplete.component.mjs +488 -488
- package/esm2022/lib/autocomplete-list/autocomplete-list.component.mjs +259 -259
- package/esm2022/lib/breadcrumb/breadcrumb.component.mjs +78 -78
- package/esm2022/lib/checkbox/checkbox.component.mjs +156 -156
- package/esm2022/lib/datasource.mjs +1 -1
- package/esm2022/lib/datetime/datetime.component.mjs +312 -312
- package/esm2022/lib/filter/filter.component.mjs +158 -158
- package/esm2022/lib/geolocation/geolocation.component.mjs +423 -423
- package/esm2022/lib/geolocation/geolocation.service.mjs +123 -123
- package/esm2022/lib/geolocation/openlayer-loader.service.mjs +62 -62
- package/esm2022/lib/helperFns.mjs +118 -118
- package/esm2022/lib/input/input.component.mjs +469 -469
- package/esm2022/lib/input/regexp.service.mjs +195 -195
- package/esm2022/lib/lang.mjs +9 -9
- package/esm2022/lib/lux.module.mjs +118 -118
- package/esm2022/lib/map/geopoint.mjs +1 -1
- package/esm2022/lib/map/map.component.mjs +275 -275
- package/esm2022/lib/modal/modal-backdrop.mjs +24 -24
- package/esm2022/lib/modal/modal-config.mjs +11 -11
- package/esm2022/lib/modal/modal-dismiss-reasons.mjs +5 -5
- package/esm2022/lib/modal/modal-ref.mjs +101 -101
- package/esm2022/lib/modal/modal-stack.mjs +182 -182
- package/esm2022/lib/modal/modal-window.mjs +118 -118
- package/esm2022/lib/modal/modal.service.mjs +27 -27
- package/esm2022/lib/modal/util.mjs +82 -82
- package/esm2022/lib/pagination/pagination.component.mjs +144 -144
- package/esm2022/lib/pagination/pagination.mjs +1 -1
- package/esm2022/lib/radiogroup/radiogroup.component.mjs +129 -129
- package/esm2022/lib/select/select.component.mjs +148 -148
- package/esm2022/lib/tooltip/placement.mjs +7 -7
- package/esm2022/lib/tooltip/tooltip-context.mjs +1 -1
- package/esm2022/lib/tooltip/tooltip.component.mjs +21 -21
- package/esm2022/lib/tooltip/tooltip.directive.mjs +69 -69
- package/esm2022/lib/tooltip/tooltip.service.mjs +137 -137
- package/esm2022/lib/tooltip/tooltop-content.mjs +8 -8
- package/esm2022/lib/voice-recognition/voice-recognition.directive.mjs +79 -79
- package/esm2022/lib/window/window.service.mjs +46 -46
- package/esm2022/metadev-lux.mjs +4 -4
- package/esm2022/public-api.mjs +20 -20
- package/fesm2022/metadev-lux.mjs +4372 -4372
- package/fesm2022/metadev-lux.mjs.map +1 -1
- package/index.d.ts +5 -5
- package/lib/autocomplete/autocomplete.component.d.ts +81 -81
- package/lib/autocomplete-list/autocomplete-list.component.d.ts +65 -65
- package/lib/breadcrumb/breadcrumb.component.d.ts +22 -22
- package/lib/checkbox/checkbox.component.d.ts +47 -47
- package/lib/datasource.d.ts +13 -13
- package/lib/datetime/datetime.component.d.ts +69 -69
- package/lib/filter/filter.component.d.ts +51 -51
- package/lib/geolocation/geolocation.component.d.ts +123 -123
- package/lib/geolocation/geolocation.service.d.ts +32 -32
- package/lib/geolocation/openlayer-loader.service.d.ts +7 -7
- package/lib/helperFns.d.ts +15 -15
- package/lib/input/input.component.d.ts +108 -108
- package/lib/input/regexp.service.d.ts +15 -15
- package/lib/lang.d.ts +2 -2
- package/lib/lux.module.d.ts +27 -27
- package/lib/map/geopoint.d.ts +7 -7
- package/lib/map/map.component.d.ts +39 -39
- package/lib/modal/modal-backdrop.d.ts +8 -8
- package/lib/modal/modal-config.d.ts +14 -14
- package/lib/modal/modal-dismiss-reasons.d.ts +4 -4
- package/lib/modal/modal-ref.d.ts +41 -41
- package/lib/modal/modal-stack.d.ts +31 -31
- package/lib/modal/modal-window.d.ts +28 -28
- package/lib/modal/modal.service.d.ts +19 -19
- package/lib/modal/util.d.ts +40 -40
- package/lib/pagination/pagination.component.d.ts +52 -52
- package/lib/pagination/pagination.d.ts +10 -10
- package/lib/radiogroup/radiogroup.component.d.ts +37 -37
- package/lib/select/select.component.d.ts +38 -38
- package/lib/tooltip/placement.d.ts +7 -7
- package/lib/tooltip/tooltip-context.d.ts +3 -3
- package/lib/tooltip/tooltip.component.d.ts +11 -11
- package/lib/tooltip/tooltip.directive.d.ts +27 -27
- package/lib/tooltip/tooltip.service.d.ts +20 -20
- package/lib/tooltip/tooltop-content.d.ts +6 -6
- package/lib/voice-recognition/voice-recognition.directive.d.ts +16 -16
- package/lib/window/window.service.d.ts +11 -11
- package/package.json +3 -4
- package/public-api.d.ts +18 -18
|
@@ -1,137 +1,137 @@
|
|
|
1
|
-
import { Injectable, Injector, ComponentFactoryResolver, ApplicationRef, TemplateRef } from '@angular/core';
|
|
2
|
-
import { Placement } from './placement';
|
|
3
|
-
import { TooltipComponent } from './tooltip.component';
|
|
4
|
-
import { TooltipContentRef } from './tooltop-content';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export class TooltipService {
|
|
7
|
-
_injector;
|
|
8
|
-
_crf;
|
|
9
|
-
_applicationRef;
|
|
10
|
-
constructor(_injector, _crf, _applicationRef) {
|
|
11
|
-
this._injector = _injector;
|
|
12
|
-
this._crf = _crf;
|
|
13
|
-
this._applicationRef = _applicationRef;
|
|
14
|
-
}
|
|
15
|
-
appendComponentToBody(content, elHost, placement) {
|
|
16
|
-
const tooltipContentRef = this.getTooltipContentRef(content);
|
|
17
|
-
if (tooltipContentRef) {
|
|
18
|
-
let domElem = tooltipContentRef.viewRef
|
|
19
|
-
.rootNodes[0];
|
|
20
|
-
document.body.appendChild(domElem);
|
|
21
|
-
if (tooltipContentRef.componentRef) {
|
|
22
|
-
tooltipContentRef.componentRef.changeDetectorRef.detectChanges();
|
|
23
|
-
}
|
|
24
|
-
domElem = this.setStyle(domElem, placement);
|
|
25
|
-
domElem = this.setPosition(domElem, elHost, placement);
|
|
26
|
-
return tooltipContentRef;
|
|
27
|
-
}
|
|
28
|
-
return null;
|
|
29
|
-
}
|
|
30
|
-
removeComponentFromBody(tooltipContentRef) {
|
|
31
|
-
this._applicationRef.detachView(tooltipContentRef.viewRef);
|
|
32
|
-
if (tooltipContentRef.componentRef) {
|
|
33
|
-
tooltipContentRef.componentRef.destroy();
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
getTooltipContentRef(content) {
|
|
37
|
-
if (!content) {
|
|
38
|
-
// nothing to show
|
|
39
|
-
}
|
|
40
|
-
else if (content instanceof TemplateRef) {
|
|
41
|
-
return this.createFromTemplateRef(content);
|
|
42
|
-
}
|
|
43
|
-
else if (typeof content === 'string') {
|
|
44
|
-
return this.createFromComponent(TooltipComponent, { message: content });
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
47
|
-
return this.createFromComponent(content);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
createFromTemplateRef(content) {
|
|
51
|
-
const viewRef = content.createEmbeddedView({});
|
|
52
|
-
this._applicationRef.attachView(viewRef);
|
|
53
|
-
return new TooltipContentRef(viewRef);
|
|
54
|
-
}
|
|
55
|
-
createFromComponent(component, context) {
|
|
56
|
-
const componentRef = this._crf
|
|
57
|
-
.resolveComponentFactory(component)
|
|
58
|
-
.create(this._injector);
|
|
59
|
-
if (context) {
|
|
60
|
-
componentRef.instance.context = context;
|
|
61
|
-
}
|
|
62
|
-
this._applicationRef.attachView(componentRef.hostView);
|
|
63
|
-
return new TooltipContentRef(componentRef.hostView, componentRef);
|
|
64
|
-
}
|
|
65
|
-
setStyle(domElem, placement) {
|
|
66
|
-
domElem.style.position = 'absolute';
|
|
67
|
-
domElem.style.minWidth = 'min-content';
|
|
68
|
-
domElem.style.minHeight = 'min-content';
|
|
69
|
-
const tooltipElement = this.getTooltipElementFromHTMLElemnt(domElem);
|
|
70
|
-
placement =
|
|
71
|
-
placement !== undefined
|
|
72
|
-
? placement.toLocaleLowerCase()
|
|
73
|
-
: 'top'; // 'Top' is the default value of placement
|
|
74
|
-
tooltipElement.classList.add(`lux-tooltip-${placement}`);
|
|
75
|
-
tooltipElement.classList.add('lux-tooltip-show');
|
|
76
|
-
return domElem;
|
|
77
|
-
}
|
|
78
|
-
getTooltipElementFromHTMLElemnt(domElem) {
|
|
79
|
-
const elementsArray = Array.from(domElem.classList).filter((className) => className === 'lux-tooltip');
|
|
80
|
-
if (elementsArray.length !== 0) {
|
|
81
|
-
return domElem;
|
|
82
|
-
}
|
|
83
|
-
else if (domElem.hasChildNodes()) {
|
|
84
|
-
const childrenArray = Array.from(domElem.children).filter((child) => this.getTooltipElementFromHTMLElemnt(child) !== null);
|
|
85
|
-
if (childrenArray.length !== 0) {
|
|
86
|
-
return this.getTooltipElementFromHTMLElemnt(childrenArray[0]);
|
|
87
|
-
}
|
|
88
|
-
else {
|
|
89
|
-
return null;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
else {
|
|
93
|
-
return null;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
setPosition(domElem, elHost, placement) {
|
|
97
|
-
const hostPos = elHost.nativeElement.getBoundingClientRect();
|
|
98
|
-
const tooltipPos = domElem.getBoundingClientRect();
|
|
99
|
-
const scrollPos = window.pageYOffset ||
|
|
100
|
-
document.documentElement.scrollTop ||
|
|
101
|
-
document.body.scrollTop ||
|
|
102
|
-
0;
|
|
103
|
-
let top = 0;
|
|
104
|
-
let left = 0;
|
|
105
|
-
const offset = 10;
|
|
106
|
-
switch (placement) {
|
|
107
|
-
case Placement.Bottom:
|
|
108
|
-
top = hostPos.bottom + offset;
|
|
109
|
-
left = hostPos.left + (hostPos.width - tooltipPos.width) / 2;
|
|
110
|
-
break;
|
|
111
|
-
case Placement.Left:
|
|
112
|
-
top = hostPos.top + (hostPos.height - tooltipPos.height) / 2;
|
|
113
|
-
left = hostPos.left - tooltipPos.width - offset;
|
|
114
|
-
break;
|
|
115
|
-
case Placement.Right:
|
|
116
|
-
top = hostPos.top + (hostPos.height - tooltipPos.height) / 2;
|
|
117
|
-
left = hostPos.right + offset;
|
|
118
|
-
break;
|
|
119
|
-
case Placement.Top:
|
|
120
|
-
default:
|
|
121
|
-
top = hostPos.top - tooltipPos.height - offset;
|
|
122
|
-
left = hostPos.left + (hostPos.width - tooltipPos.width) / 2;
|
|
123
|
-
break;
|
|
124
|
-
}
|
|
125
|
-
top = Math.max(0, top);
|
|
126
|
-
left = Math.max(0, left);
|
|
127
|
-
domElem.style.top = `${top + scrollPos}px`;
|
|
128
|
-
domElem.style.left = `${left}px`;
|
|
129
|
-
return domElem;
|
|
130
|
-
}
|
|
131
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
132
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
133
|
-
}
|
|
134
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
135
|
-
type: Injectable
|
|
136
|
-
}], ctorParameters:
|
|
137
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbHV4L3NyYy9saWIvdG9vbHRpcC90b29sdGlwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFVBQVUsRUFDVixRQUFRLEVBRVIsd0JBQXdCLEVBQ3hCLGNBQWMsRUFHZCxXQUFXLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFrQixTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBR3RELE1BQU0sT0FBTyxjQUFjO0lBRWY7SUFDQTtJQUNBO0lBSFYsWUFDVSxTQUFtQixFQUNuQixJQUE4QixFQUM5QixlQUErQjtRQUYvQixjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQ25CLFNBQUksR0FBSixJQUFJLENBQTBCO1FBQzlCLG9CQUFlLEdBQWYsZUFBZSxDQUFnQjtJQUN0QyxDQUFDO0lBRUoscUJBQXFCLENBQ25CLE9BQVksRUFDWixNQUFrQixFQUNsQixTQUF5QjtRQUV6QixNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM3RCxJQUFJLGlCQUFpQixFQUFFO1lBQ3JCLElBQUksT0FBTyxHQUFJLGlCQUFpQixDQUFDLE9BQWdDO2lCQUM5RCxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEIsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDbkMsSUFBSSxpQkFBaUIsQ0FBQyxZQUFZLEVBQUU7Z0JBQ2xDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQzthQUNsRTtZQUNELE9BQU8sR0FB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QUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsU0FBUyxJQUFJLENBQUM7UUFDM0MsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksQ0FBQztRQUNqQyxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO3VHQWxKVSxjQUFjOzJHQUFkLGNBQWM7OzJGQUFkLGNBQWM7a0JBRDFCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBJbmplY3RhYmxlLFxuICBJbmplY3RvcixcbiAgQ29tcG9uZW50UmVmLFxuICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gIEFwcGxpY2F0aW9uUmVmLFxuICBFbWJlZGRlZFZpZXdSZWYsXG4gIEVsZW1lbnRSZWYsXG4gIFRlbXBsYXRlUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBQbGFjZW1lbnRWYWx1ZSwgUGxhY2VtZW50IH0gZnJvbSAnLi9wbGFjZW1lbnQnO1xuaW1wb3J0IHsgTHV4VG9vbHRpcENvbnRleHQgfSBmcm9tICcuL3Rvb2x0aXAtY29udGV4dCc7XG5pbXBvcnQgeyBUb29sdGlwQ29tcG9uZW50IH0gZnJvbSAnLi90b29sdGlwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUb29sdGlwQ29udGVudFJlZiB9IGZyb20gJy4vdG9vbHRvcC1jb250ZW50JztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRvb2x0aXBTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgX2NyZjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgIHByaXZhdGUgX2FwcGxpY2F0aW9uUmVmOiBBcHBsaWNhdGlvblJlZlxuICApIHt9XG5cbiAgYXBwZW5kQ29tcG9uZW50VG9Cb2R5KFxuICAgIGNvbnRlbnQ6IGFueSxcbiAgICBlbEhvc3Q6IEVsZW1lbnRSZWYsXG4gICAgcGxhY2VtZW50OiBQbGFjZW1lbnRWYWx1ZVxuICApOiBUb29sdGlwQ29udGVudFJlZiB7XG4gICAgY29uc3QgdG9vbHRpcENvbnRlbnRSZWYgPSB0aGlzLmdldFRvb2x0aXBDb250ZW50UmVmKGNvbnRlbnQpO1xuICAgIGlmICh0b29sdGlwQ29udGVudFJlZikge1xuICAgICAgbGV0IGRvbUVsZW0gPSAodG9vbHRpcENvbnRlbnRSZWYudmlld1JlZiBhcyBFbWJlZGRlZFZpZXdSZWY8YW55PilcbiAgICAgICAgLnJvb3ROb2Rlc1swXTtcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9tRWxlbSk7XG4gICAgICBpZiAodG9vbHRpcENvbnRlbnRSZWYuY29tcG9uZW50UmVmKSB7XG4gICAgICAgIHRvb2x0aXBDb250ZW50UmVmLmNvbXBvbmVudFJlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9XG4gICAgICBkb21FbGVtID0gdGhpcy5zZXRTdHlsZShkb21FbGVtLCBwbGFjZW1lbnQpO1xuICAgICAgZG9tRWxlbSA9IHRoaXMuc2V0UG9zaXRpb24oZG9tRWxlbSwgZWxIb3N0LCBwbGFjZW1lbnQpO1xuICAgICAgcmV0dXJuIHRvb2x0aXBDb250ZW50UmVmO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJlbW92ZUNvbXBvbmVudEZyb21Cb2R5KHRvb2x0aXBDb250ZW50UmVmOiBUb29sdGlwQ29udGVudFJlZik6IHZvaWQge1xuICAgIHRoaXMuX2FwcGxpY2F0aW9uUmVmLmRldGFjaFZpZXcodG9vbHRpcENvbnRlbnRSZWYudmlld1JlZik7XG4gICAgaWYgKHRvb2x0aXBDb250ZW50UmVmLmNvbXBvbmVudFJlZikge1xuICAgICAgdG9vbHRpcENvbnRlbnRSZWYuY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFRvb2x0aXBDb250ZW50UmVmKGNvbnRlbnQ6IGFueSk6IFRvb2x0aXBDb250ZW50UmVmIHtcbiAgICBpZiAoIWNvbnRlbnQpIHtcbiAgICAgIC8vIG5vdGhpbmcgdG8gc2hvd1xuICAgIH0gZWxzZSBpZiAoY29udGVudCBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmKSB7XG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGVGcm9tVGVtcGxhdGVSZWYoY29udGVudCk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUZyb21Db21wb25lbnQoVG9vbHRpcENvbXBvbmVudCwgeyBtZXNzYWdlOiBjb250ZW50IH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGVGcm9tQ29tcG9uZW50KGNvbnRlbnQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRnJvbVRlbXBsYXRlUmVmKGNvbnRlbnQ6IFRlbXBsYXRlUmVmPGFueT4pOiBUb29sdGlwQ29udGVudFJlZiB7XG4gICAgY29uc3Qgdmlld1JlZiA9IGNvbnRlbnQuY3JlYXRlRW1iZWRkZWRWaWV3KHt9KTtcbiAgICB0aGlzLl9hcHBsaWNhdGlvblJlZi5hdHRhY2hWaWV3KHZpZXdSZWYpO1xuICAgIHJldHVybiBuZXcgVG9vbHRpcENvbnRlbnRSZWYodmlld1JlZik7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUZyb21Db21wb25lbnQoXG4gICAgY29tcG9uZW50OiBhbnksXG4gICAgY29udGV4dD86IEx1eFRvb2x0aXBDb250ZXh0XG4gICk6IFRvb2x0aXBDb250ZW50UmVmIHtcbiAgICBjb25zdCBjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxhbnk+ID0gdGhpcy5fY3JmXG4gICAgICAucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoY29tcG9uZW50KVxuICAgICAgLmNyZWF0ZSh0aGlzLl9pbmplY3Rvcik7XG4gICAgaWYgKGNvbnRleHQpIHtcbiAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5jb250ZXh0ID0gY29udGV4dDtcbiAgICB9XG4gICAgdGhpcy5fYXBwbGljYXRpb25SZWYuYXR0YWNoVmlldyhjb21wb25lbnRSZWYuaG9zdFZpZXcpO1xuICAgIHJldHVybiBuZXcgVG9vbHRpcENvbnRlbnRSZWYoY29tcG9uZW50UmVmLmhvc3RWaWV3LCBjb21wb25lbnRSZWYpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRTdHlsZShcbiAgICBkb21FbGVtOiBIVE1MRWxlbWVudCxcbiAgICBwbGFjZW1lbnQ6IFBsYWNlbWVudFZhbHVlXG4gICk6IEhUTUxFbGVtZW50IHtcbiAgICBkb21FbGVtLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICBkb21FbGVtLnN0eWxlLm1pbldpZHRoID0gJ21pbi1jb250ZW50JztcbiAgICBkb21FbGVtLnN0eWxlLm1pbkhlaWdodCA9ICdtaW4tY29udGVudCc7XG4gICAgY29uc3QgdG9vbHRpcEVsZW1lbnQgPSB0aGlzLmdldFRvb2x0aXBFbGVtZW50RnJvbUhUTUxFbGVtbnQoZG9tRWxlbSk7XG4gICAgcGxhY2VtZW50ID1cbiAgICAgIHBsYWNlbWVudCAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gKHBsYWNlbWVudC50b0xvY2FsZUxvd2VyQ2FzZSgpIGFzIFBsYWNlbWVudFZhbHVlKVxuICAgICAgICA6ICd0b3AnOyAvLyAnVG9wJyBpcyB0aGUgZGVmYXVsdCB2YWx1ZSBvZiBwbGFjZW1lbnRcbiAgICB0b29sdGlwRWxlbWVudC5jbGFzc0xpc3QuYWRkKGBsdXgtdG9vbHRpcC0ke3BsYWNlbWVudH1gKTtcbiAgICB0b29sdGlwRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdsdXgtdG9vbHRpcC1zaG93Jyk7XG4gICAgcmV0dXJuIGRvbUVsZW07XG4gIH1cblxuICBwcml2YXRlIGdldFRvb2x0aXBFbGVtZW50RnJvbUhUTUxFbGVtbnQoZG9tRWxlbTogSFRNTEVsZW1lbnQpOiBhbnkge1xuICAgIGNvbnN0IGVsZW1lbnRzQXJyYXkgPSBBcnJheS5mcm9tKGRvbUVsZW0uY2xhc3NMaXN0KS5maWx0ZXIoXG4gICAgICAoY2xhc3NOYW1lKSA9PiBjbGFzc05hbWUgPT09ICdsdXgtdG9vbHRpcCdcbiAgICApO1xuICAgIGlmIChlbGVtZW50c0FycmF5Lmxlbmd0aCAhPT0gMCkge1xuICAgICAgcmV0dXJuIGRvbUVsZW07XG4gICAgfSBlbHNlIGlmIChkb21FbGVtLmhhc0NoaWxkTm9kZXMoKSkge1xuICAgICAgY29uc3QgY2hpbGRyZW5BcnJheSA9IEFycmF5LmZyb20oZG9tRWxlbS5jaGlsZHJlbikuZmlsdGVyKFxuICAgICAgICAoY2hpbGQpID0+XG4gICAgICAgICAgdGhpcy5nZXRUb29sdGlwRWxlbWVudEZyb21IVE1MRWxlbW50KGNoaWxkIGFzIEhUTUxFbGVtZW50KSAhPT0gbnVsbFxuICAgICAgKTtcbiAgICAgIGlmIChjaGlsZHJlbkFycmF5Lmxlbmd0aCAhPT0gMCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRUb29sdGlwRWxlbWVudEZyb21IVE1MRWxlbW50KFxuICAgICAgICAgIGNoaWxkcmVuQXJyYXlbMF0gYXMgSFRNTEVsZW1lbnRcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldFBvc2l0aW9uKFxuICAgIGRvbUVsZW06IEhUTUxFbGVtZW50LFxuICAgIGVsSG9zdDogRWxlbWVudFJlZixcbiAgICBwbGFjZW1lbnQ6IFBsYWNlbWVudFZhbHVlXG4gICk6IEhUTUxFbGVtZW50IHtcbiAgICBjb25zdCBob3N0UG9zID0gZWxIb3N0Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgdG9vbHRpcFBvcyA9IGRvbUVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3Qgc2Nyb2xsUG9zID1cbiAgICAgIHdpbmRvdy5wYWdlWU9mZnNldCB8fFxuICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCB8fFxuICAgICAgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AgfHxcbiAgICAgIDA7XG4gICAgbGV0IHRvcCA9IDA7XG4gICAgbGV0IGxlZnQgPSAwO1xuICAgIGNvbnN0IG9mZnNldCA9IDEwO1xuXG4gICAgc3dpdGNoIChwbGFjZW1lbnQpIHtcbiAgICAgIGNhc2UgUGxhY2VtZW50LkJvdHRvbTpcbiAgICAgICAgdG9wID0gaG9zdFBvcy5ib3R0b20gKyBvZmZzZXQ7XG4gICAgICAgIGxlZnQgPSBob3N0UG9zLmxlZnQgKyAoaG9zdFBvcy53aWR0aCAtIHRvb2x0aXBQb3Mud2lkdGgpIC8gMjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFBsYWNlbWVudC5MZWZ0OlxuICAgICAgICB0b3AgPSBob3N0UG9zLnRvcCArIChob3N0UG9zLmhlaWdodCAtIHRvb2x0aXBQb3MuaGVpZ2h0KSAvIDI7XG4gICAgICAgIGxlZnQgPSBob3N0UG9zLmxlZnQgLSB0b29sdGlwUG9zLndpZHRoIC0gb2Zmc2V0O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUGxhY2VtZW50LlJpZ2h0OlxuICAgICAgICB0b3AgPSBob3N0UG9zLnRvcCArIChob3N0UG9zLmhlaWdodCAtIHRvb2x0aXBQb3MuaGVpZ2h0KSAvIDI7XG4gICAgICAgIGxlZnQgPSBob3N0UG9zLnJpZ2h0ICsgb2Zmc2V0O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUGxhY2VtZW50LlRvcDpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRvcCA9IGhvc3RQb3MudG9wIC0gdG9vbHRpcFBvcy5oZWlnaHQgLSBvZmZzZXQ7XG4gICAgICAgIGxlZnQgPSBob3N0UG9zLmxlZnQgKyAoaG9zdFBvcy53aWR0aCAtIHRvb2x0aXBQb3Mud2lkdGgpIC8gMjtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHRvcCA9IE1hdGgubWF4KDAsIHRvcCk7XG4gICAgbGVmdCA9IE1hdGgubWF4KDAsIGxlZnQpO1xuICAgIGRvbUVsZW0uc3R5bGUudG9wID0gYCR7dG9wICsgc2Nyb2xsUG9zfXB4YDtcbiAgICBkb21FbGVtLnN0eWxlLmxlZnQgPSBgJHtsZWZ0fXB4YDtcbiAgICByZXR1cm4gZG9tRWxlbTtcbiAgfVxufVxuIl19
|
|
1
|
+
import { Injectable, Injector, ComponentFactoryResolver, ApplicationRef, TemplateRef } from '@angular/core';
|
|
2
|
+
import { Placement } from './placement';
|
|
3
|
+
import { TooltipComponent } from './tooltip.component';
|
|
4
|
+
import { TooltipContentRef } from './tooltop-content';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class TooltipService {
|
|
7
|
+
_injector;
|
|
8
|
+
_crf;
|
|
9
|
+
_applicationRef;
|
|
10
|
+
constructor(_injector, _crf, _applicationRef) {
|
|
11
|
+
this._injector = _injector;
|
|
12
|
+
this._crf = _crf;
|
|
13
|
+
this._applicationRef = _applicationRef;
|
|
14
|
+
}
|
|
15
|
+
appendComponentToBody(content, elHost, placement) {
|
|
16
|
+
const tooltipContentRef = this.getTooltipContentRef(content);
|
|
17
|
+
if (tooltipContentRef) {
|
|
18
|
+
let domElem = tooltipContentRef.viewRef
|
|
19
|
+
.rootNodes[0];
|
|
20
|
+
document.body.appendChild(domElem);
|
|
21
|
+
if (tooltipContentRef.componentRef) {
|
|
22
|
+
tooltipContentRef.componentRef.changeDetectorRef.detectChanges();
|
|
23
|
+
}
|
|
24
|
+
domElem = this.setStyle(domElem, placement);
|
|
25
|
+
domElem = this.setPosition(domElem, elHost, placement);
|
|
26
|
+
return tooltipContentRef;
|
|
27
|
+
}
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
removeComponentFromBody(tooltipContentRef) {
|
|
31
|
+
this._applicationRef.detachView(tooltipContentRef.viewRef);
|
|
32
|
+
if (tooltipContentRef.componentRef) {
|
|
33
|
+
tooltipContentRef.componentRef.destroy();
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
getTooltipContentRef(content) {
|
|
37
|
+
if (!content) {
|
|
38
|
+
// nothing to show
|
|
39
|
+
}
|
|
40
|
+
else if (content instanceof TemplateRef) {
|
|
41
|
+
return this.createFromTemplateRef(content);
|
|
42
|
+
}
|
|
43
|
+
else if (typeof content === 'string') {
|
|
44
|
+
return this.createFromComponent(TooltipComponent, { message: content });
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
return this.createFromComponent(content);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
createFromTemplateRef(content) {
|
|
51
|
+
const viewRef = content.createEmbeddedView({});
|
|
52
|
+
this._applicationRef.attachView(viewRef);
|
|
53
|
+
return new TooltipContentRef(viewRef);
|
|
54
|
+
}
|
|
55
|
+
createFromComponent(component, context) {
|
|
56
|
+
const componentRef = this._crf
|
|
57
|
+
.resolveComponentFactory(component)
|
|
58
|
+
.create(this._injector);
|
|
59
|
+
if (context) {
|
|
60
|
+
componentRef.instance.context = context;
|
|
61
|
+
}
|
|
62
|
+
this._applicationRef.attachView(componentRef.hostView);
|
|
63
|
+
return new TooltipContentRef(componentRef.hostView, componentRef);
|
|
64
|
+
}
|
|
65
|
+
setStyle(domElem, placement) {
|
|
66
|
+
domElem.style.position = 'absolute';
|
|
67
|
+
domElem.style.minWidth = 'min-content';
|
|
68
|
+
domElem.style.minHeight = 'min-content';
|
|
69
|
+
const tooltipElement = this.getTooltipElementFromHTMLElemnt(domElem);
|
|
70
|
+
placement =
|
|
71
|
+
placement !== undefined
|
|
72
|
+
? placement.toLocaleLowerCase()
|
|
73
|
+
: 'top'; // 'Top' is the default value of placement
|
|
74
|
+
tooltipElement.classList.add(`lux-tooltip-${placement}`);
|
|
75
|
+
tooltipElement.classList.add('lux-tooltip-show');
|
|
76
|
+
return domElem;
|
|
77
|
+
}
|
|
78
|
+
getTooltipElementFromHTMLElemnt(domElem) {
|
|
79
|
+
const elementsArray = Array.from(domElem.classList).filter((className) => className === 'lux-tooltip');
|
|
80
|
+
if (elementsArray.length !== 0) {
|
|
81
|
+
return domElem;
|
|
82
|
+
}
|
|
83
|
+
else if (domElem.hasChildNodes()) {
|
|
84
|
+
const childrenArray = Array.from(domElem.children).filter((child) => this.getTooltipElementFromHTMLElemnt(child) !== null);
|
|
85
|
+
if (childrenArray.length !== 0) {
|
|
86
|
+
return this.getTooltipElementFromHTMLElemnt(childrenArray[0]);
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
setPosition(domElem, elHost, placement) {
|
|
97
|
+
const hostPos = elHost.nativeElement.getBoundingClientRect();
|
|
98
|
+
const tooltipPos = domElem.getBoundingClientRect();
|
|
99
|
+
const scrollPos = window.pageYOffset ||
|
|
100
|
+
document.documentElement.scrollTop ||
|
|
101
|
+
document.body.scrollTop ||
|
|
102
|
+
0;
|
|
103
|
+
let top = 0;
|
|
104
|
+
let left = 0;
|
|
105
|
+
const offset = 10;
|
|
106
|
+
switch (placement) {
|
|
107
|
+
case Placement.Bottom:
|
|
108
|
+
top = hostPos.bottom + offset;
|
|
109
|
+
left = hostPos.left + (hostPos.width - tooltipPos.width) / 2;
|
|
110
|
+
break;
|
|
111
|
+
case Placement.Left:
|
|
112
|
+
top = hostPos.top + (hostPos.height - tooltipPos.height) / 2;
|
|
113
|
+
left = hostPos.left - tooltipPos.width - offset;
|
|
114
|
+
break;
|
|
115
|
+
case Placement.Right:
|
|
116
|
+
top = hostPos.top + (hostPos.height - tooltipPos.height) / 2;
|
|
117
|
+
left = hostPos.right + offset;
|
|
118
|
+
break;
|
|
119
|
+
case Placement.Top:
|
|
120
|
+
default:
|
|
121
|
+
top = hostPos.top - tooltipPos.height - offset;
|
|
122
|
+
left = hostPos.left + (hostPos.width - tooltipPos.width) / 2;
|
|
123
|
+
break;
|
|
124
|
+
}
|
|
125
|
+
top = Math.max(0, top);
|
|
126
|
+
left = Math.max(0, left);
|
|
127
|
+
domElem.style.top = `${top + scrollPos}px`;
|
|
128
|
+
domElem.style.left = `${left}px`;
|
|
129
|
+
return domElem;
|
|
130
|
+
}
|
|
131
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: TooltipService, deps: [{ token: i0.Injector }, { token: i0.ComponentFactoryResolver }, { token: i0.ApplicationRef }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
132
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: TooltipService });
|
|
133
|
+
}
|
|
134
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: TooltipService, decorators: [{
|
|
135
|
+
type: Injectable
|
|
136
|
+
}], ctorParameters: () => [{ type: i0.Injector }, { type: i0.ComponentFactoryResolver }, { type: i0.ApplicationRef }] });
|
|
137
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbHV4L3NyYy9saWIvdG9vbHRpcC90b29sdGlwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFVBQVUsRUFDVixRQUFRLEVBRVIsd0JBQXdCLEVBQ3hCLGNBQWMsRUFHZCxXQUFXLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFrQixTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBR3RELE1BQU0sT0FBTyxjQUFjO0lBRWY7SUFDQTtJQUNBO0lBSFYsWUFDVSxTQUFtQixFQUNuQixJQUE4QixFQUM5QixlQUErQjtRQUYvQixjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQ25CLFNBQUksR0FBSixJQUFJLENBQTBCO1FBQzlCLG9CQUFlLEdBQWYsZUFBZSxDQUFnQjtJQUN0QyxDQUFDO0lBRUoscUJBQXFCLENBQ25CLE9BQVksRUFDWixNQUFrQixFQUNsQixTQUF5QjtRQUV6QixNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM3RCxJQUFJLGlCQUFpQixFQUFFLENBQUM7WUFDdEIsSUFBSSxPQUFPLEdBQUksaUJBQWlCLENBQUMsT0FBZ0M7aUJBQzlELFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNoQixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNuQyxJQUFJLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUNuQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDbkUsQ0FB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VixDQUFDO1FBQ0QsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZCLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN6QixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxTQUFTLElBQUksQ0FBQztRQUMzQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDO1FBQ2pDLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7dUdBbEpVLGNBQWM7MkdBQWQsY0FBYzs7MkZBQWQsY0FBYztrQkFEMUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEluamVjdGFibGUsXG4gIEluamVjdG9yLFxuICBDb21wb25lbnRSZWYsXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgQXBwbGljYXRpb25SZWYsXG4gIEVtYmVkZGVkVmlld1JlZixcbiAgRWxlbWVudFJlZixcbiAgVGVtcGxhdGVSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFBsYWNlbWVudFZhbHVlLCBQbGFjZW1lbnQgfSBmcm9tICcuL3BsYWNlbWVudCc7XG5pbXBvcnQgeyBMdXhUb29sdGlwQ29udGV4dCB9IGZyb20gJy4vdG9vbHRpcC1jb250ZXh0JztcbmltcG9ydCB7IFRvb2x0aXBDb21wb25lbnQgfSBmcm9tICcuL3Rvb2x0aXAuY29tcG9uZW50JztcbmltcG9ydCB7IFRvb2x0aXBDb250ZW50UmVmIH0gZnJvbSAnLi90b29sdG9wLWNvbnRlbnQnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVG9vbHRpcFNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9pbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSBfY3JmOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgcHJpdmF0ZSBfYXBwbGljYXRpb25SZWY6IEFwcGxpY2F0aW9uUmVmXG4gICkge31cblxuICBhcHBlbmRDb21wb25lbnRUb0JvZHkoXG4gICAgY29udGVudDogYW55LFxuICAgIGVsSG9zdDogRWxlbWVudFJlZixcbiAgICBwbGFjZW1lbnQ6IFBsYWNlbWVudFZhbHVlXG4gICk6IFRvb2x0aXBDb250ZW50UmVmIHtcbiAgICBjb25zdCB0b29sdGlwQ29udGVudFJlZiA9IHRoaXMuZ2V0VG9vbHRpcENvbnRlbnRSZWYoY29udGVudCk7XG4gICAgaWYgKHRvb2x0aXBDb250ZW50UmVmKSB7XG4gICAgICBsZXQgZG9tRWxlbSA9ICh0b29sdGlwQ29udGVudFJlZi52aWV3UmVmIGFzIEVtYmVkZGVkVmlld1JlZjxhbnk+KVxuICAgICAgICAucm9vdE5vZGVzWzBdO1xuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb21FbGVtKTtcbiAgICAgIGlmICh0b29sdGlwQ29udGVudFJlZi5jb21wb25lbnRSZWYpIHtcbiAgICAgICAgdG9vbHRpcENvbnRlbnRSZWYuY29tcG9uZW50UmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH1cbiAgICAgIGRvbUVsZW0gPSB0aGlzLnNldFN0eWxlKGRvbUVsZW0sIHBsYWNlbWVudCk7XG4gICAgICBkb21FbGVtID0gdGhpcy5zZXRQb3NpdGlvbihkb21FbGVtLCBlbEhvc3QsIHBsYWNlbWVudCk7XG4gICAgICByZXR1cm4gdG9vbHRpcENvbnRlbnRSZWY7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmVtb3ZlQ29tcG9uZW50RnJvbUJvZHkodG9vbHRpcENvbnRlbnRSZWY6IFRvb2x0aXBDb250ZW50UmVmKTogdm9pZCB7XG4gICAgdGhpcy5fYXBwbGljYXRpb25SZWYuZGV0YWNoVmlldyh0b29sdGlwQ29udGVudFJlZi52aWV3UmVmKTtcbiAgICBpZiAodG9vbHRpcENvbnRlbnRSZWYuY29tcG9uZW50UmVmKSB7XG4gICAgICB0b29sdGlwQ29udGVudFJlZi5jb21wb25lbnRSZWYuZGVzdHJveSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0VG9vbHRpcENvbnRlbnRSZWYoY29udGVudDogYW55KTogVG9vbHRpcENvbnRlbnRSZWYge1xuICAgIGlmICghY29udGVudCkge1xuICAgICAgLy8gbm90aGluZyB0byBzaG93XG4gICAgfSBlbHNlIGlmIChjb250ZW50IGluc3RhbmNlb2YgVGVtcGxhdGVSZWYpIHtcbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUZyb21UZW1wbGF0ZVJlZihjb250ZW50KTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRnJvbUNvbXBvbmVudChUb29sdGlwQ29tcG9uZW50LCB7IG1lc3NhZ2U6IGNvbnRlbnQgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUZyb21Db21wb25lbnQoY29udGVudCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVGcm9tVGVtcGxhdGVSZWYoY29udGVudDogVGVtcGxhdGVSZWY8YW55Pik6IFRvb2x0aXBDb250ZW50UmVmIHtcbiAgICBjb25zdCB2aWV3UmVmID0gY29udGVudC5jcmVhdGVFbWJlZGRlZFZpZXcoe30pO1xuICAgIHRoaXMuX2FwcGxpY2F0aW9uUmVmLmF0dGFjaFZpZXcodmlld1JlZik7XG4gICAgcmV0dXJuIG5ldyBUb29sdGlwQ29udGVudFJlZih2aWV3UmVmKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRnJvbUNvbXBvbmVudChcbiAgICBjb21wb25lbnQ6IGFueSxcbiAgICBjb250ZXh0PzogTHV4VG9vbHRpcENvbnRleHRcbiAgKTogVG9vbHRpcENvbnRlbnRSZWYge1xuICAgIGNvbnN0IGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPGFueT4gPSB0aGlzLl9jcmZcbiAgICAgIC5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShjb21wb25lbnQpXG4gICAgICAuY3JlYXRlKHRoaXMuX2luamVjdG9yKTtcbiAgICBpZiAoY29udGV4dCkge1xuICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmNvbnRleHQgPSBjb250ZXh0O1xuICAgIH1cbiAgICB0aGlzLl9hcHBsaWNhdGlvblJlZi5hdHRhY2hWaWV3KGNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XG4gICAgcmV0dXJuIG5ldyBUb29sdGlwQ29udGVudFJlZihjb21wb25lbnRSZWYuaG9zdFZpZXcsIGNvbXBvbmVudFJlZik7XG4gIH1cblxuICBwcml2YXRlIHNldFN0eWxlKFxuICAgIGRvbUVsZW06IEhUTUxFbGVtZW50LFxuICAgIHBsYWNlbWVudDogUGxhY2VtZW50VmFsdWVcbiAgKTogSFRNTEVsZW1lbnQge1xuICAgIGRvbUVsZW0uc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICAgIGRvbUVsZW0uc3R5bGUubWluV2lkdGggPSAnbWluLWNvbnRlbnQnO1xuICAgIGRvbUVsZW0uc3R5bGUubWluSGVpZ2h0ID0gJ21pbi1jb250ZW50JztcbiAgICBjb25zdCB0b29sdGlwRWxlbWVudCA9IHRoaXMuZ2V0VG9vbHRpcEVsZW1lbnRGcm9tSFRNTEVsZW1udChkb21FbGVtKTtcbiAgICBwbGFjZW1lbnQgPVxuICAgICAgcGxhY2VtZW50ICE9PSB1bmRlZmluZWRcbiAgICAgICAgPyAocGxhY2VtZW50LnRvTG9jYWxlTG93ZXJDYXNlKCkgYXMgUGxhY2VtZW50VmFsdWUpXG4gICAgICAgIDogJ3RvcCc7IC8vICdUb3AnIGlzIHRoZSBkZWZhdWx0IHZhbHVlIG9mIHBsYWNlbWVudFxuICAgIHRvb2x0aXBFbGVtZW50LmNsYXNzTGlzdC5hZGQoYGx1eC10b29sdGlwLSR7cGxhY2VtZW50fWApO1xuICAgIHRvb2x0aXBFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2x1eC10b29sdGlwLXNob3cnKTtcbiAgICByZXR1cm4gZG9tRWxlbTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VG9vbHRpcEVsZW1lbnRGcm9tSFRNTEVsZW1udChkb21FbGVtOiBIVE1MRWxlbWVudCk6IGFueSB7XG4gICAgY29uc3QgZWxlbWVudHNBcnJheSA9IEFycmF5LmZyb20oZG9tRWxlbS5jbGFzc0xpc3QpLmZpbHRlcihcbiAgICAgIChjbGFzc05hbWUpID0+IGNsYXNzTmFtZSA9PT0gJ2x1eC10b29sdGlwJ1xuICAgICk7XG4gICAgaWYgKGVsZW1lbnRzQXJyYXkubGVuZ3RoICE9PSAwKSB7XG4gICAgICByZXR1cm4gZG9tRWxlbTtcbiAgICB9IGVsc2UgaWYgKGRvbUVsZW0uaGFzQ2hpbGROb2RlcygpKSB7XG4gICAgICBjb25zdCBjaGlsZHJlbkFycmF5ID0gQXJyYXkuZnJvbShkb21FbGVtLmNoaWxkcmVuKS5maWx0ZXIoXG4gICAgICAgIChjaGlsZCkgPT5cbiAgICAgICAgICB0aGlzLmdldFRvb2x0aXBFbGVtZW50RnJvbUhUTUxFbGVtbnQoY2hpbGQgYXMgSFRNTEVsZW1lbnQpICE9PSBudWxsXG4gICAgICApO1xuICAgICAgaWYgKGNoaWxkcmVuQXJyYXkubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFRvb2x0aXBFbGVtZW50RnJvbUhUTUxFbGVtbnQoXG4gICAgICAgICAgY2hpbGRyZW5BcnJheVswXSBhcyBIVE1MRWxlbWVudFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0UG9zaXRpb24oXG4gICAgZG9tRWxlbTogSFRNTEVsZW1lbnQsXG4gICAgZWxIb3N0OiBFbGVtZW50UmVmLFxuICAgIHBsYWNlbWVudDogUGxhY2VtZW50VmFsdWVcbiAgKTogSFRNTEVsZW1lbnQge1xuICAgIGNvbnN0IGhvc3RQb3MgPSBlbEhvc3QubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCB0b29sdGlwUG9zID0gZG9tRWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBzY3JvbGxQb3MgPVxuICAgICAgd2luZG93LnBhZ2VZT2Zmc2V0IHx8XG4gICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wIHx8XG4gICAgICBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCB8fFxuICAgICAgMDtcbiAgICBsZXQgdG9wID0gMDtcbiAgICBsZXQgbGVmdCA9IDA7XG4gICAgY29uc3Qgb2Zmc2V0ID0gMTA7XG5cbiAgICBzd2l0Y2ggKHBsYWNlbWVudCkge1xuICAgICAgY2FzZSBQbGFjZW1lbnQuQm90dG9tOlxuICAgICAgICB0b3AgPSBob3N0UG9zLmJvdHRvbSArIG9mZnNldDtcbiAgICAgICAgbGVmdCA9IGhvc3RQb3MubGVmdCArIChob3N0UG9zLndpZHRoIC0gdG9vbHRpcFBvcy53aWR0aCkgLyAyO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUGxhY2VtZW50LkxlZnQ6XG4gICAgICAgIHRvcCA9IGhvc3RQb3MudG9wICsgKGhvc3RQb3MuaGVpZ2h0IC0gdG9vbHRpcFBvcy5oZWlnaHQpIC8gMjtcbiAgICAgICAgbGVmdCA9IGhvc3RQb3MubGVmdCAtIHRvb2x0aXBQb3Mud2lkdGggLSBvZmZzZXQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBQbGFjZW1lbnQuUmlnaHQ6XG4gICAgICAgIHRvcCA9IGhvc3RQb3MudG9wICsgKGhvc3RQb3MuaGVpZ2h0IC0gdG9vbHRpcFBvcy5oZWlnaHQpIC8gMjtcbiAgICAgICAgbGVmdCA9IGhvc3RQb3MucmlnaHQgKyBvZmZzZXQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBQbGFjZW1lbnQuVG9wOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdG9wID0gaG9zdFBvcy50b3AgLSB0b29sdGlwUG9zLmhlaWdodCAtIG9mZnNldDtcbiAgICAgICAgbGVmdCA9IGhvc3RQb3MubGVmdCArIChob3N0UG9zLndpZHRoIC0gdG9vbHRpcFBvcy53aWR0aCkgLyAyO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgdG9wID0gTWF0aC5tYXgoMCwgdG9wKTtcbiAgICBsZWZ0ID0gTWF0aC5tYXgoMCwgbGVmdCk7XG4gICAgZG9tRWxlbS5zdHlsZS50b3AgPSBgJHt0b3AgKyBzY3JvbGxQb3N9cHhgO1xuICAgIGRvbUVsZW0uc3R5bGUubGVmdCA9IGAke2xlZnR9cHhgO1xuICAgIHJldHVybiBkb21FbGVtO1xuICB9XG59XG4iXX0=
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export class TooltipContentRef {
|
|
2
|
-
viewRef;
|
|
3
|
-
componentRef;
|
|
4
|
-
constructor(viewRef, componentRef) {
|
|
5
|
-
this.viewRef = viewRef;
|
|
6
|
-
this.componentRef = componentRef;
|
|
7
|
-
}
|
|
8
|
-
}
|
|
1
|
+
export class TooltipContentRef {
|
|
2
|
+
viewRef;
|
|
3
|
+
componentRef;
|
|
4
|
+
constructor(viewRef, componentRef) {
|
|
5
|
+
this.viewRef = viewRef;
|
|
6
|
+
this.componentRef = componentRef;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
9
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRvcC1jb250ZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbHV4L3NyYy9saWIvdG9vbHRpcC90b29sdG9wLWNvbnRlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLGlCQUFpQjtJQUNQO0lBQTBCO0lBQTdDLFlBQW1CLE9BQWlCLEVBQVMsWUFBZ0M7UUFBMUQsWUFBTyxHQUFQLE9BQU8sQ0FBVTtRQUFTLGlCQUFZLEdBQVosWUFBWSxDQUFvQjtJQUFHLENBQUM7Q0FDcEYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWaWV3UmVmLCBDb21wb25lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGNsYXNzIFRvb2x0aXBDb250ZW50UmVmIHtcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgdmlld1JlZj86IFZpZXdSZWYsIHB1YmxpYyBjb21wb25lbnRSZWY/OiBDb21wb25lbnRSZWY8YW55Pikge31cbn1cbiJdfQ==
|
|
@@ -1,79 +1,79 @@
|
|
|
1
|
-
import { Directive, ElementRef, Input, Renderer2 } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class VoiceRecognitionDirective {
|
|
4
|
-
el;
|
|
5
|
-
renderer;
|
|
6
|
-
language;
|
|
7
|
-
// See API at: https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition
|
|
8
|
-
recognition;
|
|
9
|
-
isRecognizing = false;
|
|
10
|
-
mic;
|
|
11
|
-
constructor(el, renderer) {
|
|
12
|
-
this.el = el;
|
|
13
|
-
this.renderer = renderer;
|
|
14
|
-
const speechRecognition = window.webkitSpeechRecognition;
|
|
15
|
-
if (speechRecognition) {
|
|
16
|
-
this.recognition = new speechRecognition();
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
ngOnInit() {
|
|
20
|
-
if (this.recognition) {
|
|
21
|
-
// API is available
|
|
22
|
-
this.recognition.lang = this.language || window.navigator.language;
|
|
23
|
-
this.recognition.interimResults = false;
|
|
24
|
-
this.recognition.maxAlternatives = 1;
|
|
25
|
-
// Add mic icon
|
|
26
|
-
this.mic = document.createElement('div');
|
|
27
|
-
this.mic.setAttribute('class', 'lux-microphone');
|
|
28
|
-
const parent = this.el.nativeElement.parentElement;
|
|
29
|
-
parent.appendChild(this.mic);
|
|
30
|
-
// Add event handlers
|
|
31
|
-
this.mic.onclick = () => this.microphoneClick();
|
|
32
|
-
this.recognition.onresult = (event) => this.onRecognized(event);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
microphoneClick() {
|
|
36
|
-
if (this.isRecognizing) {
|
|
37
|
-
// stop
|
|
38
|
-
this.isRecognizing = false;
|
|
39
|
-
this.renderer.removeClass(this.mic, 'lux-recording');
|
|
40
|
-
this.recognition.abort();
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
// start
|
|
44
|
-
this.el.nativeElement.value = getRecordingMessage(this.language);
|
|
45
|
-
this.isRecognizing = true;
|
|
46
|
-
this.renderer.addClass(this.mic, 'lux-recording');
|
|
47
|
-
this.recognition.start();
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
onRecognized(event) {
|
|
51
|
-
const recognizedText = event.results[0][0].transcript;
|
|
52
|
-
this.isRecognizing = false;
|
|
53
|
-
this.el.nativeElement.value = recognizedText;
|
|
54
|
-
this.renderer.removeClass(this.mic, 'lux-recording');
|
|
55
|
-
}
|
|
56
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
57
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
58
|
-
}
|
|
59
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
60
|
-
type: Directive,
|
|
61
|
-
args: [{
|
|
62
|
-
selector: '[luxVoiceRecognition]'
|
|
63
|
-
}]
|
|
64
|
-
}], ctorParameters:
|
|
65
|
-
type: Input
|
|
66
|
-
}] } });
|
|
67
|
-
const getRecordingMessage = (lang) => {
|
|
68
|
-
switch (lang.toLowerCase()) {
|
|
69
|
-
case 'es':
|
|
70
|
-
case 'es-es':
|
|
71
|
-
return 'Grabando...';
|
|
72
|
-
case 'en':
|
|
73
|
-
case 'en-uk':
|
|
74
|
-
case 'en-us':
|
|
75
|
-
default:
|
|
76
|
-
return 'Recording...';
|
|
77
|
-
}
|
|
78
|
-
};
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Directive, ElementRef, Input, Renderer2 } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class VoiceRecognitionDirective {
|
|
4
|
+
el;
|
|
5
|
+
renderer;
|
|
6
|
+
language;
|
|
7
|
+
// See API at: https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition
|
|
8
|
+
recognition;
|
|
9
|
+
isRecognizing = false;
|
|
10
|
+
mic;
|
|
11
|
+
constructor(el, renderer) {
|
|
12
|
+
this.el = el;
|
|
13
|
+
this.renderer = renderer;
|
|
14
|
+
const speechRecognition = window.webkitSpeechRecognition;
|
|
15
|
+
if (speechRecognition) {
|
|
16
|
+
this.recognition = new speechRecognition();
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
ngOnInit() {
|
|
20
|
+
if (this.recognition) {
|
|
21
|
+
// API is available
|
|
22
|
+
this.recognition.lang = this.language || window.navigator.language;
|
|
23
|
+
this.recognition.interimResults = false;
|
|
24
|
+
this.recognition.maxAlternatives = 1;
|
|
25
|
+
// Add mic icon
|
|
26
|
+
this.mic = document.createElement('div');
|
|
27
|
+
this.mic.setAttribute('class', 'lux-microphone');
|
|
28
|
+
const parent = this.el.nativeElement.parentElement;
|
|
29
|
+
parent.appendChild(this.mic);
|
|
30
|
+
// Add event handlers
|
|
31
|
+
this.mic.onclick = () => this.microphoneClick();
|
|
32
|
+
this.recognition.onresult = (event) => this.onRecognized(event);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
microphoneClick() {
|
|
36
|
+
if (this.isRecognizing) {
|
|
37
|
+
// stop
|
|
38
|
+
this.isRecognizing = false;
|
|
39
|
+
this.renderer.removeClass(this.mic, 'lux-recording');
|
|
40
|
+
this.recognition.abort();
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
// start
|
|
44
|
+
this.el.nativeElement.value = getRecordingMessage(this.language);
|
|
45
|
+
this.isRecognizing = true;
|
|
46
|
+
this.renderer.addClass(this.mic, 'lux-recording');
|
|
47
|
+
this.recognition.start();
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
onRecognized(event) {
|
|
51
|
+
const recognizedText = event.results[0][0].transcript;
|
|
52
|
+
this.isRecognizing = false;
|
|
53
|
+
this.el.nativeElement.value = recognizedText;
|
|
54
|
+
this.renderer.removeClass(this.mic, 'lux-recording');
|
|
55
|
+
}
|
|
56
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: VoiceRecognitionDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
|
|
57
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.2", type: VoiceRecognitionDirective, selector: "[luxVoiceRecognition]", inputs: { language: "language" }, ngImport: i0 });
|
|
58
|
+
}
|
|
59
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: VoiceRecognitionDirective, decorators: [{
|
|
60
|
+
type: Directive,
|
|
61
|
+
args: [{
|
|
62
|
+
selector: '[luxVoiceRecognition]'
|
|
63
|
+
}]
|
|
64
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { language: [{
|
|
65
|
+
type: Input
|
|
66
|
+
}] } });
|
|
67
|
+
const getRecordingMessage = (lang) => {
|
|
68
|
+
switch (lang.toLowerCase()) {
|
|
69
|
+
case 'es':
|
|
70
|
+
case 'es-es':
|
|
71
|
+
return 'Grabando...';
|
|
72
|
+
case 'en':
|
|
73
|
+
case 'en-uk':
|
|
74
|
+
case 'en-us':
|
|
75
|
+
default:
|
|
76
|
+
return 'Recording...';
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9pY2UtcmVjb2duaXRpb24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbHV4L3NyYy9saWIvdm9pY2UtcmVjb2duaXRpb24vdm9pY2UtcmVjb2duaXRpb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBS2hGLE1BQU0sT0FBTyx5QkFBeUI7SUFPaEI7SUFBd0I7SUFObkMsUUFBUSxDQUFTO0lBQzFCLGlGQUFpRjtJQUN6RSxXQUFXLENBQU07SUFDakIsYUFBYSxHQUFHLEtBQUssQ0FBQztJQUN0QixHQUFHLENBQU07SUFFakIsWUFBb0IsRUFBYyxFQUFVLFFBQW1CO1FBQTNDLE9BQUUsR0FBRixFQUFFLENBQVk7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQzdELE1BQU0saUJBQWlCLEdBQUksTUFBYyxDQUFDLHVCQUF1QixDQUFDO1FBQ2xFLElBQUksaUJBQWlCLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksaUJBQWlCLEVBQUUsQ0FBQztRQUM3QyxDQUFDO0lBQ0gsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixtQkFBbUI7WUFDbkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQztZQUNuRSxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7WUFDeEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDO1lBRXJDLGVBQWU7WUFDZixJQUFJLENBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLGdCQUFnQixDQUFDLENBQUM7WUFFakQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDO1lBQ25ELE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRTdCLHFCQUFxQjtZQUNyQixJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sR0FBRyxHQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDdEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxLQUFLLEVBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEUsQ0FBQztJQUNILENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkIsT0FBTztZQUNQLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1lBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsZUFBZSxDQUFDLENBQUM7WUFDckQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMzQixDQUFDO2FBQU0sQ0FBQztZQUNOLFFBQVE7WUFDUixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2pFLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1lBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsZUFBZSxDQUFDLENBQUM7WUFDbEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMzQixDQUFDO0lBQ0gsQ0FBQztJQUNELFlBQVksQ0FBQyxLQUFVO1FBQ3JCLE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO1FBQ3RELElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBQzNCLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxjQUFjLENBQUM7UUFDN0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxlQUFlLENBQUMsQ0FBQztJQUN2RCxDQUFDO3VHQXJEVSx5QkFBeUI7MkZBQXpCLHlCQUF5Qjs7MkZBQXpCLHlCQUF5QjtrQkFIckMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsdUJBQXVCO2lCQUNsQzt1R0FFVSxRQUFRO3NCQUFoQixLQUFLOztBQXVEUixNQUFNLG1CQUFtQixHQUFHLENBQUMsSUFBWSxFQUFVLEVBQUU7SUFDbkQsUUFBUSxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztRQUMzQixLQUFLLElBQUksQ0FBQztRQUNWLEtBQUssT0FBTztZQUNWLE9BQU8sYUFBYSxDQUFDO1FBQ3ZCLEtBQUssSUFBSSxDQUFDO1FBQ1YsS0FBSyxPQUFPLENBQUM7UUFDYixLQUFLLE9BQU8sQ0FBQztRQUNiO1lBQ0UsT0FBTyxjQUFjLENBQUM7SUFDMUIsQ0FBQztBQUNILENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5wdXQsIE9uSW5pdCwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tsdXhWb2ljZVJlY29nbml0aW9uXSdcbn0pXG5leHBvcnQgY2xhc3MgVm9pY2VSZWNvZ25pdGlvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGxhbmd1YWdlOiBzdHJpbmc7XG4gIC8vIFNlZSBBUEkgYXQ6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9TcGVlY2hSZWNvZ25pdGlvblxuICBwcml2YXRlIHJlY29nbml0aW9uOiBhbnk7XG4gIHByaXZhdGUgaXNSZWNvZ25pemluZyA9IGZhbHNlO1xuICBwcml2YXRlIG1pYzogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMikge1xuICAgIGNvbnN0IHNwZWVjaFJlY29nbml0aW9uID0gKHdpbmRvdyBhcyBhbnkpLndlYmtpdFNwZWVjaFJlY29nbml0aW9uO1xuICAgIGlmIChzcGVlY2hSZWNvZ25pdGlvbikge1xuICAgICAgdGhpcy5yZWNvZ25pdGlvbiA9IG5ldyBzcGVlY2hSZWNvZ25pdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlY29nbml0aW9uKSB7XG4gICAgICAvLyBBUEkgaXMgYXZhaWxhYmxlXG4gICAgICB0aGlzLnJlY29nbml0aW9uLmxhbmcgPSB0aGlzLmxhbmd1YWdlIHx8IHdpbmRvdy5uYXZpZ2F0b3IubGFuZ3VhZ2U7XG4gICAgICB0aGlzLnJlY29nbml0aW9uLmludGVyaW1SZXN1bHRzID0gZmFsc2U7XG4gICAgICB0aGlzLnJlY29nbml0aW9uLm1heEFsdGVybmF0aXZlcyA9IDE7XG5cbiAgICAgIC8vIEFkZCBtaWMgaWNvblxuICAgICAgdGhpcy5taWMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgIHRoaXMubWljLnNldEF0dHJpYnV0ZSgnY2xhc3MnLCAnbHV4LW1pY3JvcGhvbmUnKTtcblxuICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQ7XG4gICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQodGhpcy5taWMpO1xuXG4gICAgICAvLyBBZGQgZXZlbnQgaGFuZGxlcnNcbiAgICAgIHRoaXMubWljLm9uY2xpY2sgPSAoKTogdm9pZCA9PiB0aGlzLm1pY3JvcGhvbmVDbGljaygpO1xuICAgICAgdGhpcy5yZWNvZ25pdGlvbi5vbnJlc3VsdCA9IChldmVudCk6IHZvaWQgPT4gdGhpcy5vblJlY29nbml6ZWQoZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIG1pY3JvcGhvbmVDbGljaygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc1JlY29nbml6aW5nKSB7XG4gICAgICAvLyBzdG9wXG4gICAgICB0aGlzLmlzUmVjb2duaXppbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5taWMsICdsdXgtcmVjb3JkaW5nJyk7XG4gICAgICB0aGlzLnJlY29nbml0aW9uLmFib3J0KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHN0YXJ0XG4gICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBnZXRSZWNvcmRpbmdNZXNzYWdlKHRoaXMubGFuZ3VhZ2UpO1xuICAgICAgdGhpcy5pc1JlY29nbml6aW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5taWMsICdsdXgtcmVjb3JkaW5nJyk7XG4gICAgICB0aGlzLnJlY29nbml0aW9uLnN0YXJ0KCk7XG4gICAgfVxuICB9XG4gIG9uUmVjb2duaXplZChldmVudDogYW55KTogdm9pZCB7XG4gICAgY29uc3QgcmVjb2duaXplZFRleHQgPSBldmVudC5yZXN1bHRzWzBdWzBdLnRyYW5zY3JpcHQ7XG4gICAgdGhpcy5pc1JlY29nbml6aW5nID0gZmFsc2U7XG4gICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnZhbHVlID0gcmVjb2duaXplZFRleHQ7XG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLm1pYywgJ2x1eC1yZWNvcmRpbmcnKTtcbiAgfVxufVxuXG5jb25zdCBnZXRSZWNvcmRpbmdNZXNzYWdlID0gKGxhbmc6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHN3aXRjaCAobGFuZy50b0xvd2VyQ2FzZSgpKSB7XG4gICAgY2FzZSAnZXMnOlxuICAgIGNhc2UgJ2VzLWVzJzpcbiAgICAgIHJldHVybiAnR3JhYmFuZG8uLi4nO1xuICAgIGNhc2UgJ2VuJzpcbiAgICBjYXNlICdlbi11ayc6XG4gICAgY2FzZSAnZW4tdXMnOlxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gJ1JlY29yZGluZy4uLic7XG4gIH1cbn07XG4iXX0=
|