@js-sugar/angular
Version:
JS-Sugar core package (Angular)
68 lines • 9.66 kB
JavaScript
export class Locale {
constructor(data) {
this._data = data;
Object.freeze(data);
}
get name() {
return this._data.name;
}
get rtl() {
return this._data.rtl === true;
}
get data() {
return this._data;
}
clone(newProps) {
const configs = {
name: newProps?.name ?? this._data.name,
rtl: newProps?.rtl ?? this._data.rtl,
dictionary: newProps?.dictionary ?? this._data.dictionary,
form: newProps?.form ?? this._data.form,
};
return new Locale(configs);
}
extend(values) {
return this.clone({
dictionary: { ...this._data.dictionary, ...values?.dictionary },
form: {
validation: {
error: {
defaultMessage: this._data?.form?.validation?.error?.defaultMessage,
translators: { ...this._data?.form?.validation?.error?.translators, ...values.errorTranslators }
}
}
}
});
}
translateError(key, value) {
const e = this._data?.form?.validation?.error;
const translatorFunc = e?.translators ? e.translators[key] : undefined;
return typeof translatorFunc === 'function' ? translatorFunc(value) : e?.defaultMessage;
}
translateErrors(errors) {
const result = {};
for (const key in errors) {
if (Object.prototype.hasOwnProperty.call(errors, key)) {
result[key] = {
key: key,
value: errors[key],
text: this.translateError(key, errors[key])
};
}
}
return result;
}
translateFirstError(errors) {
const key = Object.keys(errors)[0];
const value = errors[key];
return {
key,
value,
text: this.translateError(key, value)
};
}
lookup(dictionaryKey) {
return this._data.dictionary ? this._data.dictionary[dictionaryKey] : undefined;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvbGliL2xvY2FsaXphdGlvbi9sb2NhbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxPQUFPLE1BQU07SUFHakIsWUFBWSxJQUFnQjtRQUMxQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBSXRCLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFJLEdBQUc7UUFDTCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFHRCxLQUFLLENBQUMsUUFBOEI7UUFDbEMsTUFBTSxPQUFPLEdBQWU7WUFDMUIsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJO1lBQ3ZDLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRztZQUNwQyxVQUFVLEVBQUUsUUFBUSxFQUFFLFVBQVUsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVU7WUFDekQsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJO1NBQ3hDLENBQUM7UUFFRixPQUFPLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFHRCxNQUFNLENBQUMsTUFHTjtRQUNDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztZQUNoQixVQUFVLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLEdBQUcsTUFBTSxFQUFFLFVBQVUsRUFBRTtZQUMvRCxJQUFJLEVBQUU7Z0JBQ0osVUFBVSxFQUFFO29CQUNWLEtBQUssRUFBRTt3QkFDTCxjQUFjLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxjQUFjO3dCQUNuRSxXQUFXLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixFQUFFO3FCQUNqRztpQkFDRjthQUNGO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUdELGNBQWMsQ0FBQyxHQUFXLEVBQUUsS0FBVTtRQUNwQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDO1FBQzlDLE1BQU0sY0FBYyxHQUFHLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUN2RSxPQUFPLE9BQU8sY0FBYyxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsY0FBYyxDQUFBO0lBQ3pGLENBQUM7SUFHRCxlQUFlLENBQUMsTUFBVztRQUN6QixNQUFNLE1BQU0sR0FBZ0QsRUFBRSxDQUFDO1FBQy9ELEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxFQUFFO1lBQ3hCLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsRUFBRTtnQkFDckQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHO29CQUNaLEdBQUcsRUFBRSxHQUFHO29CQUNSLEtBQUssRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDO29CQUNsQixJQUFJLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUM1QyxDQUFDO2FBQ0g7U0FDRjtRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFHRCxtQkFBbUIsQ0FBQyxNQUFXO1FBQzdCLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkMsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLE9BQU87WUFDTCxHQUFHO1lBQ0gsS0FBSztZQUNMLElBQUksRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUM7U0FDdEMsQ0FBQztJQUNKLENBQUM7SUFHRCxNQUFNLENBQUMsYUFBcUI7UUFDMUIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNsRixDQUFDO0NBS0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2NhbGVEYXRhLCBMb2NhbGVEaWN0aW9uYXJ5LCBMb2NhbGVFcnJvclRyYW5zbGF0b3JzIH0gZnJvbSBcIi4vbG9jYWxlLWRhdGFcIjtcclxuaW1wb3J0IHsgTG9jYWxpemVkVmFsaWRhdGlvbkVycm9yIH0gZnJvbSBcIi4vdHlwZXNcIjtcclxuXHJcbi8qKiBMb2NhbGUgKEltbXV0YWJsZSkgKi9cclxuZXhwb3J0IGNsYXNzIExvY2FsZSB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZGF0YTogTG9jYWxlRGF0YTtcclxuXHJcbiAgY29uc3RydWN0b3IoZGF0YTogTG9jYWxlRGF0YSkge1xyXG4gICAgdGhpcy5fZGF0YSA9IGRhdGE7XHJcbiAgICBPYmplY3QuZnJlZXplKGRhdGEpO1xyXG4gICAgLy8gT2JqZWN0LmZyZWV6ZShkYXRhLmRpY3Rpb25hcnkpO1xyXG4gICAgLy8gT2JqZWN0LmZyZWV6ZShkYXRhLmZvcm0udmFsaWRhdGlvbi5lcnJvcik7XHJcbiAgICAvLyBPYmplY3QuZnJlZXplKGRhdGEuZm9ybS52YWxpZGF0aW9uLmVycm9yLnRyYW5zbGF0b3JzKTtcclxuICB9XHJcblxyXG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGF0YS5uYW1lO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHJ0bCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9kYXRhLnJ0bCA9PT0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGdldCBkYXRhKCk6IExvY2FsZURhdGEge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RhdGE7XHJcbiAgfVxyXG5cclxuICAvKiogQ2xvbmVzIHRoaXMgbG9jYWxlICovXHJcbiAgY2xvbmUobmV3UHJvcHM/OiBQYXJ0aWFsPExvY2FsZURhdGE+KTogTG9jYWxlIHtcclxuICAgIGNvbnN0IGNvbmZpZ3M6IExvY2FsZURhdGEgPSB7XHJcbiAgICAgIG5hbWU6IG5ld1Byb3BzPy5uYW1lID8/IHRoaXMuX2RhdGEubmFtZSxcclxuICAgICAgcnRsOiBuZXdQcm9wcz8ucnRsID8/IHRoaXMuX2RhdGEucnRsLFxyXG4gICAgICBkaWN0aW9uYXJ5OiBuZXdQcm9wcz8uZGljdGlvbmFyeSA/PyB0aGlzLl9kYXRhLmRpY3Rpb25hcnksXHJcbiAgICAgIGZvcm06IG5ld1Byb3BzPy5mb3JtID8/IHRoaXMuX2RhdGEuZm9ybSxcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIG5ldyBMb2NhbGUoY29uZmlncyk7XHJcbiAgfVxyXG5cclxuICAvKiogRXh0ZW5kcyB0aGlzIG9iamVjdCBhbmQgcmV0dXJucyBhIG5ldyBMb2NhbGUgKi9cclxuICBleHRlbmQodmFsdWVzOiB7XHJcbiAgICBkaWN0aW9uYXJ5PzogTG9jYWxlRGljdGlvbmFyeSxcclxuICAgIGVycm9yVHJhbnNsYXRvcnM/OiBMb2NhbGVFcnJvclRyYW5zbGF0b3JzXHJcbiAgfSk6IExvY2FsZSB7XHJcbiAgICByZXR1cm4gdGhpcy5jbG9uZSh7XHJcbiAgICAgIGRpY3Rpb25hcnk6IHsgLi4udGhpcy5fZGF0YS5kaWN0aW9uYXJ5LCAuLi52YWx1ZXM/LmRpY3Rpb25hcnkgfSxcclxuICAgICAgZm9ybToge1xyXG4gICAgICAgIHZhbGlkYXRpb246IHtcclxuICAgICAgICAgIGVycm9yOiB7XHJcbiAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlOiB0aGlzLl9kYXRhPy5mb3JtPy52YWxpZGF0aW9uPy5lcnJvcj8uZGVmYXVsdE1lc3NhZ2UsXHJcbiAgICAgICAgICAgIHRyYW5zbGF0b3JzOiB7IC4uLnRoaXMuX2RhdGE/LmZvcm0/LnZhbGlkYXRpb24/LmVycm9yPy50cmFuc2xhdG9ycywgLi4udmFsdWVzLmVycm9yVHJhbnNsYXRvcnMgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKiogVHJhbnNsYXRlcyBhIHZhbGlkYXRpb24gZXJyb3IgKi9cclxuICB0cmFuc2xhdGVFcnJvcihrZXk6IHN0cmluZywgdmFsdWU6IGFueSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICBjb25zdCBlID0gdGhpcy5fZGF0YT8uZm9ybT8udmFsaWRhdGlvbj8uZXJyb3I7XHJcbiAgICBjb25zdCB0cmFuc2xhdG9yRnVuYyA9IGU/LnRyYW5zbGF0b3JzID8gZS50cmFuc2xhdG9yc1trZXldIDogdW5kZWZpbmVkO1xyXG4gICAgcmV0dXJuIHR5cGVvZiB0cmFuc2xhdG9yRnVuYyA9PT0gJ2Z1bmN0aW9uJyA/IHRyYW5zbGF0b3JGdW5jKHZhbHVlKSA6IGU/LmRlZmF1bHRNZXNzYWdlXHJcbiAgfVxyXG5cclxuICAvKiogVHJhbnNsYXRlcyB2YWxpZGF0aW9uIGVycm9ycyAqL1xyXG4gIHRyYW5zbGF0ZUVycm9ycyhlcnJvcnM6IGFueSk6IHsgW2tleTogc3RyaW5nXTogTG9jYWxpemVkVmFsaWRhdGlvbkVycm9yIH0ge1xyXG4gICAgY29uc3QgcmVzdWx0OiB7IFtrZXk6IHN0cmluZ106IExvY2FsaXplZFZhbGlkYXRpb25FcnJvciB9ID0ge307XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBlcnJvcnMpIHtcclxuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlcnJvcnMsIGtleSkpIHtcclxuICAgICAgICByZXN1bHRba2V5XSA9IHtcclxuICAgICAgICAgIGtleToga2V5LFxyXG4gICAgICAgICAgdmFsdWU6IGVycm9yc1trZXldLFxyXG4gICAgICAgICAgdGV4dDogdGhpcy50cmFuc2xhdGVFcnJvcihrZXksIGVycm9yc1trZXldKVxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgLyoqIFRyYW5zbGF0ZXMgZmlyc3QgdmFsaWRhdGlvbiBlcnJvciAqL1xyXG4gIHRyYW5zbGF0ZUZpcnN0RXJyb3IoZXJyb3JzOiBhbnkpOiBMb2NhbGl6ZWRWYWxpZGF0aW9uRXJyb3IgfCB1bmRlZmluZWQge1xyXG4gICAgY29uc3Qga2V5ID0gT2JqZWN0LmtleXMoZXJyb3JzKVswXTtcclxuICAgIGNvbnN0IHZhbHVlID0gZXJyb3JzW2tleV07XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBrZXksXHJcbiAgICAgIHZhbHVlLFxyXG4gICAgICB0ZXh0OiB0aGlzLnRyYW5zbGF0ZUVycm9yKGtleSwgdmFsdWUpXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqIExvb2tzIHVwIGEga2V5IGluIHRoZSBsb2NhbGUgZGljdGlvbmFyeSAqL1xyXG4gIGxvb2t1cChkaWN0aW9uYXJ5S2V5OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RhdGEuZGljdGlvbmFyeSA/IHRoaXMuX2RhdGEuZGljdGlvbmFyeVtkaWN0aW9uYXJ5S2V5XSA6IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIC8vIGZvcm1hdERhdGUoZGF0ZVRpbWU6IERhdGVUaW1lLCBmb3JtYXQ6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgLy8gICByZXR1cm4gJ2Zvcm1hdGVkIERhdGVUaW1lJztcclxuICAvLyB9XHJcbn1cclxuIl19