@atlaskit/editor-plugin-code-block 4.3.0 → 4.4.1

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,26 @@
1
1
  # @atlaskit/editor-plugin-code-block
2
2
 
3
+ ## 4.4.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [#149482](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/149482)
8
+ [`1f1f73876c3c8`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/1f1f73876c3c8) -
9
+ ED-27860 Add analytics for copy and delete button in floating toolbars
10
+ - Updated dependencies
11
+
12
+ ## 4.4.0
13
+
14
+ ### Minor Changes
15
+
16
+ - [#141575](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/141575)
17
+ [`4639ea2b9bab0`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/4639ea2b9bab0) -
18
+ Adds support for overriding language names in the code block language list.
19
+
20
+ ### Patch Changes
21
+
22
+ - Updated dependencies
23
+
3
24
  ## 4.3.0
4
25
 
5
26
  ### Minor Changes
@@ -126,7 +126,7 @@ var codeBlockPlugin = function codeBlockPlugin(_ref) {
126
126
  }
127
127
  }];
128
128
  },
129
- floatingToolbar: (0, _toolbar.getToolbarConfig)(options === null || options === void 0 ? void 0 : options.allowCopyToClipboard, api)
129
+ floatingToolbar: (0, _toolbar.getToolbarConfig)(options === null || options === void 0 ? void 0 : options.allowCopyToClipboard, api, options === null || options === void 0 ? void 0 : options.overrideLanguageName)
130
130
  }
131
131
  };
132
132
  };
@@ -3,11 +3,11 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.copyContentToClipboard = exports.changeLanguage = void 0;
6
+ exports.copyContentToClipboardWithAnalytics = exports.copyContentToClipboard = exports.changeLanguage = void 0;
7
7
  exports.createInsertCodeBlockTransaction = createInsertCodeBlockTransaction;
8
8
  exports.ignoreFollowingMutations = void 0;
9
9
  exports.insertCodeBlockWithAnalytics = insertCodeBlockWithAnalytics;
10
- exports.toggleWordWrapStateForCodeBlockNode = exports.resetShouldIgnoreFollowingMutations = exports.resetCopiedState = exports.removeCodeBlock = void 0;
10
+ exports.toggleWordWrapStateForCodeBlockNode = exports.resetShouldIgnoreFollowingMutations = exports.resetCopiedState = exports.removeCodeBlockWithAnalytics = exports.removeCodeBlock = void 0;
11
11
  var _analytics = require("@atlaskit/editor-common/analytics");
12
12
  var _clipboard = require("@atlaskit/editor-common/clipboard");
13
13
  var _codeBlock = require("@atlaskit/editor-common/code-block");
@@ -20,6 +20,16 @@ var _actions = require("../pm-plugins/actions");
20
20
  var _codeBlockCopySelectionPlugin = require("../pm-plugins/codeBlockCopySelectionPlugin");
21
21
  var _pluginKey = require("../pm-plugins/plugin-key");
22
22
  var _transformToCodeBlock = require("../pm-plugins/transform-to-code-block");
23
+ var removeCodeBlockWithAnalytics = exports.removeCodeBlockWithAnalytics = function removeCodeBlockWithAnalytics(editorAnalyticsAPI) {
24
+ return (0, _editorAnalytics.withAnalytics)(editorAnalyticsAPI, {
25
+ action: _analytics.ACTION.DELETED,
26
+ actionSubject: _analytics.ACTION_SUBJECT.CODE_BLOCK,
27
+ attributes: {
28
+ inputMethod: _analytics.INPUT_METHOD.FLOATING_TB
29
+ },
30
+ eventType: _analytics.EVENT_TYPE.TRACK
31
+ })(removeCodeBlock);
32
+ };
23
33
  var removeCodeBlock = exports.removeCodeBlock = function removeCodeBlock(state, dispatch) {
24
34
  var nodes = state.schema.nodes,
25
35
  tr = state.tr;
@@ -63,6 +73,35 @@ var changeLanguage = exports.changeLanguage = function changeLanguage(editorAnal
63
73
  };
64
74
  };
65
75
  };
76
+ var copyContentToClipboardWithAnalytics = exports.copyContentToClipboardWithAnalytics = function copyContentToClipboardWithAnalytics(editorAnalyticsAPI) {
77
+ return function (state, dispatch) {
78
+ var nodes = state.schema.nodes,
79
+ tr = state.tr;
80
+ var codeBlock = (0, _utils.findParentNodeOfType)(nodes.codeBlock)(tr.selection);
81
+ var textContent = codeBlock && codeBlock.node.textContent;
82
+ if (textContent) {
83
+ (0, _clipboard.copyToClipboard)(textContent);
84
+ var copyToClipboardTr = tr;
85
+ copyToClipboardTr.setMeta(_pluginKey.pluginKey, {
86
+ type: _actions.ACTIONS.SET_COPIED_TO_CLIPBOARD,
87
+ data: true
88
+ });
89
+ copyToClipboardTr.setMeta(_codeBlockCopySelectionPlugin.copySelectionPluginKey, 'remove-selection');
90
+ if (editorAnalyticsAPI) {
91
+ var analyticsPayload = (0, _clipboard.getAnalyticsPayload)(state, _analytics.ACTION.COPIED);
92
+ if (analyticsPayload) {
93
+ analyticsPayload.attributes.inputMethod = _analytics.INPUT_METHOD.FLOATING_TB;
94
+ analyticsPayload.attributes.nodeType = codeBlock === null || codeBlock === void 0 ? void 0 : codeBlock.node.type.name;
95
+ editorAnalyticsAPI.attachAnalyticsEvent(analyticsPayload)(copyToClipboardTr);
96
+ }
97
+ }
98
+ if (dispatch) {
99
+ dispatch(copyToClipboardTr);
100
+ }
101
+ }
102
+ return true;
103
+ };
104
+ };
66
105
  var copyContentToClipboard = exports.copyContentToClipboard = function copyContentToClipboard(state, dispatch) {
67
106
  var nodes = state.schema.nodes,
68
107
  tr = state.tr;
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.languageListFilter = exports.getToolbarConfig = void 0;
9
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
10
  var _codeBlock = require("@atlaskit/editor-common/code-block");
10
11
  var _messages = _interopRequireWildcard(require("@atlaskit/editor-common/messages"));
11
12
  var _utils = require("@atlaskit/editor-prosemirror/utils");
@@ -21,10 +22,12 @@ var _languageList = require("./language-list");
21
22
  var _pluginKey = require("./plugin-key");
22
23
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
23
24
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
24
- var languageList = (0, _languageList.createLanguageList)(_languageList.DEFAULT_LANGUAGES);
25
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
26
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
25
27
  var getToolbarConfig = exports.getToolbarConfig = function getToolbarConfig() {
26
28
  var allowCopyToClipboard = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
27
29
  var api = arguments.length > 1 ? arguments[1] : undefined;
30
+ var overrideLanguageName = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
28
31
  return function (state, _ref) {
29
32
  var _api$decorations$acti, _api$decorations, _api$analytics, _codeBlockState$pos, _node$attrs;
30
33
  var formatMessage = _ref.formatMessage;
@@ -43,6 +46,11 @@ var getToolbarConfig = exports.getToolbarConfig = function getToolbarConfig() {
43
46
  }
44
47
  var isWrapped = (0, _codeBlock.isCodeBlockWordWrapEnabled)(node);
45
48
  var language = node === null || node === void 0 || (_node$attrs = node.attrs) === null || _node$attrs === void 0 ? void 0 : _node$attrs.language;
49
+ var languageList = (0, _languageList.createLanguageList)(overrideLanguageName ? _languageList.DEFAULT_LANGUAGES.map(function (language) {
50
+ return _objectSpread(_objectSpread({}, language), {}, {
51
+ name: overrideLanguageName(language.name)
52
+ });
53
+ }) : _languageList.DEFAULT_LANGUAGES);
46
54
  var options = languageList.map(function (lang) {
47
55
  return {
48
56
  label: lang.name,
@@ -80,7 +88,7 @@ var getToolbarConfig = exports.getToolbarConfig = function getToolbarConfig() {
80
88
  icon: _copy.default,
81
89
  // note: copyContentToClipboard contains logic that also removes the
82
90
  // visual feedback for the copy button
83
- onClick: _editorCommands.copyContentToClipboard,
91
+ onClick: (0, _platformFeatureFlags.fg)('platform_editor_controls_patch_analytics_2') ? (0, _editorCommands.copyContentToClipboardWithAnalytics)(editorAnalyticsAPI) : _editorCommands.copyContentToClipboard,
84
92
  title: formatMessage(codeBlockState.contentCopied ? _messages.codeBlockButtonMessages.copiedCodeToClipboard : _messages.codeBlockButtonMessages.copyCodeToClipboard),
85
93
  onMouseEnter: _codeBlockCopySelectionPlugin.provideVisualFeedbackForCopyButton,
86
94
  // note: resetCopiedState contains logic that also removes the
@@ -102,7 +110,7 @@ var getToolbarConfig = exports.getToolbarConfig = function getToolbarConfig() {
102
110
  onMouseLeave: hoverDecoration === null || hoverDecoration === void 0 ? void 0 : hoverDecoration(nodeType, false),
103
111
  onFocus: hoverDecoration === null || hoverDecoration === void 0 ? void 0 : hoverDecoration(nodeType, true),
104
112
  onBlur: hoverDecoration === null || hoverDecoration === void 0 ? void 0 : hoverDecoration(nodeType, false),
105
- onClick: _editorCommands.removeCodeBlock,
113
+ onClick: (0, _platformFeatureFlags.fg)('platform_editor_controls_patch_analytics_2') ? (0, _editorCommands.removeCodeBlockWithAnalytics)(editorAnalyticsAPI) : _editorCommands.removeCodeBlock,
106
114
  title: formatMessage(_messages.default.remove),
107
115
  tabIndex: null
108
116
  };
@@ -108,7 +108,7 @@ const codeBlockPlugin = ({
108
108
  return tr;
109
109
  }
110
110
  }],
111
- floatingToolbar: getToolbarConfig(options === null || options === void 0 ? void 0 : options.allowCopyToClipboard, api)
111
+ floatingToolbar: getToolbarConfig(options === null || options === void 0 ? void 0 : options.allowCopyToClipboard, api, options === null || options === void 0 ? void 0 : options.overrideLanguageName)
112
112
  }
113
113
  };
114
114
  };
@@ -1,5 +1,5 @@
1
- import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE, MODE, PLATFORMS } from '@atlaskit/editor-common/analytics';
2
- import { copyToClipboard } from '@atlaskit/editor-common/clipboard';
1
+ import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE, MODE, PLATFORMS, INPUT_METHOD } from '@atlaskit/editor-common/analytics';
2
+ import { copyToClipboard, getAnalyticsPayload } from '@atlaskit/editor-common/clipboard';
3
3
  import { codeBlockWrappedStates, isCodeBlockWordWrapEnabled } from '@atlaskit/editor-common/code-block';
4
4
  import { withAnalytics } from '@atlaskit/editor-common/editor-analytics';
5
5
  import { contentAllowedInCodeBlock, shouldSplitSelectedNodeOnNodeInsertion } from '@atlaskit/editor-common/insert';
@@ -10,6 +10,16 @@ import { ACTIONS } from '../pm-plugins/actions';
10
10
  import { copySelectionPluginKey } from '../pm-plugins/codeBlockCopySelectionPlugin';
11
11
  import { pluginKey } from '../pm-plugins/plugin-key';
12
12
  import { transformToCodeBlockAction } from '../pm-plugins/transform-to-code-block';
13
+ export const removeCodeBlockWithAnalytics = editorAnalyticsAPI => {
14
+ return withAnalytics(editorAnalyticsAPI, {
15
+ action: ACTION.DELETED,
16
+ actionSubject: ACTION_SUBJECT.CODE_BLOCK,
17
+ attributes: {
18
+ inputMethod: INPUT_METHOD.FLOATING_TB
19
+ },
20
+ eventType: EVENT_TYPE.TRACK
21
+ })(removeCodeBlock);
22
+ };
13
23
  export const removeCodeBlock = (state, dispatch) => {
14
24
  const {
15
25
  schema: {
@@ -55,6 +65,37 @@ export const changeLanguage = editorAnalyticsAPI => language => (state, dispatch
55
65
  }
56
66
  return true;
57
67
  };
68
+ export const copyContentToClipboardWithAnalytics = editorAnalyticsAPI => (state, dispatch) => {
69
+ const {
70
+ schema: {
71
+ nodes
72
+ },
73
+ tr
74
+ } = state;
75
+ const codeBlock = findParentNodeOfType(nodes.codeBlock)(tr.selection);
76
+ const textContent = codeBlock && codeBlock.node.textContent;
77
+ if (textContent) {
78
+ copyToClipboard(textContent);
79
+ const copyToClipboardTr = tr;
80
+ copyToClipboardTr.setMeta(pluginKey, {
81
+ type: ACTIONS.SET_COPIED_TO_CLIPBOARD,
82
+ data: true
83
+ });
84
+ copyToClipboardTr.setMeta(copySelectionPluginKey, 'remove-selection');
85
+ if (editorAnalyticsAPI) {
86
+ const analyticsPayload = getAnalyticsPayload(state, ACTION.COPIED);
87
+ if (analyticsPayload) {
88
+ analyticsPayload.attributes.inputMethod = INPUT_METHOD.FLOATING_TB;
89
+ analyticsPayload.attributes.nodeType = codeBlock === null || codeBlock === void 0 ? void 0 : codeBlock.node.type.name;
90
+ editorAnalyticsAPI.attachAnalyticsEvent(analyticsPayload)(copyToClipboardTr);
91
+ }
92
+ }
93
+ if (dispatch) {
94
+ dispatch(copyToClipboardTr);
95
+ }
96
+ }
97
+ return true;
98
+ };
58
99
  export const copyContentToClipboard = (state, dispatch) => {
59
100
  const {
60
101
  schema: {
@@ -6,13 +6,12 @@ import CopyIcon from '@atlaskit/icon/core/migration/copy';
6
6
  import RemoveIcon from '@atlaskit/icon/core/migration/delete--editor-remove';
7
7
  import TextWrapIcon from '@atlaskit/icon/core/text-wrap';
8
8
  import { fg } from '@atlaskit/platform-feature-flags';
9
- import { changeLanguage, copyContentToClipboard, removeCodeBlock, resetCopiedState, toggleWordWrapStateForCodeBlockNode } from '../editor-commands';
9
+ import { changeLanguage, copyContentToClipboard, copyContentToClipboardWithAnalytics, removeCodeBlock, removeCodeBlockWithAnalytics, resetCopiedState, toggleWordWrapStateForCodeBlockNode } from '../editor-commands';
10
10
  import { WrapIcon } from '../ui/icons/WrapIcon';
11
11
  import { provideVisualFeedbackForCopyButton, removeVisualFeedbackForCopyButton } from './codeBlockCopySelectionPlugin';
12
12
  import { createLanguageList, DEFAULT_LANGUAGES, getLanguageIdentifier } from './language-list';
13
13
  import { pluginKey } from './plugin-key';
14
- const languageList = createLanguageList(DEFAULT_LANGUAGES);
15
- export const getToolbarConfig = (allowCopyToClipboard = false, api) => (state, {
14
+ export const getToolbarConfig = (allowCopyToClipboard = false, api, overrideLanguageName = undefined) => (state, {
16
15
  formatMessage
17
16
  }) => {
18
17
  var _api$decorations$acti, _api$decorations, _api$analytics, _codeBlockState$pos, _node$attrs;
@@ -32,6 +31,10 @@ export const getToolbarConfig = (allowCopyToClipboard = false, api) => (state, {
32
31
  }
33
32
  const isWrapped = isCodeBlockWordWrapEnabled(node);
34
33
  const language = node === null || node === void 0 ? void 0 : (_node$attrs = node.attrs) === null || _node$attrs === void 0 ? void 0 : _node$attrs.language;
34
+ const languageList = createLanguageList(overrideLanguageName ? DEFAULT_LANGUAGES.map(language => ({
35
+ ...language,
36
+ name: overrideLanguageName(language.name)
37
+ })) : DEFAULT_LANGUAGES);
35
38
  const options = languageList.map(lang => ({
36
39
  label: lang.name,
37
40
  value: getLanguageIdentifier(lang),
@@ -61,7 +64,7 @@ export const getToolbarConfig = (allowCopyToClipboard = false, api) => (state, {
61
64
  icon: CopyIcon,
62
65
  // note: copyContentToClipboard contains logic that also removes the
63
66
  // visual feedback for the copy button
64
- onClick: copyContentToClipboard,
67
+ onClick: fg('platform_editor_controls_patch_analytics_2') ? copyContentToClipboardWithAnalytics(editorAnalyticsAPI) : copyContentToClipboard,
65
68
  title: formatMessage(codeBlockState.contentCopied ? codeBlockButtonMessages.copiedCodeToClipboard : codeBlockButtonMessages.copyCodeToClipboard),
66
69
  onMouseEnter: provideVisualFeedbackForCopyButton,
67
70
  // note: resetCopiedState contains logic that also removes the
@@ -83,7 +86,7 @@ export const getToolbarConfig = (allowCopyToClipboard = false, api) => (state, {
83
86
  onMouseLeave: hoverDecoration === null || hoverDecoration === void 0 ? void 0 : hoverDecoration(nodeType, false),
84
87
  onFocus: hoverDecoration === null || hoverDecoration === void 0 ? void 0 : hoverDecoration(nodeType, true),
85
88
  onBlur: hoverDecoration === null || hoverDecoration === void 0 ? void 0 : hoverDecoration(nodeType, false),
86
- onClick: removeCodeBlock,
89
+ onClick: fg('platform_editor_controls_patch_analytics_2') ? removeCodeBlockWithAnalytics(editorAnalyticsAPI) : removeCodeBlock,
87
90
  title: formatMessage(commonMessages.remove),
88
91
  tabIndex: null
89
92
  };
@@ -119,7 +119,7 @@ var codeBlockPlugin = function codeBlockPlugin(_ref) {
119
119
  }
120
120
  }];
121
121
  },
122
- floatingToolbar: getToolbarConfig(options === null || options === void 0 ? void 0 : options.allowCopyToClipboard, api)
122
+ floatingToolbar: getToolbarConfig(options === null || options === void 0 ? void 0 : options.allowCopyToClipboard, api, options === null || options === void 0 ? void 0 : options.overrideLanguageName)
123
123
  }
124
124
  };
125
125
  };
@@ -1,5 +1,5 @@
1
- import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE, MODE, PLATFORMS } from '@atlaskit/editor-common/analytics';
2
- import { copyToClipboard } from '@atlaskit/editor-common/clipboard';
1
+ import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE, MODE, PLATFORMS, INPUT_METHOD } from '@atlaskit/editor-common/analytics';
2
+ import { copyToClipboard, getAnalyticsPayload } from '@atlaskit/editor-common/clipboard';
3
3
  import { codeBlockWrappedStates, isCodeBlockWordWrapEnabled } from '@atlaskit/editor-common/code-block';
4
4
  import { withAnalytics } from '@atlaskit/editor-common/editor-analytics';
5
5
  import { contentAllowedInCodeBlock, shouldSplitSelectedNodeOnNodeInsertion } from '@atlaskit/editor-common/insert';
@@ -10,6 +10,16 @@ import { ACTIONS } from '../pm-plugins/actions';
10
10
  import { copySelectionPluginKey } from '../pm-plugins/codeBlockCopySelectionPlugin';
11
11
  import { pluginKey } from '../pm-plugins/plugin-key';
12
12
  import { transformToCodeBlockAction } from '../pm-plugins/transform-to-code-block';
13
+ export var removeCodeBlockWithAnalytics = function removeCodeBlockWithAnalytics(editorAnalyticsAPI) {
14
+ return withAnalytics(editorAnalyticsAPI, {
15
+ action: ACTION.DELETED,
16
+ actionSubject: ACTION_SUBJECT.CODE_BLOCK,
17
+ attributes: {
18
+ inputMethod: INPUT_METHOD.FLOATING_TB
19
+ },
20
+ eventType: EVENT_TYPE.TRACK
21
+ })(removeCodeBlock);
22
+ };
13
23
  export var removeCodeBlock = function removeCodeBlock(state, dispatch) {
14
24
  var nodes = state.schema.nodes,
15
25
  tr = state.tr;
@@ -53,6 +63,35 @@ export var changeLanguage = function changeLanguage(editorAnalyticsAPI) {
53
63
  };
54
64
  };
55
65
  };
66
+ export var copyContentToClipboardWithAnalytics = function copyContentToClipboardWithAnalytics(editorAnalyticsAPI) {
67
+ return function (state, dispatch) {
68
+ var nodes = state.schema.nodes,
69
+ tr = state.tr;
70
+ var codeBlock = findParentNodeOfType(nodes.codeBlock)(tr.selection);
71
+ var textContent = codeBlock && codeBlock.node.textContent;
72
+ if (textContent) {
73
+ copyToClipboard(textContent);
74
+ var copyToClipboardTr = tr;
75
+ copyToClipboardTr.setMeta(pluginKey, {
76
+ type: ACTIONS.SET_COPIED_TO_CLIPBOARD,
77
+ data: true
78
+ });
79
+ copyToClipboardTr.setMeta(copySelectionPluginKey, 'remove-selection');
80
+ if (editorAnalyticsAPI) {
81
+ var analyticsPayload = getAnalyticsPayload(state, ACTION.COPIED);
82
+ if (analyticsPayload) {
83
+ analyticsPayload.attributes.inputMethod = INPUT_METHOD.FLOATING_TB;
84
+ analyticsPayload.attributes.nodeType = codeBlock === null || codeBlock === void 0 ? void 0 : codeBlock.node.type.name;
85
+ editorAnalyticsAPI.attachAnalyticsEvent(analyticsPayload)(copyToClipboardTr);
86
+ }
87
+ }
88
+ if (dispatch) {
89
+ dispatch(copyToClipboardTr);
90
+ }
91
+ }
92
+ return true;
93
+ };
94
+ };
56
95
  export var copyContentToClipboard = function copyContentToClipboard(state, dispatch) {
57
96
  var nodes = state.schema.nodes,
58
97
  tr = state.tr;
@@ -1,3 +1,6 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1
4
  import { isCodeBlockWordWrapEnabled } from '@atlaskit/editor-common/code-block';
2
5
  import commonMessages, { codeBlockButtonMessages } from '@atlaskit/editor-common/messages';
3
6
  import { findDomRefAtPos } from '@atlaskit/editor-prosemirror/utils';
@@ -6,15 +9,15 @@ import CopyIcon from '@atlaskit/icon/core/migration/copy';
6
9
  import RemoveIcon from '@atlaskit/icon/core/migration/delete--editor-remove';
7
10
  import TextWrapIcon from '@atlaskit/icon/core/text-wrap';
8
11
  import { fg } from '@atlaskit/platform-feature-flags';
9
- import { changeLanguage, copyContentToClipboard, removeCodeBlock, resetCopiedState, toggleWordWrapStateForCodeBlockNode } from '../editor-commands';
12
+ import { changeLanguage, copyContentToClipboard, copyContentToClipboardWithAnalytics, removeCodeBlock, removeCodeBlockWithAnalytics, resetCopiedState, toggleWordWrapStateForCodeBlockNode } from '../editor-commands';
10
13
  import { WrapIcon } from '../ui/icons/WrapIcon';
11
14
  import { provideVisualFeedbackForCopyButton, removeVisualFeedbackForCopyButton } from './codeBlockCopySelectionPlugin';
12
15
  import { createLanguageList, DEFAULT_LANGUAGES, getLanguageIdentifier } from './language-list';
13
16
  import { pluginKey } from './plugin-key';
14
- var languageList = createLanguageList(DEFAULT_LANGUAGES);
15
17
  export var getToolbarConfig = function getToolbarConfig() {
16
18
  var allowCopyToClipboard = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
17
19
  var api = arguments.length > 1 ? arguments[1] : undefined;
20
+ var overrideLanguageName = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
18
21
  return function (state, _ref) {
19
22
  var _api$decorations$acti, _api$decorations, _api$analytics, _codeBlockState$pos, _node$attrs;
20
23
  var formatMessage = _ref.formatMessage;
@@ -33,6 +36,11 @@ export var getToolbarConfig = function getToolbarConfig() {
33
36
  }
34
37
  var isWrapped = isCodeBlockWordWrapEnabled(node);
35
38
  var language = node === null || node === void 0 || (_node$attrs = node.attrs) === null || _node$attrs === void 0 ? void 0 : _node$attrs.language;
39
+ var languageList = createLanguageList(overrideLanguageName ? DEFAULT_LANGUAGES.map(function (language) {
40
+ return _objectSpread(_objectSpread({}, language), {}, {
41
+ name: overrideLanguageName(language.name)
42
+ });
43
+ }) : DEFAULT_LANGUAGES);
36
44
  var options = languageList.map(function (lang) {
37
45
  return {
38
46
  label: lang.name,
@@ -70,7 +78,7 @@ export var getToolbarConfig = function getToolbarConfig() {
70
78
  icon: CopyIcon,
71
79
  // note: copyContentToClipboard contains logic that also removes the
72
80
  // visual feedback for the copy button
73
- onClick: copyContentToClipboard,
81
+ onClick: fg('platform_editor_controls_patch_analytics_2') ? copyContentToClipboardWithAnalytics(editorAnalyticsAPI) : copyContentToClipboard,
74
82
  title: formatMessage(codeBlockState.contentCopied ? codeBlockButtonMessages.copiedCodeToClipboard : codeBlockButtonMessages.copyCodeToClipboard),
75
83
  onMouseEnter: provideVisualFeedbackForCopyButton,
76
84
  // note: resetCopiedState contains logic that also removes the
@@ -92,7 +100,7 @@ export var getToolbarConfig = function getToolbarConfig() {
92
100
  onMouseLeave: hoverDecoration === null || hoverDecoration === void 0 ? void 0 : hoverDecoration(nodeType, false),
93
101
  onFocus: hoverDecoration === null || hoverDecoration === void 0 ? void 0 : hoverDecoration(nodeType, true),
94
102
  onBlur: hoverDecoration === null || hoverDecoration === void 0 ? void 0 : hoverDecoration(nodeType, false),
95
- onClick: removeCodeBlock,
103
+ onClick: fg('platform_editor_controls_patch_analytics_2') ? removeCodeBlockWithAnalytics(editorAnalyticsAPI) : removeCodeBlock,
96
104
  title: formatMessage(commonMessages.remove),
97
105
  tabIndex: null
98
106
  };
@@ -1,8 +1,11 @@
1
- import type { EditorAnalyticsAPI, INPUT_METHOD } from '@atlaskit/editor-common/analytics';
1
+ import { INPUT_METHOD } from '@atlaskit/editor-common/analytics';
2
+ import type { EditorAnalyticsAPI } from '@atlaskit/editor-common/analytics';
2
3
  import type { Command } from '@atlaskit/editor-common/types';
3
4
  import type { EditorState } from '@atlaskit/editor-prosemirror/state';
5
+ export declare const removeCodeBlockWithAnalytics: (editorAnalyticsAPI: EditorAnalyticsAPI | undefined) => Command;
4
6
  export declare const removeCodeBlock: Command;
5
7
  export declare const changeLanguage: (editorAnalyticsAPI: EditorAnalyticsAPI | undefined) => (language: string) => Command;
8
+ export declare const copyContentToClipboardWithAnalytics: (editorAnalyticsAPI: EditorAnalyticsAPI | undefined) => Command;
6
9
  export declare const copyContentToClipboard: Command;
7
10
  export declare const resetCopiedState: Command;
8
11
  export declare const ignoreFollowingMutations: Command;
@@ -1,6 +1,7 @@
1
1
  import type { ExtractInjectionAPI, FloatingToolbarHandler, SelectOption } from '@atlaskit/editor-common/types';
2
2
  import type { CodeBlockPlugin } from '../index';
3
- export declare const getToolbarConfig: (allowCopyToClipboard: boolean | undefined, api: ExtractInjectionAPI<CodeBlockPlugin> | undefined) => FloatingToolbarHandler;
3
+ import { Language } from './language-list';
4
+ export declare const getToolbarConfig: (allowCopyToClipboard: boolean | undefined, api: ExtractInjectionAPI<CodeBlockPlugin> | undefined, overrideLanguageName?: ((name: Language['name']) => string) | undefined) => FloatingToolbarHandler;
4
5
  /**
5
6
  * Filters language list based on both name and alias properties.
6
7
  */
@@ -2,6 +2,7 @@ import type { LongPressSelectionPluginOptions } from '@atlaskit/editor-common/ty
2
2
  export interface CodeBlockPluginOptions extends LongPressSelectionPluginOptions {
3
3
  allowCopyToClipboard?: boolean;
4
4
  allowCompositionInputOverride?: boolean;
5
+ overrideLanguageName?: (name: string) => string;
5
6
  }
6
7
  /**
7
8
  * @private
@@ -1,8 +1,11 @@
1
- import type { EditorAnalyticsAPI, INPUT_METHOD } from '@atlaskit/editor-common/analytics';
1
+ import { INPUT_METHOD } from '@atlaskit/editor-common/analytics';
2
+ import type { EditorAnalyticsAPI } from '@atlaskit/editor-common/analytics';
2
3
  import type { Command } from '@atlaskit/editor-common/types';
3
4
  import type { EditorState } from '@atlaskit/editor-prosemirror/state';
5
+ export declare const removeCodeBlockWithAnalytics: (editorAnalyticsAPI: EditorAnalyticsAPI | undefined) => Command;
4
6
  export declare const removeCodeBlock: Command;
5
7
  export declare const changeLanguage: (editorAnalyticsAPI: EditorAnalyticsAPI | undefined) => (language: string) => Command;
8
+ export declare const copyContentToClipboardWithAnalytics: (editorAnalyticsAPI: EditorAnalyticsAPI | undefined) => Command;
6
9
  export declare const copyContentToClipboard: Command;
7
10
  export declare const resetCopiedState: Command;
8
11
  export declare const ignoreFollowingMutations: Command;
@@ -1,6 +1,7 @@
1
1
  import type { ExtractInjectionAPI, FloatingToolbarHandler, SelectOption } from '@atlaskit/editor-common/types';
2
2
  import type { CodeBlockPlugin } from '../index';
3
- export declare const getToolbarConfig: (allowCopyToClipboard: boolean | undefined, api: ExtractInjectionAPI<CodeBlockPlugin> | undefined) => FloatingToolbarHandler;
3
+ import { Language } from './language-list';
4
+ export declare const getToolbarConfig: (allowCopyToClipboard: boolean | undefined, api: ExtractInjectionAPI<CodeBlockPlugin> | undefined, overrideLanguageName?: ((name: Language['name']) => string) | undefined) => FloatingToolbarHandler;
4
5
  /**
5
6
  * Filters language list based on both name and alias properties.
6
7
  */
@@ -2,6 +2,7 @@ import type { LongPressSelectionPluginOptions } from '@atlaskit/editor-common/ty
2
2
  export interface CodeBlockPluginOptions extends LongPressSelectionPluginOptions {
3
3
  allowCopyToClipboard?: boolean;
4
4
  allowCompositionInputOverride?: boolean;
5
+ overrideLanguageName?: (name: string) => string;
5
6
  }
6
7
  /**
7
8
  * @private
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-plugin-code-block",
3
- "version": "4.3.0",
3
+ "version": "4.4.1",
4
4
  "description": "Code block plugin for @atlaskit/editor-core",
5
5
  "author": "Atlassian Pty Ltd",
6
6
  "license": "Apache-2.0",
@@ -32,17 +32,17 @@
32
32
  },
33
33
  "dependencies": {
34
34
  "@atlaskit/adf-schema": "^47.6.0",
35
- "@atlaskit/code": "^17.0.0",
36
- "@atlaskit/editor-common": "^103.4.0",
35
+ "@atlaskit/code": "^17.1.0",
36
+ "@atlaskit/editor-common": "^104.0.0",
37
37
  "@atlaskit/editor-plugin-analytics": "^2.2.0",
38
38
  "@atlaskit/editor-plugin-composition": "^1.3.0",
39
39
  "@atlaskit/editor-plugin-decorations": "^2.0.0",
40
40
  "@atlaskit/editor-plugin-editor-disabled": "^2.0.0",
41
41
  "@atlaskit/editor-prosemirror": "7.0.0",
42
- "@atlaskit/icon": "^25.5.0",
42
+ "@atlaskit/icon": "^25.6.0",
43
43
  "@atlaskit/platform-feature-flags": "^1.1.0",
44
44
  "@atlaskit/prosemirror-input-rules": "^3.3.0",
45
- "@atlaskit/tmp-editor-statsig": "^4.6.0",
45
+ "@atlaskit/tmp-editor-statsig": "^4.16.0",
46
46
  "@babel/runtime": "^7.0.0"
47
47
  },
48
48
  "peerDependencies": {
@@ -100,6 +100,9 @@
100
100
  "editor_code_wrapping_perf_improvement_ed-25141": {
101
101
  "type": "boolean"
102
102
  },
103
+ "platform_editor_controls_patch_analytics_2": {
104
+ "type": "boolean"
105
+ },
103
106
  "editor_a11y_remove_unwrap_button": {
104
107
  "type": "boolean"
105
108
  }