UNPKG

@atlaskit/editor-plugin-code-block

Version:

Code block plugin for @atlaskit/editor-core

43 lines (42 loc) 2.1 kB
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); };