@atlaskit/editor-plugin-block-controls 9.1.0 → 9.1.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.
Files changed (29) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/cjs/blockControlsPlugin.js +1 -1
  3. package/dist/cjs/pm-plugins/decorations-drag-handle.js +1 -2
  4. package/dist/cjs/pm-plugins/decorations-quick-insert-button.js +1 -2
  5. package/dist/cjs/pm-plugins/handle-mouse-over.js +3 -3
  6. package/dist/cjs/pm-plugins/interaction-tracking/handle-mouse-move.js +2 -2
  7. package/dist/cjs/pm-plugins/interaction-tracking/pm-plugin.js +1 -1
  8. package/dist/cjs/pm-plugins/main.js +3 -4
  9. package/dist/cjs/ui/drag-handle.js +7 -2
  10. package/dist/cjs/ui/visibility-container.js +1 -1
  11. package/dist/es2019/blockControlsPlugin.js +1 -1
  12. package/dist/es2019/pm-plugins/decorations-drag-handle.js +1 -2
  13. package/dist/es2019/pm-plugins/decorations-quick-insert-button.js +1 -2
  14. package/dist/es2019/pm-plugins/handle-mouse-over.js +3 -3
  15. package/dist/es2019/pm-plugins/interaction-tracking/handle-mouse-move.js +2 -2
  16. package/dist/es2019/pm-plugins/interaction-tracking/pm-plugin.js +1 -1
  17. package/dist/es2019/pm-plugins/main.js +3 -4
  18. package/dist/es2019/ui/drag-handle.js +7 -2
  19. package/dist/es2019/ui/visibility-container.js +1 -1
  20. package/dist/esm/blockControlsPlugin.js +1 -1
  21. package/dist/esm/pm-plugins/decorations-drag-handle.js +1 -2
  22. package/dist/esm/pm-plugins/decorations-quick-insert-button.js +1 -2
  23. package/dist/esm/pm-plugins/handle-mouse-over.js +3 -3
  24. package/dist/esm/pm-plugins/interaction-tracking/handle-mouse-move.js +2 -2
  25. package/dist/esm/pm-plugins/interaction-tracking/pm-plugin.js +1 -1
  26. package/dist/esm/pm-plugins/main.js +3 -4
  27. package/dist/esm/ui/drag-handle.js +7 -2
  28. package/dist/esm/ui/visibility-container.js +1 -1
  29. package/package.json +7 -4
package/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # @atlaskit/editor-plugin-block-controls
2
2
 
3
+ ## 9.1.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [`ef40f467da8e6`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/ef40f467da8e6) -
8
+ Fix drag handle not appearing in last layout column and remix button not showing correctly when
9
+ confluence_remix_button_right_side_block_fg is enabled. Layout column drag handles now always show
10
+ regardless of hover side, remix button correctly shows on right-side hover only, and layoutSection
11
+ is always remixable regardless of content.
12
+ - Updated dependencies
13
+
3
14
  ## 9.1.0
4
15
 
5
16
  ### Minor Changes
@@ -356,7 +356,7 @@ var blockControlsPlugin = exports.blockControlsPlugin = function blockControlsPl
356
356
  if ((0, _experiments.editorExperiment)('platform_editor_controls', 'variant1')) {
357
357
  var _interactionTrackingP2, _interactionTrackingP3, _interactionTrackingP4;
358
358
  sharedState.isMouseOut = (_interactionTrackingP2 = (_interactionTrackingP3 = _pmPlugin.interactionTrackingPluginKey.getState(editorState)) === null || _interactionTrackingP3 === void 0 ? void 0 : _interactionTrackingP3.isMouseOut) !== null && _interactionTrackingP2 !== void 0 ? _interactionTrackingP2 : false;
359
- // rightSideControlsEnabled is the single source of truth (confluence_remix_icon_right_side from preset)
359
+ // rightSideControlsEnabled is the single source of truth (confluence_remix_button_right_side_block_fg from preset)
360
360
  sharedState.rightSideControlsEnabled = rightSideControlsEnabled;
361
361
  sharedState.hoverSide = rightSideControlsEnabled ? (_interactionTrackingP4 = _pmPlugin.interactionTrackingPluginKey.getState(editorState)) === null || _interactionTrackingP4 === void 0 ? void 0 : _interactionTrackingP4.hoverSide : undefined;
362
362
  }
@@ -13,7 +13,6 @@ var _uuid = _interopRequireDefault(require("uuid"));
13
13
  var _view = require("@atlaskit/editor-prosemirror/view");
14
14
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
15
15
  var _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals");
16
- var _expValEqualsNoExposure = require("@atlaskit/tmp-editor-statsig/exp-val-equals-no-exposure");
17
16
  var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
18
17
  var _dragHandle = require("../ui/drag-handle");
19
18
  var _decorationsCommon = require("./decorations-common");
@@ -86,7 +85,7 @@ var dragHandleDecoration = exports.dragHandleDecoration = function dragHandleDec
86
85
  var element = document.createElement('span');
87
86
  // inline decoration causes focus issues when refocusing Editor into first line
88
87
  element.style.display = 'block';
89
- if ((0, _expValEqualsNoExposure.expValEqualsNoExposure)('confluence_remix_icon_right_side', 'isEnabled', true)) {
88
+ if ((0, _platformFeatureFlags.fg)('confluence_remix_button_right_side_block_fg')) {
90
89
  element.setAttribute('data-blocks-decorator-widget', 'true');
91
90
  }
92
91
  element.setAttribute('data-testid', 'block-ctrl-decorator-widget');
@@ -10,7 +10,6 @@ var _uuid = _interopRequireDefault(require("uuid"));
10
10
  var _view = require("@atlaskit/editor-prosemirror/view");
11
11
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
12
12
  var _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals");
13
- var _expValEqualsNoExposure = require("@atlaskit/tmp-editor-statsig/exp-val-equals-no-exposure");
14
13
  var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
15
14
  var _quickInsertButton = require("../ui/quick-insert-button");
16
15
  var _marks = require("./utils/marks");
@@ -76,7 +75,7 @@ var quickInsertButtonDecoration = exports.quickInsertButtonDecoration = function
76
75
  element.style.clear = 'unset';
77
76
  element.contentEditable = 'false';
78
77
  element.setAttribute('data-blocks-quick-insert-container', 'true');
79
- if ((0, _expValEqualsNoExposure.expValEqualsNoExposure)('confluence_remix_icon_right_side', 'isEnabled', true)) {
78
+ if ((0, _platformFeatureFlags.fg)('confluence_remix_button_right_side_block_fg')) {
80
79
  element.setAttribute('data-blocks-quick-insert-button', 'true');
81
80
  }
82
81
  element.setAttribute('data-testid', 'block-ctrl-quick-insert-button');
@@ -9,8 +9,8 @@ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers
9
9
  var _memoizeOne = _interopRequireDefault(require("memoize-one"));
10
10
  var _selection = require("@atlaskit/editor-common/selection");
11
11
  var _toolbarFlagCheck = require("@atlaskit/editor-common/toolbar-flag-check");
12
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
12
13
  var _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals");
13
- var _expValEqualsNoExposure = require("@atlaskit/tmp-editor-statsig/exp-val-equals-no-exposure");
14
14
  var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
15
15
  var _domAttrName = require("../ui/utils/dom-attr-name");
16
16
  var _decorationsAnchor = require("./decorations-anchor");
@@ -63,7 +63,7 @@ var handleMouseOver = exports.handleMouseOver = function handleMouseOver(view, e
63
63
  // We shouldn't be firing mouse over transactions when the editor is disabled,
64
64
  // except in view mode when right-side controls are enabled (show controls on block hover)
65
65
  var rightSideControlsEnabled = (_api$blockControls$sh = api === null || api === void 0 || (_api$blockControls2 = api.blockControls) === null || _api$blockControls2 === void 0 || (_api$blockControls2 = _api$blockControls2.sharedState.currentState()) === null || _api$blockControls2 === void 0 ? void 0 : _api$blockControls2.rightSideControlsEnabled) !== null && _api$blockControls$sh !== void 0 ? _api$blockControls$sh : false;
66
- if (editorDisabled && (!isViewMode || !(rightSideControlsEnabled && (0, _expValEqualsNoExposure.expValEqualsNoExposure)('confluence_remix_icon_right_side', 'isEnabled', true)))) {
66
+ if (editorDisabled && (!isViewMode || !(rightSideControlsEnabled && (0, _platformFeatureFlags.fg)('confluence_remix_button_right_side_block_fg')))) {
67
67
  return false;
68
68
  }
69
69
 
@@ -91,7 +91,7 @@ var handleMouseOver = exports.handleMouseOver = function handleMouseOver(view, e
91
91
 
92
92
  // When hovering over the right-edge button (rendered in a portal outside the block), resolve the
93
93
  // block from the container's anchor so activeNode stays set and the button remains visible.
94
- if (!rootElement && rightSideControlsEnabled && (0, _expValEqualsNoExposure.expValEqualsNoExposure)('confluence_remix_icon_right_side', 'isEnabled', true)) {
94
+ if (!rootElement && rightSideControlsEnabled && (0, _platformFeatureFlags.fg)('confluence_remix_button_right_side_block_fg')) {
95
95
  var rightEdgeContainer = target === null || target === void 0 ? void 0 : target.closest('[data-blocks-right-edge-button-container]');
96
96
  if (rightEdgeContainer) {
97
97
  var anchor = rightEdgeContainer.getAttribute('data-blocks-right-edge-button-anchor');
@@ -27,7 +27,7 @@ var RIGHT_EDGE_SELECTOR = '[data-blocks-right-edge-button-container]';
27
27
 
28
28
  /**
29
29
  * Process hover position and set left/right side. Only invoked when right-side controls are
30
- * enabled (confluence_remix_icon_right_side); handleMouseMove returns early otherwise.
30
+ * enabled (confluence_remix_button_right_side_block_fg); handleMouseMove returns early otherwise.
31
31
  */
32
32
  var processHoverSide = function processHoverSide(view) {
33
33
  var event = pendingByView.get(view);
@@ -88,7 +88,7 @@ var handleMouseMove = exports.handleMouseMove = function handleMouseMove(view, e
88
88
  (0, _commands.stopEditing)(view);
89
89
  }
90
90
 
91
- // Only track hover side when right-side controls are enabled (single source: confluence_remix_icon_right_side via config)
91
+ // Only track hover side when right-side controls are enabled (single source: confluence_remix_button_right_side_block_fg via config)
92
92
  if (!rightSideControlsEnabled) {
93
93
  return false;
94
94
  }
@@ -72,7 +72,7 @@ var createInteractionTrackingPlugin = exports.createInteractionTrackingPlugin =
72
72
  },
73
73
  view: (0, _experiments.editorExperiment)('platform_editor_controls', 'variant1') ? function (view) {
74
74
  var editorContentArea = view.dom.closest('.ak-editor-content-area');
75
- // rightSideControlsEnabled is the single source of truth (confluence_remix_icon_right_side from preset)
75
+ // rightSideControlsEnabled is the single source of truth (confluence_remix_button_right_side_block_fg from preset)
76
76
 
77
77
  var unbindMouseEnter;
78
78
  var unbindMouseLeave;
@@ -23,7 +23,6 @@ var _element = require("@atlaskit/pragmatic-drag-and-drop-auto-scroll/element");
23
23
  var _combine = require("@atlaskit/pragmatic-drag-and-drop/combine");
24
24
  var _adapter = require("@atlaskit/pragmatic-drag-and-drop/element/adapter");
25
25
  var _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals");
26
- var _expValEqualsNoExposure = require("@atlaskit/tmp-editor-statsig/exp-val-equals-no-exposure");
27
26
  var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
28
27
  var _domAttrName = require("../ui/utils/dom-attr-name");
29
28
  var _decorationsAnchor = require("./decorations-anchor");
@@ -469,7 +468,7 @@ var _apply = exports.apply = function apply(api, formatMessage, tr, currentState
469
468
  _iterator.f();
470
469
  }
471
470
  }
472
- if (rightSideControlsEnabled && isViewMode && (0, _expValEqualsNoExposure.expValEqualsNoExposure)('confluence_remix_icon_right_side', 'isEnabled', true)) {
471
+ if (rightSideControlsEnabled && isViewMode && (0, _platformFeatureFlags.fg)('confluence_remix_button_right_side_block_fg')) {
473
472
  var _iterator2 = _createForOfIteratorHelper(nodeDecorationRegistry),
474
473
  _step2;
475
474
  try {
@@ -651,7 +650,7 @@ var _apply = exports.apply = function apply(api, formatMessage, tr, currentState
651
650
  } finally {
652
651
  _iterator5.f();
653
652
  }
654
- } else if (isViewMode && rightSideControlsEnabled && (0, _expValEqualsNoExposure.expValEqualsNoExposure)('confluence_remix_icon_right_side', 'isEnabled', true)) {
653
+ } else if (isViewMode && rightSideControlsEnabled && (0, _platformFeatureFlags.fg)('confluence_remix_button_right_side_block_fg')) {
655
654
  // Remove view-mode right-side decorations when no active node
656
655
  var _iterator6 = _createForOfIteratorHelper(nodeDecorationRegistry),
657
656
  _step6;
@@ -813,7 +812,7 @@ var createPlugin = exports.createPlugin = function createPlugin(api, getIntl, no
813
812
  var isDisabled = api === null || api === void 0 || (_api$editorDisabled = api.editorDisabled) === null || _api$editorDisabled === void 0 || (_api$editorDisabled = _api$editorDisabled.sharedState.currentState()) === null || _api$editorDisabled === void 0 ? void 0 : _api$editorDisabled.editorDisabled;
814
813
  if (isDisabled) {
815
814
  var _api$editorViewMode2;
816
- var remixRightSideEnabled = rightSideControlsEnabled && (0, _expValEqualsNoExposure.expValEqualsNoExposure)('confluence_remix_icon_right_side', 'isEnabled', true);
815
+ var remixRightSideEnabled = rightSideControlsEnabled && (0, _platformFeatureFlags.fg)('confluence_remix_button_right_side_block_fg');
817
816
  // Hide decorations when disabled, except in view mode when right-side controls are enabled
818
817
  if (!remixRightSideEnabled || (api === null || api === void 0 || (_api$editorViewMode2 = api.editorViewMode) === null || _api$editorViewMode2 === void 0 || (_api$editorViewMode2 = _api$editorViewMode2.sharedState.currentState()) === null || _api$editorViewMode2 === void 0 ? void 0 : _api$editorViewMode2.mode) !== 'view') {
819
818
  return;
@@ -1094,7 +1094,7 @@ var DragHandle = exports.DragHandle = function DragHandle(_ref) {
1094
1094
  onDrop: handleOnDrop,
1095
1095
  disabled: dragHandleDisabled,
1096
1096
  "data-editor-block-ctrl-drag-handle": true,
1097
- "data-blocks-drag-handle": (0, _expValEqualsNoExposure.expValEqualsNoExposure)('confluence_remix_icon_right_side', 'isEnabled', true) || undefined,
1097
+ "data-blocks-drag-handle": (0, _platformFeatureFlags.fg)('confluence_remix_button_right_side_block_fg') || undefined,
1098
1098
  "data-testid": "block-ctrl-drag-handle",
1099
1099
  "aria-label": dragHandleAriaLabel,
1100
1100
  onBlur: (0, _experiments.editorExperiment)('platform_editor_block_menu', true) ? function () {
@@ -1195,9 +1195,14 @@ var DragHandleWithVisibility = exports.DragHandleWithVisibility = function DragH
1195
1195
  rightSideControlsEnabled: (_states$blockControls2 = (_states$blockControls3 = states.blockControlsState) === null || _states$blockControls3 === void 0 ? void 0 : _states$blockControls3.rightSideControlsEnabled) !== null && _states$blockControls2 !== void 0 ? _states$blockControls2 : false
1196
1196
  };
1197
1197
  }).rightSideControlsEnabled;
1198
+ // Layout column drag handles sit at the top-centre of each column, not on a left/right edge.
1199
+ // Don't restrict by hoverSide for layout columns — the drag handle should always be visible
1200
+ // when hovering anywhere over the column, regardless of which side of the layoutSection the
1201
+ // column is on. (The right-side remix button is a separate node decoration and is unaffected.)
1202
+ var isLayoutColumn = nodeType === 'layoutColumn';
1198
1203
  return (0, _react2.jsx)(_visibilityContainer.VisibilityContainer, {
1199
1204
  api: api,
1200
- controlSide: rightSideControlsEnabled ? 'left' : undefined
1205
+ controlSide: rightSideControlsEnabled && !isLayoutColumn ? 'left' : undefined
1201
1206
  }, (0, _react2.jsx)(DragHandle, {
1202
1207
  view: view,
1203
1208
  api: api,
@@ -74,7 +74,7 @@ var VisibilityContainer = exports.VisibilityContainer = function VisibilityConta
74
74
  userIntent = _useSharedPluginState.userIntent,
75
75
  rightSideControlsEnabled = _useSharedPluginState.rightSideControlsEnabled;
76
76
  var isViewMode = editorViewMode === 'view';
77
- // rightSideControlsEnabled is the single source of truth (confluence_remix_icon_right_side from preset)
77
+ // rightSideControlsEnabled is the single source of truth (confluence_remix_button_right_side_block_fg from preset)
78
78
  var shouldRestrictBySide = rightSideControlsEnabled && controlSide !== undefined && !isViewMode;
79
79
  // Only restrict by side when hoverSide is known (after mousemove). When undefined, show both
80
80
  // controls so drag handle is visible on load and for keyboard-only users.
@@ -339,7 +339,7 @@ export const blockControlsPlugin = ({
339
339
  if (editorExperiment('platform_editor_controls', 'variant1')) {
340
340
  var _interactionTrackingP2, _interactionTrackingP3, _interactionTrackingP4;
341
341
  sharedState.isMouseOut = (_interactionTrackingP2 = (_interactionTrackingP3 = interactionTrackingPluginKey.getState(editorState)) === null || _interactionTrackingP3 === void 0 ? void 0 : _interactionTrackingP3.isMouseOut) !== null && _interactionTrackingP2 !== void 0 ? _interactionTrackingP2 : false;
342
- // rightSideControlsEnabled is the single source of truth (confluence_remix_icon_right_side from preset)
342
+ // rightSideControlsEnabled is the single source of truth (confluence_remix_button_right_side_block_fg from preset)
343
343
  sharedState.rightSideControlsEnabled = rightSideControlsEnabled;
344
344
  sharedState.hoverSide = rightSideControlsEnabled ? (_interactionTrackingP4 = interactionTrackingPluginKey.getState(editorState)) === null || _interactionTrackingP4 === void 0 ? void 0 : _interactionTrackingP4.hoverSide : undefined;
345
345
  }
@@ -6,7 +6,6 @@ import uuid from 'uuid';
6
6
  import { Decoration } from '@atlaskit/editor-prosemirror/view';
7
7
  import { fg } from '@atlaskit/platform-feature-flags';
8
8
  import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
9
- import { expValEqualsNoExposure } from '@atlaskit/tmp-editor-statsig/exp-val-equals-no-exposure';
10
9
  import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments';
11
10
  import { DragHandle, DragHandleWithVisibility } from '../ui/drag-handle';
12
11
  import { TYPE_HANDLE_DEC, TYPE_NODE_DEC, unmountDecorations } from './decorations-common';
@@ -77,7 +76,7 @@ export const dragHandleDecoration = ({
77
76
  const element = document.createElement('span');
78
77
  // inline decoration causes focus issues when refocusing Editor into first line
79
78
  element.style.display = 'block';
80
- if (expValEqualsNoExposure('confluence_remix_icon_right_side', 'isEnabled', true)) {
79
+ if (fg('confluence_remix_button_right_side_block_fg')) {
81
80
  element.setAttribute('data-blocks-decorator-widget', 'true');
82
81
  }
83
82
  element.setAttribute('data-testid', 'block-ctrl-decorator-widget');
@@ -4,7 +4,6 @@ import uuid from 'uuid';
4
4
  import { Decoration } from '@atlaskit/editor-prosemirror/view';
5
5
  import { fg } from '@atlaskit/platform-feature-flags';
6
6
  import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
7
- import { expValEqualsNoExposure } from '@atlaskit/tmp-editor-statsig/exp-val-equals-no-exposure';
8
7
  import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments';
9
8
  import { QuickInsertWithVisibility } from '../ui/quick-insert-button';
10
9
  import { getActiveBlockMarks } from './utils/marks';
@@ -67,7 +66,7 @@ export const quickInsertButtonDecoration = ({
67
66
  element.style.clear = 'unset';
68
67
  element.contentEditable = 'false';
69
68
  element.setAttribute('data-blocks-quick-insert-container', 'true');
70
- if (expValEqualsNoExposure('confluence_remix_icon_right_side', 'isEnabled', true)) {
69
+ if (fg('confluence_remix_button_right_side_block_fg')) {
71
70
  element.setAttribute('data-blocks-quick-insert-button', 'true');
72
71
  }
73
72
  element.setAttribute('data-testid', 'block-ctrl-quick-insert-button');
@@ -1,8 +1,8 @@
1
1
  import memoizeOne from 'memoize-one';
2
2
  import { isMultiBlockSelection } from '@atlaskit/editor-common/selection';
3
3
  import { areToolbarFlagsEnabled } from '@atlaskit/editor-common/toolbar-flag-check';
4
+ import { fg } from '@atlaskit/platform-feature-flags';
4
5
  import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
5
- import { expValEqualsNoExposure } from '@atlaskit/tmp-editor-statsig/exp-val-equals-no-exposure';
6
6
  import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments';
7
7
  import { getAnchorAttrName, getTypeNameAttrName, getTypeNameFromDom, NODE_ANCHOR_ATTR_NAME } from '../ui/utils/dom-attr-name';
8
8
  import { IGNORE_NODE_DESCENDANTS_ADVANCED_LAYOUT, IGNORE_NODES_NEXT } from './decorations-anchor';
@@ -55,7 +55,7 @@ export const handleMouseOver = (view, event, api) => {
55
55
  // We shouldn't be firing mouse over transactions when the editor is disabled,
56
56
  // except in view mode when right-side controls are enabled (show controls on block hover)
57
57
  const rightSideControlsEnabled = (_api$blockControls$sh = api === null || api === void 0 ? void 0 : (_api$blockControls2 = api.blockControls) === null || _api$blockControls2 === void 0 ? void 0 : (_api$blockControls2$s = _api$blockControls2.sharedState.currentState()) === null || _api$blockControls2$s === void 0 ? void 0 : _api$blockControls2$s.rightSideControlsEnabled) !== null && _api$blockControls$sh !== void 0 ? _api$blockControls$sh : false;
58
- if (editorDisabled && (!isViewMode || !(rightSideControlsEnabled && expValEqualsNoExposure('confluence_remix_icon_right_side', 'isEnabled', true)))) {
58
+ if (editorDisabled && (!isViewMode || !(rightSideControlsEnabled && fg('confluence_remix_button_right_side_block_fg')))) {
59
59
  return false;
60
60
  }
61
61
 
@@ -83,7 +83,7 @@ export const handleMouseOver = (view, event, api) => {
83
83
 
84
84
  // When hovering over the right-edge button (rendered in a portal outside the block), resolve the
85
85
  // block from the container's anchor so activeNode stays set and the button remains visible.
86
- if (!rootElement && rightSideControlsEnabled && expValEqualsNoExposure('confluence_remix_icon_right_side', 'isEnabled', true)) {
86
+ if (!rootElement && rightSideControlsEnabled && fg('confluence_remix_button_right_side_block_fg')) {
87
87
  const rightEdgeContainer = target === null || target === void 0 ? void 0 : target.closest('[data-blocks-right-edge-button-container]');
88
88
  if (rightEdgeContainer) {
89
89
  const anchor = rightEdgeContainer.getAttribute('data-blocks-right-edge-button-anchor');
@@ -22,7 +22,7 @@ const RIGHT_EDGE_SELECTOR = '[data-blocks-right-edge-button-container]';
22
22
 
23
23
  /**
24
24
  * Process hover position and set left/right side. Only invoked when right-side controls are
25
- * enabled (confluence_remix_icon_right_side); handleMouseMove returns early otherwise.
25
+ * enabled (confluence_remix_button_right_side_block_fg); handleMouseMove returns early otherwise.
26
26
  */
27
27
  const processHoverSide = view => {
28
28
  const event = pendingByView.get(view);
@@ -83,7 +83,7 @@ export const handleMouseMove = (view, event, rightSideControlsEnabled = false) =
83
83
  stopEditing(view);
84
84
  }
85
85
 
86
- // Only track hover side when right-side controls are enabled (single source: confluence_remix_icon_right_side via config)
86
+ // Only track hover side when right-side controls are enabled (single source: confluence_remix_button_right_side_block_fg via config)
87
87
  if (!rightSideControlsEnabled) {
88
88
  return false;
89
89
  }
@@ -61,7 +61,7 @@ export const createInteractionTrackingPlugin = (rightSideControlsEnabled = false
61
61
  },
62
62
  view: editorExperiment('platform_editor_controls', 'variant1') ? view => {
63
63
  const editorContentArea = view.dom.closest('.ak-editor-content-area');
64
- // rightSideControlsEnabled is the single source of truth (confluence_remix_icon_right_side from preset)
64
+ // rightSideControlsEnabled is the single source of truth (confluence_remix_button_right_side_block_fg from preset)
65
65
 
66
66
  let unbindMouseEnter;
67
67
  let unbindMouseLeave;
@@ -15,7 +15,6 @@ import { autoScrollForElements } from '@atlaskit/pragmatic-drag-and-drop-auto-sc
15
15
  import { combine } from '@atlaskit/pragmatic-drag-and-drop/combine';
16
16
  import { monitorForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';
17
17
  import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
18
- import { expValEqualsNoExposure } from '@atlaskit/tmp-editor-statsig/exp-val-equals-no-exposure';
19
18
  import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments';
20
19
  import { getAnchorAttrName } from '../ui/utils/dom-attr-name';
21
20
  import { findNodeDecs, nodeDecorations } from './decorations-anchor';
@@ -444,7 +443,7 @@ export const apply = (api, formatMessage, tr, currentState, newState, flags, nod
444
443
  decorations = decorations.remove(old);
445
444
  }
446
445
  }
447
- if (rightSideControlsEnabled && isViewMode && expValEqualsNoExposure('confluence_remix_icon_right_side', 'isEnabled', true)) {
446
+ if (rightSideControlsEnabled && isViewMode && fg('confluence_remix_button_right_side_block_fg')) {
448
447
  for (const factory of nodeDecorationRegistry) {
449
448
  if (factory.showInViewMode) {
450
449
  var _activeNode1, _activeNode10;
@@ -564,7 +563,7 @@ export const apply = (api, formatMessage, tr, currentState, newState, flags, nod
564
563
  decorations = decorations.add(newState.doc, [dec]);
565
564
  }
566
565
  }
567
- } else if (isViewMode && rightSideControlsEnabled && expValEqualsNoExposure('confluence_remix_icon_right_side', 'isEnabled', true)) {
566
+ } else if (isViewMode && rightSideControlsEnabled && fg('confluence_remix_button_right_side_block_fg')) {
568
567
  // Remove view-mode right-side decorations when no active node
569
568
  for (const factory of nodeDecorationRegistry) {
570
569
  if (factory.showInViewMode) {
@@ -710,7 +709,7 @@ export const createPlugin = (api, getIntl, nodeViewPortalProviderAPI, nodeDecora
710
709
  const isDisabled = api === null || api === void 0 ? void 0 : (_api$editorDisabled = api.editorDisabled) === null || _api$editorDisabled === void 0 ? void 0 : (_api$editorDisabled$s = _api$editorDisabled.sharedState.currentState()) === null || _api$editorDisabled$s === void 0 ? void 0 : _api$editorDisabled$s.editorDisabled;
711
710
  if (isDisabled) {
712
711
  var _api$editorViewMode2, _api$editorViewMode2$;
713
- const remixRightSideEnabled = rightSideControlsEnabled && expValEqualsNoExposure('confluence_remix_icon_right_side', 'isEnabled', true);
712
+ const remixRightSideEnabled = rightSideControlsEnabled && fg('confluence_remix_button_right_side_block_fg');
714
713
  // Hide decorations when disabled, except in view mode when right-side controls are enabled
715
714
  if (!remixRightSideEnabled || (api === null || api === void 0 ? void 0 : (_api$editorViewMode2 = api.editorViewMode) === null || _api$editorViewMode2 === void 0 ? void 0 : (_api$editorViewMode2$ = _api$editorViewMode2.sharedState.currentState()) === null || _api$editorViewMode2$ === void 0 ? void 0 : _api$editorViewMode2$.mode) !== 'view') {
716
715
  return;
@@ -1075,7 +1075,7 @@ export const DragHandle = ({
1075
1075
  onDrop: handleOnDrop,
1076
1076
  disabled: dragHandleDisabled,
1077
1077
  "data-editor-block-ctrl-drag-handle": true,
1078
- "data-blocks-drag-handle": expValEqualsNoExposure('confluence_remix_icon_right_side', 'isEnabled', true) || undefined,
1078
+ "data-blocks-drag-handle": fg('confluence_remix_button_right_side_block_fg') || undefined,
1079
1079
  "data-testid": "block-ctrl-drag-handle",
1080
1080
  "aria-label": dragHandleAriaLabel,
1081
1081
  onBlur: editorExperiment('platform_editor_block_menu', true) ? () => setIsFocused(false) : undefined
@@ -1167,9 +1167,14 @@ export const DragHandleWithVisibility = ({
1167
1167
  rightSideControlsEnabled: (_states$blockControls2 = (_states$blockControls3 = states.blockControlsState) === null || _states$blockControls3 === void 0 ? void 0 : _states$blockControls3.rightSideControlsEnabled) !== null && _states$blockControls2 !== void 0 ? _states$blockControls2 : false
1168
1168
  };
1169
1169
  }).rightSideControlsEnabled;
1170
+ // Layout column drag handles sit at the top-centre of each column, not on a left/right edge.
1171
+ // Don't restrict by hoverSide for layout columns — the drag handle should always be visible
1172
+ // when hovering anywhere over the column, regardless of which side of the layoutSection the
1173
+ // column is on. (The right-side remix button is a separate node decoration and is unaffected.)
1174
+ const isLayoutColumn = nodeType === 'layoutColumn';
1170
1175
  return jsx(VisibilityContainer, {
1171
1176
  api: api,
1172
- controlSide: rightSideControlsEnabled ? 'left' : undefined
1177
+ controlSide: rightSideControlsEnabled && !isLayoutColumn ? 'left' : undefined
1173
1178
  }, jsx(DragHandle, {
1174
1179
  view: view,
1175
1180
  api: api,
@@ -65,7 +65,7 @@ export const VisibilityContainer = ({
65
65
  };
66
66
  });
67
67
  const isViewMode = editorViewMode === 'view';
68
- // rightSideControlsEnabled is the single source of truth (confluence_remix_icon_right_side from preset)
68
+ // rightSideControlsEnabled is the single source of truth (confluence_remix_button_right_side_block_fg from preset)
69
69
  const shouldRestrictBySide = rightSideControlsEnabled && controlSide !== undefined && !isViewMode;
70
70
  // Only restrict by side when hoverSide is known (after mousemove). When undefined, show both
71
71
  // controls so drag handle is visible on load and for keyboard-only users.
@@ -349,7 +349,7 @@ export var blockControlsPlugin = function blockControlsPlugin(_ref) {
349
349
  if (editorExperiment('platform_editor_controls', 'variant1')) {
350
350
  var _interactionTrackingP2, _interactionTrackingP3, _interactionTrackingP4;
351
351
  sharedState.isMouseOut = (_interactionTrackingP2 = (_interactionTrackingP3 = interactionTrackingPluginKey.getState(editorState)) === null || _interactionTrackingP3 === void 0 ? void 0 : _interactionTrackingP3.isMouseOut) !== null && _interactionTrackingP2 !== void 0 ? _interactionTrackingP2 : false;
352
- // rightSideControlsEnabled is the single source of truth (confluence_remix_icon_right_side from preset)
352
+ // rightSideControlsEnabled is the single source of truth (confluence_remix_button_right_side_block_fg from preset)
353
353
  sharedState.rightSideControlsEnabled = rightSideControlsEnabled;
354
354
  sharedState.hoverSide = rightSideControlsEnabled ? (_interactionTrackingP4 = interactionTrackingPluginKey.getState(editorState)) === null || _interactionTrackingP4 === void 0 ? void 0 : _interactionTrackingP4.hoverSide : undefined;
355
355
  }
@@ -7,7 +7,6 @@ import uuid from 'uuid';
7
7
  import { Decoration } from '@atlaskit/editor-prosemirror/view';
8
8
  import { fg } from '@atlaskit/platform-feature-flags';
9
9
  import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
10
- import { expValEqualsNoExposure } from '@atlaskit/tmp-editor-statsig/exp-val-equals-no-exposure';
11
10
  import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments';
12
11
  import { DragHandle, DragHandleWithVisibility } from '../ui/drag-handle';
13
12
  import { TYPE_HANDLE_DEC, TYPE_NODE_DEC, unmountDecorations } from './decorations-common';
@@ -78,7 +77,7 @@ export var dragHandleDecoration = function dragHandleDecoration(_ref) {
78
77
  var element = document.createElement('span');
79
78
  // inline decoration causes focus issues when refocusing Editor into first line
80
79
  element.style.display = 'block';
81
- if (expValEqualsNoExposure('confluence_remix_icon_right_side', 'isEnabled', true)) {
80
+ if (fg('confluence_remix_button_right_side_block_fg')) {
82
81
  element.setAttribute('data-blocks-decorator-widget', 'true');
83
82
  }
84
83
  element.setAttribute('data-testid', 'block-ctrl-decorator-widget');
@@ -4,7 +4,6 @@ import uuid from 'uuid';
4
4
  import { Decoration } from '@atlaskit/editor-prosemirror/view';
5
5
  import { fg } from '@atlaskit/platform-feature-flags';
6
6
  import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
7
- import { expValEqualsNoExposure } from '@atlaskit/tmp-editor-statsig/exp-val-equals-no-exposure';
8
7
  import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments';
9
8
  import { QuickInsertWithVisibility } from '../ui/quick-insert-button';
10
9
  import { getActiveBlockMarks } from './utils/marks';
@@ -68,7 +67,7 @@ export var quickInsertButtonDecoration = function quickInsertButtonDecoration(_r
68
67
  element.style.clear = 'unset';
69
68
  element.contentEditable = 'false';
70
69
  element.setAttribute('data-blocks-quick-insert-container', 'true');
71
- if (expValEqualsNoExposure('confluence_remix_icon_right_side', 'isEnabled', true)) {
70
+ if (fg('confluence_remix_button_right_side_block_fg')) {
72
71
  element.setAttribute('data-blocks-quick-insert-button', 'true');
73
72
  }
74
73
  element.setAttribute('data-testid', 'block-ctrl-quick-insert-button');
@@ -2,8 +2,8 @@ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
2
  import memoizeOne from 'memoize-one';
3
3
  import { isMultiBlockSelection } from '@atlaskit/editor-common/selection';
4
4
  import { areToolbarFlagsEnabled } from '@atlaskit/editor-common/toolbar-flag-check';
5
+ import { fg } from '@atlaskit/platform-feature-flags';
5
6
  import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
6
- import { expValEqualsNoExposure } from '@atlaskit/tmp-editor-statsig/exp-val-equals-no-exposure';
7
7
  import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments';
8
8
  import { getAnchorAttrName, getTypeNameAttrName, getTypeNameFromDom, NODE_ANCHOR_ATTR_NAME } from '../ui/utils/dom-attr-name';
9
9
  import { IGNORE_NODE_DESCENDANTS_ADVANCED_LAYOUT, IGNORE_NODES_NEXT } from './decorations-anchor';
@@ -56,7 +56,7 @@ export var handleMouseOver = function handleMouseOver(view, event, api) {
56
56
  // We shouldn't be firing mouse over transactions when the editor is disabled,
57
57
  // except in view mode when right-side controls are enabled (show controls on block hover)
58
58
  var rightSideControlsEnabled = (_api$blockControls$sh = api === null || api === void 0 || (_api$blockControls2 = api.blockControls) === null || _api$blockControls2 === void 0 || (_api$blockControls2 = _api$blockControls2.sharedState.currentState()) === null || _api$blockControls2 === void 0 ? void 0 : _api$blockControls2.rightSideControlsEnabled) !== null && _api$blockControls$sh !== void 0 ? _api$blockControls$sh : false;
59
- if (editorDisabled && (!isViewMode || !(rightSideControlsEnabled && expValEqualsNoExposure('confluence_remix_icon_right_side', 'isEnabled', true)))) {
59
+ if (editorDisabled && (!isViewMode || !(rightSideControlsEnabled && fg('confluence_remix_button_right_side_block_fg')))) {
60
60
  return false;
61
61
  }
62
62
 
@@ -84,7 +84,7 @@ export var handleMouseOver = function handleMouseOver(view, event, api) {
84
84
 
85
85
  // When hovering over the right-edge button (rendered in a portal outside the block), resolve the
86
86
  // block from the container's anchor so activeNode stays set and the button remains visible.
87
- if (!rootElement && rightSideControlsEnabled && expValEqualsNoExposure('confluence_remix_icon_right_side', 'isEnabled', true)) {
87
+ if (!rootElement && rightSideControlsEnabled && fg('confluence_remix_button_right_side_block_fg')) {
88
88
  var rightEdgeContainer = target === null || target === void 0 ? void 0 : target.closest('[data-blocks-right-edge-button-container]');
89
89
  if (rightEdgeContainer) {
90
90
  var anchor = rightEdgeContainer.getAttribute('data-blocks-right-edge-button-anchor');
@@ -22,7 +22,7 @@ var RIGHT_EDGE_SELECTOR = '[data-blocks-right-edge-button-container]';
22
22
 
23
23
  /**
24
24
  * Process hover position and set left/right side. Only invoked when right-side controls are
25
- * enabled (confluence_remix_icon_right_side); handleMouseMove returns early otherwise.
25
+ * enabled (confluence_remix_button_right_side_block_fg); handleMouseMove returns early otherwise.
26
26
  */
27
27
  var processHoverSide = function processHoverSide(view) {
28
28
  var event = pendingByView.get(view);
@@ -83,7 +83,7 @@ export var handleMouseMove = function handleMouseMove(view, event) {
83
83
  stopEditing(view);
84
84
  }
85
85
 
86
- // Only track hover side when right-side controls are enabled (single source: confluence_remix_icon_right_side via config)
86
+ // Only track hover side when right-side controls are enabled (single source: confluence_remix_button_right_side_block_fg via config)
87
87
  if (!rightSideControlsEnabled) {
88
88
  return false;
89
89
  }
@@ -66,7 +66,7 @@ export var createInteractionTrackingPlugin = function createInteractionTrackingP
66
66
  },
67
67
  view: editorExperiment('platform_editor_controls', 'variant1') ? function (view) {
68
68
  var editorContentArea = view.dom.closest('.ak-editor-content-area');
69
- // rightSideControlsEnabled is the single source of truth (confluence_remix_icon_right_side from preset)
69
+ // rightSideControlsEnabled is the single source of truth (confluence_remix_button_right_side_block_fg from preset)
70
70
 
71
71
  var unbindMouseEnter;
72
72
  var unbindMouseLeave;
@@ -21,7 +21,6 @@ import { autoScrollForElements } from '@atlaskit/pragmatic-drag-and-drop-auto-sc
21
21
  import { combine } from '@atlaskit/pragmatic-drag-and-drop/combine';
22
22
  import { monitorForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';
23
23
  import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
24
- import { expValEqualsNoExposure } from '@atlaskit/tmp-editor-statsig/exp-val-equals-no-exposure';
25
24
  import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments';
26
25
  import { getAnchorAttrName } from '../ui/utils/dom-attr-name';
27
26
  import { findNodeDecs, nodeDecorations } from './decorations-anchor';
@@ -462,7 +461,7 @@ var _apply = function apply(api, formatMessage, tr, currentState, newState, flag
462
461
  _iterator.f();
463
462
  }
464
463
  }
465
- if (rightSideControlsEnabled && isViewMode && expValEqualsNoExposure('confluence_remix_icon_right_side', 'isEnabled', true)) {
464
+ if (rightSideControlsEnabled && isViewMode && fg('confluence_remix_button_right_side_block_fg')) {
466
465
  var _iterator2 = _createForOfIteratorHelper(nodeDecorationRegistry),
467
466
  _step2;
468
467
  try {
@@ -644,7 +643,7 @@ var _apply = function apply(api, formatMessage, tr, currentState, newState, flag
644
643
  } finally {
645
644
  _iterator5.f();
646
645
  }
647
- } else if (isViewMode && rightSideControlsEnabled && expValEqualsNoExposure('confluence_remix_icon_right_side', 'isEnabled', true)) {
646
+ } else if (isViewMode && rightSideControlsEnabled && fg('confluence_remix_button_right_side_block_fg')) {
648
647
  // Remove view-mode right-side decorations when no active node
649
648
  var _iterator6 = _createForOfIteratorHelper(nodeDecorationRegistry),
650
649
  _step6;
@@ -807,7 +806,7 @@ export var createPlugin = function createPlugin(api, getIntl, nodeViewPortalProv
807
806
  var isDisabled = api === null || api === void 0 || (_api$editorDisabled = api.editorDisabled) === null || _api$editorDisabled === void 0 || (_api$editorDisabled = _api$editorDisabled.sharedState.currentState()) === null || _api$editorDisabled === void 0 ? void 0 : _api$editorDisabled.editorDisabled;
808
807
  if (isDisabled) {
809
808
  var _api$editorViewMode2;
810
- var remixRightSideEnabled = rightSideControlsEnabled && expValEqualsNoExposure('confluence_remix_icon_right_side', 'isEnabled', true);
809
+ var remixRightSideEnabled = rightSideControlsEnabled && fg('confluence_remix_button_right_side_block_fg');
811
810
  // Hide decorations when disabled, except in view mode when right-side controls are enabled
812
811
  if (!remixRightSideEnabled || (api === null || api === void 0 || (_api$editorViewMode2 = api.editorViewMode) === null || _api$editorViewMode2 === void 0 || (_api$editorViewMode2 = _api$editorViewMode2.sharedState.currentState()) === null || _api$editorViewMode2 === void 0 ? void 0 : _api$editorViewMode2.mode) !== 'view') {
813
812
  return;
@@ -1090,7 +1090,7 @@ export var DragHandle = function DragHandle(_ref) {
1090
1090
  onDrop: handleOnDrop,
1091
1091
  disabled: dragHandleDisabled,
1092
1092
  "data-editor-block-ctrl-drag-handle": true,
1093
- "data-blocks-drag-handle": expValEqualsNoExposure('confluence_remix_icon_right_side', 'isEnabled', true) || undefined,
1093
+ "data-blocks-drag-handle": fg('confluence_remix_button_right_side_block_fg') || undefined,
1094
1094
  "data-testid": "block-ctrl-drag-handle",
1095
1095
  "aria-label": dragHandleAriaLabel,
1096
1096
  onBlur: editorExperiment('platform_editor_block_menu', true) ? function () {
@@ -1191,9 +1191,14 @@ export var DragHandleWithVisibility = function DragHandleWithVisibility(_ref0) {
1191
1191
  rightSideControlsEnabled: (_states$blockControls2 = (_states$blockControls3 = states.blockControlsState) === null || _states$blockControls3 === void 0 ? void 0 : _states$blockControls3.rightSideControlsEnabled) !== null && _states$blockControls2 !== void 0 ? _states$blockControls2 : false
1192
1192
  };
1193
1193
  }).rightSideControlsEnabled;
1194
+ // Layout column drag handles sit at the top-centre of each column, not on a left/right edge.
1195
+ // Don't restrict by hoverSide for layout columns — the drag handle should always be visible
1196
+ // when hovering anywhere over the column, regardless of which side of the layoutSection the
1197
+ // column is on. (The right-side remix button is a separate node decoration and is unaffected.)
1198
+ var isLayoutColumn = nodeType === 'layoutColumn';
1194
1199
  return jsx(VisibilityContainer, {
1195
1200
  api: api,
1196
- controlSide: rightSideControlsEnabled ? 'left' : undefined
1201
+ controlSide: rightSideControlsEnabled && !isLayoutColumn ? 'left' : undefined
1197
1202
  }, jsx(DragHandle, {
1198
1203
  view: view,
1199
1204
  api: api,
@@ -63,7 +63,7 @@ export var VisibilityContainer = function VisibilityContainer(_ref) {
63
63
  userIntent = _useSharedPluginState.userIntent,
64
64
  rightSideControlsEnabled = _useSharedPluginState.rightSideControlsEnabled;
65
65
  var isViewMode = editorViewMode === 'view';
66
- // rightSideControlsEnabled is the single source of truth (confluence_remix_icon_right_side from preset)
66
+ // rightSideControlsEnabled is the single source of truth (confluence_remix_button_right_side_block_fg from preset)
67
67
  var shouldRestrictBySide = rightSideControlsEnabled && controlSide !== undefined && !isViewMode;
68
68
  // Only restrict by side when hoverSide is known (after mousemove). When undefined, show both
69
69
  // controls so drag handle is visible on load and for keyboard-only users.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-plugin-block-controls",
3
- "version": "9.1.0",
3
+ "version": "9.1.1",
4
4
  "description": "Block controls plugin for @atlaskit/editor-core",
5
5
  "author": "Atlassian Pty Ltd",
6
6
  "license": "Apache-2.0",
@@ -48,7 +48,7 @@
48
48
  "@atlaskit/editor-shared-styles": "^3.10.0",
49
49
  "@atlaskit/editor-tables": "^2.9.0",
50
50
  "@atlaskit/icon": "^34.0.0",
51
- "@atlaskit/icon-lab": "^6.2.0",
51
+ "@atlaskit/icon-lab": "^6.3.0",
52
52
  "@atlaskit/link": "^3.3.0",
53
53
  "@atlaskit/platform-feature-flags": "^1.1.0",
54
54
  "@atlaskit/pragmatic-drag-and-drop": "^1.7.0",
@@ -56,7 +56,7 @@
56
56
  "@atlaskit/pragmatic-drag-and-drop-react-drop-indicator": "^3.2.0",
57
57
  "@atlaskit/primitives": "^18.1.0",
58
58
  "@atlaskit/theme": "^22.0.0",
59
- "@atlaskit/tmp-editor-statsig": "^54.0.0",
59
+ "@atlaskit/tmp-editor-statsig": "^54.3.0",
60
60
  "@atlaskit/tokens": "^11.4.0",
61
61
  "@atlaskit/tooltip": "^21.1.0",
62
62
  "@babel/runtime": "^7.0.0",
@@ -67,7 +67,7 @@
67
67
  "uuid": "^3.1.0"
68
68
  },
69
69
  "peerDependencies": {
70
- "@atlaskit/editor-common": "^112.16.0",
70
+ "@atlaskit/editor-common": "^112.18.0",
71
71
  "react": "^18.2.0",
72
72
  "react-dom": "^18.2.0",
73
73
  "react-intl-next": "npm:react-intl@^5.18.1"
@@ -149,6 +149,9 @@
149
149
  },
150
150
  "platform_editor_native_anchor_patch_2": {
151
151
  "type": "boolean"
152
+ },
153
+ "confluence_remix_button_right_side_block_fg": {
154
+ "type": "boolean"
152
155
  }
153
156
  }
154
157
  }