@atlaskit/editor-plugin-layout 16.0.0 → 16.0.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 +8 -0
- package/dist/cjs/layoutPlugin.js +21 -11
- package/dist/cjs/ui/quick-insert/LayoutQuickInsertMenuItem.js +53 -0
- package/dist/cjs/ui/quick-insert/getLayoutQuickInsertComponents.js +74 -0
- package/dist/es2019/layoutPlugin.js +13 -3
- package/dist/es2019/ui/quick-insert/LayoutQuickInsertMenuItem.js +48 -0
- package/dist/es2019/ui/quick-insert/getLayoutQuickInsertComponents.js +62 -0
- package/dist/esm/layoutPlugin.js +13 -3
- package/dist/esm/ui/quick-insert/LayoutQuickInsertMenuItem.js +45 -0
- package/dist/esm/ui/quick-insert/getLayoutQuickInsertComponents.js +67 -0
- package/dist/types/ui/quick-insert/LayoutQuickInsertMenuItem.d.ts +11 -0
- package/dist/types/ui/quick-insert/getLayoutQuickInsertComponents.d.ts +8 -0
- package/package.json +3 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# @atlaskit/editor-plugin-layout
|
|
2
2
|
|
|
3
|
+
## 16.0.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`4273da2e1a648`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/4273da2e1a648) -
|
|
8
|
+
Register native Quick Insert items behind `platform_editor_slash_command`.
|
|
9
|
+
- Updated dependencies
|
|
10
|
+
|
|
3
11
|
## 16.0.0
|
|
4
12
|
|
|
5
13
|
### Patch Changes
|
package/dist/cjs/layoutPlugin.js
CHANGED
|
@@ -14,7 +14,8 @@ var _messages = require("@atlaskit/editor-common/messages");
|
|
|
14
14
|
var _quickInsert = require("@atlaskit/editor-common/quick-insert");
|
|
15
15
|
var _state = require("@atlaskit/editor-prosemirror/state");
|
|
16
16
|
var _utils = require("@atlaskit/editor-prosemirror/utils");
|
|
17
|
-
var
|
|
17
|
+
var _isExperimentEnabled = require("@atlaskit/platform-feature-experiments/is-experiment-enabled");
|
|
18
|
+
var _fg = require("@atlaskit/platform-feature-flags/fg");
|
|
18
19
|
var _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals");
|
|
19
20
|
var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
|
|
20
21
|
var _actions = require("./pm-plugins/actions");
|
|
@@ -26,6 +27,7 @@ var _globalStyles = require("./ui/global-styles");
|
|
|
26
27
|
var _LayoutBlockMenuItem = require("./ui/LayoutBlockMenuItem");
|
|
27
28
|
var _LayoutColumnMenu = require("./ui/LayoutColumnMenu");
|
|
28
29
|
var _components = require("./ui/LayoutColumnMenu/components");
|
|
30
|
+
var _getLayoutQuickInsertComponents = require("./ui/quick-insert/getLayoutQuickInsertComponents");
|
|
29
31
|
var _toolbar = require("./ui/toolbar");
|
|
30
32
|
var LAYOUT_SECTION_NODE_NAME = 'layoutSection';
|
|
31
33
|
|
|
@@ -61,9 +63,11 @@ var layoutPlugin = exports.layoutPlugin = function layoutPlugin(_ref) {
|
|
|
61
63
|
var _ref$config = _ref.config,
|
|
62
64
|
options = _ref$config === void 0 ? {} : _ref$config,
|
|
63
65
|
api = _ref.api;
|
|
64
|
-
var
|
|
66
|
+
var isAdvancedLayoutEnabled = (0, _experiments.editorExperiment)('advanced_layouts', true);
|
|
67
|
+
var allowAdvancedSingleColumnLayout = isAdvancedLayoutEnabled && (0, _experiments.editorExperiment)('single_column_layouts', true, {
|
|
65
68
|
exposure: true
|
|
66
69
|
});
|
|
70
|
+
var isRegisteredSlashCommandEnabled = (0, _isExperimentEnabled.isExperimentEnabled)('platform_editor_slash_command') && isAdvancedLayoutEnabled;
|
|
67
71
|
if ((0, _experiments.editorExperiment)('platform_editor_block_menu', true)) {
|
|
68
72
|
var _api$blockMenu;
|
|
69
73
|
api === null || api === void 0 || (_api$blockMenu = api.blockMenu) === null || _api$blockMenu === void 0 || _api$blockMenu.actions.registerBlockMenuComponents([{
|
|
@@ -87,15 +91,21 @@ var layoutPlugin = exports.layoutPlugin = function layoutPlugin(_ref) {
|
|
|
87
91
|
api: api
|
|
88
92
|
}));
|
|
89
93
|
}
|
|
94
|
+
if (isRegisteredSlashCommandEnabled) {
|
|
95
|
+
var _api$uiControlRegistr2;
|
|
96
|
+
api === null || api === void 0 || (_api$uiControlRegistr2 = api.uiControlRegistry) === null || _api$uiControlRegistr2 === void 0 || _api$uiControlRegistr2.actions.register((0, _getLayoutQuickInsertComponents.getLayoutQuickInsertComponents)({
|
|
97
|
+
api: api
|
|
98
|
+
}));
|
|
99
|
+
}
|
|
90
100
|
return {
|
|
91
101
|
name: 'layout',
|
|
92
102
|
nodes: function nodes() {
|
|
93
103
|
return [{
|
|
94
104
|
name: 'layoutSection',
|
|
95
|
-
node: (0, _experiments.editorExperiment)('advanced_layouts', true) ? (0,
|
|
105
|
+
node: (0, _experiments.editorExperiment)('advanced_layouts', true) ? (0, _fg.fg)('platform_editor_adf_with_localid') ? _schema.layoutSectionWithSingleColumnLocalId : _schema.layoutSectionWithSingleColumn : (0, _fg.fg)('platform_editor_adf_with_localid') ? _adfSchema.layoutSectionWithLocalId : _adfSchema.layoutSection
|
|
96
106
|
}, {
|
|
97
107
|
name: 'layoutColumn',
|
|
98
|
-
node: (0,
|
|
108
|
+
node: (0, _fg.fg)('platform_editor_adf_with_localid') ? _adfSchema.layoutColumnWithLocalId : _adfSchema.layoutColumn
|
|
99
109
|
}];
|
|
100
110
|
},
|
|
101
111
|
pmPlugins: function pmPlugins() {
|
|
@@ -149,7 +159,7 @@ var layoutPlugin = exports.layoutPlugin = function layoutPlugin(_ref) {
|
|
|
149
159
|
}
|
|
150
160
|
return undefined;
|
|
151
161
|
},
|
|
152
|
-
quickInsert: function
|
|
162
|
+
quickInsert: isRegisteredSlashCommandEnabled ? undefined : function (_ref3) {
|
|
153
163
|
var formatMessage = _ref3.formatMessage;
|
|
154
164
|
var withInsertLayoutAnalytics = function withInsertLayoutAnalytics(tr, columnCount) {
|
|
155
165
|
var _api$analytics3;
|
|
@@ -177,7 +187,7 @@ var layoutPlugin = exports.layoutPlugin = function layoutPlugin(_ref) {
|
|
|
177
187
|
},
|
|
178
188
|
action: function action(insert, state) {
|
|
179
189
|
var tr = insert((0, _actions.createMultiColumnLayoutSection)(state, 1));
|
|
180
|
-
if ((0,
|
|
190
|
+
if ((0, _fg.fg)('platform_editor_column_count_analytics')) {
|
|
181
191
|
withInsertLayoutAnalytics(tr, 1);
|
|
182
192
|
} else {
|
|
183
193
|
withInsertLayoutAnalytics(tr);
|
|
@@ -205,7 +215,7 @@ var layoutPlugin = exports.layoutPlugin = function layoutPlugin(_ref) {
|
|
|
205
215
|
icon: Icon,
|
|
206
216
|
action: function action(insert, state) {
|
|
207
217
|
var tr = insert((0, _actions.createMultiColumnLayoutSection)(state, columnCount));
|
|
208
|
-
if ((0,
|
|
218
|
+
if ((0, _fg.fg)('platform_editor_column_count_analytics')) {
|
|
209
219
|
withInsertLayoutAnalytics(tr, columnCount);
|
|
210
220
|
} else {
|
|
211
221
|
withInsertLayoutAnalytics(tr);
|
|
@@ -266,7 +276,7 @@ var layoutPlugin = exports.layoutPlugin = function layoutPlugin(_ref) {
|
|
|
266
276
|
},
|
|
267
277
|
action: function action(insert, state) {
|
|
268
278
|
var tr = insert((0, _actions.createMultiColumnLayoutSection)(state, 2));
|
|
269
|
-
if ((0,
|
|
279
|
+
if ((0, _fg.fg)('platform_editor_column_count_analytics')) {
|
|
270
280
|
withInsertLayoutAnalytics(tr, 2);
|
|
271
281
|
} else {
|
|
272
282
|
withInsertLayoutAnalytics(tr);
|
|
@@ -287,7 +297,7 @@ var layoutPlugin = exports.layoutPlugin = function layoutPlugin(_ref) {
|
|
|
287
297
|
},
|
|
288
298
|
action: function action(insert, state) {
|
|
289
299
|
var tr = insert((0, _actions.createMultiColumnLayoutSection)(state, 3));
|
|
290
|
-
if ((0,
|
|
300
|
+
if ((0, _fg.fg)('platform_editor_column_count_analytics')) {
|
|
291
301
|
withInsertLayoutAnalytics(tr, 3);
|
|
292
302
|
} else {
|
|
293
303
|
withInsertLayoutAnalytics(tr);
|
|
@@ -308,7 +318,7 @@ var layoutPlugin = exports.layoutPlugin = function layoutPlugin(_ref) {
|
|
|
308
318
|
},
|
|
309
319
|
action: function action(insert, state) {
|
|
310
320
|
var tr = insert((0, _actions.createMultiColumnLayoutSection)(state, 4));
|
|
311
|
-
if ((0,
|
|
321
|
+
if ((0, _fg.fg)('platform_editor_column_count_analytics')) {
|
|
312
322
|
withInsertLayoutAnalytics(tr, 4);
|
|
313
323
|
} else {
|
|
314
324
|
withInsertLayoutAnalytics(tr);
|
|
@@ -329,7 +339,7 @@ var layoutPlugin = exports.layoutPlugin = function layoutPlugin(_ref) {
|
|
|
329
339
|
},
|
|
330
340
|
action: function action(insert, state) {
|
|
331
341
|
var tr = insert((0, _actions.createMultiColumnLayoutSection)(state, 5));
|
|
332
|
-
if ((0,
|
|
342
|
+
if ((0, _fg.fg)('platform_editor_column_count_analytics')) {
|
|
333
343
|
withInsertLayoutAnalytics(tr, 5);
|
|
334
344
|
} else {
|
|
335
345
|
withInsertLayoutAnalytics(tr);
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.LayoutQuickInsertMenuItem = void 0;
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
var _reactIntl = require("react-intl");
|
|
10
|
+
var _analytics = require("@atlaskit/editor-common/analytics");
|
|
11
|
+
var _assets = require("@atlaskit/editor-common/assets");
|
|
12
|
+
var _menuItem = require("@atlaskit/editor-common/quick-insert/menu-item");
|
|
13
|
+
var _layoutPlugin = require("../../layoutPlugin");
|
|
14
|
+
var _actions = require("../../pm-plugins/actions");
|
|
15
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
16
|
+
var icons = {
|
|
17
|
+
2: _assets.IconTwoColumnLayout,
|
|
18
|
+
3: _assets.IconThreeColumnLayout,
|
|
19
|
+
4: _assets.IconFourColumnLayout,
|
|
20
|
+
5: _assets.IconFiveColumnLayout
|
|
21
|
+
};
|
|
22
|
+
var LayoutQuickInsertMenuItem = exports.LayoutQuickInsertMenuItem = function LayoutQuickInsertMenuItem(_ref) {
|
|
23
|
+
var api = _ref.api,
|
|
24
|
+
columnCount = _ref.columnCount,
|
|
25
|
+
title = _ref.title;
|
|
26
|
+
var _useIntl = (0, _reactIntl.useIntl)(),
|
|
27
|
+
formatMessage = _useIntl.formatMessage;
|
|
28
|
+
var Icon = icons[columnCount];
|
|
29
|
+
var onSelect = (0, _react.useCallback)(function (_ref2) {
|
|
30
|
+
var _api$analytics;
|
|
31
|
+
var editorView = _ref2.editorView,
|
|
32
|
+
insert = _ref2.insert,
|
|
33
|
+
source = _ref2.source;
|
|
34
|
+
var tr = insert((0, _actions.createMultiColumnLayoutSection)(editorView.state, columnCount));
|
|
35
|
+
api === null || api === void 0 || (_api$analytics = api.analytics) === null || _api$analytics === void 0 || _api$analytics.actions.attachAnalyticsEvent({
|
|
36
|
+
action: _analytics.ACTION.INSERTED,
|
|
37
|
+
actionSubject: _analytics.ACTION_SUBJECT.DOCUMENT,
|
|
38
|
+
actionSubjectId: _analytics.ACTION_SUBJECT_ID.LAYOUT,
|
|
39
|
+
attributes: {
|
|
40
|
+
columnCount: columnCount,
|
|
41
|
+
inputMethod: source
|
|
42
|
+
},
|
|
43
|
+
eventType: _analytics.EVENT_TYPE.TRACK
|
|
44
|
+
})(tr);
|
|
45
|
+
(0, _layoutPlugin.selectIntoLayoutSection)(tr);
|
|
46
|
+
return tr;
|
|
47
|
+
}, [api, columnCount]);
|
|
48
|
+
return /*#__PURE__*/_react.default.createElement(_menuItem.QuickInsertMenuItem, {
|
|
49
|
+
iconBefore: /*#__PURE__*/_react.default.createElement(Icon, null),
|
|
50
|
+
onSelect: onSelect,
|
|
51
|
+
title: formatMessage(title)
|
|
52
|
+
});
|
|
53
|
+
};
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.getLayoutQuickInsertComponents = void 0;
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
var _messages = require("@atlaskit/editor-common/messages");
|
|
10
|
+
var _createQuickInsertMatcher = require("@atlaskit/editor-common/quick-insert/create-quick-insert-matcher");
|
|
11
|
+
var _keys = require("@atlaskit/editor-common/quick-insert/keys");
|
|
12
|
+
var _rank = require("@atlaskit/editor-common/quick-insert/rank");
|
|
13
|
+
var _LayoutQuickInsertMenuItem = require("./LayoutQuickInsertMenuItem");
|
|
14
|
+
var layoutItems = [{
|
|
15
|
+
columnCount: 2,
|
|
16
|
+
description: _messages.toolbarInsertBlockMessages.columnsDescriptionAdvancedLayout,
|
|
17
|
+
item: _keys.TWO_COLUMNS_LAYOUT_MENU_ITEM,
|
|
18
|
+
keyword: 'two column',
|
|
19
|
+
title: _messages.layoutMessages.twoColumnsAdvancedLayout
|
|
20
|
+
}, {
|
|
21
|
+
columnCount: 3,
|
|
22
|
+
description: _messages.toolbarInsertBlockMessages.columnsDescriptionAdvancedLayout,
|
|
23
|
+
item: _keys.THREE_COLUMNS_LAYOUT_MENU_ITEM,
|
|
24
|
+
keyword: 'three column',
|
|
25
|
+
title: _messages.layoutMessages.threeColumnsAdvancedLayout
|
|
26
|
+
}, {
|
|
27
|
+
columnCount: 4,
|
|
28
|
+
description: _messages.toolbarInsertBlockMessages.columnsDescriptionAdvancedLayout,
|
|
29
|
+
item: _keys.FOUR_COLUMNS_LAYOUT_MENU_ITEM,
|
|
30
|
+
keyword: 'four column',
|
|
31
|
+
title: _messages.layoutMessages.fourColumns
|
|
32
|
+
}, {
|
|
33
|
+
columnCount: 5,
|
|
34
|
+
description: _messages.toolbarInsertBlockMessages.columnsDescriptionAdvancedLayout,
|
|
35
|
+
item: _keys.FIVE_COLUMNS_LAYOUT_MENU_ITEM,
|
|
36
|
+
keyword: 'five column',
|
|
37
|
+
title: _messages.layoutMessages.fiveColumns
|
|
38
|
+
}];
|
|
39
|
+
var getLayoutQuickInsertComponents = exports.getLayoutQuickInsertComponents = function getLayoutQuickInsertComponents(_ref) {
|
|
40
|
+
var api = _ref.api;
|
|
41
|
+
return layoutItems.map(function (_ref2) {
|
|
42
|
+
var columnCount = _ref2.columnCount,
|
|
43
|
+
description = _ref2.description,
|
|
44
|
+
item = _ref2.item,
|
|
45
|
+
keyword = _ref2.keyword,
|
|
46
|
+
title = _ref2.title;
|
|
47
|
+
return {
|
|
48
|
+
key: item.key,
|
|
49
|
+
type: item.type,
|
|
50
|
+
parents: [{
|
|
51
|
+
key: _keys.STRUCTURE_SECTION.key,
|
|
52
|
+
type: _keys.STRUCTURE_SECTION.type,
|
|
53
|
+
rank: _rank.STRUCTURE_SECTION_RANK[item.key]
|
|
54
|
+
}],
|
|
55
|
+
match: (0, _createQuickInsertMatcher.createQuickInsertMatcher)(function (_ref3) {
|
|
56
|
+
var formatMessage = _ref3.formatMessage;
|
|
57
|
+
return {
|
|
58
|
+
description: formatMessage(description, {
|
|
59
|
+
numberOfColumns: ['one', 'two', 'three', 'four', 'five'][columnCount - 1]
|
|
60
|
+
}),
|
|
61
|
+
keywords: ['layout', 'column', 'section', 'col', keyword],
|
|
62
|
+
title: formatMessage(title)
|
|
63
|
+
};
|
|
64
|
+
}),
|
|
65
|
+
component: function component() {
|
|
66
|
+
return /*#__PURE__*/_react.default.createElement(_LayoutQuickInsertMenuItem.LayoutQuickInsertMenuItem, {
|
|
67
|
+
api: api,
|
|
68
|
+
columnCount: columnCount,
|
|
69
|
+
title: title
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
});
|
|
74
|
+
};
|
|
@@ -7,7 +7,8 @@ import { layoutMessages, toolbarInsertBlockMessages as messages } from '@atlaski
|
|
|
7
7
|
import { IconFiveColumnLayout, IconFourColumnLayout, IconLayout, IconOneColumnLayout, IconThreeColumnLayout, IconTwoColumnLayout } from '@atlaskit/editor-common/quick-insert';
|
|
8
8
|
import { TextSelection } from '@atlaskit/editor-prosemirror/state';
|
|
9
9
|
import { findParentNode } from '@atlaskit/editor-prosemirror/utils';
|
|
10
|
-
import {
|
|
10
|
+
import { isExperimentEnabled } from '@atlaskit/platform-feature-experiments/is-experiment-enabled';
|
|
11
|
+
import { fg } from '@atlaskit/platform-feature-flags/fg';
|
|
11
12
|
import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
|
|
12
13
|
import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments';
|
|
13
14
|
import { createDefaultLayoutSection, createMultiColumnLayoutSection, deleteLayoutColumn, distributeLayoutColumns, insertLayoutColumn, insertLayoutColumnsWithAnalytics, setLayoutColumnDangerPreview, setLayoutColumnValign, toggleLayoutColumnMenu } from './pm-plugins/actions';
|
|
@@ -19,6 +20,7 @@ import { GlobalStylesWrapper } from './ui/global-styles';
|
|
|
19
20
|
import { createLayoutBlockMenuItem } from './ui/LayoutBlockMenuItem';
|
|
20
21
|
import { LayoutColumnMenu } from './ui/LayoutColumnMenu';
|
|
21
22
|
import { getLayoutColumnMenuComponents } from './ui/LayoutColumnMenu/components';
|
|
23
|
+
import { getLayoutQuickInsertComponents } from './ui/quick-insert/getLayoutQuickInsertComponents';
|
|
22
24
|
import { buildToolbar } from './ui/toolbar';
|
|
23
25
|
const LAYOUT_SECTION_NODE_NAME = 'layoutSection';
|
|
24
26
|
|
|
@@ -53,9 +55,11 @@ export const layoutPlugin = ({
|
|
|
53
55
|
api
|
|
54
56
|
}) => {
|
|
55
57
|
var _api$analytics2;
|
|
56
|
-
const
|
|
58
|
+
const isAdvancedLayoutEnabled = editorExperiment('advanced_layouts', true);
|
|
59
|
+
const allowAdvancedSingleColumnLayout = isAdvancedLayoutEnabled && editorExperiment('single_column_layouts', true, {
|
|
57
60
|
exposure: true
|
|
58
61
|
});
|
|
62
|
+
const isRegisteredSlashCommandEnabled = isExperimentEnabled('platform_editor_slash_command') && isAdvancedLayoutEnabled;
|
|
59
63
|
if (editorExperiment('platform_editor_block_menu', true)) {
|
|
60
64
|
var _api$blockMenu;
|
|
61
65
|
api === null || api === void 0 ? void 0 : (_api$blockMenu = api.blockMenu) === null || _api$blockMenu === void 0 ? void 0 : _api$blockMenu.actions.registerBlockMenuComponents([{
|
|
@@ -79,6 +83,12 @@ export const layoutPlugin = ({
|
|
|
79
83
|
api
|
|
80
84
|
}));
|
|
81
85
|
}
|
|
86
|
+
if (isRegisteredSlashCommandEnabled) {
|
|
87
|
+
var _api$uiControlRegistr2;
|
|
88
|
+
api === null || api === void 0 ? void 0 : (_api$uiControlRegistr2 = api.uiControlRegistry) === null || _api$uiControlRegistr2 === void 0 ? void 0 : _api$uiControlRegistr2.actions.register(getLayoutQuickInsertComponents({
|
|
89
|
+
api
|
|
90
|
+
}));
|
|
91
|
+
}
|
|
82
92
|
return {
|
|
83
93
|
name: 'layout',
|
|
84
94
|
nodes() {
|
|
@@ -140,7 +150,7 @@ export const layoutPlugin = ({
|
|
|
140
150
|
}
|
|
141
151
|
return undefined;
|
|
142
152
|
},
|
|
143
|
-
quickInsert: ({
|
|
153
|
+
quickInsert: isRegisteredSlashCommandEnabled ? undefined : ({
|
|
144
154
|
formatMessage
|
|
145
155
|
}) => {
|
|
146
156
|
const withInsertLayoutAnalytics = (tr, columnCount) => {
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import React, { useCallback } from 'react';
|
|
2
|
+
import { useIntl } from 'react-intl';
|
|
3
|
+
import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE } from '@atlaskit/editor-common/analytics';
|
|
4
|
+
import { IconFiveColumnLayout, IconFourColumnLayout, IconThreeColumnLayout, IconTwoColumnLayout } from '@atlaskit/editor-common/assets';
|
|
5
|
+
import { QuickInsertMenuItem } from '@atlaskit/editor-common/quick-insert/menu-item';
|
|
6
|
+
import { selectIntoLayoutSection } from '../../layoutPlugin';
|
|
7
|
+
import { createMultiColumnLayoutSection } from '../../pm-plugins/actions';
|
|
8
|
+
const icons = {
|
|
9
|
+
2: IconTwoColumnLayout,
|
|
10
|
+
3: IconThreeColumnLayout,
|
|
11
|
+
4: IconFourColumnLayout,
|
|
12
|
+
5: IconFiveColumnLayout
|
|
13
|
+
};
|
|
14
|
+
export const LayoutQuickInsertMenuItem = ({
|
|
15
|
+
api,
|
|
16
|
+
columnCount,
|
|
17
|
+
title
|
|
18
|
+
}) => {
|
|
19
|
+
const {
|
|
20
|
+
formatMessage
|
|
21
|
+
} = useIntl();
|
|
22
|
+
const Icon = icons[columnCount];
|
|
23
|
+
const onSelect = useCallback(({
|
|
24
|
+
editorView,
|
|
25
|
+
insert,
|
|
26
|
+
source
|
|
27
|
+
}) => {
|
|
28
|
+
var _api$analytics;
|
|
29
|
+
const tr = insert(createMultiColumnLayoutSection(editorView.state, columnCount));
|
|
30
|
+
api === null || api === void 0 ? void 0 : (_api$analytics = api.analytics) === null || _api$analytics === void 0 ? void 0 : _api$analytics.actions.attachAnalyticsEvent({
|
|
31
|
+
action: ACTION.INSERTED,
|
|
32
|
+
actionSubject: ACTION_SUBJECT.DOCUMENT,
|
|
33
|
+
actionSubjectId: ACTION_SUBJECT_ID.LAYOUT,
|
|
34
|
+
attributes: {
|
|
35
|
+
columnCount,
|
|
36
|
+
inputMethod: source
|
|
37
|
+
},
|
|
38
|
+
eventType: EVENT_TYPE.TRACK
|
|
39
|
+
})(tr);
|
|
40
|
+
selectIntoLayoutSection(tr);
|
|
41
|
+
return tr;
|
|
42
|
+
}, [api, columnCount]);
|
|
43
|
+
return /*#__PURE__*/React.createElement(QuickInsertMenuItem, {
|
|
44
|
+
iconBefore: /*#__PURE__*/React.createElement(Icon, null),
|
|
45
|
+
onSelect: onSelect,
|
|
46
|
+
title: formatMessage(title)
|
|
47
|
+
});
|
|
48
|
+
};
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { layoutMessages, toolbarInsertBlockMessages as messages } from '@atlaskit/editor-common/messages';
|
|
3
|
+
import { createQuickInsertMatcher } from '@atlaskit/editor-common/quick-insert/create-quick-insert-matcher';
|
|
4
|
+
import { FIVE_COLUMNS_LAYOUT_MENU_ITEM, FOUR_COLUMNS_LAYOUT_MENU_ITEM, STRUCTURE_SECTION, THREE_COLUMNS_LAYOUT_MENU_ITEM, TWO_COLUMNS_LAYOUT_MENU_ITEM } from '@atlaskit/editor-common/quick-insert/keys';
|
|
5
|
+
import { STRUCTURE_SECTION_RANK } from '@atlaskit/editor-common/quick-insert/rank';
|
|
6
|
+
import { LayoutQuickInsertMenuItem } from './LayoutQuickInsertMenuItem';
|
|
7
|
+
const layoutItems = [{
|
|
8
|
+
columnCount: 2,
|
|
9
|
+
description: messages.columnsDescriptionAdvancedLayout,
|
|
10
|
+
item: TWO_COLUMNS_LAYOUT_MENU_ITEM,
|
|
11
|
+
keyword: 'two column',
|
|
12
|
+
title: layoutMessages.twoColumnsAdvancedLayout
|
|
13
|
+
}, {
|
|
14
|
+
columnCount: 3,
|
|
15
|
+
description: messages.columnsDescriptionAdvancedLayout,
|
|
16
|
+
item: THREE_COLUMNS_LAYOUT_MENU_ITEM,
|
|
17
|
+
keyword: 'three column',
|
|
18
|
+
title: layoutMessages.threeColumnsAdvancedLayout
|
|
19
|
+
}, {
|
|
20
|
+
columnCount: 4,
|
|
21
|
+
description: messages.columnsDescriptionAdvancedLayout,
|
|
22
|
+
item: FOUR_COLUMNS_LAYOUT_MENU_ITEM,
|
|
23
|
+
keyword: 'four column',
|
|
24
|
+
title: layoutMessages.fourColumns
|
|
25
|
+
}, {
|
|
26
|
+
columnCount: 5,
|
|
27
|
+
description: messages.columnsDescriptionAdvancedLayout,
|
|
28
|
+
item: FIVE_COLUMNS_LAYOUT_MENU_ITEM,
|
|
29
|
+
keyword: 'five column',
|
|
30
|
+
title: layoutMessages.fiveColumns
|
|
31
|
+
}];
|
|
32
|
+
export const getLayoutQuickInsertComponents = ({
|
|
33
|
+
api
|
|
34
|
+
}) => layoutItems.map(({
|
|
35
|
+
columnCount,
|
|
36
|
+
description,
|
|
37
|
+
item,
|
|
38
|
+
keyword,
|
|
39
|
+
title
|
|
40
|
+
}) => ({
|
|
41
|
+
key: item.key,
|
|
42
|
+
type: item.type,
|
|
43
|
+
parents: [{
|
|
44
|
+
key: STRUCTURE_SECTION.key,
|
|
45
|
+
type: STRUCTURE_SECTION.type,
|
|
46
|
+
rank: STRUCTURE_SECTION_RANK[item.key]
|
|
47
|
+
}],
|
|
48
|
+
match: createQuickInsertMatcher(({
|
|
49
|
+
formatMessage
|
|
50
|
+
}) => ({
|
|
51
|
+
description: formatMessage(description, {
|
|
52
|
+
numberOfColumns: ['one', 'two', 'three', 'four', 'five'][columnCount - 1]
|
|
53
|
+
}),
|
|
54
|
+
keywords: ['layout', 'column', 'section', 'col', keyword],
|
|
55
|
+
title: formatMessage(title)
|
|
56
|
+
})),
|
|
57
|
+
component: () => /*#__PURE__*/React.createElement(LayoutQuickInsertMenuItem, {
|
|
58
|
+
api: api,
|
|
59
|
+
columnCount: columnCount,
|
|
60
|
+
title: title
|
|
61
|
+
})
|
|
62
|
+
}));
|
package/dist/esm/layoutPlugin.js
CHANGED
|
@@ -7,7 +7,8 @@ import { layoutMessages, toolbarInsertBlockMessages as messages } from '@atlaski
|
|
|
7
7
|
import { IconFiveColumnLayout, IconFourColumnLayout, IconLayout, IconOneColumnLayout, IconThreeColumnLayout, IconTwoColumnLayout } from '@atlaskit/editor-common/quick-insert';
|
|
8
8
|
import { TextSelection } from '@atlaskit/editor-prosemirror/state';
|
|
9
9
|
import { findParentNode } from '@atlaskit/editor-prosemirror/utils';
|
|
10
|
-
import {
|
|
10
|
+
import { isExperimentEnabled } from '@atlaskit/platform-feature-experiments/is-experiment-enabled';
|
|
11
|
+
import { fg } from '@atlaskit/platform-feature-flags/fg';
|
|
11
12
|
import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
|
|
12
13
|
import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments';
|
|
13
14
|
import { createDefaultLayoutSection, createMultiColumnLayoutSection, deleteLayoutColumn as _deleteLayoutColumn, distributeLayoutColumns as _distributeLayoutColumns, insertLayoutColumn as _insertLayoutColumn, insertLayoutColumnsWithAnalytics, setLayoutColumnDangerPreview, setLayoutColumnValign as _setLayoutColumnValign, toggleLayoutColumnMenu } from './pm-plugins/actions';
|
|
@@ -19,6 +20,7 @@ import { GlobalStylesWrapper } from './ui/global-styles';
|
|
|
19
20
|
import { createLayoutBlockMenuItem } from './ui/LayoutBlockMenuItem';
|
|
20
21
|
import { LayoutColumnMenu } from './ui/LayoutColumnMenu';
|
|
21
22
|
import { getLayoutColumnMenuComponents } from './ui/LayoutColumnMenu/components';
|
|
23
|
+
import { getLayoutQuickInsertComponents } from './ui/quick-insert/getLayoutQuickInsertComponents';
|
|
22
24
|
import { buildToolbar } from './ui/toolbar';
|
|
23
25
|
var LAYOUT_SECTION_NODE_NAME = 'layoutSection';
|
|
24
26
|
|
|
@@ -54,9 +56,11 @@ export var layoutPlugin = function layoutPlugin(_ref) {
|
|
|
54
56
|
var _ref$config = _ref.config,
|
|
55
57
|
options = _ref$config === void 0 ? {} : _ref$config,
|
|
56
58
|
api = _ref.api;
|
|
57
|
-
var
|
|
59
|
+
var isAdvancedLayoutEnabled = editorExperiment('advanced_layouts', true);
|
|
60
|
+
var allowAdvancedSingleColumnLayout = isAdvancedLayoutEnabled && editorExperiment('single_column_layouts', true, {
|
|
58
61
|
exposure: true
|
|
59
62
|
});
|
|
63
|
+
var isRegisteredSlashCommandEnabled = isExperimentEnabled('platform_editor_slash_command') && isAdvancedLayoutEnabled;
|
|
60
64
|
if (editorExperiment('platform_editor_block_menu', true)) {
|
|
61
65
|
var _api$blockMenu;
|
|
62
66
|
api === null || api === void 0 || (_api$blockMenu = api.blockMenu) === null || _api$blockMenu === void 0 || _api$blockMenu.actions.registerBlockMenuComponents([{
|
|
@@ -80,6 +84,12 @@ export var layoutPlugin = function layoutPlugin(_ref) {
|
|
|
80
84
|
api: api
|
|
81
85
|
}));
|
|
82
86
|
}
|
|
87
|
+
if (isRegisteredSlashCommandEnabled) {
|
|
88
|
+
var _api$uiControlRegistr2;
|
|
89
|
+
api === null || api === void 0 || (_api$uiControlRegistr2 = api.uiControlRegistry) === null || _api$uiControlRegistr2 === void 0 || _api$uiControlRegistr2.actions.register(getLayoutQuickInsertComponents({
|
|
90
|
+
api: api
|
|
91
|
+
}));
|
|
92
|
+
}
|
|
83
93
|
return {
|
|
84
94
|
name: 'layout',
|
|
85
95
|
nodes: function nodes() {
|
|
@@ -142,7 +152,7 @@ export var layoutPlugin = function layoutPlugin(_ref) {
|
|
|
142
152
|
}
|
|
143
153
|
return undefined;
|
|
144
154
|
},
|
|
145
|
-
quickInsert: function
|
|
155
|
+
quickInsert: isRegisteredSlashCommandEnabled ? undefined : function (_ref3) {
|
|
146
156
|
var formatMessage = _ref3.formatMessage;
|
|
147
157
|
var withInsertLayoutAnalytics = function withInsertLayoutAnalytics(tr, columnCount) {
|
|
148
158
|
var _api$analytics3;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import React, { useCallback } from 'react';
|
|
2
|
+
import { useIntl } from 'react-intl';
|
|
3
|
+
import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE } from '@atlaskit/editor-common/analytics';
|
|
4
|
+
import { IconFiveColumnLayout, IconFourColumnLayout, IconThreeColumnLayout, IconTwoColumnLayout } from '@atlaskit/editor-common/assets';
|
|
5
|
+
import { QuickInsertMenuItem } from '@atlaskit/editor-common/quick-insert/menu-item';
|
|
6
|
+
import { selectIntoLayoutSection } from '../../layoutPlugin';
|
|
7
|
+
import { createMultiColumnLayoutSection } from '../../pm-plugins/actions';
|
|
8
|
+
var icons = {
|
|
9
|
+
2: IconTwoColumnLayout,
|
|
10
|
+
3: IconThreeColumnLayout,
|
|
11
|
+
4: IconFourColumnLayout,
|
|
12
|
+
5: IconFiveColumnLayout
|
|
13
|
+
};
|
|
14
|
+
export var LayoutQuickInsertMenuItem = function LayoutQuickInsertMenuItem(_ref) {
|
|
15
|
+
var api = _ref.api,
|
|
16
|
+
columnCount = _ref.columnCount,
|
|
17
|
+
title = _ref.title;
|
|
18
|
+
var _useIntl = useIntl(),
|
|
19
|
+
formatMessage = _useIntl.formatMessage;
|
|
20
|
+
var Icon = icons[columnCount];
|
|
21
|
+
var onSelect = useCallback(function (_ref2) {
|
|
22
|
+
var _api$analytics;
|
|
23
|
+
var editorView = _ref2.editorView,
|
|
24
|
+
insert = _ref2.insert,
|
|
25
|
+
source = _ref2.source;
|
|
26
|
+
var tr = insert(createMultiColumnLayoutSection(editorView.state, columnCount));
|
|
27
|
+
api === null || api === void 0 || (_api$analytics = api.analytics) === null || _api$analytics === void 0 || _api$analytics.actions.attachAnalyticsEvent({
|
|
28
|
+
action: ACTION.INSERTED,
|
|
29
|
+
actionSubject: ACTION_SUBJECT.DOCUMENT,
|
|
30
|
+
actionSubjectId: ACTION_SUBJECT_ID.LAYOUT,
|
|
31
|
+
attributes: {
|
|
32
|
+
columnCount: columnCount,
|
|
33
|
+
inputMethod: source
|
|
34
|
+
},
|
|
35
|
+
eventType: EVENT_TYPE.TRACK
|
|
36
|
+
})(tr);
|
|
37
|
+
selectIntoLayoutSection(tr);
|
|
38
|
+
return tr;
|
|
39
|
+
}, [api, columnCount]);
|
|
40
|
+
return /*#__PURE__*/React.createElement(QuickInsertMenuItem, {
|
|
41
|
+
iconBefore: /*#__PURE__*/React.createElement(Icon, null),
|
|
42
|
+
onSelect: onSelect,
|
|
43
|
+
title: formatMessage(title)
|
|
44
|
+
});
|
|
45
|
+
};
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { layoutMessages, toolbarInsertBlockMessages as messages } from '@atlaskit/editor-common/messages';
|
|
3
|
+
import { createQuickInsertMatcher } from '@atlaskit/editor-common/quick-insert/create-quick-insert-matcher';
|
|
4
|
+
import { FIVE_COLUMNS_LAYOUT_MENU_ITEM, FOUR_COLUMNS_LAYOUT_MENU_ITEM, STRUCTURE_SECTION, THREE_COLUMNS_LAYOUT_MENU_ITEM, TWO_COLUMNS_LAYOUT_MENU_ITEM } from '@atlaskit/editor-common/quick-insert/keys';
|
|
5
|
+
import { STRUCTURE_SECTION_RANK } from '@atlaskit/editor-common/quick-insert/rank';
|
|
6
|
+
import { LayoutQuickInsertMenuItem } from './LayoutQuickInsertMenuItem';
|
|
7
|
+
var layoutItems = [{
|
|
8
|
+
columnCount: 2,
|
|
9
|
+
description: messages.columnsDescriptionAdvancedLayout,
|
|
10
|
+
item: TWO_COLUMNS_LAYOUT_MENU_ITEM,
|
|
11
|
+
keyword: 'two column',
|
|
12
|
+
title: layoutMessages.twoColumnsAdvancedLayout
|
|
13
|
+
}, {
|
|
14
|
+
columnCount: 3,
|
|
15
|
+
description: messages.columnsDescriptionAdvancedLayout,
|
|
16
|
+
item: THREE_COLUMNS_LAYOUT_MENU_ITEM,
|
|
17
|
+
keyword: 'three column',
|
|
18
|
+
title: layoutMessages.threeColumnsAdvancedLayout
|
|
19
|
+
}, {
|
|
20
|
+
columnCount: 4,
|
|
21
|
+
description: messages.columnsDescriptionAdvancedLayout,
|
|
22
|
+
item: FOUR_COLUMNS_LAYOUT_MENU_ITEM,
|
|
23
|
+
keyword: 'four column',
|
|
24
|
+
title: layoutMessages.fourColumns
|
|
25
|
+
}, {
|
|
26
|
+
columnCount: 5,
|
|
27
|
+
description: messages.columnsDescriptionAdvancedLayout,
|
|
28
|
+
item: FIVE_COLUMNS_LAYOUT_MENU_ITEM,
|
|
29
|
+
keyword: 'five column',
|
|
30
|
+
title: layoutMessages.fiveColumns
|
|
31
|
+
}];
|
|
32
|
+
export var getLayoutQuickInsertComponents = function getLayoutQuickInsertComponents(_ref) {
|
|
33
|
+
var api = _ref.api;
|
|
34
|
+
return layoutItems.map(function (_ref2) {
|
|
35
|
+
var columnCount = _ref2.columnCount,
|
|
36
|
+
description = _ref2.description,
|
|
37
|
+
item = _ref2.item,
|
|
38
|
+
keyword = _ref2.keyword,
|
|
39
|
+
title = _ref2.title;
|
|
40
|
+
return {
|
|
41
|
+
key: item.key,
|
|
42
|
+
type: item.type,
|
|
43
|
+
parents: [{
|
|
44
|
+
key: STRUCTURE_SECTION.key,
|
|
45
|
+
type: STRUCTURE_SECTION.type,
|
|
46
|
+
rank: STRUCTURE_SECTION_RANK[item.key]
|
|
47
|
+
}],
|
|
48
|
+
match: createQuickInsertMatcher(function (_ref3) {
|
|
49
|
+
var formatMessage = _ref3.formatMessage;
|
|
50
|
+
return {
|
|
51
|
+
description: formatMessage(description, {
|
|
52
|
+
numberOfColumns: ['one', 'two', 'three', 'four', 'five'][columnCount - 1]
|
|
53
|
+
}),
|
|
54
|
+
keywords: ['layout', 'column', 'section', 'col', keyword],
|
|
55
|
+
title: formatMessage(title)
|
|
56
|
+
};
|
|
57
|
+
}),
|
|
58
|
+
component: function component() {
|
|
59
|
+
return /*#__PURE__*/React.createElement(LayoutQuickInsertMenuItem, {
|
|
60
|
+
api: api,
|
|
61
|
+
columnCount: columnCount,
|
|
62
|
+
title: title
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
});
|
|
67
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { MessageDescriptor } from 'react-intl';
|
|
3
|
+
import type { ExtractInjectionAPI } from '@atlaskit/editor-common/types';
|
|
4
|
+
import type { LayoutPlugin } from '../../layoutPluginType';
|
|
5
|
+
type Props = {
|
|
6
|
+
api: ExtractInjectionAPI<LayoutPlugin> | undefined;
|
|
7
|
+
columnCount: 2 | 3 | 4 | 5;
|
|
8
|
+
title: MessageDescriptor;
|
|
9
|
+
};
|
|
10
|
+
export declare const LayoutQuickInsertMenuItem: ({ api, columnCount, title, }: Props) => React.JSX.Element;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ExtractInjectionAPI } from '@atlaskit/editor-common/types';
|
|
2
|
+
import type { RegisterMenuItem } from '@atlaskit/editor-ui-control-model/types';
|
|
3
|
+
import type { LayoutPlugin } from '../../layoutPluginType';
|
|
4
|
+
type Params = {
|
|
5
|
+
api: ExtractInjectionAPI<LayoutPlugin> | undefined;
|
|
6
|
+
};
|
|
7
|
+
export declare const getLayoutQuickInsertComponents: ({ api }: Params) => RegisterMenuItem[];
|
|
8
|
+
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/editor-plugin-layout",
|
|
3
|
-
"version": "16.0.
|
|
3
|
+
"version": "16.0.1",
|
|
4
4
|
"description": "Layout plugin for @atlaskit/editor-core",
|
|
5
5
|
"author": "Atlassian Pty Ltd",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -41,6 +41,7 @@
|
|
|
41
41
|
"@atlaskit/editor-ui-control-model": "^2.6.0",
|
|
42
42
|
"@atlaskit/icon": "^37.3.0",
|
|
43
43
|
"@atlaskit/icon-lab": "^7.5.0",
|
|
44
|
+
"@atlaskit/platform-feature-experiments": "^0.3.0",
|
|
44
45
|
"@atlaskit/platform-feature-flags": "^2.1.0",
|
|
45
46
|
"@atlaskit/tmp-editor-statsig": "^147.1.0",
|
|
46
47
|
"@atlaskit/tokens": "^16.7.0",
|
|
@@ -49,7 +50,7 @@
|
|
|
49
50
|
"bind-event-listener": "^3.0.0"
|
|
50
51
|
},
|
|
51
52
|
"peerDependencies": {
|
|
52
|
-
"@atlaskit/editor-common": "^119.
|
|
53
|
+
"@atlaskit/editor-common": "^119.1.0",
|
|
53
54
|
"react": "^18.2.0 || ^19.2.0",
|
|
54
55
|
"react-intl": "^5.25.1 || ^6.0.0 || ^7.0.0"
|
|
55
56
|
},
|