cilog-lib 1.10.19 → 1.10.21
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/fesm2022/cilog-lib.mjs +97 -102
- package/fesm2022/cilog-lib.mjs.map +1 -1
- package/package.json +3 -5
- package/types/cilog-lib.d.ts +538 -0
- package/esm2022/cilog-lib.mjs +0 -5
- package/esm2022/lib/cilog-lib.component.mjs +0 -22
- package/esm2022/lib/cilog-lib.module.mjs +0 -96
- package/esm2022/lib/cilog-lib.service.mjs +0 -14
- package/esm2022/lib/helpers/enums/grille.enum.mjs +0 -51
- package/esm2022/lib/helpers/interfaces/edition.interface.mjs +0 -2
- package/esm2022/lib/helpers/interfaces/editor.interface.mjs +0 -2
- package/esm2022/lib/helpers/interfaces/grille.interface.mjs +0 -2
- package/esm2022/lib/helpers/interfaces/message.interface.mjs +0 -2
- package/esm2022/lib/helpers/pipes/value.pipe.mjs +0 -27
- package/esm2022/lib/modules/primeng.module.mjs +0 -86
- package/esm2022/lib/services/excel.service.mjs +0 -179
- package/esm2022/lib/services/message.service.mjs +0 -30
- package/esm2022/lib/services/table.service.mjs +0 -14
- package/esm2022/lib/views/cilog-input-number/cilog-input-number.component.mjs +0 -251
- package/esm2022/lib/views/documentation/documentation-contextuelle.component.mjs +0 -156
- package/esm2022/lib/views/editor/editor.component.mjs +0 -38
- package/esm2022/lib/views/message/message.component.mjs +0 -77
- package/esm2022/lib/views/table/table.component.mjs +0 -674
- package/esm2022/public-api.mjs +0 -24
- package/index.d.ts +0 -5
- package/lib/cilog-lib.component.d.ts +0 -8
- package/lib/cilog-lib.module.d.ts +0 -21
- package/lib/cilog-lib.service.d.ts +0 -6
- package/lib/helpers/enums/grille.enum.d.ts +0 -44
- package/lib/helpers/interfaces/edition.interface.d.ts +0 -34
- package/lib/helpers/interfaces/editor.interface.d.ts +0 -4
- package/lib/helpers/interfaces/grille.interface.d.ts +0 -166
- package/lib/helpers/interfaces/message.interface.d.ts +0 -6
- package/lib/helpers/pipes/value.pipe.d.ts +0 -7
- package/lib/modules/primeng.module.d.ts +0 -24
- package/lib/services/excel.service.d.ts +0 -15
- package/lib/services/message.service.d.ts +0 -12
- package/lib/services/table.service.d.ts +0 -6
- package/lib/views/cilog-input-number/cilog-input-number.component.d.ts +0 -40
- package/lib/views/documentation/documentation-contextuelle.component.d.ts +0 -49
- package/lib/views/editor/editor.component.d.ts +0 -17
- package/lib/views/message/message.component.d.ts +0 -17
- package/lib/views/table/table.component.d.ts +0 -83
- package/public-api.d.ts +0 -15
|
@@ -1,251 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, forwardRef, HostListener, Input, Output, ViewChild } from '@angular/core';
|
|
2
|
-
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@angular/common";
|
|
5
|
-
import * as i2 from "primeng/inputtext";
|
|
6
|
-
export class CilogInputNumberComponent {
|
|
7
|
-
constructor() {
|
|
8
|
-
this.onInput = new EventEmitter();
|
|
9
|
-
this.onChange = new EventEmitter();
|
|
10
|
-
this.onFocus = new EventEmitter();
|
|
11
|
-
this.onBlur = new EventEmitter();
|
|
12
|
-
this.valueStr = '';
|
|
13
|
-
this.specialKeys = ['Tab', 'End', 'Home', 'ArrowLeft', 'ArrowRight'];
|
|
14
|
-
}
|
|
15
|
-
ngOnInit() {
|
|
16
|
-
this.regex = new RegExp(`^-?\\d{1,3}(?:\\d{3})*(?:[\\.,]\\d{0,${this.maxDecimals || Number.MAX_SAFE_INTEGER}})?$`);
|
|
17
|
-
}
|
|
18
|
-
onKeyDownEvent(event) {
|
|
19
|
-
if (this.specialKeys.indexOf(event.key) !== -1) {
|
|
20
|
-
return;
|
|
21
|
-
}
|
|
22
|
-
if (event.key == 'Enter') {
|
|
23
|
-
this.onChangeInput(this.value);
|
|
24
|
-
this.onChange.emit(this.value);
|
|
25
|
-
return;
|
|
26
|
-
}
|
|
27
|
-
let current = this.cilogInputNumber.nativeElement.value;
|
|
28
|
-
const positionStart = this.cilogInputNumber.nativeElement.selectionStart;
|
|
29
|
-
const positionEnd = this.cilogInputNumber.nativeElement.selectionEnd;
|
|
30
|
-
let debut = current.slice(0, positionStart).replace(/\s/g, '');
|
|
31
|
-
let fin = current.slice(positionEnd).replace(/\s/g, '');
|
|
32
|
-
let next = current.replace(/\s/g, '');
|
|
33
|
-
if (event.key === '.') {
|
|
34
|
-
let positionStartPoint = this.cilogInputNumber.nativeElement.selectionStart;
|
|
35
|
-
next = [debut, ',', fin].join('');
|
|
36
|
-
if (String(next).match(this.regex)) {
|
|
37
|
-
this.acceptValue(next, event);
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
if (current.slice(positionStart)[0] == ',') {
|
|
41
|
-
this.cilogInputNumber.nativeElement.selectionStart = positionStartPoint + 1;
|
|
42
|
-
this.cilogInputNumber.nativeElement.selectionEnd = positionStartPoint + 1;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
else if (event.key === 'Backspace') {
|
|
47
|
-
if (positionStart == positionEnd && (/\s/g.test(current.slice(positionStart - 1, positionStart)) || current.slice(positionStart - 1, positionStart) == ",")) {
|
|
48
|
-
this.cilogInputNumber.nativeElement.selectionStart = positionStart - 1;
|
|
49
|
-
this.cilogInputNumber.nativeElement.selectionEnd = positionStart - 1;
|
|
50
|
-
if (this.cilogInputNumber.nativeElement.value.at(-1) == ',') {
|
|
51
|
-
this.cilogInputNumber.nativeElement.value = this.cilogInputNumber.nativeElement.value.substring(0, this.cilogInputNumber.nativeElement.value.length - 1);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
if (this.cilogInputNumber.nativeElement.selectionStart != this.cilogInputNumber.nativeElement.selectionEnd) {
|
|
56
|
-
next = [debut, fin].join('');
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
if (positionStart != 0) {
|
|
60
|
-
debut = current.slice(0, positionStart - 1).replace(/\s/g, '');
|
|
61
|
-
}
|
|
62
|
-
next = [debut, fin].join('');
|
|
63
|
-
}
|
|
64
|
-
this.checkValue(next, event);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
else {
|
|
68
|
-
if (event.key === ',' && current.slice(positionStart)[0] == ',') {
|
|
69
|
-
this.cilogInputNumber.nativeElement.selectionStart += 1;
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
if (positionStart != positionEnd) {
|
|
73
|
-
this.cilogInputNumber.nativeElement.selectionStart = positionStart + 1;
|
|
74
|
-
this.cilogInputNumber.nativeElement.selectionEnd = positionStart + 1;
|
|
75
|
-
}
|
|
76
|
-
next = [debut, event.key, fin].join('');
|
|
77
|
-
this.checkValue(next, event);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
event.preventDefault();
|
|
81
|
-
}
|
|
82
|
-
checkValue(next, event) {
|
|
83
|
-
if (next == '-' && (this.min == null || this.min < 0)) {
|
|
84
|
-
this.acceptValue(next, event);
|
|
85
|
-
}
|
|
86
|
-
else if (next.length > 1 && next[0] == ',') {
|
|
87
|
-
this.acceptValue(next.substring(1), event);
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
90
|
-
if (String(next), !String(next).match(this.regex)) {
|
|
91
|
-
if (next == '') {
|
|
92
|
-
this.acceptValue(next, event);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
else {
|
|
96
|
-
let number = +(next.replace(',', '.'));
|
|
97
|
-
if (this.min == null || number >= this.min) {
|
|
98
|
-
if (this.max == null || number <= this.max) {
|
|
99
|
-
this.acceptValue(next, event);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
acceptValue(value, event) {
|
|
106
|
-
// Stockage position initiale
|
|
107
|
-
const positionStart = this.cilogInputNumber.nativeElement.selectionStart;
|
|
108
|
-
const positionEnd = this.cilogInputNumber.nativeElement.selectionEnd;
|
|
109
|
-
let valEntier = this.cilogInputNumber.nativeElement.value.replace(/\s/g, '').split(',')[0];
|
|
110
|
-
if (valEntier[0] == '-') {
|
|
111
|
-
valEntier = valEntier.substring(1);
|
|
112
|
-
}
|
|
113
|
-
setTimeout(() => {
|
|
114
|
-
let positionFinale = positionStart;
|
|
115
|
-
if (positionStart == positionEnd) {
|
|
116
|
-
let jump = 1;
|
|
117
|
-
let valEntierNext = value.split(',')[0];
|
|
118
|
-
if (valEntierNext[0] == '-') {
|
|
119
|
-
valEntierNext = valEntierNext.substring(1);
|
|
120
|
-
}
|
|
121
|
-
if (value.split(',')[0] != valEntier &&
|
|
122
|
-
((event.key != 'Backspace' && valEntier.length != 0 && valEntier.length % 3 == 0)
|
|
123
|
-
|| (event.key == 'Backspace' && (valEntier.length - 1) != 0 && (valEntier.length - 1) % 3 == 0))) {
|
|
124
|
-
jump = 2;
|
|
125
|
-
}
|
|
126
|
-
// Calcul position finale
|
|
127
|
-
if (event.key == 'Backspace') {
|
|
128
|
-
if (positionStart != 0) {
|
|
129
|
-
positionFinale = positionStart - jump;
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
else {
|
|
133
|
-
positionFinale = positionStart + jump;
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
this.cilogInputNumber.nativeElement.selectionStart = positionFinale;
|
|
137
|
-
this.cilogInputNumber.nativeElement.selectionEnd = positionFinale;
|
|
138
|
-
});
|
|
139
|
-
// Mise à jour de la valeur du champ
|
|
140
|
-
if (value == '' || value == '-') {
|
|
141
|
-
this.writeValue(null, value);
|
|
142
|
-
}
|
|
143
|
-
else {
|
|
144
|
-
this.writeValue(+(value.replace(',', '.')), value, ((event.key == '.' || event.key == ',') && value.slice(-1) == ','), (event.key == '0' && value.split(',')[0] == valEntier && value.split(',').length == 2), (event.key == '0' && +value.split(',')[1] == 0));
|
|
145
|
-
}
|
|
146
|
-
this.onChangeInput(this.value);
|
|
147
|
-
this.onInput.emit(this.value);
|
|
148
|
-
}
|
|
149
|
-
writeValue(value, valueString = null, sep = false, zero = false, zeroAfter = false) {
|
|
150
|
-
this.value = value;
|
|
151
|
-
if (this.value == null) {
|
|
152
|
-
if (valueString == '-') {
|
|
153
|
-
this.valueStr = '-';
|
|
154
|
-
}
|
|
155
|
-
else {
|
|
156
|
-
this.valueStr = '';
|
|
157
|
-
}
|
|
158
|
-
if (this.cilogInputNumber) {
|
|
159
|
-
this.cilogInputNumber.nativeElement.value = this.valueStr;
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
else {
|
|
163
|
-
if (this.maxDecimals != null && this.value.toString().split('.').length > 1 && this.value.toString().split('.')[1].length > this.maxDecimals) {
|
|
164
|
-
this.valueStr = this.value.toLocaleString('fr-FR', { maximumFractionDigits: this.maxDecimals });
|
|
165
|
-
}
|
|
166
|
-
else {
|
|
167
|
-
this.valueStr = this.value.toLocaleString('fr-FR', { maximumFractionDigits: 6 });
|
|
168
|
-
}
|
|
169
|
-
if (sep || zeroAfter) {
|
|
170
|
-
this.valueStr = this.valueStr + ',';
|
|
171
|
-
}
|
|
172
|
-
if (zero) {
|
|
173
|
-
this.valueStr = this.valueStr + '0';
|
|
174
|
-
}
|
|
175
|
-
this.cilogInputNumber.nativeElement.value = this.valueStr;
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
onBlurEvent(event) {
|
|
179
|
-
this.onChangeInput(this.value);
|
|
180
|
-
this.onChange.emit(this.value);
|
|
181
|
-
this.onBlur.emit(this.value);
|
|
182
|
-
}
|
|
183
|
-
onFocusEvent(event) {
|
|
184
|
-
this.onFocus.emit(this.value);
|
|
185
|
-
}
|
|
186
|
-
onChangeInput(val) { }
|
|
187
|
-
onTouchedInput() { }
|
|
188
|
-
registerOnChange(fn) {
|
|
189
|
-
this.onChangeInput = fn;
|
|
190
|
-
}
|
|
191
|
-
registerOnTouched(fn) {
|
|
192
|
-
this.onTouchedInput = fn;
|
|
193
|
-
}
|
|
194
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CilogInputNumberComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
195
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CilogInputNumberComponent, selector: "cilog-input-number", inputs: { min: "min", max: "max", maxDecimals: "maxDecimals", prefixe: "prefixe", suffixe: "suffixe", inputStyleClass: "inputStyleClass", disabled: "disabled", readonly: "readonly", textColor: "textColor", bold: "bold", italic: "italic", floatLabel: "floatLabel" }, outputs: { onInput: "onInput", onChange: "onChange", onFocus: "onFocus", onBlur: "onBlur" }, host: { listeners: { "keydown": "onKeyDownEvent($event)" } }, providers: [
|
|
196
|
-
{
|
|
197
|
-
provide: NG_VALUE_ACCESSOR,
|
|
198
|
-
useExisting: forwardRef(() => CilogInputNumberComponent),
|
|
199
|
-
multi: true
|
|
200
|
-
}
|
|
201
|
-
], viewQueries: [{ propertyName: "cilogInputNumber", first: true, predicate: ["cilogInputNumber"], descendants: true }], ngImport: i0, template: "<div class=\"input-group w-full\">\r\n\r\n <span class=\"input-group-addon prefixe\"\r\n *ngIf=\"prefixe != null\">\r\n {{ prefixe }}\r\n </span>\r\n\r\n <div [ngClass]=\"{ 'p-float-label' : floatLabel != null }\">\r\n <input #cilogInputNumber\r\n pInputText\r\n type=\"text\"\r\n [disabled]=\"disabled\"\r\n [readonly]=\"readonly\"\r\n [value]=\"valueStr\"\r\n (focus)=\"onFocusEvent($event)\"\r\n (blur)=\"onBlurEvent($event)\"\r\n [class]=\"'w-full z-1' + (inputStyleClass == null ? '' : ' ' + inputStyleClass)\"\r\n [ngClass]=\"suffixe != null && prefixe != null ? 'border-noround' : prefixe != null ? 'border-noround-left' : suffixe != null ? 'border-noround-right' : null\"\r\n [ngStyle]=\"{ 'color' : textColor ? textColor : null }\" />\r\n\r\n <label *ngIf=\"floatLabel != null\">{{ floatLabel }}</label>\r\n </div>\r\n\r\n <span class=\"input-group-addon suffixe\"\r\n *ngIf=\"suffixe != null\">\r\n {{ suffixe }}\r\n </span>\r\n\r\n</div>\r\n", styles: [":host ::ng-deep .input-group{display:flex!important}:host ::ng-deep .input-group-addon{background-color:#fff!important;border:1px solid #ccc!important;padding:0 12px!important;max-width:5rem!important;overflow:hidden!important;font-weight:700!important}:host ::ng-deep .prefixe{border-radius:4px 0 0 4px!important;border-right:none!important;display:flex;align-items:center}:host ::ng-deep .suffixe{border-radius:0 4px 4px 0!important;border-left:none!important;display:flex;align-items:center}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.InputText, selector: "[pInputText]", inputs: ["variant"] }] }); }
|
|
202
|
-
}
|
|
203
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CilogInputNumberComponent, decorators: [{
|
|
204
|
-
type: Component,
|
|
205
|
-
args: [{ selector: 'cilog-input-number', providers: [
|
|
206
|
-
{
|
|
207
|
-
provide: NG_VALUE_ACCESSOR,
|
|
208
|
-
useExisting: forwardRef(() => CilogInputNumberComponent),
|
|
209
|
-
multi: true
|
|
210
|
-
}
|
|
211
|
-
], template: "<div class=\"input-group w-full\">\r\n\r\n <span class=\"input-group-addon prefixe\"\r\n *ngIf=\"prefixe != null\">\r\n {{ prefixe }}\r\n </span>\r\n\r\n <div [ngClass]=\"{ 'p-float-label' : floatLabel != null }\">\r\n <input #cilogInputNumber\r\n pInputText\r\n type=\"text\"\r\n [disabled]=\"disabled\"\r\n [readonly]=\"readonly\"\r\n [value]=\"valueStr\"\r\n (focus)=\"onFocusEvent($event)\"\r\n (blur)=\"onBlurEvent($event)\"\r\n [class]=\"'w-full z-1' + (inputStyleClass == null ? '' : ' ' + inputStyleClass)\"\r\n [ngClass]=\"suffixe != null && prefixe != null ? 'border-noround' : prefixe != null ? 'border-noround-left' : suffixe != null ? 'border-noround-right' : null\"\r\n [ngStyle]=\"{ 'color' : textColor ? textColor : null }\" />\r\n\r\n <label *ngIf=\"floatLabel != null\">{{ floatLabel }}</label>\r\n </div>\r\n\r\n <span class=\"input-group-addon suffixe\"\r\n *ngIf=\"suffixe != null\">\r\n {{ suffixe }}\r\n </span>\r\n\r\n</div>\r\n", styles: [":host ::ng-deep .input-group{display:flex!important}:host ::ng-deep .input-group-addon{background-color:#fff!important;border:1px solid #ccc!important;padding:0 12px!important;max-width:5rem!important;overflow:hidden!important;font-weight:700!important}:host ::ng-deep .prefixe{border-radius:4px 0 0 4px!important;border-right:none!important;display:flex;align-items:center}:host ::ng-deep .suffixe{border-radius:0 4px 4px 0!important;border-left:none!important;display:flex;align-items:center}\n"] }]
|
|
212
|
-
}], ctorParameters: () => [], propDecorators: { min: [{
|
|
213
|
-
type: Input
|
|
214
|
-
}], max: [{
|
|
215
|
-
type: Input
|
|
216
|
-
}], maxDecimals: [{
|
|
217
|
-
type: Input
|
|
218
|
-
}], prefixe: [{
|
|
219
|
-
type: Input
|
|
220
|
-
}], suffixe: [{
|
|
221
|
-
type: Input
|
|
222
|
-
}], inputStyleClass: [{
|
|
223
|
-
type: Input
|
|
224
|
-
}], disabled: [{
|
|
225
|
-
type: Input
|
|
226
|
-
}], readonly: [{
|
|
227
|
-
type: Input
|
|
228
|
-
}], textColor: [{
|
|
229
|
-
type: Input
|
|
230
|
-
}], bold: [{
|
|
231
|
-
type: Input
|
|
232
|
-
}], italic: [{
|
|
233
|
-
type: Input
|
|
234
|
-
}], floatLabel: [{
|
|
235
|
-
type: Input
|
|
236
|
-
}], onInput: [{
|
|
237
|
-
type: Output
|
|
238
|
-
}], onChange: [{
|
|
239
|
-
type: Output
|
|
240
|
-
}], onFocus: [{
|
|
241
|
-
type: Output
|
|
242
|
-
}], onBlur: [{
|
|
243
|
-
type: Output
|
|
244
|
-
}], cilogInputNumber: [{
|
|
245
|
-
type: ViewChild,
|
|
246
|
-
args: ['cilogInputNumber']
|
|
247
|
-
}], onKeyDownEvent: [{
|
|
248
|
-
type: HostListener,
|
|
249
|
-
args: ['keydown', ['$event']]
|
|
250
|
-
}] } });
|
|
251
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2lsb2ctaW5wdXQtbnVtYmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NpbG9nLWxpYi9zcmMvbGliL3ZpZXdzL2NpbG9nLWlucHV0LW51bWJlci9jaWxvZy1pbnB1dC1udW1iZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2lsb2ctbGliL3NyYy9saWIvdmlld3MvY2lsb2ctaW5wdXQtbnVtYmVyL2NpbG9nLWlucHV0LW51bWJlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hJLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQWN6RSxNQUFNLE9BQU8seUJBQXlCO0lBNkJsQztRQVpVLFlBQU8sR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUMzRCxhQUFRLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFDNUQsWUFBTyxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzNELFdBQU0sR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUVwRSxhQUFRLEdBQVcsRUFBRSxDQUFDO1FBS2QsZ0JBQVcsR0FBa0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFFdkUsQ0FBQztJQUVqQixRQUFRO1FBQ0osSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLE1BQU0sQ0FBQyx3Q0FBd0MsSUFBSSxDQUFDLFdBQVcsSUFBSSxNQUFNLENBQUMsZ0JBQWdCLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZILENBQUM7SUFHRCxjQUFjLENBQUMsS0FBb0I7UUFF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QUFLLEVBQUUsSUFBSTthQUNkO1NBQ0osZ0pDYkwsc29DQTZCQTs7NEZEZGEseUJBQXlCO2tCQVpyQyxTQUFTOytCQUNJLG9CQUFvQixhQUduQjt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSwwQkFBMEIsQ0FBQzs0QkFDeEQsS0FBSyxFQUFFLElBQUk7eUJBQ2Q7cUJBQ0o7d0RBTVEsR0FBRztzQkFBWCxLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUksT0FBTztzQkFBaEIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUl3QixnQkFBZ0I7c0JBQTlDLFNBQVM7dUJBQUMsa0JBQWtCO2dCQVk3QixjQUFjO3NCQURiLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2NpbG9nLWlucHV0LW51bWJlcicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2lsb2ctaW5wdXQtbnVtYmVyLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2NpbG9nLWlucHV0LW51bWJlci5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQ2lsb2dJbnB1dE51bWJlckNvbXBvbmVudCksXHJcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXHJcbiAgICAgICAgfVxyXG4gICAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2lsb2dJbnB1dE51bWJlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG5cclxuICAgIHZhbHVlOiBudW1iZXI7XHJcblxyXG4gICAgQElucHV0KCkgbWluOiBudW1iZXI7XHJcbiAgICBASW5wdXQoKSBtYXg6IG51bWJlcjtcclxuICAgIEBJbnB1dCgpIG1heERlY2ltYWxzOiBudW1iZXI7XHJcbiAgICBASW5wdXQoKSBwcmVmaXhlOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBzdWZmaXhlOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBpbnB1dFN0eWxlQ2xhc3M6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgcmVhZG9ubHk6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSB0ZXh0Q29sb3I6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIGJvbGQ6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBpdGFsaWM6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBmbG9hdExhYmVsOiBzdHJpbmc7XHJcblxyXG4gICAgQE91dHB1dCgpIG9uSW5wdXQ6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XHJcbiAgICBAT3V0cHV0KCkgb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XHJcbiAgICBAT3V0cHV0KCkgb25Gb2N1czogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcclxuICAgIEBPdXRwdXQoKSBvbkJsdXI6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XHJcblxyXG4gICAgdmFsdWVTdHI6IHN0cmluZyA9ICcnO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ2NpbG9nSW5wdXROdW1iZXInKSBjaWxvZ0lucHV0TnVtYmVyOiBFbGVtZW50UmVmO1xyXG5cclxuICAgIHByaXZhdGUgcmVnZXg6IFJlZ0V4cDtcclxuICAgIHByaXZhdGUgc3BlY2lhbEtleXM6IEFycmF5PHN0cmluZz4gPSBbJ1RhYicsICdFbmQnLCAnSG9tZScsICdBcnJvd0xlZnQnLCAnQXJyb3dSaWdodCddO1xyXG4gICAgXHJcbiAgICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHRoaXMucmVnZXggPSBuZXcgUmVnRXhwKGBeLT9cXFxcZHsxLDN9KD86XFxcXGR7M30pKig/OltcXFxcLixdXFxcXGR7MCwke3RoaXMubWF4RGVjaW1hbHMgfHwgTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJ9fSk/JGApO1xyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxyXG4gICAgb25LZXlEb3duRXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc3BlY2lhbEtleXMuaW5kZXhPZihldmVudC5rZXkpICE9PSAtMSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZXZlbnQua2V5ID09ICdFbnRlcicpIHtcclxuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZUlucHV0KHRoaXMudmFsdWUpO1xyXG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBjdXJyZW50OiBzdHJpbmcgPSB0aGlzLmNpbG9nSW5wdXROdW1iZXIubmF0aXZlRWxlbWVudC52YWx1ZTtcclxuXHJcbiAgICAgICAgY29uc3QgcG9zaXRpb25TdGFydCA9IHRoaXMuY2lsb2dJbnB1dE51bWJlci5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0O1xyXG4gICAgICAgIGNvbnN0IHBvc2l0aW9uRW5kID0gdGhpcy5jaWxvZ0lucHV0TnVtYmVyLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uRW5kO1xyXG5cclxuICAgICAgICBsZXQgZGVidXQ6IHN0cmluZyA9IGN1cnJlbnQuc2xpY2UoMCwgcG9zaXRpb25TdGFydCkucmVwbGFjZSgvXFxzL2csICcnKTtcclxuICAgICAgICBsZXQgZmluOiBzdHJpbmcgPSBjdXJyZW50LnNsaWNlKHBvc2l0aW9uRW5kKS5yZXBsYWNlKC9cXHMvZywgJycpO1xyXG5cclxuICAgICAgICBsZXQgbmV4dDogc3RyaW5nID0gY3VycmVudC5yZXBsYWNlKC9cXHMvZywgJycpO1xyXG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICcuJykge1xyXG4gICAgICAgICAgICBsZXQgcG9zaXRpb25TdGFydFBvaW50OiBudW1iZXIgPSB0aGlzLmNpbG9nSW5wdXROdW1iZXIubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydDtcclxuICAgICAgICAgICAgbmV4dCA9IFtkZWJ1dCwgJywnLCBmaW5dLmpvaW4oJycpO1xyXG4gICAgICAgICAgICBpZiAoU3RyaW5nKG5leHQpLm1hdGNoKHRoaXMucmVnZXgpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFjY2VwdFZhbHVlKG5leHQsIGV2ZW50KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50LnNsaWNlKHBvc2l0aW9uU3RhcnQpWzBdID09ICcsJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2lsb2dJbnB1dE51bWJlci5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0ID0gcG9zaXRpb25TdGFydFBvaW50ICsgMTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNpbG9nSW5wdXROdW1iZXIubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25FbmQgPSBwb3NpdGlvblN0YXJ0UG9pbnQgKyAxO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09ICdCYWNrc3BhY2UnKSB7XHJcbiAgICAgICAgICAgIGlmIChwb3NpdGlvblN0YXJ0ID09IHBvc2l0aW9uRW5kICYmICgvXFxzL2cudGVzdChjdXJyZW50LnNsaWNlKHBvc2l0aW9uU3RhcnQgLSAxLCBwb3NpdGlvblN0YXJ0KSkgfHwgY3VycmVudC5zbGljZShwb3NpdGlvblN0YXJ0IC0gMSwgcG9zaXRpb25TdGFydCkgPT0gXCIsXCIpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNpbG9nSW5wdXROdW1iZXIubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydCA9IHBvc2l0aW9uU3RhcnQgLSAxO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jaWxvZ0lucHV0TnVtYmVyLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uRW5kID0gcG9zaXRpb25TdGFydCAtIDE7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jaWxvZ0lucHV0TnVtYmVyLm5hdGl2ZUVsZW1lbnQudmFsdWUuYXQoLTEpID09ICcsJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2lsb2dJbnB1dE51bWJlci5uYXRpdmVFbGVtZW50LnZhbHVlID0gdGhpcy5jaWxvZ0lucHV0TnVtYmVyLm5hdGl2ZUVsZW1lbnQudmFsdWUuc3Vic3RyaW5nKDAsIHRoaXMuY2lsb2dJbnB1dE51bWJlci5uYXRpdmVFbGVtZW50LnZhbHVlLmxlbmd0aCAtIDEpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY2lsb2dJbnB1dE51bWJlci5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0ICE9IHRoaXMuY2lsb2dJbnB1dE51bWJlci5uYXRpdmVFbGVtZW50LnNlbGVjdGlvbkVuZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIG5leHQgPSBbZGVidXQsIGZpbl0uam9pbignJyk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChwb3NpdGlvblN0YXJ0ICE9IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVidXQgPSBjdXJyZW50LnNsaWNlKDAsIHBvc2l0aW9uU3RhcnQgLSAxKS5yZXBsYWNlKC9cXHMvZywgJycpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBuZXh0ID0gW2RlYnV0LCBmaW5dLmpvaW4oJycpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGVja1ZhbHVlKG5leHQsIGV2ZW50KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChldmVudC5rZXkgPT09ICcsJyAmJiBjdXJyZW50LnNsaWNlKHBvc2l0aW9uU3RhcnQpWzBdID09ICcsJykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jaWxvZ0lucHV0TnVtYmVyLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgKz0gMTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmIChwb3NpdGlvblN0YXJ0ICE9IHBvc2l0aW9uRW5kKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaWxvZ0lucHV0TnVtYmVyLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgPSBwb3NpdGlvblN0YXJ0ICsgMTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNpbG9nSW5wdXROdW1iZXIubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25FbmQgPSBwb3NpdGlvblN0YXJ0ICsgMTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIG5leHQgPSBbZGVidXQsIGV2ZW50LmtleSwgZmluXS5qb2luKCcnKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tWYWx1ZShuZXh0LCBldmVudCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgY2hlY2tWYWx1ZShuZXh0OiBzdHJpbmcsIGV2ZW50KSB7XHJcbiAgICAgICAgaWYgKG5leHQgPT0gJy0nICYmICh0aGlzLm1pbiA9PSBudWxsIHx8IHRoaXMubWluIDwgMCkpIHtcclxuICAgICAgICAgICAgdGhpcy5hY2NlcHRWYWx1ZShuZXh0LCBldmVudCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChuZXh0Lmxlbmd0aCA+IDEgJiYgbmV4dFswXSA9PSAnLCcpIHtcclxuICAgICAgICAgICAgdGhpcy5hY2NlcHRWYWx1ZShuZXh0LnN1YnN0cmluZygxKSwgZXZlbnQpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChTdHJpbmcobmV4dCksICFTdHJpbmcobmV4dCkubWF0Y2godGhpcy5yZWdleCkpIHtcclxuICAgICAgICAgICAgICAgIGlmIChuZXh0ID09ICcnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hY2NlcHRWYWx1ZShuZXh0LCBldmVudCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgbnVtYmVyOiBudW1iZXIgPSArKG5leHQucmVwbGFjZSgnLCcsICcuJykpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubWluID09IG51bGwgfHwgbnVtYmVyID49IHRoaXMubWluKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubWF4ID09IG51bGwgfHwgbnVtYmVyIDw9IHRoaXMubWF4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWNjZXB0VmFsdWUobmV4dCwgZXZlbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhY2NlcHRWYWx1ZSh2YWx1ZTogc3RyaW5nLCBldmVudCkge1xyXG4gICAgICAgIC8vIFN0b2NrYWdlIHBvc2l0aW9uIGluaXRpYWxlXHJcbiAgICAgICAgY29uc3QgcG9zaXRpb25TdGFydCA9IHRoaXMuY2lsb2dJbnB1dE51bWJlci5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0O1xyXG4gICAgICAgIGNvbnN0IHBvc2l0aW9uRW5kID0gdGhpcy5jaWxvZ0lucHV0TnVtYmVyLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uRW5kO1xyXG4gICAgICAgIGxldCB2YWxFbnRpZXI6IHN0cmluZyA9IHRoaXMuY2lsb2dJbnB1dE51bWJlci5uYXRpdmVFbGVtZW50LnZhbHVlLnJlcGxhY2UoL1xccy9nLCAnJykuc3BsaXQoJywnKVswXTtcclxuICAgICAgICBpZiAodmFsRW50aWVyWzBdID09ICctJykge1xyXG4gICAgICAgICAgICB2YWxFbnRpZXIgPSB2YWxFbnRpZXIuc3Vic3RyaW5nKDEpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBwb3NpdGlvbkZpbmFsZTogbnVtYmVyID0gcG9zaXRpb25TdGFydDtcclxuICAgICAgICAgICAgaWYgKHBvc2l0aW9uU3RhcnQgPT0gcG9zaXRpb25FbmQpIHtcclxuICAgICAgICAgICAgICAgIGxldCBqdW1wOiBudW1iZXIgPSAxO1xyXG4gICAgICAgICAgICAgICAgbGV0IHZhbEVudGllck5leHQ6IHN0cmluZyA9IHZhbHVlLnNwbGl0KCcsJylbMF07XHJcbiAgICAgICAgICAgICAgICBpZiAodmFsRW50aWVyTmV4dFswXSA9PSAnLScpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YWxFbnRpZXJOZXh0ID0gdmFsRW50aWVyTmV4dC5zdWJzdHJpbmcoMSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUuc3BsaXQoJywnKVswXSAhPSB2YWxFbnRpZXIgJiZcclxuICAgICAgICAgICAgICAgICAgICAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChldmVudC5rZXkgIT0gJ0JhY2tzcGFjZScgJiYgdmFsRW50aWVyLmxlbmd0aCAhPSAwICYmIHZhbEVudGllci5sZW5ndGggJSAzID09IDApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHx8IChldmVudC5rZXkgPT0gJ0JhY2tzcGFjZScgJiYgKHZhbEVudGllci5sZW5ndGggLSAxKSAhPSAwICYmICh2YWxFbnRpZXIubGVuZ3RoIC0gMSkgJSAzID09IDApXHJcbiAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAganVtcCA9IDI7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gQ2FsY3VsIHBvc2l0aW9uIGZpbmFsZVxyXG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LmtleSA9PSAnQmFja3NwYWNlJykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChwb3NpdGlvblN0YXJ0ICE9IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb25GaW5hbGUgPSBwb3NpdGlvblN0YXJ0IC0ganVtcDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uRmluYWxlID0gcG9zaXRpb25TdGFydCArIGp1bXA7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5jaWxvZ0lucHV0TnVtYmVyLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgPSBwb3NpdGlvbkZpbmFsZTtcclxuICAgICAgICAgICAgdGhpcy5jaWxvZ0lucHV0TnVtYmVyLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uRW5kID0gcG9zaXRpb25GaW5hbGU7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIC8vIE1pc2Ugw6Agam91ciBkZSBsYSB2YWxldXIgZHUgY2hhbXBcclxuICAgICAgICBpZiAodmFsdWUgPT0gJycgfHwgdmFsdWUgPT0gJy0nKSB7XHJcbiAgICAgICAgICAgIHRoaXMud3JpdGVWYWx1ZShudWxsLCB2YWx1ZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy53cml0ZVZhbHVlKFxyXG4gICAgICAgICAgICAgICAgKyh2YWx1ZS5yZXBsYWNlKCcsJywgJy4nKSksXHJcbiAgICAgICAgICAgICAgICB2YWx1ZSxcclxuICAgICAgICAgICAgICAgICgoZXZlbnQua2V5ID09ICcuJyB8fCBldmVudC5rZXkgPT0gJywnKSAmJiB2YWx1ZS5zbGljZSgtMSkgPT0gJywnKSxcclxuICAgICAgICAgICAgICAgIChldmVudC5rZXkgPT0gJzAnICYmIHZhbHVlLnNwbGl0KCcsJylbMF0gPT0gdmFsRW50aWVyICYmIHZhbHVlLnNwbGl0KCcsJykubGVuZ3RoID09IDIpLFxyXG4gICAgICAgICAgICAgICAgKGV2ZW50LmtleSA9PSAnMCcgJiYgK3ZhbHVlLnNwbGl0KCcsJylbMV0gPT0gMClcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMub25DaGFuZ2VJbnB1dCh0aGlzLnZhbHVlKTtcclxuICAgICAgICB0aGlzLm9uSW5wdXQuZW1pdCh0aGlzLnZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBudW1iZXIsIHZhbHVlU3RyaW5nOiBzdHJpbmcgPSBudWxsLCBzZXA6IGJvb2xlYW4gPSBmYWxzZSwgemVybzogYm9vbGVhbiA9IGZhbHNlLCB6ZXJvQWZ0ZXI6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMudmFsdWUgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBpZiAodmFsdWVTdHJpbmcgPT0gJy0nKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlU3RyID0gJy0nO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZVN0ciA9ICcnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNpbG9nSW5wdXROdW1iZXIpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2lsb2dJbnB1dE51bWJlci5uYXRpdmVFbGVtZW50LnZhbHVlID0gdGhpcy52YWx1ZVN0cjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm1heERlY2ltYWxzICE9IG51bGwgJiYgdGhpcy52YWx1ZS50b1N0cmluZygpLnNwbGl0KCcuJykubGVuZ3RoID4gMSAmJiB0aGlzLnZhbHVlLnRvU3RyaW5nKCkuc3BsaXQoJy4nKVsxXS5sZW5ndGggPiB0aGlzLm1heERlY2ltYWxzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlU3RyID0gdGhpcy52YWx1ZS50b0xvY2FsZVN0cmluZygnZnItRlInLCB7IG1heGltdW1GcmFjdGlvbkRpZ2l0czogdGhpcy5tYXhEZWNpbWFscyB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudmFsdWVTdHIgPSB0aGlzLnZhbHVlLnRvTG9jYWxlU3RyaW5nKCdmci1GUicsIHsgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiA2IH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChzZXAgfHwgemVyb0FmdGVyKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlU3RyID0gdGhpcy52YWx1ZVN0ciArICcsJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoemVybykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZVN0ciA9IHRoaXMudmFsdWVTdHIgKyAnMCc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5jaWxvZ0lucHV0TnVtYmVyLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB0aGlzLnZhbHVlU3RyO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvbkJsdXJFdmVudChldmVudCkge1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2VJbnB1dCh0aGlzLnZhbHVlKTtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XHJcbiAgICAgICAgdGhpcy5vbkJsdXIuZW1pdCh0aGlzLnZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkZvY3VzRXZlbnQoZXZlbnQpIHtcclxuICAgICAgICB0aGlzLm9uRm9jdXMuZW1pdCh0aGlzLnZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkNoYW5nZUlucHV0KHZhbDogbnVtYmVyKSB7IH1cclxuXHJcbiAgICBvblRvdWNoZWRJbnB1dCgpIHsgfVxyXG5cclxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlSW5wdXQgPSBmbjtcclxuICAgIH1cclxuXHJcbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMub25Ub3VjaGVkSW5wdXQgPSBmbjtcclxuICAgIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgdy1mdWxsXCI+XHJcblxyXG4gICAgPHNwYW4gY2xhc3M9XCJpbnB1dC1ncm91cC1hZGRvbiBwcmVmaXhlXCJcclxuICAgICAgICAgICpuZ0lmPVwicHJlZml4ZSAhPSBudWxsXCI+XHJcbiAgICAgICAge3sgcHJlZml4ZSB9fVxyXG4gICAgPC9zcGFuPlxyXG5cclxuICAgIDxkaXYgW25nQ2xhc3NdPVwieyAncC1mbG9hdC1sYWJlbCcgOiBmbG9hdExhYmVsICE9IG51bGwgfVwiPlxyXG4gICAgICAgIDxpbnB1dCAjY2lsb2dJbnB1dE51bWJlclxyXG4gICAgICAgICAgICAgICBwSW5wdXRUZXh0XHJcbiAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgW3ZhbHVlXT1cInZhbHVlU3RyXCJcclxuICAgICAgICAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXNFdmVudCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgKGJsdXIpPVwib25CbHVyRXZlbnQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgIFtjbGFzc109XCIndy1mdWxsIHotMScgKyAoaW5wdXRTdHlsZUNsYXNzID09IG51bGwgPyAnJyA6ICcgJyArIGlucHV0U3R5bGVDbGFzcylcIlxyXG4gICAgICAgICAgICAgICBbbmdDbGFzc109XCJzdWZmaXhlICE9IG51bGwgJiYgcHJlZml4ZSAhPSBudWxsID8gJ2JvcmRlci1ub3JvdW5kJyA6IHByZWZpeGUgIT0gbnVsbCA/ICdib3JkZXItbm9yb3VuZC1sZWZ0JyA6IHN1ZmZpeGUgIT0gbnVsbCA/ICdib3JkZXItbm9yb3VuZC1yaWdodCcgOiBudWxsXCJcclxuICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyAnY29sb3InIDogdGV4dENvbG9yID8gdGV4dENvbG9yIDogbnVsbCB9XCIgLz5cclxuXHJcbiAgICAgICAgPGxhYmVsICpuZ0lmPVwiZmxvYXRMYWJlbCAhPSBudWxsXCI+e3sgZmxvYXRMYWJlbCB9fTwvbGFiZWw+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8c3BhbiBjbGFzcz1cImlucHV0LWdyb3VwLWFkZG9uIHN1ZmZpeGVcIlxyXG4gICAgICAgICAgKm5nSWY9XCJzdWZmaXhlICE9IG51bGxcIj5cclxuICAgICAgICB7eyBzdWZmaXhlIH19XHJcbiAgICA8L3NwYW4+XHJcblxyXG48L2Rpdj5cclxuIl19
|
|
@@ -1,156 +0,0 @@
|
|
|
1
|
-
import { Component } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "@angular/common/http";
|
|
4
|
-
import * as i2 from "@angular/router";
|
|
5
|
-
import * as i3 from "@angular/common";
|
|
6
|
-
import * as i4 from "primeng/button";
|
|
7
|
-
import * as i5 from "primeng/inputtext";
|
|
8
|
-
import * as i6 from "primeng/tabview";
|
|
9
|
-
import * as i7 from "@angular/forms";
|
|
10
|
-
import * as i8 from "ngx-markdown";
|
|
11
|
-
import * as i9 from "primeng/progressspinner";
|
|
12
|
-
export class DocumentationContextuelleComponent {
|
|
13
|
-
constructor(http, router) {
|
|
14
|
-
this.http = http;
|
|
15
|
-
this.router = router;
|
|
16
|
-
this.categories = [];
|
|
17
|
-
this.filteredCategories = [];
|
|
18
|
-
this.tabs = [];
|
|
19
|
-
this.searchQuery = '';
|
|
20
|
-
this.activeTabIndex = 0;
|
|
21
|
-
}
|
|
22
|
-
ngOnInit() {
|
|
23
|
-
this.http.get('assets/docs/doc-config/config.json').subscribe((config) => {
|
|
24
|
-
this.config = config;
|
|
25
|
-
this.organizeDocsByCategory(config);
|
|
26
|
-
// Tentative d'ouverture automatique en fonction de l'URL
|
|
27
|
-
const currentPath = this.router.url;
|
|
28
|
-
const foundDoc = this.findDocForUrl(currentPath);
|
|
29
|
-
if (foundDoc) {
|
|
30
|
-
this.openDocumentationAndSwitch(foundDoc);
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
this.openDocumentationList(); // fallback sur le sommaire
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
openCurrentPageDoc() {
|
|
38
|
-
const currentPath = this.router.url;
|
|
39
|
-
const foundDoc = this.findDocForUrl(currentPath);
|
|
40
|
-
if (foundDoc) {
|
|
41
|
-
this.openDocumentationAndSwitch(foundDoc);
|
|
42
|
-
}
|
|
43
|
-
else {
|
|
44
|
-
this.openDocumentationList();
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
organizeDocsByCategory(config) {
|
|
48
|
-
const categories = config.categories.map((cat) => ({
|
|
49
|
-
...cat,
|
|
50
|
-
docs: []
|
|
51
|
-
}));
|
|
52
|
-
const iconMappings = config.iconMappings || {};
|
|
53
|
-
const docsConfig = config.documentations;
|
|
54
|
-
for (const fileName in docsConfig) {
|
|
55
|
-
const doc = docsConfig[fileName];
|
|
56
|
-
const categoryKey = doc.category;
|
|
57
|
-
const matchedCategory = categories.find((cat) => cat.key === categoryKey);
|
|
58
|
-
if (matchedCategory) {
|
|
59
|
-
const icon = doc.tags?.map(t => iconMappings[t])?.find(i => !!i) || iconMappings.default;
|
|
60
|
-
matchedCategory.docs.push({
|
|
61
|
-
...doc,
|
|
62
|
-
fileName,
|
|
63
|
-
icon
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
this.categories = categories.sort((a, b) => a.name - b.name);
|
|
68
|
-
this.categories.forEach(cat => {
|
|
69
|
-
cat.docs = cat.docs.sort((a, b) => a.displayName.localeCompare(b.displayName));
|
|
70
|
-
});
|
|
71
|
-
this.filteredCategories = JSON.parse(JSON.stringify(this.categories));
|
|
72
|
-
}
|
|
73
|
-
filterDocumentation() {
|
|
74
|
-
const query = this.searchQuery.toLowerCase();
|
|
75
|
-
this.filteredCategories = this.categories.map(category => {
|
|
76
|
-
const filteredDocs = category.docs.filter(doc => doc.displayName.toLowerCase().includes(query) ||
|
|
77
|
-
doc.description.toLowerCase().includes(query) ||
|
|
78
|
-
doc.tags?.some(tag => tag.toLowerCase().includes(query)));
|
|
79
|
-
return {
|
|
80
|
-
...category,
|
|
81
|
-
docs: filteredDocs
|
|
82
|
-
};
|
|
83
|
-
}).filter(cat => cat.docs.length > 0);
|
|
84
|
-
}
|
|
85
|
-
toggleCategory(key) {
|
|
86
|
-
const cat = this.filteredCategories.find(c => c.key === key);
|
|
87
|
-
if (cat)
|
|
88
|
-
cat.expanded = !cat.expanded;
|
|
89
|
-
}
|
|
90
|
-
openTabAndActivate(tab) {
|
|
91
|
-
this.tabs.push(tab);
|
|
92
|
-
setTimeout(() => {
|
|
93
|
-
this.activeTabIndex = this.tabs.length - 1;
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
openDocumentationAndSwitch(doc) {
|
|
97
|
-
const existingTab = this.tabs.find(tab => tab.fileName === doc.fileName);
|
|
98
|
-
if (existingTab) {
|
|
99
|
-
this.activeTabIndex = this.tabs.indexOf(existingTab);
|
|
100
|
-
return;
|
|
101
|
-
}
|
|
102
|
-
const newTab = {
|
|
103
|
-
type: 'doc',
|
|
104
|
-
title: doc.displayName,
|
|
105
|
-
fileName: doc.fileName,
|
|
106
|
-
content: '',
|
|
107
|
-
loading: true,
|
|
108
|
-
category: this.categories.find(c => c.key === doc.category)?.name
|
|
109
|
-
};
|
|
110
|
-
this.openTabAndActivate(newTab);
|
|
111
|
-
fetch(`assets/docs/${doc.fileName}`)
|
|
112
|
-
.then(res => res.text())
|
|
113
|
-
.then(content => {
|
|
114
|
-
newTab.content = content;
|
|
115
|
-
newTab.loading = false;
|
|
116
|
-
})
|
|
117
|
-
.catch(() => {
|
|
118
|
-
newTab.content = '❌ Erreur lors du chargement du fichier markdown.';
|
|
119
|
-
newTab.loading = false;
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
openDocumentationList() {
|
|
123
|
-
const existing = this.tabs.find(t => t.type === 'list');
|
|
124
|
-
if (existing) {
|
|
125
|
-
this.activeTabIndex = this.tabs.indexOf(existing);
|
|
126
|
-
return;
|
|
127
|
-
}
|
|
128
|
-
this.openTabAndActivate({ type: 'list', title: '📚 Sommaire des Docs' });
|
|
129
|
-
}
|
|
130
|
-
getTotalDocsCount() {
|
|
131
|
-
return this.categories.reduce((sum, cat) => sum + cat.docs.length, 0);
|
|
132
|
-
}
|
|
133
|
-
getOpenTabsCount() {
|
|
134
|
-
return this.tabs.length;
|
|
135
|
-
}
|
|
136
|
-
closeTab(event) {
|
|
137
|
-
this.tabs.splice(event.index, 1);
|
|
138
|
-
if (this.activeTabIndex >= this.tabs.length) {
|
|
139
|
-
this.activeTabIndex = this.tabs.length - 1;
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
/** Essaie de retrouver un document à partir de l'URL Angular */
|
|
143
|
-
findDocForUrl(url) {
|
|
144
|
-
const normalizedUrl = url.replace(/^\/+/, '').replace(/\/$/, '');
|
|
145
|
-
return this.categories
|
|
146
|
-
.reduce((acc, cat) => acc.concat(cat.docs), [])
|
|
147
|
-
.find(doc => normalizedUrl.toLowerCase().includes(doc.fileName.toLowerCase().replace('.md', '')));
|
|
148
|
-
}
|
|
149
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DocumentationContextuelleComponent, deps: [{ token: i1.HttpClient }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
150
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DocumentationContextuelleComponent, selector: "cilog-documentation-contextuelle", ngImport: i0, template: "<div class=\"documentation-container\">\r\n <!-- Menu sup\u00E9rieur -->\r\n <div class=\"documentation-menu\">\r\n <button \r\n pButton \r\n type=\"button\" \r\n icon=\"pi pi-list\" \r\n label=\"Sommaire des documentations\"\r\n class=\"p-button-sm p-button-outlined\"\r\n (click)=\"openDocumentationList()\"\r\n title=\"Voir toutes les documentations disponibles\">\r\n </button>\r\n <button \r\n pButton \r\n type=\"button\" \r\n icon=\"pi pi-home\" \r\n label=\"Documentation courante\"\r\n class=\"p-button-sm p-button-outlined\"\r\n (click)=\"openCurrentPageDoc()\"\r\n title=\"Documentation de la page actuelle\">\r\n </button>\r\n </div>\r\n\r\n <!-- Syst\u00E8me d'onglets -->\r\n <p-tabView \r\n [(activeIndex)]=\"activeTabIndex\"\r\n (onClose)=\"closeTab($event)\"\r\n styleClass=\"documentation-tabs\">\r\n \r\n <p-tabPanel \r\n *ngFor=\"let tab of tabs; let i = index\" \r\n [header]=\"tab.title\"\r\n [closable]=\"tabs.length > 1\">\r\n \r\n <!-- Contenu pour onglet de liste - Version am\u00E9lior\u00E9e -->\r\n <div *ngIf=\"tab.type === 'list'\" class=\"docs-list-container\">\r\n <div class=\"docs-header\">\r\n <h2>\uD83D\uDCDA Sommaire de la Documentation</h2>\r\n <p class=\"docs-subtitle\">Explorez toutes les fonctionnalit\u00E9s disponibles dans LogeProj</p>\r\n </div>\r\n\r\n <!-- Barre de recherche -->\r\n <div class=\"search-bar\">\r\n <span class=\"p-input-icon-left\" style=\"width: 100%; max-width: 800px;\">\r\n <i class=\"pi pi-search\"></i>\r\n <input \r\n type=\"text\" \r\n pInputText \r\n placeholder=\"Rechercher dans les documentations...\" \r\n [(ngModel)]=\"searchQuery\"\r\n (input)=\"filterDocumentation()\"\r\n style=\"width: 100% !important; padding: 12px 20px 12px 40px !important; border-radius: 25px !important;\">\r\n </span>\r\n </div>\r\n\r\n <!-- Liste des cat\u00E9gories -->\r\n <div class=\"categories-container\">\r\n <div *ngFor=\"let category of filteredCategories\" class=\"category-section\">\r\n <div class=\"category-header\" (click)=\"toggleCategory(category.key)\">\r\n <i class=\"pi\" [ngClass]=\"category.expanded ? 'pi-chevron-down' : 'pi-chevron-right'\"></i>\r\n <span class=\"category-icon\">{{ category.icon }}</span>\r\n <h3 class=\"category-title\">{{ category.name }}</h3>\r\n <span class=\"category-count\">({{ category.docs.length }})</span>\r\n </div>\r\n \r\n <div class=\"category-content\" [ngClass]=\"{ 'expanded': category.expanded }\">\r\n <div class=\"docs-grid\">\r\n <div \r\n *ngFor=\"let doc of category.docs\" \r\n class=\"doc-card\"\r\n (click)=\"openDocumentationAndSwitch(doc)\"\r\n [title]=\"doc.description\"> \r\n <div class=\"doc-card-content\">\r\n <h4 class=\"doc-name\">{{ doc.displayName }}</h4>\r\n <p class=\"doc-description\">{{ doc.description }}</p>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <!-- Stats en bas -->\r\n <div class=\"docs-stats\">\r\n <div class=\"stat-item\">\r\n <strong>{{ getTotalDocsCount() }}</strong> documentations disponibles\r\n </div>\r\n <div class=\"stat-item\">\r\n <strong>{{ getOpenTabsCount() }}</strong> onglets ouverts\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Contenu pour onglet de documentation -->\r\n <div *ngIf=\"tab.type === 'doc'\" class=\"markdown-container\">\r\n <!-- Breadcrumb pour navigation -->\r\n <div class=\"doc-breadcrumb\" *ngIf=\"tab.category\">\r\n <span class=\"breadcrumb-item\">{{ tab.category }}</span>\r\n <i class=\"pi pi-angle-right\"></i>\r\n <span class=\"breadcrumb-current\">{{ tab.title }}</span>\r\n </div>\r\n\r\n <div *ngIf=\"tab.loading\" class=\"loading-container\">\r\n <p-progressSpinner strokeWidth=\"4\"></p-progressSpinner>\r\n <span>Chargement de la documentation...</span>\r\n </div>\r\n <markdown \r\n *ngIf=\"!tab.loading\" \r\n [data]=\"tab.content || 'Aucun contenu disponible'\">\r\n </markdown>\r\n </div>\r\n </p-tabPanel>\r\n </p-tabView>\r\n</div>", styles: [".documentation-container{display:flex;flex-direction:column;height:100%;width:100%}.documentation-menu{padding:15px;background:linear-gradient(135deg,#667eea,#764ba2);border-bottom:1px solid #e9ecef;display:flex;gap:10px;flex-shrink:0}.documentation-menu .p-button{background:#fff3;border:1px solid rgba(255,255,255,.3);color:#fff}.documentation-menu .p-button:hover{background:#ffffff4d}.docs-list-container{padding:20px;flex:1;overflow-y:auto;background:#f8f9fa}.docs-header{text-align:center;margin-bottom:30px}.docs-header h2{margin:0 0 10px;color:#2c3e50;font-size:2rem}.docs-header .docs-subtitle{color:#7f8c8d;font-size:1.1rem;margin:0}.search-bar{margin-bottom:30px;display:flex;justify-content:center}.search-bar .search-input{width:100%;padding:12px 20px 12px 40px;border-radius:25px;border:2px solid #e9ecef;font-size:1rem}.search-bar .search-input:focus{border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.categories-container{max-width:1200px;margin:0 auto}.category-section{margin-bottom:25px;background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000001a;overflow:hidden}.category-section .category-header{padding:20px;background:linear-gradient(135deg,#f5f7fa,#c3cfe2);cursor:pointer;display:flex;align-items:center;gap:15px;transition:all .3s ease}.category-section .category-header:hover{background:linear-gradient(135deg,#e8eaf6,#b39ddb)}.category-section .category-header .pi{color:#667eea;font-size:1rem;transition:transform .3s ease}.category-section .category-header .category-icon{font-size:1.5rem}.category-section .category-header .category-title{margin:0;color:#2c3e50;font-size:1.3rem;flex:1}.category-section .category-header .category-count{color:#7f8c8d;font-size:.9rem;background:#677eea1a;padding:4px 12px;border-radius:15px}.category-section .category-content{max-height:0;overflow:hidden;transition:max-height .4s ease-out}.category-section .category-content.expanded{max-height:2000px;transition:max-height .6s ease-in}.docs-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:20px;padding:25px}.doc-card{border:1px solid #e9ecef;border-radius:12px;padding:20px;cursor:pointer;transition:all .3s ease;background:#fff;position:relative;overflow:hidden}.doc-card:before{content:\"\";position:absolute;top:0;left:0;width:100%;height:4px;background:linear-gradient(90deg,#667eea,#764ba2);transform:scaleX(0);transition:transform .3s ease}.doc-card:hover{border-color:#667eea;box-shadow:0 8px 25px #667eea26;transform:translateY(-4px)}.doc-card:hover:before{transform:scaleX(1)}.doc-card .doc-card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px}.doc-card .doc-card-header .doc-icon{font-size:2rem}.doc-card .doc-card-header .doc-badge{padding:4px 8px;border-radius:12px;font-size:.75rem;font-weight:600;text-transform:uppercase}.doc-card .doc-card-header .doc-badge.doc-badge-high{background:#e8f5e8;color:#2e7d2e}.doc-card .doc-card-header .doc-badge.doc-badge-medium{background:#fff3cd;color:#856404}.doc-card .doc-card-header .doc-badge.doc-badge-low{background:#f8f9fa;color:#6c757d}.doc-card .doc-card-content .doc-name{margin:0 0 10px;color:#2c3e50;font-size:1.1rem;font-weight:600;line-height:1.3}.doc-card .doc-card-content .doc-description{color:#6c757d;font-size:.9rem;line-height:1.4;margin:0 0 10px}.doc-card .doc-card-content .doc-filename{color:#adb5bd;font-size:.8rem;font-family:Courier New,monospace}.docs-stats{display:flex;justify-content:center;gap:40px;margin-top:40px;padding:20px;background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000001a}.docs-stats .stat-item{text-align:center;color:#6c757d}.docs-stats .stat-item strong{color:#667eea;font-size:1.2rem}.markdown-container{flex:1;overflow-y:auto;padding:20px;background:#fff}.markdown-container .doc-breadcrumb{display:flex;align-items:center;gap:8px;margin-bottom:20px;padding:10px 0;border-bottom:1px solid #e9ecef;color:#6c757d;font-size:.9rem}.markdown-container .doc-breadcrumb .breadcrumb-current{color:#2c3e50;font-weight:600}.markdown-container markdown{display:block;line-height:1.6}.loading-container{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px;color:#6c757d;gap:20px}.loading-container span{font-size:1.1rem}.documentation-tabs{flex:1;display:flex;flex-direction:column}.documentation-tabs ::ng-deep .p-tabview-panels{flex:1;display:flex}.documentation-tabs ::ng-deep .p-tabview-panels .p-tabview-panel{flex:1;display:flex;flex-direction:column}.documentation-tabs ::ng-deep .p-tabview-nav{background:#f8f9fa;border-bottom:2px solid #e9ecef}.documentation-tabs ::ng-deep .p-tabview-nav .p-tabview-nav-link{background:transparent;border:none;color:#6c757d;font-weight:500}.documentation-tabs ::ng-deep .p-tabview-nav .p-tabview-nav-link:not(.p-disabled):focus{box-shadow:0 0 0 2px #667eea33}.documentation-tabs ::ng-deep .p-tabview-nav .p-highlight .p-tabview-nav-link{background:#fff;color:#667eea;border-bottom:2px solid #667eea}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "directive", type: i5.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "component", type: i6.TabView, selector: "p-tabView", inputs: ["style", "styleClass", "controlClose", "scrollable", "activeIndex", "selectOnFocus", "nextButtonAriaLabel", "prevButtonAriaLabel", "autoHideButtons", "tabindex"], outputs: ["onChange", "onClose", "activeIndexChange"] }, { kind: "component", type: i6.TabPanel, selector: "p-tabPanel", inputs: ["closable", "headerStyle", "headerStyleClass", "cache", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "selected", "disabled", "header", "leftIcon", "rightIcon"] }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i8.MarkdownComponent, selector: "markdown, [markdown]", inputs: ["data", "src", "disableSanitizer", "inline", "clipboard", "clipboardButtonComponent", "clipboardButtonTemplate", "emoji", "katex", "katexOptions", "mermaid", "mermaidOptions", "lineHighlight", "line", "lineOffset", "lineNumbers", "start", "commandLine", "filterOutput", "host", "prompt", "output", "user"], outputs: ["error", "load", "ready"] }, { kind: "component", type: i9.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }] }); }
|
|
151
|
-
}
|
|
152
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DocumentationContextuelleComponent, decorators: [{
|
|
153
|
-
type: Component,
|
|
154
|
-
args: [{ selector: 'cilog-documentation-contextuelle', template: "<div class=\"documentation-container\">\r\n <!-- Menu sup\u00E9rieur -->\r\n <div class=\"documentation-menu\">\r\n <button \r\n pButton \r\n type=\"button\" \r\n icon=\"pi pi-list\" \r\n label=\"Sommaire des documentations\"\r\n class=\"p-button-sm p-button-outlined\"\r\n (click)=\"openDocumentationList()\"\r\n title=\"Voir toutes les documentations disponibles\">\r\n </button>\r\n <button \r\n pButton \r\n type=\"button\" \r\n icon=\"pi pi-home\" \r\n label=\"Documentation courante\"\r\n class=\"p-button-sm p-button-outlined\"\r\n (click)=\"openCurrentPageDoc()\"\r\n title=\"Documentation de la page actuelle\">\r\n </button>\r\n </div>\r\n\r\n <!-- Syst\u00E8me d'onglets -->\r\n <p-tabView \r\n [(activeIndex)]=\"activeTabIndex\"\r\n (onClose)=\"closeTab($event)\"\r\n styleClass=\"documentation-tabs\">\r\n \r\n <p-tabPanel \r\n *ngFor=\"let tab of tabs; let i = index\" \r\n [header]=\"tab.title\"\r\n [closable]=\"tabs.length > 1\">\r\n \r\n <!-- Contenu pour onglet de liste - Version am\u00E9lior\u00E9e -->\r\n <div *ngIf=\"tab.type === 'list'\" class=\"docs-list-container\">\r\n <div class=\"docs-header\">\r\n <h2>\uD83D\uDCDA Sommaire de la Documentation</h2>\r\n <p class=\"docs-subtitle\">Explorez toutes les fonctionnalit\u00E9s disponibles dans LogeProj</p>\r\n </div>\r\n\r\n <!-- Barre de recherche -->\r\n <div class=\"search-bar\">\r\n <span class=\"p-input-icon-left\" style=\"width: 100%; max-width: 800px;\">\r\n <i class=\"pi pi-search\"></i>\r\n <input \r\n type=\"text\" \r\n pInputText \r\n placeholder=\"Rechercher dans les documentations...\" \r\n [(ngModel)]=\"searchQuery\"\r\n (input)=\"filterDocumentation()\"\r\n style=\"width: 100% !important; padding: 12px 20px 12px 40px !important; border-radius: 25px !important;\">\r\n </span>\r\n </div>\r\n\r\n <!-- Liste des cat\u00E9gories -->\r\n <div class=\"categories-container\">\r\n <div *ngFor=\"let category of filteredCategories\" class=\"category-section\">\r\n <div class=\"category-header\" (click)=\"toggleCategory(category.key)\">\r\n <i class=\"pi\" [ngClass]=\"category.expanded ? 'pi-chevron-down' : 'pi-chevron-right'\"></i>\r\n <span class=\"category-icon\">{{ category.icon }}</span>\r\n <h3 class=\"category-title\">{{ category.name }}</h3>\r\n <span class=\"category-count\">({{ category.docs.length }})</span>\r\n </div>\r\n \r\n <div class=\"category-content\" [ngClass]=\"{ 'expanded': category.expanded }\">\r\n <div class=\"docs-grid\">\r\n <div \r\n *ngFor=\"let doc of category.docs\" \r\n class=\"doc-card\"\r\n (click)=\"openDocumentationAndSwitch(doc)\"\r\n [title]=\"doc.description\"> \r\n <div class=\"doc-card-content\">\r\n <h4 class=\"doc-name\">{{ doc.displayName }}</h4>\r\n <p class=\"doc-description\">{{ doc.description }}</p>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <!-- Stats en bas -->\r\n <div class=\"docs-stats\">\r\n <div class=\"stat-item\">\r\n <strong>{{ getTotalDocsCount() }}</strong> documentations disponibles\r\n </div>\r\n <div class=\"stat-item\">\r\n <strong>{{ getOpenTabsCount() }}</strong> onglets ouverts\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Contenu pour onglet de documentation -->\r\n <div *ngIf=\"tab.type === 'doc'\" class=\"markdown-container\">\r\n <!-- Breadcrumb pour navigation -->\r\n <div class=\"doc-breadcrumb\" *ngIf=\"tab.category\">\r\n <span class=\"breadcrumb-item\">{{ tab.category }}</span>\r\n <i class=\"pi pi-angle-right\"></i>\r\n <span class=\"breadcrumb-current\">{{ tab.title }}</span>\r\n </div>\r\n\r\n <div *ngIf=\"tab.loading\" class=\"loading-container\">\r\n <p-progressSpinner strokeWidth=\"4\"></p-progressSpinner>\r\n <span>Chargement de la documentation...</span>\r\n </div>\r\n <markdown \r\n *ngIf=\"!tab.loading\" \r\n [data]=\"tab.content || 'Aucun contenu disponible'\">\r\n </markdown>\r\n </div>\r\n </p-tabPanel>\r\n </p-tabView>\r\n</div>", styles: [".documentation-container{display:flex;flex-direction:column;height:100%;width:100%}.documentation-menu{padding:15px;background:linear-gradient(135deg,#667eea,#764ba2);border-bottom:1px solid #e9ecef;display:flex;gap:10px;flex-shrink:0}.documentation-menu .p-button{background:#fff3;border:1px solid rgba(255,255,255,.3);color:#fff}.documentation-menu .p-button:hover{background:#ffffff4d}.docs-list-container{padding:20px;flex:1;overflow-y:auto;background:#f8f9fa}.docs-header{text-align:center;margin-bottom:30px}.docs-header h2{margin:0 0 10px;color:#2c3e50;font-size:2rem}.docs-header .docs-subtitle{color:#7f8c8d;font-size:1.1rem;margin:0}.search-bar{margin-bottom:30px;display:flex;justify-content:center}.search-bar .search-input{width:100%;padding:12px 20px 12px 40px;border-radius:25px;border:2px solid #e9ecef;font-size:1rem}.search-bar .search-input:focus{border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.categories-container{max-width:1200px;margin:0 auto}.category-section{margin-bottom:25px;background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000001a;overflow:hidden}.category-section .category-header{padding:20px;background:linear-gradient(135deg,#f5f7fa,#c3cfe2);cursor:pointer;display:flex;align-items:center;gap:15px;transition:all .3s ease}.category-section .category-header:hover{background:linear-gradient(135deg,#e8eaf6,#b39ddb)}.category-section .category-header .pi{color:#667eea;font-size:1rem;transition:transform .3s ease}.category-section .category-header .category-icon{font-size:1.5rem}.category-section .category-header .category-title{margin:0;color:#2c3e50;font-size:1.3rem;flex:1}.category-section .category-header .category-count{color:#7f8c8d;font-size:.9rem;background:#677eea1a;padding:4px 12px;border-radius:15px}.category-section .category-content{max-height:0;overflow:hidden;transition:max-height .4s ease-out}.category-section .category-content.expanded{max-height:2000px;transition:max-height .6s ease-in}.docs-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:20px;padding:25px}.doc-card{border:1px solid #e9ecef;border-radius:12px;padding:20px;cursor:pointer;transition:all .3s ease;background:#fff;position:relative;overflow:hidden}.doc-card:before{content:\"\";position:absolute;top:0;left:0;width:100%;height:4px;background:linear-gradient(90deg,#667eea,#764ba2);transform:scaleX(0);transition:transform .3s ease}.doc-card:hover{border-color:#667eea;box-shadow:0 8px 25px #667eea26;transform:translateY(-4px)}.doc-card:hover:before{transform:scaleX(1)}.doc-card .doc-card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px}.doc-card .doc-card-header .doc-icon{font-size:2rem}.doc-card .doc-card-header .doc-badge{padding:4px 8px;border-radius:12px;font-size:.75rem;font-weight:600;text-transform:uppercase}.doc-card .doc-card-header .doc-badge.doc-badge-high{background:#e8f5e8;color:#2e7d2e}.doc-card .doc-card-header .doc-badge.doc-badge-medium{background:#fff3cd;color:#856404}.doc-card .doc-card-header .doc-badge.doc-badge-low{background:#f8f9fa;color:#6c757d}.doc-card .doc-card-content .doc-name{margin:0 0 10px;color:#2c3e50;font-size:1.1rem;font-weight:600;line-height:1.3}.doc-card .doc-card-content .doc-description{color:#6c757d;font-size:.9rem;line-height:1.4;margin:0 0 10px}.doc-card .doc-card-content .doc-filename{color:#adb5bd;font-size:.8rem;font-family:Courier New,monospace}.docs-stats{display:flex;justify-content:center;gap:40px;margin-top:40px;padding:20px;background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000001a}.docs-stats .stat-item{text-align:center;color:#6c757d}.docs-stats .stat-item strong{color:#667eea;font-size:1.2rem}.markdown-container{flex:1;overflow-y:auto;padding:20px;background:#fff}.markdown-container .doc-breadcrumb{display:flex;align-items:center;gap:8px;margin-bottom:20px;padding:10px 0;border-bottom:1px solid #e9ecef;color:#6c757d;font-size:.9rem}.markdown-container .doc-breadcrumb .breadcrumb-current{color:#2c3e50;font-weight:600}.markdown-container markdown{display:block;line-height:1.6}.loading-container{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px;color:#6c757d;gap:20px}.loading-container span{font-size:1.1rem}.documentation-tabs{flex:1;display:flex;flex-direction:column}.documentation-tabs ::ng-deep .p-tabview-panels{flex:1;display:flex}.documentation-tabs ::ng-deep .p-tabview-panels .p-tabview-panel{flex:1;display:flex;flex-direction:column}.documentation-tabs ::ng-deep .p-tabview-nav{background:#f8f9fa;border-bottom:2px solid #e9ecef}.documentation-tabs ::ng-deep .p-tabview-nav .p-tabview-nav-link{background:transparent;border:none;color:#6c757d;font-weight:500}.documentation-tabs ::ng-deep .p-tabview-nav .p-tabview-nav-link:not(.p-disabled):focus{box-shadow:0 0 0 2px #667eea33}.documentation-tabs ::ng-deep .p-tabview-nav .p-highlight .p-tabview-nav-link{background:#fff;color:#667eea;border-bottom:2px solid #667eea}\n"] }]
|
|
155
|
-
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.Router }] });
|
|
156
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnRhdGlvbi1jb250ZXh0dWVsbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2lsb2ctbGliL3NyYy9saWIvdmlld3MvZG9jdW1lbnRhdGlvbi9kb2N1bWVudGF0aW9uLWNvbnRleHR1ZWxsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jaWxvZy1saWIvc3JjL2xpYi92aWV3cy9kb2N1bWVudGF0aW9uL2RvY3VtZW50YXRpb24tY29udGV4dHVlbGxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7O0FBOEJsRCxNQUFNLE9BQU8sa0NBQWtDO0lBUTdDLFlBQ1UsSUFBZ0IsRUFDaEIsTUFBYztRQURkLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQVJ4QixlQUFVLEdBQWUsRUFBRSxDQUFDO1FBQzVCLHVCQUFrQixHQUFlLEVBQUUsQ0FBQztRQUNwQyxTQUFJLEdBQVUsRUFBRSxDQUFDO1FBQ2pCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLG1CQUFjLEdBQUcsQ0FBQyxDQUFDO0lBS2hCLENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsb0NBQW9DLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFXLEVBQUUsRUFBRTtZQUM1RSxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztZQUNyQixJQUFJLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFcEMseURBQXlEO1lBQ3pELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO1lBQ3BDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENB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QyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqRSxPQUFPLElBQUksQ0FBQyxVQUFVO2FBQ25CLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQWUsQ0FBQzthQUMzRCxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FDVixhQUFhLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUNwRixDQUFDO0lBQ04sQ0FBQzsrR0FqS1Usa0NBQWtDO21HQUFsQyxrQ0FBa0Msd0VDOUIvQyw2cEpBaUhNOzs0RkRuRk8sa0NBQWtDO2tCQUw5QyxTQUFTOytCQUNFLGtDQUFrQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbnRlcmZhY2UgRG9jdW1lbnRhdGlvbkVudHJ5IHtcclxuICBkaXNwbGF5TmFtZTogc3RyaW5nO1xyXG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XHJcbiAgY2F0ZWdvcnk6IHN0cmluZztcclxuICB0YWdzOiBzdHJpbmdbXTtcclxufVxyXG5cclxuaW50ZXJmYWNlIENhdGVnb3J5IHtcclxuICBrZXk6IHN0cmluZztcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgaWNvbjogc3RyaW5nO1xyXG4gIGV4cGFuZGVkOiBib29sZWFuO1xyXG4gIGtleXdvcmRzOiBzdHJpbmdbXTtcclxuICBkb2NzOiBEb2NGaWxlW107XHJcbn1cclxuXHJcbmludGVyZmFjZSBEb2NGaWxlIGV4dGVuZHMgRG9jdW1lbnRhdGlvbkVudHJ5IHtcclxuICBmaWxlTmFtZTogc3RyaW5nO1xyXG4gIGljb246IHN0cmluZztcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjaWxvZy1kb2N1bWVudGF0aW9uLWNvbnRleHR1ZWxsZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RvY3VtZW50YXRpb24tY29udGV4dHVlbGxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kb2N1bWVudGF0aW9uLWNvbnRleHR1ZWxsZS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEb2N1bWVudGF0aW9uQ29udGV4dHVlbGxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBjb25maWc6IGFueTtcclxuICBjYXRlZ29yaWVzOiBDYXRlZ29yeVtdID0gW107XHJcbiAgZmlsdGVyZWRDYXRlZ29yaWVzOiBDYXRlZ29yeVtdID0gW107XHJcbiAgdGFiczogYW55W10gPSBbXTtcclxuICBzZWFyY2hRdWVyeSA9ICcnO1xyXG4gIGFjdGl2ZVRhYkluZGV4ID0gMDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaHR0cC5nZXQoJ2Fzc2V0cy9kb2NzL2RvYy1jb25maWcvY29uZmlnLmpzb24nKS5zdWJzY3JpYmUoKGNvbmZpZzogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xyXG4gICAgICB0aGlzLm9yZ2FuaXplRG9jc0J5Q2F0ZWdvcnkoY29uZmlnKTtcclxuXHJcbiAgICAgIC8vIFRlbnRhdGl2ZSBkJ291dmVydHVyZSBhdXRvbWF0aXF1ZSBlbiBmb25jdGlvbiBkZSBsJ1VSTFxyXG4gICAgICBjb25zdCBjdXJyZW50UGF0aCA9IHRoaXMucm91dGVyLnVybDtcclxuICAgICAgY29uc3QgZm91bmREb2MgPSB0aGlzLmZpbmREb2NGb3JVcmwoY3VycmVudFBhdGgpO1xyXG4gICAgICBpZiAoZm91bmREb2MpIHtcclxuICAgICAgICB0aGlzLm9wZW5Eb2N1bWVudGF0aW9uQW5kU3dpdGNoKGZvdW5kRG9jKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm9wZW5Eb2N1bWVudGF0aW9uTGlzdCgpOyAvLyBmYWxsYmFjayBzdXIgbGUgc29tbWFpcmVcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvcGVuQ3VycmVudFBhZ2VEb2MoKTogdm9pZCB7XHJcbiAgICBjb25zdCBjdXJyZW50UGF0aCA9IHRoaXMucm91dGVyLnVybDtcclxuICAgIGNvbnN0IGZvdW5kRG9jID0gdGhpcy5maW5kRG9jRm9yVXJsKGN1cnJlbnRQYXRoKTtcclxuICAgIGlmIChmb3VuZERvYykge1xyXG4gICAgICB0aGlzLm9wZW5Eb2N1bWVudGF0aW9uQW5kU3dpdGNoKGZvdW5kRG9jKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMub3BlbkRvY3VtZW50YXRpb25MaXN0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvcmdhbml6ZURvY3NCeUNhdGVnb3J5KGNvbmZpZzogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCBjYXRlZ29yaWVzID0gY29uZmlnLmNhdGVnb3JpZXMubWFwKChjYXQ6IGFueSkgPT4gKHtcclxuICAgICAgLi4uY2F0LFxyXG4gICAgICBkb2NzOiBbXVxyXG4gICAgfSkpO1xyXG5cclxuICAgIGNvbnN0IGljb25NYXBwaW5ncyA9IGNvbmZpZy5pY29uTWFwcGluZ3MgfHwge307XHJcbiAgICBjb25zdCBkb2NzQ29uZmlnID0gY29uZmlnLmRvY3VtZW50YXRpb25zO1xyXG5cclxuICAgIGZvciAoY29uc3QgZmlsZU5hbWUgaW4gZG9jc0NvbmZpZykge1xyXG4gICAgICBjb25zdCBkb2MgPSBkb2NzQ29uZmlnW2ZpbGVOYW1lXTtcclxuICAgICAgY29uc3QgY2F0ZWdvcnlLZXkgPSBkb2MuY2F0ZWdvcnk7XHJcblxyXG4gICAgICBjb25zdCBtYXRjaGVkQ2F0ZWdvcnkgPSBjYXRlZ29yaWVzLmZpbmQoKGNhdDogYW55KSA9PiBjYXQua2V5ID09PSBjYXRlZ29yeUtleSk7XHJcbiAgICAgIGlmIChtYXRjaGVkQ2F0ZWdvcnkpIHtcclxuICAgICAgICBjb25zdCBpY29uID0gZG9jLnRhZ3M/Lm1hcCh0ID0+IGljb25NYXBwaW5nc1t0XSk/LmZpbmQoaSA9PiAhIWkpIHx8IGljb25NYXBwaW5ncy5kZWZhdWx0O1xyXG4gICAgICAgIG1hdGNoZWRDYXRlZ29yeS5kb2NzLnB1c2goe1xyXG4gICAgICAgICAgLi4uZG9jLFxyXG4gICAgICAgICAgZmlsZU5hbWUsXHJcbiAgICAgICAgICBpY29uXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNhdGVnb3JpZXMgPSBjYXRlZ29yaWVzLnNvcnQoKGEsIGIpID0+IGEubmFtZSAtIGIubmFtZSk7XHJcbiAgICB0aGlzLmNhdGVnb3JpZXMuZm9yRWFjaChjYXQgPT4ge1xyXG4gICAgICBjYXQuZG9jcyA9IGNhdC5kb2NzLnNvcnQoKGEsIGIpID0+IGEuZGlzcGxheU5hbWUubG9jYWxlQ29tcGFyZShiLmRpc3BsYXlOYW1lKSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZmlsdGVyZWRDYXRlZ29yaWVzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmNhdGVnb3JpZXMpKTtcclxuICB9XHJcblxyXG4gIGZpbHRlckRvY3VtZW50YXRpb24oKTogdm9pZCB7XHJcbiAgICBjb25zdCBxdWVyeSA9IHRoaXMuc2VhcmNoUXVlcnkudG9Mb3dlckNhc2UoKTtcclxuXHJcbiAgICB0aGlzLmZpbHRlcmVkQ2F0ZWdvcmllcyA9IHRoaXMuY2F0ZWdvcmllcy5tYXAoY2F0ZWdvcnkgPT4ge1xyXG4gICAgICBjb25zdCBmaWx0ZXJlZERvY3MgPSBjYXRlZ29yeS5kb2NzLmZpbHRlcihkb2MgPT5cclxuICAgICAgICBkb2MuZGlzcGxheU5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhxdWVyeSkgfHxcclxuICAgICAgICBkb2MuZGVzY3JpcHRpb24udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhxdWVyeSkgfHxcclxuICAgICAgICBkb2MudGFncz8uc29tZSh0YWcgPT4gdGFnLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocXVlcnkpKVxyXG4gICAgICApO1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIC4uLmNhdGVnb3J5LFxyXG4gICAgICAgIGRvY3M6IGZpbHRlcmVkRG9jc1xyXG4gICAgICB9O1xyXG4gICAgfSkuZmlsdGVyKGNhdCA9PiBjYXQuZG9jcy5sZW5ndGggPiAwKTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZUNhdGVnb3J5KGtleTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBjYXQgPSB0aGlzLmZpbHRlcmVkQ2F0ZWdvcmllcy5maW5kKGMgPT4gYy5rZXkgPT09IGtleSk7XHJcbiAgICBpZiAoY2F0KSBjYXQuZXhwYW5kZWQgPSAhY2F0LmV4cGFuZGVkO1xyXG4gIH1cclxuXHJcbiAgb3BlblRhYkFuZEFjdGl2YXRlKHRhYjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnRhYnMucHVzaCh0YWIpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuYWN0aXZlVGFiSW5kZXggPSB0aGlzLnRhYnMubGVuZ3RoIC0gMTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIG9wZW5Eb2N1bWVudGF0aW9uQW5kU3dpdGNoKGRvYzogRG9jRmlsZSk6IHZvaWQge1xyXG4gICAgY29uc3QgZXhpc3RpbmdUYWIgPSB0aGlzLnRhYnMuZmluZCh0YWIgPT4gdGFiLmZpbGVOYW1lID09PSBkb2MuZmlsZU5hbWUpO1xyXG4gICAgaWYgKGV4aXN0aW5nVGFiKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlVGFiSW5kZXggPSB0aGlzLnRhYnMuaW5kZXhPZihleGlzdGluZ1RhYik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBuZXdUYWIgPSB7XHJcbiAgICAgIHR5cGU6ICdkb2MnLFxyXG4gICAgICB0aXRsZTogZG9jLmRpc3BsYXlOYW1lLFxyXG4gICAgICBmaWxlTmFtZTogZG9jLmZpbGVOYW1lLFxyXG4gICAgICBjb250ZW50OiAnJyxcclxuICAgICAgbG9hZGluZzogdHJ1ZSxcclxuICAgICAgY2F0ZWdvcnk6IHRoaXMuY2F0ZWdvcmllcy5maW5kKGMgPT4gYy5rZXkgPT09IGRvYy5jYXRlZ29yeSk/Lm5hbWVcclxuICAgIH07XHJcblxyXG4gIHRoaXMub3BlblRhYkFuZEFjdGl2YXRlKG5ld1RhYik7XHJcblxyXG4gICAgZmV0Y2goYGFzc2V0cy9kb2NzLyR7ZG9jLmZpbGVOYW1lfWApXHJcbiAgICAgIC50aGVuKHJlcyA9PiByZXMudGV4dCgpKVxyXG4gICAgICAudGhlbihjb250ZW50ID0+IHtcclxuICAgICAgICBuZXdUYWIuY29udGVudCA9IGNvbnRlbnQ7XHJcbiAgICAgICAgbmV3VGFiLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKCgpID0+IHtcclxuICAgICAgICBuZXdUYWIuY29udGVudCA9ICfinYwgRXJyZXVyIGxvcnMgZHUgY2hhcmdlbWVudCBkdSBmaWNoaWVyIG1hcmtkb3duLic7XHJcbiAgICAgICAgbmV3VGFiLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBvcGVuRG9jdW1lbnRhdGlvbkxpc3QoKTogdm9pZCB7XHJcbiAgICBjb25zdCBleGlzdGluZyA9IHRoaXMudGFicy5maW5kKHQgPT4gdC50eXBlID09PSAnbGlzdCcpO1xyXG4gICAgaWYgKGV4aXN0aW5nKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlVGFiSW5kZXggPSB0aGlzLnRhYnMuaW5kZXhPZihleGlzdGluZyk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMub3BlblRhYkFuZEFjdGl2YXRlKHsgdHlwZTogJ2xpc3QnLCB0aXRsZTogJ/Cfk5ogU29tbWFpcmUgZGVzIERvY3MnIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0VG90YWxEb2NzQ291bnQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLmNhdGVnb3JpZXMucmVkdWNlKChzdW0sIGNhdCkgPT4gc3VtICsgY2F0LmRvY3MubGVuZ3RoLCAwKTtcclxuICB9XHJcblxyXG4gIGdldE9wZW5UYWJzQ291bnQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLnRhYnMubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VUYWIoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy50YWJzLnNwbGljZShldmVudC5pbmRleCwgMSk7XHJcbiAgICBpZiAodGhpcy5hY3RpdmVUYWJJbmRleCA+PSB0aGlzLnRhYnMubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlVGFiSW5kZXggPSB0aGlzLnRhYnMubGVuZ3RoIC0gMTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKiBFc3NhaWUgZGUgcmV0cm91dmVyIHVuIGRvY3VtZW50IMOgIHBhcnRpciBkZSBsJ1VSTCBBbmd1bGFyICovXHJcbiAgZmluZERvY0ZvclVybCh1cmw6IHN0cmluZyk6IERvY0ZpbGUgfCB1bmRlZmluZWQge1xyXG4gICAgY29uc3Qgbm9ybWFsaXplZFVybCA9IHVybC5yZXBsYWNlKC9eXFwvKy8sICcnKS5yZXBsYWNlKC9cXC8kLywgJycpO1xyXG4gICAgcmV0dXJuIHRoaXMuY2F0ZWdvcmllc1xyXG4gICAgICAucmVkdWNlKChhY2MsIGNhdCkgPT4gYWNjLmNvbmNhdChjYXQuZG9jcyksIFtdIGFzIERvY0ZpbGVbXSlcclxuICAgICAgLmZpbmQoZG9jID0+XHJcbiAgICAgICAgbm9ybWFsaXplZFVybC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGRvYy5maWxlTmFtZS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoJy5tZCcsICcnKSlcclxuICAgICAgKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImRvY3VtZW50YXRpb24tY29udGFpbmVyXCI+XHJcbiAgPCEtLSBNZW51IHN1cMOpcmlldXIgLS0+XHJcbiAgPGRpdiBjbGFzcz1cImRvY3VtZW50YXRpb24tbWVudVwiPlxyXG4gICAgPGJ1dHRvbiBcclxuICAgICAgcEJ1dHRvbiBcclxuICAgICAgdHlwZT1cImJ1dHRvblwiIFxyXG4gICAgICBpY29uPVwicGkgcGktbGlzdFwiIFxyXG4gICAgICBsYWJlbD1cIlNvbW1haXJlIGRlcyBkb2N1bWVudGF0aW9uc1wiXHJcbiAgICAgIGNsYXNzPVwicC1idXR0b24tc20gcC1idXR0b24tb3V0bGluZWRcIlxyXG4gICAgICAoY2xpY2spPVwib3BlbkRvY3VtZW50YXRpb25MaXN0KClcIlxyXG4gICAgICB0aXRsZT1cIlZvaXIgdG91dGVzIGxlcyBkb2N1bWVudGF0aW9ucyBkaXNwb25pYmxlc1wiPlxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIFxyXG4gICAgICBwQnV0dG9uIFxyXG4gICAgICB0eXBlPVwiYnV0dG9uXCIgXHJcbiAgICAgIGljb249XCJwaSBwaS1ob21lXCIgXHJcbiAgICAgIGxhYmVsPVwiRG9jdW1lbnRhdGlvbiBjb3VyYW50ZVwiXHJcbiAgICAgIGNsYXNzPVwicC1idXR0b24tc20gcC1idXR0b24tb3V0bGluZWRcIlxyXG4gICAgICAoY2xpY2spPVwib3BlbkN1cnJlbnRQYWdlRG9jKClcIlxyXG4gICAgICB0aXRsZT1cIkRvY3VtZW50YXRpb24gZGUgbGEgcGFnZSBhY3R1ZWxsZVwiPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gU3lzdMOobWUgZCdvbmdsZXRzIC0tPlxyXG4gIDxwLXRhYlZpZXcgXHJcbiAgICBbKGFjdGl2ZUluZGV4KV09XCJhY3RpdmVUYWJJbmRleFwiXHJcbiAgICAob25DbG9zZSk9XCJjbG9zZVRhYigkZXZlbnQpXCJcclxuICAgIHN0eWxlQ2xhc3M9XCJkb2N1bWVudGF0aW9uLXRhYnNcIj5cclxuICAgIFxyXG4gICAgPHAtdGFiUGFuZWwgXHJcbiAgICAgICpuZ0Zvcj1cImxldCB0YWIgb2YgdGFiczsgbGV0IGkgPSBpbmRleFwiIFxyXG4gICAgICBbaGVhZGVyXT1cInRhYi50aXRsZVwiXHJcbiAgICAgIFtjbG9zYWJsZV09XCJ0YWJzLmxlbmd0aCA+IDFcIj5cclxuICAgICAgXHJcbiAgICAgIDwhLS0gQ29udGVudSBwb3VyIG9uZ2xldCBkZSBsaXN0ZSAtIFZlcnNpb24gYW3DqWxpb3LDqWUgLS0+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJ0YWIudHlwZSA9PT0gJ2xpc3QnXCIgY2xhc3M9XCJkb2NzLWxpc3QtY29udGFpbmVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRvY3MtaGVhZGVyXCI+XHJcbiAgICAgICAgICA8aDI+8J+TmiBTb21tYWlyZSBkZSBsYSBEb2N1bWVudGF0aW9uPC9oMj5cclxuICAgICAgICAgIDxwIGNsYXNzPVwiZG9jcy1zdWJ0aXRsZVwiPkV4cGxvcmV6IHRvdXRlcyBsZXMgZm9uY3Rpb25uYWxpdMOpcyBkaXNwb25pYmxlcyBkYW5zIExvZ2VQcm9qPC9wPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIEJhcnJlIGRlIHJlY2hlcmNoZSAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWJhclwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWlucHV0LWljb24tbGVmdFwiIHN0eWxlPVwid2lkdGg6IDEwMCU7IG1heC13aWR0aDogODAwcHg7XCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktc2VhcmNoXCI+PC9pPlxyXG4gICAgICAgICAgICA8aW5wdXQgXHJcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIiBcclxuICAgICAgICAgICAgICBwSW5wdXRUZXh0IFxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiUmVjaGVyY2hlciBkYW5zIGxlcyBkb2N1bWVudGF0aW9ucy4uLlwiIFxyXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoUXVlcnlcIlxyXG4gICAgICAgICAgICAgIChpbnB1dCk9XCJmaWx0ZXJEb2N1bWVudGF0aW9uKClcIlxyXG4gICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDEwMCUgIWltcG9ydGFudDsgcGFkZGluZzogMTJweCAyMHB4IDEycHggNDBweCAhaW1wb3J0YW50OyBib3JkZXItcmFkaXVzOiAyNXB4ICFpbXBvcnRhbnQ7XCI+XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gTGlzdGUgZGVzIGNhdMOpZ29yaWVzIC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXRlZ29yaWVzLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgY2F0ZWdvcnkgb2YgZmlsdGVyZWRDYXRlZ29yaWVzXCIgY2xhc3M9XCJjYXRlZ29yeS1zZWN0aW9uXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXRlZ29yeS1oZWFkZXJcIiAoY2xpY2spPVwidG9nZ2xlQ2F0ZWdvcnkoY2F0ZWdvcnkua2V5KVwiPlxyXG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwicGlcIiBbbmdDbGFzc109XCJjYXRlZ29yeS5leHBhbmRlZCA/ICdwaS1jaGV2cm9uLWRvd24nIDogJ3BpLWNoZXZyb24tcmlnaHQnXCI+PC9pPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2F0ZWdvcnktaWNvblwiPnt7IGNhdGVnb3J5Lmljb24gfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2F0ZWdvcnktdGl0bGVcIj57eyBjYXRlZ29yeS5uYW1lIH19PC9oMz5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhdGVnb3J5LWNvdW50XCI+KHt7IGNhdGVnb3J5LmRvY3MubGVuZ3RoIH19KTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2F0ZWdvcnktY29udGVudFwiIFtuZ0NsYXNzXT1cInsgJ2V4cGFuZGVkJzogY2F0ZWdvcnkuZXhwYW5kZWQgfVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkb2NzLWdyaWRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgXHJcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkb2Mgb2YgY2F0ZWdvcnkuZG9jc1wiIFxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImRvYy1jYXJkXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5Eb2N1bWVudGF0aW9uQW5kU3dpdGNoKGRvYylcIlxyXG4gICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiZG9jLmRlc2NyaXB0aW9uXCI+ICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkb2MtY2FyZC1jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPVwiZG9jLW5hbWVcIj57eyBkb2MuZGlzcGxheU5hbWUgfX08L2g0PlxyXG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZG9jLWRlc2NyaXB0aW9uXCI+e3sgZG9jLmRlc2NyaXB0aW9uIH19PC9wPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIFxyXG4gICAgICAgIDwhLS0gU3RhdHMgZW4gYmFzIC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkb2NzLXN0YXRzXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RhdC1pdGVtXCI+XHJcbiAgICAgICAgICAgIDxzdHJvbmc+e3sgZ2V0VG90YWxEb2NzQ291bnQoKSB9fTwvc3Ryb25nPiBkb2N1bWVudGF0aW9ucyBkaXNwb25pYmxlc1xyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RhdC1pdGVtXCI+XHJcbiAgICAgICAgICAgIDxzdHJvbmc+e3sgZ2V0T3BlblRhYnNDb3VudCgpIH19PC9zdHJvbmc+IG9uZ2xldHMgb3V2ZXJ0c1xyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLSBDb250ZW51IHBvdXIgb25nbGV0IGRlIGRvY3VtZW50YXRpb24gLS0+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJ0YWIudHlwZSA9PT0gJ2RvYydcIiBjbGFzcz1cIm1hcmtkb3duLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDwhLS0gQnJlYWRjcnVtYiBwb3VyIG5hdmlnYXRpb24gLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRvYy1icmVhZGNydW1iXCIgKm5nSWY9XCJ0YWIuY2F0ZWdvcnlcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYnJlYWRjcnVtYi1pdGVtXCI+e3sgdGFiLmNhdGVnb3J5IH19PC9zcGFuPlxyXG4gICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1hbmdsZS1yaWdodFwiPjwvaT5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYnJlYWRjcnVtYi1jdXJyZW50XCI+e3sgdGFiLnRpdGxlIH19PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwidGFiLmxvYWRpbmdcIiBjbGFzcz1cImxvYWRpbmctY29udGFpbmVyXCI+XHJcbiAgICAgICAgICA8cC1wcm9ncmVzc1NwaW5uZXIgc3Ryb2tlV2lkdGg9XCI0XCI+PC9wLXByb2dyZXNzU3Bpbm5lcj5cclxuICAgICAgICAgIDxzcGFuPkNoYXJnZW1lbnQgZGUgbGEgZG9jdW1lbnRhdGlvbi4uLjwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bWFya2Rvd24gXHJcbiAgICAgICAgICAqbmdJZj1cIiF0YWIubG9hZGluZ1wiIFxyXG4gICAgICAgICAgW2RhdGFdPVwidGFiLmNvbnRlbnQgfHwgJ0F1Y3VuIGNvbnRlbnUgZGlzcG9uaWJsZSdcIj5cclxuICAgICAgICA8L21hcmtkb3duPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvcC10YWJQYW5lbD5cclxuICA8L3AtdGFiVmlldz5cclxuPC9kaXY+Il19
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { Output, ViewChild } from '@angular/core';
|
|
2
|
-
import { EventEmitter } from '@angular/core';
|
|
3
|
-
import { Input } from '@angular/core';
|
|
4
|
-
import { Component } from '@angular/core';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "primeng/editor";
|
|
7
|
-
import * as i2 from "@angular/forms";
|
|
8
|
-
export class CilogEditorComponent {
|
|
9
|
-
constructor() {
|
|
10
|
-
this.textChange = new EventEmitter();
|
|
11
|
-
this.onTextChange = new EventEmitter();
|
|
12
|
-
}
|
|
13
|
-
ngOnInit() {
|
|
14
|
-
}
|
|
15
|
-
change(event) {
|
|
16
|
-
this.textChange.emit(event.htmlValue);
|
|
17
|
-
this.onTextChange.emit({ htmlValue: event.htmlValue, textValue: event.textValue });
|
|
18
|
-
}
|
|
19
|
-
onSelectionChange(event) {
|
|
20
|
-
// NOTHING
|
|
21
|
-
}
|
|
22
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CilogEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
23
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CilogEditorComponent, selector: "cilog-editor", inputs: { text: "text" }, outputs: { textChange: "textChange", onTextChange: "onTextChange" }, viewQueries: [{ propertyName: "editor", first: true, predicate: ["editor"], descendants: true }], ngImport: i0, template: "<p-editor #editor\r\n [(ngModel)]=\"text\"\r\n (onTextChange)=\"change($event)\">\r\n</p-editor>\r\n", styles: [""], dependencies: [{ kind: "component", type: i1.Editor, selector: "p-editor", inputs: ["style", "styleClass", "placeholder", "formats", "modules", "bounds", "scrollingContainer", "debug", "readonly"], outputs: ["onInit", "onTextChange", "onSelectionChange"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
|
|
24
|
-
}
|
|
25
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CilogEditorComponent, decorators: [{
|
|
26
|
-
type: Component,
|
|
27
|
-
args: [{ selector: 'cilog-editor', template: "<p-editor #editor\r\n [(ngModel)]=\"text\"\r\n (onTextChange)=\"change($event)\">\r\n</p-editor>\r\n" }]
|
|
28
|
-
}], ctorParameters: () => [], propDecorators: { text: [{
|
|
29
|
-
type: Input
|
|
30
|
-
}], textChange: [{
|
|
31
|
-
type: Output
|
|
32
|
-
}], onTextChange: [{
|
|
33
|
-
type: Output
|
|
34
|
-
}], editor: [{
|
|
35
|
-
type: ViewChild,
|
|
36
|
-
args: ['editor']
|
|
37
|
-
}] } });
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NpbG9nLWxpYi9zcmMvbGliL3ZpZXdzL2VkaXRvci9lZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2lsb2ctbGliL3NyYy9saWIvdmlld3MvZWRpdG9yL2VkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEMsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQzs7OztBQVNsRCxNQUFNLE9BQU8sb0JBQW9CO0lBUzdCO1FBTlUsZUFBVSxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBRTlELGlCQUFZLEdBQW9DLElBQUksWUFBWSxFQUFxQixDQUFDO0lBSWhGLENBQUM7SUFFakIsUUFBUTtJQUNSLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSztRQUNSLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRUQsaUJBQWlCLENBQUMsS0FBSztRQUNuQixVQUFVO0lBQ2QsQ0FBQzsrR0FyQlEsb0JBQW9CO21HQUFwQixvQkFBb0IscVBDWmpDLHdIQUlBOzs0RkRRYSxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0ksY0FBYzt3REFNZixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0ksVUFBVTtzQkFBbkIsTUFBTTtnQkFFRyxZQUFZO3NCQUFyQixNQUFNO2dCQUVjLE1BQU07c0JBQTFCLFNBQVM7dUJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJRWRpdG9yVGV4dENoYW5nZSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvaW50ZXJmYWNlcy9lZGl0b3IuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgRWRpdG9yIH0gZnJvbSAncHJpbWVuZy9lZGl0b3InO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2NpbG9nLWVkaXRvcicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2VkaXRvci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDaWxvZ0VkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gICAgQElucHV0KCkgdGV4dDogc3RyaW5nO1xyXG4gICAgQE91dHB1dCgpIHRleHRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gICAgQE91dHB1dCgpIG9uVGV4dENoYW5nZTogRXZlbnRFbWl0dGVyPElFZGl0b3JUZXh0Q2hhbmdlPiA9IG5ldyBFdmVudEVtaXR0ZXI8SUVkaXRvclRleHRDaGFuZ2U+KCk7XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnZWRpdG9yJykgZWRpdG9yOiBFZGl0b3I7XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIH1cclxuXHJcbiAgICBjaGFuZ2UoZXZlbnQpIHtcclxuICAgICAgICB0aGlzLnRleHRDaGFuZ2UuZW1pdChldmVudC5odG1sVmFsdWUpO1xyXG4gICAgICAgIHRoaXMub25UZXh0Q2hhbmdlLmVtaXQoeyBodG1sVmFsdWU6IGV2ZW50Lmh0bWxWYWx1ZSwgdGV4dFZhbHVlOiBldmVudC50ZXh0VmFsdWUgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25TZWxlY3Rpb25DaGFuZ2UoZXZlbnQpIHtcclxuICAgICAgICAvLyBOT1RISU5HXHJcbiAgICB9XHJcbn1cclxuIiwiPHAtZWRpdG9yICNlZGl0b3JcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwidGV4dFwiXHJcbiAgICAgICAgICAob25UZXh0Q2hhbmdlKT1cImNoYW5nZSgkZXZlbnQpXCI+XHJcbjwvcC1lZGl0b3I+XHJcbiJdfQ==
|