UNPKG

@atlaskit/editor-plugin-code-block

Version:

Code block plugin for @atlaskit/editor-core

43 lines 1.71 kB
import { codeBlockButtonMessages } from '@atlaskit/editor-common/messages'; import { fg } from '@atlaskit/platform-feature-flags'; export const NONE_LANGUAGE_VALUE = 'none'; export const DETECT_LANGUAGE_VALUE = 'autodetect'; export const PLAIN_TEXT_LANGUAGE_VALUE = 'text'; export const getDetectLanguageOption = formatMessage => ({ alias: [DETECT_LANGUAGE_VALUE], label: formatMessage(codeBlockButtonMessages.detectLanguage), selectionSource: 'pinned', value: DETECT_LANGUAGE_VALUE }); export const createGroupedLanguageOptions = ({ formatMessage, languages, recentlyUsedLanguages = [] }) => { const recentlyUsedLanguageValues = new Set(recentlyUsedLanguages.map(language => language.value)); const allLanguages = languages.filter(language => language.value !== NONE_LANGUAGE_VALUE && language.value !== PLAIN_TEXT_LANGUAGE_VALUE && !recentlyUsedLanguageValues.has(language.value)); const plainTextOption = languages.find(language => language.value === PLAIN_TEXT_LANGUAGE_VALUE); const pinnedOptions = fg('platform_editor_code_block_language_detection_flow') ? [getDetectLanguageOption(formatMessage)] : []; if (plainTextOption) { pinnedOptions.push({ ...plainTextOption, selectionSource: 'pinned' }); } return [{ label: '', options: pinnedOptions }, ...(recentlyUsedLanguages.length > 0 ? [{ label: formatMessage(codeBlockButtonMessages.recentlyUsed), options: recentlyUsedLanguages.map(language => ({ ...language, selectionSource: 'recentlyUsed' })) }] : []), { label: formatMessage(codeBlockButtonMessages.all), options: allLanguages.map(language => ({ ...language, selectionSource: 'all' })) }]; };