@atlaskit/editor-plugin-code-block 14.1.31 → 14.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # @atlaskit/editor-plugin-code-block
2
2
 
3
+ ## 14.2.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`6891ca32d94cc`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/6891ca32d94cc) -
8
+ Add `Mermaid` as a selectable language in the code block language picker, behind the
9
+ `platform_editor_code_block_mermaid_language` feature gate. When the gate is enabled, Mermaid
10
+ appears in the picker and the advanced (CodeMirror) code block provides Mermaid syntax
11
+ highlighting via `codemirror-lang-mermaid`. The language is intentionally kept out of the shared
12
+ `@atlaskit/code` supported-languages list so it is fully gated and does not leak into other
13
+ consumers.
14
+
15
+ ## 14.1.32
16
+
17
+ ### Patch Changes
18
+
19
+ - Updated dependencies
20
+
3
21
  ## 14.1.31
4
22
 
5
23
  ### Patch Changes
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.DEFAULT_LANGUAGES = void 0;
7
+ exports.MERMAID_LANGUAGE = exports.DEFAULT_LANGUAGES = void 0;
8
8
  exports.createLanguageList = createLanguageList;
9
9
  exports.filterSupportedLanguages = filterSupportedLanguages;
10
10
  exports.findMatchedLanguage = findMatchedLanguage;
@@ -17,6 +17,15 @@ var DEFAULT_LANGUAGES = exports.DEFAULT_LANGUAGES = [{
17
17
  alias: ['none'],
18
18
  value: 'none'
19
19
  }].concat((0, _toConsumableArray2.default)(_constants.SUPPORTED_LANGUAGES));
20
+ // Feature-gated languages injected into the picker at runtime. Kept out of the
21
+ // shared @atlaskit/code SUPPORTED_LANGUAGES so they stay gated and don't leak to
22
+ // other consumers (e.g. the renderer). The mutable-array literal matches the
23
+ // `Language` union's catch-all member, so the verbose types above need no change.
24
+ var MERMAID_LANGUAGE = exports.MERMAID_LANGUAGE = {
25
+ name: 'Mermaid',
26
+ alias: ['mermaid'],
27
+ value: 'mermaid'
28
+ };
20
29
  function findMatchedLanguage(supportedLanguages, language) {
21
30
  if (!language) {
22
31
  return undefined;
@@ -86,11 +86,14 @@ var getToolbarConfig = exports.getToolbarConfig = function getToolbarConfig() {
86
86
  var api = arguments.length > 1 ? arguments[1] : undefined;
87
87
  var overrideLanguageName = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
88
88
  var formatCodeProvider = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : undefined;
89
- var languageList = (0, _languageList.createLanguageList)(overrideLanguageName ? _languageList.DEFAULT_LANGUAGES.map(function (languageOption) {
89
+ // Append gated languages (e.g. Mermaid) at runtime. Build a fresh array since
90
+ // createLanguageList sorts in place and would otherwise mutate DEFAULT_LANGUAGES.
91
+ var supportedLanguages = (0, _platformFeatureFlags.fg)('platform_editor_code_block_mermaid_language') ? [].concat((0, _toConsumableArray2.default)(_languageList.DEFAULT_LANGUAGES), [_languageList.MERMAID_LANGUAGE]) : _languageList.DEFAULT_LANGUAGES;
92
+ var languageList = (0, _languageList.createLanguageList)(overrideLanguageName ? supportedLanguages.map(function (languageOption) {
90
93
  return _objectSpread(_objectSpread({}, languageOption), {}, {
91
94
  name: overrideLanguageName(languageOption.name)
92
95
  });
93
- }) : _languageList.DEFAULT_LANGUAGES);
96
+ }) : supportedLanguages);
94
97
  var languagePickerOptions = languageList.map(function (lang) {
95
98
  return {
96
99
  label: lang.name,
@@ -304,9 +307,6 @@ var getToolbarConfig = exports.getToolbarConfig = function getToolbarConfig() {
304
307
 
305
308
  /**
306
309
  * Filters language list based on both name and alias properties.
307
- * @param option
308
- * @param rawInput
309
- * @example
310
310
  */
311
311
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
312
312
  var languageListFilter = exports.languageListFilter = function languageListFilter(option, rawInput) {
@@ -6,6 +6,15 @@ export const DEFAULT_LANGUAGES = [{
6
6
  alias: ['none'],
7
7
  value: 'none'
8
8
  }, ...SUPPORTED_LANGUAGES];
9
+ // Feature-gated languages injected into the picker at runtime. Kept out of the
10
+ // shared @atlaskit/code SUPPORTED_LANGUAGES so they stay gated and don't leak to
11
+ // other consumers (e.g. the renderer). The mutable-array literal matches the
12
+ // `Language` union's catch-all member, so the verbose types above need no change.
13
+ export const MERMAID_LANGUAGE = {
14
+ name: 'Mermaid',
15
+ alias: ['mermaid'],
16
+ value: 'mermaid'
17
+ };
9
18
  export function findMatchedLanguage(supportedLanguages, language) {
10
19
  if (!language) {
11
20
  return undefined;
@@ -18,7 +18,7 @@ import { DETECT_LANGUAGE_VALUE, NONE_LANGUAGE_VALUE, PLAIN_TEXT_LANGUAGE_VALUE }
18
18
  import { preloadFormatterOnIntent } from '../utils/format-code/formatter';
19
19
  import { autoDetectPluginKey } from './auto-detect-state';
20
20
  import { provideVisualFeedbackForCopyButton, removeVisualFeedbackForCopyButton } from './codeBlockCopySelectionPlugin';
21
- import { createLanguageList, DEFAULT_LANGUAGES, getLanguageIdentifier } from './language-list';
21
+ import { createLanguageList, DEFAULT_LANGUAGES, getLanguageIdentifier, MERMAID_LANGUAGE } from './language-list';
22
22
  import { pluginKey } from './plugin-key';
23
23
  const getDetectLanguageOption = formatMessage => ({
24
24
  alias: [],
@@ -63,10 +63,13 @@ const getAutoDetectPickerValue = ({
63
63
  return undefined;
64
64
  };
65
65
  export const getToolbarConfig = (allowCopyToClipboard = false, api, overrideLanguageName = undefined, formatCodeProvider = undefined) => {
66
- const languageList = createLanguageList(overrideLanguageName ? DEFAULT_LANGUAGES.map(languageOption => ({
66
+ // Append gated languages (e.g. Mermaid) at runtime. Build a fresh array since
67
+ // createLanguageList sorts in place and would otherwise mutate DEFAULT_LANGUAGES.
68
+ const supportedLanguages = fg('platform_editor_code_block_mermaid_language') ? [...DEFAULT_LANGUAGES, MERMAID_LANGUAGE] : DEFAULT_LANGUAGES;
69
+ const languageList = createLanguageList(overrideLanguageName ? supportedLanguages.map(languageOption => ({
67
70
  ...languageOption,
68
71
  name: overrideLanguageName(languageOption.name)
69
- })) : DEFAULT_LANGUAGES);
72
+ })) : supportedLanguages);
70
73
  const languagePickerOptions = languageList.map(lang => ({
71
74
  label: lang.name,
72
75
  value: getLanguageIdentifier(lang),
@@ -272,9 +275,6 @@ export const getToolbarConfig = (allowCopyToClipboard = false, api, overrideLang
272
275
 
273
276
  /**
274
277
  * Filters language list based on both name and alias properties.
275
- * @param option
276
- * @param rawInput
277
- * @example
278
278
  */
279
279
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
280
280
  export const languageListFilter = (option, rawInput) => {
@@ -7,6 +7,15 @@ export var DEFAULT_LANGUAGES = [{
7
7
  alias: ['none'],
8
8
  value: 'none'
9
9
  }].concat(_toConsumableArray(SUPPORTED_LANGUAGES));
10
+ // Feature-gated languages injected into the picker at runtime. Kept out of the
11
+ // shared @atlaskit/code SUPPORTED_LANGUAGES so they stay gated and don't leak to
12
+ // other consumers (e.g. the renderer). The mutable-array literal matches the
13
+ // `Language` union's catch-all member, so the verbose types above need no change.
14
+ export var MERMAID_LANGUAGE = {
15
+ name: 'Mermaid',
16
+ alias: ['mermaid'],
17
+ value: 'mermaid'
18
+ };
10
19
  export function findMatchedLanguage(supportedLanguages, language) {
11
20
  if (!language) {
12
21
  return undefined;
@@ -22,7 +22,7 @@ import { DETECT_LANGUAGE_VALUE, NONE_LANGUAGE_VALUE, PLAIN_TEXT_LANGUAGE_VALUE }
22
22
  import { preloadFormatterOnIntent } from '../utils/format-code/formatter';
23
23
  import { autoDetectPluginKey } from './auto-detect-state';
24
24
  import { provideVisualFeedbackForCopyButton, removeVisualFeedbackForCopyButton } from './codeBlockCopySelectionPlugin';
25
- import { createLanguageList, DEFAULT_LANGUAGES, getLanguageIdentifier } from './language-list';
25
+ import { createLanguageList, DEFAULT_LANGUAGES, getLanguageIdentifier, MERMAID_LANGUAGE } from './language-list';
26
26
  import { pluginKey } from './plugin-key';
27
27
  var getDetectLanguageOption = function getDetectLanguageOption(formatMessage) {
28
28
  return {
@@ -77,11 +77,14 @@ export var getToolbarConfig = function getToolbarConfig() {
77
77
  var api = arguments.length > 1 ? arguments[1] : undefined;
78
78
  var overrideLanguageName = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
79
79
  var formatCodeProvider = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : undefined;
80
- var languageList = createLanguageList(overrideLanguageName ? DEFAULT_LANGUAGES.map(function (languageOption) {
80
+ // Append gated languages (e.g. Mermaid) at runtime. Build a fresh array since
81
+ // createLanguageList sorts in place and would otherwise mutate DEFAULT_LANGUAGES.
82
+ var supportedLanguages = fg('platform_editor_code_block_mermaid_language') ? [].concat(_toConsumableArray(DEFAULT_LANGUAGES), [MERMAID_LANGUAGE]) : DEFAULT_LANGUAGES;
83
+ var languageList = createLanguageList(overrideLanguageName ? supportedLanguages.map(function (languageOption) {
81
84
  return _objectSpread(_objectSpread({}, languageOption), {}, {
82
85
  name: overrideLanguageName(languageOption.name)
83
86
  });
84
- }) : DEFAULT_LANGUAGES);
87
+ }) : supportedLanguages);
85
88
  var languagePickerOptions = languageList.map(function (lang) {
86
89
  return {
87
90
  label: lang.name,
@@ -295,9 +298,6 @@ export var getToolbarConfig = function getToolbarConfig() {
295
298
 
296
299
  /**
297
300
  * Filters language list based on both name and alias properties.
298
- * @param option
299
- * @param rawInput
300
- * @example
301
301
  */
302
302
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
303
303
  export var languageListFilter = function languageListFilter(option, rawInput) {