@atlaskit/editor-plugin-layout 20.0.1 → 20.0.3

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.
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
- import { layoutColumn, layoutColumnWithLocalId } from '@atlaskit/adf-schema/nodes/layout-column';
3
2
  import { layoutSection, layoutSectionWithLocalId, layoutSectionWithSingleColumn, layoutSectionWithSingleColumnLocalId } from '@atlaskit/adf-schema/layout-section';
3
+ import { layoutColumn, layoutColumnWithLocalId } from '@atlaskit/adf-schema/nodes/layout-column';
4
4
  import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE, INPUT_METHOD } from '@atlaskit/editor-common/analytics';
5
5
  import { TRANSFORM_STRUCTURE_LAYOUT_MENU_ITEM, TRANSFORM_STRUCTURE_MENU_SECTION, TRANSFORM_STRUCTURE_MENU_SECTION_RANK } from '@atlaskit/editor-common/block-menu';
6
6
  import { layoutMessages, toolbarInsertBlockMessages as messages } from '@atlaskit/editor-common/messages';
@@ -9,8 +9,8 @@ import { TextSelection } from '@atlaskit/editor-prosemirror/state';
9
9
  import { findParentNode } from '@atlaskit/editor-prosemirror/utils';
10
10
  import { isExperimentEnabled } from '@atlaskit/platform-feature-experiments/is-experiment-enabled';
11
11
  import { fg } from '@atlaskit/platform-feature-flags/fg';
12
- import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
13
12
  import { editorExperiment } from '@atlaskit/tmp-editor-statsig/editor-experiment';
13
+ import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
14
14
  import { createDefaultLayoutSection, createMultiColumnLayoutSection, deleteLayoutColumn, distributeLayoutColumns, insertLayoutColumn, insertLayoutColumnsWithAnalytics, setLayoutColumnDangerPreview, setLayoutColumnValign, toggleLayoutColumnMenu } from './pm-plugins/actions';
15
15
  import { default as createLayoutKeymapPlugin } from './pm-plugins/keymap';
16
16
  import { default as createLayoutPlugin } from './pm-plugins/main';
@@ -55,7 +55,6 @@ export const layoutPlugin = ({
55
55
  api
56
56
  }) => {
57
57
  var _api$blockMenu, _api$analytics2;
58
- const blockControlMigrationEnabled = isExperimentEnabled('platform_editor_block_control_migration');
59
58
  const isAdvancedLayoutEnabled = editorExperiment('advanced_layouts', true);
60
59
  const allowAdvancedSingleColumnLayout = isAdvancedLayoutEnabled && editorExperiment('single_column_layouts', true, {
61
60
  exposure: true
@@ -166,159 +165,80 @@ export const layoutPlugin = ({
166
165
  return tr;
167
166
  };
168
167
  if (editorExperiment('advanced_layouts', true)) {
169
- const advancedSingleColumnOption = allowAdvancedSingleColumnLayout ? [{
170
- id: 'onecolumnlayout',
171
- title: formatMessage(layoutMessages.singleColumnAdvancedLayout),
172
- description: formatMessage(messages.singleColumnsDescriptionAdvancedLayout),
173
- keywords: ['layout', 'column', 'section', 'col', 'single column'],
174
- priority: 1100,
175
- icon: () => /*#__PURE__*/React.createElement(IconOneColumnLayout, null),
176
- action(insert, state) {
177
- const tr = insert(createMultiColumnLayoutSection(state, 1));
178
- if (fg('platform_editor_column_count_analytics')) {
179
- withInsertLayoutAnalytics(tr, 1);
180
- } else {
181
- withInsertLayoutAnalytics(tr);
182
- }
183
- selectIntoLayoutSection(tr);
184
- return tr;
185
- }
186
- }] : [];
187
- if (expValEquals('platform_editor_layout_typeahead_reorder', 'isEnabled', true)) {
188
- const createAdvancedColumnLayoutOption = ({
189
- columnCount,
190
- descriptionColumnCount,
191
- icon: Icon,
192
- id,
193
- keyword,
194
- title
195
- }) => ({
196
- id,
197
- title,
198
- description: formatMessage(messages.columnsDescriptionAdvancedLayout, {
199
- numberOfColumns: descriptionColumnCount
200
- }),
201
- keywords: ['layout', 'column', 'section', 'col', keyword],
202
- priority: 1100,
203
- icon: Icon,
204
- action(insert, state) {
205
- const tr = insert(createMultiColumnLayoutSection(state, columnCount));
206
- if (fg('platform_editor_column_count_analytics')) {
207
- withInsertLayoutAnalytics(tr, columnCount);
208
- } else {
209
- withInsertLayoutAnalytics(tr);
210
- }
211
- selectIntoLayoutSection(tr);
212
- return tr;
213
- }
214
- });
215
- return [createAdvancedColumnLayoutOption({
216
- columnCount: 2,
217
- descriptionColumnCount: 'two',
218
- icon: () => /*#__PURE__*/React.createElement(IconTwoColumnLayout, null),
219
- id: 'twocolumnslayout',
220
- keyword: 'two column',
221
- title: formatMessage(layoutMessages.twoColumnsAdvancedLayout)
222
- }), ...advancedSingleColumnOption, createAdvancedColumnLayoutOption({
223
- columnCount: 3,
224
- descriptionColumnCount: 'three',
225
- icon: () => /*#__PURE__*/React.createElement(IconThreeColumnLayout, null),
226
- id: 'threecolumnslayout',
227
- keyword: 'three column',
228
- title: formatMessage(layoutMessages.threeColumnsAdvancedLayout)
229
- }), createAdvancedColumnLayoutOption({
230
- columnCount: 4,
231
- descriptionColumnCount: 'four',
232
- icon: () => /*#__PURE__*/React.createElement(IconFourColumnLayout, null),
233
- id: 'fourcolumnslayout',
234
- keyword: 'four column',
235
- title: formatMessage(layoutMessages.fourColumns)
236
- }), createAdvancedColumnLayoutOption({
237
- columnCount: 5,
238
- descriptionColumnCount: 'five',
239
- icon: () => /*#__PURE__*/React.createElement(IconFiveColumnLayout, null),
240
- id: 'fivecolumnslayout',
241
- keyword: 'five column',
242
- title: formatMessage(layoutMessages.fiveColumns)
243
- })];
244
- }
245
- return [...advancedSingleColumnOption, {
246
- id: 'twocolumnslayout',
247
- title: formatMessage(layoutMessages.twoColumnsAdvancedLayout),
168
+ const createAdvancedColumnLayoutOption = ({
169
+ columnCount,
170
+ descriptionColumnCount,
171
+ icon: Icon,
172
+ id,
173
+ keyword,
174
+ title
175
+ }) => ({
176
+ id,
177
+ title,
248
178
  description: formatMessage(messages.columnsDescriptionAdvancedLayout, {
249
- numberOfColumns: 'two'
179
+ numberOfColumns: descriptionColumnCount
250
180
  }),
251
- keywords: ['layout', 'column', 'section', 'col', 'two column'],
181
+ keywords: ['layout', 'column', 'section', 'col', keyword],
252
182
  priority: 1100,
253
- icon: () => /*#__PURE__*/React.createElement(IconTwoColumnLayout, null),
183
+ icon: Icon,
254
184
  action(insert, state) {
255
- const tr = insert(createMultiColumnLayoutSection(state, 2));
185
+ const tr = insert(createMultiColumnLayoutSection(state, columnCount));
256
186
  if (fg('platform_editor_column_count_analytics')) {
257
- withInsertLayoutAnalytics(tr, 2);
187
+ withInsertLayoutAnalytics(tr, columnCount);
258
188
  } else {
259
189
  withInsertLayoutAnalytics(tr);
260
190
  }
261
191
  selectIntoLayoutSection(tr);
262
192
  return tr;
263
193
  }
264
- }, {
265
- id: 'threecolumnslayout',
266
- title: formatMessage(layoutMessages.threeColumnsAdvancedLayout),
267
- description: formatMessage(messages.columnsDescriptionAdvancedLayout, {
268
- numberOfColumns: 'three'
269
- }),
270
- keywords: ['layout', 'column', 'section', 'col', 'three column'],
194
+ });
195
+ const advancedSingleColumnOption = allowAdvancedSingleColumnLayout ? [{
196
+ id: 'onecolumnlayout',
197
+ title: formatMessage(layoutMessages.singleColumnAdvancedLayout),
198
+ description: formatMessage(messages.singleColumnsDescriptionAdvancedLayout),
199
+ keywords: ['layout', 'column', 'section', 'col', 'single column'],
271
200
  priority: 1100,
272
- icon: () => /*#__PURE__*/React.createElement(IconThreeColumnLayout, null),
201
+ icon: () => /*#__PURE__*/React.createElement(IconOneColumnLayout, null),
273
202
  action(insert, state) {
274
- const tr = insert(createMultiColumnLayoutSection(state, 3));
203
+ const tr = insert(createMultiColumnLayoutSection(state, 1));
275
204
  if (fg('platform_editor_column_count_analytics')) {
276
- withInsertLayoutAnalytics(tr, 3);
205
+ withInsertLayoutAnalytics(tr, 1);
277
206
  } else {
278
207
  withInsertLayoutAnalytics(tr);
279
208
  }
280
209
  selectIntoLayoutSection(tr);
281
210
  return tr;
282
211
  }
283
- }, {
284
- id: 'fourcolumnslayout',
285
- title: formatMessage(layoutMessages.fourColumns),
286
- description: formatMessage(messages.columnsDescriptionAdvancedLayout, {
287
- numberOfColumns: 'four'
288
- }),
289
- keywords: ['layout', 'column', 'section', 'col', 'four column'],
290
- priority: 1100,
212
+ }] : [];
213
+ return [createAdvancedColumnLayoutOption({
214
+ columnCount: 2,
215
+ descriptionColumnCount: 'two',
216
+ icon: () => /*#__PURE__*/React.createElement(IconTwoColumnLayout, null),
217
+ id: 'twocolumnslayout',
218
+ keyword: 'two column',
219
+ title: formatMessage(layoutMessages.twoColumnsAdvancedLayout)
220
+ }), ...advancedSingleColumnOption, createAdvancedColumnLayoutOption({
221
+ columnCount: 3,
222
+ descriptionColumnCount: 'three',
223
+ icon: () => /*#__PURE__*/React.createElement(IconThreeColumnLayout, null),
224
+ id: 'threecolumnslayout',
225
+ keyword: 'three column',
226
+ title: formatMessage(layoutMessages.threeColumnsAdvancedLayout)
227
+ }), createAdvancedColumnLayoutOption({
228
+ columnCount: 4,
229
+ descriptionColumnCount: 'four',
291
230
  icon: () => /*#__PURE__*/React.createElement(IconFourColumnLayout, null),
292
- action(insert, state) {
293
- const tr = insert(createMultiColumnLayoutSection(state, 4));
294
- if (fg('platform_editor_column_count_analytics')) {
295
- withInsertLayoutAnalytics(tr, 4);
296
- } else {
297
- withInsertLayoutAnalytics(tr);
298
- }
299
- selectIntoLayoutSection(tr);
300
- return tr;
301
- }
302
- }, {
303
- id: 'fivecolumnslayout',
304
- title: formatMessage(layoutMessages.fiveColumns),
305
- description: formatMessage(messages.columnsDescriptionAdvancedLayout, {
306
- numberOfColumns: 'five'
307
- }),
308
- keywords: ['layout', 'column', 'section', 'col', 'five column'],
309
- priority: 1100,
231
+ id: 'fourcolumnslayout',
232
+ keyword: 'four column',
233
+ title: formatMessage(layoutMessages.fourColumns)
234
+ }), createAdvancedColumnLayoutOption({
235
+ columnCount: 5,
236
+ descriptionColumnCount: 'five',
310
237
  icon: () => /*#__PURE__*/React.createElement(IconFiveColumnLayout, null),
311
- action(insert, state) {
312
- const tr = insert(createMultiColumnLayoutSection(state, 5));
313
- if (fg('platform_editor_column_count_analytics')) {
314
- withInsertLayoutAnalytics(tr, 5);
315
- } else {
316
- withInsertLayoutAnalytics(tr);
317
- }
318
- selectIntoLayoutSection(tr);
319
- return tr;
320
- }
321
- }];
238
+ id: 'fivecolumnslayout',
239
+ keyword: 'five column',
240
+ title: formatMessage(layoutMessages.fiveColumns)
241
+ })];
322
242
  } else {
323
243
  return [{
324
244
  id: 'layout',
@@ -356,8 +276,7 @@ export const layoutPlugin = ({
356
276
  editorView: editorView,
357
277
  mountTo: popupsMountPoint,
358
278
  boundariesElement: popupsBoundariesElement,
359
- scrollableElement: popupsScrollableElement,
360
- useRegistryAnchor: blockControlMigrationEnabled
279
+ scrollableElement: popupsScrollableElement
361
280
  }) : null);
362
281
  },
363
282
  getSharedState(editorState) {
@@ -6,8 +6,8 @@ import { BreakoutResizer, ignoreResizerMutations } from '@atlaskit/editor-common
6
6
  import { useSharedPluginStateSelector } from '@atlaskit/editor-common/use-shared-plugin-state-selector';
7
7
  import { DOMSerializer } from '@atlaskit/editor-prosemirror/model';
8
8
  import { fg } from '@atlaskit/platform-feature-flags/fg';
9
- import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
10
9
  import { editorExperiment } from '@atlaskit/tmp-editor-statsig/editor-experiment';
10
+ import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
11
11
  import { selectIntoLayout } from '../pm-plugins/utils';
12
12
  import { LayoutSSRReactContextsProvider } from '../ui/LayoutSSRReactContextsProvider';
13
13
  import { isEmptyLayout } from './utils';
@@ -6,8 +6,8 @@ import { NodeSelection, TextSelection } from '@atlaskit/editor-prosemirror/state
6
6
  import { Mapping, StepMap } from '@atlaskit/editor-prosemirror/transform';
7
7
  import { safeInsert } from '@atlaskit/editor-prosemirror/utils';
8
8
  import { fg } from '@atlaskit/platform-feature-flags/fg';
9
- import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
10
9
  import { editorExperiment } from '@atlaskit/tmp-editor-statsig/editor-experiment';
10
+ import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
11
11
  import { DEFAULT_LAYOUT_COLUMN_VALIGN, EVEN_DISTRIBUTED_COL_WIDTHS, MAX_LAYOUT_COLUMNS, MAX_STANDARD_LAYOUT_COLUMNS, MIN_LAYOUT_COLUMN_WIDTH_PERCENT } from './consts';
12
12
  import { pluginKey } from './plugin-key';
13
13
  import { calculateDistribution, isDistributedUniformly, redistributeAfterDeletion, redistributeProportionally } from './utils/layout-column-distribution';
@@ -7,8 +7,8 @@ import { Fragment } from '@atlaskit/editor-prosemirror/model';
7
7
  import { NodeSelection, Selection, TextSelection } from '@atlaskit/editor-prosemirror/state';
8
8
  import { findParentNodeClosestToPos, findParentNodeOfType } from '@atlaskit/editor-prosemirror/utils';
9
9
  import { Decoration, DecorationSet } from '@atlaskit/editor-prosemirror/view';
10
- import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
11
10
  import { editorExperiment } from '@atlaskit/tmp-editor-statsig/editor-experiment';
11
+ import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
12
12
  import { fixColumnSizes, fixColumnStructure, getSelectedLayout, LAYOUT_COLUMN_INSERT_META } from './actions';
13
13
  import { getColumnDividerDecorations } from './column-resize-divider';
14
14
  import { EVEN_DISTRIBUTED_COL_WIDTHS } from './consts';
@@ -4,8 +4,8 @@ import { TextSelection } from '@atlaskit/editor-prosemirror/state';
4
4
  import { findParentNodeOfType, findSelectedNodeOfType } from '@atlaskit/editor-prosemirror/utils';
5
5
  import { isExperimentEnabled } from '@atlaskit/platform-feature-experiments/is-experiment-enabled';
6
6
  import { fg } from '@atlaskit/platform-feature-flags/fg';
7
- import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
8
7
  import { editorExperiment } from '@atlaskit/tmp-editor-statsig/editor-experiment';
8
+ import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
9
9
  export const getMaybeLayoutSection = state => {
10
10
  const {
11
11
  schema: {
@@ -10,6 +10,7 @@ import { UserIntentPopupWrapper } from '@atlaskit/editor-common/user-intent';
10
10
  import { akEditorFloatingOverlapPanelZIndex } from '@atlaskit/editor-shared-styles';
11
11
  import { ToolbarDropdownMenuProvider } from '@atlaskit/editor-toolbar';
12
12
  import { SurfaceRenderer } from '@atlaskit/editor-ui-control-model';
13
+ import { isExperimentEnabled } from '@atlaskit/platform-feature-experiments/is-experiment-enabled';
13
14
  import { getLayoutColumnMenuAnchorPos } from '../../pm-plugins/utils/layout-column-selection';
14
15
  import { LAYOUT_COLUMN_MENU_FALLBACKS } from './components';
15
16
  import { LAYOUT_COLUMN_MENU } from './keys';
@@ -42,8 +43,7 @@ export const LayoutColumnMenu = /*#__PURE__*/React.memo(function LayoutColumnMen
42
43
  editorView,
43
44
  mountTo,
44
45
  boundariesElement,
45
- scrollableElement,
46
- useRegistryAnchor
46
+ scrollableElement
47
47
  }) {
48
48
  var _api$uiControlRegistr, _api$uiControlRegistr2;
49
49
  const {
@@ -117,10 +117,11 @@ export const LayoutColumnMenu = /*#__PURE__*/React.memo(function LayoutColumnMen
117
117
  });
118
118
  }, [handleMenuKeyDown, isLayoutColumnMenuOpen]);
119
119
  const components = (_api$uiControlRegistr = api === null || api === void 0 ? void 0 : (_api$uiControlRegistr2 = api.uiControlRegistry) === null || _api$uiControlRegistr2 === void 0 ? void 0 : _api$uiControlRegistr2.actions.getComponents(LAYOUT_COLUMN_MENU.key)) !== null && _api$uiControlRegistr !== void 0 ? _api$uiControlRegistr : [];
120
- const legacyTarget = useMemo(() => isLayoutColumnMenuOpen && !useRegistryAnchor ? getLayoutColumnMenuTarget(editorView, selection, layoutColumnMenuAnchorPos) : null, [editorView, isLayoutColumnMenuOpen, layoutColumnMenuAnchorPos, selection, useRegistryAnchor]);
120
+ const hasValidMenuSelection = !isExperimentEnabled('platform_editor_block_control_migration') || selection !== undefined && getLayoutColumnMenuAnchorPos(selection, layoutColumnMenuAnchorPos) !== undefined;
121
+ const legacyTarget = useMemo(() => isLayoutColumnMenuOpen && !isExperimentEnabled('platform_editor_block_control_migration') ? getLayoutColumnMenuTarget(editorView, selection, layoutColumnMenuAnchorPos) : null, [editorView, isLayoutColumnMenuOpen, layoutColumnMenuAnchorPos, selection]);
121
122
  const surfaceTargetRef = useRef(null);
122
123
  const surfaceAnchorPosRef = useRef(undefined);
123
- if (!useRegistryAnchor || !isLayoutColumnMenuOpen) {
124
+ if (!isExperimentEnabled('platform_editor_block_control_migration') || !isLayoutColumnMenuOpen) {
124
125
  surfaceTargetRef.current = null;
125
126
  surfaceAnchorPosRef.current = undefined;
126
127
  } else if (!surfaceTargetRef.current || surfaceAnchorPosRef.current !== layoutColumnMenuAnchorPos) {
@@ -128,7 +129,7 @@ export const LayoutColumnMenu = /*#__PURE__*/React.memo(function LayoutColumnMen
128
129
  surfaceTargetRef.current = (_surfaceDragHandleEle = surfaceDragHandleElementStore.get(editorView)) !== null && _surfaceDragHandleEle !== void 0 ? _surfaceDragHandleEle : surfaceTargetRef.current;
129
130
  surfaceAnchorPosRef.current = layoutColumnMenuAnchorPos;
130
131
  }
131
- const target = useRegistryAnchor ? surfaceTargetRef.current : legacyTarget;
132
+ const target = isExperimentEnabled('platform_editor_block_control_migration') ? surfaceTargetRef.current : legacyTarget;
132
133
  const hasValidTarget = target instanceof HTMLElement;
133
134
  const positionLayoutColumnMenu = useCallback(position => {
134
135
  var _menuWrapperRef$curre;
@@ -147,17 +148,17 @@ export const LayoutColumnMenu = /*#__PURE__*/React.memo(function LayoutColumnMen
147
148
  return position;
148
149
  }, [editorView, scrollableElement, target]);
149
150
  useEffect(() => {
150
- if (isLayoutColumnMenuOpen && (!hasValidTarget || components.length === 0)) {
151
+ if (isLayoutColumnMenuOpen && (!hasValidMenuSelection || !hasValidTarget || components.length === 0)) {
151
152
  closeLayoutColumnMenu();
152
153
  }
153
- }, [closeLayoutColumnMenu, components.length, hasValidTarget, isLayoutColumnMenuOpen]);
154
+ }, [closeLayoutColumnMenu, components.length, hasValidMenuSelection, hasValidTarget, isLayoutColumnMenuOpen]);
154
155
  const {
155
156
  alignX,
156
157
  alignY,
157
158
  offset,
158
159
  useManualBelowFlip
159
160
  } = useMemo(() => getLayoutColumnMenuPositioningProps(), []);
160
- if (!isLayoutColumnMenuOpen || components.length === 0 || !hasValidTarget) {
161
+ if (!isLayoutColumnMenuOpen || !hasValidMenuSelection || components.length === 0 || !hasValidTarget) {
161
162
  return null;
162
163
  }
163
164
  return /*#__PURE__*/React.createElement(PopupWithListeners, {
@@ -2,10 +2,10 @@ import React, { useCallback } from 'react';
2
2
  import { useIntl } from 'react-intl';
3
3
  import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE } from '@atlaskit/editor-common/analytics';
4
4
  import { QuickInsertMenuItem } from '@atlaskit/editor-common/quick-insert/menu-item';
5
- import LayoutThreeColumnsIcon from '@atlaskit/icon/core/layout-three-columns';
6
- import LayoutTwoColumnsIcon from '@atlaskit/icon/core/layout-two-columns';
7
5
  import LayoutFiveColumnsIcon from '@atlaskit/icon-lab/core/layout-five-columns';
8
6
  import LayoutFourColumnsIcon from '@atlaskit/icon-lab/core/layout-four-columns';
7
+ import LayoutThreeColumnsIcon from '@atlaskit/icon/core/layout-three-columns';
8
+ import LayoutTwoColumnsIcon from '@atlaskit/icon/core/layout-two-columns';
9
9
  import { selectIntoLayoutSection } from '../../layoutPlugin';
10
10
  import { createMultiColumnLayoutSection } from '../../pm-plugins/actions';
11
11
  const icons = {
@@ -13,8 +13,8 @@ import LayoutTwoColumnsIcon from '@atlaskit/icon/core/layout-two-columns';
13
13
  import LayoutTwoColumnsSidebarLeftIcon from '@atlaskit/icon/core/layout-two-columns-sidebar-left';
14
14
  import LayoutTwoColumnsSidebarRightIcon from '@atlaskit/icon/core/layout-two-columns-sidebar-right';
15
15
  import TableColumnsDistributeIcon from '@atlaskit/icon/core/table-columns-distribute';
16
- import { expValEqualsNoExposure } from '@atlaskit/tmp-editor-statsig/exp-val-equals-no-exposure';
17
16
  import { editorExperiment } from '@atlaskit/tmp-editor-statsig/editor-experiment';
17
+ import { expValEqualsNoExposure } from '@atlaskit/tmp-editor-statsig/exp-val-equals-no-exposure';
18
18
  import { deleteActiveLayoutNode, distributeLayoutColumns, getPresetLayout, setPresetLayout } from '../pm-plugins/actions';
19
19
  import { isDistributedUniformly } from '../pm-plugins/utils/layout-column-distribution';
20
20
  import { EditorLayoutFiveColumnsIcon, EditorLayoutFourColumnsIcon } from './icons/LayoutColumnsIcon';
@@ -1,2 +1,3 @@
1
1
  /* eslint-disable @atlaskit/editor/no-re-export */
2
+
2
3
  export { layoutPlugin } from '../layoutPlugin';
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
- import { layoutColumn, layoutColumnWithLocalId } from '@atlaskit/adf-schema/nodes/layout-column';
3
2
  import { layoutSection, layoutSectionWithLocalId, layoutSectionWithSingleColumn, layoutSectionWithSingleColumnLocalId } from '@atlaskit/adf-schema/layout-section';
3
+ import { layoutColumn, layoutColumnWithLocalId } from '@atlaskit/adf-schema/nodes/layout-column';
4
4
  import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE, INPUT_METHOD } from '@atlaskit/editor-common/analytics';
5
5
  import { TRANSFORM_STRUCTURE_LAYOUT_MENU_ITEM, TRANSFORM_STRUCTURE_MENU_SECTION, TRANSFORM_STRUCTURE_MENU_SECTION_RANK } from '@atlaskit/editor-common/block-menu';
6
6
  import { layoutMessages, toolbarInsertBlockMessages as messages } from '@atlaskit/editor-common/messages';
@@ -9,8 +9,8 @@ import { TextSelection } from '@atlaskit/editor-prosemirror/state';
9
9
  import { findParentNode } from '@atlaskit/editor-prosemirror/utils';
10
10
  import { isExperimentEnabled } from '@atlaskit/platform-feature-experiments/is-experiment-enabled';
11
11
  import { fg } from '@atlaskit/platform-feature-flags/fg';
12
- import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
13
12
  import { editorExperiment } from '@atlaskit/tmp-editor-statsig/editor-experiment';
13
+ import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
14
14
  import { createDefaultLayoutSection, createMultiColumnLayoutSection, deleteLayoutColumn as _deleteLayoutColumn, distributeLayoutColumns as _distributeLayoutColumns, insertLayoutColumn as _insertLayoutColumn, insertLayoutColumnsWithAnalytics, setLayoutColumnDangerPreview, setLayoutColumnValign as _setLayoutColumnValign, toggleLayoutColumnMenu } from './pm-plugins/actions';
15
15
  import { default as createLayoutKeymapPlugin } from './pm-plugins/keymap';
16
16
  import { default as createLayoutPlugin } from './pm-plugins/main';
@@ -56,7 +56,6 @@ export var layoutPlugin = function layoutPlugin(_ref) {
56
56
  var _ref$config = _ref.config,
57
57
  options = _ref$config === void 0 ? {} : _ref$config,
58
58
  api = _ref.api;
59
- var blockControlMigrationEnabled = isExperimentEnabled('platform_editor_block_control_migration');
60
59
  var isAdvancedLayoutEnabled = editorExperiment('advanced_layouts', true);
61
60
  var allowAdvancedSingleColumnLayout = isAdvancedLayoutEnabled && editorExperiment('single_column_layouts', true, {
62
61
  exposure: true
@@ -167,6 +166,34 @@ export var layoutPlugin = function layoutPlugin(_ref) {
167
166
  return tr;
168
167
  };
169
168
  if (editorExperiment('advanced_layouts', true)) {
169
+ var createAdvancedColumnLayoutOption = function createAdvancedColumnLayoutOption(_ref4) {
170
+ var columnCount = _ref4.columnCount,
171
+ descriptionColumnCount = _ref4.descriptionColumnCount,
172
+ Icon = _ref4.icon,
173
+ id = _ref4.id,
174
+ keyword = _ref4.keyword,
175
+ title = _ref4.title;
176
+ return {
177
+ id: id,
178
+ title: title,
179
+ description: formatMessage(messages.columnsDescriptionAdvancedLayout, {
180
+ numberOfColumns: descriptionColumnCount
181
+ }),
182
+ keywords: ['layout', 'column', 'section', 'col', keyword],
183
+ priority: 1100,
184
+ icon: Icon,
185
+ action: function action(insert, state) {
186
+ var tr = insert(createMultiColumnLayoutSection(state, columnCount));
187
+ if (fg('platform_editor_column_count_analytics')) {
188
+ withInsertLayoutAnalytics(tr, columnCount);
189
+ } else {
190
+ withInsertLayoutAnalytics(tr);
191
+ }
192
+ selectIntoLayoutSection(tr);
193
+ return tr;
194
+ }
195
+ };
196
+ };
170
197
  var advancedSingleColumnOption = allowAdvancedSingleColumnLayout ? [{
171
198
  id: 'onecolumnlayout',
172
199
  title: formatMessage(layoutMessages.singleColumnAdvancedLayout),
@@ -187,158 +214,43 @@ export var layoutPlugin = function layoutPlugin(_ref) {
187
214
  return tr;
188
215
  }
189
216
  }] : [];
190
- if (expValEquals('platform_editor_layout_typeahead_reorder', 'isEnabled', true)) {
191
- var createAdvancedColumnLayoutOption = function createAdvancedColumnLayoutOption(_ref4) {
192
- var columnCount = _ref4.columnCount,
193
- descriptionColumnCount = _ref4.descriptionColumnCount,
194
- Icon = _ref4.icon,
195
- id = _ref4.id,
196
- keyword = _ref4.keyword,
197
- title = _ref4.title;
198
- return {
199
- id: id,
200
- title: title,
201
- description: formatMessage(messages.columnsDescriptionAdvancedLayout, {
202
- numberOfColumns: descriptionColumnCount
203
- }),
204
- keywords: ['layout', 'column', 'section', 'col', keyword],
205
- priority: 1100,
206
- icon: Icon,
207
- action: function action(insert, state) {
208
- var tr = insert(createMultiColumnLayoutSection(state, columnCount));
209
- if (fg('platform_editor_column_count_analytics')) {
210
- withInsertLayoutAnalytics(tr, columnCount);
211
- } else {
212
- withInsertLayoutAnalytics(tr);
213
- }
214
- selectIntoLayoutSection(tr);
215
- return tr;
216
- }
217
- };
218
- };
219
- return [createAdvancedColumnLayoutOption({
220
- columnCount: 2,
221
- descriptionColumnCount: 'two',
222
- icon: function icon() {
223
- return /*#__PURE__*/React.createElement(IconTwoColumnLayout, null);
224
- },
225
- id: 'twocolumnslayout',
226
- keyword: 'two column',
227
- title: formatMessage(layoutMessages.twoColumnsAdvancedLayout)
228
- })].concat(advancedSingleColumnOption, [createAdvancedColumnLayoutOption({
229
- columnCount: 3,
230
- descriptionColumnCount: 'three',
231
- icon: function icon() {
232
- return /*#__PURE__*/React.createElement(IconThreeColumnLayout, null);
233
- },
234
- id: 'threecolumnslayout',
235
- keyword: 'three column',
236
- title: formatMessage(layoutMessages.threeColumnsAdvancedLayout)
237
- }), createAdvancedColumnLayoutOption({
238
- columnCount: 4,
239
- descriptionColumnCount: 'four',
240
- icon: function icon() {
241
- return /*#__PURE__*/React.createElement(IconFourColumnLayout, null);
242
- },
243
- id: 'fourcolumnslayout',
244
- keyword: 'four column',
245
- title: formatMessage(layoutMessages.fourColumns)
246
- }), createAdvancedColumnLayoutOption({
247
- columnCount: 5,
248
- descriptionColumnCount: 'five',
249
- icon: function icon() {
250
- return /*#__PURE__*/React.createElement(IconFiveColumnLayout, null);
251
- },
252
- id: 'fivecolumnslayout',
253
- keyword: 'five column',
254
- title: formatMessage(layoutMessages.fiveColumns)
255
- })]);
256
- }
257
- return [].concat(advancedSingleColumnOption, [{
258
- id: 'twocolumnslayout',
259
- title: formatMessage(layoutMessages.twoColumnsAdvancedLayout),
260
- description: formatMessage(messages.columnsDescriptionAdvancedLayout, {
261
- numberOfColumns: 'two'
262
- }),
263
- keywords: ['layout', 'column', 'section', 'col', 'two column'],
264
- priority: 1100,
217
+ return [createAdvancedColumnLayoutOption({
218
+ columnCount: 2,
219
+ descriptionColumnCount: 'two',
265
220
  icon: function icon() {
266
221
  return /*#__PURE__*/React.createElement(IconTwoColumnLayout, null);
267
222
  },
268
- action: function action(insert, state) {
269
- var tr = insert(createMultiColumnLayoutSection(state, 2));
270
- if (fg('platform_editor_column_count_analytics')) {
271
- withInsertLayoutAnalytics(tr, 2);
272
- } else {
273
- withInsertLayoutAnalytics(tr);
274
- }
275
- selectIntoLayoutSection(tr);
276
- return tr;
277
- }
278
- }, {
279
- id: 'threecolumnslayout',
280
- title: formatMessage(layoutMessages.threeColumnsAdvancedLayout),
281
- description: formatMessage(messages.columnsDescriptionAdvancedLayout, {
282
- numberOfColumns: 'three'
283
- }),
284
- keywords: ['layout', 'column', 'section', 'col', 'three column'],
285
- priority: 1100,
223
+ id: 'twocolumnslayout',
224
+ keyword: 'two column',
225
+ title: formatMessage(layoutMessages.twoColumnsAdvancedLayout)
226
+ })].concat(advancedSingleColumnOption, [createAdvancedColumnLayoutOption({
227
+ columnCount: 3,
228
+ descriptionColumnCount: 'three',
286
229
  icon: function icon() {
287
230
  return /*#__PURE__*/React.createElement(IconThreeColumnLayout, null);
288
231
  },
289
- action: function action(insert, state) {
290
- var tr = insert(createMultiColumnLayoutSection(state, 3));
291
- if (fg('platform_editor_column_count_analytics')) {
292
- withInsertLayoutAnalytics(tr, 3);
293
- } else {
294
- withInsertLayoutAnalytics(tr);
295
- }
296
- selectIntoLayoutSection(tr);
297
- return tr;
298
- }
299
- }, {
300
- id: 'fourcolumnslayout',
301
- title: formatMessage(layoutMessages.fourColumns),
302
- description: formatMessage(messages.columnsDescriptionAdvancedLayout, {
303
- numberOfColumns: 'four'
304
- }),
305
- keywords: ['layout', 'column', 'section', 'col', 'four column'],
306
- priority: 1100,
232
+ id: 'threecolumnslayout',
233
+ keyword: 'three column',
234
+ title: formatMessage(layoutMessages.threeColumnsAdvancedLayout)
235
+ }), createAdvancedColumnLayoutOption({
236
+ columnCount: 4,
237
+ descriptionColumnCount: 'four',
307
238
  icon: function icon() {
308
239
  return /*#__PURE__*/React.createElement(IconFourColumnLayout, null);
309
240
  },
310
- action: function action(insert, state) {
311
- var tr = insert(createMultiColumnLayoutSection(state, 4));
312
- if (fg('platform_editor_column_count_analytics')) {
313
- withInsertLayoutAnalytics(tr, 4);
314
- } else {
315
- withInsertLayoutAnalytics(tr);
316
- }
317
- selectIntoLayoutSection(tr);
318
- return tr;
319
- }
320
- }, {
321
- id: 'fivecolumnslayout',
322
- title: formatMessage(layoutMessages.fiveColumns),
323
- description: formatMessage(messages.columnsDescriptionAdvancedLayout, {
324
- numberOfColumns: 'five'
325
- }),
326
- keywords: ['layout', 'column', 'section', 'col', 'five column'],
327
- priority: 1100,
241
+ id: 'fourcolumnslayout',
242
+ keyword: 'four column',
243
+ title: formatMessage(layoutMessages.fourColumns)
244
+ }), createAdvancedColumnLayoutOption({
245
+ columnCount: 5,
246
+ descriptionColumnCount: 'five',
328
247
  icon: function icon() {
329
248
  return /*#__PURE__*/React.createElement(IconFiveColumnLayout, null);
330
249
  },
331
- action: function action(insert, state) {
332
- var tr = insert(createMultiColumnLayoutSection(state, 5));
333
- if (fg('platform_editor_column_count_analytics')) {
334
- withInsertLayoutAnalytics(tr, 5);
335
- } else {
336
- withInsertLayoutAnalytics(tr);
337
- }
338
- selectIntoLayoutSection(tr);
339
- return tr;
340
- }
341
- }]);
250
+ id: 'fivecolumnslayout',
251
+ keyword: 'five column',
252
+ title: formatMessage(layoutMessages.fiveColumns)
253
+ })]);
342
254
  } else {
343
255
  return [{
344
256
  id: 'layout',
@@ -377,8 +289,7 @@ export var layoutPlugin = function layoutPlugin(_ref) {
377
289
  editorView: editorView,
378
290
  mountTo: popupsMountPoint,
379
291
  boundariesElement: popupsBoundariesElement,
380
- scrollableElement: popupsScrollableElement,
381
- useRegistryAnchor: blockControlMigrationEnabled
292
+ scrollableElement: popupsScrollableElement
382
293
  }) : null);
383
294
  },
384
295
  getSharedState: function getSharedState(editorState) {