UNPKG

@atlaskit/editor-plugin-code-block

Version:

Code block plugin for @atlaskit/editor-core

50 lines (48 loc) 2.58 kB
"use strict"; 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); };