@libs-ui/services-config-project 0.1.1-1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -0
- package/config-project-data.d.ts +326 -0
- package/config-project.interface.d.ts +104 -0
- package/config-project.service.d.ts +62 -0
- package/esm2022/config-project-data.mjs +621 -0
- package/esm2022/config-project.interface.mjs +2 -0
- package/esm2022/config-project.service.mjs +331 -0
- package/esm2022/index.mjs +4 -0
- package/esm2022/libs-ui-services-config-project.mjs +5 -0
- package/fesm2022/libs-ui-services-config-project.mjs +957 -0
- package/fesm2022/libs-ui-services-config-project.mjs.map +1 -0
- package/index.d.ts +3 -0
- package/package.json +25 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLXByb2plY3QuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy11aS9zZXJ2aWNlcy9jb25maWctcHJvamVjdC9zcmMvY29uZmlnLXByb2plY3QuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIElMaWJzVWlDb25maWdGb250RmFtaWx5IHtcbiAgbmFtZTogc3RyaW5nO1xuICB1cmlfcmVndWxhcjogc3RyaW5nO1xuICB1cmlfbWVkaXVtOiBzdHJpbmc7XG4gIHVyaV9zZW1pYm9sZDogc3RyaW5nO1xuICB1cmlfYm9sZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTGlic1VpQ29uZmlnRm9udFdlaWdodCB7XG4gIHVyaV9yZWd1bGFyOiBzdHJpbmc7XG4gIHVyaV9tZWRpdW06IHN0cmluZztcbiAgdXJpX3NlbWlib2xkOiBzdHJpbmc7XG4gIHVyaV9ib2xkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxpYnNVaUNvbmZpZ0ZvbnRIZWFkaW5nIHtcbiAgaDFyOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDFtOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDFzOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDFiOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDJyOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDJtOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDJzOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDJiOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDNyOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDNtOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDNzOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDNiOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDRyOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDRtOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDRzOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDRiOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDVyOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDVtOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDVzOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDViOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDZyOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDZtOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDZzOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDZiOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDdyOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDdtOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDdzOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbiAgaDdiOiBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTGlic1VpQ29uZmlnRm9udEhlYWRpbmdTdHlsZSB7XG4gICdmb250LXNpemUnOiBzdHJpbmc7XG4gICdmb250LXdlaWdodCc6IHN0cmluZztcbiAgJ2xpbmUtaGVpZ2h0Jzogc3RyaW5nO1xuICAnbGV0dGVyLXNwYWNpbmcnOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxpYnNVaUNvbmZpZ0J1dHRvblN0YXR1cyB7XG4gIFtrZXk6IHN0cmluZ106IHtcbiAgICBjb2xvcjogc3RyaW5nO1xuICAgIGJhY2tncm91bmQ/OiBzdHJpbmc7XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxpYnNVaUNvbmZpZ0J1dHRvblRhYiB7XG4gIFtrZXk6IHN0cmluZ106IElDb2xvckJ1dHRvblRhYjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQ29sb3JCdXR0b25UYWIge1xuICBjb2xvcjogc3RyaW5nO1xuICBiYWNrZ3JvdW5kPzogc3RyaW5nO1xuICBiYWNrZ3JvdW5kX2JhZGdlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElDb2xvckJ1dHRvbiB7XG4gIGNvbmZpZ1N0ZXBDb2xvcjoge1xuICAgIHRleHQ6IHN0cmluZyB8IG51bWJlcjtcbiAgICB0ZXh0X2hvdmVyOiBzdHJpbmcgfCBudW1iZXI7XG4gICAgdGV4dF9hY3RpdmU6IHN0cmluZyB8IG51bWJlcjtcbiAgICB0ZXh0X2Rpc2FibGU6IHN0cmluZyB8IG51bWJlcjtcbiAgICBiYWNrZ3JvdW5kPzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIGJhY2tncm91bmRfaG92ZXI/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgYmFja2dyb3VuZF9hY3RpdmU/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgYmFja2dyb3VuZF9kaXNhYmxlPzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIGJvcmRlcj86IHN0cmluZyB8IG51bWJlcjtcbiAgICBib3JkZXJfaG92ZXI/OiBzdHJpbmcgfCBudW1iZXI7XG4gICAgYm9yZGVyX2FjdGl2ZT86IHN0cmluZyB8IG51bWJlcjtcbiAgICBib3JkZXJfZGlzYWJsZT86IHN0cmluZyB8IG51bWJlcjtcbiAgfTtcbiAgcm9vdENvbG9yOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxpYnNVaUNvbmZpZ0J1dHRvblNpemUge1xuICBpY29uOiB7XG4gICAgbGFyZ2U6IHN0cmluZztcbiAgICBtZWRpdW06IHN0cmluZztcbiAgICBzbWFsbDogc3RyaW5nO1xuICAgIHNtYWxsZXI6IHN0cmluZztcbiAgfTtcbiAgbGFyZ2U6IHtcbiAgICBmb250X3NpemU6IHN0cmluZztcbiAgICBsaW5lX2hlaWdodDogc3RyaW5nO1xuICB9O1xuICBtZWRpdW06IHtcbiAgICBmb250X3NpemU6IHN0cmluZztcbiAgICBsaW5lX2hlaWdodDogc3RyaW5nO1xuICB9O1xuICBzbWFsbDoge1xuICAgIGZvbnRfc2l6ZTogc3RyaW5nO1xuICAgIGxpbmVfaGVpZ2h0OiBzdHJpbmc7XG4gIH07XG4gIHNtYWxsZXI6IHtcbiAgICBmb250X3NpemU6IHN0cmluZztcbiAgICBsaW5lX2hlaWdodDogc3RyaW5nO1xuICB9O1xufVxuIl19
|
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
+
import { Injectable, computed, effect, signal } from '@angular/core';
|
|
3
|
+
import { colorStepContrastFromOrigin, get } from '@libs-ui/utils';
|
|
4
|
+
import { configButtonColor, configButtonStatus, configButtonTab, configHeading, configLinkButton, fontConfig, sizeButtonConfig, styleButtonTab, weights } from './config-project-data';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class LibsUiConfigProjectService {
|
|
7
|
+
themeColor = signal('#226ff5');
|
|
8
|
+
borderColor = signal('#e6e7ea');
|
|
9
|
+
textErrorColor = signal('#ff5454');
|
|
10
|
+
iconHoverDangerColor = signal('#f15767');
|
|
11
|
+
borderErrorColor = signal('#ee2d41');
|
|
12
|
+
backgroundDisableColor = signal('#f8f9fa');
|
|
13
|
+
textReadonlyColor = signal('#071631');
|
|
14
|
+
textDisableColor = signal('#9ca2ad');
|
|
15
|
+
backgroundReadonlyColor = signal('#f8f9fa');
|
|
16
|
+
backgroundUserSelection = signal('#00000040');
|
|
17
|
+
backgroundList = signal('#f8f9fa');
|
|
18
|
+
backgroundListHover = signal('#f8f9fa');
|
|
19
|
+
backgroundListHoverDanger = signal('#fef5f6');
|
|
20
|
+
configFont = signal(fontConfig);
|
|
21
|
+
configHead = signal(configHeading);
|
|
22
|
+
functionGetConfigButtonIncludes = signal(() => {
|
|
23
|
+
return {};
|
|
24
|
+
});
|
|
25
|
+
configButton = computed(() => {
|
|
26
|
+
return { ...configButtonColor(this.themeColor()), ...configLinkButton(this.themeColor()), ...this.functionGetConfigButtonIncludes()(this.themeColor()) };
|
|
27
|
+
});
|
|
28
|
+
configButtonSize = signal(sizeButtonConfig());
|
|
29
|
+
configButtonStatus = signal(configButtonStatus());
|
|
30
|
+
configButtonTab = signal(configButtonTab());
|
|
31
|
+
styleClassGlobalEl = document.createElement('style');
|
|
32
|
+
styleClassHeadEl = document.createElement('style');
|
|
33
|
+
styleClassButtonTabEl = document.createElement('style');
|
|
34
|
+
constructor() {
|
|
35
|
+
effect(() => {
|
|
36
|
+
this.setThemeColor();
|
|
37
|
+
});
|
|
38
|
+
effect(() => {
|
|
39
|
+
this.setupFontFamily();
|
|
40
|
+
});
|
|
41
|
+
effect(() => {
|
|
42
|
+
this.setupFontHead();
|
|
43
|
+
});
|
|
44
|
+
effect(() => {
|
|
45
|
+
this.setupButtonTab();
|
|
46
|
+
});
|
|
47
|
+
effect(() => {
|
|
48
|
+
this.setupButtonSize();
|
|
49
|
+
});
|
|
50
|
+
this.configString();
|
|
51
|
+
this.setClassGlobal();
|
|
52
|
+
}
|
|
53
|
+
set ThemeColor(color) {
|
|
54
|
+
this.themeColor.set(color || '#226ff5');
|
|
55
|
+
}
|
|
56
|
+
set BorderColor(color) {
|
|
57
|
+
this.borderColor.set(color || '#e6e7ea');
|
|
58
|
+
}
|
|
59
|
+
set BorderErrorColor(color) {
|
|
60
|
+
this.borderErrorColor.set(color || '#ee2d41');
|
|
61
|
+
}
|
|
62
|
+
set TextErrorColor(color) {
|
|
63
|
+
this.textErrorColor.set(color || '#ff5454');
|
|
64
|
+
}
|
|
65
|
+
set IconHoverDangerColor(color) {
|
|
66
|
+
this.iconHoverDangerColor.set(color || '#ff5454');
|
|
67
|
+
}
|
|
68
|
+
set BackgroundReadonlyColor(color) {
|
|
69
|
+
this.backgroundReadonlyColor.set(color || '#f15767');
|
|
70
|
+
}
|
|
71
|
+
set TextReadonlyColor(color) {
|
|
72
|
+
this.textReadonlyColor.set(color || '#071631');
|
|
73
|
+
}
|
|
74
|
+
set BackgroundUserSelection(color) {
|
|
75
|
+
this.backgroundUserSelection.set(color || '#00000040');
|
|
76
|
+
}
|
|
77
|
+
set BackgroundList(color) {
|
|
78
|
+
this.backgroundList.set(color || '#f8f9fa');
|
|
79
|
+
}
|
|
80
|
+
set BackgroundListHover(color) {
|
|
81
|
+
this.backgroundListHover.set(color || '#f8f9fa');
|
|
82
|
+
}
|
|
83
|
+
set BackgroundListHoverDanger(color) {
|
|
84
|
+
this.backgroundListHover.set(color || '#fef5f6');
|
|
85
|
+
}
|
|
86
|
+
set BackgroundDisableColor(color) {
|
|
87
|
+
this.backgroundDisableColor.set(color || '#f8f9fa');
|
|
88
|
+
}
|
|
89
|
+
set TextDisableColor(color) {
|
|
90
|
+
this.textDisableColor.set(color || '#9ca2ad');
|
|
91
|
+
}
|
|
92
|
+
set ConfigFont(configFont) {
|
|
93
|
+
this.configFont.set({ ...configFont });
|
|
94
|
+
}
|
|
95
|
+
set ConfigFontHead(configHead) {
|
|
96
|
+
this.configHead.set({ ...configHead });
|
|
97
|
+
}
|
|
98
|
+
get ConfigButton() {
|
|
99
|
+
return this.configButton;
|
|
100
|
+
}
|
|
101
|
+
set FunctionGetConfigButtonIncludes(functionGetConfigButtonIncludes) {
|
|
102
|
+
this.functionGetConfigButtonIncludes.set(functionGetConfigButtonIncludes);
|
|
103
|
+
}
|
|
104
|
+
get ConfigButtonStatus() {
|
|
105
|
+
return this.configButtonStatus();
|
|
106
|
+
}
|
|
107
|
+
set ConfigButtonStatus(config) {
|
|
108
|
+
this.configButtonStatus.set(config);
|
|
109
|
+
}
|
|
110
|
+
set ConfigButtonTab(config) {
|
|
111
|
+
this.configButtonTab.set(config);
|
|
112
|
+
}
|
|
113
|
+
// public hàm để sử dụng cho component input sử dụng tagInput = frameArea;
|
|
114
|
+
setupFontFamily(currentDoc) {
|
|
115
|
+
try {
|
|
116
|
+
currentDoc = currentDoc || document;
|
|
117
|
+
const doc = currentDoc.documentElement;
|
|
118
|
+
doc.style.setProperty('--libs-ui-font-family-name', `${this.configFont().name},Arial, Helvetica, sans-serif`);
|
|
119
|
+
Object.keys(weights).forEach((key) => {
|
|
120
|
+
if (!get(this.configFont(), key)) {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
const fontFace = new FontFace(this.configFont().name, `url(${get(this.configFont(), key)})`, { weight: get(weights, key) });
|
|
124
|
+
fontFace.load().then((loadedFont) => {
|
|
125
|
+
if (currentDoc && 'add' in currentDoc.fonts) {
|
|
126
|
+
currentDoc.fonts.add(loadedFont);
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
catch (error) {
|
|
132
|
+
console.log(error);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
setupFontHead() {
|
|
136
|
+
const configHeadsData = this.configHead();
|
|
137
|
+
let styles = '';
|
|
138
|
+
Object.keys(configHeadsData).forEach((keyConfig) => {
|
|
139
|
+
let style = `font-family:var(--libs-ui-font-family-name,'Arial');`;
|
|
140
|
+
const config = get(configHeadsData, keyConfig);
|
|
141
|
+
Object.keys(config).forEach((key) => {
|
|
142
|
+
style = `${style}${key}:${get(config, key)};`;
|
|
143
|
+
});
|
|
144
|
+
styles = `${styles} .libs-ui-font-${keyConfig}{${style}}.libs-ui-font-${keyConfig}i{${style.replace(/;/g, ' !important;')}}`;
|
|
145
|
+
});
|
|
146
|
+
styles = `*{box-sizing: border-box !important;}${styles}`;
|
|
147
|
+
this.styleClassHeadEl.innerHTML = styles;
|
|
148
|
+
document.head.append(this.styleClassHeadEl);
|
|
149
|
+
}
|
|
150
|
+
setupButtonSize() {
|
|
151
|
+
const configButtonSize = this.configButtonSize();
|
|
152
|
+
const doc = document.documentElement;
|
|
153
|
+
Object.keys(configButtonSize).forEach((keySize) => {
|
|
154
|
+
const config = get(configButtonSize, keySize);
|
|
155
|
+
Object.keys(config).forEach((keyType) => {
|
|
156
|
+
const name = `--libs-ui-button-size-${keySize}-${keyType.replace(/[_]/g, '-')}`;
|
|
157
|
+
doc.style.setProperty(name, get(config, keyType));
|
|
158
|
+
});
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
setupButtonTab() {
|
|
162
|
+
const configButtonTab = this.configButtonTab();
|
|
163
|
+
let styles = '';
|
|
164
|
+
Object.keys(configButtonTab).forEach((key) => {
|
|
165
|
+
const config = get(configButtonTab, key);
|
|
166
|
+
const style = config ? styleButtonTab(key, config) : '';
|
|
167
|
+
styles = `${styles}${style}`;
|
|
168
|
+
});
|
|
169
|
+
this.styleClassButtonTabEl.innerHTML = styles;
|
|
170
|
+
document.head.append(this.styleClassButtonTabEl);
|
|
171
|
+
}
|
|
172
|
+
setThemeColor() {
|
|
173
|
+
const doc = document.documentElement;
|
|
174
|
+
[
|
|
175
|
+
{
|
|
176
|
+
group: 'libs-ui',
|
|
177
|
+
type: 'color',
|
|
178
|
+
property: {
|
|
179
|
+
default: colorStepContrastFromOrigin(this.themeColor(), 0)?.light,
|
|
180
|
+
light_1: colorStepContrastFromOrigin(this.themeColor(), 20)?.light,
|
|
181
|
+
light_2: colorStepContrastFromOrigin(this.themeColor(), 90)?.light,
|
|
182
|
+
light_3: colorStepContrastFromOrigin(this.themeColor(), 95)?.light,
|
|
183
|
+
light_4: colorStepContrastFromOrigin(this.themeColor(), 50)?.light,
|
|
184
|
+
light_5: colorStepContrastFromOrigin(this.themeColor(), 70)?.light,
|
|
185
|
+
light_6: colorStepContrastFromOrigin(this.themeColor(), 80)?.light,
|
|
186
|
+
dark: colorStepContrastFromOrigin(this.themeColor(), 20)?.dark,
|
|
187
|
+
background_list: this.backgroundList(),
|
|
188
|
+
background_list_hover: this.backgroundListHover(),
|
|
189
|
+
background_list_hover_danger: this.backgroundListHoverDanger(),
|
|
190
|
+
background_selection: this.backgroundUserSelection(),
|
|
191
|
+
border: this.borderColor(),
|
|
192
|
+
border_error: this.borderErrorColor(),
|
|
193
|
+
text_error: this.textErrorColor(),
|
|
194
|
+
icon_hover_danger: this.iconHoverDangerColor(),
|
|
195
|
+
background_readonly: this.backgroundReadonlyColor(),
|
|
196
|
+
text_readonly: this.textReadonlyColor(),
|
|
197
|
+
background_disable: this.backgroundDisableColor(),
|
|
198
|
+
text_disable: this.textDisableColor(),
|
|
199
|
+
gradient_from: this.themeColor().toLocaleUpperCase() === '#226FF5' ? colorStepContrastFromOrigin(this.themeColor(), 10)?.light : colorStepContrastFromOrigin(this.themeColor(), 0)?.light,
|
|
200
|
+
gradient_to: this.themeColor().toLocaleUpperCase() === '#226FF5' ? colorStepContrastFromOrigin('#5B2EBB', 10)?.light : colorStepContrastFromOrigin(this.themeColor(), 20)?.dark,
|
|
201
|
+
},
|
|
202
|
+
},
|
|
203
|
+
].forEach((item) => {
|
|
204
|
+
const name = `--${item.group.replace(/[_]/g, '-')}-${item.type.replace(/[_]/g, '-')}`;
|
|
205
|
+
Object.keys(item.property).forEach((key) => doc.style.setProperty(`${name}-${key.replace(/[_]/g, '-')}`, item.property[key]));
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
colorStepContrastFromOrigin(step, color) {
|
|
209
|
+
return colorStepContrastFromOrigin(color || this.themeColor(), step || 0);
|
|
210
|
+
}
|
|
211
|
+
setClassGlobal() {
|
|
212
|
+
this.styleClassGlobalEl.innerHTML = `
|
|
213
|
+
.libs-ui-border-primary-general{border: 1px solid var(--libs-ui-color-default, #226FF5);}
|
|
214
|
+
.libs-ui-border-primary-focus-general{border: 1px solid var(--libs-ui-color-light-1, #4e8cf7);}
|
|
215
|
+
.libs-ui-border-primary-hover-general{border: 1px solid var(--libs-ui-color-light-3, #f4f8ff);}
|
|
216
|
+
.libs-ui-border-general{ border: 1px solid var(--libs-ui-color-border, #e6e7ea);}
|
|
217
|
+
.libs-ui-border-top-general{border-top: 1px solid var(--libs-ui-color-border, #e6e7ea);}
|
|
218
|
+
.libs-ui-border-right-general{border-right: 1px solid var(--libs-ui-color-border, #e6e7ea);}
|
|
219
|
+
.libs-ui-border-bottom-general{border-bottom: 1px solid var(--libs-ui-color-border, #e6e7ea);}
|
|
220
|
+
.libs-ui-border-dashed-general{border: dashed 1px var(--libs-ui-color-border, #e6e7ea);}
|
|
221
|
+
.libs-ui-border-top-dashed-general{border-top: dashed 1px var(--libs-ui-color-border, #e6e7ea);}
|
|
222
|
+
.libs-ui-border-left-dashed-general{border-left: dashed 1px var(--libs-ui-color-border, #e6e7ea);}
|
|
223
|
+
.libs-ui-border-right-dashed-general{border-right: dashed 1px var(--libs-ui-color-border, #e6e7ea);}
|
|
224
|
+
.libs-ui-border-bottom-dashed-general{border-bottom: dashed 1px var(--libs-ui-color-border, #e6e7ea);}
|
|
225
|
+
.libs-ui-border-left-general{border-left: 1px solid var(--libs-ui-color-border, #e6e7ea);}
|
|
226
|
+
.libs-ui-border-x-general{border-left: 1px solid var(--libs-ui-color-border, #e6e7ea); border-right: 1px solid var(--libs-ui-color-border, #e6e7ea);}
|
|
227
|
+
.libs-ui-border-y-general{border-top: 1px solid var(--libs-ui-color-border, #e6e7ea); border-bottom: 1px solid var(--libs-ui-color-border, #e6e7ea);}
|
|
228
|
+
.libs-ui-border-left-top-general{border-left: 1px solid var(--libs-ui-color-border, #e6e7ea); border-top: 1px solid var(--libs-ui-color-border, #e6e7ea);}
|
|
229
|
+
.libs-ui-border-left-bottom-general{border-left: 1px solid var(--libs-ui-color-border, #e6e7ea); border-bottom: 1px solid var(--libs-ui-color-border, #e6e7ea);}
|
|
230
|
+
.libs-ui-border-right-top-general{border-right: 1px solid var(--libs-ui-color-border, #e6e7ea); border-top: 1px solid var(--libs-ui-color-border, #e6e7ea);}
|
|
231
|
+
.libs-ui-border-right-bottom-general{border-right: 1px solid var(--libs-ui-color-border, #e6e7ea); border-bottom: 1px solid var(--libs-ui-color-border, #e6e7ea);}
|
|
232
|
+
.libs-ui-border-error-general{border: 1px solid var(--libs-ui-color-border-error, #ee2d41) !important;}
|
|
233
|
+
.libs-ui-bg-list {background-color: var(--libs-ui-background-list, #f8f9fa);}
|
|
234
|
+
.libs-ui-bg-list-hover:hover {background-color: var(--libs-ui-background-list-hover, #f8f9fa);}
|
|
235
|
+
.libs-ui-bg-list-active {background-color: var(--libs-ui-color-light-3, #f4f8ff);}
|
|
236
|
+
.libs-ui-bg-list-hover-active:hover {background-color: #f8f9fa;}
|
|
237
|
+
.libs-ui-bg-list-hover-active:active {background-color: var(--libs-ui-color-light-3, #f4f8ff);}
|
|
238
|
+
.libs-ui-bg-list-hover-danger:hover {background-color: var(--libs-ui-background-list-hover-danger, #fef5f6); color: var(--libs-ui-color-icon-hover-danger, #f15767) !important; [class*="libs-ui-icon-"],[class*="icon-font-3rd"]{&:before,&:after{color: var(--libs-ui-color-icon-hover-danger, #f15767) !important;}}}
|
|
239
|
+
.libs-ui-text-error {color: var(--libs-ui-color-text-error, #ff5454) !important;}
|
|
240
|
+
.libs-ui-text-error::before {color: var(--libs-ui-color-text-error, #ff5454) !important;}
|
|
241
|
+
.libs-ui-disable {cursor: not-allowed !important;text-decoration: none;color:var(--libs-ui-color-text-disable, #cdd0d6) !important;}
|
|
242
|
+
.libs-ui-disable::before {color:var(--libs-ui-color-text-disable, #9ca2ad) !important;}
|
|
243
|
+
.libs-ui-disable-background{background: var(--libs-ui-color-background-disable, #f8f9fa) !important;}
|
|
244
|
+
.libs-ui-disable-active {color:var(--libs-ui-color-light-4,#91b7fa) !important;}
|
|
245
|
+
.libs-ui-disable-active::before {color:var(--libs-ui-color-light-4,#91b7fa) !important;}
|
|
246
|
+
.libs-ui-disable-active-background{background: var(--libs-ui-color-light-4,#91b7fa) !important;}
|
|
247
|
+
.libs-ui-readonly {cursor: not-allowed !important;color:var(--libs-ui-color-text-readonly, #071631) !important;}
|
|
248
|
+
.libs-ui-readonly::before {color:var(--libs-ui-color-text-readonly, #071631) !important;}
|
|
249
|
+
.libs-ui-readonly-background{background: var(--libs-ui-color-background-readonly, #f8f9fa) !important;}
|
|
250
|
+
.libs-ui-icon-hover-danger:hover {color: var(--libs-ui-color-icon-hover-danger, #f15767) !important; [class*="libs-ui-icon-"],[class*="icon-font-3rd"]{&:before,&:after{color: var(--libs-ui-color-icon-hover-danger, #f15767) !important;}}}
|
|
251
|
+
.break-word{word-break: break-word !important;}
|
|
252
|
+
.libs-ui-shadow {box-shadow: 0 2px 10px 1px rgba(51, 51, 51, 0.1);}
|
|
253
|
+
.libs-ui-shadow-md {box-shadow: 0 4px 8px 0 rgba(51, 51, 51, 0.1);}
|
|
254
|
+
.libs-ui-shadow-lg {box-shadow: 0 15px 30px 0 rgba(51, 51, 51, 0.1);}
|
|
255
|
+
.libs-ui-shadow-top {box-shadow: 0 -5px 5px -5px rgba(51, 51, 51, 0.1);}
|
|
256
|
+
.libs-ui-shadow-right {box-shadow: -5px 0 5px -5px rgba(51, 51, 51, 0.1);}
|
|
257
|
+
.libs-ui-shadow-bottom {box-shadow: 0 5px 5px -5px rgba(51, 51, 51, 0.1);}
|
|
258
|
+
.libs-ui-shadow-left {box-shadow: 5px 0 5px -5px rgba(51, 51, 51, 0.1);}
|
|
259
|
+
.libs-ui-shadow-sm {box-shadow: 0 1px 2px 0 rgba(51, 51, 51, 0.1);}
|
|
260
|
+
.libs-ui-shadow-popup {box-shadow: -2px 0 4px 0 rgba(51, 51, 51, 0.1);}
|
|
261
|
+
.libs-ui-shadow-none {box-shadow: none !important;}
|
|
262
|
+
.libs-ui-shadow-small {box-shadow: 0px 1px 2px 0px rgba(0,20,51,.04), 0px 1px 1px 0px rgba(0,20,51,.02);}
|
|
263
|
+
.libs-ui-shadow-medium {box-shadow: 0px 4px 8px 0px rgba(0, 20, 51, 0.04), 0px 1px 1px 0px rgba(0, 20, 51, 0.02);}
|
|
264
|
+
.libs-ui-shadow-large {box-shadow: 0px 4px 16px 0px rgba(0,20,51,.1), 0px 1px 1px 0px rgba(0,20,51,.02);}
|
|
265
|
+
.libs-ui-shadow-extra-large {box-shadow: 0px 8px 56px 0px rgba(0,20,51,.05), 0px 1px 1px 0px rgba(0,20,51,.02);}
|
|
266
|
+
::-moz-selection {background: var(--libs-ui-color-background-selection, #00000040) !important;}
|
|
267
|
+
::selection {background: var(--libs-ui-color-background-selection, #00000040) !important;}
|
|
268
|
+
`.replace(/\n+/g, '');
|
|
269
|
+
document.head.append(this.styleClassGlobalEl);
|
|
270
|
+
}
|
|
271
|
+
configString() {
|
|
272
|
+
const prototype = String.prototype;
|
|
273
|
+
prototype.replaceAt = function (index, replacement) {
|
|
274
|
+
const values = this.split('');
|
|
275
|
+
values[index] = replacement;
|
|
276
|
+
return values.join('');
|
|
277
|
+
};
|
|
278
|
+
prototype.replaceAll = function (index, separator, replacement) {
|
|
279
|
+
const regex = new RegExp(separator, 'g');
|
|
280
|
+
return `${this.substr(0, index)}${this.substr(index + 1 + (replacement?.length || 0)).replace(regex, replacement)}`;
|
|
281
|
+
};
|
|
282
|
+
prototype.occurrencesByCharacter = function (character) {
|
|
283
|
+
const values = this.split('');
|
|
284
|
+
if (!values || !values.length) {
|
|
285
|
+
return 0;
|
|
286
|
+
}
|
|
287
|
+
return values.filter((char) => char === character).length;
|
|
288
|
+
};
|
|
289
|
+
prototype.indexesOfCharacter = function (character) {
|
|
290
|
+
const values = this.split('');
|
|
291
|
+
const indexes = [];
|
|
292
|
+
if (!values || !values.length) {
|
|
293
|
+
return indexes;
|
|
294
|
+
}
|
|
295
|
+
for (const indexValue in values) {
|
|
296
|
+
if (values[indexValue] === character) {
|
|
297
|
+
indexes.push(+indexValue);
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
return indexes;
|
|
301
|
+
};
|
|
302
|
+
prototype.indexesByString = function (str) {
|
|
303
|
+
const values = this;
|
|
304
|
+
const indexes = [];
|
|
305
|
+
if (!values || !values.length || !str || !str.length || values.length < str.length) {
|
|
306
|
+
return indexes;
|
|
307
|
+
}
|
|
308
|
+
for (const indexValue in values) {
|
|
309
|
+
if (values[indexValue] !== str[0] || +indexValue + str.length > values.length) {
|
|
310
|
+
continue;
|
|
311
|
+
}
|
|
312
|
+
for (const index in str.split('')) {
|
|
313
|
+
if (values[+indexValue + +index] !== str[index]) {
|
|
314
|
+
break;
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
indexes.push(+indexValue);
|
|
318
|
+
}
|
|
319
|
+
return indexes;
|
|
320
|
+
};
|
|
321
|
+
}
|
|
322
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiConfigProjectService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
323
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiConfigProjectService, providedIn: 'root' });
|
|
324
|
+
}
|
|
325
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiConfigProjectService, decorators: [{
|
|
326
|
+
type: Injectable,
|
|
327
|
+
args: [{
|
|
328
|
+
providedIn: 'root',
|
|
329
|
+
}]
|
|
330
|
+
}], ctorParameters: () => [] });
|
|
331
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLXByb2plY3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvc2VydmljZXMvY29uZmlnLXByb2plY3Qvc3JjL2NvbmZpZy1wcm9qZWN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBS3ZMLE1BQU0sT0FBTywwQkFBMEI7SUFDcEIsVUFBVSxHQUFHLE1BQU0sQ0FBUyxTQUFTLENBQUMsQ0FBQztJQUN2QyxXQUFXLEdBQUcsTUFBTSxDQUFTLFNBQVMsQ0FBQyxDQUFDO0lBQ3hDLGNBQWMsR0FBRyxNQUFNLENBQVMsU0FBUyxDQUFDLENBQUM7SUFDM0Msb0JBQW9CLEdBQUcsTUFBTSxDQUFTLFNBQVMsQ0FBQyxDQUFDO0lBQ2pELGdCQUFnQixHQUFHLE1BQU0sQ0FBUyxTQUFTLENBQUMsQ0FBQztJQUM3QyxzQkFBc0IsR0FBRyxNQUFNLENBQVMsU0FBUyxDQUFDLENBQUM7SUFDbkQsaUJBQWlCLEdBQUcsTUFBTSxDQUFTLFNBQVMsQ0FBQyxDQUFDO0lBQzlDLGdCQUFnQixHQUFHLE1BQU0sQ0FBUyxTQUFTLENBQUMsQ0FBQztJQUM3Qyx1QkFBdUIsR0FBRyxNQUFNLENBQVMsU0FBUyxDQUFDLENBQUM7SUFDcEQsdUJBQXVCLEdBQUcsTUFBTSxDQUFTLFdBQVcsQ0FBQyxDQUFDO0lBQ3RE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QUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUM5RSxTQUFTO2dCQUNYLENBQUM7Z0JBRUQsS0FBSyxNQUFNLEtBQUssSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7b0JBQ2xDLElBQUksTUFBTSxDQUFDLENBQUMsVUFBVSxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7d0JBQ2hELE1BQU07b0JBQ1IsQ0FBQztnQkFDSCxDQUFDO2dCQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM1QixDQUFDO1lBRUQsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQyxDQUFDO0lBQ0osQ0FBQzt3R0EvV1UsMEJBQTBCOzRHQUExQiwwQkFBMEIsY0FGekIsTUFBTTs7NEZBRVAsMEJBQTBCO2tCQUh0QyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IEluamVjdGFibGUsIGNvbXB1dGVkLCBlZmZlY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUGF0aE9mIH0gZnJvbSAnQGxpYnMtdWkvaW50ZXJmYWNlcy10eXBlcyc7XG5pbXBvcnQgeyBjb2xvclN0ZXBDb250cmFzdEZyb21PcmlnaW4sIGdldCB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcbmltcG9ydCB7IGNvbmZpZ0J1dHRvbkNvbG9yLCBjb25maWdCdXR0b25TdGF0dXMsIGNvbmZpZ0J1dHRvblRhYiwgY29uZmlnSGVhZGluZywgY29uZmlnTGlua0J1dHRvbiwgZm9udENvbmZpZywgc2l6ZUJ1dHRvbkNvbmZpZywgc3R5bGVCdXR0b25UYWIsIHdlaWdodHMgfSBmcm9tICcuL2NvbmZpZy1wcm9qZWN0LWRhdGEnO1xuaW1wb3J0IHsgSUNvbG9yQnV0dG9uLCBJTGlic1VpQ29uZmlnQnV0dG9uU2l6ZSwgSUxpYnNVaUNvbmZpZ0J1dHRvblN0YXR1cywgSUxpYnNVaUNvbmZpZ0J1dHRvblRhYiwgSUxpYnNVaUNvbmZpZ0ZvbnRGYW1pbHksIElMaWJzVWlDb25maWdGb250SGVhZGluZywgSUxpYnNVaUNvbmZpZ0ZvbnRXZWlnaHQgfSBmcm9tICcuL2NvbmZpZy1wcm9qZWN0LmludGVyZmFjZSc7XG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTGlic1VpQ29uZmlnUHJvamVjdFNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IHRoZW1lQ29sb3IgPSBzaWduYWw8c3RyaW5nPignIzIyNmZmNScpO1xuICBwcml2YXRlIHJlYWRvbmx5IGJvcmRlckNvbG9yID0gc2lnbmFsPHN0cmluZz4oJyNlNmU3ZWEnKTtcbiAgcHJpdmF0ZSByZWFkb25seSB0ZXh0RXJyb3JDb2xvciA9IHNpZ25hbDxzdHJpbmc+KCcjZmY1NDU0Jyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaWNvbkhvdmVyRGFuZ2VyQ29sb3IgPSBzaWduYWw8c3RyaW5nPignI2YxNTc2NycpO1xuICBwcml2YXRlIHJlYWRvbmx5IGJvcmRlckVycm9yQ29sb3IgPSBzaWduYWw8c3RyaW5nPignI2VlMmQ0MScpO1xuICBwcml2YXRlIHJlYWRvbmx5IGJhY2tncm91bmREaXNhYmxlQ29sb3IgPSBzaWduYWw8c3RyaW5nPignI2Y4ZjlmYScpO1xuICBwcml2YXRlIHJlYWRvbmx5IHRleHRSZWFkb25seUNvbG9yID0gc2lnbmFsPHN0cmluZz4oJyMwNzE2MzEnKTtcbiAgcHJpdmF0ZSByZWFkb25seSB0ZXh0RGlzYWJsZUNvbG9yID0gc2lnbmFsPHN0cmluZz4oJyM5Y2EyYWQnKTtcbiAgcHJpdmF0ZSByZWFkb25seSBiYWNrZ3JvdW5kUmVhZG9ubHlDb2xvciA9IHNpZ25hbDxzdHJpbmc+KCcjZjhmOWZhJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYmFja2dyb3VuZFVzZXJTZWxlY3Rpb24gPSBzaWduYWw8c3RyaW5nPignIzAwMDAwMDQwJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYmFja2dyb3VuZExpc3QgPSBzaWduYWw8c3RyaW5nPignI2Y4ZjlmYScpO1xuICBwcml2YXRlIHJlYWRvbmx5IGJhY2tncm91bmRMaXN0SG92ZXIgPSBzaWduYWw8c3RyaW5nPignI2Y4ZjlmYScpO1xuICBwcml2YXRlIHJlYWRvbmx5IGJhY2tncm91bmRMaXN0SG92ZXJEYW5nZXIgPSBzaWduYWw8c3RyaW5nPignI2ZlZjVmNicpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ0ZvbnQgPSBzaWduYWw8SUxpYnNVaUNvbmZpZ0ZvbnRGYW1pbHk+KGZvbnRDb25maWcpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ0hlYWQgPSBzaWduYWw8SUxpYnNVaUNvbmZpZ0ZvbnRIZWFkaW5nPihjb25maWdIZWFkaW5nKTtcbiAgcHJpdmF0ZSByZWFkb25seSBmdW5jdGlvbkdldENvbmZpZ0J1dHRvbkluY2x1ZGVzID0gc2lnbmFsPChyb290Q29sb3I6IHN0cmluZykgPT4geyBba2V5OiBzdHJpbmddOiBJQ29sb3JCdXR0b24gfT4oKCkgPT4ge1xuICAgIHJldHVybiB7fTtcbiAgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnQnV0dG9uID0gY29tcHV0ZWQ8eyBba2V5OiBzdHJpbmddOiBJQ29sb3JCdXR0b24gfT4oKCkgPT4ge1xuICAgIHJldHVybiB7IC4uLmNvbmZpZ0J1dHRvbkNvbG9yKHRoaXMudGhlbWVDb2xvcigpKSwgLi4uY29uZmlnTGlua0J1dHRvbih0aGlzLnRoZW1lQ29sb3IoKSksIC4uLnRoaXMuZnVuY3Rpb25HZXRDb25maWdCdXR0b25JbmNsdWRlcygpKHRoaXMudGhlbWVDb2xvcigpKSB9O1xuICB9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maWdCdXR0b25TaXplID0gc2lnbmFsPElMaWJzVWlDb25maWdCdXR0b25TaXplPihzaXplQnV0dG9uQ29uZmlnKCkpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ0J1dHRvblN0YXR1cyA9IHNpZ25hbDxJTGlic1VpQ29uZmlnQnV0dG9uU3RhdHVzPihjb25maWdCdXR0b25TdGF0dXMoKSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnQnV0dG9uVGFiID0gc2lnbmFsPElMaWJzVWlDb25maWdCdXR0b25UYWI+KGNvbmZpZ0J1dHRvblRhYigpKTtcbiAgcHJpdmF0ZSByZWFkb25seSBzdHlsZUNsYXNzR2xvYmFsRWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICBwcml2YXRlIHJlYWRvbmx5IHN0eWxlQ2xhc3NIZWFkRWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICBwcml2YXRlIHJlYWRvbmx5IHN0eWxlQ2xhc3NCdXR0b25UYWJFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICB0aGlzLnNldFRoZW1lQ29sb3IoKTtcbiAgICB9KTtcblxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICB0aGlzLnNldHVwRm9udEZhbWlseSgpO1xuICAgIH0pO1xuXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIHRoaXMuc2V0dXBGb250SGVhZCgpO1xuICAgIH0pO1xuXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIHRoaXMuc2V0dXBCdXR0b25UYWIoKTtcbiAgICB9KTtcblxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICB0aGlzLnNldHVwQnV0dG9uU2l6ZSgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5jb25maWdTdHJpbmcoKTtcbiAgICB0aGlzLnNldENsYXNzR2xvYmFsKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0IFRoZW1lQ29sb3IoY29sb3I6IHN0cmluZykge1xuICAgIHRoaXMudGhlbWVDb2xvci5zZXQoY29sb3IgfHwgJyMyMjZmZjUnKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgQm9yZGVyQ29sb3IoY29sb3I6IHN0cmluZykge1xuICAgIHRoaXMuYm9yZGVyQ29sb3Iuc2V0KGNvbG9yIHx8ICcjZTZlN2VhJyk7XG4gIH1cblxuICBwdWJsaWMgc2V0IEJvcmRlckVycm9yQ29sb3IoY29sb3I6IHN0cmluZykge1xuICAgIHRoaXMuYm9yZGVyRXJyb3JDb2xvci5zZXQoY29sb3IgfHwgJyNlZTJkNDEnKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgVGV4dEVycm9yQ29sb3IoY29sb3I6IHN0cmluZykge1xuICAgIHRoaXMudGV4dEVycm9yQ29sb3Iuc2V0KGNvbG9yIHx8ICcjZmY1NDU0Jyk7XG4gIH1cblxuICBwdWJsaWMgc2V0IEljb25Ib3ZlckRhbmdlckNvbG9yKGNvbG9yOiBzdHJpbmcpIHtcbiAgICB0aGlzLmljb25Ib3ZlckRhbmdlckNvbG9yLnNldChjb2xvciB8fCAnI2ZmNTQ1NCcpO1xuICB9XG5cbiAgcHVibGljIHNldCBCYWNrZ3JvdW5kUmVhZG9ubHlDb2xvcihjb2xvcjogc3RyaW5nKSB7XG4gICAgdGhpcy5iYWNrZ3JvdW5kUmVhZG9ubHlDb2xvci5zZXQoY29sb3IgfHwgJyNmMTU3NjcnKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgVGV4dFJlYWRvbmx5Q29sb3IoY29sb3I6IHN0cmluZykge1xuICAgIHRoaXMudGV4dFJlYWRvbmx5Q29sb3Iuc2V0KGNvbG9yIHx8ICcjMDcxNjMxJyk7XG4gIH1cblxuICBwdWJsaWMgc2V0IEJhY2tncm91bmRVc2VyU2VsZWN0aW9uKGNvbG9yOiBzdHJpbmcpIHtcbiAgICB0aGlzLmJhY2tncm91bmRVc2VyU2VsZWN0aW9uLnNldChjb2xvciB8fCAnIzAwMDAwMDQwJyk7XG4gIH1cblxuICBwdWJsaWMgc2V0IEJhY2tncm91bmRMaXN0KGNvbG9yOiBzdHJpbmcpIHtcbiAgICB0aGlzLmJhY2tncm91bmRMaXN0LnNldChjb2xvciB8fCAnI2Y4ZjlmYScpO1xuICB9XG5cbiAgcHVibGljIHNldCBCYWNrZ3JvdW5kTGlzdEhvdmVyKGNvbG9yOiBzdHJpbmcpIHtcbiAgICB0aGlzLmJhY2tncm91bmRMaXN0SG92ZXIuc2V0KGNvbG9yIHx8ICcjZjhmOWZhJyk7XG4gIH1cblxuICBwdWJsaWMgc2V0IEJhY2tncm91bmRMaXN0SG92ZXJEYW5nZXIoY29sb3I6IHN0cmluZykge1xuICAgIHRoaXMuYmFja2dyb3VuZExpc3RIb3Zlci5zZXQoY29sb3IgfHwgJyNmZWY1ZjYnKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgQmFja2dyb3VuZERpc2FibGVDb2xvcihjb2xvcjogc3RyaW5nKSB7XG4gICAgdGhpcy5iYWNrZ3JvdW5kRGlzYWJsZUNvbG9yLnNldChjb2xvciB8fCAnI2Y4ZjlmYScpO1xuICB9XG5cbiAgcHVibGljIHNldCBUZXh0RGlzYWJsZUNvbG9yKGNvbG9yOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRleHREaXNhYmxlQ29sb3Iuc2V0KGNvbG9yIHx8ICcjOWNhMmFkJyk7XG4gIH1cblxuICBwdWJsaWMgc2V0IENvbmZpZ0ZvbnQoY29uZmlnRm9udDogSUxpYnNVaUNvbmZpZ0ZvbnRGYW1pbHkpIHtcbiAgICB0aGlzLmNvbmZpZ0ZvbnQuc2V0KHsgLi4uY29uZmlnRm9udCB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgQ29uZmlnRm9udEhlYWQoY29uZmlnSGVhZDogSUxpYnNVaUNvbmZpZ0ZvbnRIZWFkaW5nKSB7XG4gICAgdGhpcy5jb25maWdIZWFkLnNldCh7IC4uLmNvbmZpZ0hlYWQgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IENvbmZpZ0J1dHRvbigpIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWdCdXR0b247XG4gIH1cblxuICBwdWJsaWMgc2V0IEZ1bmN0aW9uR2V0Q29uZmlnQnV0dG9uSW5jbHVkZXMoZnVuY3Rpb25HZXRDb25maWdCdXR0b25JbmNsdWRlczogKHJvb3RDb2xvcjogc3RyaW5nKSA9PiB7IFtrZXk6IHN0cmluZ106IElDb2xvckJ1dHRvbiB9KSB7XG4gICAgdGhpcy5mdW5jdGlvbkdldENvbmZpZ0J1dHRvbkluY2x1ZGVzLnNldChmdW5jdGlvbkdldENvbmZpZ0J1dHRvbkluY2x1ZGVzKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgQ29uZmlnQnV0dG9uU3RhdHVzKCkge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZ0J1dHRvblN0YXR1cygpO1xuICB9XG5cbiAgcHVibGljIHNldCBDb25maWdCdXR0b25TdGF0dXMoY29uZmlnOiBJTGlic1VpQ29uZmlnQnV0dG9uU3RhdHVzKSB7XG4gICAgdGhpcy5jb25maWdCdXR0b25TdGF0dXMuc2V0KGNvbmZpZyk7XG4gIH1cblxuICBwdWJsaWMgc2V0IENvbmZpZ0J1dHRvblRhYihjb25maWc6IElMaWJzVWlDb25maWdCdXR0b25UYWIpIHtcbiAgICB0aGlzLmNvbmZpZ0J1dHRvblRhYi5zZXQoY29uZmlnKTtcbiAgfVxuXG4gIC8vIHB1YmxpYyBow6BtIMSR4buDIHPhu60gZOG7pW5nIGNobyBjb21wb25lbnQgaW5wdXQgc+G7rSBk4bulbmcgdGFnSW5wdXQgPSBmcmFtZUFyZWE7XG4gIHB1YmxpYyBzZXR1cEZvbnRGYW1pbHkoY3VycmVudERvYz86IERvY3VtZW50KSB7XG4gICAgdHJ5IHtcbiAgICAgIGN1cnJlbnREb2MgPSBjdXJyZW50RG9jIHx8IGRvY3VtZW50O1xuICAgICAgY29uc3QgZG9jID0gY3VycmVudERvYy5kb2N1bWVudEVsZW1lbnQ7XG5cbiAgICAgIGRvYy5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1saWJzLXVpLWZvbnQtZmFtaWx5LW5hbWUnLCBgJHt0aGlzLmNvbmZpZ0ZvbnQoKS5uYW1lfSxBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmYCk7XG4gICAgICBPYmplY3Qua2V5cyh3ZWlnaHRzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgaWYgKCFnZXQodGhpcy5jb25maWdGb250KCksIGtleSBhcyBQYXRoT2Y8SUxpYnNVaUNvbmZpZ0ZvbnRGYW1pbHk+KSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmb250RmFjZSA9IG5ldyBGb250RmFjZSh0aGlzLmNvbmZpZ0ZvbnQoKS5uYW1lLCBgdXJsKCR7Z2V0KHRoaXMuY29uZmlnRm9udCgpLCBrZXkgYXMgUGF0aE9mPElMaWJzVWlDb25maWdGb250RmFtaWx5Pil9KWAsIHsgd2VpZ2h0OiBnZXQod2VpZ2h0cywga2V5IGFzIFBhdGhPZjxJTGlic1VpQ29uZmlnRm9udFdlaWdodD4pIH0pO1xuICAgICAgICBmb250RmFjZS5sb2FkKCkudGhlbigobG9hZGVkRm9udCkgPT4ge1xuICAgICAgICAgIGlmIChjdXJyZW50RG9jICYmICdhZGQnIGluIGN1cnJlbnREb2MuZm9udHMpIHtcbiAgICAgICAgICAgIChjdXJyZW50RG9jLmZvbnRzIGFzIGFueSkuYWRkKGxvYWRlZEZvbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBGb250SGVhZCgpIHtcbiAgICBjb25zdCBjb25maWdIZWFkc0RhdGEgPSB0aGlzLmNvbmZpZ0hlYWQoKTtcbiAgICBsZXQgc3R5bGVzID0gJyc7XG4gICAgT2JqZWN0LmtleXMoY29uZmlnSGVhZHNEYXRhKS5mb3JFYWNoKChrZXlDb25maWcpID0+IHtcbiAgICAgIGxldCBzdHlsZSA9IGBmb250LWZhbWlseTp2YXIoLS1saWJzLXVpLWZvbnQtZmFtaWx5LW5hbWUsJ0FyaWFsJyk7YDtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IGdldChjb25maWdIZWFkc0RhdGEsIGtleUNvbmZpZyBhcyBQYXRoT2Y8SUxpYnNVaUNvbmZpZ0ZvbnRIZWFkaW5nPik7XG4gICAgICBPYmplY3Qua2V5cyhjb25maWcpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICBzdHlsZSA9IGAke3N0eWxlfSR7a2V5fToke2dldChjb25maWcsIGtleSl9O2A7XG4gICAgICB9KTtcbiAgICAgIHN0eWxlcyA9IGAke3N0eWxlc30gLmxpYnMtdWktZm9udC0ke2tleUNvbmZpZ317JHtzdHlsZX19LmxpYnMtdWktZm9udC0ke2tleUNvbmZpZ31peyR7c3R5bGUucmVwbGFjZSgvOy9nLCAnICFpbXBvcnRhbnQ7Jyl9fWA7XG4gICAgfSk7XG5cbiAgICBzdHlsZXMgPSBgKntib3gtc2l6aW5nOiBib3JkZXItYm94ICFpbXBvcnRhbnQ7fSR7c3R5bGVzfWA7XG5cbiAgICB0aGlzLnN0eWxlQ2xhc3NIZWFkRWwuaW5uZXJIVE1MID0gc3R5bGVzO1xuICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kKHRoaXMuc3R5bGVDbGFzc0hlYWRFbCk7XG4gIH1cblxuICBwcml2YXRlIHNldHVwQnV0dG9uU2l6ZSgpIHtcbiAgICBjb25zdCBjb25maWdCdXR0b25TaXplID0gdGhpcy5jb25maWdCdXR0b25TaXplKCk7XG4gICAgY29uc3QgZG9jID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICAgIE9iamVjdC5rZXlzKGNvbmZpZ0J1dHRvblNpemUpLmZvckVhY2goKGtleVNpemUpID0+IHtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IGdldChjb25maWdCdXR0b25TaXplLCBrZXlTaXplIGFzIFBhdGhPZjxJTGlic1VpQ29uZmlnQnV0dG9uU2l6ZT4pO1xuICAgICAgT2JqZWN0LmtleXMoY29uZmlnKS5mb3JFYWNoKChrZXlUeXBlKSA9PiB7XG4gICAgICAgIGNvbnN0IG5hbWUgPSBgLS1saWJzLXVpLWJ1dHRvbi1zaXplLSR7a2V5U2l6ZX0tJHtrZXlUeXBlLnJlcGxhY2UoL1tfXS9nLCAnLScpfWA7XG4gICAgICAgIGRvYy5zdHlsZS5zZXRQcm9wZXJ0eShuYW1lLCBnZXQoY29uZmlnLCBrZXlUeXBlKSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBCdXR0b25UYWIoKSB7XG4gICAgY29uc3QgY29uZmlnQnV0dG9uVGFiID0gdGhpcy5jb25maWdCdXR0b25UYWIoKTtcbiAgICBsZXQgc3R5bGVzID0gJyc7XG5cbiAgICBPYmplY3Qua2V5cyhjb25maWdCdXR0b25UYWIpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgY29uc3QgY29uZmlnID0gZ2V0KGNvbmZpZ0J1dHRvblRhYiwga2V5KTtcbiAgICAgIGNvbnN0IHN0eWxlID0gY29uZmlnID8gc3R5bGVCdXR0b25UYWIoa2V5LCBjb25maWcpIDogJyc7XG5cbiAgICAgIHN0eWxlcyA9IGAke3N0eWxlc30ke3N0eWxlfWA7XG4gICAgfSk7XG4gICAgdGhpcy5zdHlsZUNsYXNzQnV0dG9uVGFiRWwuaW5uZXJIVE1MID0gc3R5bGVzO1xuICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kKHRoaXMuc3R5bGVDbGFzc0J1dHRvblRhYkVsKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0VGhlbWVDb2xvcigpIHtcbiAgICBjb25zdCBkb2MgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgW1xuICAgICAge1xuICAgICAgICBncm91cDogJ2xpYnMtdWknLFxuICAgICAgICB0eXBlOiAnY29sb3InLFxuICAgICAgICBwcm9wZXJ0eToge1xuICAgICAgICAgIGRlZmF1bHQ6IGNvbG9yU3RlcENvbnRyYXN0RnJvbU9yaWdpbih0aGlzLnRoZW1lQ29sb3IoKSwgMCk/LmxpZ2h0LFxuICAgICAgICAgIGxpZ2h0XzE6IGNvbG9yU3RlcENvbnRyYXN0RnJvbU9yaWdpbih0aGlzLnRoZW1lQ29sb3IoKSwgMjApPy5saWdodCxcbiAgICAgICAgICBsaWdodF8yOiBjb2xvclN0ZXBDb250cmFzdEZyb21PcmlnaW4odGhpcy50aGVtZUNvbG9yKCksIDkwKT8ubGlnaHQsXG4gICAgICAgICAgbGlnaHRfMzogY29sb3JTdGVwQ29udHJhc3RGcm9tT3JpZ2luKHRoaXMudGhlbWVDb2xvcigpLCA5NSk/LmxpZ2h0LFxuICAgICAgICAgIGxpZ2h0XzQ6IGNvbG9yU3RlcENvbnRyYXN0RnJvbU9yaWdpbih0aGlzLnRoZW1lQ29sb3IoKSwgNTApPy5saWdodCxcbiAgICAgICAgICBsaWdodF81OiBjb2xvclN0ZXBDb250cmFzdEZyb21PcmlnaW4odGhpcy50aGVtZUNvbG9yKCksIDcwKT8ubGlnaHQsXG4gICAgICAgICAgbGlnaHRfNjogY29sb3JTdGVwQ29udHJhc3RGcm9tT3JpZ2luKHRoaXMudGhlbWVDb2xvcigpLCA4MCk/LmxpZ2h0LFxuICAgICAgICAgIGRhcms6IGNvbG9yU3RlcENvbnRyYXN0RnJvbU9yaWdpbih0aGlzLnRoZW1lQ29sb3IoKSwgMjApPy5kYXJrLFxuICAgICAgICAgIGJhY2tncm91bmRfbGlzdDogdGhpcy5iYWNrZ3JvdW5kTGlzdCgpLFxuICAgICAgICAgIGJhY2tncm91bmRfbGlzdF9ob3ZlcjogdGhpcy5iYWNrZ3JvdW5kTGlzdEhvdmVyKCksXG4gICAgICAgICAgYmFja2dyb3VuZF9saXN0X2hvdmVyX2RhbmdlcjogdGhpcy5iYWNrZ3JvdW5kTGlzdEhvdmVyRGFuZ2VyKCksXG4gICAgICAgICAgYmFja2dyb3VuZF9zZWxlY3Rpb246IHRoaXMuYmFja2dyb3VuZFVzZXJTZWxlY3Rpb24oKSxcbiAgICAgICAgICBib3JkZXI6IHRoaXMuYm9yZGVyQ29sb3IoKSxcbiAgICAgICAgICBib3JkZXJfZXJyb3I6IHRoaXMuYm9yZGVyRXJyb3JDb2xvcigpLFxuICAgICAgICAgIHRleHRfZXJyb3I6IHRoaXMudGV4dEVycm9yQ29sb3IoKSxcbiAgICAgICAgICBpY29uX2hvdmVyX2RhbmdlcjogdGhpcy5pY29uSG92ZXJEYW5nZXJDb2xvcigpLFxuICAgICAgICAgIGJhY2tncm91bmRfcmVhZG9ubHk6IHRoaXMuYmFja2dyb3VuZFJlYWRvbmx5Q29sb3IoKSxcbiAgICAgICAgICB0ZXh0X3JlYWRvbmx5OiB0aGlzLnRleHRSZWFkb25seUNvbG9yKCksXG4gICAgICAgICAgYmFja2dyb3VuZF9kaXNhYmxlOiB0aGlzLmJhY2tncm91bmREaXNhYmxlQ29sb3IoKSxcbiAgICAgICAgICB0ZXh0X2Rpc2FibGU6IHRoaXMudGV4dERpc2FibGVDb2xvcigpLFxuICAgICAgICAgIGdyYWRpZW50X2Zyb206IHRoaXMudGhlbWVDb2xvcigpLnRvTG9jYWxlVXBwZXJDYXNlKCkgPT09ICcjMjI2RkY1JyA/IGNvbG9yU3RlcENvbnRyYXN0RnJvbU9yaWdpbih0aGlzLnRoZW1lQ29sb3IoKSwgMTApPy5saWdodCA6IGNvbG9yU3RlcENvbnRyYXN0RnJvbU9yaWdpbih0aGlzLnRoZW1lQ29sb3IoKSwgMCk/LmxpZ2h0LFxuICAgICAgICAgIGdyYWRpZW50X3RvOiB0aGlzLnRoZW1lQ29sb3IoKS50b0xvY2FsZVVwcGVyQ2FzZSgpID09PSAnIzIyNkZGNScgPyBjb2xvclN0ZXBDb250cmFzdEZyb21PcmlnaW4oJyM1QjJFQkInLCAxMCk/LmxpZ2h0IDogY29sb3JTdGVwQ29udHJhc3RGcm9tT3JpZ2luKHRoaXMudGhlbWVDb2xvcigpLCAyMCk/LmRhcmssXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIF0uZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgY29uc3QgbmFtZSA9IGAtLSR7aXRlbS5ncm91cC5yZXBsYWNlKC9bX10vZywgJy0nKX0tJHtpdGVtLnR5cGUucmVwbGFjZSgvW19dL2csICctJyl9YDtcbiAgICAgIE9iamVjdC5rZXlzKGl0ZW0ucHJvcGVydHkpLmZvckVhY2goKGtleSkgPT4gZG9jLnN0eWxlLnNldFByb3BlcnR5KGAke25hbWV9LSR7a2V5LnJlcGxhY2UoL1tfXS9nLCAnLScpfWAsIChpdGVtLnByb3BlcnR5IGFzIGFueSlba2V5XSkpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGNvbG9yU3RlcENvbnRyYXN0RnJvbU9yaWdpbihzdGVwOiBudW1iZXIsIGNvbG9yPzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGNvbG9yU3RlcENvbnRyYXN0RnJvbU9yaWdpbihjb2xvciB8fCB0aGlzLnRoZW1lQ29sb3IoKSwgc3RlcCB8fCAwKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q2xhc3NHbG9iYWwoKSB7XG4gICAgdGhpcy5zdHlsZUNsYXNzR2xvYmFsRWwuaW5uZXJIVE1MID0gYFxuICAgIC5saWJzLXVpLWJvcmRlci1wcmltYXJ5LWdlbmVyYWx7Ym9yZGVyOiAxcHggc29saWQgdmFyKC0tbGlicy11aS1jb2xvci1kZWZhdWx0LCAjMjI2RkY1KTt9XG4gICAgLmxpYnMtdWktYm9yZGVyLXByaW1hcnktZm9jdXMtZ2VuZXJhbHtib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1saWJzLXVpLWNvbG9yLWxpZ2h0LTEsICM0ZThjZjcpO31cbiAgICAubGlicy11aS1ib3JkZXItcHJpbWFyeS1ob3Zlci1nZW5lcmFse2JvcmRlcjogMXB4IHNvbGlkIHZhcigtLWxpYnMtdWktY29sb3ItbGlnaHQtMywgI2Y0ZjhmZik7fVxuICAgIC5saWJzLXVpLWJvcmRlci1nZW5lcmFseyBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1saWJzLXVpLWNvbG9yLWJvcmRlciwgI2U2ZTdlYSk7fVxuICAgIC5saWJzLXVpLWJvcmRlci10b3AtZ2VuZXJhbHtib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tbGlicy11aS1jb2xvci1ib3JkZXIsICNlNmU3ZWEpO31cbiAgICAubGlicy11aS1ib3JkZXItcmlnaHQtZ2VuZXJhbHtib3JkZXItcmlnaHQ6IDFweCBzb2xpZCB2YXIoLS1saWJzLXVpLWNvbG9yLWJvcmRlciwgI2U2ZTdlYSk7fVxuICAgIC5saWJzLXVpLWJvcmRlci1ib3R0b20tZ2VuZXJhbHtib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tbGlicy11aS1jb2xvci1ib3JkZXIsICNlNmU3ZWEpO31cbiAgICAubGlicy11aS1ib3JkZXItZGFzaGVkLWdlbmVyYWx7Ym9yZGVyOiBkYXNoZWQgMXB4IHZhcigtLWxpYnMtdWktY29sb3ItYm9yZGVyLCAjZTZlN2VhKTt9XG4gICAgLmxpYnMtdWktYm9yZGVyLXRvcC1kYXNoZWQtZ2VuZXJhbHtib3JkZXItdG9wOiBkYXNoZWQgMXB4IHZhcigtLWxpYnMtdWktY29sb3ItYm9yZGVyLCAjZTZlN2VhKTt9XG4gICAgLmxpYnMtdWktYm9yZGVyLWxlZnQtZGFzaGVkLWdlbmVyYWx7Ym9yZGVyLWxlZnQ6IGRhc2hlZCAxcHggdmFyKC0tbGlicy11aS1jb2xvci1ib3JkZXIsICNlNmU3ZWEpO31cbiAgICAubGlicy11aS1ib3JkZXItcmlnaHQtZGFzaGVkLWdlbmVyYWx7Ym9yZGVyLXJpZ2h0OiBkYXNoZWQgMXB4IHZhcigtLWxpYnMtdWktY29sb3ItYm9yZGVyLCAjZTZlN2VhKTt9XG4gICAgLmxpYnMtdWktYm9yZGVyLWJvdHRvbS1kYXNoZWQtZ2VuZXJhbHtib3JkZXItYm90dG9tOiBkYXNoZWQgMXB4IHZhcigtLWxpYnMtdWktY29sb3ItYm9yZGVyLCAjZTZlN2VhKTt9XG4gICAgLmxpYnMtdWktYm9yZGVyLWxlZnQtZ2VuZXJhbHtib3JkZXItbGVmdDogMXB4IHNvbGlkIHZhcigtLWxpYnMtdWktY29sb3ItYm9yZGVyLCAjZTZlN2VhKTt9XG4gICAgLmxpYnMtdWktYm9yZGVyLXgtZ2VuZXJhbHtib3JkZXItbGVmdDogMXB4IHNvbGlkIHZhcigtLWxpYnMtdWktY29sb3ItYm9yZGVyLCAjZTZlN2VhKTsgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHZhcigtLWxpYnMtdWktY29sb3ItYm9yZGVyLCAjZTZlN2VhKTt9XG4gICAgLmxpYnMtdWktYm9yZGVyLXktZ2VuZXJhbHtib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tbGlicy11aS1jb2xvci1ib3JkZXIsICNlNmU3ZWEpOyAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWxpYnMtdWktY29sb3ItYm9yZGVyLCAjZTZlN2VhKTt9XG4gICAgLmxpYnMtdWktYm9yZGVyLWxlZnQtdG9wLWdlbmVyYWx7Ym9yZGVyLWxlZnQ6IDFweCBzb2xpZCB2YXIoLS1saWJzLXVpLWNvbG9yLWJvcmRlciwgI2U2ZTdlYSk7ICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tbGlicy11aS1jb2xvci1ib3JkZXIsICNlNmU3ZWEpO31cbiAgICAubGlicy11aS1ib3JkZXItbGVmdC1ib3R0b20tZ2VuZXJhbHtib3JkZXItbGVmdDogMXB4IHNvbGlkIHZhcigtLWxpYnMtdWktY29sb3ItYm9yZGVyLCAjZTZlN2VhKTsgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1saWJzLXVpLWNvbG9yLWJvcmRlciwgI2U2ZTdlYSk7fVxuICAgIC5saWJzLXVpLWJvcmRlci1yaWdodC10b3AtZ2VuZXJhbHtib3JkZXItcmlnaHQ6IDFweCBzb2xpZCB2YXIoLS1saWJzLXVpLWNvbG9yLWJvcmRlciwgI2U2ZTdlYSk7ICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tbGlicy11aS1jb2xvci1ib3JkZXIsICNlNmU3ZWEpO31cbiAgICAubGlicy11aS1ib3JkZXItcmlnaHQtYm90dG9tLWdlbmVyYWx7Ym9yZGVyLXJpZ2h0OiAxcHggc29saWQgdmFyKC0tbGlicy11aS1jb2xvci1ib3JkZXIsICNlNmU3ZWEpOyAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWxpYnMtdWktY29sb3ItYm9yZGVyLCAjZTZlN2VhKTt9XG4gICAgLmxpYnMtdWktYm9yZGVyLWVycm9yLWdlbmVyYWx7Ym9yZGVyOiAxcHggc29saWQgdmFyKC0tbGlicy11aS1jb2xvci1ib3JkZXItZXJyb3IsICNlZTJkNDEpICFpbXBvcnRhbnQ7fVxuICAgIC5saWJzLXVpLWJnLWxpc3Qge2JhY2tncm91bmQtY29sb3I6IHZhcigtLWxpYnMtdWktYmFja2dyb3VuZC1saXN0LCAjZjhmOWZhKTt9XG4gICAgLmxpYnMtdWktYmctbGlzdC1ob3Zlcjpob3ZlciB7YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbGlicy11aS1iYWNrZ3JvdW5kLWxpc3QtaG92ZXIsICNmOGY5ZmEpO31cbiAgICAubGlicy11aS1iZy1saXN0LWFjdGl2ZSB7YmFja2dyb3VuZC1jb2xvcjogIHZhcigtLWxpYnMtdWktY29sb3ItbGlnaHQtMywgI2Y0ZjhmZik7fVxuICAgIC5saWJzLXVpLWJnLWxpc3QtaG92ZXItYWN0aXZlOmhvdmVyIHtiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhO31cbiAgICAubGlicy11aS1iZy1saXN0LWhvdmVyLWFjdGl2ZTphY3RpdmUge2JhY2tncm91bmQtY29sb3I6IHZhcigtLWxpYnMtdWktY29sb3ItbGlnaHQtMywgI2Y0ZjhmZik7fVxuICAgIC5saWJzLXVpLWJnLWxpc3QtaG92ZXItZGFuZ2VyOmhvdmVyIHtiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1saWJzLXVpLWJhY2tncm91bmQtbGlzdC1ob3Zlci1kYW5nZXIsICNmZWY1ZjYpOyBjb2xvcjogdmFyKC0tbGlicy11aS1jb2xvci1pY29uLWhvdmVyLWRhbmdlciwgI2YxNTc2NykgIWltcG9ydGFudDsgW2NsYXNzKj1cImxpYnMtdWktaWNvbi1cIl0sW2NsYXNzKj1cImljb24tZm9udC0zcmRcIl17JjpiZWZvcmUsJjphZnRlcntjb2xvcjogdmFyKC0tbGlicy11aS1jb2xvci1pY29uLWhvdmVyLWRhbmdlciwgI2YxNTc2NykgIWltcG9ydGFudDt9fX1cbiAgICAubGlicy11aS10ZXh0LWVycm9yIHtjb2xvcjogdmFyKC0tbGlicy11aS1jb2xvci10ZXh0LWVycm9yLCAjZmY1NDU0KSAhaW1wb3J0YW50O31cbiAgICAubGlicy11aS10ZXh0LWVycm9yOjpiZWZvcmUge2NvbG9yOiB2YXIoLS1saWJzLXVpLWNvbG9yLXRleHQtZXJyb3IsICNmZjU0NTQpICFpbXBvcnRhbnQ7fVxuICAgIC5saWJzLXVpLWRpc2FibGUge2N1cnNvcjogbm90LWFsbG93ZWQgIWltcG9ydGFudDt0ZXh0LWRlY29yYXRpb246IG5vbmU7Y29sb3I6dmFyKC0tbGlicy11aS1jb2xvci10ZXh0LWRpc2FibGUsICNjZGQwZDYpICFpbXBvcnRhbnQ7fVxuICAgIC5saWJzLXVpLWRpc2FibGU6OmJlZm9yZSB7Y29sb3I6dmFyKC0tbGlicy11aS1jb2xvci10ZXh0LWRpc2FibGUsICM5Y2EyYWQpICFpbXBvcnRhbnQ7fVxuICAgIC5saWJzLXVpLWRpc2FibGUtYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiB2YXIoLS1saWJzLXVpLWNvbG9yLWJhY2tncm91bmQtZGlzYWJsZSwgI2Y4ZjlmYSkgIWltcG9ydGFudDt9XG4gICAgLmxpYnMtdWktZGlzYWJsZS1hY3RpdmUge2NvbG9yOnZhcigtLWxpYnMtdWktY29sb3ItbGlnaHQtNCwjOTFiN2ZhKSAhaW1wb3J0YW50O31cbiAgICAubGlicy11aS1kaXNhYmxlLWFjdGl2ZTo6YmVmb3JlIHtjb2xvcjp2YXIoLS1saWJzLXVpLWNvbG9yLWxpZ2h0LTQsIzkxYjdmYSkgIWltcG9ydGFudDt9XG4gICAgLmxpYnMtdWktZGlzYWJsZS1hY3RpdmUtYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiB2YXIoLS1saWJzLXVpLWNvbG9yLWxpZ2h0LTQsIzkxYjdmYSkgIWltcG9ydGFudDt9XG4gICAgLmxpYnMtdWktcmVhZG9ubHkge2N1cnNvcjogbm90LWFsbG93ZWQgIWltcG9ydGFudDtjb2xvcjp2YXIoLS1saWJzLXVpLWNvbG9yLXRleHQtcmVhZG9ubHksICMwNzE2MzEpICFpbXBvcnRhbnQ7fVxuICAgIC5saWJzLXVpLXJlYWRvbmx5OjpiZWZvcmUge2NvbG9yOnZhcigtLWxpYnMtdWktY29sb3ItdGV4dC1yZWFkb25seSwgIzA3MTYzMSkgIWltcG9ydGFudDt9XG4gICAgLmxpYnMtdWktcmVhZG9ubHktYmFja2dyb3VuZHtiYWNrZ3JvdW5kOiB2YXIoLS1saWJzLXVpLWNvbG9yLWJhY2tncm91bmQtcmVhZG9ubHksICNmOGY5ZmEpICFpbXBvcnRhbnQ7fVxuICAgIC5saWJzLXVpLWljb24taG92ZXItZGFuZ2VyOmhvdmVyIHtjb2xvcjogdmFyKC0tbGlicy11aS1jb2xvci1pY29uLWhvdmVyLWRhbmdlciwgI2YxNTc2NykgIWltcG9ydGFudDsgW2NsYXNzKj1cImxpYnMtdWktaWNvbi1cIl0sW2NsYXNzKj1cImljb24tZm9udC0zcmRcIl17JjpiZWZvcmUsJjphZnRlcntjb2xvcjogdmFyKC0tbGlicy11aS1jb2xvci1pY29uLWhvdmVyLWRhbmdlciwgI2YxNTc2NykgIWltcG9ydGFudDt9fX1cbiAgICAuYnJlYWstd29yZHt3b3JkLWJyZWFrOiBicmVhay13b3JkICFpbXBvcnRhbnQ7fVxuICAgIC5saWJzLXVpLXNoYWRvdyB7Ym94LXNoYWRvdzogMCAycHggMTBweCAxcHggcmdiYSg1MSwgNTEsIDUxLCAwLjEpO31cbiAgICAubGlicy11aS1zaGFkb3ctbWQge2JveC1zaGFkb3c6IDAgNHB4IDhweCAwIHJnYmEoNTEsIDUxLCA1MSwgMC4xKTt9XG4gICAgLmxpYnMtdWktc2hhZG93LWxnIHtib3gtc2hhZG93OiAwIDE1cHggMzBweCAwIHJnYmEoNTEsIDUxLCA1MSwgMC4xKTt9XG4gICAgLmxpYnMtdWktc2hhZG93LXRvcCB7Ym94LXNoYWRvdzogMCAtNXB4IDVweCAtNXB4IHJnYmEoNTEsIDUxLCA1MSwgMC4xKTt9XG4gICAgLmxpYnMtdWktc2hhZG93LXJpZ2h0IHtib3gtc2hhZG93OiAtNXB4IDAgNXB4IC01cHggcmdiYSg1MSwgNTEsIDUxLCAwLjEpO31cbiAgICAubGlicy11aS1zaGFkb3ctYm90dG9tIHtib3gtc2hhZG93OiAwIDVweCA1cHggLTVweCByZ2JhKDUxLCA1MSwgNTEsIDAuMSk7fVxuICAgIC5saWJzLXVpLXNoYWRvdy1sZWZ0IHtib3gtc2hhZG93OiA1cHggMCA1cHggLTVweCByZ2JhKDUxLCA1MSwgNTEsIDAuMSk7fVxuICAgIC5saWJzLXVpLXNoYWRvdy1zbSB7Ym94LXNoYWRvdzogMCAxcHggMnB4IDAgcmdiYSg1MSwgNTEsIDUxLCAwLjEpO31cbiAgICAubGlicy11aS1zaGFkb3ctcG9wdXAge2JveC1zaGFkb3c6IC0ycHggMCA0cHggMCByZ2JhKDUxLCA1MSwgNTEsIDAuMSk7fVxuICAgIC5saWJzLXVpLXNoYWRvdy1ub25lIHtib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7fVxuICAgIC5saWJzLXVpLXNoYWRvdy1zbWFsbCB7Ym94LXNoYWRvdzogMHB4IDFweCAycHggMHB4IHJnYmEoMCwyMCw1MSwuMDQpLCAwcHggMXB4IDFweCAwcHggcmdiYSgwLDIwLDUxLC4wMik7fVxuICAgIC5saWJzLXVpLXNoYWRvdy1tZWRpdW0ge2JveC1zaGFkb3c6IDBweCA0cHggOHB4IDBweCByZ2JhKDAsIDIwLCA1MSwgMC4wNCksIDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDIwLCA1MSwgMC4wMik7fVxuICAgIC5saWJzLXVpLXNoYWRvdy1sYXJnZSB7Ym94LXNoYWRvdzogMHB4IDRweCAxNnB4IDBweCByZ2JhKDAsMjAsNTEsLjEpLCAwcHggMXB4IDFweCAwcHggcmdiYSgwLDIwLDUxLC4wMik7fVxuICAgIC5saWJzLXVpLXNoYWRvdy1leHRyYS1sYXJnZSB7Ym94LXNoYWRvdzogMHB4IDhweCA1NnB4IDBweCByZ2JhKDAsMjAsNTEsLjA1KSwgMHB4IDFweCAxcHggMHB4IHJnYmEoMCwyMCw1MSwuMDIpO31cbiAgICA6Oi1tb3otc2VsZWN0aW9uIHtiYWNrZ3JvdW5kOiB2YXIoLS1saWJzLXVpLWNvbG9yLWJhY2tncm91bmQtc2VsZWN0aW9uLCAjMDAwMDAwNDApICFpbXBvcnRhbnQ7fVxuICAgIDo6c2VsZWN0aW9uIHtiYWNrZ3JvdW5kOiB2YXIoLS1saWJzLXVpLWNvbG9yLWJhY2tncm91bmQtc2VsZWN0aW9uLCAjMDAwMDAwNDApICFpbXBvcnRhbnQ7fVxuICAgIGAucmVwbGFjZSgvXFxuKy9nLCAnJyk7XG5cbiAgICBkb2N1bWVudC5oZWFkLmFwcGVuZCh0aGlzLnN0eWxlQ2xhc3NHbG9iYWxFbCk7XG4gIH1cblxuICBwcml2YXRlIGNvbmZpZ1N0cmluZygpIHtcbiAgICBjb25zdCBwcm90b3R5cGUgPSBTdHJpbmcucHJvdG90eXBlIGFzIGFueTtcbiAgICBwcm90b3R5cGUucmVwbGFjZUF0ID0gZnVuY3Rpb24gKGluZGV4OiBudW1iZXIsIHJlcGxhY2VtZW50OiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMuc3BsaXQoJycpO1xuXG4gICAgICB2YWx1ZXNbaW5kZXhdID0gcmVwbGFjZW1lbnQ7XG5cbiAgICAgIHJldHVybiB2YWx1ZXMuam9pbignJyk7XG4gICAgfTtcblxuICAgIHByb3RvdHlwZS5yZXBsYWNlQWxsID0gZnVuY3Rpb24gKGluZGV4OiBudW1iZXIsIHNlcGFyYXRvcjogc3RyaW5nLCByZXBsYWNlbWVudDogc3RyaW5nKSB7XG4gICAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoc2VwYXJhdG9yLCAnZycpO1xuXG4gICAgICByZXR1cm4gYCR7dGhpcy5zdWJzdHIoMCwgaW5kZXgpfSR7dGhpcy5zdWJzdHIoaW5kZXggKyAxICsgKHJlcGxhY2VtZW50Py5sZW5ndGggfHwgMCkpLnJlcGxhY2UocmVnZXgsIHJlcGxhY2VtZW50KX1gO1xuICAgIH07XG5cbiAgICBwcm90b3R5cGUub2NjdXJyZW5jZXNCeUNoYXJhY3RlciA9IGZ1bmN0aW9uIChjaGFyYWN0ZXI6IHN0cmluZyk6IG51bWJlciB7XG4gICAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLnNwbGl0KCcnKTtcblxuICAgICAgaWYgKCF2YWx1ZXMgfHwgIXZhbHVlcy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB2YWx1ZXMuZmlsdGVyKChjaGFyOiBzdHJpbmcpID0+IGNoYXIgPT09IGNoYXJhY3RlcikubGVuZ3RoO1xuICAgIH07XG5cbiAgICBwcm90b3R5cGUuaW5kZXhlc09mQ2hhcmFjdGVyID0gZnVuY3Rpb24gKGNoYXJhY3Rlcjogc3RyaW5nKTogQXJyYXk8bnVtYmVyPiB7XG4gICAgICBjb25zdCB2YWx1ZXM6IEFycmF5PHN0cmluZz4gPSB0aGlzLnNwbGl0KCcnKTtcbiAgICAgIGNvbnN0IGluZGV4ZXM6IEFycmF5PG51bWJlcj4gPSBbXTtcblxuICAgICAgaWYgKCF2YWx1ZXMgfHwgIXZhbHVlcy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIGluZGV4ZXM7XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IGluZGV4VmFsdWUgaW4gdmFsdWVzKSB7XG4gICAgICAgIGlmICh2YWx1ZXNbaW5kZXhWYWx1ZV0gPT09IGNoYXJhY3Rlcikge1xuICAgICAgICAgIGluZGV4ZXMucHVzaCgraW5kZXhWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGluZGV4ZXM7XG4gICAgfTtcblxuICAgIHByb3RvdHlwZS5pbmRleGVzQnlTdHJpbmcgPSBmdW5jdGlvbiAoc3RyOiBzdHJpbmcpOiBBcnJheTxudW1iZXI+IHtcbiAgICAgIGNvbnN0IHZhbHVlczogQXJyYXk8c3RyaW5nPiA9IHRoaXMgYXMgYW55O1xuICAgICAgY29uc3QgaW5kZXhlczogQXJyYXk8bnVtYmVyPiA9IFtdO1xuXG4gICAgICBpZiAoIXZhbHVlcyB8fCAhdmFsdWVzLmxlbmd0aCB8fCAhc3RyIHx8ICFzdHIubGVuZ3RoIHx8IHZhbHVlcy5sZW5ndGggPCBzdHIubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBpbmRleGVzO1xuICAgICAgfVxuICAgICAgZm9yIChjb25zdCBpbmRleFZhbHVlIGluIHZhbHVlcykge1xuICAgICAgICBpZiAodmFsdWVzW2luZGV4VmFsdWVdICE9PSBzdHJbMF0gfHwgK2luZGV4VmFsdWUgKyBzdHIubGVuZ3RoID4gdmFsdWVzLmxlbmd0aCkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBpbmRleCBpbiBzdHIuc3BsaXQoJycpKSB7XG4gICAgICAgICAgaWYgKHZhbHVlc1sraW5kZXhWYWx1ZSArICtpbmRleF0gIT09IHN0cltpbmRleF0pIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpbmRleGVzLnB1c2goK2luZGV4VmFsdWUpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaW5kZXhlcztcbiAgICB9O1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from './config-project.service';
|
|
2
|
+
export * from './config-project.interface';
|
|
3
|
+
export * from './config-project-data';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL3NlcnZpY2VzL2NvbmZpZy1wcm9qZWN0L3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29uZmlnLXByb2plY3Quc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbmZpZy1wcm9qZWN0LmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbmZpZy1wcm9qZWN0LWRhdGEnO1xuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlicy11aS1zZXJ2aWNlcy1jb25maWctcHJvamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvc2VydmljZXMvY29uZmlnLXByb2plY3Qvc3JjL2xpYnMtdWktc2VydmljZXMtY29uZmlnLXByb2plY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
|