@jooler/inputs 0.0.55 → 0.0.57
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/choose-general-item/choose-general-item.component.mjs +75 -14
- package/esm2022/lib/choose-general-item-renderer/choose-general-item-renderer-change-event.interface.mjs +2 -0
- package/esm2022/lib/choose-general-item-renderer/choose-general-item-renderer-validation-type.enum.mjs +6 -0
- package/esm2022/lib/choose-general-item-renderer/choose-general-item-renderer.component.mjs +112 -18
- package/esm2022/lib/formcontrol-validation-msg-for-ng-select.directive.mjs +126 -0
- package/esm2022/lib/general-input-renderer/general-input-renderer-change-event.interface.mjs +2 -0
- package/esm2022/lib/general-input-renderer/general-input-renderer.component.mjs +36 -23
- package/esm2022/lib/inputs.module.mjs +21 -15
- package/esm2022/lib/tooltip-msg-error/tooltip-message-type.enum.mjs +8 -0
- package/esm2022/lib/tooltip-msg-error/tooltip-msg-error.component.mjs +213 -0
- package/esm2022/public-api.mjs +17 -12
- package/fesm2022/inputs.mjs +979 -470
- package/fesm2022/inputs.mjs.map +1 -1
- package/lib/choose-general-item/choose-general-item.component.d.ts +8 -3
- package/lib/choose-general-item-renderer/choose-general-item-renderer-change-event.interface.d.ts +9 -0
- package/lib/choose-general-item-renderer/choose-general-item-renderer-validation-type.enum.d.ts +4 -0
- package/lib/choose-general-item-renderer/choose-general-item-renderer.component.d.ts +19 -4
- package/lib/formcontrol-validation-msg-for-ng-select.directive.d.ts +23 -0
- package/lib/general-input-renderer/general-input-renderer-change-event.interface.d.ts +6 -0
- package/lib/general-input-renderer/general-input-renderer.component.d.ts +9 -4
- package/lib/inputs.module.d.ts +9 -7
- package/lib/tooltip-msg-error/tooltip-message-type.enum.d.ts +6 -0
- package/lib/tooltip-msg-error/tooltip-msg-error.component.d.ts +49 -0
- package/package.json +2 -2
- package/public-api.d.ts +16 -11
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
import { Component, HostListener, Input, } from '@angular/core';
|
|
2
|
+
import { PrimaryColors } from '../primary-colors';
|
|
3
|
+
import { ToolTipMessageType } from './tooltip-message-type.enum';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common";
|
|
6
|
+
import * as i2 from "@fortawesome/angular-fontawesome";
|
|
7
|
+
export class TooltipMsgError {
|
|
8
|
+
cdr;
|
|
9
|
+
_El;
|
|
10
|
+
width;
|
|
11
|
+
control = null;
|
|
12
|
+
messageType = ToolTipMessageType.ERROR;
|
|
13
|
+
message;
|
|
14
|
+
iconElId;
|
|
15
|
+
messageElId;
|
|
16
|
+
isLeft = true;
|
|
17
|
+
showDetails;
|
|
18
|
+
tooltipIcon;
|
|
19
|
+
tooltipMessage;
|
|
20
|
+
iconStyle;
|
|
21
|
+
isDictionary;
|
|
22
|
+
onScrollY() {
|
|
23
|
+
this.onMouseLeave();
|
|
24
|
+
}
|
|
25
|
+
constructor(cdr, _El) {
|
|
26
|
+
this.cdr = cdr;
|
|
27
|
+
this._El = _El;
|
|
28
|
+
}
|
|
29
|
+
ngOnInit() {
|
|
30
|
+
this.iconElId = this.generateRandomString();
|
|
31
|
+
this.messageElId = this.generateRandomString();
|
|
32
|
+
this.setIconStyle();
|
|
33
|
+
this.checkErrorType();
|
|
34
|
+
}
|
|
35
|
+
ngOnChanges(changes) {
|
|
36
|
+
this.checkErrorType();
|
|
37
|
+
}
|
|
38
|
+
ngOnDestroy() {
|
|
39
|
+
if (document.getElementById(this.messageElId)) {
|
|
40
|
+
document.getElementById(this.messageElId).remove();
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
checkErrorType() {
|
|
44
|
+
if (this.message) {
|
|
45
|
+
if (this.message.constructor == Object) {
|
|
46
|
+
this.isDictionary = true;
|
|
47
|
+
}
|
|
48
|
+
else if (typeof this.message === 'string') {
|
|
49
|
+
this.isDictionary = false;
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
this.isDictionary = false;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
getThemedMessageStyle() {
|
|
57
|
+
let backgroundColor;
|
|
58
|
+
let fontBorderColor;
|
|
59
|
+
switch (this.messageType) {
|
|
60
|
+
case ToolTipMessageType.ERROR:
|
|
61
|
+
backgroundColor = '#fde5f0';
|
|
62
|
+
fontBorderColor = PrimaryColors.$primaryPinkColor;
|
|
63
|
+
break;
|
|
64
|
+
case ToolTipMessageType.WARNING:
|
|
65
|
+
backgroundColor = '#fdefdd';
|
|
66
|
+
fontBorderColor = PrimaryColors.$primaryOrangeColor;
|
|
67
|
+
break;
|
|
68
|
+
case ToolTipMessageType.HELP:
|
|
69
|
+
backgroundColor = '#d1f9f2';
|
|
70
|
+
fontBorderColor = PrimaryColors.$primaryTealColor;
|
|
71
|
+
break;
|
|
72
|
+
default:
|
|
73
|
+
backgroundColor = PrimaryColors.$primaryLightGrayColor;
|
|
74
|
+
fontBorderColor = PrimaryColors.$primaryGrayColor;
|
|
75
|
+
break;
|
|
76
|
+
}
|
|
77
|
+
let style = {
|
|
78
|
+
'background-color': backgroundColor,
|
|
79
|
+
'font-weight': 'bold',
|
|
80
|
+
color: fontBorderColor,
|
|
81
|
+
border: '0.2rem solid ' + fontBorderColor,
|
|
82
|
+
'border-left': '0.5rem solid ' + fontBorderColor,
|
|
83
|
+
};
|
|
84
|
+
return style;
|
|
85
|
+
}
|
|
86
|
+
setMessageStyle() {
|
|
87
|
+
let style = {};
|
|
88
|
+
if (this.width) {
|
|
89
|
+
style['width'] = this.width;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
get messageStyle() {
|
|
93
|
+
let commonMessageStyle = {};
|
|
94
|
+
if (this.width) {
|
|
95
|
+
commonMessageStyle['width'] = this.width;
|
|
96
|
+
}
|
|
97
|
+
return {
|
|
98
|
+
...commonMessageStyle,
|
|
99
|
+
...(this.showDetails ? this.getThemedMessageStyle() : {}),
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
setIconStyle() {
|
|
103
|
+
let backgroundColor;
|
|
104
|
+
switch (this.messageType) {
|
|
105
|
+
case ToolTipMessageType.ERROR:
|
|
106
|
+
backgroundColor = PrimaryColors.$primaryPinkColor;
|
|
107
|
+
break;
|
|
108
|
+
case ToolTipMessageType.WARNING:
|
|
109
|
+
backgroundColor = PrimaryColors.$primaryOrangeColor;
|
|
110
|
+
break;
|
|
111
|
+
case ToolTipMessageType.HELP:
|
|
112
|
+
backgroundColor = PrimaryColors.$primaryTealColor;
|
|
113
|
+
break;
|
|
114
|
+
default:
|
|
115
|
+
backgroundColor = PrimaryColors.$primaryGrayColor;
|
|
116
|
+
break;
|
|
117
|
+
}
|
|
118
|
+
let style = {
|
|
119
|
+
color: backgroundColor,
|
|
120
|
+
};
|
|
121
|
+
this.iconStyle = style;
|
|
122
|
+
}
|
|
123
|
+
onMouseEnter() {
|
|
124
|
+
this.showDetails = true;
|
|
125
|
+
// CDR is needed to let the DOM know the box error has a width
|
|
126
|
+
this.cdr.detectChanges();
|
|
127
|
+
this.tooltipMessage = document.getElementById(this.messageElId);
|
|
128
|
+
if (this.message) {
|
|
129
|
+
this.getDirection(this.tooltipMessage);
|
|
130
|
+
document.body.appendChild(this.tooltipMessage);
|
|
131
|
+
let messageElement = document.getElementById(this.messageElId);
|
|
132
|
+
let icon = document.getElementById(this.iconElId);
|
|
133
|
+
let rect = icon.getBoundingClientRect();
|
|
134
|
+
let top = rect.top;
|
|
135
|
+
let left = rect.left;
|
|
136
|
+
let right = rect.right;
|
|
137
|
+
let appendedLeft;
|
|
138
|
+
let appendedRight;
|
|
139
|
+
let appendedTop = top - messageElement.offsetHeight;
|
|
140
|
+
this.tooltipMessage.style.top = appendedTop + 'px';
|
|
141
|
+
this.tooltipMessage.style.zIndex = '1000';
|
|
142
|
+
if (this.isLeft) {
|
|
143
|
+
appendedLeft = left + icon.offsetWidth - 5;
|
|
144
|
+
this.tooltipMessage.style.left = appendedLeft + 'px';
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
appendedRight = window.innerWidth - right + 5;
|
|
148
|
+
this.tooltipMessage.style.right = appendedRight + 'px';
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
onMouseLeave() {
|
|
153
|
+
this.showDetails = false;
|
|
154
|
+
}
|
|
155
|
+
getDirection(element) {
|
|
156
|
+
// Calculating the width difference between screen width minus the poistion of the icon from left to right (getBoundingClientRect().right)
|
|
157
|
+
let difference = window.innerWidth - element.getBoundingClientRect().right;
|
|
158
|
+
// hard coded + 12 is for the padding that has been added to router-outlet
|
|
159
|
+
// The if statment here check if there is enough space for the box error to show from left to right , if not enough space, the box error will pop up from right to left
|
|
160
|
+
if (difference <= element.offsetWidth + 12) {
|
|
161
|
+
this.isLeft = false;
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
this.isLeft = true;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
generateRandomString() {
|
|
168
|
+
let charsAndNumbs = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
|
|
169
|
+
let text = '';
|
|
170
|
+
for (let i = 0; i < 8; i++) {
|
|
171
|
+
text += charsAndNumbs.charAt(Math.floor(Math.random() * charsAndNumbs.length));
|
|
172
|
+
}
|
|
173
|
+
return text;
|
|
174
|
+
}
|
|
175
|
+
// Helper to decide how to display the value
|
|
176
|
+
formatValue(value) {
|
|
177
|
+
if (!value)
|
|
178
|
+
return '';
|
|
179
|
+
// 1. If it's an array (like your jurisdiction error)
|
|
180
|
+
if (Array.isArray(value)) {
|
|
181
|
+
// Map through the array and extract 'message' if it exists, otherwise stringify
|
|
182
|
+
return value
|
|
183
|
+
.map(item => {
|
|
184
|
+
return typeof item === 'object' && item.message ? item.message : JSON.stringify(item);
|
|
185
|
+
})
|
|
186
|
+
.join(', ');
|
|
187
|
+
}
|
|
188
|
+
// 2. If it's a single object (but not an array)
|
|
189
|
+
if (typeof value === 'object') {
|
|
190
|
+
return value.message || JSON.stringify(value);
|
|
191
|
+
}
|
|
192
|
+
// 3. It's a string or number
|
|
193
|
+
return value;
|
|
194
|
+
}
|
|
195
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TooltipMsgError, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
196
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TooltipMsgError, selector: "tooltip-msg-error", inputs: { width: "width", control: "control", messageType: "messageType", message: "message" }, host: { listeners: { "document:scroll ": "onScrollY()" } }, usesOnChanges: true, ngImport: i0, template: "<div\r\n *ngIf=\"message && !control\"\r\n class=\"container\"\r\n (mouseenter)=\"onMouseEnter()\"\r\n (mouseleave)=\"onMouseLeave()\">\r\n <fa-icon [id]=\"iconElId\" [ngStyle]=\"iconStyle\" icon=\"circle-exclamation\" class=\"icon\"></fa-icon>\r\n <div\r\n *ngIf=\"!isDictionary\"\r\n [ngStyle]=\"messageStyle\"\r\n [id]=\"messageElId\"\r\n class=\"message\"\r\n [ngClass]=\"{ 'no-details': !showDetails, details: showDetails }\">\r\n {{ message }}\r\n </div>\r\n\r\n <div\r\n *ngIf=\"isDictionary\"\r\n [ngStyle]=\"messageStyle\"\r\n [id]=\"messageElId\"\r\n class=\"message\"\r\n [ngClass]=\"{ 'no-details': !showDetails, details: showDetails }\">\r\n <div class=\"dict-cont\" *ngFor=\"let entry of message | keyvalue\">\r\n <strong>{{ entry.key }}: </strong>\r\n <span>{{ formatValue(entry.value) }}</span>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div\r\n *ngIf=\"control?.touched && control.errors\"\r\n class=\"container\"\r\n (mouseenter)=\"onMouseEnter()\"\r\n (mouseleave)=\"onMouseLeave()\">\r\n <fa-icon [ngStyle]=\"iconStyle\" [id]=\"iconElId\" icon=\"circle-exclamation\" class=\"icon\"></fa-icon>\r\n <div\r\n [ngStyle]=\"messageStyle\"\r\n [id]=\"messageElId\"\r\n class=\"message\"\r\n [ngClass]=\"{ 'no-details': !showDetails, details: showDetails }\">\r\n <div class=\"dict-cont\" *ngFor=\"let entry of message | keyvalue\">\r\n <strong>{{ entry.key }}: </strong>\r\n <span>{{ formatValue(entry.value) }}</span>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".no-details{display:none;position:unset}.icon{cursor:pointer;display:inline-block}.container{position:relative}.details{position:fixed;display:block;z-index:1000;border-radius:.5rem;padding:.75rem 1rem;width:max-content;max-width:500px;font-size:1.2rem;line-height:1.4}@media (max-width: 1024px){.details{max-width:320px}}@media (max-width: 768px){.details{max-width:90vw}}.right-section{right:0}.message{width:max-content;white-space:pre-line;pointer-events:none}.dict-cont{line-height:normal}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "pipe", type: i1.KeyValuePipe, name: "keyvalue" }] });
|
|
197
|
+
}
|
|
198
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TooltipMsgError, decorators: [{
|
|
199
|
+
type: Component,
|
|
200
|
+
args: [{ selector: 'tooltip-msg-error', template: "<div\r\n *ngIf=\"message && !control\"\r\n class=\"container\"\r\n (mouseenter)=\"onMouseEnter()\"\r\n (mouseleave)=\"onMouseLeave()\">\r\n <fa-icon [id]=\"iconElId\" [ngStyle]=\"iconStyle\" icon=\"circle-exclamation\" class=\"icon\"></fa-icon>\r\n <div\r\n *ngIf=\"!isDictionary\"\r\n [ngStyle]=\"messageStyle\"\r\n [id]=\"messageElId\"\r\n class=\"message\"\r\n [ngClass]=\"{ 'no-details': !showDetails, details: showDetails }\">\r\n {{ message }}\r\n </div>\r\n\r\n <div\r\n *ngIf=\"isDictionary\"\r\n [ngStyle]=\"messageStyle\"\r\n [id]=\"messageElId\"\r\n class=\"message\"\r\n [ngClass]=\"{ 'no-details': !showDetails, details: showDetails }\">\r\n <div class=\"dict-cont\" *ngFor=\"let entry of message | keyvalue\">\r\n <strong>{{ entry.key }}: </strong>\r\n <span>{{ formatValue(entry.value) }}</span>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div\r\n *ngIf=\"control?.touched && control.errors\"\r\n class=\"container\"\r\n (mouseenter)=\"onMouseEnter()\"\r\n (mouseleave)=\"onMouseLeave()\">\r\n <fa-icon [ngStyle]=\"iconStyle\" [id]=\"iconElId\" icon=\"circle-exclamation\" class=\"icon\"></fa-icon>\r\n <div\r\n [ngStyle]=\"messageStyle\"\r\n [id]=\"messageElId\"\r\n class=\"message\"\r\n [ngClass]=\"{ 'no-details': !showDetails, details: showDetails }\">\r\n <div class=\"dict-cont\" *ngFor=\"let entry of message | keyvalue\">\r\n <strong>{{ entry.key }}: </strong>\r\n <span>{{ formatValue(entry.value) }}</span>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".no-details{display:none;position:unset}.icon{cursor:pointer;display:inline-block}.container{position:relative}.details{position:fixed;display:block;z-index:1000;border-radius:.5rem;padding:.75rem 1rem;width:max-content;max-width:500px;font-size:1.2rem;line-height:1.4}@media (max-width: 1024px){.details{max-width:320px}}@media (max-width: 768px){.details{max-width:90vw}}.right-section{right:0}.message{width:max-content;white-space:pre-line;pointer-events:none}.dict-cont{line-height:normal}\n"] }]
|
|
201
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { width: [{
|
|
202
|
+
type: Input
|
|
203
|
+
}], control: [{
|
|
204
|
+
type: Input
|
|
205
|
+
}], messageType: [{
|
|
206
|
+
type: Input
|
|
207
|
+
}], message: [{
|
|
208
|
+
type: Input
|
|
209
|
+
}], onScrollY: [{
|
|
210
|
+
type: HostListener,
|
|
211
|
+
args: ['document:scroll ']
|
|
212
|
+
}] } });
|
|
213
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC1tc2ctZXJyb3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW5wdXRzL3NyYy9saWIvdG9vbHRpcC1tc2ctZXJyb3IvdG9vbHRpcC1tc2ctZXJyb3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW5wdXRzL3NyYy9saWIvdG9vbHRpcC1tc2ctZXJyb3IvdG9vbHRpcC1tc2ctZXJyb3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxHQUtOLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7OztBQU9qRSxNQUFNLE9BQU8sZUFBZTtJQW9CaEI7SUFDQTtJQXBCRCxLQUFLLENBQVM7SUFDZCxPQUFPLEdBQTJCLElBQUksQ0FBQztJQUN2QyxXQUFXLEdBQXVCLGtCQUFrQixDQUFDLEtBQUssQ0FBQztJQUMzRCxPQUFPLENBQU07SUFDdEIsUUFBUSxDQUFTO0lBQ2pCLFdBQVcsQ0FBUztJQUNwQixNQUFNLEdBQVksSUFBSSxDQUFDO0lBQ3ZCLFdBQVcsQ0FBVTtJQUNyQixXQUFXLENBQWM7SUFDekIsY0FBYyxDQUFjO0lBQzVCLFNBQVMsQ0FBTTtJQUNmLFlBQVksQ0FBVTtJQUd0QixTQUFTO1FBQ1AsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxZQUNVLEdBQXNCLEVBQ3RCLEdBQWU7UUFEZixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixRQUFHLEdBQUgsR0FBRyxDQUFZO0lBQ3JCLENBQUM7SUFFTCxRQUFRO1FBQ04sSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVB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QUM7d0dBL01VLGVBQWU7NEZBQWYsZUFBZSwwT0NwQjVCLHVoREE2Q0E7OzRGRHpCYSxlQUFlO2tCQUwzQixTQUFTOytCQUNFLG1CQUFtQjtpSUFLcEIsS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFXTixTQUFTO3NCQURSLFlBQVk7dUJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBQcmltYXJ5Q29sb3JzIH0gZnJvbSAnLi4vcHJpbWFyeS1jb2xvcnMnO1xyXG5pbXBvcnQgeyBUb29sVGlwTWVzc2FnZVR5cGUgfSBmcm9tICcuL3Rvb2x0aXAtbWVzc2FnZS10eXBlLmVudW0nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0b29sdGlwLW1zZy1lcnJvcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Rvb2x0aXAtbXNnLWVycm9yLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90b29sdGlwLW1zZy1lcnJvci5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVG9vbHRpcE1zZ0Vycm9yIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KCkgd2lkdGg6IHN0cmluZztcclxuICBASW5wdXQoKSBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wgfCBudWxsID0gbnVsbDtcclxuICBASW5wdXQoKSBtZXNzYWdlVHlwZTogVG9vbFRpcE1lc3NhZ2VUeXBlID0gVG9vbFRpcE1lc3NhZ2VUeXBlLkVSUk9SO1xyXG4gIEBJbnB1dCgpIG1lc3NhZ2U6IGFueTtcclxuICBpY29uRWxJZDogc3RyaW5nO1xyXG4gIG1lc3NhZ2VFbElkOiBzdHJpbmc7XHJcbiAgaXNMZWZ0OiBib29sZWFuID0gdHJ1ZTtcclxuICBzaG93RGV0YWlsczogYm9vbGVhbjtcclxuICB0b29sdGlwSWNvbjogSFRNTEVsZW1lbnQ7XHJcbiAgdG9vbHRpcE1lc3NhZ2U6IEhUTUxFbGVtZW50O1xyXG4gIGljb25TdHlsZTogYW55O1xyXG4gIGlzRGljdGlvbmFyeTogYm9vbGVhbjtcclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6c2Nyb2xsICcpXHJcbiAgb25TY3JvbGxZKCkge1xyXG4gICAgdGhpcy5vbk1vdXNlTGVhdmUoKTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBfRWw6IEVsZW1lbnRSZWZcclxuICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuaWNvbkVsSWQgPSB0aGlzLmdlbmVyYXRlUmFuZG9tU3RyaW5nKCk7XHJcbiAgICB0aGlzLm1lc3NhZ2VFbElkID0gdGhpcy5nZW5lcmF0ZVJhbmRvbVN0cmluZygpO1xyXG4gICAgdGhpcy5zZXRJY29uU3R5bGUoKTtcclxuICAgIHRoaXMuY2hlY2tFcnJvclR5cGUoKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIHRoaXMuY2hlY2tFcnJvclR5cGUoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMubWVzc2FnZUVsSWQpKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMubWVzc2FnZUVsSWQpLnJlbW92ZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hlY2tFcnJvclR5cGUoKSB7XHJcbiAgICBpZiAodGhpcy5tZXNzYWdlKSB7XHJcbiAgICAgIGlmICh0aGlzLm1lc3NhZ2UuY29uc3RydWN0b3IgPT0gT2JqZWN0KSB7XHJcbiAgICAgICAgdGhpcy5pc0RpY3Rpb25hcnkgPSB0cnVlO1xyXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB0aGlzLm1lc3NhZ2UgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgdGhpcy5pc0RpY3Rpb25hcnkgPSBmYWxzZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmlzRGljdGlvbmFyeSA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRUaGVtZWRNZXNzYWdlU3R5bGUoKSB7XHJcbiAgICBsZXQgYmFja2dyb3VuZENvbG9yOiBzdHJpbmc7XHJcbiAgICBsZXQgZm9udEJvcmRlckNvbG9yOiBzdHJpbmc7XHJcblxyXG4gICAgc3dpdGNoICh0aGlzLm1lc3NhZ2VUeXBlKSB7XHJcbiAgICAgIGNhc2UgVG9vbFRpcE1lc3NhZ2VUeXBlLkVSUk9SOlxyXG4gICAgICAgIGJhY2tncm91bmRDb2xvciA9ICcjZmRlNWYwJztcclxuICAgICAgICBmb250Qm9yZGVyQ29sb3IgPSBQcmltYXJ5Q29sb3JzLiRwcmltYXJ5UGlua0NvbG9yO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFRvb2xUaXBNZXNzYWdlVHlwZS5XQVJOSU5HOlxyXG4gICAgICAgIGJhY2tncm91bmRDb2xvciA9ICcjZmRlZmRkJztcclxuICAgICAgICBmb250Qm9yZGVyQ29sb3IgPSBQcmltYXJ5Q29sb3JzLiRwcmltYXJ5T3JhbmdlQ29sb3I7XHJcblxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFRvb2xUaXBNZXNzYWdlVHlwZS5IRUxQOlxyXG4gICAgICAgIGJhY2tncm91bmRDb2xvciA9ICcjZDFmOWYyJztcclxuICAgICAgICBmb250Qm9yZGVyQ29sb3IgPSBQcmltYXJ5Q29sb3JzLiRwcmltYXJ5VGVhbENvbG9yO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJhY2tncm91bmRDb2xvciA9IFByaW1hcnlDb2xvcnMuJHByaW1hcnlMaWdodEdyYXlDb2xvcjtcclxuICAgICAgICBmb250Qm9yZGVyQ29sb3IgPSBQcmltYXJ5Q29sb3JzLiRwcmltYXJ5R3JheUNvbG9yO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgbGV0IHN0eWxlID0ge1xyXG4gICAgICAnYmFja2dyb3VuZC1jb2xvcic6IGJhY2tncm91bmRDb2xvcixcclxuICAgICAgJ2ZvbnQtd2VpZ2h0JzogJ2JvbGQnLFxyXG4gICAgICBjb2xvcjogZm9udEJvcmRlckNvbG9yLFxyXG4gICAgICBib3JkZXI6ICcwLjJyZW0gc29saWQgJyArIGZvbnRCb3JkZXJDb2xvcixcclxuICAgICAgJ2JvcmRlci1sZWZ0JzogJzAuNXJlbSBzb2xpZCAnICsgZm9udEJvcmRlckNvbG9yLFxyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gc3R5bGU7XHJcbiAgfVxyXG5cclxuICBzZXRNZXNzYWdlU3R5bGUoKSB7XHJcbiAgICBsZXQgc3R5bGUgPSB7fTtcclxuXHJcbiAgICBpZiAodGhpcy53aWR0aCkge1xyXG4gICAgICBzdHlsZVsnd2lkdGgnXSA9IHRoaXMud2lkdGg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgbWVzc2FnZVN0eWxlKCkge1xyXG4gICAgbGV0IGNvbW1vbk1lc3NhZ2VTdHlsZSA9IHt9O1xyXG5cclxuICAgIGlmICh0aGlzLndpZHRoKSB7XHJcbiAgICAgIGNvbW1vbk1lc3NhZ2VTdHlsZVsnd2lkdGgnXSA9IHRoaXMud2lkdGg7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAuLi5jb21tb25NZXNzYWdlU3R5bGUsXHJcbiAgICAgIC4uLih0aGlzLnNob3dEZXRhaWxzID8gdGhpcy5nZXRUaGVtZWRNZXNzYWdlU3R5bGUoKSA6IHt9KSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBzZXRJY29uU3R5bGUoKSB7XHJcbiAgICBsZXQgYmFja2dyb3VuZENvbG9yOiBzdHJpbmc7XHJcbiAgICBzd2l0Y2ggKHRoaXMubWVzc2FnZVR5cGUpIHtcclxuICAgICAgY2FzZSBUb29sVGlwTWVzc2FnZVR5cGUuRVJST1I6XHJcbiAgICAgICAgYmFja2dyb3VuZENvbG9yID0gUHJpbWFyeUNvbG9ycy4kcHJpbWFyeVBpbmtDb2xvcjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBUb29sVGlwTWVzc2FnZVR5cGUuV0FSTklORzpcclxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBQcmltYXJ5Q29sb3JzLiRwcmltYXJ5T3JhbmdlQ29sb3I7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgVG9vbFRpcE1lc3NhZ2VUeXBlLkhFTFA6XHJcbiAgICAgICAgYmFja2dyb3VuZENvbG9yID0gUHJpbWFyeUNvbG9ycy4kcHJpbWFyeVRlYWxDb2xvcjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBQcmltYXJ5Q29sb3JzLiRwcmltYXJ5R3JheUNvbG9yO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgbGV0IHN0eWxlID0ge1xyXG4gICAgICBjb2xvcjogYmFja2dyb3VuZENvbG9yLFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLmljb25TdHlsZSA9IHN0eWxlO1xyXG4gIH1cclxuXHJcbiAgb25Nb3VzZUVudGVyKCkge1xyXG4gICAgdGhpcy5zaG93RGV0YWlscyA9IHRydWU7XHJcbiAgICAvLyAgQ0RSIGlzIG5lZWRlZCB0byBsZXQgdGhlIERPTSBrbm93IHRoZSBib3ggZXJyb3IgaGFzIGEgd2lkdGhcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHRoaXMudG9vbHRpcE1lc3NhZ2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLm1lc3NhZ2VFbElkKTtcclxuICAgIGlmICh0aGlzLm1lc3NhZ2UpIHtcclxuICAgICAgdGhpcy5nZXREaXJlY3Rpb24odGhpcy50b29sdGlwTWVzc2FnZSk7XHJcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy50b29sdGlwTWVzc2FnZSk7XHJcbiAgICAgIGxldCBtZXNzYWdlRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMubWVzc2FnZUVsSWQpO1xyXG4gICAgICBsZXQgaWNvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuaWNvbkVsSWQpO1xyXG4gICAgICBsZXQgcmVjdCA9IGljb24uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcblxyXG4gICAgICBsZXQgdG9wID0gcmVjdC50b3A7XHJcbiAgICAgIGxldCBsZWZ0ID0gcmVjdC5sZWZ0O1xyXG4gICAgICBsZXQgcmlnaHQgPSByZWN0LnJpZ2h0O1xyXG4gICAgICBsZXQgYXBwZW5kZWRMZWZ0OiBudW1iZXI7XHJcbiAgICAgIGxldCBhcHBlbmRlZFJpZ2h0OiBudW1iZXI7XHJcbiAgICAgIGxldCBhcHBlbmRlZFRvcCA9IHRvcCAtIG1lc3NhZ2VFbGVtZW50Lm9mZnNldEhlaWdodDtcclxuICAgICAgdGhpcy50b29sdGlwTWVzc2FnZS5zdHlsZS50b3AgPSBhcHBlbmRlZFRvcCArICdweCc7XHJcbiAgICAgIHRoaXMudG9vbHRpcE1lc3NhZ2Uuc3R5bGUuekluZGV4ID0gJzEwMDAnO1xyXG5cclxuICAgICAgaWYgKHRoaXMuaXNMZWZ0KSB7XHJcbiAgICAgICAgYXBwZW5kZWRMZWZ0ID0gbGVmdCArIGljb24ub2Zmc2V0V2lkdGggLSA1O1xyXG4gICAgICAgIHRoaXMudG9vbHRpcE1lc3NhZ2Uuc3R5bGUubGVmdCA9IGFwcGVuZGVkTGVmdCArICdweCc7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgYXBwZW5kZWRSaWdodCA9IHdpbmRvdy5pbm5lcldpZHRoIC0gcmlnaHQgKyA1O1xyXG4gICAgICAgIHRoaXMudG9vbHRpcE1lc3NhZ2Uuc3R5bGUucmlnaHQgPSBhcHBlbmRlZFJpZ2h0ICsgJ3B4JztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25Nb3VzZUxlYXZlKCkge1xyXG4gICAgdGhpcy5zaG93RGV0YWlscyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZ2V0RGlyZWN0aW9uKGVsZW1lbnQpIHtcclxuICAgIC8vICBDYWxjdWxhdGluZyB0aGUgd2lkdGggZGlmZmVyZW5jZSBiZXR3ZWVuICBzY3JlZW4gd2lkdGggbWludXMgdGhlIHBvaXN0aW9uIG9mIHRoZSBpY29uIGZyb20gbGVmdCB0byByaWdodCAoZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkucmlnaHQpXHJcbiAgICBsZXQgZGlmZmVyZW5jZSA9IHdpbmRvdy5pbm5lcldpZHRoIC0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5yaWdodDtcclxuICAgIC8vIGhhcmQgY29kZWQgKyAxMiBpcyBmb3IgdGhlIHBhZGRpbmcgdGhhdCBoYXMgYmVlbiBhZGRlZCB0byByb3V0ZXItb3V0bGV0XHJcbiAgICAvLyBUaGUgaWYgc3RhdG1lbnQgaGVyZSBjaGVjayBpZiB0aGVyZSBpcyBlbm91Z2ggc3BhY2UgZm9yIHRoZSBib3ggZXJyb3IgdG8gc2hvdyBmcm9tIGxlZnQgdG8gcmlnaHQgLCBpZiBub3QgZW5vdWdoIHNwYWNlLCB0aGUgYm94IGVycm9yIHdpbGwgcG9wIHVwIGZyb20gcmlnaHQgdG8gbGVmdFxyXG4gICAgaWYgKGRpZmZlcmVuY2UgPD0gZWxlbWVudC5vZmZzZXRXaWR0aCArIDEyKSB7XHJcbiAgICAgIHRoaXMuaXNMZWZ0ID0gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmlzTGVmdCA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZW5lcmF0ZVJhbmRvbVN0cmluZygpIHtcclxuICAgIGxldCBjaGFyc0FuZE51bWJzID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMTIzNDU2Nzg5MCc7XHJcbiAgICBsZXQgdGV4dCA9ICcnO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCA4OyBpKyspIHtcclxuICAgICAgdGV4dCArPSBjaGFyc0FuZE51bWJzLmNoYXJBdChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBjaGFyc0FuZE51bWJzLmxlbmd0aCkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRleHQ7XHJcbiAgfVxyXG5cclxuICAvLyBIZWxwZXIgdG8gZGVjaWRlIGhvdyB0byBkaXNwbGF5IHRoZSB2YWx1ZVxyXG4gIGZvcm1hdFZhbHVlKHZhbHVlOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuICcnO1xyXG5cclxuICAgIC8vIDEuIElmIGl0J3MgYW4gYXJyYXkgKGxpa2UgeW91ciBqdXJpc2RpY3Rpb24gZXJyb3IpXHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcclxuICAgICAgLy8gTWFwIHRocm91Z2ggdGhlIGFycmF5IGFuZCBleHRyYWN0ICdtZXNzYWdlJyBpZiBpdCBleGlzdHMsIG90aGVyd2lzZSBzdHJpbmdpZnlcclxuICAgICAgcmV0dXJuIHZhbHVlXHJcbiAgICAgICAgLm1hcChpdGVtID0+IHtcclxuICAgICAgICAgIHJldHVybiB0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCcgJiYgaXRlbS5tZXNzYWdlID8gaXRlbS5tZXNzYWdlIDogSlNPTi5zdHJpbmdpZnkoaXRlbSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuam9pbignLCAnKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyAyLiBJZiBpdCdzIGEgc2luZ2xlIG9iamVjdCAoYnV0IG5vdCBhbiBhcnJheSlcclxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgIHJldHVybiB2YWx1ZS5tZXNzYWdlIHx8IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyAzLiBJdCdzIGEgc3RyaW5nIG9yIG51bWJlclxyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2XHJcbiAgKm5nSWY9XCJtZXNzYWdlICYmICFjb250cm9sXCJcclxuICBjbGFzcz1cImNvbnRhaW5lclwiXHJcbiAgKG1vdXNlZW50ZXIpPVwib25Nb3VzZUVudGVyKClcIlxyXG4gIChtb3VzZWxlYXZlKT1cIm9uTW91c2VMZWF2ZSgpXCI+XHJcbiAgPGZhLWljb24gW2lkXT1cImljb25FbElkXCIgW25nU3R5bGVdPVwiaWNvblN0eWxlXCIgaWNvbj1cImNpcmNsZS1leGNsYW1hdGlvblwiIGNsYXNzPVwiaWNvblwiPjwvZmEtaWNvbj5cclxuICA8ZGl2XHJcbiAgICAqbmdJZj1cIiFpc0RpY3Rpb25hcnlcIlxyXG4gICAgW25nU3R5bGVdPVwibWVzc2FnZVN0eWxlXCJcclxuICAgIFtpZF09XCJtZXNzYWdlRWxJZFwiXHJcbiAgICBjbGFzcz1cIm1lc3NhZ2VcIlxyXG4gICAgW25nQ2xhc3NdPVwieyAnbm8tZGV0YWlscyc6ICFzaG93RGV0YWlscywgZGV0YWlsczogc2hvd0RldGFpbHMgfVwiPlxyXG4gICAge3sgbWVzc2FnZSB9fVxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2XHJcbiAgICAqbmdJZj1cImlzRGljdGlvbmFyeVwiXHJcbiAgICBbbmdTdHlsZV09XCJtZXNzYWdlU3R5bGVcIlxyXG4gICAgW2lkXT1cIm1lc3NhZ2VFbElkXCJcclxuICAgIGNsYXNzPVwibWVzc2FnZVwiXHJcbiAgICBbbmdDbGFzc109XCJ7ICduby1kZXRhaWxzJzogIXNob3dEZXRhaWxzLCBkZXRhaWxzOiBzaG93RGV0YWlscyB9XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZGljdC1jb250XCIgKm5nRm9yPVwibGV0IGVudHJ5IG9mIG1lc3NhZ2UgfCBrZXl2YWx1ZVwiPlxyXG4gICAgICA8c3Ryb25nPnt7IGVudHJ5LmtleSB9fTogPC9zdHJvbmc+XHJcbiAgICAgIDxzcGFuPnt7IGZvcm1hdFZhbHVlKGVudHJ5LnZhbHVlKSB9fTwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxkaXZcclxuICAqbmdJZj1cImNvbnRyb2w/LnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnNcIlxyXG4gIGNsYXNzPVwiY29udGFpbmVyXCJcclxuICAobW91c2VlbnRlcik9XCJvbk1vdXNlRW50ZXIoKVwiXHJcbiAgKG1vdXNlbGVhdmUpPVwib25Nb3VzZUxlYXZlKClcIj5cclxuICA8ZmEtaWNvbiBbbmdTdHlsZV09XCJpY29uU3R5bGVcIiBbaWRdPVwiaWNvbkVsSWRcIiBpY29uPVwiY2lyY2xlLWV4Y2xhbWF0aW9uXCIgY2xhc3M9XCJpY29uXCI+PC9mYS1pY29uPlxyXG4gIDxkaXZcclxuICAgIFtuZ1N0eWxlXT1cIm1lc3NhZ2VTdHlsZVwiXHJcbiAgICBbaWRdPVwibWVzc2FnZUVsSWRcIlxyXG4gICAgY2xhc3M9XCJtZXNzYWdlXCJcclxuICAgIFtuZ0NsYXNzXT1cInsgJ25vLWRldGFpbHMnOiAhc2hvd0RldGFpbHMsIGRldGFpbHM6IHNob3dEZXRhaWxzIH1cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJkaWN0LWNvbnRcIiAqbmdGb3I9XCJsZXQgZW50cnkgb2YgbWVzc2FnZSB8IGtleXZhbHVlXCI+XHJcbiAgICAgIDxzdHJvbmc+e3sgZW50cnkua2V5IH19OiA8L3N0cm9uZz5cclxuICAgICAgPHNwYW4+e3sgZm9ybWF0VmFsdWUoZW50cnkudmFsdWUpIH19PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
package/esm2022/public-api.mjs
CHANGED
|
@@ -1,24 +1,29 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* Public API Surface of inputs
|
|
3
3
|
*/
|
|
4
|
-
export * from './lib/choose-enum/choose-enum.component';
|
|
5
|
-
export * from './lib/show-table-errors/show-table-errors.component';
|
|
6
4
|
export * from './lib/choose-enum-renderer/choose-enum-renderer.component';
|
|
5
|
+
export * from './lib/choose-enum/choose-enum.component';
|
|
6
|
+
export * from './lib/choose-general-item-renderer/choose-general-item-renderer-change-event.interface';
|
|
7
|
+
export * from './lib/choose-general-item-renderer/choose-general-item-renderer-validation-type.enum';
|
|
7
8
|
export * from './lib/choose-general-item/choose-general-item.component';
|
|
9
|
+
export * from './lib/general-input-renderer/general-input-renderer-change-event.interface';
|
|
10
|
+
export * from './lib/show-table-errors/show-table-errors.component';
|
|
11
|
+
export * from './lib/tooltip-msg-error/tooltip-message-type.enum';
|
|
12
|
+
export * from './lib/tooltip-msg-error/tooltip-msg-error.component';
|
|
13
|
+
export * from './lib/add-asterisk.directive';
|
|
8
14
|
export * from './lib/choose-general-item-renderer/choose-general-item-renderer.component';
|
|
15
|
+
export * from './lib/choose-general-item/choose-general-item.service';
|
|
9
16
|
export * from './lib/choose-line-type/choose-line-type.component';
|
|
10
|
-
export * from './lib/choose-yes-or-no/choose-yes-or-no.component';
|
|
11
17
|
export * from './lib/choose-yes-or-no-renderer/choose-yes-or-no-renderer.component';
|
|
12
|
-
export * from './lib/
|
|
13
|
-
export * from './lib/
|
|
18
|
+
export * from './lib/choose-yes-or-no/choose-yes-or-no.component';
|
|
19
|
+
export * from './lib/dropdown-actions/dropdown-action-type.model';
|
|
20
|
+
export * from './lib/dropdown-actions/dropdown-actions.component';
|
|
21
|
+
export * from './lib/dropdown-actions/label-and-route.model';
|
|
14
22
|
export * from './lib/editable-savable-input/dynamicPipe';
|
|
15
|
-
export * from './lib/
|
|
16
|
-
export * from './lib/models/label-and-field.model';
|
|
23
|
+
export * from './lib/editable-savable-input/editable-savable-input.component';
|
|
17
24
|
export * from './lib/formcontrol-validation-msg.directive';
|
|
25
|
+
export * from './lib/general-input-renderer/general-input-renderer.component';
|
|
18
26
|
export * from './lib/inputs.module';
|
|
19
|
-
export * from './lib/
|
|
20
|
-
export * from './lib/dropdown-actions/label-and-route.model';
|
|
21
|
-
export * from './lib/dropdown-actions/dropdown-action-type.model';
|
|
22
|
-
export * from './lib/add-asterisk.directive';
|
|
27
|
+
export * from './lib/models/label-and-field.model';
|
|
23
28
|
export * from './lib/primary-colors';
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2lucHV0cy9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsMkRBQTJELENBQUM7QUFDMUUsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLHdGQUF3RixDQUFDO0FBQ3ZHLGNBQWMsc0ZBQXNGLENBQUM7QUFDckcsY0FBYyx5REFBeUQsQ0FBQztBQUN4RSxjQUFjLDRFQUE0RSxDQUFDO0FBQzNGLGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLHFEQUFxRCxDQUFDO0FBRXBFLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYywyRUFBMkUsQ0FBQztBQUMxRixjQUFjLHVEQUF1RCxDQUFDO0FBQ3RFLGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyxxRUFBcUUsQ0FBQztBQUNwRixjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYywrREFBK0QsQ0FBQztBQUM5RSxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsK0RBQStELENBQUM7QUFDOUUsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsc0JBQXNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgaW5wdXRzXHJcbiAqL1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hvb3NlLWVudW0tcmVuZGVyZXIvY2hvb3NlLWVudW0tcmVuZGVyZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hvb3NlLWVudW0vY2hvb3NlLWVudW0uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hvb3NlLWdlbmVyYWwtaXRlbS1yZW5kZXJlci9jaG9vc2UtZ2VuZXJhbC1pdGVtLXJlbmRlcmVyLWNoYW5nZS1ldmVudC5pbnRlcmZhY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jaG9vc2UtZ2VuZXJhbC1pdGVtLXJlbmRlcmVyL2Nob29zZS1nZW5lcmFsLWl0ZW0tcmVuZGVyZXItdmFsaWRhdGlvbi10eXBlLmVudW0nO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jaG9vc2UtZ2VuZXJhbC1pdGVtL2Nob29zZS1nZW5lcmFsLWl0ZW0uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZ2VuZXJhbC1pbnB1dC1yZW5kZXJlci9nZW5lcmFsLWlucHV0LXJlbmRlcmVyLWNoYW5nZS1ldmVudC5pbnRlcmZhY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaG93LXRhYmxlLWVycm9ycy9zaG93LXRhYmxlLWVycm9ycy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi90b29sdGlwLW1zZy1lcnJvci90b29sdGlwLW1lc3NhZ2UtdHlwZS5lbnVtJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdG9vbHRpcC1tc2ctZXJyb3IvdG9vbHRpcC1tc2ctZXJyb3IuY29tcG9uZW50JztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FkZC1hc3Rlcmlzay5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jaG9vc2UtZ2VuZXJhbC1pdGVtLXJlbmRlcmVyL2Nob29zZS1nZW5lcmFsLWl0ZW0tcmVuZGVyZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hvb3NlLWdlbmVyYWwtaXRlbS9jaG9vc2UtZ2VuZXJhbC1pdGVtLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jaG9vc2UtbGluZS10eXBlL2Nob29zZS1saW5lLXR5cGUuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hvb3NlLXllcy1vci1uby1yZW5kZXJlci9jaG9vc2UteWVzLW9yLW5vLXJlbmRlcmVyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Nob29zZS15ZXMtb3Itbm8vY2hvb3NlLXllcy1vci1uby5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kcm9wZG93bi1hY3Rpb25zL2Ryb3Bkb3duLWFjdGlvbi10eXBlLm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZHJvcGRvd24tYWN0aW9ucy9kcm9wZG93bi1hY3Rpb25zLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Ryb3Bkb3duLWFjdGlvbnMvbGFiZWwtYW5kLXJvdXRlLm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZWRpdGFibGUtc2F2YWJsZS1pbnB1dC9keW5hbWljUGlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VkaXRhYmxlLXNhdmFibGUtaW5wdXQvZWRpdGFibGUtc2F2YWJsZS1pbnB1dC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9mb3JtY29udHJvbC12YWxpZGF0aW9uLW1zZy5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9nZW5lcmFsLWlucHV0LXJlbmRlcmVyL2dlbmVyYWwtaW5wdXQtcmVuZGVyZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvaW5wdXRzLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9sYWJlbC1hbmQtZmllbGQubW9kZWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9wcmltYXJ5LWNvbG9ycyc7XHJcblxyXG5cclxuIl19
|