@entropic-bond/localize-react 1.1.0 → 1.3.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/lib/index.d.ts +0 -1
- package/lib/index.js +5 -2
- package/lib/index.js.map +1 -1
- package/lib/locale.d.ts +7 -1
- package/lib/locale.js +39 -6
- package/lib/locale.js.map +1 -1
- package/lib/locale.spec.js +123 -0
- package/lib/locale.spec.js.map +1 -1
- package/lib/localized-component.d.ts +6 -1
- package/lib/localized-component.js +17 -4
- package/lib/localized-component.js.map +1 -1
- package/lib/react-localizer.spec.js +83 -29
- package/lib/react-localizer.spec.js.map +1 -1
- package/package.json +14 -14
- package/lib/utils.d.ts +0 -4
- package/lib/utils.js +0 -12
- package/lib/utils.js.map +0 -1
- package/lib/utils.spec.d.ts +0 -1
- package/lib/utils.spec.js +0 -30
- package/lib/utils.spec.js.map +0 -1
package/lib/index.d.ts
CHANGED
package/lib/index.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -12,5 +16,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
12
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
17
|
__exportStar(require("./locale"), exports);
|
|
14
18
|
__exportStar(require("./localized-component"), exports);
|
|
15
|
-
__exportStar(require("./utils"), exports);
|
|
16
19
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAwB;AACxB,wDAAqC"}
|
package/lib/locale.d.ts
CHANGED
|
@@ -5,16 +5,22 @@ interface LocaleConfig {
|
|
|
5
5
|
export interface LocaleEntries {
|
|
6
6
|
[key: string]: string;
|
|
7
7
|
}
|
|
8
|
+
declare type Rule = (word: string, locale: string) => string;
|
|
8
9
|
export declare class Locale {
|
|
9
10
|
private constructor();
|
|
10
11
|
static get instance(): Locale;
|
|
11
|
-
|
|
12
|
+
pluralize(word: string, amount?: number, pluralizer?: (word: string, locale: string) => string): Promise<any>;
|
|
12
13
|
static config(config: LocaleConfig): void;
|
|
13
14
|
get(component: string): Promise<{}>;
|
|
14
15
|
private fetchCache;
|
|
15
16
|
private getLocaleFilePath;
|
|
17
|
+
static useRule(rule: Rule, locale: string): void;
|
|
18
|
+
static rules: {
|
|
19
|
+
endsY: (word: string, locale: string) => string;
|
|
20
|
+
};
|
|
16
21
|
private static _instance;
|
|
17
22
|
private static _registeredConfig;
|
|
23
|
+
private static _registeredRules;
|
|
18
24
|
private _lang;
|
|
19
25
|
private _localePath;
|
|
20
26
|
private _pendingPromise;
|
package/lib/locale.js
CHANGED
|
@@ -67,11 +67,31 @@ var Locale = /** @class */ (function () {
|
|
|
67
67
|
enumerable: false,
|
|
68
68
|
configurable: true
|
|
69
69
|
});
|
|
70
|
-
Locale.pluralize = function (word, amount, pluralizer) {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
70
|
+
Locale.prototype.pluralize = function (word, amount, pluralizer) {
|
|
71
|
+
var _a;
|
|
72
|
+
if (amount === void 0) { amount = 0; }
|
|
73
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
74
|
+
var plural, i, rules;
|
|
75
|
+
return __generator(this, function (_b) {
|
|
76
|
+
switch (_b.label) {
|
|
77
|
+
case 0:
|
|
78
|
+
if (amount === 1)
|
|
79
|
+
return [2 /*return*/, word];
|
|
80
|
+
return [4 /*yield*/, this.get('pluralizeExceptions')];
|
|
81
|
+
case 1:
|
|
82
|
+
plural = (_a = (_b.sent())) === null || _a === void 0 ? void 0 : _a[word];
|
|
83
|
+
if (plural)
|
|
84
|
+
return [2 /*return*/, plural];
|
|
85
|
+
plural = pluralizer === null || pluralizer === void 0 ? void 0 : pluralizer(word, this._lang);
|
|
86
|
+
i = 0;
|
|
87
|
+
rules = Locale._registeredRules[this._lang];
|
|
88
|
+
while (!plural && rules && i < rules.length) {
|
|
89
|
+
plural = rules[i++](word, this._lang);
|
|
90
|
+
}
|
|
91
|
+
return [2 /*return*/, plural || word + 's'];
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
});
|
|
75
95
|
};
|
|
76
96
|
Locale.config = function (config) {
|
|
77
97
|
this._registeredConfig = __assign(__assign({}, this._registeredConfig), config);
|
|
@@ -118,12 +138,25 @@ var Locale = /** @class */ (function () {
|
|
|
118
138
|
};
|
|
119
139
|
Locale.prototype.getLocaleFilePath = function (locale) {
|
|
120
140
|
if (this._lang.indexOf('http') < 0) {
|
|
121
|
-
return this._localePath
|
|
141
|
+
return "".concat(this._localePath, "/").concat(locale || this._lang, ".json");
|
|
122
142
|
}
|
|
123
143
|
return this._lang;
|
|
124
144
|
};
|
|
145
|
+
Locale.useRule = function (rule, locale) {
|
|
146
|
+
if (!Locale._registeredRules[locale])
|
|
147
|
+
Locale._registeredRules[locale] = [];
|
|
148
|
+
Locale._registeredRules[locale].push(rule);
|
|
149
|
+
};
|
|
150
|
+
Locale.rules = {
|
|
151
|
+
endsY: function (word, locale) {
|
|
152
|
+
if (locale !== 'en')
|
|
153
|
+
return;
|
|
154
|
+
return word.slice(-1) === 'y' ? word.slice(0, -1) + 'ies' : word;
|
|
155
|
+
}
|
|
156
|
+
};
|
|
125
157
|
Locale._instance = null;
|
|
126
158
|
Locale._registeredConfig = {};
|
|
159
|
+
Locale._registeredRules = {};
|
|
127
160
|
return Locale;
|
|
128
161
|
}());
|
|
129
162
|
exports.Locale = Locale;
|
package/lib/locale.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locale.js","sourceRoot":"","sources":["../src/locale.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"locale.js","sourceRoot":"","sources":["../src/locale.ts"],"names":[],"mappings":"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"}
|
package/lib/locale.spec.js
CHANGED
|
@@ -52,6 +52,10 @@ describe('Locale', function () {
|
|
|
52
52
|
"moduleA": {
|
|
53
53
|
"bye": "Bye",
|
|
54
54
|
"goodMorning": "Good Morning"
|
|
55
|
+
},
|
|
56
|
+
"pluralizeExceptions": {
|
|
57
|
+
"mouse": "mice",
|
|
58
|
+
"foot": "feet"
|
|
55
59
|
}
|
|
56
60
|
};
|
|
57
61
|
});
|
|
@@ -114,5 +118,124 @@ describe('Locale', function () {
|
|
|
114
118
|
return [2 /*return*/];
|
|
115
119
|
});
|
|
116
120
|
}); });
|
|
121
|
+
describe('Pluralizer', function () {
|
|
122
|
+
it('should pluralize by default', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
123
|
+
var _a;
|
|
124
|
+
return __generator(this, function (_b) {
|
|
125
|
+
switch (_b.label) {
|
|
126
|
+
case 0:
|
|
127
|
+
_a = expect;
|
|
128
|
+
return [4 /*yield*/, locale_1.Locale.instance.pluralize('apple')];
|
|
129
|
+
case 1:
|
|
130
|
+
_a.apply(void 0, [_b.sent()]).toEqual('apples');
|
|
131
|
+
return [2 /*return*/];
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
}); });
|
|
135
|
+
it('should pluralize exceptions', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
136
|
+
var _a;
|
|
137
|
+
return __generator(this, function (_b) {
|
|
138
|
+
switch (_b.label) {
|
|
139
|
+
case 0:
|
|
140
|
+
_a = expect;
|
|
141
|
+
return [4 /*yield*/, locale_1.Locale.instance.pluralize('mouse')];
|
|
142
|
+
case 1:
|
|
143
|
+
_a.apply(void 0, [_b.sent()]).toEqual('mice');
|
|
144
|
+
return [2 /*return*/];
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
}); });
|
|
148
|
+
it('should not pluralize on amount equal to 1', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
149
|
+
var _a;
|
|
150
|
+
return __generator(this, function (_b) {
|
|
151
|
+
switch (_b.label) {
|
|
152
|
+
case 0:
|
|
153
|
+
_a = expect;
|
|
154
|
+
return [4 /*yield*/, locale_1.Locale.instance.pluralize('apple', 1)];
|
|
155
|
+
case 1:
|
|
156
|
+
_a.apply(void 0, [_b.sent()]).toEqual('apple');
|
|
157
|
+
return [2 /*return*/];
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
}); });
|
|
161
|
+
it('should pluralize on amounts greather than 1', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
162
|
+
var _a, _b;
|
|
163
|
+
return __generator(this, function (_c) {
|
|
164
|
+
switch (_c.label) {
|
|
165
|
+
case 0:
|
|
166
|
+
_a = expect;
|
|
167
|
+
return [4 /*yield*/, locale_1.Locale.instance.pluralize('apple', 2)];
|
|
168
|
+
case 1:
|
|
169
|
+
_a.apply(void 0, [_c.sent()]).toEqual('apples');
|
|
170
|
+
_b = expect;
|
|
171
|
+
return [4 /*yield*/, locale_1.Locale.instance.pluralize('apple', 3)];
|
|
172
|
+
case 2:
|
|
173
|
+
_b.apply(void 0, [_c.sent()]).toEqual('apples');
|
|
174
|
+
return [2 /*return*/];
|
|
175
|
+
}
|
|
176
|
+
});
|
|
177
|
+
}); });
|
|
178
|
+
it('should pluralize on negative amounts', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
179
|
+
var _a, _b, _c;
|
|
180
|
+
return __generator(this, function (_d) {
|
|
181
|
+
switch (_d.label) {
|
|
182
|
+
case 0:
|
|
183
|
+
_a = expect;
|
|
184
|
+
return [4 /*yield*/, locale_1.Locale.instance.pluralize('apple', -1)];
|
|
185
|
+
case 1:
|
|
186
|
+
_a.apply(void 0, [_d.sent()]).toEqual('apples');
|
|
187
|
+
_b = expect;
|
|
188
|
+
return [4 /*yield*/, locale_1.Locale.instance.pluralize('apple', -2)];
|
|
189
|
+
case 2:
|
|
190
|
+
_b.apply(void 0, [_d.sent()]).toEqual('apples');
|
|
191
|
+
_c = expect;
|
|
192
|
+
return [4 /*yield*/, locale_1.Locale.instance.pluralize('apple', -3)];
|
|
193
|
+
case 3:
|
|
194
|
+
_c.apply(void 0, [_d.sent()]).toEqual('apples');
|
|
195
|
+
return [2 /*return*/];
|
|
196
|
+
}
|
|
197
|
+
});
|
|
198
|
+
}); });
|
|
199
|
+
it('should pluralize on 0 amount', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
200
|
+
var _a;
|
|
201
|
+
return __generator(this, function (_b) {
|
|
202
|
+
switch (_b.label) {
|
|
203
|
+
case 0:
|
|
204
|
+
_a = expect;
|
|
205
|
+
return [4 /*yield*/, locale_1.Locale.instance.pluralize('apple', 0)];
|
|
206
|
+
case 1:
|
|
207
|
+
_a.apply(void 0, [_b.sent()]).toEqual('apples');
|
|
208
|
+
return [2 /*return*/];
|
|
209
|
+
}
|
|
210
|
+
});
|
|
211
|
+
}); });
|
|
212
|
+
it('should use provided pluralize function', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
213
|
+
var _a;
|
|
214
|
+
return __generator(this, function (_b) {
|
|
215
|
+
switch (_b.label) {
|
|
216
|
+
case 0:
|
|
217
|
+
_a = expect;
|
|
218
|
+
return [4 /*yield*/, locale_1.Locale.instance.pluralize('city', 0, locale_1.Locale.rules.endsY)];
|
|
219
|
+
case 1:
|
|
220
|
+
_a.apply(void 0, [_b.sent()]).toEqual('cities');
|
|
221
|
+
return [2 /*return*/];
|
|
222
|
+
}
|
|
223
|
+
});
|
|
224
|
+
}); });
|
|
225
|
+
it('should use rules', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
226
|
+
var _a;
|
|
227
|
+
return __generator(this, function (_b) {
|
|
228
|
+
switch (_b.label) {
|
|
229
|
+
case 0:
|
|
230
|
+
locale_1.Locale.useRule(locale_1.Locale.rules.endsY, 'en');
|
|
231
|
+
_a = expect;
|
|
232
|
+
return [4 /*yield*/, locale_1.Locale.instance.pluralize('city')];
|
|
233
|
+
case 1:
|
|
234
|
+
_a.apply(void 0, [_b.sent()]).toEqual('cities');
|
|
235
|
+
return [2 /*return*/];
|
|
236
|
+
}
|
|
237
|
+
});
|
|
238
|
+
}); });
|
|
239
|
+
});
|
|
117
240
|
});
|
|
118
241
|
//# sourceMappingURL=locale.spec.js.map
|
package/lib/locale.spec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locale.spec.js","sourceRoot":"","sources":["../src/locale.spec.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0DAAkC;AAClC,mCAAiC;AAEjC,QAAQ,CAAE,QAAQ,EAAE;IACnB,UAAU,CAAC;QACV,eAAM,CAAC,MAAM,CAAC;YACb,UAAU,EAAE,SAAS;SACrB,CAAC,CAAA;QACF,oBAAS,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAAO,OAAO;gBAC/C,IAAI,EAAE,OAAO;gBACb,SAAS,EAAE;oBACV,KAAK,EAAE,KAAK;oBACZ,aAAa,EAAE,cAAc;iBAC7B;aACD,CAAA;QAAA,CAAC,CAAC,CAAA;QACH,oBAAS,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAAO,OAAO;gBAC/C,IAAI,EAAE,SAAS;aACf,CAAA;QAAA,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,SAAS,CAAE,cAAM,OAAA,oBAAS,CAAC,OAAO,EAAE,EAAnB,CAAmB,CAAE,CAAA;IAEtC,EAAE,CAAE,yBAAyB,EAAE;;;;;oBAC9B,KAAA,MAAM,CAAA;oBAAE,qBAAM,eAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAA;;oBAAvC,kBAAQ,SAA+B,EAAE,CAAC,OAAO,CAAE,OAAO,CAAE,CAAA;;;;SAC5D,CAAC,CAAA;IAEF,EAAE,CAAE,sBAAsB,EAAE;;;;;oBAC3B,eAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;oBAC/B,KAAA,MAAM,CAAA;oBAAE,qBAAM,eAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAA;;oBAAvC,kBAAQ,SAA+B,EAAE,CAAC,OAAO,CAAE,SAAS,CAAE,CAAA;;;;SAC9D,CAAC,CAAA;IAEF,EAAE,CAAE,+BAA+B,EAAE;;;;;oBACpC,eAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;oBACb,qBAAM,eAAM,CAAC,QAAQ,CAAC,GAAG,CAAE,SAAS,CAAE,EAAA;;oBAAlD,MAAM,GAAM,SAAsC;oBACxD,MAAM,CAAE,MAAM,CAAE,KAAK,CAAE,CAAE,CAAC,OAAO,CAAE,KAAK,CAAE,CAAA;oBAC1C,MAAM,CAAE,MAAM,CAAE,aAAa,CAAE,CAAE,CAAC,OAAO,CAAE,cAAc,CAAE,CAAA;;;;SAC3D,CAAC,CAAA;IAEF,EAAE,CAAE,yEAAyE,EAAE;;YAC9E,MAAM,CAAE,oBAAS,CAAC,KAAK,EAAE,CAAC,MAAM,CAAE,CAAC,IAAI,CAAE,CAAC,CAAE,CAAA;YAC5C,eAAM,CAAC,QAAQ,CAAC,GAAG,CAAE,SAAS,CAAE,CAAA;YAChC,eAAM,CAAC,QAAQ,CAAC,GAAG,CAAE,IAAI,CAAE,CAAA;YAC3B,eAAM,CAAC,QAAQ,CAAC,GAAG,CAAE,SAAS,CAAE,CAAC,KAAK,CAAC,CAAA;YACvC,MAAM,CAAE,oBAAS,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAE,CAAC,IAAI,CAAE,CAAC,CAAE,CAAA;;;SAC7D,CAAC,CAAA;AACH,CAAC,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"locale.spec.js","sourceRoot":"","sources":["../src/locale.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,11 @@ export declare abstract class LocalizedComponent<P = {}, S extends LocalizedStat
|
|
|
22
22
|
* with the class name.
|
|
23
23
|
*/
|
|
24
24
|
abstract className(): string;
|
|
25
|
+
/**
|
|
26
|
+
* Override this method to get a notification when the locale has been loaded
|
|
27
|
+
* @param locale the loaded locale
|
|
28
|
+
*/
|
|
29
|
+
onLoadLocale(locale: LocaleEntries): void;
|
|
25
30
|
}
|
|
26
31
|
/**
|
|
27
32
|
* Decorator to inject locale capabilities. The decorator will set the component
|
|
@@ -38,7 +43,7 @@ export declare abstract class LocalizedComponent<P = {}, S extends LocalizedStat
|
|
|
38
43
|
export declare function localize(className: string): <T extends new (...args: any[]) => {}>(constructor: T) => {
|
|
39
44
|
new (...args: any[]): {
|
|
40
45
|
state: any;
|
|
41
|
-
loadLocale: Promise<
|
|
46
|
+
loadLocale: Promise<void>;
|
|
42
47
|
};
|
|
43
48
|
} & T;
|
|
44
49
|
/**
|
|
@@ -48,9 +48,18 @@ var LocalizedComponent = /** @class */ (function (_super) {
|
|
|
48
48
|
Promise.all([
|
|
49
49
|
locale_1.Locale.instance.get(_this.className()),
|
|
50
50
|
locale_1.Locale.instance.get('Generic')
|
|
51
|
-
]).then(function (resp) {
|
|
51
|
+
]).then(function (resp) {
|
|
52
|
+
var locale = __assign(__assign({}, resp[0]), resp[1]);
|
|
53
|
+
_this.setState({ locale: locale });
|
|
54
|
+
_this.onLoadLocale(locale);
|
|
55
|
+
});
|
|
52
56
|
return _this;
|
|
53
57
|
}
|
|
58
|
+
/**
|
|
59
|
+
* Override this method to get a notification when the locale has been loaded
|
|
60
|
+
* @param locale the loaded locale
|
|
61
|
+
*/
|
|
62
|
+
LocalizedComponent.prototype.onLoadLocale = function (locale) { };
|
|
54
63
|
return LocalizedComponent;
|
|
55
64
|
}(react_1.Component));
|
|
56
65
|
exports.LocalizedComponent = LocalizedComponent;
|
|
@@ -76,7 +85,11 @@ function localize(className) {
|
|
|
76
85
|
_this.loadLocale = Promise.all([
|
|
77
86
|
locale_1.Locale.instance.get(className),
|
|
78
87
|
locale_1.Locale.instance.get('Generic')
|
|
79
|
-
]).then(function (resp) {
|
|
88
|
+
]).then(function (resp) {
|
|
89
|
+
var locale = __assign(__assign({}, resp[0]), resp[1]);
|
|
90
|
+
_this['setState']({ locale: locale });
|
|
91
|
+
_this['onLoadLocale'] && _this['onLoadLocale'](locale);
|
|
92
|
+
});
|
|
80
93
|
return _this;
|
|
81
94
|
}
|
|
82
95
|
return class_1;
|
|
@@ -92,8 +105,8 @@ exports.localize = localize;
|
|
|
92
105
|
* @returns an object with the localized strings
|
|
93
106
|
*/
|
|
94
107
|
function useLocale(componentName) {
|
|
95
|
-
var _a = react_1.useState({}), locale = _a[0], setLocale = _a[1];
|
|
96
|
-
react_1.useEffect(function () {
|
|
108
|
+
var _a = (0, react_1.useState)({}), locale = _a[0], setLocale = _a[1];
|
|
109
|
+
(0, react_1.useEffect)(function () {
|
|
97
110
|
Promise.all([
|
|
98
111
|
locale_1.Locale.instance.get(componentName),
|
|
99
112
|
locale_1.Locale.instance.get('Generic')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"localized-component.js","sourceRoot":"","sources":["../src/localized-component.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAAsD;AACtD,mCAAgD;AAQhD;;;;;;;;;;GAUG;AACH;IAAgG,sCAAe;IAC9G,4BAAa,KAAQ;QAArB,YACC,kBAAO,KAAK,CAAE,
|
|
1
|
+
{"version":3,"file":"localized-component.js","sourceRoot":"","sources":["../src/localized-component.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAAsD;AACtD,mCAAgD;AAQhD;;;;;;;;;;GAUG;AACH;IAAgG,sCAAe;IAC9G,4BAAa,KAAQ;QAArB,YACC,kBAAO,KAAK,CAAE,SAad;QAXA,KAAI,CAAC,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,EAAO,CAAA;QAEhC,OAAO,CAAC,GAAG,CAAC;YACX,eAAM,CAAC,QAAQ,CAAC,GAAG,CAAE,KAAI,CAAC,SAAS,EAAE,CAAE;YACvC,eAAM,CAAC,QAAQ,CAAC,GAAG,CAAE,SAAS,CAAE;SAChC,CAAC,CAAC,IAAI,CAAE,UAAA,IAAI;YACZ,IAAM,MAAM,yBAAQ,IAAI,CAAC,CAAC,CAAC,GAAK,IAAI,CAAC,CAAC,CAAC,CAAE,CAAA;YAEzC,KAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,QAAA,EAAG,CAAC,CAAA;YAC1B,KAAI,CAAC,YAAY,CAAE,MAAM,CAAE,CAAA;QAC5B,CAAC,CAAC,CAAA;;IACH,CAAC;IAQD;;;OAGG;IACH,yCAAY,GAAZ,UAAc,MAAqB,IAAI,CAAC;IACzC,yBAAC;AAAD,CAAC,AA5BD,CAAgG,iBAAS,GA4BxG;AA5BqB,gDAAkB;AA8BxC;;;;;;;;;;;GAWG;AACH,SAAgB,QAAQ,CAAE,SAAiB;IAC1C,OAAO,UAAiD,WAAc;QACrE;YAAqB,2BAAW;YAAzB;gBAAA,qEAUN;gBATC,WAAK,cAAK,MAAM,EAAE,EAAE,IAAK,KAAI,CAAC,OAAO,CAAC,EAAE;gBACxC,gBAAU,GAAG,OAAO,CAAC,GAAG,CAAC;oBACxB,eAAM,CAAC,QAAQ,CAAC,GAAG,CAAE,SAAS,CAAE;oBAChC,eAAM,CAAC,QAAQ,CAAC,GAAG,CAAE,SAAS,CAAE;iBAChC,CAAC,CAAC,IAAI,CAAE,UAAA,IAAI;oBACZ,IAAM,MAAM,yBAAQ,IAAI,CAAC,CAAC,CAAC,GAAK,IAAI,CAAC,CAAC,CAAC,CAAE,CAAA;oBACzC,KAAI,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,QAAA,EAAE,CAAC,CAAA;oBAC5B,KAAI,CAAC,cAAc,CAAC,IAAI,KAAI,CAAC,cAAc,CAAC,CAAE,MAAM,CAAE,CAAA;gBACvD,CAAC,CAAC,CAAA;;YACJ,CAAC;YAAD,cAAC;QAAD,CAAC,AAVM,CAAc,WAAW,GAU/B;IACF,CAAC,CAAA;AACF,CAAC;AAdD,4BAcC;AAED;;;;;;GAMG;AACH,SAAgB,SAAS,CAAE,aAAqB;IACzC,IAAA,KAAwB,IAAA,gBAAQ,EAAC,EAA+B,CAAC,EAA/D,MAAM,QAAA,EAAE,SAAS,QAA8C,CAAA;IAEvE,IAAA,iBAAS,EAAE;QAEV,OAAO,CAAC,GAAG,CAAC;YACX,eAAM,CAAC,QAAQ,CAAC,GAAG,CAAE,aAAa,CAAE;YACpC,eAAM,CAAC,QAAQ,CAAC,GAAG,CAAE,SAAS,CAAE;SAChC,CAAC,CAAC,IAAI,CAAE,UAAA,IAAI,IAAI,OAAA,SAAS,uBAAM,IAAI,CAAC,CAAC,CAAC,GAAK,IAAI,CAAC,CAAC,CAAC,EAAG,EAArC,CAAqC,CAAC,CAAA;IAExD,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,OAAO,MAAM,CAAA;AACd,CAAC;AAbD,8BAaC"}
|
|
@@ -27,7 +27,11 @@ var __assign = (this && this.__assign) || function () {
|
|
|
27
27
|
};
|
|
28
28
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
29
29
|
if (k2 === undefined) k2 = k;
|
|
30
|
-
Object.
|
|
30
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
31
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
32
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
33
|
+
}
|
|
34
|
+
Object.defineProperty(o, k2, desc);
|
|
31
35
|
}) : (function(o, m, k, k2) {
|
|
32
36
|
if (k2 === undefined) k2 = k;
|
|
33
37
|
o[k2] = m[k];
|
|
@@ -95,6 +99,7 @@ var react_2 = require("@testing-library/react");
|
|
|
95
99
|
var fetch_mock_1 = __importDefault(require("fetch-mock"));
|
|
96
100
|
var locale_1 = require("./locale");
|
|
97
101
|
var localized_component_1 = require("./localized-component");
|
|
102
|
+
var loadedSpy = jest.fn();
|
|
98
103
|
var LocalizedWithDecorator = /** @class */ (function (_super) {
|
|
99
104
|
__extends(LocalizedWithDecorator, _super);
|
|
100
105
|
function LocalizedWithDecorator(props) {
|
|
@@ -104,6 +109,9 @@ var LocalizedWithDecorator = /** @class */ (function (_super) {
|
|
|
104
109
|
};
|
|
105
110
|
return _this;
|
|
106
111
|
}
|
|
112
|
+
LocalizedWithDecorator.prototype.onLoadLocale = function (locale) {
|
|
113
|
+
loadedSpy(locale);
|
|
114
|
+
};
|
|
107
115
|
LocalizedWithDecorator.prototype.render = function () {
|
|
108
116
|
return (react_1.default.createElement("div", null,
|
|
109
117
|
react_1.default.createElement("p", { "data-testid": "casa" },
|
|
@@ -112,7 +120,7 @@ var LocalizedWithDecorator = /** @class */ (function (_super) {
|
|
|
112
120
|
react_1.default.createElement("span", null, this.state.someState)));
|
|
113
121
|
};
|
|
114
122
|
LocalizedWithDecorator = __decorate([
|
|
115
|
-
localized_component_1.localize('LocalizedWithDecorator')
|
|
123
|
+
(0, localized_component_1.localize)('LocalizedWithDecorator')
|
|
116
124
|
], LocalizedWithDecorator);
|
|
117
125
|
return LocalizedWithDecorator;
|
|
118
126
|
}(react_1.Component));
|
|
@@ -123,6 +131,9 @@ var LocalizedWithClass = /** @class */ (function (_super) {
|
|
|
123
131
|
_this.state = __assign({ someState: 'a class nice starting point' }, _this.state);
|
|
124
132
|
return _this;
|
|
125
133
|
}
|
|
134
|
+
LocalizedWithClass.prototype.onLoadLocale = function (locale) {
|
|
135
|
+
loadedSpy(locale);
|
|
136
|
+
};
|
|
126
137
|
LocalizedWithClass.prototype.render = function () {
|
|
127
138
|
return (react_1.default.createElement("div", null,
|
|
128
139
|
react_1.default.createElement("p", { "data-testid": "casa" },
|
|
@@ -136,44 +147,42 @@ var LocalizedWithClass = /** @class */ (function (_super) {
|
|
|
136
147
|
return LocalizedWithClass;
|
|
137
148
|
}(localized_component_1.LocalizedComponent));
|
|
138
149
|
function LocalizedWithHook() {
|
|
139
|
-
var locale = localized_component_1.useLocale('LocalizedWithHook');
|
|
150
|
+
var locale = (0, localized_component_1.useLocale)('LocalizedWithHook');
|
|
140
151
|
return (react_1.default.createElement("div", null,
|
|
141
152
|
react_1.default.createElement("p", { "data-testid": "casa" },
|
|
142
153
|
"Casa es ",
|
|
143
154
|
locale.house)));
|
|
144
155
|
}
|
|
145
156
|
describe('React Component Localizer', function () {
|
|
146
|
-
beforeEach(function () {
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
"
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
"
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
"LocalizedWithHook": {
|
|
161
|
-
"house": "morada"
|
|
162
|
-
}
|
|
163
|
-
};
|
|
164
|
-
});
|
|
165
|
-
return [2 /*return*/];
|
|
157
|
+
beforeEach(function () {
|
|
158
|
+
fetch_mock_1.default.mock('locales/en.json', function () {
|
|
159
|
+
return {
|
|
160
|
+
"hi": "Hello",
|
|
161
|
+
"LocalizedWithClass": {
|
|
162
|
+
"house": "albergo"
|
|
163
|
+
},
|
|
164
|
+
"LocalizedWithDecorator": {
|
|
165
|
+
"house": "maison"
|
|
166
|
+
},
|
|
167
|
+
"LocalizedWithHook": {
|
|
168
|
+
"house": "morada"
|
|
169
|
+
}
|
|
170
|
+
};
|
|
166
171
|
});
|
|
167
|
-
|
|
172
|
+
locale_1.Locale.config({
|
|
173
|
+
localePath: 'locales'
|
|
174
|
+
});
|
|
175
|
+
});
|
|
168
176
|
afterEach(function () {
|
|
169
177
|
fetch_mock_1.default.restore();
|
|
178
|
+
loadedSpy.mockReset();
|
|
170
179
|
});
|
|
171
180
|
it('should render localized word with decorator', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
172
181
|
var wrapper, elem;
|
|
173
182
|
return __generator(this, function (_a) {
|
|
174
183
|
switch (_a.label) {
|
|
175
184
|
case 0:
|
|
176
|
-
wrapper = react_2.render(react_1.default.createElement(LocalizedWithDecorator, null));
|
|
185
|
+
wrapper = (0, react_2.render)(react_1.default.createElement(LocalizedWithDecorator, null));
|
|
177
186
|
return [4 /*yield*/, wrapper.findByText('Casa es maison')];
|
|
178
187
|
case 1:
|
|
179
188
|
elem = _a.sent();
|
|
@@ -187,7 +196,7 @@ describe('React Component Localizer', function () {
|
|
|
187
196
|
return __generator(this, function (_a) {
|
|
188
197
|
switch (_a.label) {
|
|
189
198
|
case 0:
|
|
190
|
-
wrapper = react_2.render(react_1.default.createElement(LocalizedWithClass, null));
|
|
199
|
+
wrapper = (0, react_2.render)(react_1.default.createElement(LocalizedWithClass, null));
|
|
191
200
|
return [4 /*yield*/, wrapper.findByText('Casa es albergo')];
|
|
192
201
|
case 1:
|
|
193
202
|
elem = _a.sent();
|
|
@@ -201,8 +210,8 @@ describe('React Component Localizer', function () {
|
|
|
201
210
|
return __generator(this, function (_c) {
|
|
202
211
|
switch (_c.label) {
|
|
203
212
|
case 0:
|
|
204
|
-
classWrapper = react_2.render(react_1.default.createElement(LocalizedWithClass, null));
|
|
205
|
-
decoratorWrapper = react_2.render(react_1.default.createElement(LocalizedWithDecorator, null));
|
|
213
|
+
classWrapper = (0, react_2.render)(react_1.default.createElement(LocalizedWithClass, null));
|
|
214
|
+
decoratorWrapper = (0, react_2.render)(react_1.default.createElement(LocalizedWithDecorator, null));
|
|
206
215
|
_a = expect;
|
|
207
216
|
return [4 /*yield*/, classWrapper.findByText('a class nice starting point')];
|
|
208
217
|
case 1:
|
|
@@ -220,7 +229,7 @@ describe('React Component Localizer', function () {
|
|
|
220
229
|
return __generator(this, function (_a) {
|
|
221
230
|
switch (_a.label) {
|
|
222
231
|
case 0:
|
|
223
|
-
wrapper = react_2.render(react_1.default.createElement(LocalizedWithHook, null));
|
|
232
|
+
wrapper = (0, react_2.render)(react_1.default.createElement(LocalizedWithHook, null));
|
|
224
233
|
return [4 /*yield*/, wrapper.findByText('Casa es morada')];
|
|
225
234
|
case 1:
|
|
226
235
|
elem = _a.sent();
|
|
@@ -229,5 +238,50 @@ describe('React Component Localizer', function () {
|
|
|
229
238
|
}
|
|
230
239
|
});
|
|
231
240
|
}); });
|
|
241
|
+
it('should wait locale json to load', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
242
|
+
var wrapper, elem;
|
|
243
|
+
return __generator(this, function (_a) {
|
|
244
|
+
switch (_a.label) {
|
|
245
|
+
case 0:
|
|
246
|
+
locale_1.Locale.config({
|
|
247
|
+
locale: 'en'
|
|
248
|
+
});
|
|
249
|
+
wrapper = (0, react_2.render)(react_1.default.createElement(LocalizedWithDecorator, null));
|
|
250
|
+
return [4 /*yield*/, wrapper.findByText('Casa es maison')];
|
|
251
|
+
case 1:
|
|
252
|
+
elem = _a.sent();
|
|
253
|
+
expect(elem).toBeInTheDocument();
|
|
254
|
+
return [2 /*return*/];
|
|
255
|
+
}
|
|
256
|
+
});
|
|
257
|
+
}); });
|
|
258
|
+
it('should notify on locale loaded with decorator', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
259
|
+
var wrapper;
|
|
260
|
+
return __generator(this, function (_a) {
|
|
261
|
+
switch (_a.label) {
|
|
262
|
+
case 0:
|
|
263
|
+
wrapper = (0, react_2.render)(react_1.default.createElement(LocalizedWithDecorator, null));
|
|
264
|
+
return [4 /*yield*/, wrapper.findByText('Casa es maison')];
|
|
265
|
+
case 1:
|
|
266
|
+
_a.sent();
|
|
267
|
+
expect(loadedSpy).toHaveBeenCalledWith(expect.objectContaining({ house: 'maison' }));
|
|
268
|
+
return [2 /*return*/];
|
|
269
|
+
}
|
|
270
|
+
});
|
|
271
|
+
}); });
|
|
272
|
+
it('should notify on locale loaded with class', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
273
|
+
var wrapper;
|
|
274
|
+
return __generator(this, function (_a) {
|
|
275
|
+
switch (_a.label) {
|
|
276
|
+
case 0:
|
|
277
|
+
wrapper = (0, react_2.render)(react_1.default.createElement(LocalizedWithClass, null));
|
|
278
|
+
return [4 /*yield*/, wrapper.findByText('Casa es albergo')];
|
|
279
|
+
case 1:
|
|
280
|
+
_a.sent();
|
|
281
|
+
expect(loadedSpy).toHaveBeenCalledWith(expect.objectContaining({ house: 'albergo' }));
|
|
282
|
+
return [2 /*return*/];
|
|
283
|
+
}
|
|
284
|
+
});
|
|
285
|
+
}); });
|
|
232
286
|
});
|
|
233
287
|
//# sourceMappingURL=react-localizer.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react-localizer.spec.js","sourceRoot":"","sources":["../src/react-localizer.spec.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"react-localizer.spec.js","sourceRoot":"","sources":["../src/react-localizer.spec.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@entropic-bond/localize-react",
|
|
3
|
-
"version": "1.1
|
|
3
|
+
"version": "1.3.1",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public",
|
|
6
6
|
"branches": [
|
|
@@ -44,23 +44,23 @@
|
|
|
44
44
|
},
|
|
45
45
|
"homepage": "https://github.com/entropic-bond/localize-react#readme",
|
|
46
46
|
"devDependencies": {
|
|
47
|
-
"@semantic-release/changelog": "^
|
|
48
|
-
"@semantic-release/git": "^
|
|
49
|
-
"@testing-library/jest-dom": "^5.
|
|
50
|
-
"@testing-library/react": "^12.
|
|
51
|
-
"@testing-library/user-event": "^13.
|
|
52
|
-
"@types/jest": "^
|
|
53
|
-
"@types/react": "^17.0.
|
|
54
|
-
"@types/react-dom": "^17.0.
|
|
47
|
+
"@semantic-release/changelog": "^6.0.1",
|
|
48
|
+
"@semantic-release/git": "^10.0.1",
|
|
49
|
+
"@testing-library/jest-dom": "^5.16.2",
|
|
50
|
+
"@testing-library/react": "^12.1.3",
|
|
51
|
+
"@testing-library/user-event": "^13.5.0",
|
|
52
|
+
"@types/jest": "^27.4.1",
|
|
53
|
+
"@types/react": "^17.0.39",
|
|
54
|
+
"@types/react-dom": "^17.0.13",
|
|
55
55
|
"fetch-mock": "^9.11.0",
|
|
56
56
|
"git-branch-is": "^4.0.0",
|
|
57
|
-
"husky": "^
|
|
58
|
-
"jest": "^27.
|
|
57
|
+
"husky": "^7.0.4",
|
|
58
|
+
"jest": "^27.5.1",
|
|
59
59
|
"react": "^17.0.2",
|
|
60
60
|
"react-dom": "^17.0.2",
|
|
61
|
-
"semantic-release": "^
|
|
62
|
-
"ts-jest": "^27.
|
|
63
|
-
"typescript": "^4.
|
|
61
|
+
"semantic-release": "^19.0.2",
|
|
62
|
+
"ts-jest": "^27.1.3",
|
|
63
|
+
"typescript": "^4.6.2"
|
|
64
64
|
},
|
|
65
65
|
"husky": {
|
|
66
66
|
"hooks": {
|
package/lib/utils.d.ts
DELETED
package/lib/utils.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.fillTemplate = void 0;
|
|
4
|
-
function fillTemplate(text, values) {
|
|
5
|
-
if (!text)
|
|
6
|
-
return '';
|
|
7
|
-
return text.replace(/\${\s*(\w*)\s*}/g, function (_match, group) {
|
|
8
|
-
return values[group] || '';
|
|
9
|
-
});
|
|
10
|
-
}
|
|
11
|
-
exports.fillTemplate = fillTemplate;
|
|
12
|
-
//# sourceMappingURL=utils.js.map
|
package/lib/utils.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;AAIA,SAAgB,YAAY,CAAE,IAAY,EAAE,MAAsB;IACjE,IAAK,CAAC,IAAI;QAAG,OAAO,EAAE,CAAA;IAEtB,OAAO,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,UAAU,MAAM,EAAG,KAAK;QAC/D,OAAO,MAAM,CAAE,KAAK,CAAE,IAAI,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;AACJ,CAAC;AAND,oCAMC"}
|
package/lib/utils.spec.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/lib/utils.spec.js
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
var utils_1 = require("./utils");
|
|
4
|
-
describe('Utils', function () {
|
|
5
|
-
describe('fillTemplates', function () {
|
|
6
|
-
var text = 'The population of ${country} is ${ people} million \
|
|
7
|
-
and the GDP is $${ gdpValue } million';
|
|
8
|
-
var expected = 'The population of U.S.A. is 100 million \
|
|
9
|
-
and the GDP is $1000 million';
|
|
10
|
-
var vars = {
|
|
11
|
-
country: 'U.S.A.',
|
|
12
|
-
people: '100',
|
|
13
|
-
gdpValue: '1000'
|
|
14
|
-
};
|
|
15
|
-
it('should replace vars as a template literal', function () {
|
|
16
|
-
expect(utils_1.fillTemplate(text, vars)).toEqual(expected);
|
|
17
|
-
});
|
|
18
|
-
it('should replace vars with empty value', function () {
|
|
19
|
-
vars.country = '';
|
|
20
|
-
vars.people = undefined;
|
|
21
|
-
expect(utils_1.fillTemplate('The population of ${country} is ${ people} million', vars)).toEqual('The population of is million');
|
|
22
|
-
});
|
|
23
|
-
it('should resturn empty string on falsy', function () {
|
|
24
|
-
expect(utils_1.fillTemplate(undefined, vars)).toEqual('');
|
|
25
|
-
expect(utils_1.fillTemplate(null, vars)).toEqual('');
|
|
26
|
-
expect(utils_1.fillTemplate('', vars)).toEqual('');
|
|
27
|
-
});
|
|
28
|
-
});
|
|
29
|
-
});
|
|
30
|
-
//# sourceMappingURL=utils.spec.js.map
|
package/lib/utils.spec.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.spec.js","sourceRoot":"","sources":["../src/utils.spec.ts"],"names":[],"mappings":";;AAAA,iCAAsC;AAEtC,QAAQ,CAAE,OAAO,EAAE;IAClB,QAAQ,CAAE,eAAe,EAAE;QAC1B,IAAM,IAAI,GAAG;iDACkC,CAAA;QAC/C,IAAM,QAAQ,GAAG;wCACqB,CAAA;QACtC,IAAM,IAAI,GAAG;YACZ,OAAO,EAAE,QAAQ;YACjB,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,MAAM;SAChB,CAAA;QAED,EAAE,CAAE,2CAA2C,EAAE;YAChD,MAAM,CAAE,oBAAY,CAAE,IAAI,EAAE,IAAI,CAAE,CAAE,CAAC,OAAO,CAAE,QAAQ,CAAE,CAAA;QACzD,CAAC,CAAC,CAAA;QAEF,EAAE,CAAE,sCAAsC,EAAE;YAC3C,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;YACjB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAA;YAEvB,MAAM,CACL,oBAAY,CACX,oDAAoD,EACpD,IAAI,CACJ,CACD,CAAC,OAAO,CAAE,gCAAgC,CAAE,CAAA;QAC9C,CAAC,CAAC,CAAA;QAEF,EAAE,CAAE,sCAAsC,EAAE;YAC3C,MAAM,CAAE,oBAAY,CAAE,SAAS,EAAE,IAAI,CAAE,CAAE,CAAC,OAAO,CAAE,EAAE,CAAE,CAAA;YACvD,MAAM,CAAE,oBAAY,CAAE,IAAI,EAAE,IAAI,CAAE,CAAE,CAAC,OAAO,CAAE,EAAE,CAAE,CAAA;YAClD,MAAM,CAAE,oBAAY,CAAE,EAAE,EAAE,IAAI,CAAE,CAAE,CAAC,OAAO,CAAE,EAAE,CAAE,CAAA;QACjD,CAAC,CAAC,CAAA;IAEH,CAAC,CAAC,CAAA;AAEH,CAAC,CAAC,CAAA"}
|