@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 +21 -0
- package/dist/cjs/codeBlockPlugin.js +1 -1
- package/dist/cjs/editor-commands/index.js +41 -2
- package/dist/cjs/pm-plugins/toolbar.js +11 -3
- package/dist/es2019/codeBlockPlugin.js +1 -1
- package/dist/es2019/editor-commands/index.js +43 -2
- package/dist/es2019/pm-plugins/toolbar.js +8 -5
- package/dist/esm/codeBlockPlugin.js +1 -1
- package/dist/esm/editor-commands/index.js +41 -2
- package/dist/esm/pm-plugins/toolbar.js +12 -4
- package/dist/types/editor-commands/index.d.ts +4 -1
- package/dist/types/pm-plugins/toolbar.d.ts +2 -1
- package/dist/types/types/index.d.ts +1 -0
- package/dist/types-ts4.5/editor-commands/index.d.ts +4 -1
- package/dist/types-ts4.5/pm-plugins/toolbar.d.ts +2 -1
- package/dist/types-ts4.5/types/index.d.ts +1 -0
- package/package.json +8 -5
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
+
"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.
|
|
36
|
-
"@atlaskit/editor-common": "^
|
|
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.
|
|
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.
|
|
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
|
}
|