cps-ui-kit 0.165.0 → 17.1.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/esm2022/lib/components/cps-autocomplete/cps-autocomplete.component.mjs +824 -0
- package/esm2022/lib/components/cps-button/cps-button.component.mjs +190 -0
- package/esm2022/lib/components/cps-button-toggle/cps-button-toggle.component.mjs +235 -0
- package/esm2022/lib/components/cps-checkbox/cps-checkbox.component.mjs +149 -0
- package/esm2022/lib/components/cps-chip/cps-chip.component.mjs +94 -0
- package/esm2022/lib/components/cps-datepicker/cps-datepicker.component.mjs +382 -0
- package/esm2022/lib/components/cps-expansion-panel/cps-expansion-panel.component.mjs +209 -0
- package/esm2022/lib/components/cps-file-upload/cps-file-upload.component.mjs +138 -0
- package/esm2022/lib/components/cps-icon/cps-icon.component.mjs +193 -0
- package/esm2022/lib/components/cps-info-circle/cps-info-circle.component.mjs +61 -0
- package/esm2022/lib/components/cps-input/cps-input.component.mjs +386 -0
- package/{esm2020 → esm2022}/lib/components/cps-loader/cps-loader.component.mjs +5 -5
- package/esm2022/lib/components/cps-menu/cps-menu.component.mjs +552 -0
- package/esm2022/lib/components/cps-paginator/cps-paginator.component.mjs +114 -0
- package/esm2022/lib/components/cps-paginator/pipes/cps-paginate.pipe.mjs +30 -0
- package/{esm2020 → esm2022}/lib/components/cps-progress-circular/cps-progress-circular.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/cps-progress-linear/cps-progress-linear.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/cps-radio-group/cps-radio/cps-radio.component.mjs +7 -7
- package/esm2022/lib/components/cps-radio-group/cps-radio-button/cps-radio-button.component.mjs +55 -0
- package/esm2022/lib/components/cps-radio-group/cps-radio-group.component.mjs +158 -0
- package/esm2022/lib/components/cps-select/cps-select.component.mjs +615 -0
- package/esm2022/lib/components/cps-sidebar-menu/cps-sidebar-menu.component.mjs +110 -0
- package/{esm2020 → esm2022}/lib/components/cps-tab-group/cps-tab/cps-tab.component.mjs +4 -4
- package/esm2022/lib/components/cps-tab-group/cps-tab-group.component.mjs +303 -0
- package/esm2022/lib/components/cps-table/components/internal/cps-sort-icon/cps-sort-icon.component.mjs +79 -0
- package/esm2022/lib/components/cps-table/components/internal/table-column-filter/table-column-filter.component.mjs +408 -0
- package/esm2022/lib/components/cps-table/components/internal/table-column-filter-constraint/table-column-filter-constraint.component.mjs +149 -0
- package/esm2022/lib/components/cps-table/components/internal/table-row-menu/table-row-menu.component.mjs +88 -0
- package/esm2022/lib/components/cps-table/cps-table.component.mjs +941 -0
- package/esm2022/lib/components/cps-table/directives/cps-table-column-filter.directive.mjs +181 -0
- package/{esm2020 → esm2022}/lib/components/cps-table/directives/cps-table-column-sortable.directive.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/cps-table/directives/cps-table-header-selectable.directive.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/cps-table/directives/cps-table-row-selectable.directive.mjs +5 -5
- package/esm2022/lib/components/cps-table/directives/internal/table-unsort.directive.mjs +220 -0
- package/esm2022/lib/components/cps-tag/cps-tag.component.mjs +136 -0
- package/esm2022/lib/components/cps-textarea/cps-textarea.component.mjs +291 -0
- package/esm2022/lib/components/cps-timepicker/cps-timepicker.component.mjs +351 -0
- package/esm2022/lib/components/cps-tree-autocomplete/cps-tree-autocomplete.component.mjs +251 -0
- package/esm2022/lib/components/cps-tree-select/cps-tree-select.component.mjs +87 -0
- package/esm2022/lib/components/cps-tree-table/cps-tree-table.component.mjs +1196 -0
- package/{esm2020 → esm2022}/lib/components/cps-tree-table/directives/cps-tree-table-column-filter.directive.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/cps-tree-table/directives/cps-tree-table-column-sortable.directive.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/cps-tree-table/directives/cps-tree-table-header-selectable.directive.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/cps-tree-table/directives/cps-tree-table-row-selectable.directive.mjs +5 -5
- package/esm2022/lib/components/cps-tree-table/directives/cps-tree-table-row-toggler.directive.mjs +43 -0
- package/esm2022/lib/components/cps-tree-table/directives/internal/tree-table-unsort.directive.mjs +354 -0
- package/esm2022/lib/components/internal/cps-base-tree-dropdown/cps-base-tree-dropdown.component.mjs +619 -0
- package/esm2022/lib/directives/cps-tooltip/cps-tooltip.directive.mjs +257 -0
- package/{esm2020 → esm2022}/lib/pipes/internal/check-option-selected.pipe.mjs +4 -4
- package/esm2022/lib/pipes/internal/combine-labels.pipe.mjs +25 -0
- package/{esm2020 → esm2022}/lib/pipes/internal/label-by-value.pipe.mjs +4 -4
- package/esm2022/lib/services/cps-dialog/cps-dialog.service.mjs +99 -0
- package/{esm2020 → esm2022}/lib/services/cps-dialog/internal/components/cps-confirmation/cps-confirmation.component.mjs +5 -5
- package/esm2022/lib/services/cps-dialog/internal/components/cps-dialog/cps-dialog.component.mjs +470 -0
- package/{esm2020 → esm2022}/lib/services/cps-dialog/internal/directives/cps-dialog-content.directive.mjs +5 -5
- package/esm2022/lib/services/cps-dialog/utils/cps-dialog-config.mjs +3 -0
- package/esm2022/lib/services/cps-notification/cps-notification.service.mjs +126 -0
- package/esm2022/lib/services/cps-notification/internal/components/cps-notification-container/cps-notification-container.component.mjs +91 -0
- package/{esm2020 → esm2022}/lib/services/cps-notification/internal/components/cps-toast/cps-toast.component.mjs +23 -23
- package/esm2022/lib/utils/colors-utils.mjs +57 -0
- package/esm2022/lib/utils/internal/size-utils.mjs +24 -0
- package/{esm2020 → esm2022}/public-api.mjs +2 -2
- package/{fesm2020 → fesm2022}/cps-ui-kit.mjs +481 -391
- package/fesm2022/cps-ui-kit.mjs.map +1 -0
- package/lib/components/cps-autocomplete/cps-autocomplete.component.d.ts +2 -2
- package/lib/components/cps-button/cps-button.component.d.ts +1 -1
- package/lib/components/cps-button-toggle/cps-button-toggle.component.d.ts +2 -2
- package/lib/components/cps-checkbox/cps-checkbox.component.d.ts +2 -2
- package/lib/components/cps-chip/cps-chip.component.d.ts +1 -1
- package/lib/components/cps-datepicker/cps-datepicker.component.d.ts +2 -2
- package/lib/components/cps-expansion-panel/cps-expansion-panel.component.d.ts +1 -1
- package/lib/components/cps-file-upload/cps-file-upload.component.d.ts +1 -1
- package/lib/components/cps-icon/cps-icon.component.d.ts +1 -1
- package/lib/components/cps-info-circle/cps-info-circle.component.d.ts +2 -2
- package/lib/components/cps-input/cps-input.component.d.ts +2 -2
- package/lib/components/cps-loader/cps-loader.component.d.ts +1 -1
- package/lib/components/cps-menu/cps-menu.component.d.ts +1 -1
- package/lib/components/cps-paginator/cps-paginator.component.d.ts +1 -1
- package/lib/components/cps-progress-circular/cps-progress-circular.component.d.ts +1 -1
- package/lib/components/cps-progress-linear/cps-progress-linear.component.d.ts +1 -1
- package/lib/components/cps-radio-group/cps-radio/cps-radio.component.d.ts +1 -1
- package/lib/components/cps-radio-group/cps-radio-button/cps-radio-button.component.d.ts +1 -1
- package/lib/components/cps-radio-group/cps-radio-group.component.d.ts +2 -2
- package/lib/components/cps-select/cps-select.component.d.ts +2 -2
- package/lib/components/cps-sidebar-menu/cps-sidebar-menu.component.d.ts +1 -1
- package/lib/components/cps-tab-group/cps-tab/cps-tab.component.d.ts +1 -1
- package/lib/components/cps-tab-group/cps-tab-group.component.d.ts +1 -1
- package/lib/components/cps-table/components/internal/cps-sort-icon/cps-sort-icon.component.d.ts +1 -1
- package/lib/components/cps-table/components/internal/table-column-filter/table-column-filter.component.d.ts +1 -1
- package/lib/components/cps-table/components/internal/table-column-filter-constraint/table-column-filter-constraint.component.d.ts +1 -1
- package/lib/components/cps-table/components/internal/table-row-menu/table-row-menu.component.d.ts +1 -1
- package/lib/components/cps-table/cps-table.component.d.ts +1 -1
- package/lib/components/cps-table/directives/cps-table-column-filter.directive.d.ts +1 -1
- package/lib/components/cps-table/directives/cps-table-column-sortable.directive.d.ts +1 -1
- package/lib/components/cps-table/directives/cps-table-row-selectable.directive.d.ts +1 -1
- package/lib/components/cps-tag/cps-tag.component.d.ts +1 -1
- package/lib/components/cps-textarea/cps-textarea.component.d.ts +2 -2
- package/lib/components/cps-timepicker/cps-timepicker.component.d.ts +2 -2
- package/lib/components/cps-tree-autocomplete/cps-tree-autocomplete.component.d.ts +1 -1
- package/lib/components/cps-tree-select/cps-tree-select.component.d.ts +1 -1
- package/lib/components/cps-tree-table/cps-tree-table.component.d.ts +4 -4
- package/lib/components/cps-tree-table/directives/cps-tree-table-column-filter.directive.d.ts +1 -1
- package/lib/components/cps-tree-table/directives/cps-tree-table-column-sortable.directive.d.ts +1 -1
- package/lib/components/cps-tree-table/directives/cps-tree-table-row-selectable.directive.d.ts +1 -1
- package/lib/components/cps-tree-table/directives/cps-tree-table-row-toggler.directive.d.ts +1 -1
- package/lib/components/internal/cps-base-tree-dropdown/cps-base-tree-dropdown.component.d.ts +2 -2
- package/lib/directives/{cps-tooltip.directive.d.ts → cps-tooltip/cps-tooltip.directive.d.ts} +2 -2
- package/lib/services/cps-dialog/cps-dialog.service.d.ts +13 -0
- package/lib/services/cps-dialog/utils/cps-dialog-config.d.ts +1 -1
- package/lib/services/cps-notification/cps-notification.service.d.ts +32 -0
- package/lib/services/cps-notification/internal/components/cps-notification-container/cps-notification-container.component.d.ts +1 -1
- package/lib/services/cps-notification/internal/components/cps-toast/cps-toast.component.d.ts +1 -1
- package/package.json +12 -18
- package/public-api.d.ts +1 -1
- package/esm2020/lib/components/cps-autocomplete/cps-autocomplete.component.mjs +0 -824
- package/esm2020/lib/components/cps-button/cps-button.component.mjs +0 -190
- package/esm2020/lib/components/cps-button-toggle/cps-button-toggle.component.mjs +0 -235
- package/esm2020/lib/components/cps-checkbox/cps-checkbox.component.mjs +0 -149
- package/esm2020/lib/components/cps-chip/cps-chip.component.mjs +0 -94
- package/esm2020/lib/components/cps-datepicker/cps-datepicker.component.mjs +0 -382
- package/esm2020/lib/components/cps-expansion-panel/cps-expansion-panel.component.mjs +0 -209
- package/esm2020/lib/components/cps-file-upload/cps-file-upload.component.mjs +0 -138
- package/esm2020/lib/components/cps-icon/cps-icon.component.mjs +0 -193
- package/esm2020/lib/components/cps-info-circle/cps-info-circle.component.mjs +0 -61
- package/esm2020/lib/components/cps-input/cps-input.component.mjs +0 -386
- package/esm2020/lib/components/cps-menu/cps-menu.component.mjs +0 -552
- package/esm2020/lib/components/cps-paginator/cps-paginator.component.mjs +0 -113
- package/esm2020/lib/components/cps-paginator/pipes/cps-paginate.pipe.mjs +0 -30
- package/esm2020/lib/components/cps-radio-group/cps-radio-button/cps-radio-button.component.mjs +0 -55
- package/esm2020/lib/components/cps-radio-group/cps-radio-group.component.mjs +0 -158
- package/esm2020/lib/components/cps-select/cps-select.component.mjs +0 -615
- package/esm2020/lib/components/cps-sidebar-menu/cps-sidebar-menu.component.mjs +0 -110
- package/esm2020/lib/components/cps-tab-group/cps-tab-group.component.mjs +0 -299
- package/esm2020/lib/components/cps-table/components/internal/cps-sort-icon/cps-sort-icon.component.mjs +0 -79
- package/esm2020/lib/components/cps-table/components/internal/table-column-filter/table-column-filter.component.mjs +0 -408
- package/esm2020/lib/components/cps-table/components/internal/table-column-filter-constraint/table-column-filter-constraint.component.mjs +0 -148
- package/esm2020/lib/components/cps-table/components/internal/table-row-menu/table-row-menu.component.mjs +0 -88
- package/esm2020/lib/components/cps-table/cps-table.component.mjs +0 -940
- package/esm2020/lib/components/cps-table/directives/cps-table-column-filter.directive.mjs +0 -181
- package/esm2020/lib/components/cps-table/directives/internal/table-unsort.directive.mjs +0 -210
- package/esm2020/lib/components/cps-tag/cps-tag.component.mjs +0 -136
- package/esm2020/lib/components/cps-textarea/cps-textarea.component.mjs +0 -291
- package/esm2020/lib/components/cps-timepicker/cps-timepicker.component.mjs +0 -351
- package/esm2020/lib/components/cps-tree-autocomplete/cps-tree-autocomplete.component.mjs +0 -250
- package/esm2020/lib/components/cps-tree-select/cps-tree-select.component.mjs +0 -87
- package/esm2020/lib/components/cps-tree-table/cps-tree-table.component.mjs +0 -1192
- package/esm2020/lib/components/cps-tree-table/directives/cps-tree-table-row-toggler.directive.mjs +0 -43
- package/esm2020/lib/components/cps-tree-table/directives/internal/tree-table-unsort.directive.mjs +0 -334
- package/esm2020/lib/components/internal/cps-base-tree-dropdown/cps-base-tree-dropdown.component.mjs +0 -616
- package/esm2020/lib/directives/cps-tooltip.directive.mjs +0 -257
- package/esm2020/lib/pipes/internal/combine-labels.pipe.mjs +0 -25
- package/esm2020/lib/services/cps-dialog/cps-dialog.service.mjs +0 -86
- package/esm2020/lib/services/cps-dialog/internal/components/cps-dialog/cps-dialog.component.mjs +0 -470
- package/esm2020/lib/services/cps-dialog/utils/cps-dialog-config.mjs +0 -3
- package/esm2020/lib/services/cps-notification/cps-notification.service.mjs +0 -94
- package/esm2020/lib/services/cps-notification/internal/components/cps-notification-container/cps-notification-container.component.mjs +0 -91
- package/esm2020/lib/utils/colors-utils.mjs +0 -57
- package/esm2020/lib/utils/internal/size-utils.mjs +0 -24
- package/fesm2015/cps-ui-kit.mjs +0 -12086
- package/fesm2015/cps-ui-kit.mjs.map +0 -1
- package/fesm2020/cps-ui-kit.mjs.map +0 -1
- /package/{esm2020 → esm2022}/cps-ui-kit.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/cps-table/cps-column-filter-types.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/cps-dialog/utils/cps-dialog-ref.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/cps-notification/utils/cps-notification-config.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/cps-notification/utils/internal/cps-notification-data.mjs +0 -0
|
@@ -1,257 +0,0 @@
|
|
|
1
|
-
import { Directive, HostListener, Input } from '@angular/core';
|
|
2
|
-
import { convertSize } from '../utils/internal/size-utils';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
/**
|
|
5
|
-
* CpsTooltipDirective provides advisory information for a target element.
|
|
6
|
-
* @group Directives
|
|
7
|
-
*/
|
|
8
|
-
export class CpsTooltipDirective {
|
|
9
|
-
// eslint-disable-next-line no-useless-constructor
|
|
10
|
-
constructor(_elementRef) {
|
|
11
|
-
this._elementRef = _elementRef;
|
|
12
|
-
/**
|
|
13
|
-
* Delay to show the tooltip in milliseconds, it can be of type string or number.
|
|
14
|
-
* @group Props
|
|
15
|
-
*/
|
|
16
|
-
this.tooltipOpenDelay = 300;
|
|
17
|
-
/**
|
|
18
|
-
* Delay to hide the tooltip in milliseconds, it can be of type string or number.
|
|
19
|
-
* @group Props
|
|
20
|
-
*/
|
|
21
|
-
this.tooltipCloseDelay = 300;
|
|
22
|
-
/**
|
|
23
|
-
* Determines whether the tooltip should open on hover, click or focus.
|
|
24
|
-
* @group Props
|
|
25
|
-
*/
|
|
26
|
-
this.tooltipOpenOn = 'hover';
|
|
27
|
-
/**
|
|
28
|
-
* Position of the tooltip, it can be 'top', 'bottom', 'left' or 'right'.
|
|
29
|
-
* @group Props
|
|
30
|
-
*/
|
|
31
|
-
this.tooltipPosition = 'top';
|
|
32
|
-
/**
|
|
33
|
-
* Determines whether the tooltip is persistent.
|
|
34
|
-
* @group Props
|
|
35
|
-
*/
|
|
36
|
-
this.tooltipPersistent = false;
|
|
37
|
-
/**
|
|
38
|
-
* When present, it specifies that the tooltip should be disabled.
|
|
39
|
-
* @group Props
|
|
40
|
-
*/
|
|
41
|
-
this.tooltipDisabled = false;
|
|
42
|
-
/**
|
|
43
|
-
* Max width of the tooltip of type number denoting pixels or string.
|
|
44
|
-
* @group Props
|
|
45
|
-
*/
|
|
46
|
-
this.tooltipMaxWidth = '100%';
|
|
47
|
-
/**
|
|
48
|
-
* Tooltip content class for styling.
|
|
49
|
-
* @group Props
|
|
50
|
-
*/
|
|
51
|
-
this.tooltipContentClass = 'cps-tooltip-content';
|
|
52
|
-
this._createTooltip = () => {
|
|
53
|
-
if (this._popup)
|
|
54
|
-
return;
|
|
55
|
-
if (this.tooltipDisabled)
|
|
56
|
-
return;
|
|
57
|
-
this._popup = document.createElement('div');
|
|
58
|
-
this._constructElement(this._popup);
|
|
59
|
-
if (this.tooltipPersistent)
|
|
60
|
-
this._popup.addEventListener('click', this._destroyTooltip);
|
|
61
|
-
window.addEventListener('scroll', this._destroyTooltip, true);
|
|
62
|
-
};
|
|
63
|
-
this._destroyTooltip = (event = undefined) => {
|
|
64
|
-
const removeFromDOM = () => {
|
|
65
|
-
this._popup?.remove();
|
|
66
|
-
this._popup = undefined;
|
|
67
|
-
};
|
|
68
|
-
window.removeEventListener('scroll', this._destroyTooltip, true);
|
|
69
|
-
if (!this._popup)
|
|
70
|
-
return;
|
|
71
|
-
this._popup.removeEventListener('click', this._destroyTooltip);
|
|
72
|
-
const noAnimation = ['scroll', 'resize'].includes(event?.type);
|
|
73
|
-
if (noAnimation) {
|
|
74
|
-
removeFromDOM();
|
|
75
|
-
}
|
|
76
|
-
else {
|
|
77
|
-
const popup = this._popup;
|
|
78
|
-
requestAnimationFrame(function () {
|
|
79
|
-
popup.style.opacity = '0';
|
|
80
|
-
});
|
|
81
|
-
setTimeout(() => {
|
|
82
|
-
removeFromDOM();
|
|
83
|
-
}, 200);
|
|
84
|
-
}
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
ngOnDestroy() {
|
|
88
|
-
this._destroyTooltip();
|
|
89
|
-
}
|
|
90
|
-
_constructElement(popup) {
|
|
91
|
-
const popupContent = document.createElement('div');
|
|
92
|
-
popupContent.innerHTML = this.tooltip || 'Add your text to this tooltip';
|
|
93
|
-
popupContent.classList.add(this.tooltipContentClass);
|
|
94
|
-
popup.appendChild(popupContent);
|
|
95
|
-
popup.classList.add('cps-tooltip');
|
|
96
|
-
popup.style.maxWidth = convertSize(this.tooltipMaxWidth);
|
|
97
|
-
document.body.appendChild(popup);
|
|
98
|
-
requestAnimationFrame(function () {
|
|
99
|
-
popup.style.opacity = '1';
|
|
100
|
-
});
|
|
101
|
-
const coords = this._getCoords();
|
|
102
|
-
if (!coords) {
|
|
103
|
-
this._destroyTooltip();
|
|
104
|
-
throw new Error('Not enough space on the screen for the tooltip!');
|
|
105
|
-
}
|
|
106
|
-
popup.style.left = coords.left.toString() + 'px';
|
|
107
|
-
popup.style.top = coords.top.toString() + 'px';
|
|
108
|
-
}
|
|
109
|
-
_getCoords() {
|
|
110
|
-
function isInsideScreen(coords) {
|
|
111
|
-
return (coords.top >= 0 &&
|
|
112
|
-
coords.left >= 0 &&
|
|
113
|
-
coords.left + popupRect.width <= window.innerWidth &&
|
|
114
|
-
coords.top + popupRect.height <= window.innerHeight);
|
|
115
|
-
}
|
|
116
|
-
let positions = ['top', 'bottom', 'left', 'right'];
|
|
117
|
-
positions = positions.filter((item) => item !== this.tooltipPosition);
|
|
118
|
-
positions.unshift(this.tooltipPosition);
|
|
119
|
-
const targetEl = this._elementRef.nativeElement;
|
|
120
|
-
const targetElRect = targetEl.getBoundingClientRect();
|
|
121
|
-
const popupRect = this._popup.getBoundingClientRect();
|
|
122
|
-
for (const pos of positions) {
|
|
123
|
-
const coords = this._getCoordsForPosition(pos, targetEl, targetElRect, popupRect);
|
|
124
|
-
if (isInsideScreen(coords)) {
|
|
125
|
-
return coords;
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
return undefined;
|
|
129
|
-
}
|
|
130
|
-
_getCoordsForPosition(position, targetEl, targetElRect, popupRect) {
|
|
131
|
-
switch (position) {
|
|
132
|
-
case 'bottom':
|
|
133
|
-
return {
|
|
134
|
-
left: targetElRect.left +
|
|
135
|
-
window.scrollX +
|
|
136
|
-
(targetEl.offsetWidth - popupRect.width) / 2,
|
|
137
|
-
top: targetElRect.bottom + window.scrollY + 8
|
|
138
|
-
};
|
|
139
|
-
case 'left':
|
|
140
|
-
return {
|
|
141
|
-
left: targetElRect.left - window.scrollX - popupRect.width - 8,
|
|
142
|
-
top: targetElRect.top +
|
|
143
|
-
window.scrollY +
|
|
144
|
-
(targetEl.offsetHeight - popupRect.height) / 2
|
|
145
|
-
};
|
|
146
|
-
case 'right':
|
|
147
|
-
return {
|
|
148
|
-
left: targetElRect.right + window.scrollX + 8,
|
|
149
|
-
top: targetElRect.top +
|
|
150
|
-
window.scrollY +
|
|
151
|
-
(targetEl.offsetHeight - popupRect.height) / 2
|
|
152
|
-
};
|
|
153
|
-
default:
|
|
154
|
-
return {
|
|
155
|
-
left: targetElRect.left +
|
|
156
|
-
window.scrollX +
|
|
157
|
-
(targetEl.offsetWidth - popupRect.width) / 2,
|
|
158
|
-
top: targetElRect.top + window.scrollY - popupRect.height - 8
|
|
159
|
-
};
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
onMouseEnter() {
|
|
163
|
-
if (this.tooltipOpenOn === 'hover') {
|
|
164
|
-
clearTimeout(this._hideTimeout);
|
|
165
|
-
this._showTimeout = setTimeout(this._createTooltip, this.tooltipOpenDelay);
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
onMouseLeave() {
|
|
169
|
-
clearTimeout(this._showTimeout);
|
|
170
|
-
if (!this.tooltipPersistent) {
|
|
171
|
-
this._hideTimeout = setTimeout(this._destroyTooltip, this.tooltipCloseDelay);
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
onFocus() {
|
|
175
|
-
if (this.tooltipOpenOn === 'focus') {
|
|
176
|
-
clearTimeout(this._hideTimeout);
|
|
177
|
-
this._showTimeout = setTimeout(this._createTooltip, this.tooltipOpenDelay);
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
onBlur() {
|
|
181
|
-
clearTimeout(this._showTimeout);
|
|
182
|
-
if (!this.tooltipPersistent && this.tooltipOpenOn === 'focus') {
|
|
183
|
-
this._hideTimeout = setTimeout(this._destroyTooltip, this.tooltipCloseDelay);
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
onClick() {
|
|
187
|
-
if (this.tooltipOpenOn === 'click') {
|
|
188
|
-
clearTimeout(this._hideTimeout);
|
|
189
|
-
this._showTimeout = setTimeout(this._createTooltip, 0);
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
onDocumentClick(target) {
|
|
193
|
-
if (this.tooltipPersistent && this._popup) {
|
|
194
|
-
if (!target?.isConnected) {
|
|
195
|
-
return;
|
|
196
|
-
}
|
|
197
|
-
const clickedInside = this._elementRef?.nativeElement?.contains(target);
|
|
198
|
-
if (!clickedInside) {
|
|
199
|
-
this._destroyTooltip();
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
onPageResize(event) {
|
|
204
|
-
if (this._popup)
|
|
205
|
-
this._destroyTooltip(event);
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
CpsTooltipDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CpsTooltipDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
209
|
-
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()", "document:click": "onDocumentClick($event.target)", "window:resize": "onPageResize($event)" } }, ngImport: i0 });
|
|
210
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CpsTooltipDirective, decorators: [{
|
|
211
|
-
type: Directive,
|
|
212
|
-
args: [{
|
|
213
|
-
selector: '[cpsTooltip]',
|
|
214
|
-
standalone: true
|
|
215
|
-
}]
|
|
216
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { tooltip: [{
|
|
217
|
-
type: Input,
|
|
218
|
-
args: ['cpsTooltip']
|
|
219
|
-
}], tooltipOpenDelay: [{
|
|
220
|
-
type: Input
|
|
221
|
-
}], tooltipCloseDelay: [{
|
|
222
|
-
type: Input
|
|
223
|
-
}], tooltipOpenOn: [{
|
|
224
|
-
type: Input
|
|
225
|
-
}], tooltipPosition: [{
|
|
226
|
-
type: Input
|
|
227
|
-
}], tooltipPersistent: [{
|
|
228
|
-
type: Input
|
|
229
|
-
}], tooltipDisabled: [{
|
|
230
|
-
type: Input
|
|
231
|
-
}], tooltipMaxWidth: [{
|
|
232
|
-
type: Input
|
|
233
|
-
}], tooltipContentClass: [{
|
|
234
|
-
type: Input
|
|
235
|
-
}], onMouseEnter: [{
|
|
236
|
-
type: HostListener,
|
|
237
|
-
args: ['mouseenter']
|
|
238
|
-
}], onMouseLeave: [{
|
|
239
|
-
type: HostListener,
|
|
240
|
-
args: ['mouseleave']
|
|
241
|
-
}], onFocus: [{
|
|
242
|
-
type: HostListener,
|
|
243
|
-
args: ['focus']
|
|
244
|
-
}], onBlur: [{
|
|
245
|
-
type: HostListener,
|
|
246
|
-
args: ['blur']
|
|
247
|
-
}], onClick: [{
|
|
248
|
-
type: HostListener,
|
|
249
|
-
args: ['click']
|
|
250
|
-
}], onDocumentClick: [{
|
|
251
|
-
type: HostListener,
|
|
252
|
-
args: ['document:click', ['$event.target']]
|
|
253
|
-
}], onPageResize: [{
|
|
254
|
-
type: HostListener,
|
|
255
|
-
args: ['window:resize', ['$event']]
|
|
256
|
-
}] } });
|
|
257
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BzLXRvb2x0aXAuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL2RpcmVjdGl2ZXMvY3BzLXRvb2x0aXAuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFFTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7O0FBSzNEOzs7R0FHRztBQUtILE1BQU0sT0FBTyxtQkFBbUI7SUEyRDlCLGtEQUFrRDtJQUNsRCxZQUFvQixXQUFvQztRQUFwQyxnQkFBVyxHQUFYLFdBQVcsQ0FBeUI7UUFyRHhEOzs7V0FHRztRQUNNLHFCQUFnQixHQUFvQixHQUFHLENBQUM7UUFFakQ7OztXQUdHO1FBQ00sc0JBQWlCLEdBQW9CLEdBQUcsQ0FBQztRQUVsRDs7O1dBR0c7UUFDTSxrQkFBYSxHQUFxQixPQUFPLENBQUM7UUFFbkQ7OztXQUdHO1FBQ00sb0JBQWUsR0FBdUIsS0FBSyxDQUFDO1FBRXJEOzs7V0FHRztRQUNNLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUVuQzs7O1dBR0c7UUFDTSxvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUVqQzs7O1dBR0c7UUFDTSxvQkFBZSxHQUFvQixNQUFNLENBQUM7UUFFbkQ7OztXQUdHO1FBQ00sd0JBQW1CLEdBQUcscUJBQXFCLENBQUM7UUFhN0MsbUJBQWMsR0FBRyxHQUFHLEVBQUU7WUFDNUIsSUFBSSxJQUFJLENBQUMsTUFBTTtnQkFBRSxPQUFPO1lBRXhCLElBQUksSUFBSSxDQUFDLGVBQWU7Z0JBQUUsT0FBTztZQUVqQyxJQUFJLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FB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QUF2QyxZQUFZO3VCQUFDLFlBQVk7Z0JBV0gsT0FBTztzQkFBN0IsWUFBWTt1QkFBQyxPQUFPO2dCQVdDLE1BQU07c0JBQTNCLFlBQVk7dUJBQUMsTUFBTTtnQkFVRyxPQUFPO3NCQUE3QixZQUFZO3VCQUFDLE9BQU87Z0JBU3JCLGVBQWU7c0JBRGQsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLGVBQWUsQ0FBQztnQkFhTixZQUFZO3NCQUF0RCxZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY29udmVydFNpemUgfSBmcm9tICcuLi91dGlscy9pbnRlcm5hbC9zaXplLXV0aWxzJztcblxuZXhwb3J0IHR5cGUgQ3BzVG9vbHRpcFBvc2l0aW9uID0gJ3RvcCcgfCAnYm90dG9tJyB8ICdsZWZ0JyB8ICdyaWdodCc7XG5leHBvcnQgdHlwZSBDcHNUb29sdGlwT3Blbk9uID0gJ2hvdmVyJyB8ICdjbGljaycgfCAnZm9jdXMnO1xuXG4vKipcbiAqIENwc1Rvb2x0aXBEaXJlY3RpdmUgcHJvdmlkZXMgYWR2aXNvcnkgaW5mb3JtYXRpb24gZm9yIGEgdGFyZ2V0IGVsZW1lbnQuXG4gKiBAZ3JvdXAgRGlyZWN0aXZlc1xuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbY3BzVG9vbHRpcF0nLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIENwc1Rvb2x0aXBEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogVG9vbHRpcCB0ZXh0IG9yIGh0bWwgdG8gc2hvdy5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoJ2Nwc1Rvb2x0aXAnKSB0b29sdGlwITogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZWxheSB0byBzaG93IHRoZSB0b29sdGlwIGluIG1pbGxpc2Vjb25kcywgaXQgY2FuIGJlIG9mIHR5cGUgc3RyaW5nIG9yIG51bWJlci5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSB0b29sdGlwT3BlbkRlbGF5OiBzdHJpbmcgfCBudW1iZXIgPSAzMDA7XG5cbiAgLyoqXG4gICAqIERlbGF5IHRvIGhpZGUgdGhlIHRvb2x0aXAgaW4gbWlsbGlzZWNvbmRzLCBpdCBjYW4gYmUgb2YgdHlwZSBzdHJpbmcgb3IgbnVtYmVyLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHRvb2x0aXBDbG9zZURlbGF5OiBzdHJpbmcgfCBudW1iZXIgPSAzMDA7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0aGUgdG9vbHRpcCBzaG91bGQgb3BlbiBvbiBob3ZlciwgY2xpY2sgb3IgZm9jdXMuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgdG9vbHRpcE9wZW5PbjogQ3BzVG9vbHRpcE9wZW5PbiA9ICdob3Zlcic7XG5cbiAgLyoqXG4gICAqIFBvc2l0aW9uIG9mIHRoZSB0b29sdGlwLCBpdCBjYW4gYmUgJ3RvcCcsICdib3R0b20nLCAnbGVmdCcgb3IgJ3JpZ2h0Jy5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSB0b29sdGlwUG9zaXRpb246IENwc1Rvb2x0aXBQb3NpdGlvbiA9ICd0b3AnO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHRvb2x0aXAgaXMgcGVyc2lzdGVudC5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSB0b29sdGlwUGVyc2lzdGVudCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBXaGVuIHByZXNlbnQsIGl0IHNwZWNpZmllcyB0aGF0IHRoZSB0b29sdGlwIHNob3VsZCBiZSBkaXNhYmxlZC5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSB0b29sdGlwRGlzYWJsZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogTWF4IHdpZHRoIG9mIHRoZSB0b29sdGlwIG9mIHR5cGUgbnVtYmVyIGRlbm90aW5nIHBpeGVscyBvciBzdHJpbmcuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgdG9vbHRpcE1heFdpZHRoOiBudW1iZXIgfCBzdHJpbmcgPSAnMTAwJSc7XG5cbiAgLyoqXG4gICAqIFRvb2x0aXAgY29udGVudCBjbGFzcyBmb3Igc3R5bGluZy5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSB0b29sdGlwQ29udGVudENsYXNzID0gJ2Nwcy10b29sdGlwLWNvbnRlbnQnO1xuXG4gIHByaXZhdGUgX3BvcHVwPzogSFRNTERpdkVsZW1lbnQ7XG4gIHByaXZhdGUgX3Nob3dUaW1lb3V0PzogYW55O1xuICBwcml2YXRlIF9oaWRlVGltZW91dD86IGFueTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlbGVzcy1jb25zdHJ1Y3RvclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge31cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kZXN0cm95VG9vbHRpcCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY3JlYXRlVG9vbHRpcCA9ICgpID0+IHtcbiAgICBpZiAodGhpcy5fcG9wdXApIHJldHVybjtcblxuICAgIGlmICh0aGlzLnRvb2x0aXBEaXNhYmxlZCkgcmV0dXJuO1xuXG4gICAgdGhpcy5fcG9wdXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICB0aGlzLl9jb25zdHJ1Y3RFbGVtZW50KHRoaXMuX3BvcHVwKTtcblxuICAgIGlmICh0aGlzLnRvb2x0aXBQZXJzaXN0ZW50KVxuICAgICAgdGhpcy5fcG9wdXAuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLl9kZXN0cm95VG9vbHRpcCk7XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5fZGVzdHJveVRvb2x0aXAsIHRydWUpO1xuICB9O1xuXG4gIHByaXZhdGUgX2Rlc3Ryb3lUb29sdGlwID0gKGV2ZW50OiBhbnkgPSB1bmRlZmluZWQpID0+IHtcbiAgICBjb25zdCByZW1vdmVGcm9tRE9NID0gKCkgPT4ge1xuICAgICAgdGhpcy5fcG9wdXA/LnJlbW92ZSgpO1xuICAgICAgdGhpcy5fcG9wdXAgPSB1bmRlZmluZWQ7XG4gICAgfTtcblxuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLl9kZXN0cm95VG9vbHRpcCwgdHJ1ZSk7XG4gICAgaWYgKCF0aGlzLl9wb3B1cCkgcmV0dXJuO1xuXG4gICAgdGhpcy5fcG9wdXAucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLl9kZXN0cm95VG9vbHRpcCk7XG5cbiAgICBjb25zdCBub0FuaW1hdGlvbiA9IFsnc2Nyb2xsJywgJ3Jlc2l6ZSddLmluY2x1ZGVzKGV2ZW50Py50eXBlKTtcblxuICAgIGlmIChub0FuaW1hdGlvbikge1xuICAgICAgcmVtb3ZlRnJvbURPTSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBwb3B1cCA9IHRoaXMuX3BvcHVwIGFzIEhUTUxEaXZFbGVtZW50O1xuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcG9wdXAuc3R5bGUub3BhY2l0eSA9ICcwJztcbiAgICAgIH0pO1xuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgcmVtb3ZlRnJvbURPTSgpO1xuICAgICAgfSwgMjAwKTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBfY29uc3RydWN0RWxlbWVudChwb3B1cDogSFRNTERpdkVsZW1lbnQpIHtcbiAgICBjb25zdCBwb3B1cENvbnRlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBwb3B1cENvbnRlbnQuaW5uZXJIVE1MID0gdGhpcy50b29sdGlwIHx8ICdBZGQgeW91ciB0ZXh0IHRvIHRoaXMgdG9vbHRpcCc7XG4gICAgcG9wdXBDb250ZW50LmNsYXNzTGlzdC5hZGQodGhpcy50b29sdGlwQ29udGVudENsYXNzKTtcbiAgICBwb3B1cC5hcHBlbmRDaGlsZChwb3B1cENvbnRlbnQpO1xuXG4gICAgcG9wdXAuY2xhc3NMaXN0LmFkZCgnY3BzLXRvb2x0aXAnKTtcbiAgICBwb3B1cC5zdHlsZS5tYXhXaWR0aCA9IGNvbnZlcnRTaXplKHRoaXMudG9vbHRpcE1heFdpZHRoKTtcblxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocG9wdXApO1xuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbiAoKSB7XG4gICAgICBwb3B1cC5zdHlsZS5vcGFjaXR5ID0gJzEnO1xuICAgIH0pO1xuXG4gICAgY29uc3QgY29vcmRzID0gdGhpcy5fZ2V0Q29vcmRzKCk7XG4gICAgaWYgKCFjb29yZHMpIHtcbiAgICAgIHRoaXMuX2Rlc3Ryb3lUb29sdGlwKCk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBlbm91Z2ggc3BhY2Ugb24gdGhlIHNjcmVlbiBmb3IgdGhlIHRvb2x0aXAhJyk7XG4gICAgfVxuXG4gICAgcG9wdXAuc3R5bGUubGVmdCA9IGNvb3Jkcy5sZWZ0LnRvU3RyaW5nKCkgKyAncHgnO1xuICAgIHBvcHVwLnN0eWxlLnRvcCA9IGNvb3Jkcy50b3AudG9TdHJpbmcoKSArICdweCc7XG4gIH1cblxuICBwcml2YXRlIF9nZXRDb29yZHMoKTogeyBsZWZ0OiBudW1iZXI7IHRvcDogbnVtYmVyIH0gfCB1bmRlZmluZWQge1xuICAgIGZ1bmN0aW9uIGlzSW5zaWRlU2NyZWVuKGNvb3JkczogeyBsZWZ0OiBudW1iZXI7IHRvcDogbnVtYmVyIH0pOiBib29sZWFuIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIGNvb3Jkcy50b3AgPj0gMCAmJlxuICAgICAgICBjb29yZHMubGVmdCA+PSAwICYmXG4gICAgICAgIGNvb3Jkcy5sZWZ0ICsgcG9wdXBSZWN0LndpZHRoIDw9IHdpbmRvdy5pbm5lcldpZHRoICYmXG4gICAgICAgIGNvb3Jkcy50b3AgKyBwb3B1cFJlY3QuaGVpZ2h0IDw9IHdpbmRvdy5pbm5lckhlaWdodFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBsZXQgcG9zaXRpb25zID0gWyd0b3AnLCAnYm90dG9tJywgJ2xlZnQnLCAncmlnaHQnXSBhcyBDcHNUb29sdGlwUG9zaXRpb25bXTtcbiAgICBwb3NpdGlvbnMgPSBwb3NpdGlvbnMuZmlsdGVyKChpdGVtKSA9PiBpdGVtICE9PSB0aGlzLnRvb2x0aXBQb3NpdGlvbik7XG4gICAgcG9zaXRpb25zLnVuc2hpZnQodGhpcy50b29sdGlwUG9zaXRpb24pO1xuXG4gICAgY29uc3QgdGFyZ2V0RWwgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3QgdGFyZ2V0RWxSZWN0ID0gdGFyZ2V0RWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgcG9wdXBSZWN0ID0gKHRoaXMuX3BvcHVwIGFzIEhUTUxEaXZFbGVtZW50KS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgIGZvciAoY29uc3QgcG9zIG9mIHBvc2l0aW9ucykge1xuICAgICAgY29uc3QgY29vcmRzID0gdGhpcy5fZ2V0Q29vcmRzRm9yUG9zaXRpb24oXG4gICAgICAgIHBvcyBhcyBDcHNUb29sdGlwUG9zaXRpb24sXG4gICAgICAgIHRhcmdldEVsLFxuICAgICAgICB0YXJnZXRFbFJlY3QsXG4gICAgICAgIHBvcHVwUmVjdFxuICAgICAgKTtcblxuICAgICAgaWYgKGlzSW5zaWRlU2NyZWVuKGNvb3JkcykpIHtcbiAgICAgICAgcmV0dXJuIGNvb3JkcztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0Q29vcmRzRm9yUG9zaXRpb24oXG4gICAgcG9zaXRpb246IENwc1Rvb2x0aXBQb3NpdGlvbixcbiAgICB0YXJnZXRFbDogSFRNTEVsZW1lbnQsXG4gICAgdGFyZ2V0RWxSZWN0OiBET01SZWN0LFxuICAgIHBvcHVwUmVjdDogRE9NUmVjdFxuICApOiB7XG4gICAgbGVmdDogbnVtYmVyO1xuICAgIHRvcDogbnVtYmVyO1xuICB9IHtcbiAgICBzd2l0Y2ggKHBvc2l0aW9uKSB7XG4gICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGxlZnQ6XG4gICAgICAgICAgICB0YXJnZXRFbFJlY3QubGVmdCArXG4gICAgICAgICAgICB3aW5kb3cuc2Nyb2xsWCArXG4gICAgICAgICAgICAodGFyZ2V0RWwub2Zmc2V0V2lkdGggLSBwb3B1cFJlY3Qud2lkdGgpIC8gMixcbiAgICAgICAgICB0b3A6IHRhcmdldEVsUmVjdC5ib3R0b20gKyB3aW5kb3cuc2Nyb2xsWSArIDhcbiAgICAgICAgfTtcbiAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGxlZnQ6IHRhcmdldEVsUmVjdC5sZWZ0IC0gd2luZG93LnNjcm9sbFggLSBwb3B1cFJlY3Qud2lkdGggLSA4LFxuICAgICAgICAgIHRvcDpcbiAgICAgICAgICAgIHRhcmdldEVsUmVjdC50b3AgK1xuICAgICAgICAgICAgd2luZG93LnNjcm9sbFkgK1xuICAgICAgICAgICAgKHRhcmdldEVsLm9mZnNldEhlaWdodCAtIHBvcHVwUmVjdC5oZWlnaHQpIC8gMlxuICAgICAgICB9O1xuICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGxlZnQ6IHRhcmdldEVsUmVjdC5yaWdodCArIHdpbmRvdy5zY3JvbGxYICsgOCxcbiAgICAgICAgICB0b3A6XG4gICAgICAgICAgICB0YXJnZXRFbFJlY3QudG9wICtcbiAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxZICtcbiAgICAgICAgICAgICh0YXJnZXRFbC5vZmZzZXRIZWlnaHQgLSBwb3B1cFJlY3QuaGVpZ2h0KSAvIDJcbiAgICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbGVmdDpcbiAgICAgICAgICAgIHRhcmdldEVsUmVjdC5sZWZ0ICtcbiAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxYICtcbiAgICAgICAgICAgICh0YXJnZXRFbC5vZmZzZXRXaWR0aCAtIHBvcHVwUmVjdC53aWR0aCkgLyAyLFxuICAgICAgICAgIHRvcDogdGFyZ2V0RWxSZWN0LnRvcCArIHdpbmRvdy5zY3JvbGxZIC0gcG9wdXBSZWN0LmhlaWdodCAtIDhcbiAgICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdtb3VzZWVudGVyJykgb25Nb3VzZUVudGVyKCkge1xuICAgIGlmICh0aGlzLnRvb2x0aXBPcGVuT24gPT09ICdob3ZlcicpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9oaWRlVGltZW91dCk7XG5cbiAgICAgIHRoaXMuX3Nob3dUaW1lb3V0ID0gc2V0VGltZW91dChcbiAgICAgICAgdGhpcy5fY3JlYXRlVG9vbHRpcCxcbiAgICAgICAgdGhpcy50b29sdGlwT3BlbkRlbGF5IGFzIG51bWJlclxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdtb3VzZWxlYXZlJykgb25Nb3VzZUxlYXZlKCkge1xuICAgIGNsZWFyVGltZW91dCh0aGlzLl9zaG93VGltZW91dCk7XG5cbiAgICBpZiAoIXRoaXMudG9vbHRpcFBlcnNpc3RlbnQpIHtcbiAgICAgIHRoaXMuX2hpZGVUaW1lb3V0ID0gc2V0VGltZW91dChcbiAgICAgICAgdGhpcy5fZGVzdHJveVRvb2x0aXAsXG4gICAgICAgIHRoaXMudG9vbHRpcENsb3NlRGVsYXkgYXMgbnVtYmVyXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2ZvY3VzJykgb25Gb2N1cygpIHtcbiAgICBpZiAodGhpcy50b29sdGlwT3Blbk9uID09PSAnZm9jdXMnKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5faGlkZVRpbWVvdXQpO1xuXG4gICAgICB0aGlzLl9zaG93VGltZW91dCA9IHNldFRpbWVvdXQoXG4gICAgICAgIHRoaXMuX2NyZWF0ZVRvb2x0aXAsXG4gICAgICAgIHRoaXMudG9vbHRpcE9wZW5EZWxheSBhcyBudW1iZXJcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignYmx1cicpIG9uQmx1cigpIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5fc2hvd1RpbWVvdXQpO1xuICAgIGlmICghdGhpcy50b29sdGlwUGVyc2lzdGVudCAmJiB0aGlzLnRvb2x0aXBPcGVuT24gPT09ICdmb2N1cycpIHtcbiAgICAgIHRoaXMuX2hpZGVUaW1lb3V0ID0gc2V0VGltZW91dChcbiAgICAgICAgdGhpcy5fZGVzdHJveVRvb2x0aXAsXG4gICAgICAgIHRoaXMudG9vbHRpcENsb3NlRGVsYXkgYXMgbnVtYmVyXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJykgb25DbGljaygpIHtcbiAgICBpZiAodGhpcy50b29sdGlwT3Blbk9uID09PSAnY2xpY2snKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5faGlkZVRpbWVvdXQpO1xuXG4gICAgICB0aGlzLl9zaG93VGltZW91dCA9IHNldFRpbWVvdXQodGhpcy5fY3JlYXRlVG9vbHRpcCwgMCk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudC50YXJnZXQnXSlcbiAgb25Eb2N1bWVudENsaWNrKHRhcmdldDogYW55KSB7XG4gICAgaWYgKHRoaXMudG9vbHRpcFBlcnNpc3RlbnQgJiYgdGhpcy5fcG9wdXApIHtcbiAgICAgIGlmICghdGFyZ2V0Py5pc0Nvbm5lY3RlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBjbGlja2VkSW5zaWRlID0gdGhpcy5fZWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudD8uY29udGFpbnModGFyZ2V0KTtcbiAgICAgIGlmICghY2xpY2tlZEluc2lkZSkge1xuICAgICAgICB0aGlzLl9kZXN0cm95VG9vbHRpcCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKSBvblBhZ2VSZXNpemUoZXZlbnQ6IEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuX3BvcHVwKSB0aGlzLl9kZXN0cm95VG9vbHRpcChldmVudCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { Pipe } from '@angular/core';
|
|
2
|
-
import { isEqual } from 'lodash-es';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class CombineLabelsPipe {
|
|
5
|
-
transform(values, options, valueKey, labelKey, returnObject) {
|
|
6
|
-
return values
|
|
7
|
-
.map((v) => {
|
|
8
|
-
if (returnObject) {
|
|
9
|
-
return v[labelKey];
|
|
10
|
-
}
|
|
11
|
-
else {
|
|
12
|
-
const option = options.find((opt) => isEqual(opt[valueKey], v));
|
|
13
|
-
return option ? option[labelKey] : '';
|
|
14
|
-
}
|
|
15
|
-
})
|
|
16
|
-
.join(', ');
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
CombineLabelsPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CombineLabelsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
20
|
-
CombineLabelsPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: CombineLabelsPipe, isStandalone: true, name: "combineLabels" });
|
|
21
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CombineLabelsPipe, decorators: [{
|
|
22
|
-
type: Pipe,
|
|
23
|
-
args: [{ standalone: true, name: 'combineLabels' }]
|
|
24
|
-
}] });
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYmluZS1sYWJlbHMucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nwcy11aS1raXQvc3JjL2xpYi9waXBlcy9pbnRlcm5hbC9jb21iaW5lLWxhYmVscy5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7O0FBR3BDLE1BQU0sT0FBTyxpQkFBaUI7SUFDNUIsU0FBUyxDQUNQLE1BQWEsRUFDYixPQUFjLEVBQ2QsUUFBZ0IsRUFDaEIsUUFBZ0IsRUFDaEIsWUFBcUI7UUFFckIsT0FBTyxNQUFNO2FBQ1YsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDVCxJQUFJLFlBQVksRUFBRTtnQkFDaEIsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDcEI7aUJBQU07Z0JBQ0wsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNoRSxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7YUFDdkM7UUFDSCxDQUFDLENBQUM7YUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEIsQ0FBQzs7OEdBbEJVLGlCQUFpQjs0R0FBakIsaUJBQWlCOzJGQUFqQixpQkFBaUI7a0JBRDdCLElBQUk7bUJBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc0VxdWFsIH0gZnJvbSAnbG9kYXNoLWVzJztcblxuQFBpcGUoeyBzdGFuZGFsb25lOiB0cnVlLCBuYW1lOiAnY29tYmluZUxhYmVscycgfSlcbmV4cG9ydCBjbGFzcyBDb21iaW5lTGFiZWxzUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0oXG4gICAgdmFsdWVzOiBhbnlbXSxcbiAgICBvcHRpb25zOiBhbnlbXSxcbiAgICB2YWx1ZUtleTogc3RyaW5nLFxuICAgIGxhYmVsS2V5OiBzdHJpbmcsXG4gICAgcmV0dXJuT2JqZWN0OiBib29sZWFuXG4gICk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHZhbHVlc1xuICAgICAgLm1hcCgodikgPT4ge1xuICAgICAgICBpZiAocmV0dXJuT2JqZWN0KSB7XG4gICAgICAgICAgcmV0dXJuIHZbbGFiZWxLZXldO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IG9wdGlvbiA9IG9wdGlvbnMuZmluZCgob3B0KSA9PiBpc0VxdWFsKG9wdFt2YWx1ZUtleV0sIHYpKTtcbiAgICAgICAgICByZXR1cm4gb3B0aW9uID8gb3B0aW9uW2xhYmVsS2V5XSA6ICcnO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLmpvaW4oJywgJyk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import { Injectable, Inject } from '@angular/core';
|
|
2
|
-
import { DynamicDialogInjector } from 'primeng/dynamicdialog';
|
|
3
|
-
import { DOCUMENT } from '@angular/common';
|
|
4
|
-
import { CpsDialogRef } from './utils/cps-dialog-ref';
|
|
5
|
-
import { CpsDialogConfig } from './utils/cps-dialog-config';
|
|
6
|
-
import { CpsDialogComponent } from './internal/components/cps-dialog/cps-dialog.component';
|
|
7
|
-
import { CpsConfirmationComponent } from './internal/components/cps-confirmation/cps-confirmation.component';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
/**
|
|
10
|
-
* Service for showing CpsDialog.
|
|
11
|
-
* @group Services
|
|
12
|
-
*/
|
|
13
|
-
export class CpsDialogService {
|
|
14
|
-
// eslint-disable-next-line no-useless-constructor
|
|
15
|
-
constructor(viewContainerRef, injector, document) {
|
|
16
|
-
this.viewContainerRef = viewContainerRef;
|
|
17
|
-
this.injector = injector;
|
|
18
|
-
this.document = document;
|
|
19
|
-
this.dialogComponentRefMap = new Map();
|
|
20
|
-
}
|
|
21
|
-
open(componentType, config) {
|
|
22
|
-
const dialogRef = this.appendDialogComponentToBody(config);
|
|
23
|
-
const instance = this.dialogComponentRefMap.get(dialogRef)?.instance;
|
|
24
|
-
if (instance)
|
|
25
|
-
instance.childComponentType = componentType;
|
|
26
|
-
return dialogRef;
|
|
27
|
-
}
|
|
28
|
-
openConfirmationDialog(config) {
|
|
29
|
-
if (!config.headerTitle)
|
|
30
|
-
config.headerTitle = 'Confirm the action';
|
|
31
|
-
if (!config.headerIcon)
|
|
32
|
-
config.headerIcon = 'warning';
|
|
33
|
-
if (!config.headerIconColor)
|
|
34
|
-
config.headerIconColor = 'calm';
|
|
35
|
-
if (!config.minWidth)
|
|
36
|
-
config.minWidth = '400px';
|
|
37
|
-
if (!config.maxWidth)
|
|
38
|
-
config.maxWidth = '600px';
|
|
39
|
-
const dialogRef = this.appendDialogComponentToBody(config);
|
|
40
|
-
const instance = this.dialogComponentRefMap.get(dialogRef)?.instance;
|
|
41
|
-
if (instance)
|
|
42
|
-
instance.childComponentType = CpsConfirmationComponent;
|
|
43
|
-
return dialogRef;
|
|
44
|
-
}
|
|
45
|
-
appendDialogComponentToBody(config) {
|
|
46
|
-
const map = new WeakMap();
|
|
47
|
-
map.set(CpsDialogConfig, config);
|
|
48
|
-
const dialogRef = new CpsDialogRef();
|
|
49
|
-
map.set(CpsDialogRef, dialogRef);
|
|
50
|
-
const sub = dialogRef.onClose.subscribe(() => {
|
|
51
|
-
this.dialogComponentRefMap.get(dialogRef)?.instance.close();
|
|
52
|
-
});
|
|
53
|
-
const destroySub = dialogRef.onDestroy.subscribe(() => {
|
|
54
|
-
this.removeDialogComponentFromBody(dialogRef);
|
|
55
|
-
destroySub.unsubscribe();
|
|
56
|
-
sub.unsubscribe();
|
|
57
|
-
});
|
|
58
|
-
const componentRef = this.viewContainerRef.createComponent(CpsDialogComponent, { injector: new DynamicDialogInjector(this.injector, map) });
|
|
59
|
-
const domElem = componentRef.hostView
|
|
60
|
-
.rootNodes[0];
|
|
61
|
-
this.document.body.appendChild(domElem);
|
|
62
|
-
this.dialogComponentRefMap.set(dialogRef, componentRef);
|
|
63
|
-
dialogRef._setContainerInstance(componentRef.instance);
|
|
64
|
-
return dialogRef;
|
|
65
|
-
}
|
|
66
|
-
removeDialogComponentFromBody(dialogRef) {
|
|
67
|
-
if (!dialogRef || !this.dialogComponentRefMap.has(dialogRef)) {
|
|
68
|
-
return;
|
|
69
|
-
}
|
|
70
|
-
const dialogComponentRef = this.dialogComponentRefMap.get(dialogRef);
|
|
71
|
-
if (dialogComponentRef) {
|
|
72
|
-
this.viewContainerRef.detach(this.viewContainerRef.indexOf(dialogComponentRef.hostView));
|
|
73
|
-
dialogComponentRef.destroy();
|
|
74
|
-
this.dialogComponentRefMap.delete(dialogRef);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
CpsDialogService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CpsDialogService, deps: [{ token: i0.ViewContainerRef }, { token: i0.Injector }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
79
|
-
CpsDialogService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CpsDialogService });
|
|
80
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CpsDialogService, decorators: [{
|
|
81
|
-
type: Injectable
|
|
82
|
-
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.Injector }, { type: Document, decorators: [{
|
|
83
|
-
type: Inject,
|
|
84
|
-
args: [DOCUMENT]
|
|
85
|
-
}] }]; } });
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BzLWRpYWxvZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL3NlcnZpY2VzL2Nwcy1kaWFsb2cvY3BzLWRpYWxvZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxVQUFVLEVBS1YsTUFBTSxFQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQzNGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1FQUFtRSxDQUFDOztBQUU3Rzs7O0dBR0c7QUFFSCxNQUFNLE9BQU8sZ0JBQWdCO0lBSTNCLGtEQUFrRDtJQUNsRCxZQUNVLGdCQUFrQyxFQUNsQyxRQUFrQixFQUNBLFFBQWtCO1FBRnBDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNBLGFBQVEsR0FBUixRQUFRLENBQVU7UUFQOUMsMEJBQXFCLEdBQ25CLElBQUksR0FBRyxFQUFFLENBQUM7SUFPVCxDQUFDO0lBRUcsSUFBSSxDQUFDLGFBQXdCLEVBQUUsTUFBdUI7UUFDM0QsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTNELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsUUFBUSxDQUFDO1FBQ3JFLElBQUks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UyxDQUFDLENBQUM7UUFDckUsSUFBSSxrQkFBa0IsRUFBRTtZQUN0QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUMxQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUMzRCxDQUFDO1lBQ0Ysa0JBQWtCLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUM5QztJQUNILENBQUM7OzZHQS9FVSxnQkFBZ0IsMEVBUWpCLFFBQVE7aUhBUlAsZ0JBQWdCOzJGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVU7OzBCQVNOLE1BQU07MkJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEluamVjdGFibGUsXG4gIEluamVjdG9yLFxuICBUeXBlLFxuICBFbWJlZGRlZFZpZXdSZWYsXG4gIENvbXBvbmVudFJlZixcbiAgSW5qZWN0LFxuICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRHluYW1pY0RpYWxvZ0luamVjdG9yIH0gZnJvbSAncHJpbWVuZy9keW5hbWljZGlhbG9nJztcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENwc0RpYWxvZ1JlZiB9IGZyb20gJy4vdXRpbHMvY3BzLWRpYWxvZy1yZWYnO1xuaW1wb3J0IHsgQ3BzRGlhbG9nQ29uZmlnIH0gZnJvbSAnLi91dGlscy9jcHMtZGlhbG9nLWNvbmZpZyc7XG5pbXBvcnQgeyBDcHNEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL2ludGVybmFsL2NvbXBvbmVudHMvY3BzLWRpYWxvZy9jcHMtZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDcHNDb25maXJtYXRpb25Db21wb25lbnQgfSBmcm9tICcuL2ludGVybmFsL2NvbXBvbmVudHMvY3BzLWNvbmZpcm1hdGlvbi9jcHMtY29uZmlybWF0aW9uLmNvbXBvbmVudCc7XG5cbi8qKlxuICogU2VydmljZSBmb3Igc2hvd2luZyBDcHNEaWFsb2cuXG4gKiBAZ3JvdXAgU2VydmljZXNcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENwc0RpYWxvZ1NlcnZpY2Uge1xuICBkaWFsb2dDb21wb25lbnRSZWZNYXA6IE1hcDxDcHNEaWFsb2dSZWYsIENvbXBvbmVudFJlZjxDcHNEaWFsb2dDb21wb25lbnQ+PiA9XG4gICAgbmV3IE1hcCgpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLWNvbnN0cnVjdG9yXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudFxuICApIHt9XG5cbiAgcHVibGljIG9wZW4oY29tcG9uZW50VHlwZTogVHlwZTxhbnk+LCBjb25maWc6IENwc0RpYWxvZ0NvbmZpZyk6IENwc0RpYWxvZ1JlZiB7XG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5hcHBlbmREaWFsb2dDb21wb25lbnRUb0JvZHkoY29uZmlnKTtcblxuICAgIGNvbnN0IGluc3RhbmNlID0gdGhpcy5kaWFsb2dDb21wb25lbnRSZWZNYXAuZ2V0KGRpYWxvZ1JlZik/Lmluc3RhbmNlO1xuICAgIGlmIChpbnN0YW5jZSkgaW5zdGFuY2UuY2hpbGRDb21wb25lbnRUeXBlID0gY29tcG9uZW50VHlwZTtcblxuICAgIHJldHVybiBkaWFsb2dSZWY7XG4gIH1cblxuICBwdWJsaWMgb3BlbkNvbmZpcm1hdGlvbkRpYWxvZyhjb25maWc6IENwc0RpYWxvZ0NvbmZpZyk6IENwc0RpYWxvZ1JlZiB7XG4gICAgaWYgKCFjb25maWcuaGVhZGVyVGl0bGUpIGNvbmZpZy5oZWFkZXJUaXRsZSA9ICdDb25maXJtIHRoZSBhY3Rpb24nO1xuICAgIGlmICghY29uZmlnLmhlYWRlckljb24pIGNvbmZpZy5oZWFkZXJJY29uID0gJ3dhcm5pbmcnO1xuICAgIGlmICghY29uZmlnLmhlYWRlckljb25Db2xvcikgY29uZmlnLmhlYWRlckljb25Db2xvciA9ICdjYWxtJztcbiAgICBpZiAoIWNvbmZpZy5taW5XaWR0aCkgY29uZmlnLm1pbldpZHRoID0gJzQwMHB4JztcbiAgICBpZiAoIWNvbmZpZy5tYXhXaWR0aCkgY29uZmlnLm1heFdpZHRoID0gJzYwMHB4JztcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmFwcGVuZERpYWxvZ0NvbXBvbmVudFRvQm9keShjb25maWcpO1xuXG4gICAgY29uc3QgaW5zdGFuY2UgPSB0aGlzLmRpYWxvZ0NvbXBvbmVudFJlZk1hcC5nZXQoZGlhbG9nUmVmKT8uaW5zdGFuY2U7XG4gICAgaWYgKGluc3RhbmNlKSBpbnN0YW5jZS5jaGlsZENvbXBvbmVudFR5cGUgPSBDcHNDb25maXJtYXRpb25Db21wb25lbnQ7XG5cbiAgICByZXR1cm4gZGlhbG9nUmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBlbmREaWFsb2dDb21wb25lbnRUb0JvZHkoY29uZmlnOiBDcHNEaWFsb2dDb25maWcpIHtcbiAgICBjb25zdCBtYXAgPSBuZXcgV2Vha01hcCgpO1xuICAgIG1hcC5zZXQoQ3BzRGlhbG9nQ29uZmlnLCBjb25maWcpO1xuXG4gICAgY29uc3QgZGlhbG9nUmVmID0gbmV3IENwc0RpYWxvZ1JlZigpO1xuICAgIG1hcC5zZXQoQ3BzRGlhbG9nUmVmLCBkaWFsb2dSZWYpO1xuXG4gICAgY29uc3Qgc3ViID0gZGlhbG9nUmVmLm9uQ2xvc2Uuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuZGlhbG9nQ29tcG9uZW50UmVmTWFwLmdldChkaWFsb2dSZWYpPy5pbnN0YW5jZS5jbG9zZSgpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgZGVzdHJveVN1YiA9IGRpYWxvZ1JlZi5vbkRlc3Ryb3kuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMucmVtb3ZlRGlhbG9nQ29tcG9uZW50RnJvbUJvZHkoZGlhbG9nUmVmKTtcbiAgICAgIGRlc3Ryb3lTdWIudW5zdWJzY3JpYmUoKTtcbiAgICAgIHN1Yi51bnN1YnNjcmliZSgpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChcbiAgICAgIENwc0RpYWxvZ0NvbXBvbmVudCxcbiAgICAgIHsgaW5qZWN0b3I6IG5ldyBEeW5hbWljRGlhbG9nSW5qZWN0b3IodGhpcy5pbmplY3RvciwgbWFwKSB9XG4gICAgKTtcblxuICAgIGNvbnN0IGRvbUVsZW0gPSAoY29tcG9uZW50UmVmLmhvc3RWaWV3IGFzIEVtYmVkZGVkVmlld1JlZjxhbnk+KVxuICAgICAgLnJvb3ROb2Rlc1swXSBhcyBIVE1MRWxlbWVudDtcbiAgICB0aGlzLmRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9tRWxlbSk7XG5cbiAgICB0aGlzLmRpYWxvZ0NvbXBvbmVudFJlZk1hcC5zZXQoZGlhbG9nUmVmLCBjb21wb25lbnRSZWYpO1xuICAgIGRpYWxvZ1JlZi5fc2V0Q29udGFpbmVySW5zdGFuY2UoY29tcG9uZW50UmVmLmluc3RhbmNlKTtcblxuICAgIHJldHVybiBkaWFsb2dSZWY7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZURpYWxvZ0NvbXBvbmVudEZyb21Cb2R5KGRpYWxvZ1JlZjogQ3BzRGlhbG9nUmVmKSB7XG4gICAgaWYgKCFkaWFsb2dSZWYgfHwgIXRoaXMuZGlhbG9nQ29tcG9uZW50UmVmTWFwLmhhcyhkaWFsb2dSZWYpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZGlhbG9nQ29tcG9uZW50UmVmID0gdGhpcy5kaWFsb2dDb21wb25lbnRSZWZNYXAuZ2V0KGRpYWxvZ1JlZik7XG4gICAgaWYgKGRpYWxvZ0NvbXBvbmVudFJlZikge1xuICAgICAgdGhpcy52aWV3Q29udGFpbmVyUmVmLmRldGFjaChcbiAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyUmVmLmluZGV4T2YoZGlhbG9nQ29tcG9uZW50UmVmLmhvc3RWaWV3KVxuICAgICAgKTtcbiAgICAgIGRpYWxvZ0NvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgICB0aGlzLmRpYWxvZ0NvbXBvbmVudFJlZk1hcC5kZWxldGUoZGlhbG9nUmVmKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|