UNPKG

mui-language-picker

Version:
116 lines (115 loc) 4.52 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getRtl = exports.getLangTag = exports.getFamily = exports.displayFamily = exports.fontMap = exports.scriptName = exports.getScripts = exports.getPart = exports.hasPart = exports.getExact = exports.hasExact = exports.langTags = void 0; var langtags_json_1 = __importDefault(require("./data/langtags.json")); var tagIndex_1 = __importDefault(require("./data/tagIndex")); var langtagsIndex_1 = __importDefault(require("./data/langtagsIndex")); var scriptFontIndex_1 = __importDefault(require("./data/scriptFontIndex")); var codeScripts_1 = __importDefault(require("./data/codeScripts")); var scriptName_1 = __importDefault(require("./data/scriptName")); var families_json_1 = __importDefault(require("./data/families.json")); var bcp47_1 = require("./bcp47"); var rtlScripts_1 = __importDefault(require("./data/rtlScripts")); exports.langTags = langtags_json_1.default; exports.langTags.push({ full: 'qaa', iso639_3: 'qaa', localname: 'Unknown', name: 'Unknown', regionname: 'anywhere', script: 'Latn', sldr: false, tag: 'qaa', }); var tagIndex = new Map(tagIndex_1.default); var hasExact = function (tag) { return tagIndex.has(tag.toLowerCase()); }; exports.hasExact = hasExact; var getExact = function (tag) { var index = tagIndex.get(tag.toLowerCase()); if (!index) return undefined; return exports.langTags[index]; }; exports.getExact = getExact; var tokenIndex = new Map(langtagsIndex_1.default); var hasPart = function (tag) { return tokenIndex.has(tag.slice(0, 2).toLowerCase()); }; exports.hasPart = hasPart; var getPart = function (tag, limit, start) { var _a; var indexes = tokenIndex.get(tag.slice(0, 2).toLowerCase()); if (!indexes) return undefined; if (start) { var find = indexes.indexOf(start); if (find !== -1) indexes = indexes.slice(find); } var count = 0; var result = []; for (var _i = 0, indexes_1 = indexes; _i < indexes_1.length; _i++) { var index = indexes_1[_i]; if ((_a = exports.langTags[index]) === null || _a === void 0 ? void 0 : _a.tag) { if (limit && count > limit) return { result: result, index: index }; var element = exports.langTags[index]; var re = new RegExp(tag, 'i'); if (re.test(JSON.stringify(element))) { result.push(exports.langTags[index]); count++; } } } return { result: result, index: -1 }; }; exports.getPart = getPart; var scriptMap = new Map(codeScripts_1.default); var getScripts = function (code) { var _a; return (_a = scriptMap.get(code)) !== null && _a !== void 0 ? _a : []; }; exports.getScripts = getScripts; exports.scriptName = new Map(scriptName_1.default); exports.fontMap = new Map(scriptFontIndex_1.default); var families = families_json_1.default; var displayFamily = function (familyId) { var _a, _b; return (_b = (_a = families[familyId]) === null || _a === void 0 ? void 0 : _a.family) !== null && _b !== void 0 ? _b : familyId; }; exports.displayFamily = displayFamily; var getFamily = function (familyId) { return families[familyId]; }; exports.getFamily = getFamily; var getLangTag = function (tag) { if (!tag) return undefined; // put exact code match at the top of the list if ((0, exports.hasExact)(tag)) { var langTag = (0, exports.getExact)(tag); if (langTag) return langTag; } // check for a short tag match if ((0, bcp47_1.bcp47Match)(tag)) { var lastDash = tag.lastIndexOf('-'); while (lastDash > 0) { var shortTag = tag.slice(0, lastDash); if ((0, exports.hasExact)(shortTag)) { var langTag = (0, exports.getExact)(shortTag); if (langTag) { return langTag; } } else { lastDash = shortTag.lastIndexOf('-'); } } } }; exports.getLangTag = getLangTag; var getRtl = function (tag) { if (!tag || tag.indexOf('fonipa') !== -1) return false; var langTag = (0, exports.getLangTag)(tag); if (langTag) return rtlScripts_1.default.includes(langTag.script); return false; }; exports.getRtl = getRtl;