@atlaskit/editor-plugin-code-block
Version:
Code block plugin for @atlaskit/editor-core
43 lines (42 loc) • 2.1 kB
JavaScript
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
import { StorageClient } from '@atlaskit/frontend-utilities/storage-client';
import { DEFAULT_LANGUAGES, getLanguageIdentifier } from '../pm-plugins/language-list';
import { DETECT_LANGUAGE_VALUE, NONE_LANGUAGE_VALUE, PLAIN_TEXT_LANGUAGE_VALUE } from './language-picker-options';
export var 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([DETECT_LANGUAGE_VALUE, NONE_LANGUAGE_VALUE, PLAIN_TEXT_LANGUAGE_VALUE]);
var KNOWN_LANGUAGE_VALUES = new Set(DEFAULT_LANGUAGES.map(function (language) {
return getLanguageIdentifier(language);
}));
var recentLanguagesStorageClient = new 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 : [];
};
export var getRecentLanguages = function getRecentLanguages() {
try {
return readRecentLanguages();
} catch (_unused) {
return [];
}
};
export var saveRecentLanguage = function saveRecentLanguage(language) {
if (!isValidRecentLanguage(language)) {
return;
}
try {
var recentLanguages = readRecentLanguages();
var nextRecentLanguages = Array.from(new Set([language].concat(_toConsumableArray(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;
}
};
export var clearRecentLanguages = function clearRecentLanguages() {
recentLanguagesStorageClient.removeItem(RECENT_LANGUAGES_STORAGE_KEY);
};