@atlaskit/editor-plugin-breakout 2.4.1 → 2.4.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.
Files changed (36) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/cjs/breakoutPlugin.js +39 -12
  3. package/dist/cjs/editor-commands/set-breakout-width.js +16 -1
  4. package/dist/cjs/pm-plugins/get-guidelines.js +5 -2
  5. package/dist/cjs/pm-plugins/pragmatic-resizer.js +60 -0
  6. package/dist/cjs/pm-plugins/resizer-callbacks.js +4 -4
  7. package/dist/cjs/pm-plugins/resizing-mark-view.js +3 -68
  8. package/dist/cjs/pm-plugins/utils/single-player-expand.js +27 -4
  9. package/dist/cjs/ui/LayoutButton.js +7 -3
  10. package/dist/es2019/breakoutPlugin.js +23 -4
  11. package/dist/es2019/editor-commands/set-breakout-width.js +16 -1
  12. package/dist/es2019/pm-plugins/get-guidelines.js +5 -2
  13. package/dist/es2019/pm-plugins/pragmatic-resizer.js +56 -0
  14. package/dist/es2019/pm-plugins/resizer-callbacks.js +5 -5
  15. package/dist/es2019/pm-plugins/resizing-mark-view.js +2 -69
  16. package/dist/es2019/pm-plugins/utils/single-player-expand.js +27 -3
  17. package/dist/es2019/ui/LayoutButton.js +7 -3
  18. package/dist/esm/breakoutPlugin.js +37 -12
  19. package/dist/esm/editor-commands/set-breakout-width.js +16 -1
  20. package/dist/esm/pm-plugins/get-guidelines.js +5 -2
  21. package/dist/esm/pm-plugins/pragmatic-resizer.js +54 -0
  22. package/dist/esm/pm-plugins/resizer-callbacks.js +5 -5
  23. package/dist/esm/pm-plugins/resizing-mark-view.js +2 -67
  24. package/dist/esm/pm-plugins/utils/single-player-expand.js +26 -3
  25. package/dist/esm/ui/LayoutButton.js +7 -3
  26. package/dist/types/pm-plugins/pragmatic-resizer.d.ts +10 -0
  27. package/dist/types/pm-plugins/resizer-callbacks.d.ts +6 -5
  28. package/dist/types/pm-plugins/resizing-mark-view.d.ts +0 -11
  29. package/dist/types/pm-plugins/utils/single-player-expand.d.ts +9 -0
  30. package/dist/types/ui/LayoutButton.d.ts +3 -0
  31. package/dist/types-ts4.5/pm-plugins/pragmatic-resizer.d.ts +10 -0
  32. package/dist/types-ts4.5/pm-plugins/resizer-callbacks.d.ts +6 -5
  33. package/dist/types-ts4.5/pm-plugins/resizing-mark-view.d.ts +0 -11
  34. package/dist/types-ts4.5/pm-plugins/utils/single-player-expand.d.ts +9 -0
  35. package/dist/types-ts4.5/ui/LayoutButton.d.ts +3 -0
  36. package/package.json +4 -4
package/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # @atlaskit/editor-plugin-breakout
2
2
 
3
+ ## 2.4.3
4
+
5
+ ### Patch Changes
6
+
7
+ - [#163965](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/163965)
8
+ [`c08b8e623a378`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/c08b8e623a378) -
9
+ [ED-28046] Reduce the number of times the layout button re-renders
10
+ - [#164762](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/164762)
11
+ [`e716071496267`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/e716071496267) -
12
+ [ux] Fix for expands and codeblocks so they keep their settings after resize.
13
+ - Updated dependencies
14
+
15
+ ## 2.4.2
16
+
17
+ ### Patch Changes
18
+
19
+ - Updated dependencies
20
+
3
21
  ## 2.4.1
4
22
 
5
23
  ### Patch Changes
@@ -1,18 +1,21 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports.breakoutPlugin = void 0;
9
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
8
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
11
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
12
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
- var _react = _interopRequireDefault(require("react"));
13
+ var _react = _interopRequireWildcard(require("react"));
12
14
  var _adfSchema = require("@atlaskit/adf-schema");
13
15
  var _hooks = require("@atlaskit/editor-common/hooks");
14
16
  var _safePlugin = require("@atlaskit/editor-common/safe-plugin");
15
17
  var _styles = require("@atlaskit/editor-common/styles");
18
+ var _usePluginStateEffect = require("@atlaskit/editor-common/use-plugin-state-effect");
16
19
  var _useSharedPluginStateSelector = require("@atlaskit/editor-common/use-shared-plugin-state-selector");
17
20
  var _editorSharedStyles = require("@atlaskit/editor-shared-styles");
18
21
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
@@ -20,7 +23,9 @@ var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
20
23
  var _pluginKey = require("./pm-plugins/plugin-key");
21
24
  var _resizingPlugin = require("./pm-plugins/resizing-plugin");
22
25
  var _findBreakoutNode = require("./pm-plugins/utils/find-breakout-node");
26
+ var _getBreakoutMode = require("./pm-plugins/utils/get-breakout-mode");
23
27
  var _LayoutButton = _interopRequireDefault(require("./ui/LayoutButton"));
28
+ 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); }
24
29
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
25
30
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
26
31
  var BreakoutView = /*#__PURE__*/(0, _createClass2.default)(function BreakoutView(
@@ -126,13 +131,12 @@ var useOldHook = function useOldHook(api) {
126
131
  };
127
132
  };
128
133
  var useNewHook = function useNewHook(api) {
129
- var breakoutNode = (0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(api, 'breakout.breakoutNode');
130
134
  var isDragging = (0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(api, 'blockControls.isDragging');
131
135
  var isPMDragging = (0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(api, 'blockControls.isPMDragging');
132
136
  var mode = (0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(api, 'editorViewMode.mode');
133
137
  var editorDisabled = (0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(api, 'editorDisabled.editorDisabled');
134
138
  return {
135
- breakoutNode: breakoutNode,
139
+ breakoutNode: undefined,
136
140
  isDragging: isDragging,
137
141
  isPMDragging: isPMDragging,
138
142
  mode: mode,
@@ -153,6 +157,27 @@ var LayoutButtonWrapper = function LayoutButtonWrapper(_ref2) {
153
157
  isPMDragging = _useSharedState.isPMDragging,
154
158
  mode = _useSharedState.mode,
155
159
  editorDisabled = _useSharedState.editorDisabled;
160
+ var _useState = (0, _react.useState)(false),
161
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
162
+ breakoutNodePresent = _useState2[0],
163
+ setBreakoutNodePresent = _useState2[1];
164
+ var _useState3 = (0, _react.useState)((0, _getBreakoutMode.getBreakoutMode)(editorView.state)),
165
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
166
+ breakoutMode = _useState4[0],
167
+ setBreakoutMode = _useState4[1];
168
+ (0, _usePluginStateEffect.usePluginStateEffect)(api, ['breakout'], function (_ref3) {
169
+ var breakoutState = _ref3.breakoutState;
170
+ if (breakoutState !== null && breakoutState !== void 0 && breakoutState.breakoutNode && !breakoutNodePresent) {
171
+ setBreakoutNodePresent(true);
172
+ }
173
+ if (!(breakoutState !== null && breakoutState !== void 0 && breakoutState.breakoutNode) && breakoutNodePresent) {
174
+ setBreakoutNodePresent(false);
175
+ }
176
+ var nextBreakoutMode = (0, _getBreakoutMode.getBreakoutMode)(editorView.state);
177
+ if (nextBreakoutMode !== breakoutMode) {
178
+ setBreakoutMode(nextBreakoutMode);
179
+ }
180
+ });
156
181
  var interactionState = (0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(api, 'interaction.interactionState');
157
182
  if (interactionState === 'hasNotHadInteraction' && (0, _platformFeatureFlags.fg)('platform_editor_hide_expand_selection_states')) {
158
183
  return null;
@@ -170,12 +195,14 @@ var LayoutButtonWrapper = function LayoutButtonWrapper(_ref2) {
170
195
  boundariesElement: boundariesElement,
171
196
  scrollableElement: scrollableElement,
172
197
  node: (_breakoutNode$node = breakoutNode === null || breakoutNode === void 0 ? void 0 : breakoutNode.node) !== null && _breakoutNode$node !== void 0 ? _breakoutNode$node : null,
173
- isLivePage: isEditMode
198
+ isLivePage: isEditMode,
199
+ isBreakoutNodePresent: breakoutNodePresent,
200
+ breakoutMode: breakoutMode
174
201
  }) : null;
175
202
  };
176
- var breakoutPlugin = exports.breakoutPlugin = function breakoutPlugin(_ref3) {
177
- var options = _ref3.config,
178
- api = _ref3.api;
203
+ var breakoutPlugin = exports.breakoutPlugin = function breakoutPlugin(_ref4) {
204
+ var options = _ref4.config,
205
+ api = _ref4.api;
179
206
  return {
180
207
  name: 'breakout',
181
208
  pmPlugins: function pmPlugins() {
@@ -214,11 +241,11 @@ var breakoutPlugin = exports.breakoutPlugin = function breakoutPlugin(_ref3) {
214
241
  }
215
242
  return pluginState;
216
243
  },
217
- contentComponent: function contentComponent(_ref4) {
218
- var editorView = _ref4.editorView,
219
- popupsMountPoint = _ref4.popupsMountPoint,
220
- popupsBoundariesElement = _ref4.popupsBoundariesElement,
221
- popupsScrollableElement = _ref4.popupsScrollableElement;
244
+ contentComponent: function contentComponent(_ref5) {
245
+ var editorView = _ref5.editorView,
246
+ popupsMountPoint = _ref5.popupsMountPoint,
247
+ popupsBoundariesElement = _ref5.popupsBoundariesElement,
248
+ popupsScrollableElement = _ref5.popupsScrollableElement;
222
249
  // This is a bit crappy, but should be resolved once we move to a static schema.
223
250
  if (options && !options.allowBreakoutButton) {
224
251
  return null;
@@ -4,7 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.setBreakoutWidth = setBreakoutWidth;
7
- // TODO: ED-28029 - add fixes for expands and codeblocks
7
+ var _codeBlock = require("@atlaskit/editor-common/code-block");
8
+ var _singlePlayerExpand = require("../pm-plugins/utils/single-player-expand");
8
9
  function setBreakoutWidth(width, mode, pos, isLivePage) {
9
10
  return function (state, dispatch) {
10
11
  var node = state.doc.nodeAt(pos);
@@ -15,6 +16,20 @@ function setBreakoutWidth(width, mode, pos, isLivePage) {
15
16
  width: width,
16
17
  mode: mode
17
18
  })]);
19
+ if (node.type === state.schema.nodes.expand) {
20
+ (0, _singlePlayerExpand.updateExpandedStateNew)({
21
+ tr: tr,
22
+ node: node,
23
+ pos: pos,
24
+ isLivePage: isLivePage
25
+ });
26
+ } else if (node.type === state.schema.nodes.codeBlock) {
27
+ var newNode = tr.doc.nodeAt(pos);
28
+ var oldNode = node;
29
+ if (newNode) {
30
+ (0, _codeBlock.transferCodeBlockWrappedValue)(oldNode, newNode);
31
+ }
32
+ }
18
33
  if (dispatch) {
19
34
  dispatch(tr);
20
35
  }
@@ -6,7 +6,10 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.getGuidelines = void 0;
7
7
  var _styles = require("@atlaskit/editor-common/styles");
8
8
  var _editorSharedStyles = require("@atlaskit/editor-shared-styles");
9
- var _resizerCallbacks = require("./resizer-callbacks");
9
+ var WIDTHS = {
10
+ MIN: _editorSharedStyles.akEditorDefaultLayoutWidth,
11
+ MAX: _editorSharedStyles.akEditorFullWidthLayoutWidth
12
+ };
10
13
  var GUIDELINE_KEYS = {
11
14
  lineLength: 'grid',
12
15
  wide: 'wide',
@@ -30,7 +33,7 @@ var getGuidelines = exports.getGuidelines = function getGuidelines(isResizing, n
30
33
  lineLength = _ref.lineLength;
31
34
  // TODO: ED-28109 - use breakoutWideScaleRatio to calculate wide guideline
32
35
  var wide = _editorSharedStyles.akEditorCalculatedWideLayoutWidth;
33
- var fullWidth = width ? Math.min(_resizerCallbacks.WIDTHS.MAX, width - 2 * (0, _editorSharedStyles.akEditorGutterPaddingDynamic)() - _editorSharedStyles.akEditorGutterPadding) : undefined;
36
+ var fullWidth = width ? Math.min(WIDTHS.MAX, width - 2 * (0, _editorSharedStyles.akEditorGutterPaddingDynamic)() - _editorSharedStyles.akEditorGutterPadding) : undefined;
34
37
  if (lineLength) {
35
38
  guidelines.push({
36
39
  key: "".concat(GUIDELINE_KEYS.lineLength, "_left"),
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createPragmaticResizer = void 0;
7
+ var _adapter = require("@atlaskit/pragmatic-drag-and-drop/element/adapter");
8
+ var _disableNativeDragPreview = require("@atlaskit/pragmatic-drag-and-drop/element/disable-native-drag-preview");
9
+ var _preventUnhandled = require("@atlaskit/pragmatic-drag-and-drop/prevent-unhandled");
10
+ var createPragmaticResizer = exports.createPragmaticResizer = function createPragmaticResizer(_ref) {
11
+ var onDragStart = _ref.onDragStart,
12
+ onDrag = _ref.onDrag,
13
+ _onDrop = _ref.onDrop;
14
+ var registerHandle = function registerHandle(handleElement) {
15
+ return (0, _adapter.draggable)({
16
+ element: handleElement,
17
+ onGenerateDragPreview: function onGenerateDragPreview(_ref2) {
18
+ var nativeSetDragImage = _ref2.nativeSetDragImage;
19
+ (0, _disableNativeDragPreview.disableNativeDragPreview)({
20
+ nativeSetDragImage: nativeSetDragImage
21
+ });
22
+ _preventUnhandled.preventUnhandled.start();
23
+ },
24
+ onDragStart: onDragStart,
25
+ onDrag: onDrag,
26
+ onDrop: function onDrop(args) {
27
+ _preventUnhandled.preventUnhandled.stop();
28
+ _onDrop(args);
29
+ }
30
+ });
31
+ };
32
+ var createHandle = function createHandle(side) {
33
+ var handle = document.createElement('div');
34
+ handle.contentEditable = 'false';
35
+ handle.classList.add('pm-breakout-resize-handle');
36
+ if (side === 'left') {
37
+ handle.classList.add('pm-breakout-resize-handle-left');
38
+ handle.setAttribute('data-testid', 'pragmatic-resizer-handle-left');
39
+ } else {
40
+ handle.classList.add('pm-breakout-resize-handle-right');
41
+ handle.setAttribute('data-testid', 'pragmatic-resizer-handle-right');
42
+ }
43
+ var handleInner = document.createElement('div');
44
+ handleInner.classList.add('pm-breakout-resize-handle-inner');
45
+ handle.appendChild(handleInner);
46
+ return handle;
47
+ };
48
+ var rightHandle = createHandle('right');
49
+ var leftHandle = createHandle('left');
50
+ var rightHandleCleanup = registerHandle(rightHandle);
51
+ var leftHandleCleanup = registerHandle(leftHandle);
52
+ return {
53
+ rightHandle: rightHandle,
54
+ leftHandle: leftHandle,
55
+ destroy: function destroy() {
56
+ rightHandleCleanup();
57
+ leftHandleCleanup();
58
+ }
59
+ };
60
+ };
@@ -3,16 +3,16 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.WIDTHS = void 0;
7
6
  exports.createResizerCallbacks = createResizerCallbacks;
7
+ exports.getProposedWidth = getProposedWidth;
8
8
  var _editorSharedStyles = require("@atlaskit/editor-shared-styles");
9
9
  var _setBreakoutWidth = require("../editor-commands/set-breakout-width");
10
10
  var _getGuidelines = require("./get-guidelines");
11
11
  var _resizingMarkView = require("./resizing-mark-view");
12
12
  var RESIZE_RATIO = 2;
13
- var WIDTHS = exports.WIDTHS = {
14
- MIN: 760,
15
- MAX: 1800
13
+ var WIDTHS = {
14
+ MIN: _editorSharedStyles.akEditorDefaultLayoutWidth,
15
+ MAX: _editorSharedStyles.akEditorFullWidthLayoutWidth
16
16
  };
17
17
  function getProposedWidth(_ref) {
18
18
  var _api$width$sharedStat;
@@ -8,15 +8,9 @@ exports.ResizingMarkView = exports.LOCAL_RESIZE_PROPERTY = void 0;
8
8
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
9
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
10
  var _styles = require("@atlaskit/editor-common/styles");
11
- var _adapter = require("@atlaskit/pragmatic-drag-and-drop/element/adapter");
12
- var _disableNativeDragPreview = require("@atlaskit/pragmatic-drag-and-drop/element/disable-native-drag-preview");
13
- var _preventUnhandled = require("@atlaskit/pragmatic-drag-and-drop/prevent-unhandled");
11
+ var _pragmaticResizer = require("./pragmatic-resizer");
14
12
  var _resizerCallbacks = require("./resizer-callbacks");
15
13
  var LOCAL_RESIZE_PROPERTY = exports.LOCAL_RESIZE_PROPERTY = '--local-resizing-width';
16
-
17
- /**
18
- *
19
- */
20
14
  var ResizingMarkView = exports.ResizingMarkView = /*#__PURE__*/function () {
21
15
  /**
22
16
  * Wrap node view in a resizing mark view
@@ -62,7 +56,7 @@ var ResizingMarkView = exports.ResizingMarkView = /*#__PURE__*/function () {
62
56
  mark: mark,
63
57
  api: api
64
58
  });
65
- var _createPragmaticResiz = createPragmaticResizer(callbacks),
59
+ var _createPragmaticResiz = (0, _pragmaticResizer.createPragmaticResizer)(callbacks),
66
60
  leftHandle = _createPragmaticResiz.leftHandle,
67
61
  rightHandle = _createPragmaticResiz.rightHandle,
68
62
  destroy = _createPragmaticResiz.destroy;
@@ -74,74 +68,15 @@ var ResizingMarkView = exports.ResizingMarkView = /*#__PURE__*/function () {
74
68
  this.mark = mark;
75
69
  this.destroyFn = destroy;
76
70
  }
77
-
78
- /**
79
- *
80
- * @example
81
- */
82
71
  return (0, _createClass2.default)(ResizingMarkView, [{
83
72
  key: "ignoreMutation",
84
73
  value: function ignoreMutation() {
85
74
  return true;
86
75
  }
87
-
88
- /**
89
- *
90
- * @example
91
- */
92
76
  }, {
93
77
  key: "destroy",
94
78
  value: function destroy() {
95
79
  this.destroyFn();
96
80
  }
97
81
  }]);
98
- }();
99
- var createPragmaticResizer = function createPragmaticResizer(_ref) {
100
- var onDragStart = _ref.onDragStart,
101
- onDrag = _ref.onDrag,
102
- _onDrop = _ref.onDrop;
103
- var registerHandle = function registerHandle(handleElement) {
104
- return (0, _adapter.draggable)({
105
- element: handleElement,
106
- onGenerateDragPreview: function onGenerateDragPreview(_ref2) {
107
- var nativeSetDragImage = _ref2.nativeSetDragImage;
108
- (0, _disableNativeDragPreview.disableNativeDragPreview)({
109
- nativeSetDragImage: nativeSetDragImage
110
- });
111
- _preventUnhandled.preventUnhandled.start();
112
- },
113
- onDragStart: onDragStart,
114
- onDrag: onDrag,
115
- onDrop: function onDrop(args) {
116
- _preventUnhandled.preventUnhandled.stop();
117
- _onDrop(args);
118
- }
119
- });
120
- };
121
- var createHandle = function createHandle(side) {
122
- var handle = document.createElement('div');
123
- handle.contentEditable = 'false';
124
- handle.classList.add('pm-breakout-resize-handle');
125
- if (side === 'left') {
126
- handle.classList.add('pm-breakout-resize-handle-left');
127
- } else {
128
- handle.classList.add('pm-breakout-resize-handle-right');
129
- }
130
- var handleInner = document.createElement('div');
131
- handleInner.classList.add('pm-breakout-resize-handle-inner');
132
- handle.appendChild(handleInner);
133
- return handle;
134
- };
135
- var rightHandle = createHandle('right');
136
- var leftHandle = createHandle('left');
137
- var rightHandleCleanup = registerHandle(rightHandle);
138
- var leftHandleCleanup = registerHandle(leftHandle);
139
- return {
140
- rightHandle: rightHandle,
141
- leftHandle: leftHandle,
142
- destroy: function destroy() {
143
- rightHandleCleanup();
144
- leftHandleCleanup();
145
- }
146
- };
147
- };
82
+ }();
@@ -3,15 +3,38 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.updateExpandedState = void 0;
6
+ exports.updateExpandedStateNew = exports.updateExpandedState = void 0;
7
7
  var _expand = require("@atlaskit/editor-common/expand");
8
8
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
9
- var updateExpandedState = exports.updateExpandedState = function updateExpandedState(tr, node, isLivePage) {
9
+ var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
10
+ var updateExpandedStateNew = exports.updateExpandedStateNew = function updateExpandedStateNew(_ref) {
11
+ var tr = _ref.tr,
12
+ node = _ref.node,
13
+ pos = _ref.pos,
14
+ isLivePage = _ref.isLivePage;
10
15
  if (isLivePage || (0, _platformFeatureFlags.fg)('platform-editor-single-player-expand')) {
11
- var wasExpandExpanded = _expand.expandedState.get(node.node);
12
- var newExpand = tr.doc.nodeAt(node.pos);
16
+ var wasExpandExpanded = _expand.expandedState.get(node);
17
+ var newExpand = tr.doc.nodeAt(pos);
13
18
  if (wasExpandExpanded !== undefined && newExpand) {
14
19
  _expand.expandedState.set(newExpand, wasExpandExpanded);
15
20
  }
16
21
  }
22
+ };
23
+ var updateExpandedState = exports.updateExpandedState = function updateExpandedState(tr, node, isLivePage) {
24
+ if ((0, _experiments.editorExperiment)('platform_editor_breakout_resizing', true)) {
25
+ updateExpandedStateNew({
26
+ tr: tr,
27
+ node: node.node,
28
+ pos: node.pos,
29
+ isLivePage: isLivePage
30
+ });
31
+ } else {
32
+ if (isLivePage || (0, _platformFeatureFlags.fg)('platform-editor-single-player-expand')) {
33
+ var wasExpandExpanded = _expand.expandedState.get(node.node);
34
+ var newExpand = tr.doc.nodeAt(node.pos);
35
+ if (wasExpandExpanded !== undefined && newExpand) {
36
+ _expand.expandedState.set(newExpand, wasExpandExpanded);
37
+ }
38
+ }
39
+ }
17
40
  };
@@ -20,6 +20,7 @@ var _collapse = _interopRequireDefault(require("@atlaskit/icon/glyph/editor/coll
20
20
  var _expand = _interopRequireDefault(require("@atlaskit/icon/glyph/editor/expand"));
21
21
  var _colors = require("@atlaskit/theme/colors");
22
22
  var _constants = require("@atlaskit/theme/constants");
23
+ var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
23
24
  var _removeBreakout = require("../editor-commands/remove-breakout");
24
25
  var _setBreakoutMode = require("../editor-commands/set-breakout-mode");
25
26
  var _pluginKey = require("../pm-plugins/plugin-key");
@@ -66,7 +67,9 @@ var LayoutButton = function LayoutButton(_ref) {
66
67
  scrollableElement = _ref.scrollableElement,
67
68
  editorView = _ref.editorView,
68
69
  node = _ref.node,
69
- isLivePage = _ref.isLivePage;
70
+ isLivePage = _ref.isLivePage,
71
+ isBreakoutNodePresent = _ref.isBreakoutNodePresent,
72
+ breakoutModeProp = _ref.breakoutMode;
70
73
  var handleClick = (0, _react.useCallback)(function (breakoutMode) {
71
74
  var state = editorView.state,
72
75
  dispatch = editorView.dispatch;
@@ -77,10 +80,11 @@ var LayoutButton = function LayoutButton(_ref) {
77
80
  }
78
81
  }, [editorView, isLivePage]);
79
82
  var state = editorView.state;
80
- if (!node || !(0, _isBreakoutMarkAllowed.isBreakoutMarkAllowed)(state)) {
83
+ var exitCondition = (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', true) ? !isBreakoutNodePresent : !node;
84
+ if (exitCondition || !(0, _isBreakoutMarkAllowed.isBreakoutMarkAllowed)(state)) {
81
85
  return null;
82
86
  }
83
- var breakoutMode = (0, _getBreakoutMode.getBreakoutMode)(editorView.state);
87
+ var breakoutMode = (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', true) ? breakoutModeProp : (0, _getBreakoutMode.getBreakoutMode)(editorView.state);
84
88
  var titleMessage = (0, _utils.getTitle)(breakoutMode);
85
89
  var title = formatMessage(titleMessage);
86
90
  var nextBreakoutMode = (0, _utils.getNextBreakoutMode)(breakoutMode);
@@ -1,8 +1,9 @@
1
- import React from 'react';
1
+ import React, { useState } from 'react';
2
2
  import { breakout } from '@atlaskit/adf-schema';
3
3
  import { useSharedPluginState, sharedPluginStateHookMigratorFactory } from '@atlaskit/editor-common/hooks';
4
4
  import { SafePlugin } from '@atlaskit/editor-common/safe-plugin';
5
5
  import { BreakoutCssClassName } from '@atlaskit/editor-common/styles';
6
+ import { usePluginStateEffect } from '@atlaskit/editor-common/use-plugin-state-effect';
6
7
  import { useSharedPluginStateSelector } from '@atlaskit/editor-common/use-shared-plugin-state-selector';
7
8
  import { akEditorSwoopCubicBezier } from '@atlaskit/editor-shared-styles';
8
9
  import { fg } from '@atlaskit/platform-feature-flags';
@@ -10,6 +11,7 @@ import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments';
10
11
  import { pluginKey } from './pm-plugins/plugin-key';
11
12
  import { createResizingPlugin } from './pm-plugins/resizing-plugin';
12
13
  import { findSupportedNodeForBreakout } from './pm-plugins/utils/find-breakout-node';
14
+ import { getBreakoutMode } from './pm-plugins/utils/get-breakout-mode';
13
15
  import LayoutButton from './ui/LayoutButton';
14
16
  class BreakoutView {
15
17
  constructor(
@@ -118,13 +120,12 @@ const useOldHook = api => {
118
120
  };
119
121
  };
120
122
  const useNewHook = api => {
121
- const breakoutNode = useSharedPluginStateSelector(api, 'breakout.breakoutNode');
122
123
  const isDragging = useSharedPluginStateSelector(api, 'blockControls.isDragging');
123
124
  const isPMDragging = useSharedPluginStateSelector(api, 'blockControls.isPMDragging');
124
125
  const mode = useSharedPluginStateSelector(api, 'editorViewMode.mode');
125
126
  const editorDisabled = useSharedPluginStateSelector(api, 'editorDisabled.editorDisabled');
126
127
  return {
127
- breakoutNode,
128
+ breakoutNode: undefined,
128
129
  isDragging,
129
130
  isPMDragging,
130
131
  mode,
@@ -147,6 +148,22 @@ const LayoutButtonWrapper = ({
147
148
  mode,
148
149
  editorDisabled
149
150
  } = useSharedState(api);
151
+ const [breakoutNodePresent, setBreakoutNodePresent] = useState(false);
152
+ const [breakoutMode, setBreakoutMode] = useState(getBreakoutMode(editorView.state));
153
+ usePluginStateEffect(api, ['breakout'], ({
154
+ breakoutState
155
+ }) => {
156
+ if (breakoutState !== null && breakoutState !== void 0 && breakoutState.breakoutNode && !breakoutNodePresent) {
157
+ setBreakoutNodePresent(true);
158
+ }
159
+ if (!(breakoutState !== null && breakoutState !== void 0 && breakoutState.breakoutNode) && breakoutNodePresent) {
160
+ setBreakoutNodePresent(false);
161
+ }
162
+ const nextBreakoutMode = getBreakoutMode(editorView.state);
163
+ if (nextBreakoutMode !== breakoutMode) {
164
+ setBreakoutMode(nextBreakoutMode);
165
+ }
166
+ });
150
167
  const interactionState = useSharedPluginStateSelector(api, 'interaction.interactionState');
151
168
  if (interactionState === 'hasNotHadInteraction' && fg('platform_editor_hide_expand_selection_states')) {
152
169
  return null;
@@ -164,7 +181,9 @@ const LayoutButtonWrapper = ({
164
181
  boundariesElement: boundariesElement,
165
182
  scrollableElement: scrollableElement,
166
183
  node: (_breakoutNode$node = breakoutNode === null || breakoutNode === void 0 ? void 0 : breakoutNode.node) !== null && _breakoutNode$node !== void 0 ? _breakoutNode$node : null,
167
- isLivePage: isEditMode
184
+ isLivePage: isEditMode,
185
+ isBreakoutNodePresent: breakoutNodePresent,
186
+ breakoutMode: breakoutMode
168
187
  }) : null;
169
188
  };
170
189
  export const breakoutPlugin = ({
@@ -1,4 +1,5 @@
1
- // TODO: ED-28029 - add fixes for expands and codeblocks
1
+ import { transferCodeBlockWrappedValue } from '@atlaskit/editor-common/code-block';
2
+ import { updateExpandedStateNew } from '../pm-plugins/utils/single-player-expand';
2
3
  export function setBreakoutWidth(width, mode, pos, isLivePage) {
3
4
  return (state, dispatch) => {
4
5
  const node = state.doc.nodeAt(pos);
@@ -9,6 +10,20 @@ export function setBreakoutWidth(width, mode, pos, isLivePage) {
9
10
  width,
10
11
  mode
11
12
  })]);
13
+ if (node.type === state.schema.nodes.expand) {
14
+ updateExpandedStateNew({
15
+ tr,
16
+ node,
17
+ pos,
18
+ isLivePage
19
+ });
20
+ } else if (node.type === state.schema.nodes.codeBlock) {
21
+ const newNode = tr.doc.nodeAt(pos);
22
+ const oldNode = node;
23
+ if (newNode) {
24
+ transferCodeBlockWrappedValue(oldNode, newNode);
25
+ }
26
+ }
12
27
  if (dispatch) {
13
28
  dispatch(tr);
14
29
  }
@@ -1,6 +1,9 @@
1
1
  import { resizerHandleThumbWidth } from '@atlaskit/editor-common/styles';
2
- import { akEditorGutterPaddingDynamic, akEditorGutterPadding, akEditorCalculatedWideLayoutWidth } from '@atlaskit/editor-shared-styles';
3
- import { WIDTHS } from './resizer-callbacks';
2
+ import { akEditorGutterPaddingDynamic, akEditorGutterPadding, akEditorCalculatedWideLayoutWidth, akEditorFullWidthLayoutWidth, akEditorDefaultLayoutWidth } from '@atlaskit/editor-shared-styles';
3
+ const WIDTHS = {
4
+ MIN: akEditorDefaultLayoutWidth,
5
+ MAX: akEditorFullWidthLayoutWidth
6
+ };
4
7
  const GUIDELINE_KEYS = {
5
8
  lineLength: 'grid',
6
9
  wide: 'wide',
@@ -0,0 +1,56 @@
1
+ import { draggable } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';
2
+ import { disableNativeDragPreview } from '@atlaskit/pragmatic-drag-and-drop/element/disable-native-drag-preview';
3
+ import { preventUnhandled } from '@atlaskit/pragmatic-drag-and-drop/prevent-unhandled';
4
+ export const createPragmaticResizer = ({
5
+ onDragStart,
6
+ onDrag,
7
+ onDrop
8
+ }) => {
9
+ const registerHandle = handleElement => {
10
+ return draggable({
11
+ element: handleElement,
12
+ onGenerateDragPreview: ({
13
+ nativeSetDragImage
14
+ }) => {
15
+ disableNativeDragPreview({
16
+ nativeSetDragImage
17
+ });
18
+ preventUnhandled.start();
19
+ },
20
+ onDragStart,
21
+ onDrag,
22
+ onDrop(args) {
23
+ preventUnhandled.stop();
24
+ onDrop(args);
25
+ }
26
+ });
27
+ };
28
+ const createHandle = side => {
29
+ const handle = document.createElement('div');
30
+ handle.contentEditable = 'false';
31
+ handle.classList.add('pm-breakout-resize-handle');
32
+ if (side === 'left') {
33
+ handle.classList.add('pm-breakout-resize-handle-left');
34
+ handle.setAttribute('data-testid', 'pragmatic-resizer-handle-left');
35
+ } else {
36
+ handle.classList.add('pm-breakout-resize-handle-right');
37
+ handle.setAttribute('data-testid', 'pragmatic-resizer-handle-right');
38
+ }
39
+ const handleInner = document.createElement('div');
40
+ handleInner.classList.add('pm-breakout-resize-handle-inner');
41
+ handle.appendChild(handleInner);
42
+ return handle;
43
+ };
44
+ const rightHandle = createHandle('right');
45
+ const leftHandle = createHandle('left');
46
+ const rightHandleCleanup = registerHandle(rightHandle);
47
+ const leftHandleCleanup = registerHandle(leftHandle);
48
+ return {
49
+ rightHandle,
50
+ leftHandle,
51
+ destroy: () => {
52
+ rightHandleCleanup();
53
+ leftHandleCleanup();
54
+ }
55
+ };
56
+ };
@@ -1,13 +1,13 @@
1
- import { akEditorGutterPaddingDynamic, akEditorGutterPadding } from '@atlaskit/editor-shared-styles';
1
+ import { akEditorGutterPaddingDynamic, akEditorGutterPadding, akEditorDefaultLayoutWidth, akEditorFullWidthLayoutWidth } from '@atlaskit/editor-shared-styles';
2
2
  import { setBreakoutWidth } from '../editor-commands/set-breakout-width';
3
3
  import { getGuidelines } from './get-guidelines';
4
4
  import { LOCAL_RESIZE_PROPERTY } from './resizing-mark-view';
5
5
  const RESIZE_RATIO = 2;
6
- export const WIDTHS = {
7
- MIN: 760,
8
- MAX: 1800
6
+ const WIDTHS = {
7
+ MIN: akEditorDefaultLayoutWidth,
8
+ MAX: akEditorFullWidthLayoutWidth
9
9
  };
10
- function getProposedWidth({
10
+ export function getProposedWidth({
11
11
  initialWidth,
12
12
  location,
13
13
  api