UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

40 lines (39 loc) 1.26 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.icu = exports.default = void 0; var _intlMessageformat = _interopRequireDefault(require("intl-messageformat")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } const ICU_PATTERN = /\{[^}]+,\s*(?:plural|select|selectordinal|number|date|time)\b/; const MAX_CACHE_SIZE = 1000; const cache = new Map(); const icu = exports.icu = { isICU(message) { return ICU_PATTERN.test(message); }, format(message, values, locale) { const cacheKey = `${locale}::${message}`; let formatter = cache.get(cacheKey); if (!formatter) { formatter = new _intlMessageformat.default(message, locale); if (cache.size >= MAX_CACHE_SIZE) { cache.delete(cache.keys().next().value); } cache.set(cacheKey, formatter); } const result = formatter.format(values); if (typeof result === 'string') { return result; } if (Array.isArray(result)) { if (result.every(part => typeof part === 'string')) { return result.join(''); } return result; } return String(result); } }; var _default = exports.default = icu; //# sourceMappingURL=icuFormatMessage.js.map