@atlaskit/editor-plugin-code-block
Version:
Code block plugin for @atlaskit/editor-core
50 lines (48 loc) • 2.58 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.saveRecentLanguage = exports.getRecentLanguages = exports.clearRecentLanguages = exports.RECENT_LANGUAGES_STORAGE_KEY = void 0;
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _storageClient = require("@atlaskit/frontend-utilities/storage-client");
var _languageList = require("../pm-plugins/language-list");
var _languagePickerOptions = require("./language-picker-options");
var RECENT_LANGUAGES_STORAGE_KEY = exports.RECENT_LANGUAGES_STORAGE_KEY = 'recently-used-languages';
var RECENT_LANGUAGES_STORAGE_CLIENT_KEY = '@atlaskit/editor-plugin-code-block';
var MAX_RECENT_LANGUAGES = 3;
var RECENT_LANGUAGE_BLOCKLIST = new Set([_languagePickerOptions.DETECT_LANGUAGE_VALUE, _languagePickerOptions.NONE_LANGUAGE_VALUE, _languagePickerOptions.PLAIN_TEXT_LANGUAGE_VALUE]);
var KNOWN_LANGUAGE_VALUES = new Set(_languageList.DEFAULT_LANGUAGES.map(function (language) {
return (0, _languageList.getLanguageIdentifier)(language);
}));
var recentLanguagesStorageClient = new _storageClient.StorageClient(RECENT_LANGUAGES_STORAGE_CLIENT_KEY);
var isValidRecentLanguage = function isValidRecentLanguage(language) {
return KNOWN_LANGUAGE_VALUES.has(language) && !RECENT_LANGUAGE_BLOCKLIST.has(language);
};
var readRecentLanguages = function readRecentLanguages() {
var storedValue = recentLanguagesStorageClient.getItem(RECENT_LANGUAGES_STORAGE_KEY);
return Array.isArray(storedValue) ? storedValue : [];
};
var getRecentLanguages = exports.getRecentLanguages = function getRecentLanguages() {
try {
return readRecentLanguages();
} catch (_unused) {
return [];
}
};
var saveRecentLanguage = exports.saveRecentLanguage = function saveRecentLanguage(language) {
if (!isValidRecentLanguage(language)) {
return;
}
try {
var recentLanguages = readRecentLanguages();
var nextRecentLanguages = Array.from(new Set([language].concat((0, _toConsumableArray2.default)(recentLanguages)))).slice(0, MAX_RECENT_LANGUAGES);
// StorageClient only exposes setItemWithExpiry; omitting the duration stores without expiry.
recentLanguagesStorageClient.setItemWithExpiry(RECENT_LANGUAGES_STORAGE_KEY, nextRecentLanguages);
} catch (_unused2) {
return;
}
};
var clearRecentLanguages = exports.clearRecentLanguages = function clearRecentLanguages() {
recentLanguagesStorageClient.removeItem(RECENT_LANGUAGES_STORAGE_KEY);
};