rpx-xui-translation 0.2.2-yesno-translations-fix-v2 → 0.2.3-yesno-translations-fix
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/bundles/rpx-xui-translation.umd.js +68 -58
- package/bundles/rpx-xui-translation.umd.js.map +1 -1
- package/bundles/rpx-xui-translation.umd.min.js +1 -1
- package/bundles/rpx-xui-translation.umd.min.js.map +1 -1
- package/esm2015/lib/db.js +1 -1
- package/esm2015/lib/models/translated-data.model.js +1 -0
- package/esm2015/lib/rpx-translate.pipe.js +19 -27
- package/esm2015/lib/rpx-translation.service.js +30 -10
- package/esm5/lib/db.js +1 -1
- package/esm5/lib/models/translated-data.model.js +1 -0
- package/esm5/lib/rpx-translate.pipe.js +22 -32
- package/esm5/lib/rpx-translation.service.js +30 -10
- package/fesm2015/rpx-xui-translation.js +68 -56
- package/fesm2015/rpx-xui-translation.js.map +1 -1
- package/fesm5/rpx-xui-translation.js +70 -60
- package/fesm5/rpx-xui-translation.js.map +1 -1
- package/lib/db.d.ts +1 -1
- package/lib/rpx-translate.pipe.d.ts +6 -4
- package/lib/rpx-translation.service.d.ts +5 -3
- package/package.json +1 -1
- package/rpx-xui-translation.metadata.json +1 -1
- package/esm2015/lib/helpers/models/translated-data.model.js +0 -1
- package/esm5/lib/helpers/models/translated-data.model.js +0 -1
- /package/lib/{helpers/models → models}/translated-data.model.d.ts +0 -0
|
@@ -268,6 +268,29 @@
|
|
|
268
268
|
}(Dexie__default));
|
|
269
269
|
var db = new TranslationDB();
|
|
270
270
|
|
|
271
|
+
var replacePlaceholders = function (input, replacements) {
|
|
272
|
+
Object.keys(replacements).forEach(function (key) {
|
|
273
|
+
// Ideally use replaceAll here, but that isn't fully compatible with targeted browsers and packaging yet
|
|
274
|
+
var search = "%" + key + "%";
|
|
275
|
+
while (input.indexOf(search) !== -1) {
|
|
276
|
+
input = input.replace(search, replacements[key]);
|
|
277
|
+
}
|
|
278
|
+
});
|
|
279
|
+
return input;
|
|
280
|
+
};
|
|
281
|
+
|
|
282
|
+
var matchCase = function (str1, str2) {
|
|
283
|
+
if (str1.length === 0 || str2.length === 0) {
|
|
284
|
+
return str2;
|
|
285
|
+
}
|
|
286
|
+
if (str1.charAt(0).toUpperCase() === str1.charAt(0)) {
|
|
287
|
+
return "" + str2.charAt(0).toUpperCase() + str2.slice(1);
|
|
288
|
+
}
|
|
289
|
+
else {
|
|
290
|
+
return str2.toLowerCase();
|
|
291
|
+
}
|
|
292
|
+
};
|
|
293
|
+
|
|
271
294
|
var RpxTranslationService = /** @class */ (function () {
|
|
272
295
|
function RpxTranslationService(config, http) {
|
|
273
296
|
this.config = config;
|
|
@@ -304,13 +327,27 @@
|
|
|
304
327
|
enumerable: true,
|
|
305
328
|
configurable: true
|
|
306
329
|
});
|
|
307
|
-
RpxTranslationService.prototype.getTranslation = function (phrase
|
|
330
|
+
RpxTranslationService.prototype.getTranslation$ = function (phrase) {
|
|
331
|
+
return this.getTranslatedData(phrase).pipe(operators.map(function (t) { return t.phrase; }));
|
|
332
|
+
};
|
|
333
|
+
RpxTranslationService.prototype.getTranslationWithReplacements$ = function (phrase, replacements) {
|
|
334
|
+
return this.getTranslatedData(phrase).pipe(operators.map(function (translatedData) { return replacePlaceholders(translatedData.phrase, replacements); }));
|
|
335
|
+
};
|
|
336
|
+
RpxTranslationService.prototype.getTranslationWithYesOrNo$ = function (phrase, yesOrNoValue) {
|
|
337
|
+
var isYes = (yesOrNoValue === null || yesOrNoValue === void 0 ? void 0 : yesOrNoValue.toLowerCase()) === exports.YesOrNoValue.YES.toLowerCase();
|
|
338
|
+
var isNo = (yesOrNoValue === null || yesOrNoValue === void 0 ? void 0 : yesOrNoValue.toLowerCase()) === exports.YesOrNoValue.NO.toLowerCase();
|
|
339
|
+
return this.getTranslatedData(phrase).pipe(operators.map(function (translatedData) {
|
|
340
|
+
var yesOrNoTranslated = isYes ? ((translatedData === null || translatedData === void 0 ? void 0 : translatedData.yes) || yesOrNoValue) : ((translatedData === null || translatedData === void 0 ? void 0 : translatedData.no) || yesOrNoValue);
|
|
341
|
+
return matchCase(yesOrNoTranslated, yesOrNoValue);
|
|
342
|
+
}));
|
|
343
|
+
};
|
|
344
|
+
RpxTranslationService.prototype.getTranslatedData = function (phrase) {
|
|
308
345
|
if (this.observables.hasOwnProperty(phrase)) {
|
|
309
346
|
return this.observables[phrase];
|
|
310
347
|
}
|
|
311
|
-
return this.translate(phrase
|
|
348
|
+
return this.translate(phrase);
|
|
312
349
|
};
|
|
313
|
-
RpxTranslationService.prototype.translate = function (phrase
|
|
350
|
+
RpxTranslationService.prototype.translate = function (phrase) {
|
|
314
351
|
var _this = this;
|
|
315
352
|
var lang = this.language;
|
|
316
353
|
if (!this.phrases.hasOwnProperty(phrase)) {
|
|
@@ -332,19 +369,23 @@
|
|
|
332
369
|
}
|
|
333
370
|
_this.phrases[phrase].next({
|
|
334
371
|
phrase: phrase + " [Translation in progress]",
|
|
335
|
-
yes: 'Yes
|
|
336
|
-
no: '
|
|
372
|
+
yes: 'Yes [Translation in progress]',
|
|
373
|
+
no: 'No [Translation in progress]'
|
|
337
374
|
});
|
|
338
|
-
_this.load(phrase, lang
|
|
375
|
+
_this.load(phrase, lang);
|
|
339
376
|
}
|
|
340
377
|
})).subscribe(function () { });
|
|
341
378
|
}
|
|
342
379
|
return this.observables[phrase];
|
|
343
380
|
};
|
|
344
|
-
RpxTranslationService.prototype.load = function (phrase, lang
|
|
381
|
+
RpxTranslationService.prototype.load = function (phrase, lang) {
|
|
345
382
|
var _this = this;
|
|
346
383
|
if (lang === 'en') {
|
|
347
|
-
this.phrases[phrase].next({
|
|
384
|
+
this.phrases[phrase].next({
|
|
385
|
+
phrase: phrase,
|
|
386
|
+
yes: 'Yes',
|
|
387
|
+
no: 'No'
|
|
388
|
+
});
|
|
348
389
|
return;
|
|
349
390
|
}
|
|
350
391
|
if (!this.requesting.hasOwnProperty(lang)) {
|
|
@@ -361,7 +402,6 @@
|
|
|
361
402
|
var url = _this.config.baseUrl + ("/" + lang);
|
|
362
403
|
var s = _this.http.post(url, {
|
|
363
404
|
phrases: _this.requesting[lang],
|
|
364
|
-
yesOrNoField: yesOrNoField
|
|
365
405
|
})
|
|
366
406
|
.pipe(operators.map(function (t) { return t.translations; }), operators.catchError(function () {
|
|
367
407
|
var translations = {};
|
|
@@ -402,65 +442,35 @@
|
|
|
402
442
|
return RpxTranslationService;
|
|
403
443
|
}());
|
|
404
444
|
|
|
405
|
-
var
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
input = input.replace(search, replacements[key]);
|
|
411
|
-
}
|
|
412
|
-
});
|
|
413
|
-
return input;
|
|
414
|
-
};
|
|
415
|
-
|
|
416
|
-
var matchCase = function (str1, str2) {
|
|
417
|
-
if (str1.length === 0 || str2.length === 0) {
|
|
418
|
-
return str2;
|
|
419
|
-
}
|
|
420
|
-
if (str1.charAt(0).toUpperCase() === str1.charAt(0)) {
|
|
421
|
-
return "" + str2.charAt(0).toUpperCase() + str2.slice(1);
|
|
422
|
-
}
|
|
423
|
-
else {
|
|
424
|
-
return str2.toLowerCase();
|
|
425
|
-
}
|
|
426
|
-
};
|
|
427
|
-
|
|
428
|
-
var RpxTranslatePipe = /** @class */ (function (_super) {
|
|
429
|
-
__extends(RpxTranslatePipe, _super);
|
|
430
|
-
function RpxTranslatePipe(translationService, ref) {
|
|
431
|
-
var _this = _super.call(this, ref) || this;
|
|
432
|
-
_this.translationService = translationService;
|
|
433
|
-
return _this;
|
|
445
|
+
var RpxTranslatePipe = /** @class */ (function () {
|
|
446
|
+
function RpxTranslatePipe(translationService, injector) {
|
|
447
|
+
this.translationService = translationService;
|
|
448
|
+
this.injector = injector;
|
|
449
|
+
this.asyncPipe = new common.AsyncPipe(injector.get(core.ChangeDetectorRef));
|
|
434
450
|
}
|
|
435
451
|
RpxTranslatePipe.prototype.transform = function (value, replacements, yesOrNoValue) {
|
|
436
452
|
if (typeof value === 'string') {
|
|
437
|
-
var
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
if (replacements) {
|
|
444
|
-
retString = replacePlaceholders(ret.phrase, replacements);
|
|
445
|
-
}
|
|
446
|
-
else if (isYes || isNo) {
|
|
447
|
-
retString = isYes ? ((ret === null || ret === void 0 ? void 0 : ret.yes) || yesOrNoValue) : ((ret === null || ret === void 0 ? void 0 : ret.no) || yesOrNoValue);
|
|
448
|
-
matchCase(retString, yesOrNoValue);
|
|
449
|
-
}
|
|
450
|
-
else {
|
|
451
|
-
retString = ret.phrase;
|
|
452
|
-
}
|
|
453
|
+
var o = void 0;
|
|
454
|
+
if (replacements) {
|
|
455
|
+
o = this.translationService.getTranslationWithReplacements$(value, replacements);
|
|
456
|
+
}
|
|
457
|
+
else if (yesOrNoValue) {
|
|
458
|
+
o = this.translationService.getTranslationWithYesOrNo$(value, yesOrNoValue);
|
|
453
459
|
}
|
|
454
460
|
else {
|
|
455
|
-
|
|
461
|
+
o = this.translationService.getTranslation$(value);
|
|
456
462
|
}
|
|
457
|
-
|
|
463
|
+
var ret = this.asyncPipe.transform(o);
|
|
464
|
+
return ret;
|
|
458
465
|
}
|
|
459
466
|
return null;
|
|
460
467
|
};
|
|
468
|
+
RpxTranslatePipe.prototype.ngOnDestroy = function () {
|
|
469
|
+
this.asyncPipe.ngOnDestroy();
|
|
470
|
+
};
|
|
461
471
|
RpxTranslatePipe.ctorParameters = function () { return [
|
|
462
472
|
{ type: RpxTranslationService },
|
|
463
|
-
{ type: core.
|
|
473
|
+
{ type: core.Injector }
|
|
464
474
|
]; };
|
|
465
475
|
RpxTranslatePipe = __decorate([
|
|
466
476
|
core.Pipe({
|
|
@@ -469,7 +479,7 @@
|
|
|
469
479
|
})
|
|
470
480
|
], RpxTranslatePipe);
|
|
471
481
|
return RpxTranslatePipe;
|
|
472
|
-
}(
|
|
482
|
+
}());
|
|
473
483
|
|
|
474
484
|
var RpxTranslationModule = /** @class */ (function () {
|
|
475
485
|
function RpxTranslationModule() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpx-xui-translation.umd.js","sources":["../../../node_modules/tslib/tslib.es6.js","ng://rpx-xui-translation/lib/rpx-language.enum.ts","ng://rpx-xui-translation/lib/rpx-translation.config.ts","ng://rpx-xui-translation/lib/db.ts","ng://rpx-xui-translation/lib/rpx-translation.service.ts","ng://rpx-xui-translation/lib/helpers/replace-placeholders/replace-placeholders.helper.ts","ng://rpx-xui-translation/lib/helpers/match-case/match-case.helper.ts","ng://rpx-xui-translation/lib/rpx-translate.pipe.ts","ng://rpx-xui-translation/lib/rpx-translation.module.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","export type RpxLanguage = 'en' | 'cy';\nexport enum YesOrNoValue {\n YES = 'Yes',\n NO = 'No',\n}\n","export type ValidityDurationSpec = {\n years?: number;\n quarters?: number;\n months?: number;\n weeks?: number;\n days?: number;\n hours?: number;\n minutes?: number;\n seconds?: number;\n milliseconds?: number;\n};\n\nexport class RpxTranslationConfig {\n validity: ValidityDurationSpec;\n baseUrl: string;\n\n debounceTimeMs = 300;\n testMode = false;\n}\n","import Dexie, { Table } from 'dexie';\nimport { DateTime } from 'luxon';\nimport { RpxLanguage } from './rpx-language.enum';\nimport { TranslatedData } from './helpers/models/translated-data.model';\n\nexport class Translation {\n id?: number;\n phrase: string;\n lang: RpxLanguage;\n translation: TranslatedData;\n validity: string;\n\n public static create(phrase: string, lang: RpxLanguage, translation: TranslatedData, validity: string): Translation {\n const t = new Translation();\n t.phrase = phrase;\n t.lang = lang;\n t.translation = translation;\n t.validity = validity;\n return t;\n }\n\n isExpired(): boolean {\n return DateTime.fromISO(this.validity) < DateTime.now();\n }\n}\n\nexport class TranslationDB extends Dexie {\n translations: Table<Translation, number>;\n\n constructor() {\n super('RpxTranslations');\n this.version(1).stores({\n translations: '++id, [phrase+lang]'\n });\n this.translations.mapToClass(Translation);\n }\n}\n\nexport const db = new TranslationDB();\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { liveQuery } from 'dexie';\nimport { DateTime } from 'luxon';\nimport { BehaviorSubject, from, Observable, of, Subscription, timer } from 'rxjs';\nimport { catchError, map, tap } from 'rxjs/operators';\nimport { db, Translation } from './db';\nimport { RpxLanguage } from './rpx-language.enum';\nimport { RpxTranslationConfig } from './rpx-translation.config';\nimport { TranslatedData } from './helpers/models/translated-data.model';\n\ninterface TranslationsDTO {\n translations: { [from: string]: string };\n}\n\nexport type Replacements = { [key: string]: string };\n\n@Injectable()\nexport class RpxTranslationService {\n private currentLanguage: RpxLanguage = 'en';\n private languageKey = 'exui-preferred-language';\n\n private phrases: { [phrase: string]: BehaviorSubject<TranslatedData> } = {};\n private observables: { [phrase: string]: Observable<TranslatedData> } = {};\n private requesting: { [lang: string]: string[] } = {};\n private requestTimerSubscription: Subscription | null;\n private languageSource: BehaviorSubject<RpxLanguage> = new BehaviorSubject<RpxLanguage>(this.currentLanguage);\n public language$: Observable<RpxLanguage>;\n\n public set language(lang: RpxLanguage) {\n if (lang !== this.currentLanguage) {\n this.currentLanguage = lang;\n this.persistLanguage();\n this.languageSource.next(lang);\n Object.keys(this.phrases).forEach(phrase => this.translate(phrase));\n }\n }\n\n public get language(): RpxLanguage {\n return this.currentLanguage;\n }\n\n constructor(\n private config: RpxTranslationConfig,\n private http: HttpClient\n ) {\n const persistedLanguage = this.getPersistedLanguage();\n if (persistedLanguage) {\n this.language = persistedLanguage;\n } else {\n // no language persisted yet, save default\n this.persistLanguage();\n }\n this.language$ = this.languageSource.asObservable();\n }\n\n public getTranslation(phrase: string, yesOrNoValue?: string): Observable<TranslatedData> {\n if (this.observables.hasOwnProperty(phrase)) {\n return this.observables[phrase];\n }\n\n return this.translate(phrase, yesOrNoValue);\n }\n\n public translate(phrase: string, yesOrNoValue?: string): Observable<TranslatedData> {\n const lang = this.language;\n if (!this.phrases.hasOwnProperty(phrase)) {\n this.phrases[phrase] = new BehaviorSubject<TranslatedData>({phrase});\n this.observables[phrase] = this.phrases[phrase].asObservable();\n }\n\n if (lang === 'en') {\n this.phrases[phrase].next({phrase});\n } else {\n from(liveQuery(() => db.translations.where('[phrase+lang]').equals([phrase, lang]).first())).pipe(\n tap(t => {\n if (t && !t.isExpired()) {\n this.phrases[phrase].next(t.translation);\n } else {\n if (t) {\n // expired, clean up DB\n db.translations.delete(t.id!);\n }\n this.phrases[phrase].next({\n phrase: `${phrase} [Translation in progress]`,\n yes: 'Yes/No [Translation in progress]',\n no: 'Yes/No [Translation in progress]'\n });\n this.load(phrase, lang, !!yesOrNoValue);\n }\n })\n ).subscribe(() => { });\n }\n\n return this.observables[phrase];\n }\n\n private load(phrase: string, lang: RpxLanguage, yesOrNoField: boolean): void {\n if (lang === 'en') {\n this.phrases[phrase].next({phrase});\n return;\n }\n\n if (!this.requesting.hasOwnProperty(lang)) {\n this.requesting[lang] = [];\n }\n\n if (this.requesting[lang].indexOf(phrase) !== -1) {\n return;\n }\n\n this.requesting[lang].push(phrase);\n\n if (this.requestTimerSubscription) {\n this.requestTimerSubscription.unsubscribe();\n }\n\n this.requestTimerSubscription = timer(this.config.debounceTimeMs).subscribe(() => {\n const url = this.config.baseUrl + `/${lang}`;\n const s = this.http.post<TranslationsDTO>(url,\n {\n phrases: this.requesting[lang],\n yesOrNoField\n }\n )\n .pipe(\n map(t => t.translations),\n catchError(() => {\n const translations: { [from: string]: string } = {};\n this.requesting[lang].forEach(p => translations[p] = this.config.testMode ? `[Test translation for ${p}]` : p);\n return of(translations);\n })\n ).subscribe((translations: { [from: string]: string }) => {\n const toAdd: Translation[] = [];\n Object.keys(translations).forEach(p => {\n const translation: TranslatedData = {\n phrase: translations[p]\n };\n toAdd.push(Translation.create(p, lang, translation, DateTime.now().plus(this.config.validity).toISO()));\n this.phrases[p].next(translation);\n });\n db.translations.bulkAdd(toAdd);\n this.requesting[lang] = [];\n this.requestTimerSubscription!.unsubscribe();\n this.requestTimerSubscription = null;\n s.unsubscribe();\n });\n });\n }\n\n private persistLanguage(): void {\n document.cookie = `${this.languageKey}=${this.currentLanguage};`;\n }\n\n private getPersistedLanguage(): RpxLanguage {\n return document.cookie.split(';').find(cookie => cookie.trim().startsWith(this.languageKey + '='))?.split('=')[1].trim() as RpxLanguage;\n }\n}\n","import { Replacements } from '../../rpx-translation.service';\n\nexport const replacePlaceholders = (input: string, replacements: Replacements) => {\n Object.keys(replacements).forEach(key => {\n // Ideally use replaceAll here, but that isn't fully compatible with targeted browsers and packaging yet\n const search = `%${key}%`;\n while (input.indexOf(search) !== -1) {\n input = input.replace(search, replacements[key]);\n }\n });\n\n return input;\n};\n","export const matchCase = (str1: string, str2: string) => {\n if (str1.length === 0 || str2.length === 0) {\n return str2;\n }\n\n if (str1.charAt(0).toUpperCase() === str1.charAt(0)) {\n return `${str2.charAt(0).toUpperCase()}${str2.slice(1)}`;\n } else {\n return str2.toLowerCase();\n }\n};\n","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectorRef, Pipe, PipeTransform } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Replacements, RpxTranslationService } from './rpx-translation.service';\nimport { YesOrNoValue } from './rpx-language.enum';\nimport { TranslatedData } from './helpers/models/translated-data.model';\nimport { replacePlaceholders } from './helpers/replace-placeholders/replace-placeholders.helper';\nimport { matchCase } from './helpers/match-case/match-case.helper';\n\n@Pipe({\n name: 'rpxTranslate',\n pure: false\n})\nexport class RpxTranslatePipe extends AsyncPipe implements PipeTransform {\n constructor(\n private translationService: RpxTranslationService,\n ref: ChangeDetectorRef\n ) {\n super(ref);\n }\n\n transform<T = string>(value: T, replacements?: Replacements | null, yesOrNoValue?: string): T | null {\n if (typeof value === 'string') {\n let retString: string;\n const o: Observable<TranslatedData> = this.translationService.getTranslation(value, yesOrNoValue);\n const ret = super.transform<TranslatedData>(o);\n\n if (ret) {\n const isYes = yesOrNoValue?.toLowerCase() === YesOrNoValue.YES.toLowerCase();\n const isNo = yesOrNoValue?.toLowerCase() === YesOrNoValue.NO.toLowerCase();\n\n if (replacements) {\n retString = replacePlaceholders(ret.phrase, replacements);\n } else if (isYes || isNo) {\n retString = isYes ? (ret?.yes || yesOrNoValue!) : (ret?.no || yesOrNoValue!);\n matchCase(retString, yesOrNoValue!);\n } else {\n retString = ret.phrase;\n }\n } else {\n retString = yesOrNoValue ? yesOrNoValue : value;\n }\n\n return retString as unknown as T;\n }\n\n return null;\n }\n}\n","import { HttpClientModule } from '@angular/common/http';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { RpxTranslatePipe } from './rpx-translate.pipe';\nimport { RpxTranslationConfig } from './rpx-translation.config';\nimport { RpxTranslationService } from './rpx-translation.service';\n\n@NgModule({\n declarations: [RpxTranslatePipe],\n imports: [HttpClientModule],\n exports: [RpxTranslatePipe]\n})\nexport class RpxTranslationModule {\n\n public static forRoot(config: RpxTranslationConfig): ModuleWithProviders {\n return {\n ngModule: RpxTranslationModule,\n providers: [\n {\n provide: RpxTranslationConfig, useValue: config\n },\n RpxTranslationService\n ]\n };\n }\n\n public static forChild(): ModuleWithProviders {\n return {\n ngModule: RpxTranslationModule\n };\n }\n}\n"],"names":["YesOrNoValue","DateTime","Dexie","BehaviorSubject","from","liveQuery","tap","timer","map","catchError","of","HttpClient","Injectable","ChangeDetectorRef","Pipe","AsyncPipe","NgModule","HttpClientModule"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rpx-xui-translation.umd.js","sources":["../../../node_modules/tslib/tslib.es6.js","ng://rpx-xui-translation/lib/rpx-language.enum.ts","ng://rpx-xui-translation/lib/rpx-translation.config.ts","ng://rpx-xui-translation/lib/db.ts","ng://rpx-xui-translation/lib/helpers/replace-placeholders/replace-placeholders.helper.ts","ng://rpx-xui-translation/lib/helpers/match-case/match-case.helper.ts","ng://rpx-xui-translation/lib/rpx-translation.service.ts","ng://rpx-xui-translation/lib/rpx-translate.pipe.ts","ng://rpx-xui-translation/lib/rpx-translation.module.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","export type RpxLanguage = 'en' | 'cy';\nexport enum YesOrNoValue {\n YES = 'Yes',\n NO = 'No',\n}\n","export type ValidityDurationSpec = {\n years?: number;\n quarters?: number;\n months?: number;\n weeks?: number;\n days?: number;\n hours?: number;\n minutes?: number;\n seconds?: number;\n milliseconds?: number;\n};\n\nexport class RpxTranslationConfig {\n validity: ValidityDurationSpec;\n baseUrl: string;\n\n debounceTimeMs = 300;\n testMode = false;\n}\n","import Dexie, { Table } from 'dexie';\nimport { DateTime } from 'luxon';\nimport { RpxLanguage } from './rpx-language.enum';\nimport { TranslatedData } from './models/translated-data.model';\n\nexport class Translation {\n id?: number;\n phrase: string;\n lang: RpxLanguage;\n translation: TranslatedData;\n validity: string;\n\n public static create(phrase: string, lang: RpxLanguage, translation: TranslatedData, validity: string): Translation {\n const t = new Translation();\n t.phrase = phrase;\n t.lang = lang;\n t.translation = translation;\n t.validity = validity;\n return t;\n }\n\n isExpired(): boolean {\n return DateTime.fromISO(this.validity) < DateTime.now();\n }\n}\n\nexport class TranslationDB extends Dexie {\n translations: Table<Translation, number>;\n\n constructor() {\n super('RpxTranslations');\n this.version(1).stores({\n translations: '++id, [phrase+lang]'\n });\n this.translations.mapToClass(Translation);\n }\n}\n\nexport const db = new TranslationDB();\n","import { Replacements } from '../../rpx-translation.service';\n\nexport const replacePlaceholders = (input: string, replacements: Replacements) => {\n Object.keys(replacements).forEach(key => {\n // Ideally use replaceAll here, but that isn't fully compatible with targeted browsers and packaging yet\n const search = `%${key}%`;\n while (input.indexOf(search) !== -1) {\n input = input.replace(search, replacements[key]);\n }\n });\n\n return input;\n};\n","export const matchCase = (str1: string, str2: string) => {\n if (str1.length === 0 || str2.length === 0) {\n return str2;\n }\n\n if (str1.charAt(0).toUpperCase() === str1.charAt(0)) {\n return `${str2.charAt(0).toUpperCase()}${str2.slice(1)}`;\n } else {\n return str2.toLowerCase();\n }\n};\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { liveQuery } from 'dexie';\nimport { DateTime } from 'luxon';\nimport { BehaviorSubject, from, Observable, of, Subscription, timer } from 'rxjs';\nimport { catchError, map, tap } from 'rxjs/operators';\nimport { db, Translation } from './db';\nimport { RpxLanguage, YesOrNoValue } from './rpx-language.enum';\nimport { RpxTranslationConfig } from './rpx-translation.config';\nimport { TranslatedData } from './models/translated-data.model';\nimport { replacePlaceholders } from './helpers/replace-placeholders/replace-placeholders.helper';\nimport { matchCase } from './helpers/match-case/match-case.helper';\n\ninterface TranslationsDTO {\n translations: { [from: string]: string };\n}\n\nexport type Replacements = { [key: string]: string };\n\n@Injectable()\nexport class RpxTranslationService {\n private currentLanguage: RpxLanguage = 'en';\n private languageKey = 'exui-preferred-language';\n\n private phrases: { [phrase: string]: BehaviorSubject<TranslatedData> } = {};\n private observables: { [phrase: string]: Observable<TranslatedData> } = {};\n private requesting: { [lang: string]: string[] } = {};\n private requestTimerSubscription: Subscription | null;\n private languageSource: BehaviorSubject<RpxLanguage> = new BehaviorSubject<RpxLanguage>(this.currentLanguage);\n public language$: Observable<RpxLanguage>;\n\n public set language(lang: RpxLanguage) {\n if (lang !== this.currentLanguage) {\n this.currentLanguage = lang;\n this.persistLanguage();\n this.languageSource.next(lang);\n Object.keys(this.phrases).forEach(phrase => this.translate(phrase));\n }\n }\n\n public get language(): RpxLanguage {\n return this.currentLanguage;\n }\n\n constructor(\n private config: RpxTranslationConfig,\n private http: HttpClient\n ) {\n const persistedLanguage = this.getPersistedLanguage();\n if (persistedLanguage) {\n this.language = persistedLanguage;\n } else {\n // no language persisted yet, save default\n this.persistLanguage();\n }\n this.language$ = this.languageSource.asObservable();\n }\n\n public getTranslation$(phrase: string): Observable<string> {\n return this.getTranslatedData(phrase).pipe(\n map(t => t.phrase)\n );\n }\n\n public getTranslationWithReplacements$(phrase: string, replacements: Replacements): Observable<string> {\n return this.getTranslatedData(phrase).pipe(\n map(translatedData => replacePlaceholders(translatedData.phrase, replacements))\n );\n }\n\n public getTranslationWithYesOrNo$(phrase: string, yesOrNoValue: string): Observable<string> {\n const isYes = yesOrNoValue?.toLowerCase() === YesOrNoValue.YES.toLowerCase();\n const isNo = yesOrNoValue?.toLowerCase() === YesOrNoValue.NO.toLowerCase();\n\n return this.getTranslatedData(phrase).pipe(map(translatedData => {\n const yesOrNoTranslated = isYes ? (translatedData?.yes || yesOrNoValue!) : (translatedData?.no || yesOrNoValue!);\n return matchCase(yesOrNoTranslated, yesOrNoValue!);\n }\n ));\n }\n\n private getTranslatedData(phrase: string): Observable<TranslatedData> {\n if (this.observables.hasOwnProperty(phrase)) {\n return this.observables[phrase];\n }\n\n return this.translate(phrase);\n }\n\n private translate(phrase: string): Observable<TranslatedData> {\n const lang = this.language;\n if (!this.phrases.hasOwnProperty(phrase)) {\n this.phrases[phrase] = new BehaviorSubject<TranslatedData>({phrase});\n this.observables[phrase] = this.phrases[phrase].asObservable();\n }\n\n if (lang === 'en') {\n this.phrases[phrase].next({phrase});\n } else {\n from(liveQuery(() => db.translations.where('[phrase+lang]').equals([phrase, lang]).first())).pipe(\n tap(t => {\n if (t && !t.isExpired()) {\n this.phrases[phrase].next(t.translation);\n } else {\n if (t) {\n // expired, clean up DB\n db.translations.delete(t.id!);\n }\n this.phrases[phrase].next({\n phrase: `${phrase} [Translation in progress]`,\n yes: 'Yes [Translation in progress]',\n no: 'No [Translation in progress]'\n });\n this.load(phrase, lang);\n }\n }),\n ).subscribe(() => {});\n }\n\n return this.observables[phrase];\n }\n\n private load(phrase: string, lang: RpxLanguage): void {\n if (lang === 'en') {\n this.phrases[phrase].next({\n phrase,\n yes: 'Yes',\n no: 'No'\n });\n return;\n }\n\n if (!this.requesting.hasOwnProperty(lang)) {\n this.requesting[lang] = [];\n }\n\n if (this.requesting[lang].indexOf(phrase) !== -1) {\n return;\n }\n\n this.requesting[lang].push(phrase);\n\n if (this.requestTimerSubscription) {\n this.requestTimerSubscription.unsubscribe();\n }\n\n this.requestTimerSubscription = timer(this.config.debounceTimeMs).subscribe(() => {\n const url = this.config.baseUrl + `/${lang}`;\n const s = this.http.post<TranslationsDTO>(url,\n {\n phrases: this.requesting[lang],\n }\n )\n .pipe(\n map(t => t.translations),\n catchError(() => {\n const translations: { [from: string]: string } = {};\n this.requesting[lang].forEach(p => translations[p] = this.config.testMode ? `[Test translation for ${p}]` : p);\n return of(translations);\n })\n ).subscribe((translations: { [from: string]: string }) => {\n const toAdd: Translation[] = [];\n Object.keys(translations).forEach(p => {\n const translation: TranslatedData = {\n phrase: translations[p]\n };\n toAdd.push(Translation.create(p, lang, translation, DateTime.now().plus(this.config.validity).toISO()));\n this.phrases[p].next(translation);\n });\n db.translations.bulkAdd(toAdd);\n this.requesting[lang] = [];\n this.requestTimerSubscription!.unsubscribe();\n this.requestTimerSubscription = null;\n s.unsubscribe();\n });\n });\n }\n\n private persistLanguage(): void {\n document.cookie = `${this.languageKey}=${this.currentLanguage};`;\n }\n\n private getPersistedLanguage(): RpxLanguage {\n return document.cookie.split(';').find(cookie => cookie.trim().startsWith(this.languageKey + '='))?.split('=')[1].trim() as RpxLanguage;\n }\n}\n","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectorRef, Injector, OnDestroy, Pipe, PipeTransform } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { YesOrNoValue } from './rpx-language.enum';\nimport { Replacements, RpxTranslationService } from './rpx-translation.service';\nimport { TranslatedData } from './models/translated-data.model';\nimport { replacePlaceholders } from './helpers/replace-placeholders/replace-placeholders.helper';\nimport { matchCase } from './helpers/match-case/match-case.helper';\n\n@Pipe({\n name: 'rpxTranslate',\n pure: false\n})\nexport class RpxTranslatePipe implements PipeTransform, OnDestroy {\n private asyncPipe: AsyncPipe;\n\n constructor(\n private translationService: RpxTranslationService,\n private injector: Injector\n ) {\n this.asyncPipe = new AsyncPipe(injector.get(ChangeDetectorRef));\n }\n\n public transform<T = string>(value: T, replacements?: Replacements | null, yesOrNoValue?: string): T | null {\n if (typeof value === 'string') {\n let o: Observable<string>;\n if (replacements) {\n o = this.translationService.getTranslationWithReplacements$(value, replacements);\n } else if (yesOrNoValue) {\n o = this.translationService.getTranslationWithYesOrNo$(value, yesOrNoValue);\n } else {\n o = this.translationService.getTranslation$(value);\n }\n\n const ret = this.asyncPipe.transform<string>(o);\n return ret as unknown as T;\n }\n\n return null;\n }\n\n public ngOnDestroy(): void {\n this.asyncPipe.ngOnDestroy();\n }\n}\n","import { HttpClientModule } from '@angular/common/http';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { RpxTranslatePipe } from './rpx-translate.pipe';\nimport { RpxTranslationConfig } from './rpx-translation.config';\nimport { RpxTranslationService } from './rpx-translation.service';\n\n@NgModule({\n declarations: [RpxTranslatePipe],\n imports: [HttpClientModule],\n exports: [RpxTranslatePipe]\n})\nexport class RpxTranslationModule {\n\n public static forRoot(config: RpxTranslationConfig): ModuleWithProviders {\n return {\n ngModule: RpxTranslationModule,\n providers: [\n {\n provide: RpxTranslationConfig, useValue: config\n },\n RpxTranslationService\n ]\n };\n }\n\n public static forChild(): ModuleWithProviders {\n return {\n ngModule: RpxTranslationModule\n };\n }\n}\n"],"names":["YesOrNoValue","DateTime","Dexie","BehaviorSubject","map","from","liveQuery","tap","timer","catchError","of","HttpClient","Injectable","AsyncPipe","ChangeDetectorRef","Injector","Pipe","NgModule","HttpClientModule"],"mappings":"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"}
|
|
@@ -12,5 +12,5 @@
|
|
|
12
12
|
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
13
13
|
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
14
14
|
PERFORMANCE OF THIS SOFTWARE.
|
|
15
|
-
***************************************************************************** */
|
|
15
|
+
***************************************************************************** */var p;function l(e,t,r,n){var s,i=arguments.length,o=i<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,r,n);else for(var a=e.length-1;a>=0;a--)(s=e[a])&&(o=(i<3?s(o):i>3?s(t,r,o):s(t,r))||o);return i>3&&o&&Object.defineProperty(t,r,o),o}(p=e.YesOrNoValue||(e.YesOrNoValue={})).YES="Yes",p.NO="No";var h=function(){this.debounceTimeMs=300,this.testMode=!1},f=function(){function e(){}return e.create=function(t,r,n,s){var i=new e;return i.phrase=t,i.lang=r,i.translation=n,i.validity=s,i},e.prototype.isExpired=function(){return s.DateTime.fromISO(this.validity)<s.DateTime.now()},e}(),g=new(function(e){function t(){var t=e.call(this,"RpxTranslations")||this;return t.version(1).stores({translations:"++id, [phrase+lang]"}),t.translations.mapToClass(f),t}return function(e,t){function r(){this.constructor=e}c(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}(t,e),t}(u)),d=function(){function a(e,t){this.config=e,this.http=t,this.currentLanguage="en",this.languageKey="exui-preferred-language",this.phrases={},this.observables={},this.requesting={},this.languageSource=new i.BehaviorSubject(this.currentLanguage);var r=this.getPersistedLanguage();r?this.language=r:this.persistLanguage(),this.language$=this.languageSource.asObservable()}return Object.defineProperty(a.prototype,"language",{get:function(){return this.currentLanguage},set:function(e){var t=this;e!==this.currentLanguage&&(this.currentLanguage=e,this.persistLanguage(),this.languageSource.next(e),Object.keys(this.phrases).forEach((function(e){return t.translate(e)})))},enumerable:!0,configurable:!0}),a.prototype.getTranslation$=function(e){return this.getTranslatedData(e).pipe(o.map((function(e){return e.phrase})))},a.prototype.getTranslationWithReplacements$=function(e,t){return this.getTranslatedData(e).pipe(o.map((function(e){return function(e,t){return Object.keys(t).forEach((function(r){for(var n="%"+r+"%";-1!==e.indexOf(n);)e=e.replace(n,t[r])})),e}(e.phrase,t)})))},a.prototype.getTranslationWithYesOrNo$=function(t,r){var n=(null==r?void 0:r.toLowerCase())===e.YesOrNoValue.YES.toLowerCase();null==r||r.toLowerCase(),e.YesOrNoValue.NO.toLowerCase();return this.getTranslatedData(t).pipe(o.map((function(e){var t,s,i=n?(null==e?void 0:e.yes)||r:(null==e?void 0:e.no)||r;return s=r,0===(t=i).length||0===s.length?s:t.charAt(0).toUpperCase()===t.charAt(0)?""+s.charAt(0).toUpperCase()+s.slice(1):s.toLowerCase()})))},a.prototype.getTranslatedData=function(e){return this.observables.hasOwnProperty(e)?this.observables[e]:this.translate(e)},a.prototype.translate=function(e){var t=this,r=this.language;return this.phrases.hasOwnProperty(e)||(this.phrases[e]=new i.BehaviorSubject({phrase:e}),this.observables[e]=this.phrases[e].asObservable()),"en"===r?this.phrases[e].next({phrase:e}):i.from(n.liveQuery((function(){return g.translations.where("[phrase+lang]").equals([e,r]).first()}))).pipe(o.tap((function(n){n&&!n.isExpired()?t.phrases[e].next(n.translation):(n&&g.translations.delete(n.id),t.phrases[e].next({phrase:e+" [Translation in progress]",yes:"Yes [Translation in progress]",no:"No [Translation in progress]"}),t.load(e,r))}))).subscribe((function(){})),this.observables[e]},a.prototype.load=function(e,t){var r=this;"en"!==t?(this.requesting.hasOwnProperty(t)||(this.requesting[t]=[]),-1===this.requesting[t].indexOf(e)&&(this.requesting[t].push(e),this.requestTimerSubscription&&this.requestTimerSubscription.unsubscribe(),this.requestTimerSubscription=i.timer(this.config.debounceTimeMs).subscribe((function(){var e=r.config.baseUrl+"/"+t,n=r.http.post(e,{phrases:r.requesting[t]}).pipe(o.map((function(e){return e.translations})),o.catchError((function(){var e={};return r.requesting[t].forEach((function(t){return e[t]=r.config.testMode?"[Test translation for "+t+"]":t})),i.of(e)}))).subscribe((function(e){var i=[];Object.keys(e).forEach((function(n){var o={phrase:e[n]};i.push(f.create(n,t,o,s.DateTime.now().plus(r.config.validity).toISO())),r.phrases[n].next(o)})),g.translations.bulkAdd(i),r.requesting[t]=[],r.requestTimerSubscription.unsubscribe(),r.requestTimerSubscription=null,n.unsubscribe()}))})))):this.phrases[e].next({phrase:e,yes:"Yes",no:"No"})},a.prototype.persistLanguage=function(){document.cookie=this.languageKey+"="+this.currentLanguage+";"},a.prototype.getPersistedLanguage=function(){var e,t=this;return null===(e=document.cookie.split(";").find((function(e){return e.trim().startsWith(t.languageKey+"=")})))||void 0===e?void 0:e.split("=")[1].trim()},a.ctorParameters=function(){return[{type:h},{type:t.HttpClient}]},a=l([r.Injectable()],a)}(),y=function(){function e(e,t){this.translationService=e,this.injector=t,this.asyncPipe=new a.AsyncPipe(t.get(r.ChangeDetectorRef))}return e.prototype.transform=function(e,t,r){if("string"==typeof e){var n=void 0;return n=t?this.translationService.getTranslationWithReplacements$(e,t):r?this.translationService.getTranslationWithYesOrNo$(e,r):this.translationService.getTranslation$(e),this.asyncPipe.transform(n)}return null},e.prototype.ngOnDestroy=function(){this.asyncPipe.ngOnDestroy()},e.ctorParameters=function(){return[{type:d},{type:r.Injector}]},e=l([r.Pipe({name:"rpxTranslate",pure:!1})],e)}(),b=function(){function e(){}var n;return n=e,e.forRoot=function(e){return{ngModule:n,providers:[{provide:h,useValue:e},d]}},e.forChild=function(){return{ngModule:n}},e=n=l([r.NgModule({declarations:[y],imports:[t.HttpClientModule],exports:[y]})],e)}();e.RpxTranslatePipe=y,e.RpxTranslationConfig=h,e.RpxTranslationModule=b,e.RpxTranslationService=d,Object.defineProperty(e,"__esModule",{value:!0})}));
|
|
16
16
|
//# sourceMappingURL=rpx-xui-translation.umd.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","ng://rpx-xui-translation/lib/rpx-language.enum.ts","ng://rpx-xui-translation/lib/rpx-translation.config.ts","ng://rpx-xui-translation/lib/db.ts","ng://rpx-xui-translation/lib/rpx-translation.service.ts","ng://rpx-xui-translation/lib/rpx-translate.pipe.ts","ng://rpx-xui-translation/lib/helpers/replace-placeholders/replace-placeholders.helper.ts","ng://rpx-xui-translation/lib/helpers/match-case/match-case.helper.ts","ng://rpx-xui-translation/lib/rpx-translation.module.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","this","constructor","prototype","create","YesOrNoValue","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","debounceTimeMs","testMode","Translation","phrase","lang","translation","validity","t","isExpired","DateTime","fromISO","now","db","_super","TranslationDB","_this","call","version","stores","translations","mapToClass","Dexie","RpxTranslationService","config","http","currentLanguage","languageKey","phrases","observables","requesting","languageSource","BehaviorSubject","persistedLanguage","getPersistedLanguage","language","persistLanguage","language$","asObservable","next","keys","forEach","translate","getTranslation","yesOrNoValue","from","liveQuery","where","equals","first","pipe","tap","delete","id","yes","no","load","subscribe","yesOrNoField","indexOf","push","requestTimerSubscription","unsubscribe","timer","url","baseUrl","s","post","map","catchError","of","toAdd","plus","toISO","bulkAdd","document","cookie","_a","split","find","trim","startsWith","RpxTranslationConfig","HttpClient","Injectable","RpxTranslatePipe","translationService","ref","transform","value","replacements","retString","o","ret","isYes","toLowerCase","YES","isNo","NO","input","search","replace","replacePlaceholders","str2","str1","charAt","toUpperCase","slice","ChangeDetectorRef","Pipe","name","pure","AsyncPipe","RpxTranslationModule","forRoot","ngModule","RpxTranslationModule_1","providers","provide","useValue","forChild","NgModule","declarations","imports","HttpClientModule","exports"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","export type RpxLanguage = 'en' | 'cy';\nexport enum YesOrNoValue {\n YES = 'Yes',\n NO = 'No',\n}\n","export type ValidityDurationSpec = {\n years?: number;\n quarters?: number;\n months?: number;\n weeks?: number;\n days?: number;\n hours?: number;\n minutes?: number;\n seconds?: number;\n milliseconds?: number;\n};\n\nexport class RpxTranslationConfig {\n validity: ValidityDurationSpec;\n baseUrl: string;\n\n debounceTimeMs = 300;\n testMode = false;\n}\n","import Dexie, { Table } from 'dexie';\nimport { DateTime } from 'luxon';\nimport { RpxLanguage } from './rpx-language.enum';\nimport { TranslatedData } from './helpers/models/translated-data.model';\n\nexport class Translation {\n id?: number;\n phrase: string;\n lang: RpxLanguage;\n translation: TranslatedData;\n validity: string;\n\n public static create(phrase: string, lang: RpxLanguage, translation: TranslatedData, validity: string): Translation {\n const t = new Translation();\n t.phrase = phrase;\n t.lang = lang;\n t.translation = translation;\n t.validity = validity;\n return t;\n }\n\n isExpired(): boolean {\n return DateTime.fromISO(this.validity) < DateTime.now();\n }\n}\n\nexport class TranslationDB extends Dexie {\n translations: Table<Translation, number>;\n\n constructor() {\n super('RpxTranslations');\n this.version(1).stores({\n translations: '++id, [phrase+lang]'\n });\n this.translations.mapToClass(Translation);\n }\n}\n\nexport const db = new TranslationDB();\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { liveQuery } from 'dexie';\nimport { DateTime } from 'luxon';\nimport { BehaviorSubject, from, Observable, of, Subscription, timer } from 'rxjs';\nimport { catchError, map, tap } from 'rxjs/operators';\nimport { db, Translation } from './db';\nimport { RpxLanguage } from './rpx-language.enum';\nimport { RpxTranslationConfig } from './rpx-translation.config';\nimport { TranslatedData } from './helpers/models/translated-data.model';\n\ninterface TranslationsDTO {\n translations: { [from: string]: string };\n}\n\nexport type Replacements = { [key: string]: string };\n\n@Injectable()\nexport class RpxTranslationService {\n private currentLanguage: RpxLanguage = 'en';\n private languageKey = 'exui-preferred-language';\n\n private phrases: { [phrase: string]: BehaviorSubject<TranslatedData> } = {};\n private observables: { [phrase: string]: Observable<TranslatedData> } = {};\n private requesting: { [lang: string]: string[] } = {};\n private requestTimerSubscription: Subscription | null;\n private languageSource: BehaviorSubject<RpxLanguage> = new BehaviorSubject<RpxLanguage>(this.currentLanguage);\n public language$: Observable<RpxLanguage>;\n\n public set language(lang: RpxLanguage) {\n if (lang !== this.currentLanguage) {\n this.currentLanguage = lang;\n this.persistLanguage();\n this.languageSource.next(lang);\n Object.keys(this.phrases).forEach(phrase => this.translate(phrase));\n }\n }\n\n public get language(): RpxLanguage {\n return this.currentLanguage;\n }\n\n constructor(\n private config: RpxTranslationConfig,\n private http: HttpClient\n ) {\n const persistedLanguage = this.getPersistedLanguage();\n if (persistedLanguage) {\n this.language = persistedLanguage;\n } else {\n // no language persisted yet, save default\n this.persistLanguage();\n }\n this.language$ = this.languageSource.asObservable();\n }\n\n public getTranslation(phrase: string, yesOrNoValue?: string): Observable<TranslatedData> {\n if (this.observables.hasOwnProperty(phrase)) {\n return this.observables[phrase];\n }\n\n return this.translate(phrase, yesOrNoValue);\n }\n\n public translate(phrase: string, yesOrNoValue?: string): Observable<TranslatedData> {\n const lang = this.language;\n if (!this.phrases.hasOwnProperty(phrase)) {\n this.phrases[phrase] = new BehaviorSubject<TranslatedData>({phrase});\n this.observables[phrase] = this.phrases[phrase].asObservable();\n }\n\n if (lang === 'en') {\n this.phrases[phrase].next({phrase});\n } else {\n from(liveQuery(() => db.translations.where('[phrase+lang]').equals([phrase, lang]).first())).pipe(\n tap(t => {\n if (t && !t.isExpired()) {\n this.phrases[phrase].next(t.translation);\n } else {\n if (t) {\n // expired, clean up DB\n db.translations.delete(t.id!);\n }\n this.phrases[phrase].next({\n phrase: `${phrase} [Translation in progress]`,\n yes: 'Yes/No [Translation in progress]',\n no: 'Yes/No [Translation in progress]'\n });\n this.load(phrase, lang, !!yesOrNoValue);\n }\n })\n ).subscribe(() => { });\n }\n\n return this.observables[phrase];\n }\n\n private load(phrase: string, lang: RpxLanguage, yesOrNoField: boolean): void {\n if (lang === 'en') {\n this.phrases[phrase].next({phrase});\n return;\n }\n\n if (!this.requesting.hasOwnProperty(lang)) {\n this.requesting[lang] = [];\n }\n\n if (this.requesting[lang].indexOf(phrase) !== -1) {\n return;\n }\n\n this.requesting[lang].push(phrase);\n\n if (this.requestTimerSubscription) {\n this.requestTimerSubscription.unsubscribe();\n }\n\n this.requestTimerSubscription = timer(this.config.debounceTimeMs).subscribe(() => {\n const url = this.config.baseUrl + `/${lang}`;\n const s = this.http.post<TranslationsDTO>(url,\n {\n phrases: this.requesting[lang],\n yesOrNoField\n }\n )\n .pipe(\n map(t => t.translations),\n catchError(() => {\n const translations: { [from: string]: string } = {};\n this.requesting[lang].forEach(p => translations[p] = this.config.testMode ? `[Test translation for ${p}]` : p);\n return of(translations);\n })\n ).subscribe((translations: { [from: string]: string }) => {\n const toAdd: Translation[] = [];\n Object.keys(translations).forEach(p => {\n const translation: TranslatedData = {\n phrase: translations[p]\n };\n toAdd.push(Translation.create(p, lang, translation, DateTime.now().plus(this.config.validity).toISO()));\n this.phrases[p].next(translation);\n });\n db.translations.bulkAdd(toAdd);\n this.requesting[lang] = [];\n this.requestTimerSubscription!.unsubscribe();\n this.requestTimerSubscription = null;\n s.unsubscribe();\n });\n });\n }\n\n private persistLanguage(): void {\n document.cookie = `${this.languageKey}=${this.currentLanguage};`;\n }\n\n private getPersistedLanguage(): RpxLanguage {\n return document.cookie.split(';').find(cookie => cookie.trim().startsWith(this.languageKey + '='))?.split('=')[1].trim() as RpxLanguage;\n }\n}\n","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectorRef, Pipe, PipeTransform } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Replacements, RpxTranslationService } from './rpx-translation.service';\nimport { YesOrNoValue } from './rpx-language.enum';\nimport { TranslatedData } from './helpers/models/translated-data.model';\nimport { replacePlaceholders } from './helpers/replace-placeholders/replace-placeholders.helper';\nimport { matchCase } from './helpers/match-case/match-case.helper';\n\n@Pipe({\n name: 'rpxTranslate',\n pure: false\n})\nexport class RpxTranslatePipe extends AsyncPipe implements PipeTransform {\n constructor(\n private translationService: RpxTranslationService,\n ref: ChangeDetectorRef\n ) {\n super(ref);\n }\n\n transform<T = string>(value: T, replacements?: Replacements | null, yesOrNoValue?: string): T | null {\n if (typeof value === 'string') {\n let retString: string;\n const o: Observable<TranslatedData> = this.translationService.getTranslation(value, yesOrNoValue);\n const ret = super.transform<TranslatedData>(o);\n\n if (ret) {\n const isYes = yesOrNoValue?.toLowerCase() === YesOrNoValue.YES.toLowerCase();\n const isNo = yesOrNoValue?.toLowerCase() === YesOrNoValue.NO.toLowerCase();\n\n if (replacements) {\n retString = replacePlaceholders(ret.phrase, replacements);\n } else if (isYes || isNo) {\n retString = isYes ? (ret?.yes || yesOrNoValue!) : (ret?.no || yesOrNoValue!);\n matchCase(retString, yesOrNoValue!);\n } else {\n retString = ret.phrase;\n }\n } else {\n retString = yesOrNoValue ? yesOrNoValue : value;\n }\n\n return retString as unknown as T;\n }\n\n return null;\n }\n}\n","import { Replacements } from '../../rpx-translation.service';\n\nexport const replacePlaceholders = (input: string, replacements: Replacements) => {\n Object.keys(replacements).forEach(key => {\n // Ideally use replaceAll here, but that isn't fully compatible with targeted browsers and packaging yet\n const search = `%${key}%`;\n while (input.indexOf(search) !== -1) {\n input = input.replace(search, replacements[key]);\n }\n });\n\n return input;\n};\n","export const matchCase = (str1: string, str2: string) => {\n if (str1.length === 0 || str2.length === 0) {\n return str2;\n }\n\n if (str1.charAt(0).toUpperCase() === str1.charAt(0)) {\n return `${str2.charAt(0).toUpperCase()}${str2.slice(1)}`;\n } else {\n return str2.toLowerCase();\n }\n};\n","import { HttpClientModule } from '@angular/common/http';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { RpxTranslatePipe } from './rpx-translate.pipe';\nimport { RpxTranslationConfig } from './rpx-translation.config';\nimport { RpxTranslationService } from './rpx-translation.service';\n\n@NgModule({\n declarations: [RpxTranslatePipe],\n imports: [HttpClientModule],\n exports: [RpxTranslatePipe]\n})\nexport class RpxTranslationModule {\n\n public static forRoot(config: RpxTranslationConfig): ModuleWithProviders {\n return {\n ngModule: RpxTranslationModule,\n providers: [\n {\n provide: RpxTranslationConfig, useValue: config\n },\n RpxTranslationService\n ]\n };\n }\n\n public static forChild(): ModuleWithProviders {\n return {\n ngModule: RpxTranslationModule\n };\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","ng://rpx-xui-translation/lib/rpx-language.enum.ts","ng://rpx-xui-translation/lib/rpx-translation.config.ts","ng://rpx-xui-translation/lib/db.ts","ng://rpx-xui-translation/lib/rpx-translation.service.ts","ng://rpx-xui-translation/lib/helpers/replace-placeholders/replace-placeholders.helper.ts","ng://rpx-xui-translation/lib/helpers/match-case/match-case.helper.ts","ng://rpx-xui-translation/lib/rpx-translate.pipe.ts","ng://rpx-xui-translation/lib/rpx-translation.module.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","YesOrNoValue","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","this","debounceTimeMs","testMode","Translation","create","phrase","lang","translation","validity","t","prototype","isExpired","DateTime","fromISO","now","db","_super","TranslationDB","_this","call","version","stores","translations","mapToClass","__","constructor","__extends","Dexie","RpxTranslationService","config","http","currentLanguage","languageKey","phrases","observables","requesting","languageSource","BehaviorSubject","persistedLanguage","getPersistedLanguage","language","persistLanguage","language$","asObservable","next","keys","forEach","translate","getTranslation$","getTranslatedData","pipe","map","getTranslationWithReplacements$","replacements","translatedData","input","search","indexOf","replace","replacePlaceholders","getTranslationWithYesOrNo$","yesOrNoValue","isYes","toLowerCase","YES","NO","str1","str2","yesOrNoTranslated","yes","no","charAt","toUpperCase","slice","from","liveQuery","where","equals","first","tap","delete","id","load","subscribe","push","requestTimerSubscription","unsubscribe","timer","url","baseUrl","s","post","catchError","of","toAdd","plus","toISO","bulkAdd","document","cookie","_a","split","find","trim","startsWith","RpxTranslationConfig","HttpClient","Injectable","RpxTranslatePipe","translationService","injector","asyncPipe","AsyncPipe","get","ChangeDetectorRef","transform","value","o","ngOnDestroy","Injector","Pipe","name","pure","RpxTranslationModule","forRoot","ngModule","RpxTranslationModule_1","providers","provide","useValue","forChild","NgModule","declarations","imports","HttpClientModule","exports"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","export type RpxLanguage = 'en' | 'cy';\nexport enum YesOrNoValue {\n YES = 'Yes',\n NO = 'No',\n}\n","export type ValidityDurationSpec = {\n years?: number;\n quarters?: number;\n months?: number;\n weeks?: number;\n days?: number;\n hours?: number;\n minutes?: number;\n seconds?: number;\n milliseconds?: number;\n};\n\nexport class RpxTranslationConfig {\n validity: ValidityDurationSpec;\n baseUrl: string;\n\n debounceTimeMs = 300;\n testMode = false;\n}\n","import Dexie, { Table } from 'dexie';\nimport { DateTime } from 'luxon';\nimport { RpxLanguage } from './rpx-language.enum';\nimport { TranslatedData } from './models/translated-data.model';\n\nexport class Translation {\n id?: number;\n phrase: string;\n lang: RpxLanguage;\n translation: TranslatedData;\n validity: string;\n\n public static create(phrase: string, lang: RpxLanguage, translation: TranslatedData, validity: string): Translation {\n const t = new Translation();\n t.phrase = phrase;\n t.lang = lang;\n t.translation = translation;\n t.validity = validity;\n return t;\n }\n\n isExpired(): boolean {\n return DateTime.fromISO(this.validity) < DateTime.now();\n }\n}\n\nexport class TranslationDB extends Dexie {\n translations: Table<Translation, number>;\n\n constructor() {\n super('RpxTranslations');\n this.version(1).stores({\n translations: '++id, [phrase+lang]'\n });\n this.translations.mapToClass(Translation);\n }\n}\n\nexport const db = new TranslationDB();\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { liveQuery } from 'dexie';\nimport { DateTime } from 'luxon';\nimport { BehaviorSubject, from, Observable, of, Subscription, timer } from 'rxjs';\nimport { catchError, map, tap } from 'rxjs/operators';\nimport { db, Translation } from './db';\nimport { RpxLanguage, YesOrNoValue } from './rpx-language.enum';\nimport { RpxTranslationConfig } from './rpx-translation.config';\nimport { TranslatedData } from './models/translated-data.model';\nimport { replacePlaceholders } from './helpers/replace-placeholders/replace-placeholders.helper';\nimport { matchCase } from './helpers/match-case/match-case.helper';\n\ninterface TranslationsDTO {\n translations: { [from: string]: string };\n}\n\nexport type Replacements = { [key: string]: string };\n\n@Injectable()\nexport class RpxTranslationService {\n private currentLanguage: RpxLanguage = 'en';\n private languageKey = 'exui-preferred-language';\n\n private phrases: { [phrase: string]: BehaviorSubject<TranslatedData> } = {};\n private observables: { [phrase: string]: Observable<TranslatedData> } = {};\n private requesting: { [lang: string]: string[] } = {};\n private requestTimerSubscription: Subscription | null;\n private languageSource: BehaviorSubject<RpxLanguage> = new BehaviorSubject<RpxLanguage>(this.currentLanguage);\n public language$: Observable<RpxLanguage>;\n\n public set language(lang: RpxLanguage) {\n if (lang !== this.currentLanguage) {\n this.currentLanguage = lang;\n this.persistLanguage();\n this.languageSource.next(lang);\n Object.keys(this.phrases).forEach(phrase => this.translate(phrase));\n }\n }\n\n public get language(): RpxLanguage {\n return this.currentLanguage;\n }\n\n constructor(\n private config: RpxTranslationConfig,\n private http: HttpClient\n ) {\n const persistedLanguage = this.getPersistedLanguage();\n if (persistedLanguage) {\n this.language = persistedLanguage;\n } else {\n // no language persisted yet, save default\n this.persistLanguage();\n }\n this.language$ = this.languageSource.asObservable();\n }\n\n public getTranslation$(phrase: string): Observable<string> {\n return this.getTranslatedData(phrase).pipe(\n map(t => t.phrase)\n );\n }\n\n public getTranslationWithReplacements$(phrase: string, replacements: Replacements): Observable<string> {\n return this.getTranslatedData(phrase).pipe(\n map(translatedData => replacePlaceholders(translatedData.phrase, replacements))\n );\n }\n\n public getTranslationWithYesOrNo$(phrase: string, yesOrNoValue: string): Observable<string> {\n const isYes = yesOrNoValue?.toLowerCase() === YesOrNoValue.YES.toLowerCase();\n const isNo = yesOrNoValue?.toLowerCase() === YesOrNoValue.NO.toLowerCase();\n\n return this.getTranslatedData(phrase).pipe(map(translatedData => {\n const yesOrNoTranslated = isYes ? (translatedData?.yes || yesOrNoValue!) : (translatedData?.no || yesOrNoValue!);\n return matchCase(yesOrNoTranslated, yesOrNoValue!);\n }\n ));\n }\n\n private getTranslatedData(phrase: string): Observable<TranslatedData> {\n if (this.observables.hasOwnProperty(phrase)) {\n return this.observables[phrase];\n }\n\n return this.translate(phrase);\n }\n\n private translate(phrase: string): Observable<TranslatedData> {\n const lang = this.language;\n if (!this.phrases.hasOwnProperty(phrase)) {\n this.phrases[phrase] = new BehaviorSubject<TranslatedData>({phrase});\n this.observables[phrase] = this.phrases[phrase].asObservable();\n }\n\n if (lang === 'en') {\n this.phrases[phrase].next({phrase});\n } else {\n from(liveQuery(() => db.translations.where('[phrase+lang]').equals([phrase, lang]).first())).pipe(\n tap(t => {\n if (t && !t.isExpired()) {\n this.phrases[phrase].next(t.translation);\n } else {\n if (t) {\n // expired, clean up DB\n db.translations.delete(t.id!);\n }\n this.phrases[phrase].next({\n phrase: `${phrase} [Translation in progress]`,\n yes: 'Yes [Translation in progress]',\n no: 'No [Translation in progress]'\n });\n this.load(phrase, lang);\n }\n }),\n ).subscribe(() => {});\n }\n\n return this.observables[phrase];\n }\n\n private load(phrase: string, lang: RpxLanguage): void {\n if (lang === 'en') {\n this.phrases[phrase].next({\n phrase,\n yes: 'Yes',\n no: 'No'\n });\n return;\n }\n\n if (!this.requesting.hasOwnProperty(lang)) {\n this.requesting[lang] = [];\n }\n\n if (this.requesting[lang].indexOf(phrase) !== -1) {\n return;\n }\n\n this.requesting[lang].push(phrase);\n\n if (this.requestTimerSubscription) {\n this.requestTimerSubscription.unsubscribe();\n }\n\n this.requestTimerSubscription = timer(this.config.debounceTimeMs).subscribe(() => {\n const url = this.config.baseUrl + `/${lang}`;\n const s = this.http.post<TranslationsDTO>(url,\n {\n phrases: this.requesting[lang],\n }\n )\n .pipe(\n map(t => t.translations),\n catchError(() => {\n const translations: { [from: string]: string } = {};\n this.requesting[lang].forEach(p => translations[p] = this.config.testMode ? `[Test translation for ${p}]` : p);\n return of(translations);\n })\n ).subscribe((translations: { [from: string]: string }) => {\n const toAdd: Translation[] = [];\n Object.keys(translations).forEach(p => {\n const translation: TranslatedData = {\n phrase: translations[p]\n };\n toAdd.push(Translation.create(p, lang, translation, DateTime.now().plus(this.config.validity).toISO()));\n this.phrases[p].next(translation);\n });\n db.translations.bulkAdd(toAdd);\n this.requesting[lang] = [];\n this.requestTimerSubscription!.unsubscribe();\n this.requestTimerSubscription = null;\n s.unsubscribe();\n });\n });\n }\n\n private persistLanguage(): void {\n document.cookie = `${this.languageKey}=${this.currentLanguage};`;\n }\n\n private getPersistedLanguage(): RpxLanguage {\n return document.cookie.split(';').find(cookie => cookie.trim().startsWith(this.languageKey + '='))?.split('=')[1].trim() as RpxLanguage;\n }\n}\n","import { Replacements } from '../../rpx-translation.service';\n\nexport const replacePlaceholders = (input: string, replacements: Replacements) => {\n Object.keys(replacements).forEach(key => {\n // Ideally use replaceAll here, but that isn't fully compatible with targeted browsers and packaging yet\n const search = `%${key}%`;\n while (input.indexOf(search) !== -1) {\n input = input.replace(search, replacements[key]);\n }\n });\n\n return input;\n};\n","export const matchCase = (str1: string, str2: string) => {\n if (str1.length === 0 || str2.length === 0) {\n return str2;\n }\n\n if (str1.charAt(0).toUpperCase() === str1.charAt(0)) {\n return `${str2.charAt(0).toUpperCase()}${str2.slice(1)}`;\n } else {\n return str2.toLowerCase();\n }\n};\n","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectorRef, Injector, OnDestroy, Pipe, PipeTransform } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { YesOrNoValue } from './rpx-language.enum';\nimport { Replacements, RpxTranslationService } from './rpx-translation.service';\nimport { TranslatedData } from './models/translated-data.model';\nimport { replacePlaceholders } from './helpers/replace-placeholders/replace-placeholders.helper';\nimport { matchCase } from './helpers/match-case/match-case.helper';\n\n@Pipe({\n name: 'rpxTranslate',\n pure: false\n})\nexport class RpxTranslatePipe implements PipeTransform, OnDestroy {\n private asyncPipe: AsyncPipe;\n\n constructor(\n private translationService: RpxTranslationService,\n private injector: Injector\n ) {\n this.asyncPipe = new AsyncPipe(injector.get(ChangeDetectorRef));\n }\n\n public transform<T = string>(value: T, replacements?: Replacements | null, yesOrNoValue?: string): T | null {\n if (typeof value === 'string') {\n let o: Observable<string>;\n if (replacements) {\n o = this.translationService.getTranslationWithReplacements$(value, replacements);\n } else if (yesOrNoValue) {\n o = this.translationService.getTranslationWithYesOrNo$(value, yesOrNoValue);\n } else {\n o = this.translationService.getTranslation$(value);\n }\n\n const ret = this.asyncPipe.transform<string>(o);\n return ret as unknown as T;\n }\n\n return null;\n }\n\n public ngOnDestroy(): void {\n this.asyncPipe.ngOnDestroy();\n }\n}\n","import { HttpClientModule } from '@angular/common/http';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { RpxTranslatePipe } from './rpx-translate.pipe';\nimport { RpxTranslationConfig } from './rpx-translation.config';\nimport { RpxTranslationService } from './rpx-translation.service';\n\n@NgModule({\n declarations: [RpxTranslatePipe],\n imports: [HttpClientModule],\n exports: [RpxTranslatePipe]\n})\nexport class RpxTranslationModule {\n\n public static forRoot(config: RpxTranslationConfig): ModuleWithProviders {\n return {\n ngModule: RpxTranslationModule,\n providers: [\n {\n provide: RpxTranslationConfig, useValue: config\n },\n RpxTranslationService\n ]\n };\n }\n\n public static forChild(): ModuleWithProviders {\n return {\n ngModule: RpxTranslationModule\n };\n }\n}\n"]}
|