cps-ui-kit 0.27.0 → 0.28.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/README.md +1 -0
- package/esm2020/lib/directives/cps-tooltip.directive.mjs +201 -0
- package/esm2020/public-api.mjs +2 -1
- package/fesm2015/cps-ui-kit.mjs +201 -1
- package/fesm2015/cps-ui-kit.mjs.map +1 -1
- package/fesm2020/cps-ui-kit.mjs +199 -1
- package/fesm2020/cps-ui-kit.mjs.map +1 -1
- package/lib/directives/cps-tooltip.directive.d.ts +35 -0
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
- package/styles/cps-tooltip-style.scss +13 -0
- package/styles/styles.scss +2 -1
- /package/styles/{_variables.scss → variables.scss} +0 -0
package/README.md
CHANGED
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
import { Directive, HostListener, Input } from '@angular/core';
|
|
2
|
+
import { convertSize } from '../utils/size-utils';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class CpsTooltipDirective {
|
|
5
|
+
// eslint-disable-next-line no-useless-constructor
|
|
6
|
+
constructor(_elementRef) {
|
|
7
|
+
this._elementRef = _elementRef;
|
|
8
|
+
this.tooltipOpenDelay = 300;
|
|
9
|
+
this.tooltipCloseDelay = 300;
|
|
10
|
+
this.tooltipOpenOn = 'hover';
|
|
11
|
+
this.tooltipPosition = 'top';
|
|
12
|
+
this.tooltipPersistent = false;
|
|
13
|
+
this.tooltipDisabled = false;
|
|
14
|
+
this.tooltipMaxWidth = '100%';
|
|
15
|
+
this.tooltipContentClass = 'cps-tooltip-content';
|
|
16
|
+
this._createTooltip = () => {
|
|
17
|
+
if (this._popup)
|
|
18
|
+
this._destroyTooltip();
|
|
19
|
+
if (this.tooltipDisabled)
|
|
20
|
+
return;
|
|
21
|
+
this._popup = document.createElement('div');
|
|
22
|
+
this._constructElement(this._popup);
|
|
23
|
+
if (this.tooltipPersistent)
|
|
24
|
+
this._popup.addEventListener('click', this._destroyTooltip);
|
|
25
|
+
window.addEventListener('scroll', this._destroyTooltip, true);
|
|
26
|
+
};
|
|
27
|
+
this._destroyTooltip = () => {
|
|
28
|
+
window.removeEventListener('scroll', this._destroyTooltip, true);
|
|
29
|
+
this._popup?.removeEventListener('click', this._destroyTooltip);
|
|
30
|
+
this._popup?.remove();
|
|
31
|
+
this._popup = undefined;
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
ngOnDestroy() {
|
|
35
|
+
this._destroyTooltip();
|
|
36
|
+
}
|
|
37
|
+
_constructElement(popup) {
|
|
38
|
+
const popupContent = document.createElement('div');
|
|
39
|
+
popupContent.innerHTML = this.tooltip || 'Add your text to this tooltip';
|
|
40
|
+
popupContent.classList.add(this.tooltipContentClass);
|
|
41
|
+
popup.appendChild(popupContent);
|
|
42
|
+
popup.classList.add('cps-tooltip');
|
|
43
|
+
popup.style.maxWidth = convertSize(this.tooltipMaxWidth);
|
|
44
|
+
document.body.appendChild(popup);
|
|
45
|
+
const coords = this._getCoords();
|
|
46
|
+
if (!coords) {
|
|
47
|
+
this._destroyTooltip();
|
|
48
|
+
throw new Error('Not enough space on the screen for the tooltip!');
|
|
49
|
+
}
|
|
50
|
+
popup.style.left = coords.left.toString() + 'px';
|
|
51
|
+
popup.style.top = coords.top.toString() + 'px';
|
|
52
|
+
}
|
|
53
|
+
_getCoords() {
|
|
54
|
+
function isInsideScreen(coords) {
|
|
55
|
+
return (coords.top >= 0 &&
|
|
56
|
+
coords.left >= 0 &&
|
|
57
|
+
coords.left + popupRect.width <= window.innerWidth &&
|
|
58
|
+
coords.top + popupRect.height <= window.innerHeight);
|
|
59
|
+
}
|
|
60
|
+
let positions = ['top', 'bottom', 'left', 'right'];
|
|
61
|
+
positions = positions.filter((item) => item !== this.tooltipPosition);
|
|
62
|
+
positions.unshift(this.tooltipPosition);
|
|
63
|
+
const targetEl = this._elementRef.nativeElement;
|
|
64
|
+
const targetElRect = targetEl.getBoundingClientRect();
|
|
65
|
+
const popupRect = this._popup.getBoundingClientRect();
|
|
66
|
+
for (const pos of positions) {
|
|
67
|
+
const coords = this._getCoordsForPosition(pos, targetEl, targetElRect, popupRect);
|
|
68
|
+
if (isInsideScreen(coords)) {
|
|
69
|
+
return coords;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return undefined;
|
|
73
|
+
}
|
|
74
|
+
_getCoordsForPosition(position, targetEl, targetElRect, popupRect) {
|
|
75
|
+
switch (position) {
|
|
76
|
+
case 'bottom':
|
|
77
|
+
return {
|
|
78
|
+
left: targetElRect.left +
|
|
79
|
+
window.scrollX +
|
|
80
|
+
(targetEl.offsetWidth - popupRect.width) / 2,
|
|
81
|
+
top: targetElRect.bottom + window.scrollY + 8
|
|
82
|
+
};
|
|
83
|
+
case 'left':
|
|
84
|
+
return {
|
|
85
|
+
left: targetElRect.left - window.scrollX - popupRect.width - 8,
|
|
86
|
+
top: targetElRect.top +
|
|
87
|
+
window.scrollY +
|
|
88
|
+
(targetEl.offsetHeight - popupRect.height) / 2
|
|
89
|
+
};
|
|
90
|
+
case 'right':
|
|
91
|
+
return {
|
|
92
|
+
left: targetElRect.right + window.scrollX + 8,
|
|
93
|
+
top: targetElRect.top +
|
|
94
|
+
window.scrollY +
|
|
95
|
+
(targetEl.offsetHeight - popupRect.height) / 2
|
|
96
|
+
};
|
|
97
|
+
default:
|
|
98
|
+
return {
|
|
99
|
+
left: targetElRect.left +
|
|
100
|
+
window.scrollX +
|
|
101
|
+
(targetEl.offsetWidth - popupRect.width) / 2,
|
|
102
|
+
top: targetElRect.top + window.scrollY - popupRect.height - 8
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
onMouseEnter() {
|
|
107
|
+
if (this.tooltipOpenOn === 'hover') {
|
|
108
|
+
clearTimeout(this._hideTimeout);
|
|
109
|
+
this._showTimeout = setTimeout(this._createTooltip, this.tooltipOpenDelay);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
onMouseLeave() {
|
|
113
|
+
clearTimeout(this._showTimeout);
|
|
114
|
+
if (!this.tooltipPersistent) {
|
|
115
|
+
this._hideTimeout = setTimeout(this._destroyTooltip, this.tooltipCloseDelay);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
onFocus() {
|
|
119
|
+
if (this.tooltipOpenOn === 'focus') {
|
|
120
|
+
clearTimeout(this._hideTimeout);
|
|
121
|
+
this._showTimeout = setTimeout(this._createTooltip, this.tooltipOpenDelay);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
onBlur() {
|
|
125
|
+
clearTimeout(this._showTimeout);
|
|
126
|
+
if (!this.tooltipPersistent && this.tooltipOpenOn === 'focus') {
|
|
127
|
+
this._hideTimeout = setTimeout(this._destroyTooltip, this.tooltipCloseDelay);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
onClick() {
|
|
131
|
+
if (this.tooltipOpenOn === 'click') {
|
|
132
|
+
clearTimeout(this._hideTimeout);
|
|
133
|
+
this._showTimeout = setTimeout(this._createTooltip, 0);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
onPageResize() {
|
|
137
|
+
if (this._popup)
|
|
138
|
+
this._destroyTooltip();
|
|
139
|
+
}
|
|
140
|
+
onDocumentClick(target) {
|
|
141
|
+
if (this.tooltipPersistent && this._popup) {
|
|
142
|
+
if (!target?.isConnected) {
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
const clickedInside = this._elementRef?.nativeElement?.contains(target);
|
|
146
|
+
if (!clickedInside) {
|
|
147
|
+
this._destroyTooltip();
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
CpsTooltipDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CpsTooltipDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
153
|
+
CpsTooltipDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: CpsTooltipDirective, isStandalone: true, selector: "[cpsTooltip]", inputs: { tooltip: ["cpsTooltip", "tooltip"], tooltipOpenDelay: "tooltipOpenDelay", tooltipCloseDelay: "tooltipCloseDelay", tooltipOpenOn: "tooltipOpenOn", tooltipPosition: "tooltipPosition", tooltipPersistent: "tooltipPersistent", tooltipDisabled: "tooltipDisabled", tooltipMaxWidth: "tooltipMaxWidth", tooltipContentClass: "tooltipContentClass" }, host: { listeners: { "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()", "focus": "onFocus()", "blur": "onBlur()", "click": "onClick()", "window:resize": "onPageResize()", "document:click": "onDocumentClick($event.target)" } }, ngImport: i0 });
|
|
154
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CpsTooltipDirective, decorators: [{
|
|
155
|
+
type: Directive,
|
|
156
|
+
args: [{
|
|
157
|
+
selector: '[cpsTooltip]',
|
|
158
|
+
standalone: true
|
|
159
|
+
}]
|
|
160
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { tooltip: [{
|
|
161
|
+
type: Input,
|
|
162
|
+
args: ['cpsTooltip']
|
|
163
|
+
}], tooltipOpenDelay: [{
|
|
164
|
+
type: Input
|
|
165
|
+
}], tooltipCloseDelay: [{
|
|
166
|
+
type: Input
|
|
167
|
+
}], tooltipOpenOn: [{
|
|
168
|
+
type: Input
|
|
169
|
+
}], tooltipPosition: [{
|
|
170
|
+
type: Input
|
|
171
|
+
}], tooltipPersistent: [{
|
|
172
|
+
type: Input
|
|
173
|
+
}], tooltipDisabled: [{
|
|
174
|
+
type: Input
|
|
175
|
+
}], tooltipMaxWidth: [{
|
|
176
|
+
type: Input
|
|
177
|
+
}], tooltipContentClass: [{
|
|
178
|
+
type: Input
|
|
179
|
+
}], onMouseEnter: [{
|
|
180
|
+
type: HostListener,
|
|
181
|
+
args: ['mouseenter']
|
|
182
|
+
}], onMouseLeave: [{
|
|
183
|
+
type: HostListener,
|
|
184
|
+
args: ['mouseleave']
|
|
185
|
+
}], onFocus: [{
|
|
186
|
+
type: HostListener,
|
|
187
|
+
args: ['focus']
|
|
188
|
+
}], onBlur: [{
|
|
189
|
+
type: HostListener,
|
|
190
|
+
args: ['blur']
|
|
191
|
+
}], onClick: [{
|
|
192
|
+
type: HostListener,
|
|
193
|
+
args: ['click']
|
|
194
|
+
}], onPageResize: [{
|
|
195
|
+
type: HostListener,
|
|
196
|
+
args: ['window:resize']
|
|
197
|
+
}], onDocumentClick: [{
|
|
198
|
+
type: HostListener,
|
|
199
|
+
args: ['document:click', ['$event.target']]
|
|
200
|
+
}] } });
|
|
201
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BzLXRvb2x0aXAuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL2RpcmVjdGl2ZXMvY3BzLXRvb2x0aXAuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFFTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBU2xELE1BQU0sT0FBTyxtQkFBbUI7SUFnQjlCLGtEQUFrRDtJQUNsRCxZQUFvQixXQUFvQztRQUFwQyxnQkFBVyxHQUFYLFdBQVcsQ0FBeUI7UUFkL0MscUJBQWdCLEdBQW9CLEdBQUcsQ0FBQztRQUN4QyxzQkFBaUIsR0FBb0IsR0FBRyxDQUFDO1FBQ3pDLGtCQUFhLEdBQWtCLE9BQU8sQ0FBQztRQUN2QyxvQkFBZSxHQUFvQixLQUFLLENBQUM7UUFDekMsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQzFCLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLG9CQUFlLEdBQW9CLE1BQU0sQ0FBQztRQUMxQyx3QkFBbUIsR0FBRyxxQkFBcUIsQ0FBQztRQWE3QyxtQkFBYyxHQUFHLEdBQUcsRUFBRTtZQUM1QixJQUFJLElBQUksQ0FBQyxNQUFNO2dCQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUV4QyxJQUFJLElBQUksQ0FBQyxlQUFlO2dCQUFFLE9BQU87WUFFakMsSUFBSSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFcEMsSUFBSSxJQUFJLENBQUMsaUJBQWlCO2dCQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7WUFFOUQsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2hFLENBQUMsQ0FBQztRQUVNLG9CQUFlLEdBQUcsR0FBRyxFQUFFO1lBQzdCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNqRSxJQUFJLENBQUMsTUFBTSxFQUFFLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDaEUsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQztRQUMxQixDQUFDLENBQUM7SUF6QnlELENBQUM7SUFFNUQsV0FBVztRQUNULElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBdUJPLGlCQUFpQixDQUFDLEtBQXFCO1FBQzdDLE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkQsWUFBWSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLCtCQUErQixDQUFDO1FBQ3pFLFlBQVksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3JELEtBQUssQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFaEMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDbkMsS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUV6RCxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVqQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNYLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLGlEQUFpRCxDQUFDLENBQUM7U0FDcEU7UUFFRCxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQztRQUNqRCxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQztJQUNqRCxDQUFDO0lBRU8sVUFBVTtRQUNoQixTQUFTLGNBQWMsQ0FBQyxNQUFxQztZQUMzRCxPQUFPLENBQ0wsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDO2dCQUNmLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQztnQkFDaEIsTUFBTSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxVQUFVO2dCQUNsRCxNQUFNLENBQUMsR0FBRyxHQUFHLFNBQVMsQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLFdBQVcsQ0FDcEQsQ0FBQztRQUNKLENBQUM7UUFFRCxJQUFJLFNBQVMsR0FBRyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBc0IsQ0FBQztRQUN4RSxTQUFTLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN0RSxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUV4QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQztRQUNoRCxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUN0RCxNQUFNLFNBQVMsR0FBSSxJQUFJLENBQUMsTUFBeUIsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBRTFFLEtBQUssTUFBTSxHQUFHLElBQUksU0FBUyxFQUFFO1lBQzNCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FDdkMsR0FBc0IsRUFDdEIsUUFBUSxFQUNSLFlBQVksRUFDWixTQUFTLENBQ1YsQ0FBQztZQUVGLElBQUksY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUMxQixPQUFPLE1BQU0sQ0FBQzthQUNmO1NBQ0Y7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRU8scUJBQXFCLENBQzNCLFFBQXlCLEVBQ3pCLFFBQXFCLEVBQ3JCLFlBQXFCLEVBQ3JCLFNBQWtCO1FBS2xCLFFBQVEsUUFBUSxFQUFFO1lBQ2hCLEtBQUssUUFBUTtnQkFDWCxPQUFPO29CQUNMLElBQUksRUFDRixZQUFZLENBQUMsSUFBSTt3QkFDakIsTUFBTSxDQUFDLE9BQU87d0JBQ2QsQ0FBQyxRQUFRLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO29CQUM5QyxHQUFHLEVBQUUsWUFBWSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxHQUFHLENBQUM7aUJBQzlDLENBQUM7WUFDSixLQUFLLE1BQU07Z0JBQ1QsT0FBTztvQkFDTCxJQUFJLEVBQUUsWUFBWSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQyxLQUFLLEdBQUcsQ0FBQztvQkFDOUQsR0FBRyxFQUNELFlBQVksQ0FBQyxHQUFHO3dCQUNoQixNQUFNLENBQUMsT0FBTzt3QkFDZCxDQUFDLFFBQVEsQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7aUJBQ2pELENBQUM7WUFDSixLQUFLLE9BQU87Z0JBQ1YsT0FBTztvQkFDTCxJQUFJLEVBQUUsWUFBWSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsT0FBTyxHQUFHLENBQUM7b0JBQzdDLEdBQUcsRUFDRCxZQUFZLENBQUMsR0FBRzt3QkFDaEIsTUFBTSxDQUFDLE9BQU87d0JBQ2QsQ0FBQyxRQUFRLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO2lCQUNqRCxDQUFDO1lBQ0o7Z0JBQ0UsT0FBTztvQkFDTCxJQUFJLEVBQ0YsWUFBWSxDQUFDLElBQUk7d0JBQ2pCLE1BQU0sQ0FBQyxPQUFPO3dCQUNkLENBQUMsUUFBUSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztvQkFDOUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUM7aUJBQzlELENBQUM7U0FDTDtJQUNILENBQUM7SUFFMkIsWUFBWTtRQUN0QyxJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssT0FBTyxFQUFFO1lBQ2xDLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7WUFFaEMsSUFBSSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQzVCLElBQUksQ0FBQyxjQUFjLEVBQ25CLElBQUksQ0FBQyxnQkFBMEIsQ0FDaEMsQ0FBQztTQUNIO0lBQ0gsQ0FBQztJQUUyQixZQUFZO1FBQ3RDLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMzQixJQUFJLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FDNUIsSUFBSSxDQUFDLGVBQWUsRUFDcEIsSUFBSSxDQUFDLGlCQUEyQixDQUNqQyxDQUFDO1NBQ0g7SUFDSCxDQUFDO0lBRXNCLE9BQU87UUFDNUIsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLE9BQU8sRUFBRTtZQUNsQyxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBRWhDLElBQUksQ0FBQyxZQUFZLEdBQUcsVUFBVSxDQUM1QixJQUFJLENBQUMsY0FBYyxFQUNuQixJQUFJLENBQUMsZ0JBQTBCLENBQ2hDLENBQUM7U0FDSDtJQUNILENBQUM7SUFFcUIsTUFBTTtRQUMxQixZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxPQUFPLEVBQUU7WUFDN0QsSUFBSSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQzVCLElBQUksQ0FBQyxlQUFlLEVBQ3BCLElBQUksQ0FBQyxpQkFBMkIsQ0FDakMsQ0FBQztTQUNIO0lBQ0gsQ0FBQztJQUVzQixPQUFPO1FBQzVCLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxPQUFPLEVBQUU7WUFDbEMsWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUVoQyxJQUFJLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ3hEO0lBQ0gsQ0FBQztJQUU4QixZQUFZO1FBQ3pDLElBQUksSUFBSSxDQUFDLE1BQU07WUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUdNLGVBQWUsQ0FBQyxNQUFXO1FBQ2hDLElBQUksSUFBSSxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDekMsSUFBSSxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUU7Z0JBQ3hCLE9BQU87YUFDUjtZQUNELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsYUFBYSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN4RSxJQUFJLENBQUMsYUFBYSxFQUFFO2dCQUNsQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7YUFDeEI7U0FDRjtJQUNILENBQUM7O2dIQWxOVSxtQkFBbUI7b0dBQW5CLG1CQUFtQjsyRkFBbkIsbUJBQW1CO2tCQUovQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxjQUFjO29CQUN4QixVQUFVLEVBQUUsSUFBSTtpQkFDakI7aUdBRXNCLE9BQU87c0JBQTNCLEtBQUs7dUJBQUMsWUFBWTtnQkFFVixnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFzSXNCLFlBQVk7c0JBQXZDLFlBQVk7dUJBQUMsWUFBWTtnQkFXRSxZQUFZO3NCQUF2QyxZQUFZO3VCQUFDLFlBQVk7Z0JBV0gsT0FBTztzQkFBN0IsWUFBWTt1QkFBQyxPQUFPO2dCQVdDLE1BQU07c0JBQTNCLFlBQVk7dUJBQUMsTUFBTTtnQkFVRyxPQUFPO3NCQUE3QixZQUFZO3VCQUFDLE9BQU87Z0JBUVUsWUFBWTtzQkFBMUMsWUFBWTt1QkFBQyxlQUFlO2dCQUt0QixlQUFlO3NCQURyQixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3lcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjb252ZXJ0U2l6ZSB9IGZyb20gJy4uL3V0aWxzL3NpemUtdXRpbHMnO1xuXG5leHBvcnQgdHlwZSBUb29sdGlwUG9zaXRpb24gPSAndG9wJyB8ICdib3R0b20nIHwgJ2xlZnQnIHwgJ3JpZ2h0JztcbmV4cG9ydCB0eXBlIFRvb2x0aXBPcGVuT24gPSAnaG92ZXInIHwgJ2NsaWNrJyB8ICdmb2N1cyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tjcHNUb29sdGlwXScsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgQ3BzVG9vbHRpcERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgnY3BzVG9vbHRpcCcpIHRvb2x0aXAhOiBzdHJpbmc7XG5cbiAgQElucHV0KCkgdG9vbHRpcE9wZW5EZWxheTogc3RyaW5nIHwgbnVtYmVyID0gMzAwO1xuICBASW5wdXQoKSB0b29sdGlwQ2xvc2VEZWxheTogc3RyaW5nIHwgbnVtYmVyID0gMzAwO1xuICBASW5wdXQoKSB0b29sdGlwT3Blbk9uOiBUb29sdGlwT3Blbk9uID0gJ2hvdmVyJztcbiAgQElucHV0KCkgdG9vbHRpcFBvc2l0aW9uOiBUb29sdGlwUG9zaXRpb24gPSAndG9wJztcbiAgQElucHV0KCkgdG9vbHRpcFBlcnNpc3RlbnQgPSBmYWxzZTtcbiAgQElucHV0KCkgdG9vbHRpcERpc2FibGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIHRvb2x0aXBNYXhXaWR0aDogbnVtYmVyIHwgc3RyaW5nID0gJzEwMCUnO1xuICBASW5wdXQoKSB0b29sdGlwQ29udGVudENsYXNzID0gJ2Nwcy10b29sdGlwLWNvbnRlbnQnO1xuXG4gIHByaXZhdGUgX3BvcHVwPzogSFRNTERpdkVsZW1lbnQ7XG4gIHByaXZhdGUgX3Nob3dUaW1lb3V0PzogYW55O1xuICBwcml2YXRlIF9oaWRlVGltZW91dD86IGFueTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlbGVzcy1jb25zdHJ1Y3RvclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge31cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kZXN0cm95VG9vbHRpcCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY3JlYXRlVG9vbHRpcCA9ICgpID0+IHtcbiAgICBpZiAodGhpcy5fcG9wdXApIHRoaXMuX2Rlc3Ryb3lUb29sdGlwKCk7XG5cbiAgICBpZiAodGhpcy50b29sdGlwRGlzYWJsZWQpIHJldHVybjtcblxuICAgIHRoaXMuX3BvcHVwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgdGhpcy5fY29uc3RydWN0RWxlbWVudCh0aGlzLl9wb3B1cCk7XG5cbiAgICBpZiAodGhpcy50b29sdGlwUGVyc2lzdGVudClcbiAgICAgIHRoaXMuX3BvcHVwLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5fZGVzdHJveVRvb2x0aXApO1xuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMuX2Rlc3Ryb3lUb29sdGlwLCB0cnVlKTtcbiAgfTtcblxuICBwcml2YXRlIF9kZXN0cm95VG9vbHRpcCA9ICgpID0+IHtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5fZGVzdHJveVRvb2x0aXAsIHRydWUpO1xuICAgIHRoaXMuX3BvcHVwPy5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuX2Rlc3Ryb3lUb29sdGlwKTtcbiAgICB0aGlzLl9wb3B1cD8ucmVtb3ZlKCk7XG4gICAgdGhpcy5fcG9wdXAgPSB1bmRlZmluZWQ7XG4gIH07XG5cbiAgcHJpdmF0ZSBfY29uc3RydWN0RWxlbWVudChwb3B1cDogSFRNTERpdkVsZW1lbnQpIHtcbiAgICBjb25zdCBwb3B1cENvbnRlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBwb3B1cENvbnRlbnQuaW5uZXJIVE1MID0gdGhpcy50b29sdGlwIHx8ICdBZGQgeW91ciB0ZXh0IHRvIHRoaXMgdG9vbHRpcCc7XG4gICAgcG9wdXBDb250ZW50LmNsYXNzTGlzdC5hZGQodGhpcy50b29sdGlwQ29udGVudENsYXNzKTtcbiAgICBwb3B1cC5hcHBlbmRDaGlsZChwb3B1cENvbnRlbnQpO1xuXG4gICAgcG9wdXAuY2xhc3NMaXN0LmFkZCgnY3BzLXRvb2x0aXAnKTtcbiAgICBwb3B1cC5zdHlsZS5tYXhXaWR0aCA9IGNvbnZlcnRTaXplKHRoaXMudG9vbHRpcE1heFdpZHRoKTtcblxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocG9wdXApO1xuXG4gICAgY29uc3QgY29vcmRzID0gdGhpcy5fZ2V0Q29vcmRzKCk7XG4gICAgaWYgKCFjb29yZHMpIHtcbiAgICAgIHRoaXMuX2Rlc3Ryb3lUb29sdGlwKCk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBlbm91Z2ggc3BhY2Ugb24gdGhlIHNjcmVlbiBmb3IgdGhlIHRvb2x0aXAhJyk7XG4gICAgfVxuXG4gICAgcG9wdXAuc3R5bGUubGVmdCA9IGNvb3Jkcy5sZWZ0LnRvU3RyaW5nKCkgKyAncHgnO1xuICAgIHBvcHVwLnN0eWxlLnRvcCA9IGNvb3Jkcy50b3AudG9TdHJpbmcoKSArICdweCc7XG4gIH1cblxuICBwcml2YXRlIF9nZXRDb29yZHMoKTogeyBsZWZ0OiBudW1iZXI7IHRvcDogbnVtYmVyIH0gfCB1bmRlZmluZWQge1xuICAgIGZ1bmN0aW9uIGlzSW5zaWRlU2NyZWVuKGNvb3JkczogeyBsZWZ0OiBudW1iZXI7IHRvcDogbnVtYmVyIH0pOiBib29sZWFuIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIGNvb3Jkcy50b3AgPj0gMCAmJlxuICAgICAgICBjb29yZHMubGVmdCA+PSAwICYmXG4gICAgICAgIGNvb3Jkcy5sZWZ0ICsgcG9wdXBSZWN0LndpZHRoIDw9IHdpbmRvdy5pbm5lcldpZHRoICYmXG4gICAgICAgIGNvb3Jkcy50b3AgKyBwb3B1cFJlY3QuaGVpZ2h0IDw9IHdpbmRvdy5pbm5lckhlaWdodFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBsZXQgcG9zaXRpb25zID0gWyd0b3AnLCAnYm90dG9tJywgJ2xlZnQnLCAncmlnaHQnXSBhcyBUb29sdGlwUG9zaXRpb25bXTtcbiAgICBwb3NpdGlvbnMgPSBwb3NpdGlvbnMuZmlsdGVyKChpdGVtKSA9PiBpdGVtICE9PSB0aGlzLnRvb2x0aXBQb3NpdGlvbik7XG4gICAgcG9zaXRpb25zLnVuc2hpZnQodGhpcy50b29sdGlwUG9zaXRpb24pO1xuXG4gICAgY29uc3QgdGFyZ2V0RWwgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3QgdGFyZ2V0RWxSZWN0ID0gdGFyZ2V0RWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgcG9wdXBSZWN0ID0gKHRoaXMuX3BvcHVwIGFzIEhUTUxEaXZFbGVtZW50KS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgIGZvciAoY29uc3QgcG9zIG9mIHBvc2l0aW9ucykge1xuICAgICAgY29uc3QgY29vcmRzID0gdGhpcy5fZ2V0Q29vcmRzRm9yUG9zaXRpb24oXG4gICAgICAgIHBvcyBhcyBUb29sdGlwUG9zaXRpb24sXG4gICAgICAgIHRhcmdldEVsLFxuICAgICAgICB0YXJnZXRFbFJlY3QsXG4gICAgICAgIHBvcHVwUmVjdFxuICAgICAgKTtcblxuICAgICAgaWYgKGlzSW5zaWRlU2NyZWVuKGNvb3JkcykpIHtcbiAgICAgICAgcmV0dXJuIGNvb3JkcztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0Q29vcmRzRm9yUG9zaXRpb24oXG4gICAgcG9zaXRpb246IFRvb2x0aXBQb3NpdGlvbixcbiAgICB0YXJnZXRFbDogSFRNTEVsZW1lbnQsXG4gICAgdGFyZ2V0RWxSZWN0OiBET01SZWN0LFxuICAgIHBvcHVwUmVjdDogRE9NUmVjdFxuICApOiB7XG4gICAgbGVmdDogbnVtYmVyO1xuICAgIHRvcDogbnVtYmVyO1xuICB9IHtcbiAgICBzd2l0Y2ggKHBvc2l0aW9uKSB7XG4gICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGxlZnQ6XG4gICAgICAgICAgICB0YXJnZXRFbFJlY3QubGVmdCArXG4gICAgICAgICAgICB3aW5kb3cuc2Nyb2xsWCArXG4gICAgICAgICAgICAodGFyZ2V0RWwub2Zmc2V0V2lkdGggLSBwb3B1cFJlY3Qud2lkdGgpIC8gMixcbiAgICAgICAgICB0b3A6IHRhcmdldEVsUmVjdC5ib3R0b20gKyB3aW5kb3cuc2Nyb2xsWSArIDhcbiAgICAgICAgfTtcbiAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGxlZnQ6IHRhcmdldEVsUmVjdC5sZWZ0IC0gd2luZG93LnNjcm9sbFggLSBwb3B1cFJlY3Qud2lkdGggLSA4LFxuICAgICAgICAgIHRvcDpcbiAgICAgICAgICAgIHRhcmdldEVsUmVjdC50b3AgK1xuICAgICAgICAgICAgd2luZG93LnNjcm9sbFkgK1xuICAgICAgICAgICAgKHRhcmdldEVsLm9mZnNldEhlaWdodCAtIHBvcHVwUmVjdC5oZWlnaHQpIC8gMlxuICAgICAgICB9O1xuICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGxlZnQ6IHRhcmdldEVsUmVjdC5yaWdodCArIHdpbmRvdy5zY3JvbGxYICsgOCxcbiAgICAgICAgICB0b3A6XG4gICAgICAgICAgICB0YXJnZXRFbFJlY3QudG9wICtcbiAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxZICtcbiAgICAgICAgICAgICh0YXJnZXRFbC5vZmZzZXRIZWlnaHQgLSBwb3B1cFJlY3QuaGVpZ2h0KSAvIDJcbiAgICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbGVmdDpcbiAgICAgICAgICAgIHRhcmdldEVsUmVjdC5sZWZ0ICtcbiAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxYICtcbiAgICAgICAgICAgICh0YXJnZXRFbC5vZmZzZXRXaWR0aCAtIHBvcHVwUmVjdC53aWR0aCkgLyAyLFxuICAgICAgICAgIHRvcDogdGFyZ2V0RWxSZWN0LnRvcCArIHdpbmRvdy5zY3JvbGxZIC0gcG9wdXBSZWN0LmhlaWdodCAtIDhcbiAgICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdtb3VzZWVudGVyJykgb25Nb3VzZUVudGVyKCkge1xuICAgIGlmICh0aGlzLnRvb2x0aXBPcGVuT24gPT09ICdob3ZlcicpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9oaWRlVGltZW91dCk7XG5cbiAgICAgIHRoaXMuX3Nob3dUaW1lb3V0ID0gc2V0VGltZW91dChcbiAgICAgICAgdGhpcy5fY3JlYXRlVG9vbHRpcCxcbiAgICAgICAgdGhpcy50b29sdGlwT3BlbkRlbGF5IGFzIG51bWJlclxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdtb3VzZWxlYXZlJykgb25Nb3VzZUxlYXZlKCkge1xuICAgIGNsZWFyVGltZW91dCh0aGlzLl9zaG93VGltZW91dCk7XG5cbiAgICBpZiAoIXRoaXMudG9vbHRpcFBlcnNpc3RlbnQpIHtcbiAgICAgIHRoaXMuX2hpZGVUaW1lb3V0ID0gc2V0VGltZW91dChcbiAgICAgICAgdGhpcy5fZGVzdHJveVRvb2x0aXAsXG4gICAgICAgIHRoaXMudG9vbHRpcENsb3NlRGVsYXkgYXMgbnVtYmVyXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2ZvY3VzJykgb25Gb2N1cygpIHtcbiAgICBpZiAodGhpcy50b29sdGlwT3Blbk9uID09PSAnZm9jdXMnKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5faGlkZVRpbWVvdXQpO1xuXG4gICAgICB0aGlzLl9zaG93VGltZW91dCA9IHNldFRpbWVvdXQoXG4gICAgICAgIHRoaXMuX2NyZWF0ZVRvb2x0aXAsXG4gICAgICAgIHRoaXMudG9vbHRpcE9wZW5EZWxheSBhcyBudW1iZXJcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignYmx1cicpIG9uQmx1cigpIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5fc2hvd1RpbWVvdXQpO1xuICAgIGlmICghdGhpcy50b29sdGlwUGVyc2lzdGVudCAmJiB0aGlzLnRvb2x0aXBPcGVuT24gPT09ICdmb2N1cycpIHtcbiAgICAgIHRoaXMuX2hpZGVUaW1lb3V0ID0gc2V0VGltZW91dChcbiAgICAgICAgdGhpcy5fZGVzdHJveVRvb2x0aXAsXG4gICAgICAgIHRoaXMudG9vbHRpcENsb3NlRGVsYXkgYXMgbnVtYmVyXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJykgb25DbGljaygpIHtcbiAgICBpZiAodGhpcy50b29sdGlwT3Blbk9uID09PSAnY2xpY2snKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5faGlkZVRpbWVvdXQpO1xuXG4gICAgICB0aGlzLl9zaG93VGltZW91dCA9IHNldFRpbWVvdXQodGhpcy5fY3JlYXRlVG9vbHRpcCwgMCk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScpIG9uUGFnZVJlc2l6ZSgpIHtcbiAgICBpZiAodGhpcy5fcG9wdXApIHRoaXMuX2Rlc3Ryb3lUb29sdGlwKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50LnRhcmdldCddKVxuICBwdWJsaWMgb25Eb2N1bWVudENsaWNrKHRhcmdldDogYW55KSB7XG4gICAgaWYgKHRoaXMudG9vbHRpcFBlcnNpc3RlbnQgJiYgdGhpcy5fcG9wdXApIHtcbiAgICAgIGlmICghdGFyZ2V0Py5pc0Nvbm5lY3RlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBjbGlja2VkSW5zaWRlID0gdGhpcy5fZWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudD8uY29udGFpbnModGFyZ2V0KTtcbiAgICAgIGlmICghY2xpY2tlZEluc2lkZSkge1xuICAgICAgICB0aGlzLl9kZXN0cm95VG9vbHRpcCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
|
package/esm2020/public-api.mjs
CHANGED
|
@@ -20,6 +20,7 @@ export * from './lib/components/cps-progress-circular/cps-progress-circular.comp
|
|
|
20
20
|
export * from './lib/components/cps-progress-linear/cps-progress-linear.component';
|
|
21
21
|
export * from './lib/components/cps-datepicker/cps-datepicker.component';
|
|
22
22
|
export * from './lib/components/cps-textarea/cps-textarea.component';
|
|
23
|
+
export * from './lib/directives/cps-tooltip.directive';
|
|
23
24
|
export * from './lib/components/cps-button-toggle/cps-button-toggle.component';
|
|
24
25
|
export * from './lib/utils/colors-utils';
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2Nwcy11aS1raXQvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYyxrREFBa0QsQ0FBQztBQUNqRSxjQUFjLDREQUE0RCxDQUFDO0FBQzNFLGNBQWMsOERBQThELENBQUM7QUFDN0UsY0FBYyx3RUFBd0UsQ0FBQztBQUN2RixjQUFjLGtEQUFrRCxDQUFDO0FBQ2pFLGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLGdEQUFnRCxDQUFDO0FBQy9ELGNBQWMsZ0VBQWdFLENBQUM7QUFDL0UsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyxvRUFBb0UsQ0FBQztBQUNuRixjQUFjLHdFQUF3RSxDQUFDO0FBQ3ZGLGNBQWMsb0VBQW9FLENBQUM7QUFDbkYsY0FBYywwREFBMEQsQ0FBQztBQUN6RSxjQUFjLHNEQUFzRCxDQUFDO0FBQ3JFLGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyxnRUFBZ0UsQ0FBQztBQUMvRSxjQUFjLDBCQUEwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBjcHMtdWkta2l0XG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jcHMtaWNvbi9jcHMtaWNvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jcHMtaW5wdXQvY3BzLWlucHV0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2Nwcy1zZWxlY3QvY3BzLXNlbGVjdC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jcHMtdHJlZS1zZWxlY3QvY3BzLXRyZWUtc2VsZWN0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2Nwcy1hdXRvY29tcGxldGUvY3BzLWF1dG9jb21wbGV0ZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jcHMtdHJlZS1hdXRvY29tcGxldGUvY3BzLXRyZWUtYXV0b2NvbXBsZXRlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2Nwcy1idXR0b24vY3BzLWJ1dHRvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jcHMtY2hlY2tib3gvY3BzLWNoZWNrYm94LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2Nwcy1yYWRpby9jcHMtcmFkaW8uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY3BzLXRhYmxlL2Nwcy10YWJsZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jcHMtdGFibGUvY3BzLXRhYmxlLWNvbHVtbi1zb3J0YWJsZS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jcHMtdGFnL2Nwcy10YWcuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY3BzLWNoaXAvY3BzLWNoaXAuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY3BzLWxvYWRlci9jcHMtbG9hZGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2Nwcy1leHBhbnNpb24tcGFuZWwvY3BzLWV4cGFuc2lvbi1wYW5lbC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jcHMtcHJvZ3Jlc3MtY2lyY3VsYXIvY3BzLXByb2dyZXNzLWNpcmN1bGFyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2Nwcy1wcm9ncmVzcy1saW5lYXIvY3BzLXByb2dyZXNzLWxpbmVhci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jcHMtZGF0ZXBpY2tlci9jcHMtZGF0ZXBpY2tlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jcHMtdGV4dGFyZWEvY3BzLXRleHRhcmVhLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL2Nwcy10b29sdGlwLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2Nwcy1idXR0b24tdG9nZ2xlL2Nwcy1idXR0b24tdG9nZ2xlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscy9jb2xvcnMtdXRpbHMnO1xuIl19
|
package/fesm2015/cps-ui-kit.mjs
CHANGED
|
@@ -3434,6 +3434,206 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
3434
3434
|
type: Output
|
|
3435
3435
|
}] } });
|
|
3436
3436
|
|
|
3437
|
+
class CpsTooltipDirective {
|
|
3438
|
+
// eslint-disable-next-line no-useless-constructor
|
|
3439
|
+
constructor(_elementRef) {
|
|
3440
|
+
this._elementRef = _elementRef;
|
|
3441
|
+
this.tooltipOpenDelay = 300;
|
|
3442
|
+
this.tooltipCloseDelay = 300;
|
|
3443
|
+
this.tooltipOpenOn = 'hover';
|
|
3444
|
+
this.tooltipPosition = 'top';
|
|
3445
|
+
this.tooltipPersistent = false;
|
|
3446
|
+
this.tooltipDisabled = false;
|
|
3447
|
+
this.tooltipMaxWidth = '100%';
|
|
3448
|
+
this.tooltipContentClass = 'cps-tooltip-content';
|
|
3449
|
+
this._createTooltip = () => {
|
|
3450
|
+
if (this._popup)
|
|
3451
|
+
this._destroyTooltip();
|
|
3452
|
+
if (this.tooltipDisabled)
|
|
3453
|
+
return;
|
|
3454
|
+
this._popup = document.createElement('div');
|
|
3455
|
+
this._constructElement(this._popup);
|
|
3456
|
+
if (this.tooltipPersistent)
|
|
3457
|
+
this._popup.addEventListener('click', this._destroyTooltip);
|
|
3458
|
+
window.addEventListener('scroll', this._destroyTooltip, true);
|
|
3459
|
+
};
|
|
3460
|
+
this._destroyTooltip = () => {
|
|
3461
|
+
var _a, _b;
|
|
3462
|
+
window.removeEventListener('scroll', this._destroyTooltip, true);
|
|
3463
|
+
(_a = this._popup) === null || _a === void 0 ? void 0 : _a.removeEventListener('click', this._destroyTooltip);
|
|
3464
|
+
(_b = this._popup) === null || _b === void 0 ? void 0 : _b.remove();
|
|
3465
|
+
this._popup = undefined;
|
|
3466
|
+
};
|
|
3467
|
+
}
|
|
3468
|
+
ngOnDestroy() {
|
|
3469
|
+
this._destroyTooltip();
|
|
3470
|
+
}
|
|
3471
|
+
_constructElement(popup) {
|
|
3472
|
+
const popupContent = document.createElement('div');
|
|
3473
|
+
popupContent.innerHTML = this.tooltip || 'Add your text to this tooltip';
|
|
3474
|
+
popupContent.classList.add(this.tooltipContentClass);
|
|
3475
|
+
popup.appendChild(popupContent);
|
|
3476
|
+
popup.classList.add('cps-tooltip');
|
|
3477
|
+
popup.style.maxWidth = convertSize(this.tooltipMaxWidth);
|
|
3478
|
+
document.body.appendChild(popup);
|
|
3479
|
+
const coords = this._getCoords();
|
|
3480
|
+
if (!coords) {
|
|
3481
|
+
this._destroyTooltip();
|
|
3482
|
+
throw new Error('Not enough space on the screen for the tooltip!');
|
|
3483
|
+
}
|
|
3484
|
+
popup.style.left = coords.left.toString() + 'px';
|
|
3485
|
+
popup.style.top = coords.top.toString() + 'px';
|
|
3486
|
+
}
|
|
3487
|
+
_getCoords() {
|
|
3488
|
+
function isInsideScreen(coords) {
|
|
3489
|
+
return (coords.top >= 0 &&
|
|
3490
|
+
coords.left >= 0 &&
|
|
3491
|
+
coords.left + popupRect.width <= window.innerWidth &&
|
|
3492
|
+
coords.top + popupRect.height <= window.innerHeight);
|
|
3493
|
+
}
|
|
3494
|
+
let positions = ['top', 'bottom', 'left', 'right'];
|
|
3495
|
+
positions = positions.filter((item) => item !== this.tooltipPosition);
|
|
3496
|
+
positions.unshift(this.tooltipPosition);
|
|
3497
|
+
const targetEl = this._elementRef.nativeElement;
|
|
3498
|
+
const targetElRect = targetEl.getBoundingClientRect();
|
|
3499
|
+
const popupRect = this._popup.getBoundingClientRect();
|
|
3500
|
+
for (const pos of positions) {
|
|
3501
|
+
const coords = this._getCoordsForPosition(pos, targetEl, targetElRect, popupRect);
|
|
3502
|
+
if (isInsideScreen(coords)) {
|
|
3503
|
+
return coords;
|
|
3504
|
+
}
|
|
3505
|
+
}
|
|
3506
|
+
return undefined;
|
|
3507
|
+
}
|
|
3508
|
+
_getCoordsForPosition(position, targetEl, targetElRect, popupRect) {
|
|
3509
|
+
switch (position) {
|
|
3510
|
+
case 'bottom':
|
|
3511
|
+
return {
|
|
3512
|
+
left: targetElRect.left +
|
|
3513
|
+
window.scrollX +
|
|
3514
|
+
(targetEl.offsetWidth - popupRect.width) / 2,
|
|
3515
|
+
top: targetElRect.bottom + window.scrollY + 8
|
|
3516
|
+
};
|
|
3517
|
+
case 'left':
|
|
3518
|
+
return {
|
|
3519
|
+
left: targetElRect.left - window.scrollX - popupRect.width - 8,
|
|
3520
|
+
top: targetElRect.top +
|
|
3521
|
+
window.scrollY +
|
|
3522
|
+
(targetEl.offsetHeight - popupRect.height) / 2
|
|
3523
|
+
};
|
|
3524
|
+
case 'right':
|
|
3525
|
+
return {
|
|
3526
|
+
left: targetElRect.right + window.scrollX + 8,
|
|
3527
|
+
top: targetElRect.top +
|
|
3528
|
+
window.scrollY +
|
|
3529
|
+
(targetEl.offsetHeight - popupRect.height) / 2
|
|
3530
|
+
};
|
|
3531
|
+
default:
|
|
3532
|
+
return {
|
|
3533
|
+
left: targetElRect.left +
|
|
3534
|
+
window.scrollX +
|
|
3535
|
+
(targetEl.offsetWidth - popupRect.width) / 2,
|
|
3536
|
+
top: targetElRect.top + window.scrollY - popupRect.height - 8
|
|
3537
|
+
};
|
|
3538
|
+
}
|
|
3539
|
+
}
|
|
3540
|
+
onMouseEnter() {
|
|
3541
|
+
if (this.tooltipOpenOn === 'hover') {
|
|
3542
|
+
clearTimeout(this._hideTimeout);
|
|
3543
|
+
this._showTimeout = setTimeout(this._createTooltip, this.tooltipOpenDelay);
|
|
3544
|
+
}
|
|
3545
|
+
}
|
|
3546
|
+
onMouseLeave() {
|
|
3547
|
+
clearTimeout(this._showTimeout);
|
|
3548
|
+
if (!this.tooltipPersistent) {
|
|
3549
|
+
this._hideTimeout = setTimeout(this._destroyTooltip, this.tooltipCloseDelay);
|
|
3550
|
+
}
|
|
3551
|
+
}
|
|
3552
|
+
onFocus() {
|
|
3553
|
+
if (this.tooltipOpenOn === 'focus') {
|
|
3554
|
+
clearTimeout(this._hideTimeout);
|
|
3555
|
+
this._showTimeout = setTimeout(this._createTooltip, this.tooltipOpenDelay);
|
|
3556
|
+
}
|
|
3557
|
+
}
|
|
3558
|
+
onBlur() {
|
|
3559
|
+
clearTimeout(this._showTimeout);
|
|
3560
|
+
if (!this.tooltipPersistent && this.tooltipOpenOn === 'focus') {
|
|
3561
|
+
this._hideTimeout = setTimeout(this._destroyTooltip, this.tooltipCloseDelay);
|
|
3562
|
+
}
|
|
3563
|
+
}
|
|
3564
|
+
onClick() {
|
|
3565
|
+
if (this.tooltipOpenOn === 'click') {
|
|
3566
|
+
clearTimeout(this._hideTimeout);
|
|
3567
|
+
this._showTimeout = setTimeout(this._createTooltip, 0);
|
|
3568
|
+
}
|
|
3569
|
+
}
|
|
3570
|
+
onPageResize() {
|
|
3571
|
+
if (this._popup)
|
|
3572
|
+
this._destroyTooltip();
|
|
3573
|
+
}
|
|
3574
|
+
onDocumentClick(target) {
|
|
3575
|
+
var _a, _b;
|
|
3576
|
+
if (this.tooltipPersistent && this._popup) {
|
|
3577
|
+
if (!(target === null || target === void 0 ? void 0 : target.isConnected)) {
|
|
3578
|
+
return;
|
|
3579
|
+
}
|
|
3580
|
+
const clickedInside = (_b = (_a = this._elementRef) === null || _a === void 0 ? void 0 : _a.nativeElement) === null || _b === void 0 ? void 0 : _b.contains(target);
|
|
3581
|
+
if (!clickedInside) {
|
|
3582
|
+
this._destroyTooltip();
|
|
3583
|
+
}
|
|
3584
|
+
}
|
|
3585
|
+
}
|
|
3586
|
+
}
|
|
3587
|
+
CpsTooltipDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CpsTooltipDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
3588
|
+
CpsTooltipDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: CpsTooltipDirective, isStandalone: true, selector: "[cpsTooltip]", inputs: { tooltip: ["cpsTooltip", "tooltip"], tooltipOpenDelay: "tooltipOpenDelay", tooltipCloseDelay: "tooltipCloseDelay", tooltipOpenOn: "tooltipOpenOn", tooltipPosition: "tooltipPosition", tooltipPersistent: "tooltipPersistent", tooltipDisabled: "tooltipDisabled", tooltipMaxWidth: "tooltipMaxWidth", tooltipContentClass: "tooltipContentClass" }, host: { listeners: { "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()", "focus": "onFocus()", "blur": "onBlur()", "click": "onClick()", "window:resize": "onPageResize()", "document:click": "onDocumentClick($event.target)" } }, ngImport: i0 });
|
|
3589
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CpsTooltipDirective, decorators: [{
|
|
3590
|
+
type: Directive,
|
|
3591
|
+
args: [{
|
|
3592
|
+
selector: '[cpsTooltip]',
|
|
3593
|
+
standalone: true
|
|
3594
|
+
}]
|
|
3595
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { tooltip: [{
|
|
3596
|
+
type: Input,
|
|
3597
|
+
args: ['cpsTooltip']
|
|
3598
|
+
}], tooltipOpenDelay: [{
|
|
3599
|
+
type: Input
|
|
3600
|
+
}], tooltipCloseDelay: [{
|
|
3601
|
+
type: Input
|
|
3602
|
+
}], tooltipOpenOn: [{
|
|
3603
|
+
type: Input
|
|
3604
|
+
}], tooltipPosition: [{
|
|
3605
|
+
type: Input
|
|
3606
|
+
}], tooltipPersistent: [{
|
|
3607
|
+
type: Input
|
|
3608
|
+
}], tooltipDisabled: [{
|
|
3609
|
+
type: Input
|
|
3610
|
+
}], tooltipMaxWidth: [{
|
|
3611
|
+
type: Input
|
|
3612
|
+
}], tooltipContentClass: [{
|
|
3613
|
+
type: Input
|
|
3614
|
+
}], onMouseEnter: [{
|
|
3615
|
+
type: HostListener,
|
|
3616
|
+
args: ['mouseenter']
|
|
3617
|
+
}], onMouseLeave: [{
|
|
3618
|
+
type: HostListener,
|
|
3619
|
+
args: ['mouseleave']
|
|
3620
|
+
}], onFocus: [{
|
|
3621
|
+
type: HostListener,
|
|
3622
|
+
args: ['focus']
|
|
3623
|
+
}], onBlur: [{
|
|
3624
|
+
type: HostListener,
|
|
3625
|
+
args: ['blur']
|
|
3626
|
+
}], onClick: [{
|
|
3627
|
+
type: HostListener,
|
|
3628
|
+
args: ['click']
|
|
3629
|
+
}], onPageResize: [{
|
|
3630
|
+
type: HostListener,
|
|
3631
|
+
args: ['window:resize']
|
|
3632
|
+
}], onDocumentClick: [{
|
|
3633
|
+
type: HostListener,
|
|
3634
|
+
args: ['document:click', ['$event.target']]
|
|
3635
|
+
}] } });
|
|
3636
|
+
|
|
3437
3637
|
class CpsButtonToggleComponent {
|
|
3438
3638
|
set value(value) {
|
|
3439
3639
|
this._value = value;
|
|
@@ -3551,5 +3751,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
3551
3751
|
* Generated bundle index. Do not edit.
|
|
3552
3752
|
*/
|
|
3553
3753
|
|
|
3554
|
-
export { CpsAutocompleteComponent, CpsButtonComponent, CpsButtonToggleComponent, CpsCheckboxComponent, CpsChipComponent, CpsDatepickerComponent, CpsExpansionPanelComponent, CpsIconComponent, CpsInputComponent, CpsLoaderComponent, CpsProgressCircularComponent, CpsProgressLinearComponent, CpsRadioComponent, CpsSelectComponent, CpsTableColumnSortableDirective, CpsTableComponent, CpsTagComponent, CpsTextareaComponent, CpsTreeAutocompleteComponent, CpsTreeSelectComponent, getCSSColor, getCpsColors, getTextColor, iconNames, tableFactory };
|
|
3754
|
+
export { CpsAutocompleteComponent, CpsButtonComponent, CpsButtonToggleComponent, CpsCheckboxComponent, CpsChipComponent, CpsDatepickerComponent, CpsExpansionPanelComponent, CpsIconComponent, CpsInputComponent, CpsLoaderComponent, CpsProgressCircularComponent, CpsProgressLinearComponent, CpsRadioComponent, CpsSelectComponent, CpsTableColumnSortableDirective, CpsTableComponent, CpsTagComponent, CpsTextareaComponent, CpsTooltipDirective, CpsTreeAutocompleteComponent, CpsTreeSelectComponent, getCSSColor, getCpsColors, getTextColor, iconNames, tableFactory };
|
|
3555
3755
|
//# sourceMappingURL=cps-ui-kit.mjs.map
|