UNPKG

@atlaskit/editor-plugin-code-block

Version:

Code block plugin for @atlaskit/editor-core

42 lines • 1.61 kB
import { codeBlockButtonMessages } from '@atlaskit/editor-common/messages/codeBlockButton'; 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 = [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' })) }]; };