@libs-ui/services-config-project 0.2.5
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 +314 -0
- package/config-project.interface.d.ts +57 -0
- package/config-project.service.d.ts +343 -0
- package/config-translate.d.ts +7 -0
- package/data-translation.d.ts +18 -0
- package/esm2022/config-project-data.mjs +581 -0
- package/esm2022/config-project.interface.mjs +5 -0
- package/esm2022/config-project.service.mjs +253 -0
- package/esm2022/config-translate.mjs +39 -0
- package/esm2022/data-translation.mjs +7 -0
- package/esm2022/index.mjs +4 -0
- package/esm2022/libs-ui-services-config-project.mjs +5 -0
- package/esm2022/translate.service.mjs +31 -0
- package/fesm2022/libs-ui-services-config-project.mjs +913 -0
- package/fesm2022/libs-ui-services-config-project.mjs.map +1 -0
- package/index.d.ts +3 -0
- package/package.json +25 -0
- package/translate.service.d.ts +11 -0
|
@@ -0,0 +1,253 @@
|
|
|
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, 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
|
+
borderErrorColor = signal('#ee2d41');
|
|
11
|
+
backgroundDisableColor = signal('#f8f9fa');
|
|
12
|
+
textReadonlyColor = signal('#071631');
|
|
13
|
+
textDisableColor = signal('#9ca2ad');
|
|
14
|
+
backgroundReadonlyColor = signal('#f8f9fa');
|
|
15
|
+
configFont = signal(fontConfig);
|
|
16
|
+
configHead = signal(configHeading);
|
|
17
|
+
configDefaultInterpolateParam = signal({ vi: {}, en: {} });
|
|
18
|
+
configButton = computed(() => {
|
|
19
|
+
return { ...configButtonColor(this.themeColor()), ...configLinkButton(this.themeColor()) };
|
|
20
|
+
});
|
|
21
|
+
configButtonStatus = signal(configButtonStatus());
|
|
22
|
+
configButtonTab = signal(configButtonTab());
|
|
23
|
+
styleClassGlobalEl = document.createElement('style');
|
|
24
|
+
styleClassHeadEl = document.createElement('style');
|
|
25
|
+
styleClassButtonTabEl = document.createElement('style');
|
|
26
|
+
constructor() {
|
|
27
|
+
effect(() => {
|
|
28
|
+
this.setThemeColor();
|
|
29
|
+
});
|
|
30
|
+
effect(() => {
|
|
31
|
+
this.setupFontFamily();
|
|
32
|
+
});
|
|
33
|
+
effect(() => {
|
|
34
|
+
this.setupFontHead();
|
|
35
|
+
});
|
|
36
|
+
effect(() => {
|
|
37
|
+
this.setupButtonTab();
|
|
38
|
+
});
|
|
39
|
+
this.configString();
|
|
40
|
+
this.setClassGlobal();
|
|
41
|
+
}
|
|
42
|
+
set ThemeColor(color) {
|
|
43
|
+
this.themeColor.set(color || '#226ff5');
|
|
44
|
+
}
|
|
45
|
+
set BorderColor(color) {
|
|
46
|
+
this.borderColor.set(color || '#e6e7ea');
|
|
47
|
+
}
|
|
48
|
+
set BorderErrorColor(color) {
|
|
49
|
+
this.borderErrorColor.set(color || '#ee2d41');
|
|
50
|
+
}
|
|
51
|
+
set TextErrorColor(color) {
|
|
52
|
+
this.textErrorColor.set(color || '#ff5454');
|
|
53
|
+
}
|
|
54
|
+
set BackgroundReadonlyColor(color) {
|
|
55
|
+
this.backgroundReadonlyColor.set(color || '#f8f9fa');
|
|
56
|
+
}
|
|
57
|
+
set TextReadonlyColor(color) {
|
|
58
|
+
this.textReadonlyColor.set(color || '#071631');
|
|
59
|
+
}
|
|
60
|
+
set BackgroundDisableColor(color) {
|
|
61
|
+
this.backgroundDisableColor.set(color || '#f8f9fa');
|
|
62
|
+
}
|
|
63
|
+
set TextDisableColor(color) {
|
|
64
|
+
this.textDisableColor.set(color || '#9ca2ad');
|
|
65
|
+
}
|
|
66
|
+
set ConfigFont(configFont) {
|
|
67
|
+
this.configFont.set({ ...configFont });
|
|
68
|
+
}
|
|
69
|
+
set ConfigFontHead(configHead) {
|
|
70
|
+
this.configHead.set({ ...configHead });
|
|
71
|
+
}
|
|
72
|
+
get ConfigDefaultInterpolateParam() {
|
|
73
|
+
return this.configDefaultInterpolateParam;
|
|
74
|
+
}
|
|
75
|
+
get ConfigButton() {
|
|
76
|
+
return this.configButton;
|
|
77
|
+
}
|
|
78
|
+
get ConfigButtonStatus() {
|
|
79
|
+
return this.configButtonStatus();
|
|
80
|
+
}
|
|
81
|
+
set ConfigButtonStatus(config) {
|
|
82
|
+
this.configButtonStatus.set(config);
|
|
83
|
+
}
|
|
84
|
+
set ConfigButtonTab(config) {
|
|
85
|
+
this.configButtonTab.set(config);
|
|
86
|
+
}
|
|
87
|
+
// public hàm để sử dụng cho component input sử dụng tagInput = frameArea;
|
|
88
|
+
setupFontFamily(currentDoc) {
|
|
89
|
+
currentDoc = currentDoc || document;
|
|
90
|
+
const doc = currentDoc.documentElement;
|
|
91
|
+
doc.style.setProperty('--libs-ui-font-family-name', `${this.configFont().name},Arial, Helvetica, sans-serif`);
|
|
92
|
+
Object.keys(weights).forEach(key => {
|
|
93
|
+
const fontFace = new FontFace(this.configFont().name, `url(${get(this.configFont(), key)})`, { weight: get(weights, key) });
|
|
94
|
+
fontFace.load().then(loadedFont => {
|
|
95
|
+
if ('add' in currentDoc.fonts) {
|
|
96
|
+
currentDoc.fonts.add(loadedFont);
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
setupFontHead() {
|
|
102
|
+
const configHeads = this.configHead();
|
|
103
|
+
let styles = '';
|
|
104
|
+
Object.keys(configHeads).forEach(keyConfig => {
|
|
105
|
+
let style = `font-family:var(--libs-ui-font-family-name,'Arial');`;
|
|
106
|
+
const config = get(configHeading, keyConfig);
|
|
107
|
+
Object.keys(config).forEach(key => {
|
|
108
|
+
style = `${style}${key}:${get(config, key)};`;
|
|
109
|
+
});
|
|
110
|
+
styles = `${styles} .libs-ui-font-${keyConfig}{${style}}`;
|
|
111
|
+
});
|
|
112
|
+
styles = `*{box-sizing: border-box !important;}${styles}`;
|
|
113
|
+
this.styleClassHeadEl.innerHTML = styles;
|
|
114
|
+
document.head.append(this.styleClassHeadEl);
|
|
115
|
+
}
|
|
116
|
+
setupButtonTab() {
|
|
117
|
+
const configButtonTab = this.configButtonTab();
|
|
118
|
+
let styles = '';
|
|
119
|
+
Object.keys(configButtonTab).forEach(key => {
|
|
120
|
+
const config = get(configButtonTab, key);
|
|
121
|
+
const style = config ? styleButtonTab(key, config) : '';
|
|
122
|
+
styles = `${styles}${style}`;
|
|
123
|
+
});
|
|
124
|
+
this.styleClassButtonTabEl.innerHTML = styles;
|
|
125
|
+
document.head.append(this.styleClassButtonTabEl);
|
|
126
|
+
}
|
|
127
|
+
setThemeColor() {
|
|
128
|
+
const doc = document.documentElement;
|
|
129
|
+
[{
|
|
130
|
+
group: 'libs-ui',
|
|
131
|
+
type: 'color',
|
|
132
|
+
property: {
|
|
133
|
+
default: colorStepContrastFromOrigin(this.themeColor(), 0)?.light,
|
|
134
|
+
light_1: colorStepContrastFromOrigin(this.themeColor(), 20)?.light,
|
|
135
|
+
light_2: colorStepContrastFromOrigin(this.themeColor(), 90)?.light,
|
|
136
|
+
light_3: colorStepContrastFromOrigin(this.themeColor(), 95)?.light,
|
|
137
|
+
light_4: colorStepContrastFromOrigin(this.themeColor(), 50)?.light,
|
|
138
|
+
light_5: colorStepContrastFromOrigin(this.themeColor(), 70)?.light,
|
|
139
|
+
light_6: colorStepContrastFromOrigin(this.themeColor(), 80)?.light,
|
|
140
|
+
dark: colorStepContrastFromOrigin(this.themeColor(), 20)?.dark,
|
|
141
|
+
border: this.borderColor(),
|
|
142
|
+
border_error: this.borderErrorColor(),
|
|
143
|
+
text_error: this.textErrorColor(),
|
|
144
|
+
background_readonly: this.backgroundReadonlyColor(),
|
|
145
|
+
text_readonly: this.textReadonlyColor(),
|
|
146
|
+
background_disable: this.backgroundDisableColor(),
|
|
147
|
+
text_disable: this.textDisableColor(),
|
|
148
|
+
gradient_from: this.themeColor().toLocaleUpperCase() === '#226FF5' ? colorStepContrastFromOrigin(this.themeColor(), 10)?.light : colorStepContrastFromOrigin(this.themeColor(), 0)?.light,
|
|
149
|
+
gradient_to: this.themeColor().toLocaleUpperCase() === '#226FF5' ? colorStepContrastFromOrigin('#5B2EBB', 10)?.light : colorStepContrastFromOrigin(this.themeColor(), 20)?.dark,
|
|
150
|
+
}
|
|
151
|
+
}].forEach(item => {
|
|
152
|
+
const name = `--${item.group.replace(/[_]/g, '-')}-${item.type.replace(/[_]/g, '-')}`;
|
|
153
|
+
Object.keys(item.property).forEach(key => doc.style.setProperty(`${name}-${key.replace(/[_]/g, '-')}`, item.property[key]));
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
colorStepContrastFromOrigin(step, color) {
|
|
157
|
+
return colorStepContrastFromOrigin(color || this.themeColor(), step || 0);
|
|
158
|
+
}
|
|
159
|
+
setClassGlobal() {
|
|
160
|
+
this.styleClassGlobalEl.innerHTML = `
|
|
161
|
+
.libs-ui-border-primary-general{border: 1px solid var(--libs-ui-color-default, #226FF5);}
|
|
162
|
+
.libs-ui-border-primary-focus-general{border: 1px solid var(--libs-ui-color-light-1, #4e8cf7);}
|
|
163
|
+
.libs-ui-border-primary-hover-general{border: 1px solid var(--libs-ui-color-light-3, #f4f8ff);}
|
|
164
|
+
.libs-ui-border-general{ border: 1px solid var(--libs-ui-color-border, #e6e7ea);}
|
|
165
|
+
.libs-ui-border-top-general{border-top: 1px solid var(--libs-ui-color-border, #e6e7ea);}
|
|
166
|
+
.libs-ui-border-right-general{border-right: 1px solid var(--libs-ui-color-border, #e6e7ea);}
|
|
167
|
+
.libs-ui-border-bottom-general{border-bottom: 1px solid var(--libs-ui-color-border, #e6e7ea);}
|
|
168
|
+
.libs-ui-border-dashed-bottom-general{border-bottom: dashed 1px var(--libs-ui-color-border, #e6e7ea);}
|
|
169
|
+
.libs-ui-border-left-general{border-left: 1px solid var(--libs-ui-color-border, #e6e7ea);}
|
|
170
|
+
.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);}
|
|
171
|
+
.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);}
|
|
172
|
+
.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);}
|
|
173
|
+
.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);}
|
|
174
|
+
.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);}
|
|
175
|
+
.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);}
|
|
176
|
+
.libs-ui-border-error-general{border: 1px solid var(--libs-ui-color-border-error, #ee2d41);}
|
|
177
|
+
.libs-ui-bg-list-hover:hover {background-color: #f8f9fa;}
|
|
178
|
+
.libs-ui-bg-list-hover-active:hover {background-color: #f8f9fa;}
|
|
179
|
+
.libs-ui-bg-list-hover-active:active {background-color: var(--libs-ui-color-light-3, #f4f8ff);}
|
|
180
|
+
.libs-ui-text-error {color: var(--libs-ui-color-text-error, #ff5454); !important}
|
|
181
|
+
.libs-ui-text-error::before {color: var(--libs-ui-color-text-error, #ff5454);}
|
|
182
|
+
.libs-ui-disable {cursor: default !important;text-decoration: none;color:var(--libs-ui-color-text-disable, #cdd0d6) !important}
|
|
183
|
+
.libs-ui-disable::before {color:var(--libs-ui-color-text-disable, #9ca2ad) !important}
|
|
184
|
+
.libs-ui-disable-background{background: var(--libs-ui-color-background-disable, #f8f9fa) !important;}
|
|
185
|
+
.libs-ui-disable-active {color:var(--libs-ui-color-light-4,#91b7fa) !important}
|
|
186
|
+
.libs-ui-disable-active::before {color:var(--libs-ui-color-light-4,#91b7fa) !important}
|
|
187
|
+
.libs-ui-readonly {cursor: default !important;color:var(--libs-ui-color-text-readonly, #071631) !important;}
|
|
188
|
+
.libs-ui-readonly::before {color:var(--libs-ui-color-text-readonly, #071631) !important;}
|
|
189
|
+
.libs-ui-readonly-background{background: var(--libs-ui-color-background-readonly, #f8f9fa) !important;}
|
|
190
|
+
`;
|
|
191
|
+
document.head.append(this.styleClassGlobalEl);
|
|
192
|
+
}
|
|
193
|
+
configString() {
|
|
194
|
+
const prototype = String.prototype;
|
|
195
|
+
prototype.replaceAt = function (index, replacement) {
|
|
196
|
+
const values = this.split('');
|
|
197
|
+
values[index] = replacement;
|
|
198
|
+
return values.join('');
|
|
199
|
+
};
|
|
200
|
+
prototype.replaceAll = function (index, separator, replacement) {
|
|
201
|
+
const regex = new RegExp(separator, 'g');
|
|
202
|
+
return `${this.substr(0, index)}${this.substr(index + 1 + (replacement?.length || 0)).replace(regex, replacement)}`;
|
|
203
|
+
};
|
|
204
|
+
prototype.occurrencesByCharacter = function (character) {
|
|
205
|
+
const values = this.split('');
|
|
206
|
+
if (!values || !values.length) {
|
|
207
|
+
return 0;
|
|
208
|
+
}
|
|
209
|
+
return values.filter((char) => char === character).length;
|
|
210
|
+
};
|
|
211
|
+
prototype.indexesOfCharacter = function (character) {
|
|
212
|
+
const values = this.split('');
|
|
213
|
+
const indexes = [];
|
|
214
|
+
if (!values || !values.length) {
|
|
215
|
+
return indexes;
|
|
216
|
+
}
|
|
217
|
+
for (const indexValue in values) {
|
|
218
|
+
if (values[indexValue] === character) {
|
|
219
|
+
indexes.push(+indexValue);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
return indexes;
|
|
223
|
+
};
|
|
224
|
+
prototype.indexesByString = function (str) {
|
|
225
|
+
const values = this;
|
|
226
|
+
const indexes = [];
|
|
227
|
+
if (!values || !values.length || !str || !str.length || values.length < str.length) {
|
|
228
|
+
return indexes;
|
|
229
|
+
}
|
|
230
|
+
for (const indexValue in values) {
|
|
231
|
+
if (values[indexValue] !== str[0] || ((+indexValue) + str.length) > values.length) {
|
|
232
|
+
continue;
|
|
233
|
+
}
|
|
234
|
+
for (const index in str.split('')) {
|
|
235
|
+
if (values[(+indexValue) + (+index)] !== str[index]) {
|
|
236
|
+
break;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
indexes.push(+indexValue);
|
|
240
|
+
}
|
|
241
|
+
return indexes;
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiConfigProjectService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
245
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiConfigProjectService, providedIn: 'root' });
|
|
246
|
+
}
|
|
247
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiConfigProjectService, decorators: [{
|
|
248
|
+
type: Injectable,
|
|
249
|
+
args: [{
|
|
250
|
+
providedIn: 'root'
|
|
251
|
+
}]
|
|
252
|
+
}], ctorParameters: () => [] });
|
|
253
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLXByb2plY3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvc2VydmljZXMvY29uZmlnLXByb2plY3Qvc3JjL2NvbmZpZy1wcm9qZWN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBTXJLLE1BQU0sT0FBTywwQkFBMEI7SUFDcEIsVUFBVSxHQUFHLE1BQU0sQ0FBUyxTQUFTLENBQUMsQ0FBQztJQUN2QyxXQUFXLEdBQUcsTUFBTSxDQUFTLFNBQVMsQ0FBQyxDQUFDO0lBQ3hDLGNBQWMsR0FBRyxNQUFNLENBQVMsU0FBUyxDQUFDLENBQUM7SUFDM0MsZ0JBQWdCLEdBQUcsTUFBTSxDQUFTLFNBQVMsQ0FBQyxDQUFDO0lBQzdDLHNCQUFzQixHQUFHLE1BQU0sQ0FBUyxTQUFTLENBQUMsQ0FBQztJQUNuRCxpQkFBaUIsR0FBRyxNQUFNLENBQVMsU0FBUyxDQUFDLENBQUM7SUFDOUMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFTLFNBQVMsQ0FBQyxDQUFDO0lBQzdDLHVCQUF1QixHQUFHLE1BQU0sQ0FBUyxTQUFTLENBQUMsQ0FBQztJQUNwRCxVQUFVLEdBQUcsTUFBTSxDQUEwQixVQUFVLENBQUMsQ0FBQztJQUN6RCxVQUFVLEdBQUcsTUFBTSxDQUEyQixhQUFhLENBQUMsQ0FBQztJQUM3RCw2QkFBNkIsR0FBRyxN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RSxDQUFDO3dCQUNwRCxNQUFNO29CQUNSLENBQUM7Z0JBQ0gsQ0FBQztnQkFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDNUIsQ0FBQztZQUVELE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUMsQ0FBQTtJQUNILENBQUM7d0dBL1JVLDBCQUEwQjs0R0FBMUIsMEJBQTBCLGNBSHpCLE1BQU07OzRGQUdQLDBCQUEwQjtrQkFKdEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBjb21wdXRlZCwgZWZmZWN0LCBzaWduYWwgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgY29sb3JTdGVwQ29udHJhc3RGcm9tT3JpZ2luLCBnZXQgfSBmcm9tIFwiQGxpYnMtdWkvdXRpbHNcIjtcbmltcG9ydCB7IGNvbmZpZ0J1dHRvbkNvbG9yLCBjb25maWdCdXR0b25TdGF0dXMsIGNvbmZpZ0J1dHRvblRhYiwgY29uZmlnSGVhZGluZywgY29uZmlnTGlua0J1dHRvbiwgZm9udENvbmZpZywgc3R5bGVCdXR0b25UYWIsIHdlaWdodHMgfSBmcm9tIFwiLi9jb25maWctcHJvamVjdC1kYXRhXCI7XG5pbXBvcnQgeyBJTGlic1VpQ29uZmlnQnV0dG9uU3RhdHVzLCBJTGlic1VpQ29uZmlnQnV0dG9uVGFiLCBJTGlic1VpQ29uZmlnRm9udEZhbWlseSwgSUxpYnNVaUNvbmZpZ0ZvbnRIZWFkaW5nIH0gZnJvbSBcIi4vY29uZmlnLXByb2plY3QuaW50ZXJmYWNlXCI7XG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcblxuZXhwb3J0IGNsYXNzIExpYnNVaUNvbmZpZ1Byb2plY3RTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSB0aGVtZUNvbG9yID0gc2lnbmFsPHN0cmluZz4oJyMyMjZmZjUnKTtcbiAgcHJpdmF0ZSByZWFkb25seSBib3JkZXJDb2xvciA9IHNpZ25hbDxzdHJpbmc+KCcjZTZlN2VhJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgdGV4dEVycm9yQ29sb3IgPSBzaWduYWw8c3RyaW5nPignI2ZmNTQ1NCcpO1xuICBwcml2YXRlIHJlYWRvbmx5IGJvcmRlckVycm9yQ29sb3IgPSBzaWduYWw8c3RyaW5nPignI2VlMmQ0MScpO1xuICBwcml2YXRlIHJlYWRvbmx5IGJhY2tncm91bmREaXNhYmxlQ29sb3IgPSBzaWduYWw8c3RyaW5nPignI2Y4ZjlmYScpO1xuICBwcml2YXRlIHJlYWRvbmx5IHRleHRSZWFkb25seUNvbG9yID0gc2lnbmFsPHN0cmluZz4oJyMwNzE2MzEnKTtcbiAgcHJpdmF0ZSByZWFkb25seSB0ZXh0RGlzYWJsZUNvbG9yID0gc2lnbmFsPHN0cmluZz4oJyM5Y2EyYWQnKTtcbiAgcHJpdmF0ZSByZWFkb25seSBiYWNrZ3JvdW5kUmVhZG9ubHlDb2xvciA9IHNpZ25hbDxzdHJpbmc+KCcjZjhmOWZhJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnRm9udCA9IHNpZ25hbDxJTGlic1VpQ29uZmlnRm9udEZhbWlseT4oZm9udENvbmZpZyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnSGVhZCA9IHNpZ25hbDxJTGlic1VpQ29uZmlnRm9udEhlYWRpbmc+KGNvbmZpZ0hlYWRpbmcpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ0RlZmF1bHRJbnRlcnBvbGF0ZVBhcmFtID0gc2lnbmFsPHsgW2tleSBpbiBzdHJpbmddOiB7IFtrZXkgaW4gc3RyaW5nXTogc3RyaW5nIH0gfT4oeyB2aToge30sIGVuOiB7fSB9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maWdCdXR0b24gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHsgLi4uY29uZmlnQnV0dG9uQ29sb3IodGhpcy50aGVtZUNvbG9yKCkpLCAuLi5jb25maWdMaW5rQnV0dG9uKHRoaXMudGhlbWVDb2xvcigpKSB9O1xuICB9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maWdCdXR0b25TdGF0dXMgPSBzaWduYWw8SUxpYnNVaUNvbmZpZ0J1dHRvblN0YXR1cz4oY29uZmlnQnV0dG9uU3RhdHVzKCkpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ0J1dHRvblRhYiA9IHNpZ25hbDxJTGlic1VpQ29uZmlnQnV0dG9uVGFiPihjb25maWdCdXR0b25UYWIoKSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgc3R5bGVDbGFzc0dsb2JhbEVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgcHJpdmF0ZSByZWFkb25seSBzdHlsZUNsYXNzSGVhZEVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgcHJpdmF0ZSByZWFkb25seSBzdHlsZUNsYXNzQnV0dG9uVGFiRWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICB0aGlzLnNldFRoZW1lQ29sb3IoKTtcbiAgICB9KTtcblxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICB0aGlzLnNldHVwRm9udEZhbWlseSgpO1xuICAgIH0pO1xuXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIHRoaXMuc2V0dXBGb250SGVhZCgpO1xuICAgIH0pO1xuXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIHRoaXMuc2V0dXBCdXR0b25UYWIoKTtcbiAgICB9KTtcblxuICAgIHRoaXMuY29uZmlnU3RyaW5nKCk7XG4gICAgdGhpcy5zZXRDbGFzc0dsb2JhbCgpO1xuICB9XG5cbiAgcHVibGljIHNldCBUaGVtZUNvbG9yKGNvbG9yOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRoZW1lQ29sb3Iuc2V0KGNvbG9yIHx8ICcjMjI2ZmY1Jyk7XG4gIH1cblxuICBwdWJsaWMgc2V0IEJvcmRlckNvbG9yKGNvbG9yOiBzdHJpbmcpIHtcbiAgICB0aGlzLmJvcmRlckNvbG9yLnNldChjb2xvciB8fCAnI2U2ZTdlYScpO1xuICB9XG5cbiAgcHVibGljIHNldCBCb3JkZXJFcnJvckNvbG9yKGNvbG9yOiBzdHJpbmcpIHtcbiAgICB0aGlzLmJvcmRlckVycm9yQ29sb3Iuc2V0KGNvbG9yIHx8ICcjZWUyZDQxJyk7XG4gIH1cblxuICBwdWJsaWMgc2V0IFRleHRFcnJvckNvbG9yKGNvbG9yOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRleHRFcnJvckNvbG9yLnNldChjb2xvciB8fCAnI2ZmNTQ1NCcpO1xuICB9XG5cbiAgcHVibGljIHNldCBCYWNrZ3JvdW5kUmVhZG9ubHlDb2xvcihjb2xvcjogc3RyaW5nKSB7XG4gICAgdGhpcy5iYWNrZ3JvdW5kUmVhZG9ubHlDb2xvci5zZXQoY29sb3IgfHwgJyNmOGY5ZmEnKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgVGV4dFJlYWRvbmx5Q29sb3IoY29sb3I6IHN0cmluZykge1xuICAgIHRoaXMudGV4dFJlYWRvbmx5Q29sb3Iuc2V0KGNvbG9yIHx8ICcjMDcxNjMxJyk7XG4gIH1cblxuICBwdWJsaWMgc2V0IEJhY2tncm91bmREaXNhYmxlQ29sb3IoY29sb3I6IHN0cmluZykge1xuICAgIHRoaXMuYmFja2dyb3VuZERpc2FibGVDb2xvci5zZXQoY29sb3IgfHwgJyNmOGY5ZmEnKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgVGV4dERpc2FibGVDb2xvcihjb2xvcjogc3RyaW5nKSB7XG4gICAgdGhpcy50ZXh0RGlzYWJsZUNvbG9yLnNldChjb2xvciB8fCAnIzljYTJhZCcpO1xuICB9XG5cbiAgcHVibGljIHNldCBDb25maWdGb250KGNvbmZpZ0ZvbnQ6IElMaWJzVWlDb25maWdGb250RmFtaWx5KSB7XG4gICAgdGhpcy5jb25maWdGb250LnNldCh7IC4uLmNvbmZpZ0ZvbnQgfSk7XG4gIH1cblxuICBwdWJsaWMgc2V0IENvbmZpZ0ZvbnRIZWFkKGNvbmZpZ0hlYWQ6IElMaWJzVWlDb25maWdGb250SGVhZGluZykge1xuICAgIHRoaXMuY29uZmlnSGVhZC5zZXQoeyAuLi5jb25maWdIZWFkIH0pO1xuICB9XG5cbiAgcHVibGljIGdldCBDb25maWdEZWZhdWx0SW50ZXJwb2xhdGVQYXJhbSgpIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWdEZWZhdWx0SW50ZXJwb2xhdGVQYXJhbTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgQ29uZmlnQnV0dG9uKCkge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZ0J1dHRvbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgQ29uZmlnQnV0dG9uU3RhdHVzKCkge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZ0J1dHRvblN0YXR1cygpO1xuICB9XG5cbiAgcHVibGljIHNldCBDb25maWdCdXR0b25TdGF0dXMoY29uZmlnOiBJTGlic1VpQ29uZmlnQnV0dG9uU3RhdHVzKSB7XG4gICAgdGhpcy5jb25maWdCdXR0b25TdGF0dXMuc2V0KGNvbmZpZyk7XG4gIH1cblxuICBwdWJsaWMgc2V0IENvbmZpZ0J1dHRvblRhYihjb25maWc6IElMaWJzVWlDb25maWdCdXR0b25UYWIpIHtcbiAgICB0aGlzLmNvbmZpZ0J1dHRvblRhYi5zZXQoY29uZmlnKTtcbiAgfVxuXG4gIC8vIHB1YmxpYyBow6BtIMSR4buDIHPhu60gZOG7pW5nIGNobyBjb21wb25lbnQgaW5wdXQgc+G7rSBk4bulbmcgdGFnSW5wdXQgPSBmcmFtZUFyZWE7XG4gIHB1YmxpYyBzZXR1cEZvbnRGYW1pbHkoY3VycmVudERvYz86IERvY3VtZW50KSB7XG4gICAgY3VycmVudERvYyA9IGN1cnJlbnREb2MgfHwgZG9jdW1lbnQ7XG4gICAgY29uc3QgZG9jID0gY3VycmVudERvYy5kb2N1bWVudEVsZW1lbnQ7XG5cbiAgICBkb2Muc3R5bGUuc2V0UHJvcGVydHkoJy0tbGlicy11aS1mb250LWZhbWlseS1uYW1lJywgYCR7dGhpcy5jb25maWdGb250KCkubmFtZX0sQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZmApO1xuICAgIE9iamVjdC5rZXlzKHdlaWdodHMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGNvbnN0IGZvbnRGYWNlID0gbmV3IEZvbnRGYWNlKHRoaXMuY29uZmlnRm9udCgpLm5hbWUsIGB1cmwoJHtnZXQodGhpcy5jb25maWdGb250KCksIGtleSl9KWAsIHsgd2VpZ2h0OiBnZXQod2VpZ2h0cywga2V5KSB9KTtcbiAgICAgIGZvbnRGYWNlLmxvYWQoKS50aGVuKGxvYWRlZEZvbnQgPT4ge1xuICAgICAgICBpZiAoJ2FkZCcgaW4gY3VycmVudERvYy5mb250cykge1xuICAgICAgICAgIChjdXJyZW50RG9jLmZvbnRzIGFzIGFueSkuYWRkKGxvYWRlZEZvbnQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBGb250SGVhZCgpIHtcbiAgICBjb25zdCBjb25maWdIZWFkcyA9IHRoaXMuY29uZmlnSGVhZCgpO1xuICAgIGxldCBzdHlsZXMgPSAnJztcbiAgICBPYmplY3Qua2V5cyhjb25maWdIZWFkcykuZm9yRWFjaChrZXlDb25maWcgPT4ge1xuICAgICAgbGV0IHN0eWxlID0gYGZvbnQtZmFtaWx5OnZhcigtLWxpYnMtdWktZm9udC1mYW1pbHktbmFtZSwnQXJpYWwnKTtgO1xuICAgICAgY29uc3QgY29uZmlnID0gZ2V0KGNvbmZpZ0hlYWRpbmcsIGtleUNvbmZpZyk7XG4gICAgICBPYmplY3Qua2V5cyhjb25maWcpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgc3R5bGUgPSBgJHtzdHlsZX0ke2tleX06JHtnZXQoY29uZmlnLCBrZXkpfTtgO1xuICAgICAgfSk7XG4gICAgICBzdHlsZXMgPSBgJHtzdHlsZXN9IC5saWJzLXVpLWZvbnQtJHtrZXlDb25maWd9eyR7c3R5bGV9fWA7XG4gICAgfSk7XG5cbiAgICBzdHlsZXMgPSBgKntib3gtc2l6aW5nOiBib3JkZXItYm94ICFpbXBvcnRhbnQ7fSR7c3R5bGVzfWA7XG5cbiAgICB0aGlzLnN0eWxlQ2xhc3NIZWFkRWwuaW5uZXJIVE1MID0gc3R5bGVzO1xuICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kKHRoaXMuc3R5bGVDbGFzc0hlYWRFbCk7XG4gIH1cblxuICBwcml2YXRlIHNldHVwQnV0dG9uVGFiKCkge1xuICAgIGNvbnN0IGNvbmZpZ0J1dHRvblRhYiA9IHRoaXMuY29uZmlnQnV0dG9uVGFiKCk7XG4gICAgbGV0IHN0eWxlcyA9ICcnO1xuXG4gICAgT2JqZWN0LmtleXMoY29uZmlnQnV0dG9uVGFiKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBjb25zdCBjb25maWcgPSBnZXQoY29uZmlnQnV0dG9uVGFiLCBrZXkpO1xuICAgICAgY29uc3Qgc3R5bGUgPSBjb25maWcgPyBzdHlsZUJ1dHRvblRhYihrZXksIGNvbmZpZykgOiAnJztcblxuICAgICAgc3R5bGVzID0gYCR7c3R5bGVzfSR7c3R5bGV9YDtcbiAgICB9KTtcbiAgICB0aGlzLnN0eWxlQ2xhc3NCdXR0b25UYWJFbC5pbm5lckhUTUwgPSBzdHlsZXM7XG4gICAgZG9jdW1lbnQuaGVhZC5hcHBlbmQodGhpcy5zdHlsZUNsYXNzQnV0dG9uVGFiRWwpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRUaGVtZUNvbG9yKCkge1xuICAgIGNvbnN0IGRvYyA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICBbe1xuICAgICAgZ3JvdXA6ICdsaWJzLXVpJyxcbiAgICAgIHR5cGU6ICdjb2xvcicsXG4gICAgICBwcm9wZXJ0eToge1xuICAgICAgICBkZWZhdWx0OiBjb2xvclN0ZXBDb250cmFzdEZyb21PcmlnaW4odGhpcy50aGVtZUNvbG9yKCksIDApPy5saWdodCxcbiAgICAgICAgbGlnaHRfMTogY29sb3JTdGVwQ29udHJhc3RGcm9tT3JpZ2luKHRoaXMudGhlbWVDb2xvcigpLCAyMCk/LmxpZ2h0LFxuICAgICAgICBsaWdodF8yOiBjb2xvclN0ZXBDb250cmFzdEZyb21PcmlnaW4odGhpcy50aGVtZUNvbG9yKCksIDkwKT8ubGlnaHQsXG4gICAgICAgIGxpZ2h0XzM6IGNvbG9yU3RlcENvbnRyYXN0RnJvbU9yaWdpbih0aGlzLnRoZW1lQ29sb3IoKSwgOTUpPy5saWdodCxcbiAgICAgICAgbGlnaHRfNDogY29sb3JTdGVwQ29udHJhc3RGcm9tT3JpZ2luKHRoaXMudGhlbWVDb2xvcigpLCA1MCk/LmxpZ2h0LFxuICAgICAgICBsaWdodF81OiBjb2xvclN0ZXBDb250cmFzdEZyb21PcmlnaW4odGhpcy50aGVtZUNvbG9yKCksIDcwKT8ubGlnaHQsXG4gICAgICAgIGxpZ2h0XzY6IGNvbG9yU3RlcENvbnRyYXN0RnJvbU9yaWdpbih0aGlzLnRoZW1lQ29sb3IoKSwgODApPy5saWdodCxcbiAgICAgICAgZGFyazogY29sb3JTdGVwQ29udHJhc3RGcm9tT3JpZ2luKHRoaXMudGhlbWVDb2xvcigpLCAyMCk/LmRhcmssXG4gICAgICAgIGJvcmRlcjogdGhpcy5ib3JkZXJDb2xvcigpLFxuICAgICAgICBib3JkZXJfZXJyb3I6IHRoaXMuYm9yZGVyRXJyb3JDb2xvcigpLFxuICAgICAgICB0ZXh0X2Vycm9yOiB0aGlzLnRleHRFcnJvckNvbG9yKCksXG4gICAgICAgIGJhY2tncm91bmRfcmVhZG9ubHk6IHRoaXMuYmFja2dyb3VuZFJlYWRvbmx5Q29sb3IoKSxcbiAgICAgICAgdGV4dF9yZWFkb25seTogdGhpcy50ZXh0UmVhZG9ubHlDb2xvcigpLFxuICAgICAgICBiYWNrZ3JvdW5kX2Rpc2FibGU6IHRoaXMuYmFja2dyb3VuZERpc2FibGVDb2xvcigpLFxuICAgICAgICB0ZXh0X2Rpc2FibGU6IHRoaXMudGV4dERpc2FibGVDb2xvcigpLFxuICAgICAgICBncmFkaWVudF9mcm9tOiB0aGlzLnRoZW1lQ29sb3IoKS50b0xvY2FsZVVwcGVyQ2FzZSgpID09PSAnIzIyNkZGNScgPyBjb2xvclN0ZXBDb250cmFzdEZyb21PcmlnaW4odGhpcy50aGVtZUNvbG9yKCksIDEwKT8ubGlnaHQgOiBjb2xvclN0ZXBDb250cmFzdEZyb21PcmlnaW4odGhpcy50aGVtZUNvbG9yKCksIDApPy5saWdodCxcbiAgICAgICAgZ3JhZGllbnRfdG86IHRoaXMudGhlbWVDb2xvcigpLnRvTG9jYWxlVXBwZXJDYXNlKCkgPT09ICcjMjI2RkY1JyA/IGNvbG9yU3RlcENvbnRyYXN0RnJvbU9yaWdpbignIzVCMkVCQicsIDEwKT8ubGlnaHQgOiBjb2xvclN0ZXBDb250cmFzdEZyb21PcmlnaW4odGhpcy50aGVtZUNvbG9yKCksIDIwKT8uZGFyayxcbiAgICAgIH1cbiAgICB9XS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgY29uc3QgbmFtZSA9IGAtLSR7aXRlbS5ncm91cC5yZXBsYWNlKC9bX10vZywgJy0nKX0tJHtpdGVtLnR5cGUucmVwbGFjZSgvW19dL2csICctJyl9YDtcbiAgICAgIE9iamVjdC5rZXlzKGl0ZW0ucHJvcGVydHkpLmZvckVhY2goa2V5ID0+IGRvYy5zdHlsZS5zZXRQcm9wZXJ0eShgJHtuYW1lfS0ke2tleS5yZXBsYWNlKC9bX10vZywgJy0nKX1gLCAoaXRlbS5wcm9wZXJ0eSBhcyBhbnkpW2tleV0pKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjb2xvclN0ZXBDb250cmFzdEZyb21PcmlnaW4oc3RlcDogbnVtYmVyLCBjb2xvcj86IHN0cmluZykge1xuICAgIHJldHVybiBjb2xvclN0ZXBDb250cmFzdEZyb21PcmlnaW4oY29sb3IgfHwgdGhpcy50aGVtZUNvbG9yKCksIHN0ZXAgfHwgMCk7XG4gIH1cblxuICBwcml2YXRlIHNldENsYXNzR2xvYmFsKCkge1xuICAgIHRoaXMuc3R5bGVDbGFzc0dsb2JhbEVsLmlubmVySFRNTCA9IGBcbiAgICAubGlicy11aS1ib3JkZXItcHJpbWFyeS1nZW5lcmFse2JvcmRlcjogMXB4IHNvbGlkIHZhcigtLWxpYnMtdWktY29sb3ItZGVmYXVsdCwgIzIyNkZGNSk7fVxuICAgIC5saWJzLXVpLWJvcmRlci1wcmltYXJ5LWZvY3VzLWdlbmVyYWx7Ym9yZGVyOiAxcHggc29saWQgdmFyKC0tbGlicy11aS1jb2xvci1saWdodC0xLCAjNGU4Y2Y3KTt9XG4gICAgLmxpYnMtdWktYm9yZGVyLXByaW1hcnktaG92ZXItZ2VuZXJhbHtib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1saWJzLXVpLWNvbG9yLWxpZ2h0LTMsICNmNGY4ZmYpO31cbiAgICAubGlicy11aS1ib3JkZXItZ2VuZXJhbHsgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tbGlicy11aS1jb2xvci1ib3JkZXIsICNlNmU3ZWEpO31cbiAgICAubGlicy11aS1ib3JkZXItdG9wLWdlbmVyYWx7Ym9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWxpYnMtdWktY29sb3ItYm9yZGVyLCAjZTZlN2VhKTt9XG4gICAgLmxpYnMtdWktYm9yZGVyLXJpZ2h0LWdlbmVyYWx7Ym9yZGVyLXJpZ2h0OiAxcHggc29saWQgdmFyKC0tbGlicy11aS1jb2xvci1ib3JkZXIsICNlNmU3ZWEpO31cbiAgICAubGlicy11aS1ib3JkZXItYm90dG9tLWdlbmVyYWx7Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWxpYnMtdWktY29sb3ItYm9yZGVyLCAjZTZlN2VhKTt9XG4gICAgLmxpYnMtdWktYm9yZGVyLWRhc2hlZC1ib3R0b20tZ2VuZXJhbHtib3JkZXItYm90dG9tOiBkYXNoZWQgMXB4IHZhcigtLWxpYnMtdWktY29sb3ItYm9yZGVyLCAjZTZlN2VhKTt9XG4gICAgLmxpYnMtdWktYm9yZGVyLWxlZnQtZ2VuZXJhbHtib3JkZXItbGVmdDogMXB4IHNvbGlkIHZhcigtLWxpYnMtdWktY29sb3ItYm9yZGVyLCAjZTZlN2VhKTt9XG4gICAgLmxpYnMtdWktYm9yZGVyLXgtZ2VuZXJhbHtib3JkZXItbGVmdDogMXB4IHNvbGlkIHZhcigtLWxpYnMtdWktY29sb3ItYm9yZGVyLCAjZTZlN2VhKTsgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHZhcigtLWxpYnMtdWktY29sb3ItYm9yZGVyLCAjZTZlN2VhKTt9XG4gICAgLmxpYnMtdWktYm9yZGVyLXktZ2VuZXJhbHtib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tbGlicy11aS1jb2xvci1ib3JkZXIsICNlNmU3ZWEpOyAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWxpYnMtdWktY29sb3ItYm9yZGVyLCAjZTZlN2VhKTt9XG4gICAgLmxpYnMtdWktYm9yZGVyLWxlZnQtdG9wLWdlbmVyYWx7Ym9yZGVyLWxlZnQ6IDFweCBzb2xpZCB2YXIoLS1saWJzLXVpLWNvbG9yLWJvcmRlciwgI2U2ZTdlYSk7ICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tbGlicy11aS1jb2xvci1ib3JkZXIsICNlNmU3ZWEpO31cbiAgICAubGlicy11aS1ib3JkZXItbGVmdC1ib3R0b20tZ2VuZXJhbHtib3JkZXItbGVmdDogMXB4IHNvbGlkIHZhcigtLWxpYnMtdWktY29sb3ItYm9yZGVyLCAjZTZlN2VhKTsgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1saWJzLXVpLWNvbG9yLWJvcmRlciwgI2U2ZTdlYSk7fVxuICAgIC5saWJzLXVpLWJvcmRlci1yaWdodC10b3AtZ2VuZXJhbHtib3JkZXItcmlnaHQ6IDFweCBzb2xpZCB2YXIoLS1saWJzLXVpLWNvbG9yLWJvcmRlciwgI2U2ZTdlYSk7ICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tbGlicy11aS1jb2xvci1ib3JkZXIsICNlNmU3ZWEpO31cbiAgICAubGlicy11aS1ib3JkZXItcmlnaHQtYm90dG9tLWdlbmVyYWx7Ym9yZGVyLXJpZ2h0OiAxcHggc29saWQgdmFyKC0tbGlicy11aS1jb2xvci1ib3JkZXIsICNlNmU3ZWEpOyAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWxpYnMtdWktY29sb3ItYm9yZGVyLCAjZTZlN2VhKTt9XG4gICAgLmxpYnMtdWktYm9yZGVyLWVycm9yLWdlbmVyYWx7Ym9yZGVyOiAxcHggc29saWQgdmFyKC0tbGlicy11aS1jb2xvci1ib3JkZXItZXJyb3IsICNlZTJkNDEpO31cbiAgICAubGlicy11aS1iZy1saXN0LWhvdmVyOmhvdmVyIHtiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhO31cbiAgICAubGlicy11aS1iZy1saXN0LWhvdmVyLWFjdGl2ZTpob3ZlciB7YmFja2dyb3VuZC1jb2xvcjogI2Y4ZjlmYTt9XG4gICAgLmxpYnMtdWktYmctbGlzdC1ob3Zlci1hY3RpdmU6YWN0aXZlIHtiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1saWJzLXVpLWNvbG9yLWxpZ2h0LTMsICNmNGY4ZmYpO31cbiAgICAubGlicy11aS10ZXh0LWVycm9yIHtjb2xvcjogdmFyKC0tbGlicy11aS1jb2xvci10ZXh0LWVycm9yLCAjZmY1NDU0KTsgIWltcG9ydGFudH1cbiAgICAubGlicy11aS10ZXh0LWVycm9yOjpiZWZvcmUge2NvbG9yOiB2YXIoLS1saWJzLXVpLWNvbG9yLXRleHQtZXJyb3IsICNmZjU0NTQpO31cbiAgICAubGlicy11aS1kaXNhYmxlIHtjdXJzb3I6IGRlZmF1bHQgIWltcG9ydGFudDt0ZXh0LWRlY29yYXRpb246IG5vbmU7Y29sb3I6dmFyKC0tbGlicy11aS1jb2xvci10ZXh0LWRpc2FibGUsICNjZGQwZDYpICFpbXBvcnRhbnR9XG4gICAgLmxpYnMtdWktZGlzYWJsZTo6YmVmb3JlIHtjb2xvcjp2YXIoLS1saWJzLXVpLWNvbG9yLXRleHQtZGlzYWJsZSwgIzljYTJhZCkgIWltcG9ydGFudH1cbiAgICAubGlicy11aS1kaXNhYmxlLWJhY2tncm91bmR7YmFja2dyb3VuZDogdmFyKC0tbGlicy11aS1jb2xvci1iYWNrZ3JvdW5kLWRpc2FibGUsICNmOGY5ZmEpICFpbXBvcnRhbnQ7fVxuICAgIC5saWJzLXVpLWRpc2FibGUtYWN0aXZlIHtjb2xvcjp2YXIoLS1saWJzLXVpLWNvbG9yLWxpZ2h0LTQsIzkxYjdmYSkgIWltcG9ydGFudH1cbiAgICAubGlicy11aS1kaXNhYmxlLWFjdGl2ZTo6YmVmb3JlIHtjb2xvcjp2YXIoLS1saWJzLXVpLWNvbG9yLWxpZ2h0LTQsIzkxYjdmYSkgIWltcG9ydGFudH1cbiAgICAubGlicy11aS1yZWFkb25seSB7Y3Vyc29yOiBkZWZhdWx0ICFpbXBvcnRhbnQ7Y29sb3I6dmFyKC0tbGlicy11aS1jb2xvci10ZXh0LXJlYWRvbmx5LCAjMDcxNjMxKSAhaW1wb3J0YW50O31cbiAgICAubGlicy11aS1yZWFkb25seTo6YmVmb3JlIHtjb2xvcjp2YXIoLS1saWJzLXVpLWNvbG9yLXRleHQtcmVhZG9ubHksICMwNzE2MzEpICFpbXBvcnRhbnQ7fVxuICAgIC5saWJzLXVpLXJlYWRvbmx5LWJhY2tncm91bmR7YmFja2dyb3VuZDogdmFyKC0tbGlicy11aS1jb2xvci1iYWNrZ3JvdW5kLXJlYWRvbmx5LCAjZjhmOWZhKSAhaW1wb3J0YW50O31cbiAgYDtcblxuICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kKHRoaXMuc3R5bGVDbGFzc0dsb2JhbEVsKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uZmlnU3RyaW5nKCkge1xuICAgIGNvbnN0IHByb3RvdHlwZSA9IFN0cmluZy5wcm90b3R5cGUgYXMgYW55O1xuICAgIHByb3RvdHlwZS5yZXBsYWNlQXQgPSBmdW5jdGlvbiAoaW5kZXg6IG51bWJlciwgcmVwbGFjZW1lbnQ6IHN0cmluZykge1xuICAgICAgY29uc3QgdmFsdWVzID0gdGhpcy5zcGxpdCgnJyk7XG5cbiAgICAgIHZhbHVlc1tpbmRleF0gPSByZXBsYWNlbWVudDtcblxuICAgICAgcmV0dXJuIHZhbHVlcy5qb2luKCcnKTtcbiAgICB9XG5cbiAgICBwcm90b3R5cGUucmVwbGFjZUFsbCA9IGZ1bmN0aW9uIChpbmRleDogbnVtYmVyLCBzZXBhcmF0b3I6IHN0cmluZywgcmVwbGFjZW1lbnQ6IHN0cmluZykge1xuICAgICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKHNlcGFyYXRvciwgJ2cnKTtcblxuICAgICAgcmV0dXJuIGAke3RoaXMuc3Vic3RyKDAsIGluZGV4KX0ke3RoaXMuc3Vic3RyKGluZGV4ICsgMSArIChyZXBsYWNlbWVudD8ubGVuZ3RoIHx8IDApKS5yZXBsYWNlKHJlZ2V4LCByZXBsYWNlbWVudCl9YDtcbiAgICB9XG5cbiAgICBwcm90b3R5cGUub2NjdXJyZW5jZXNCeUNoYXJhY3RlciA9IGZ1bmN0aW9uIChjaGFyYWN0ZXI6IHN0cmluZyk6IG51bWJlciB7XG4gICAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLnNwbGl0KCcnKTtcblxuICAgICAgaWYgKCF2YWx1ZXMgfHwgIXZhbHVlcy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB2YWx1ZXMuZmlsdGVyKChjaGFyOiBzdHJpbmcpID0+IGNoYXIgPT09IGNoYXJhY3RlcikubGVuZ3RoO1xuICAgIH1cblxuICAgIHByb3RvdHlwZS5pbmRleGVzT2ZDaGFyYWN0ZXIgPSBmdW5jdGlvbiAoY2hhcmFjdGVyOiBzdHJpbmcpOiBBcnJheTxudW1iZXI+IHtcbiAgICAgIGNvbnN0IHZhbHVlczogQXJyYXk8c3RyaW5nPiA9IHRoaXMuc3BsaXQoJycpO1xuICAgICAgY29uc3QgaW5kZXhlczogQXJyYXk8bnVtYmVyPiA9IFtdO1xuXG4gICAgICBpZiAoIXZhbHVlcyB8fCAhdmFsdWVzLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gaW5kZXhlcztcbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3QgaW5kZXhWYWx1ZSBpbiB2YWx1ZXMpIHtcbiAgICAgICAgaWYgKHZhbHVlc1tpbmRleFZhbHVlXSA9PT0gY2hhcmFjdGVyKSB7XG4gICAgICAgICAgaW5kZXhlcy5wdXNoKCtpbmRleFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gaW5kZXhlcztcbiAgICB9XG5cblxuICAgIHByb3RvdHlwZS5pbmRleGVzQnlTdHJpbmcgPSBmdW5jdGlvbiAoc3RyOiBzdHJpbmcpOiBBcnJheTxudW1iZXI+IHtcbiAgICAgIGNvbnN0IHZhbHVlczogQXJyYXk8c3RyaW5nPiA9IHRoaXMgYXMgYW55O1xuICAgICAgY29uc3QgaW5kZXhlczogQXJyYXk8bnVtYmVyPiA9IFtdO1xuXG4gICAgICBpZiAoIXZhbHVlcyB8fCAhdmFsdWVzLmxlbmd0aCB8fCAhc3RyIHx8ICFzdHIubGVuZ3RoIHx8IHZhbHVlcy5sZW5ndGggPCBzdHIubGVuZ3RoKSB7XG5cbiAgICAgICAgcmV0dXJuIGluZGV4ZXM7XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IGluZGV4VmFsdWUgaW4gdmFsdWVzKSB7XG4gICAgICAgIGlmICh2YWx1ZXNbaW5kZXhWYWx1ZV0gIT09IHN0clswXSB8fCAoKCtpbmRleFZhbHVlKSArIHN0ci5sZW5ndGgpID4gdmFsdWVzLmxlbmd0aCkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBpbmRleCBpbiBzdHIuc3BsaXQoJycpKSB7XG5cbiAgICAgICAgICBpZiAodmFsdWVzWygraW5kZXhWYWx1ZSkgKyAoK2luZGV4KV0gIT09IHN0cltpbmRleF0pIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpbmRleGVzLnB1c2goK2luZGV4VmFsdWUpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaW5kZXhlcztcbiAgICB9XG4gIH1cblxufVxuIl19
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { HttpClient, provideHttpClient } from "@angular/common/http";
|
|
2
|
+
import { TranslateService, TranslateStore, TranslateLoader, TranslateCompiler, TranslateParser, MissingTranslationHandler, TranslateModule } from "@ngx-translate/core";
|
|
3
|
+
import { TranslateMessageFormatCompiler } from "ngx-translate-messageformat-compiler";
|
|
4
|
+
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
|
|
5
|
+
import { importProvidersFrom } from "@angular/core";
|
|
6
|
+
import { LibsUiTranslateService } from "./translate.service";
|
|
7
|
+
let link = '/i18n/';
|
|
8
|
+
const httpLoaderFactory = (http) => {
|
|
9
|
+
return new TranslateHttpLoader(http, link, '.json');
|
|
10
|
+
};
|
|
11
|
+
const TranslateForRootConfig = {
|
|
12
|
+
loader: {
|
|
13
|
+
provide: TranslateLoader,
|
|
14
|
+
useFactory: httpLoaderFactory,
|
|
15
|
+
deps: [HttpClient]
|
|
16
|
+
},
|
|
17
|
+
compiler: {
|
|
18
|
+
provide: TranslateCompiler,
|
|
19
|
+
useClass: TranslateMessageFormatCompiler,
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
const TranslateProviderConfig = {
|
|
23
|
+
provide: TranslateService,
|
|
24
|
+
useFactory: (store, currentLoader, compiler, parser, missingTranslationHandler, useDefaultLang, isolate, extend, defaultLanguage) => {
|
|
25
|
+
return new LibsUiTranslateService(store, currentLoader, compiler, parser, missingTranslationHandler, useDefaultLang, isolate, extend, defaultLanguage);
|
|
26
|
+
},
|
|
27
|
+
deps: [TranslateStore, TranslateLoader, TranslateCompiler, TranslateParser, MissingTranslationHandler],
|
|
28
|
+
};
|
|
29
|
+
export const GET_CONFIG_TRANSLATE = (linkFileI18n) => {
|
|
30
|
+
if (linkFileI18n !== undefined) {
|
|
31
|
+
link = linkFileI18n;
|
|
32
|
+
}
|
|
33
|
+
return [
|
|
34
|
+
provideHttpClient(),
|
|
35
|
+
importProvidersFrom(TranslateModule.forRoot(TranslateForRootConfig)),
|
|
36
|
+
TranslateProviderConfig
|
|
37
|
+
];
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLXRyYW5zbGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvc2VydmljZXMvY29uZmlnLXByb2plY3Qvc3JjL2NvbmZpZy10cmFuc2xhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSx5QkFBeUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4SyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN0RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0QsSUFBSSxJQUFJLEdBQUcsUUFBUSxDQUFDO0FBQ3BCLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxJQUFnQixFQUF1QixFQUFFO0lBQ2xFLE9BQU8sSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ3RELENBQUMsQ0FBQztBQUdGLE1BQU0sc0JBQXNCLEdBQUc7SUFDN0IsTUFBTSxFQUFFO1FBQ04sT0FBTyxFQUFFLGVBQWU7UUFDeEIsVUFBVSxFQUFFLGlCQUFpQjtRQUM3QixJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUM7S0FDbkI7SUFDRCxRQUFRLEVBQUU7UUFDUixPQUFPLEVBQUUsaUJBQWlCO1FBQzFCLFFBQVEsRUFBRSw4QkFBOEI7S0FDekM7Q0FDRixDQUFDO0FBRUYsTUFBTSx1QkFBdUIsR0FBRztJQUM5QixPQUFPLEVBQUUsZ0JBQWdCO0lBQ3pCLFVBQVUsRUFBRSxDQUFDLEtBQXFCLEVBQUUsYUFBOEIsRUFBRSxRQUEyQixFQUFFLE1BQXVCLEVBQUUseUJBQW9ELEVBQUUsY0FBdUIsRUFBRSxPQUFnQixFQUFFLE1BQWUsRUFBRSxlQUF1QixFQUFFLEVBQUU7UUFDclEsT0FBTyxJQUFJLHNCQUFzQixDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSx5QkFBeUIsRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxlQUFlLENBQUMsQ0FBQztJQUN6SixDQUFDO0lBQ0QsSUFBSSxFQUFFLENBQUMsY0FBYyxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUseUJBQXlCLENBQUM7Q0FDdkcsQ0FBQztBQUlGLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsWUFBcUIsRUFBRSxFQUFFO0lBQzVELElBQUksWUFBWSxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQy9CLElBQUksR0FBRyxZQUFZLENBQUM7SUFDdEIsQ0FBQztJQUNELE9BQU87UUFDTCxpQkFBaUIsRUFBRTtRQUNuQixtQkFBbUIsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDcEUsdUJBQXVCO0tBQ3hCLENBQUE7QUFDSCxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBwcm92aWRlSHR0cENsaWVudCB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSwgVHJhbnNsYXRlU3RvcmUsIFRyYW5zbGF0ZUxvYWRlciwgVHJhbnNsYXRlQ29tcGlsZXIsIFRyYW5zbGF0ZVBhcnNlciwgTWlzc2luZ1RyYW5zbGF0aW9uSGFuZGxlciwgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcbmltcG9ydCB7IFRyYW5zbGF0ZU1lc3NhZ2VGb3JtYXRDb21waWxlciB9IGZyb20gXCJuZ3gtdHJhbnNsYXRlLW1lc3NhZ2Vmb3JtYXQtY29tcGlsZXJcIjtcbmltcG9ydCB7IFRyYW5zbGF0ZUh0dHBMb2FkZXIgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9odHRwLWxvYWRlcic7XG5pbXBvcnQgeyBpbXBvcnRQcm92aWRlcnNGcm9tIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IExpYnNVaVRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiLi90cmFuc2xhdGUuc2VydmljZVwiO1xubGV0IGxpbmsgPSAnL2kxOG4vJztcbmNvbnN0IGh0dHBMb2FkZXJGYWN0b3J5ID0gKGh0dHA6IEh0dHBDbGllbnQpOiBUcmFuc2xhdGVIdHRwTG9hZGVyID0+IHtcbiAgcmV0dXJuIG5ldyBUcmFuc2xhdGVIdHRwTG9hZGVyKGh0dHAsIGxpbmssICcuanNvbicpO1xufTtcblxuXG5jb25zdCBUcmFuc2xhdGVGb3JSb290Q29uZmlnID0ge1xuICBsb2FkZXI6IHtcbiAgICBwcm92aWRlOiBUcmFuc2xhdGVMb2FkZXIsXG4gICAgdXNlRmFjdG9yeTogaHR0cExvYWRlckZhY3RvcnksXG4gICAgZGVwczogW0h0dHBDbGllbnRdXG4gIH0sXG4gIGNvbXBpbGVyOiB7XG4gICAgcHJvdmlkZTogVHJhbnNsYXRlQ29tcGlsZXIsXG4gICAgdXNlQ2xhc3M6IFRyYW5zbGF0ZU1lc3NhZ2VGb3JtYXRDb21waWxlcixcbiAgfVxufTtcblxuY29uc3QgVHJhbnNsYXRlUHJvdmlkZXJDb25maWcgPSB7XG4gIHByb3ZpZGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gIHVzZUZhY3Rvcnk6IChzdG9yZTogVHJhbnNsYXRlU3RvcmUsIGN1cnJlbnRMb2FkZXI6IFRyYW5zbGF0ZUxvYWRlciwgY29tcGlsZXI6IFRyYW5zbGF0ZUNvbXBpbGVyLCBwYXJzZXI6IFRyYW5zbGF0ZVBhcnNlciwgbWlzc2luZ1RyYW5zbGF0aW9uSGFuZGxlcjogTWlzc2luZ1RyYW5zbGF0aW9uSGFuZGxlciwgdXNlRGVmYXVsdExhbmc6IGJvb2xlYW4sIGlzb2xhdGU6IGJvb2xlYW4sIGV4dGVuZDogYm9vbGVhbiwgZGVmYXVsdExhbmd1YWdlOiBzdHJpbmcpID0+IHtcbiAgICByZXR1cm4gbmV3IExpYnNVaVRyYW5zbGF0ZVNlcnZpY2Uoc3RvcmUsIGN1cnJlbnRMb2FkZXIsIGNvbXBpbGVyLCBwYXJzZXIsIG1pc3NpbmdUcmFuc2xhdGlvbkhhbmRsZXIsIHVzZURlZmF1bHRMYW5nLCBpc29sYXRlLCBleHRlbmQsIGRlZmF1bHRMYW5ndWFnZSk7XG4gIH0sXG4gIGRlcHM6IFtUcmFuc2xhdGVTdG9yZSwgVHJhbnNsYXRlTG9hZGVyLCBUcmFuc2xhdGVDb21waWxlciwgVHJhbnNsYXRlUGFyc2VyLCBNaXNzaW5nVHJhbnNsYXRpb25IYW5kbGVyXSxcbn07XG5cblxuXG5leHBvcnQgY29uc3QgR0VUX0NPTkZJR19UUkFOU0xBVEUgPSAobGlua0ZpbGVJMThuPzogc3RyaW5nKSA9PiB7XG4gIGlmIChsaW5rRmlsZUkxOG4gIT09IHVuZGVmaW5lZCkge1xuICAgIGxpbmsgPSBsaW5rRmlsZUkxOG47XG4gIH1cbiAgcmV0dXJuIFtcbiAgICBwcm92aWRlSHR0cENsaWVudCgpLFxuICAgIGltcG9ydFByb3ZpZGVyc0Zyb20oVHJhbnNsYXRlTW9kdWxlLmZvclJvb3QoVHJhbnNsYXRlRm9yUm9vdENvbmZpZykpLFxuICAgIFRyYW5zbGF0ZVByb3ZpZGVyQ29uZmlnXG4gIF1cbn0iXX0=
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export const dataTranslation = () => {
|
|
2
|
+
return {
|
|
3
|
+
vi: { "i18n_character": "Ký tự", "i18n_search": "Tìm kiếm", "i18n_color_custom": "Màu tuỳ chỉnh", "i18n_add_new": "Thêm giá trị mới", "i18n_cancel": "Hủy bỏ", "i18n_apply": "Áp dụng" },
|
|
4
|
+
en: { "i18n_character": "character", "i18n_search": "Search", "i18n_color_custom": "Custom theme color", "i18n_add_new": "Add new value", "i18n_cancel": "Cancel", "i18n_apply": "Apply" }
|
|
5
|
+
};
|
|
6
|
+
};
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10cmFuc2xhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvc2VydmljZXMvY29uZmlnLXByb2plY3Qvc3JjL2RhdGEtdHJhbnNsYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLEdBQUcsRUFBRTtJQUNsQyxPQUFPO1FBQ0wsRUFBRSxFQUFFLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUU7UUFDeEwsRUFBRSxFQUFFLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUU7S0FDM0wsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBkYXRhVHJhbnNsYXRpb24gPSAoKSA9PiB7XG4gIHJldHVybiB7XG4gICAgdmk6IHsgXCJpMThuX2NoYXJhY3RlclwiOiBcIkvDvSB04buxXCIsIFwiaTE4bl9zZWFyY2hcIjogXCJUw6xtIGtp4bq/bVwiLCBcImkxOG5fY29sb3JfY3VzdG9tXCI6IFwiTcOgdSB0deG7syBjaOG7iW5oXCIsIFwiaTE4bl9hZGRfbmV3XCI6IFwiVGjDqm0gZ2nDoSB0cuG7iyBt4bubaVwiLCBcImkxOG5fY2FuY2VsXCI6IFwiSOG7p3kgYuG7j1wiLCBcImkxOG5fYXBwbHlcIjogXCLDgXAgZOG7pW5nXCIgfSxcbiAgICBlbjogeyBcImkxOG5fY2hhcmFjdGVyXCI6IFwiY2hhcmFjdGVyXCIsIFwiaTE4bl9zZWFyY2hcIjogXCJTZWFyY2hcIiwgXCJpMThuX2NvbG9yX2N1c3RvbVwiOiBcIkN1c3RvbSB0aGVtZSBjb2xvclwiLCBcImkxOG5fYWRkX25ld1wiOiBcIkFkZCBuZXcgdmFsdWVcIiwgXCJpMThuX2NhbmNlbFwiOiBcIkNhbmNlbFwiLCBcImkxOG5fYXBwbHlcIjogXCJBcHBseVwiIH1cbiAgfTtcbn07Il19
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from './config-project.service';
|
|
2
|
+
export * from './config-project.interface';
|
|
3
|
+
export * from './config-translate';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL3NlcnZpY2VzL2NvbmZpZy1wcm9qZWN0L3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29uZmlnLXByb2plY3Quc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbmZpZy1wcm9qZWN0LmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbmZpZy10cmFuc2xhdGUnO1xuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlicy11aS1zZXJ2aWNlcy1jb25maWctcHJvamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvc2VydmljZXMvY29uZmlnLXByb2plY3Qvc3JjL2xpYnMtdWktc2VydmljZXMtY29uZmlnLXByb2plY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
+
import { computed, inject } from '@angular/core';
|
|
3
|
+
import { TranslateService } from '@ngx-translate/core';
|
|
4
|
+
import { take } from 'rxjs';
|
|
5
|
+
import { LibsUiConfigProjectService } from './config-project.service';
|
|
6
|
+
import { UtilsCache, get } from '@libs-ui/utils';
|
|
7
|
+
import { dataTranslation } from './data-translation';
|
|
8
|
+
export class LibsUiTranslateService extends TranslateService {
|
|
9
|
+
configProjectService = inject(LibsUiConfigProjectService);
|
|
10
|
+
interpolateParam = computed(() => this.configProjectService.ConfigDefaultInterpolateParam());
|
|
11
|
+
constructor(store, currentLoader, compiler, parser, missingTranslationHandler, useDefaultLang, isolate, extend, defaultLanguage) {
|
|
12
|
+
super(store, currentLoader, compiler, parser, missingTranslationHandler, useDefaultLang, isolate, extend, defaultLanguage);
|
|
13
|
+
}
|
|
14
|
+
instant(key, interpolateParams) {
|
|
15
|
+
const val = super.instant(key, { ...this.interpolateParam()[UtilsCache.getLang()], ...(interpolateParams || {}) });
|
|
16
|
+
return val;
|
|
17
|
+
}
|
|
18
|
+
get(key, interpolateParams) {
|
|
19
|
+
return super.get(key, { ...this.interpolateParam()[UtilsCache.getLang()], ...(interpolateParams || {}) });
|
|
20
|
+
}
|
|
21
|
+
getParsedResult(translations, key, interpolateParams) {
|
|
22
|
+
return super.getParsedResult(translations, key, { ...this.interpolateParam()[UtilsCache.getLang()], ...(interpolateParams || {}) });
|
|
23
|
+
}
|
|
24
|
+
use(lang) {
|
|
25
|
+
const event = super.use(lang);
|
|
26
|
+
this.get(lang).pipe(take(1)).subscribe(() => super.setTranslation(lang, get(dataTranslation(), lang), true));
|
|
27
|
+
UtilsCache.setLang(lang);
|
|
28
|
+
return event;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL3NlcnZpY2VzL2NvbmZpZy1wcm9qZWN0L3NyYy90cmFuc2xhdGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFrRixnQkFBZ0IsRUFBa0IsTUFBTSxxQkFBcUIsQ0FBQztBQUN2SixPQUFPLEVBQWMsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXJELE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxnQkFBZ0I7SUFDbEQsb0JBQW9CLEdBQUcsTUFBTSxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFDMUQsZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyw2QkFBNkIsRUFBRSxDQUFDLENBQUM7SUFDckcsWUFBWSxLQUFxQixFQUFFLGFBQThCLEVBQUUsUUFBMkIsRUFBRSxNQUF1QixFQUFFLHlCQUFvRCxFQUFFLGNBQXVCLEVBQUUsT0FBZ0IsRUFBRSxNQUFlLEVBQUUsZUFBdUI7UUFDaFEsS0FBSyxDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSx5QkFBeUIsRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxlQUFlLENBQUMsQ0FBQztJQUM3SCxDQUFDO0lBQ2UsT0FBTyxDQUFDLEdBQTJCLEVBQUUsaUJBQXdDO1FBQzNGLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsaUJBQWlCLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ25ILE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVlLEdBQUcsQ0FBQyxHQUEyQixFQUFFLGlCQUF3QztRQUN2RixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsaUJBQWlCLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzVHLENBQUM7SUFFZSxlQUFlLENBQUMsWUFBaUIsRUFBRSxHQUFRLEVBQUUsaUJBQXdDO1FBQ25HLE9BQU8sS0FBSyxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsaUJBQWlCLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3RJLENBQUM7SUFFZSxHQUFHLENBQUMsSUFBWTtRQUM5QixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsZUFBZSxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUM3RyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgY29tcHV0ZWQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWlzc2luZ1RyYW5zbGF0aW9uSGFuZGxlciwgVHJhbnNsYXRlQ29tcGlsZXIsIFRyYW5zbGF0ZUxvYWRlciwgVHJhbnNsYXRlUGFyc2VyLCBUcmFuc2xhdGVTZXJ2aWNlLCBUcmFuc2xhdGVTdG9yZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGFrZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTGlic1VpQ29uZmlnUHJvamVjdFNlcnZpY2UgfSBmcm9tICcuL2NvbmZpZy1wcm9qZWN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgVXRpbHNDYWNoZSwgZ2V0IH0gZnJvbSAnQGxpYnMtdWkvdXRpbHMnO1xuaW1wb3J0IHsgZGF0YVRyYW5zbGF0aW9uIH0gZnJvbSAnLi9kYXRhLXRyYW5zbGF0aW9uJztcblxuZXhwb3J0IGNsYXNzIExpYnNVaVRyYW5zbGF0ZVNlcnZpY2UgZXh0ZW5kcyBUcmFuc2xhdGVTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBjb25maWdQcm9qZWN0U2VydmljZSA9IGluamVjdChMaWJzVWlDb25maWdQcm9qZWN0U2VydmljZSk7XG4gIHByaXZhdGUgaW50ZXJwb2xhdGVQYXJhbSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnUHJvamVjdFNlcnZpY2UuQ29uZmlnRGVmYXVsdEludGVycG9sYXRlUGFyYW0oKSk7XG4gIGNvbnN0cnVjdG9yKHN0b3JlOiBUcmFuc2xhdGVTdG9yZSwgY3VycmVudExvYWRlcjogVHJhbnNsYXRlTG9hZGVyLCBjb21waWxlcjogVHJhbnNsYXRlQ29tcGlsZXIsIHBhcnNlcjogVHJhbnNsYXRlUGFyc2VyLCBtaXNzaW5nVHJhbnNsYXRpb25IYW5kbGVyOiBNaXNzaW5nVHJhbnNsYXRpb25IYW5kbGVyLCB1c2VEZWZhdWx0TGFuZzogYm9vbGVhbiwgaXNvbGF0ZTogYm9vbGVhbiwgZXh0ZW5kOiBib29sZWFuLCBkZWZhdWx0TGFuZ3VhZ2U6IHN0cmluZykge1xuICAgIHN1cGVyKHN0b3JlLCBjdXJyZW50TG9hZGVyLCBjb21waWxlciwgcGFyc2VyLCBtaXNzaW5nVHJhbnNsYXRpb25IYW5kbGVyLCB1c2VEZWZhdWx0TGFuZywgaXNvbGF0ZSwgZXh0ZW5kLCBkZWZhdWx0TGFuZ3VhZ2UpO1xuICB9XG4gIHB1YmxpYyBvdmVycmlkZSBpbnN0YW50KGtleTogc3RyaW5nIHwgQXJyYXk8c3RyaW5nPiwgaW50ZXJwb2xhdGVQYXJhbXM/OiBOb25OdWxsYWJsZTx1bmtub3duPik6IHN0cmluZyB8IGFueSB7XG4gICAgY29uc3QgdmFsID0gc3VwZXIuaW5zdGFudChrZXksIHsgLi4udGhpcy5pbnRlcnBvbGF0ZVBhcmFtKClbVXRpbHNDYWNoZS5nZXRMYW5nKCldLCAuLi4oaW50ZXJwb2xhdGVQYXJhbXMgfHwge30pIH0pO1xuICAgIHJldHVybiB2YWw7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgZ2V0KGtleTogc3RyaW5nIHwgQXJyYXk8c3RyaW5nPiwgaW50ZXJwb2xhdGVQYXJhbXM/OiBOb25OdWxsYWJsZTx1bmtub3duPik6IE9ic2VydmFibGU8c3RyaW5nIHwgYW55PiB7XG4gICAgcmV0dXJuIHN1cGVyLmdldChrZXksIHsgLi4udGhpcy5pbnRlcnBvbGF0ZVBhcmFtKClbVXRpbHNDYWNoZS5nZXRMYW5nKCldLCAuLi4oaW50ZXJwb2xhdGVQYXJhbXMgfHwge30pIH0pO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGdldFBhcnNlZFJlc3VsdCh0cmFuc2xhdGlvbnM6IGFueSwga2V5OiBhbnksIGludGVycG9sYXRlUGFyYW1zPzogTm9uTnVsbGFibGU8dW5rbm93bj4pOiBhbnkge1xuICAgIHJldHVybiBzdXBlci5nZXRQYXJzZWRSZXN1bHQodHJhbnNsYXRpb25zLCBrZXksIHsgLi4udGhpcy5pbnRlcnBvbGF0ZVBhcmFtKClbVXRpbHNDYWNoZS5nZXRMYW5nKCldLCAuLi4oaW50ZXJwb2xhdGVQYXJhbXMgfHwge30pIH0pO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIHVzZShsYW5nOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IGV2ZW50ID0gc3VwZXIudXNlKGxhbmcpO1xuICAgIHRoaXMuZ2V0KGxhbmcpLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHN1cGVyLnNldFRyYW5zbGF0aW9uKGxhbmcsIGdldChkYXRhVHJhbnNsYXRpb24oKSwgbGFuZyksIHRydWUpKTtcbiAgICBVdGlsc0NhY2hlLnNldExhbmcobGFuZyk7XG4gICAgcmV0dXJuIGV2ZW50O1xuICB9XG59Il19
|