@atlaskit/editor-plugin-breakout 5.1.0 → 5.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,24 @@
1
1
  # @atlaskit/editor-plugin-breakout
2
2
 
3
+ ## 5.2.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [`8339b4553cc39`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/8339b4553cc39) -
8
+ Hydration fixes for breakout plugin
9
+ - Updated dependencies
10
+
11
+ ## 5.2.0
12
+
13
+ ### Minor Changes
14
+
15
+ - [`b367661ba720e`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/b367661ba720e) -
16
+ EDITOR-1562 bump adf-schema for afm
17
+
18
+ ### Patch Changes
19
+
20
+ - Updated dependencies
21
+
3
22
  ## 5.1.0
4
23
 
5
24
  ### Minor Changes
@@ -145,18 +145,26 @@ var LayoutButtonWrapper = function LayoutButtonWrapper(_ref2) {
145
145
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
146
146
  breakoutNodePresent = _useState2[0],
147
147
  setBreakoutNodePresent = _useState2[1];
148
- var _useState3 = (0, _react.useState)((0, _getBreakoutMode.getBreakoutMode)(editorView.state)),
148
+ var _useState3 = (0, _react.useState)((0, _expValEquals.expValEquals)('platform_editor_hydratable_ui', 'isEnabled', true) && !editorView ? undefined :
149
+ // Remove ! during platform_editor_hydratable_ui cleanup
150
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
151
+ (0, _getBreakoutMode.getBreakoutMode)(editorView.state)),
149
152
  _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
150
153
  breakoutMode = _useState4[0],
151
154
  setBreakoutMode = _useState4[1];
152
155
  (0, _usePluginStateEffect.usePluginStateEffect)(api, ['breakout'], function (_ref3) {
153
156
  var breakoutState = _ref3.breakoutState;
157
+ if ((0, _expValEquals.expValEquals)('platform_editor_hydratable_ui', 'isEnabled', true) && !editorView) {
158
+ return;
159
+ }
154
160
  if (breakoutState !== null && breakoutState !== void 0 && breakoutState.breakoutNode && !breakoutNodePresent) {
155
161
  setBreakoutNodePresent(true);
156
162
  }
157
163
  if (!(breakoutState !== null && breakoutState !== void 0 && breakoutState.breakoutNode) && breakoutNodePresent) {
158
164
  setBreakoutNodePresent(false);
159
165
  }
166
+ // Remove ! during platform_editor_hydratable_ui cleanup
167
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
160
168
  var nextBreakoutMode = (0, _getBreakoutMode.getBreakoutMode)(editorView.state);
161
169
  if (nextBreakoutMode !== breakoutMode) {
162
170
  setBreakoutMode(nextBreakoutMode);
@@ -242,6 +250,9 @@ var breakoutPlugin = exports.breakoutPlugin = function breakoutPlugin(_ref4) {
242
250
  popupsMountPoint = _ref6.popupsMountPoint,
243
251
  popupsBoundariesElement = _ref6.popupsBoundariesElement,
244
252
  popupsScrollableElement = _ref6.popupsScrollableElement;
253
+ if (!editorView) {
254
+ return null;
255
+ }
245
256
  if ((0, _expValEquals.expValEquals)('platform_editor_breakout_resizing', 'isEnabled', true) && (0, _platformFeatureFlags.fg)('platform_editor_breakout_resizing_hello_release')) {
246
257
  return /*#__PURE__*/_react.default.createElement(_GuidelineLabel.GuidelineLabel, {
247
258
  api: api,
@@ -23,6 +23,7 @@ var _collapse = _interopRequireDefault(require("@atlaskit/icon/glyph/editor/coll
23
23
  var _expand = _interopRequireDefault(require("@atlaskit/icon/glyph/editor/expand"));
24
24
  var _colors = require("@atlaskit/theme/colors");
25
25
  var _constants = require("@atlaskit/theme/constants");
26
+ var _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals");
26
27
  var _expValEqualsNoExposure = require("@atlaskit/tmp-editor-statsig/exp-val-equals-no-exposure");
27
28
  var _removeBreakout = require("../editor-commands/remove-breakout");
28
29
  var _setBreakoutMode = require("../editor-commands/set-breakout-mode");
@@ -82,8 +83,14 @@ var LayoutButton = function LayoutButton(_ref) {
82
83
  api = _ref.api;
83
84
  var handleClick = (0, _react.useCallback)(function (breakoutMode) {
84
85
  var _getPluginState;
85
- var state = editorView.state,
86
- dispatch = editorView.dispatch;
86
+ if ((0, _expValEquals.expValEquals)('platform_editor_hydratable_ui', 'isEnabled', true) && !editorView) {
87
+ return;
88
+ }
89
+ // Remove ! during platform_editor_hydratable_ui cleanup
90
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
91
+ var _ref2 = editorView,
92
+ state = _ref2.state,
93
+ dispatch = _ref2.dispatch;
87
94
  var breakoutNode = (_getPluginState = (0, _pluginKey.getPluginState)(state)) === null || _getPluginState === void 0 ? void 0 : _getPluginState.breakoutNode;
88
95
  if (['wide', 'full-width'].indexOf(breakoutMode) !== -1) {
89
96
  var _api$analytics;
@@ -111,8 +118,13 @@ var LayoutButton = function LayoutButton(_ref) {
111
118
  });
112
119
  }
113
120
  }, [api === null || api === void 0 || (_api$analytics3 = api.analytics) === null || _api$analytics3 === void 0 ? void 0 : _api$analytics3.actions, editorView, isLivePage]);
114
- var state = editorView.state;
115
- if (!isBreakoutNodePresent || !(0, _isBreakoutMarkAllowed.isBreakoutMarkAllowed)(state)) {
121
+ if ((0, _expValEquals.expValEquals)('platform_editor_hydratable_ui', 'isEnabled', true) && !editorView) {
122
+ return null;
123
+ }
124
+
125
+ // Remove ! during platform_editor_hydratable_ui cleanup
126
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
127
+ if (!isBreakoutNodePresent || !(0, _isBreakoutMarkAllowed.isBreakoutMarkAllowed)(editorView.state)) {
116
128
  return null;
117
129
  }
118
130
  var breakoutMode = breakoutModeProp;
@@ -120,11 +132,17 @@ var LayoutButton = function LayoutButton(_ref) {
120
132
  var title = formatMessage(titleMessage);
121
133
  var nextBreakoutMode = (0, _utils.getNextBreakoutMode)(breakoutMode);
122
134
  var belowOtherPopupsZIndex = _constants.layers.layer() - 1;
123
- var pluginState = (0, _pluginKey.getPluginState)(state);
135
+
136
+ // Remove ! during platform_editor_hydratable_ui cleanup
137
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
138
+ var pluginState = (0, _pluginKey.getPluginState)(editorView.state);
124
139
  if (!pluginState) {
125
140
  return null;
126
141
  }
127
- var element = getBreakoutNodeElement(pluginState, state.selection, editorView);
142
+
143
+ // Remove ! during platform_editor_hydratable_ui cleanup
144
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
145
+ var element = getBreakoutNodeElement(pluginState, editorView.state.selection, editorView);
128
146
  if (!element) {
129
147
  return null;
130
148
  }
@@ -132,16 +132,24 @@ const LayoutButtonWrapper = ({
132
132
  };
133
133
  });
134
134
  const [breakoutNodePresent, setBreakoutNodePresent] = useState(false);
135
- const [breakoutMode, setBreakoutMode] = useState(getBreakoutMode(editorView.state));
135
+ const [breakoutMode, setBreakoutMode] = useState(expValEquals('platform_editor_hydratable_ui', 'isEnabled', true) && !editorView ? undefined :
136
+ // Remove ! during platform_editor_hydratable_ui cleanup
137
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
138
+ getBreakoutMode(editorView.state));
136
139
  usePluginStateEffect(api, ['breakout'], ({
137
140
  breakoutState
138
141
  }) => {
142
+ if (expValEquals('platform_editor_hydratable_ui', 'isEnabled', true) && !editorView) {
143
+ return;
144
+ }
139
145
  if (breakoutState !== null && breakoutState !== void 0 && breakoutState.breakoutNode && !breakoutNodePresent) {
140
146
  setBreakoutNodePresent(true);
141
147
  }
142
148
  if (!(breakoutState !== null && breakoutState !== void 0 && breakoutState.breakoutNode) && breakoutNodePresent) {
143
149
  setBreakoutNodePresent(false);
144
150
  }
151
+ // Remove ! during platform_editor_hydratable_ui cleanup
152
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
145
153
  const nextBreakoutMode = getBreakoutMode(editorView.state);
146
154
  if (nextBreakoutMode !== breakoutMode) {
147
155
  setBreakoutMode(nextBreakoutMode);
@@ -225,6 +233,9 @@ export const breakoutPlugin = ({
225
233
  popupsBoundariesElement,
226
234
  popupsScrollableElement
227
235
  }) {
236
+ if (!editorView) {
237
+ return null;
238
+ }
228
239
  if (expValEquals('platform_editor_breakout_resizing', 'isEnabled', true) && fg('platform_editor_breakout_resizing_hello_release')) {
229
240
  return /*#__PURE__*/React.createElement(GuidelineLabel, {
230
241
  api: api,
@@ -21,6 +21,7 @@ import CollapseIcon from '@atlaskit/icon/glyph/editor/collapse';
21
21
  import ExpandIcon from '@atlaskit/icon/glyph/editor/expand';
22
22
  import { B300, N20A, N300 } from '@atlaskit/theme/colors';
23
23
  import { layers } from '@atlaskit/theme/constants';
24
+ import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
24
25
  import { expValEqualsNoExposure } from '@atlaskit/tmp-editor-statsig/exp-val-equals-no-exposure';
25
26
  import { removeBreakout } from '../editor-commands/remove-breakout';
26
27
  import { setBreakoutMode } from '../editor-commands/set-breakout-mode';
@@ -79,6 +80,11 @@ const LayoutButton = ({
79
80
  var _api$analytics3;
80
81
  const handleClick = useCallback(breakoutMode => {
81
82
  var _getPluginState;
83
+ if (expValEquals('platform_editor_hydratable_ui', 'isEnabled', true) && !editorView) {
84
+ return;
85
+ }
86
+ // Remove ! during platform_editor_hydratable_ui cleanup
87
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
82
88
  const {
83
89
  state,
84
90
  dispatch
@@ -110,10 +116,13 @@ const LayoutButton = ({
110
116
  });
111
117
  }
112
118
  }, [api === null || api === void 0 ? void 0 : (_api$analytics3 = api.analytics) === null || _api$analytics3 === void 0 ? void 0 : _api$analytics3.actions, editorView, isLivePage]);
113
- const {
114
- state
115
- } = editorView;
116
- if (!isBreakoutNodePresent || !isBreakoutMarkAllowed(state)) {
119
+ if (expValEquals('platform_editor_hydratable_ui', 'isEnabled', true) && !editorView) {
120
+ return null;
121
+ }
122
+
123
+ // Remove ! during platform_editor_hydratable_ui cleanup
124
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
125
+ if (!isBreakoutNodePresent || !isBreakoutMarkAllowed(editorView.state)) {
117
126
  return null;
118
127
  }
119
128
  const breakoutMode = breakoutModeProp;
@@ -121,11 +130,17 @@ const LayoutButton = ({
121
130
  const title = formatMessage(titleMessage);
122
131
  const nextBreakoutMode = getNextBreakoutMode(breakoutMode);
123
132
  const belowOtherPopupsZIndex = layers.layer() - 1;
124
- const pluginState = getPluginState(state);
133
+
134
+ // Remove ! during platform_editor_hydratable_ui cleanup
135
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
136
+ const pluginState = getPluginState(editorView.state);
125
137
  if (!pluginState) {
126
138
  return null;
127
139
  }
128
- let element = getBreakoutNodeElement(pluginState, state.selection, editorView);
140
+
141
+ // Remove ! during platform_editor_hydratable_ui cleanup
142
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
143
+ let element = getBreakoutNodeElement(pluginState, editorView.state.selection, editorView);
129
144
  if (!element) {
130
145
  return null;
131
146
  }
@@ -136,18 +136,26 @@ var LayoutButtonWrapper = function LayoutButtonWrapper(_ref2) {
136
136
  _useState2 = _slicedToArray(_useState, 2),
137
137
  breakoutNodePresent = _useState2[0],
138
138
  setBreakoutNodePresent = _useState2[1];
139
- var _useState3 = useState(getBreakoutMode(editorView.state)),
139
+ var _useState3 = useState(expValEquals('platform_editor_hydratable_ui', 'isEnabled', true) && !editorView ? undefined :
140
+ // Remove ! during platform_editor_hydratable_ui cleanup
141
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
142
+ getBreakoutMode(editorView.state)),
140
143
  _useState4 = _slicedToArray(_useState3, 2),
141
144
  breakoutMode = _useState4[0],
142
145
  setBreakoutMode = _useState4[1];
143
146
  usePluginStateEffect(api, ['breakout'], function (_ref3) {
144
147
  var breakoutState = _ref3.breakoutState;
148
+ if (expValEquals('platform_editor_hydratable_ui', 'isEnabled', true) && !editorView) {
149
+ return;
150
+ }
145
151
  if (breakoutState !== null && breakoutState !== void 0 && breakoutState.breakoutNode && !breakoutNodePresent) {
146
152
  setBreakoutNodePresent(true);
147
153
  }
148
154
  if (!(breakoutState !== null && breakoutState !== void 0 && breakoutState.breakoutNode) && breakoutNodePresent) {
149
155
  setBreakoutNodePresent(false);
150
156
  }
157
+ // Remove ! during platform_editor_hydratable_ui cleanup
158
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
151
159
  var nextBreakoutMode = getBreakoutMode(editorView.state);
152
160
  if (nextBreakoutMode !== breakoutMode) {
153
161
  setBreakoutMode(nextBreakoutMode);
@@ -233,6 +241,9 @@ export var breakoutPlugin = function breakoutPlugin(_ref4) {
233
241
  popupsMountPoint = _ref6.popupsMountPoint,
234
242
  popupsBoundariesElement = _ref6.popupsBoundariesElement,
235
243
  popupsScrollableElement = _ref6.popupsScrollableElement;
244
+ if (!editorView) {
245
+ return null;
246
+ }
236
247
  if (expValEquals('platform_editor_breakout_resizing', 'isEnabled', true) && fg('platform_editor_breakout_resizing_hello_release')) {
237
248
  return /*#__PURE__*/React.createElement(GuidelineLabel, {
238
249
  api: api,
@@ -22,6 +22,7 @@ import CollapseIcon from '@atlaskit/icon/glyph/editor/collapse';
22
22
  import ExpandIcon from '@atlaskit/icon/glyph/editor/expand';
23
23
  import { B300, N20A, N300 } from '@atlaskit/theme/colors';
24
24
  import { layers } from '@atlaskit/theme/constants';
25
+ import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
25
26
  import { expValEqualsNoExposure } from '@atlaskit/tmp-editor-statsig/exp-val-equals-no-exposure';
26
27
  import { removeBreakout } from '../editor-commands/remove-breakout';
27
28
  import { setBreakoutMode } from '../editor-commands/set-breakout-mode';
@@ -74,8 +75,14 @@ var LayoutButton = function LayoutButton(_ref) {
74
75
  api = _ref.api;
75
76
  var handleClick = useCallback(function (breakoutMode) {
76
77
  var _getPluginState;
77
- var state = editorView.state,
78
- dispatch = editorView.dispatch;
78
+ if (expValEquals('platform_editor_hydratable_ui', 'isEnabled', true) && !editorView) {
79
+ return;
80
+ }
81
+ // Remove ! during platform_editor_hydratable_ui cleanup
82
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
83
+ var _ref2 = editorView,
84
+ state = _ref2.state,
85
+ dispatch = _ref2.dispatch;
79
86
  var breakoutNode = (_getPluginState = getPluginState(state)) === null || _getPluginState === void 0 ? void 0 : _getPluginState.breakoutNode;
80
87
  if (['wide', 'full-width'].indexOf(breakoutMode) !== -1) {
81
88
  var _api$analytics;
@@ -103,8 +110,13 @@ var LayoutButton = function LayoutButton(_ref) {
103
110
  });
104
111
  }
105
112
  }, [api === null || api === void 0 || (_api$analytics3 = api.analytics) === null || _api$analytics3 === void 0 ? void 0 : _api$analytics3.actions, editorView, isLivePage]);
106
- var state = editorView.state;
107
- if (!isBreakoutNodePresent || !isBreakoutMarkAllowed(state)) {
113
+ if (expValEquals('platform_editor_hydratable_ui', 'isEnabled', true) && !editorView) {
114
+ return null;
115
+ }
116
+
117
+ // Remove ! during platform_editor_hydratable_ui cleanup
118
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
119
+ if (!isBreakoutNodePresent || !isBreakoutMarkAllowed(editorView.state)) {
108
120
  return null;
109
121
  }
110
122
  var breakoutMode = breakoutModeProp;
@@ -112,11 +124,17 @@ var LayoutButton = function LayoutButton(_ref) {
112
124
  var title = formatMessage(titleMessage);
113
125
  var nextBreakoutMode = getNextBreakoutMode(breakoutMode);
114
126
  var belowOtherPopupsZIndex = layers.layer() - 1;
115
- var pluginState = getPluginState(state);
127
+
128
+ // Remove ! during platform_editor_hydratable_ui cleanup
129
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
130
+ var pluginState = getPluginState(editorView.state);
116
131
  if (!pluginState) {
117
132
  return null;
118
133
  }
119
- var element = getBreakoutNodeElement(pluginState, state.selection, editorView);
134
+
135
+ // Remove ! during platform_editor_hydratable_ui cleanup
136
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
137
+ var element = getBreakoutNodeElement(pluginState, editorView.state.selection, editorView);
120
138
  if (!element) {
121
139
  return null;
122
140
  }
@@ -6,7 +6,7 @@ export interface Props {
6
6
  api: ExtractInjectionAPI<BreakoutPlugin> | undefined;
7
7
  boundariesElement?: HTMLElement;
8
8
  breakoutMode: BreakoutMode | undefined;
9
- editorView: EditorView;
9
+ editorView: EditorView | undefined;
10
10
  handleClick?: Function;
11
11
  isBreakoutNodePresent: boolean;
12
12
  isLivePage?: boolean;
@@ -6,7 +6,7 @@ export interface Props {
6
6
  api: ExtractInjectionAPI<BreakoutPlugin> | undefined;
7
7
  boundariesElement?: HTMLElement;
8
8
  breakoutMode: BreakoutMode | undefined;
9
- editorView: EditorView;
9
+ editorView: EditorView | undefined;
10
10
  handleClick?: Function;
11
11
  isBreakoutNodePresent: boolean;
12
12
  isLivePage?: boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-plugin-breakout",
3
- "version": "5.1.0",
3
+ "version": "5.2.1",
4
4
  "description": "Breakout plugin for @atlaskit/editor-core",
5
5
  "author": "Atlassian Pty Ltd",
6
6
  "license": "Apache-2.0",
@@ -29,8 +29,8 @@
29
29
  ],
30
30
  "atlaskit:src": "src/index.ts",
31
31
  "dependencies": {
32
- "@atlaskit/adf-schema": "^51.1.1",
33
- "@atlaskit/editor-plugin-block-controls": "^6.1.0",
32
+ "@atlaskit/adf-schema": "^51.1.2",
33
+ "@atlaskit/editor-plugin-block-controls": "^6.3.0",
34
34
  "@atlaskit/editor-plugin-editor-disabled": "^5.0.0",
35
35
  "@atlaskit/editor-plugin-editor-viewmode": "^7.0.0",
36
36
  "@atlaskit/editor-plugin-guideline": "^5.0.0",
@@ -39,11 +39,11 @@
39
39
  "@atlaskit/editor-plugin-width": "^6.0.0",
40
40
  "@atlaskit/editor-prosemirror": "7.0.0",
41
41
  "@atlaskit/editor-shared-styles": "^3.6.0",
42
- "@atlaskit/icon": "^28.1.0",
42
+ "@atlaskit/icon": "^28.2.0",
43
43
  "@atlaskit/platform-feature-flags": "^1.1.0",
44
44
  "@atlaskit/pragmatic-drag-and-drop": "^1.7.0",
45
45
  "@atlaskit/theme": "^21.0.0",
46
- "@atlaskit/tmp-editor-statsig": "^12.14.0",
46
+ "@atlaskit/tmp-editor-statsig": "^12.25.0",
47
47
  "@atlaskit/tokens": "^6.3.0",
48
48
  "@atlaskit/tooltip": "^20.4.0",
49
49
  "@babel/runtime": "^7.0.0",
@@ -53,7 +53,7 @@
53
53
  "uuid": "^3.1.0"
54
54
  },
55
55
  "peerDependencies": {
56
- "@atlaskit/editor-common": "^109.3.0",
56
+ "@atlaskit/editor-common": "^109.10.0",
57
57
  "react": "^18.2.0",
58
58
  "react-dom": "^18.2.0",
59
59
  "react-intl-next": "npm:react-intl@^5.18.1"
@@ -61,7 +61,7 @@
61
61
  "devDependencies": {
62
62
  "@af/integration-testing": "workspace:^",
63
63
  "@af/visual-regression": "workspace:^",
64
- "@atlaskit/editor-plugin-code-block": "^7.1.0",
64
+ "@atlaskit/editor-plugin-code-block": "^7.2.0",
65
65
  "@atlaskit/editor-plugin-composition": "^4.0.0",
66
66
  "@atlaskit/editor-plugin-decorations": "^5.0.0",
67
67
  "@atlaskit/ssr": "workspace:^",