UNPKG

@toast-ui/editor

Version:

GFM Markdown Wysiwyg Editor - Productive and Extensible

223 lines (201 loc) 5.8 kB
/** * @toast-ui/editor : i18n * @version 3.2.2 | Fri Feb 17 2023 * @author NHN Cloud FE Development Lab <dl_javascript@nhn.com> * @license MIT */ /** * @fileoverview Extend the target object from other objects. * @author NHN FE Development Lab <dl_javascript@nhn.com> */ /** * @module object */ /** * Extend the target object from other objects. * @param {object} target - Object that will be extended * @param {...object} objects - Objects as sources * @returns {object} Extended object * @memberof module:object */ function extend(target, objects) { // eslint-disable-line no-unused-vars var hasOwnProp = Object.prototype.hasOwnProperty; var source, prop, i, len; for (i = 1, len = arguments.length; i < len; i += 1) { source = arguments[i]; for (prop in source) { if (hasOwnProp.call(source, prop)) { target[prop] = source[prop]; } } } return target; } var extend_1 = extend; /** * @fileoverview Check whether the given variable is an instance of Array or not. * @author NHN FE Development Lab <dl_javascript@nhn.com> */ /** * Check whether the given variable is an instance of Array or not. * If the given variable is an instance of Array, return true. * @param {*} obj - Target for checking * @returns {boolean} Is array instance? * @memberof module:type */ function isArray$1(obj) { return obj instanceof Array; } var isArray_1 = isArray$1; /* eslint-disable complexity */ var isArray = isArray_1; /** * @module array */ /** * Returns the first index at which a given element can be found in the array * from start index(default 0), or -1 if it is not present. * It compares searchElement to elements of the Array using strict equality * (the same method used by the ===, or triple-equals, operator). * @param {*} searchElement Element to locate in the array * @param {Array} array Array that will be traversed. * @param {number} startIndex Start index in array for searching (default 0) * @returns {number} the First index at which a given element, or -1 if it is not present * @memberof module:array * @example * // ES6 * import inArray from 'tui-code-snippet/array/inArray'; * * // CommonJS * const inArray = require('tui-code-snippet/array/inArray'); * * const arr = ['one', 'two', 'three', 'four']; * const idx1 = inArray('one', arr, 3); // -1 * const idx2 = inArray('one', arr); // 0 */ function inArray(searchElement, array, startIndex) { var i; var length; startIndex = startIndex || 0; if (!isArray(array)) { return -1; } if (Array.prototype.indexOf) { return Array.prototype.indexOf.call(array, searchElement, startIndex); } length = array.length; for (i = startIndex; startIndex >= 0 && i < length; i += 1) { if (array[i] === searchElement) { return i; } } return -1; } var inArray_1 = inArray; /** * @class * @ignore * @classdesc ES6 Map */ var Map = /** @class */ (function () { function Map() { this.keys = []; this.values = []; } Map.prototype.getKeyIndex = function (key) { return inArray_1(key, this.keys); }; Map.prototype.get = function (key) { return this.values[this.getKeyIndex(key)]; }; Map.prototype.set = function (key, value) { var keyIndex = this.getKeyIndex(key); if (keyIndex > -1) { this.values[keyIndex] = value; } else { this.keys.push(key); this.values.push(value); } return this; }; Map.prototype.has = function (key) { return this.getKeyIndex(key) > -1; }; Map.prototype.delete = function (key) { var keyIndex = this.getKeyIndex(key); if (keyIndex > -1) { this.keys.splice(keyIndex, 1); this.values.splice(keyIndex, 1); return true; } return false; }; Map.prototype.forEach = function (callback, thisArg) { var _this = this; if (thisArg === void 0) { thisArg = this; } this.values.forEach(function (value, index) { if (value && _this.keys[index]) { callback.call(thisArg, value, _this.keys[index], _this); } }); }; Map.prototype.clear = function () { this.keys = []; this.values = []; }; return Map; }()); /** * @fileoverview Implements i18n * @author NHN Cloud FE Development Lab <dl_javascript@nhn.com> */ var DEFAULT_CODE = 'en-US'; /** * Class I18n * @ignore */ var I18n = /** @class */ (function () { function I18n() { this.code = DEFAULT_CODE; this.langs = new Map(); } I18n.prototype.setCode = function (code) { this.code = code || DEFAULT_CODE; }; /** * Set language set * @param {string|string[]} codes locale code * @param {object} data language set */ I18n.prototype.setLanguage = function (codes, data) { var _this = this; codes = [].concat(codes); codes.forEach(function (code) { if (!_this.langs.has(code)) { _this.langs.set(code, data); } else { var langData = _this.langs.get(code); _this.langs.set(code, extend_1(langData, data)); } }); }; I18n.prototype.get = function (key, code) { if (!code) { code = this.code; } var langSet = this.langs.get(code); if (!langSet) { langSet = this.langs.get(DEFAULT_CODE); } var text = langSet[key]; if (!text) { throw new Error("There is no text key \"" + key + "\" in " + code); } return text; }; return I18n; }()); var i18n = new I18n(); export { I18n, i18n as default };