@atlaskit/editor-common 96.8.0 → 96.8.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,14 @@
1
1
  # @atlaskit/editor-common
2
2
 
3
+ ## 96.8.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [#181266](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/181266)
8
+ [`4b4994d4a2620`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/4b4994d4a2620) -
9
+ ED-25613: Keyboard shortcuts to resize layout
10
+ - Updated dependencies
11
+
3
12
  ## 96.8.0
4
13
 
5
14
  ### Minor Changes
@@ -80,5 +80,10 @@ var toolbarMessages = exports.toolbarMessages = (0, _reactIntlNext.defineMessage
80
80
  id: 'fabric.editor.layout.columnOption',
81
81
  defaultMessage: '{count, plural, one { Column} other {{count} Columns}}',
82
82
  description: 'column option text for layout'
83
+ },
84
+ resizeLayout: {
85
+ id: 'fabric.editor.layout.resizeLayout',
86
+ defaultMessage: 'Resize layout',
87
+ description: 'resize layout'
83
88
  }
84
89
  });
@@ -17,7 +17,7 @@ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return
17
17
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
18
18
  var SENTRY_DSN = 'https://0b10c8e02fb44d8796c047b102c9bee8@o55978.ingest.sentry.io/4505129224110080';
19
19
  var packageName = 'editor-common'; // Sentry doesn't accept '/' in its releases https://docs.sentry.io/platforms/javascript/configuration/releases/
20
- var packageVersion = "96.8.0";
20
+ var packageVersion = "96.8.1";
21
21
  var sanitiseSentryEvents = function sanitiseSentryEvents(data, _hint) {
22
22
  // Remove URL as it has UGC
23
23
  // TODO: Sanitise the URL instead of just removing it
@@ -8,11 +8,13 @@ Object.defineProperty(exports, "__esModule", {
8
8
  exports.ignoreResizerMutations = exports.BreakoutResizer = void 0;
9
9
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
10
  var _react = _interopRequireWildcard(require("react"));
11
+ var _bindEventListener = require("bind-event-listener");
11
12
  var _editorSharedStyles = require("@atlaskit/editor-shared-styles");
12
13
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
13
14
  var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
14
15
  var _analytics = require("../analytics");
15
16
  var _styles = require("../styles");
17
+ var _browser = require("../utils/browser");
16
18
  var _Resizer = _interopRequireDefault(require("./Resizer"));
17
19
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
18
20
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
@@ -71,6 +73,7 @@ var resizingStyles = {
71
73
  var defaultStyles = {
72
74
  display: 'grid'
73
75
  };
76
+ var RESIZE_STEP_VALUE = 10;
74
77
 
75
78
  /**
76
79
  * BreakoutResizer is a common component used to resize nodes that support the 'Breakout' mark, so it requires
@@ -99,6 +102,8 @@ var BreakoutResizer = exports.BreakoutResizer = function BreakoutResizer(_ref) {
99
102
  maxWidth = _useState2$.maxWidth,
100
103
  isResizing = _useState2$.isResizing,
101
104
  setResizingState = _useState2[1];
105
+ var areResizeMetaKeysPressed = (0, _react.useRef)(false);
106
+ var resizerRef = (0, _react.useRef)(null);
102
107
 
103
108
  // Relying on re-renders caused by selection changes inside/around node
104
109
  var isSelectionInNode = (0, _react.useMemo)(function () {
@@ -176,6 +181,99 @@ var BreakoutResizer = exports.BreakoutResizer = function BreakoutResizer(_ref) {
176
181
  maxWidth: undefined
177
182
  });
178
183
  }, [getPos, editorView, displayGapCursor, editorAnalyticsApi]);
184
+ var handleEscape = (0, _react.useCallback)(function () {
185
+ editorView === null || editorView === void 0 || editorView.focus();
186
+ }, [editorView]);
187
+ var handleLayoutSizeChangeOnKeypress = (0, _react.useCallback)(function (step) {
188
+ if (!parentRef) {
189
+ return;
190
+ }
191
+ var resizerItem = parentRef.closest('.resizer-item');
192
+ if (!(resizerItem instanceof HTMLElement)) {
193
+ return;
194
+ }
195
+ var newWidth = resizerItem.offsetWidth + step;
196
+ if (maxWidth && newWidth > maxWidth || minWidth && newWidth < minWidth) {
197
+ return;
198
+ }
199
+ handleResizeStop({
200
+ width: resizerItem.offsetWidth,
201
+ x: 0,
202
+ y: 0,
203
+ height: 0
204
+ }, {
205
+ width: step,
206
+ height: 0
207
+ });
208
+ }, [handleResizeStop, maxWidth, minWidth, parentRef]);
209
+ var resizeHandleKeyDownHandler = (0, _react.useCallback)(function (event) {
210
+ var isBracketKey = event.code === 'BracketRight' || event.code === 'BracketLeft';
211
+ var metaKey = _browser.browser.mac ? event.metaKey : event.ctrlKey;
212
+ if (event.altKey || metaKey || event.shiftKey) {
213
+ areResizeMetaKeysPressed.current = true;
214
+ }
215
+ if (event.altKey && metaKey) {
216
+ if (isBracketKey) {
217
+ event.preventDefault();
218
+ handleLayoutSizeChangeOnKeypress(event.code === 'BracketRight' ? RESIZE_STEP_VALUE : -RESIZE_STEP_VALUE);
219
+ }
220
+ } else if (!areResizeMetaKeysPressed.current) {
221
+ handleEscape();
222
+ }
223
+ }, [handleEscape, handleLayoutSizeChangeOnKeypress]);
224
+ var resizeHandleKeyUpHandler = (0, _react.useCallback)(function (event) {
225
+ if (event.altKey || event.metaKey) {
226
+ areResizeMetaKeysPressed.current = false;
227
+ }
228
+ return;
229
+ }, [areResizeMetaKeysPressed]);
230
+ var resizerGlobalKeyDownHandler = (0, _react.useCallback)(function (event) {
231
+ if (!resizerRef.current) {
232
+ return;
233
+ }
234
+ var resizeHandleThumbEl = resizerRef.current.getResizerThumbEl();
235
+ var metaKey = _browser.browser.mac ? event.metaKey : event.ctrlKey;
236
+ var isTargetResizeHandle = event.target instanceof HTMLElement && event.target.classList.contains('resizer-handle-thumb');
237
+ if (event.altKey && event.shiftKey && metaKey && event.code === 'KeyR' || isTargetResizeHandle && (event.altKey || metaKey || event.shiftKey)) {
238
+ event.preventDefault();
239
+ if (!resizeHandleThumbEl) {
240
+ return;
241
+ }
242
+ resizeHandleThumbEl.focus();
243
+ resizeHandleThumbEl.scrollIntoView({
244
+ behavior: 'smooth',
245
+ block: 'center',
246
+ inline: 'nearest'
247
+ });
248
+ }
249
+ }, [resizerRef]);
250
+ (0, _react.useLayoutEffect)(function () {
251
+ if (!resizerRef.current || !editorView) {
252
+ return;
253
+ }
254
+ var resizeHandleThumbEl = resizerRef.current.getResizerThumbEl();
255
+ if (!resizeHandleThumbEl) {
256
+ return;
257
+ }
258
+ if ((0, _platformFeatureFlags.fg)('platform_editor_advanced_layouts_a11y')) {
259
+ var editorViewDom = editorView.dom;
260
+ var unbindEditorViewDom = (0, _bindEventListener.bind)(editorViewDom, {
261
+ type: 'keydown',
262
+ listener: resizerGlobalKeyDownHandler
263
+ });
264
+ var unbindResizeHandle = (0, _bindEventListener.bindAll)(resizeHandleThumbEl, [{
265
+ type: 'keydown',
266
+ listener: resizeHandleKeyDownHandler
267
+ }, {
268
+ type: 'keyup',
269
+ listener: resizeHandleKeyUpHandler
270
+ }]);
271
+ return function () {
272
+ unbindEditorViewDom();
273
+ unbindResizeHandle();
274
+ };
275
+ }
276
+ }, [editorView, resizerGlobalKeyDownHandler, resizeHandleKeyDownHandler, resizeHandleKeyUpHandler]);
179
277
  (0, _react.useEffect)(function () {
180
278
  // clean up gap cursor if node was unmounting when resizing (e.g. during collab)
181
279
  return function () {
@@ -191,6 +289,7 @@ var BreakoutResizer = exports.BreakoutResizer = function BreakoutResizer(_ref) {
191
289
  });
192
290
  }
193
291
  return /*#__PURE__*/_react.default.createElement(_Resizer.default, {
292
+ ref: resizerRef,
194
293
  enable: {
195
294
  left: true,
196
295
  right: true
@@ -23,7 +23,7 @@ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.
23
23
  * @jsx jsx
24
24
  */ // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
25
25
  var packageName = "@atlaskit/editor-common";
26
- var packageVersion = "96.8.0";
26
+ var packageVersion = "96.8.1";
27
27
  var halfFocusRing = 1;
28
28
  var dropOffset = '0, 8';
29
29
  var DropList = /*#__PURE__*/function (_Component) {
@@ -74,5 +74,10 @@ export const toolbarMessages = defineMessages({
74
74
  id: 'fabric.editor.layout.columnOption',
75
75
  defaultMessage: '{count, plural, one { Column} other {{count} Columns}}',
76
76
  description: 'column option text for layout'
77
+ },
78
+ resizeLayout: {
79
+ id: 'fabric.editor.layout.resizeLayout',
80
+ defaultMessage: 'Resize layout',
81
+ description: 'resize layout'
77
82
  }
78
83
  });
@@ -1,7 +1,7 @@
1
1
  import { isFedRamp } from './environment';
2
2
  const SENTRY_DSN = 'https://0b10c8e02fb44d8796c047b102c9bee8@o55978.ingest.sentry.io/4505129224110080';
3
3
  const packageName = 'editor-common'; // Sentry doesn't accept '/' in its releases https://docs.sentry.io/platforms/javascript/configuration/releases/
4
- const packageVersion = "96.8.0";
4
+ const packageVersion = "96.8.1";
5
5
  const sanitiseSentryEvents = (data, _hint) => {
6
6
  // Remove URL as it has UGC
7
7
  // TODO: Sanitise the URL instead of just removing it
@@ -1,9 +1,11 @@
1
- import React, { useCallback, useEffect, useMemo, useState } from 'react';
1
+ import React, { useCallback, useEffect, useMemo, useRef, useState, useLayoutEffect } from 'react';
2
+ import { bind, bindAll } from 'bind-event-listener';
2
3
  import { akEditorDefaultLayoutWidth, akEditorFullWidthLayoutWidth, akEditorGutterPadding, akEditorGutterPaddingDynamic } from '@atlaskit/editor-shared-styles';
3
4
  import { fg } from '@atlaskit/platform-feature-flags';
4
5
  import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments';
5
6
  import { ACTION, ACTION_SUBJECT, EVENT_TYPE } from '../analytics';
6
7
  import { LAYOUT_COLUMN_PADDING, LAYOUT_SECTION_MARGIN } from '../styles';
8
+ import { browser } from '../utils/browser';
7
9
  import Resizer from './Resizer';
8
10
  const breakoutSupportedNodes = ['layoutSection', 'expand', 'codeBlock'];
9
11
  const getHandleStyle = node => {
@@ -60,6 +62,7 @@ const resizingStyles = {
60
62
  const defaultStyles = {
61
63
  display: 'grid'
62
64
  };
65
+ const RESIZE_STEP_VALUE = 10;
63
66
 
64
67
  /**
65
68
  * BreakoutResizer is a common component used to resize nodes that support the 'Breakout' mark, so it requires
@@ -87,6 +90,8 @@ const BreakoutResizer = ({
87
90
  maxWidth: undefined,
88
91
  isResizing: false
89
92
  });
93
+ const areResizeMetaKeysPressed = useRef(false);
94
+ const resizerRef = useRef(null);
90
95
 
91
96
  // Relying on re-renders caused by selection changes inside/around node
92
97
  const isSelectionInNode = useMemo(() => {
@@ -171,6 +176,99 @@ const BreakoutResizer = ({
171
176
  maxWidth: undefined
172
177
  });
173
178
  }, [getPos, editorView, displayGapCursor, editorAnalyticsApi]);
179
+ const handleEscape = useCallback(() => {
180
+ editorView === null || editorView === void 0 ? void 0 : editorView.focus();
181
+ }, [editorView]);
182
+ const handleLayoutSizeChangeOnKeypress = useCallback(step => {
183
+ if (!parentRef) {
184
+ return;
185
+ }
186
+ const resizerItem = parentRef.closest('.resizer-item');
187
+ if (!(resizerItem instanceof HTMLElement)) {
188
+ return;
189
+ }
190
+ const newWidth = resizerItem.offsetWidth + step;
191
+ if (maxWidth && newWidth > maxWidth || minWidth && newWidth < minWidth) {
192
+ return;
193
+ }
194
+ handleResizeStop({
195
+ width: resizerItem.offsetWidth,
196
+ x: 0,
197
+ y: 0,
198
+ height: 0
199
+ }, {
200
+ width: step,
201
+ height: 0
202
+ });
203
+ }, [handleResizeStop, maxWidth, minWidth, parentRef]);
204
+ const resizeHandleKeyDownHandler = useCallback(event => {
205
+ const isBracketKey = event.code === 'BracketRight' || event.code === 'BracketLeft';
206
+ const metaKey = browser.mac ? event.metaKey : event.ctrlKey;
207
+ if (event.altKey || metaKey || event.shiftKey) {
208
+ areResizeMetaKeysPressed.current = true;
209
+ }
210
+ if (event.altKey && metaKey) {
211
+ if (isBracketKey) {
212
+ event.preventDefault();
213
+ handleLayoutSizeChangeOnKeypress(event.code === 'BracketRight' ? RESIZE_STEP_VALUE : -RESIZE_STEP_VALUE);
214
+ }
215
+ } else if (!areResizeMetaKeysPressed.current) {
216
+ handleEscape();
217
+ }
218
+ }, [handleEscape, handleLayoutSizeChangeOnKeypress]);
219
+ const resizeHandleKeyUpHandler = useCallback(event => {
220
+ if (event.altKey || event.metaKey) {
221
+ areResizeMetaKeysPressed.current = false;
222
+ }
223
+ return;
224
+ }, [areResizeMetaKeysPressed]);
225
+ const resizerGlobalKeyDownHandler = useCallback(event => {
226
+ if (!resizerRef.current) {
227
+ return;
228
+ }
229
+ const resizeHandleThumbEl = resizerRef.current.getResizerThumbEl();
230
+ const metaKey = browser.mac ? event.metaKey : event.ctrlKey;
231
+ const isTargetResizeHandle = event.target instanceof HTMLElement && event.target.classList.contains('resizer-handle-thumb');
232
+ if (event.altKey && event.shiftKey && metaKey && event.code === 'KeyR' || isTargetResizeHandle && (event.altKey || metaKey || event.shiftKey)) {
233
+ event.preventDefault();
234
+ if (!resizeHandleThumbEl) {
235
+ return;
236
+ }
237
+ resizeHandleThumbEl.focus();
238
+ resizeHandleThumbEl.scrollIntoView({
239
+ behavior: 'smooth',
240
+ block: 'center',
241
+ inline: 'nearest'
242
+ });
243
+ }
244
+ }, [resizerRef]);
245
+ useLayoutEffect(() => {
246
+ if (!resizerRef.current || !editorView) {
247
+ return;
248
+ }
249
+ const resizeHandleThumbEl = resizerRef.current.getResizerThumbEl();
250
+ if (!resizeHandleThumbEl) {
251
+ return;
252
+ }
253
+ if (fg('platform_editor_advanced_layouts_a11y')) {
254
+ const editorViewDom = editorView.dom;
255
+ const unbindEditorViewDom = bind(editorViewDom, {
256
+ type: 'keydown',
257
+ listener: resizerGlobalKeyDownHandler
258
+ });
259
+ const unbindResizeHandle = bindAll(resizeHandleThumbEl, [{
260
+ type: 'keydown',
261
+ listener: resizeHandleKeyDownHandler
262
+ }, {
263
+ type: 'keyup',
264
+ listener: resizeHandleKeyUpHandler
265
+ }]);
266
+ return () => {
267
+ unbindEditorViewDom();
268
+ unbindResizeHandle();
269
+ };
270
+ }
271
+ }, [editorView, resizerGlobalKeyDownHandler, resizeHandleKeyDownHandler, resizeHandleKeyUpHandler]);
174
272
  useEffect(() => {
175
273
  // clean up gap cursor if node was unmounting when resizing (e.g. during collab)
176
274
  return () => {
@@ -184,6 +282,7 @@ const BreakoutResizer = ({
184
282
  });
185
283
  }
186
284
  return /*#__PURE__*/React.createElement(Resizer, {
285
+ ref: resizerRef,
187
286
  enable: {
188
287
  left: true,
189
288
  right: true
@@ -13,7 +13,7 @@ import withAnalyticsContext from '@atlaskit/analytics-next/withAnalyticsContext'
13
13
  import withAnalyticsEvents from '@atlaskit/analytics-next/withAnalyticsEvents';
14
14
  import Layer from '../Layer';
15
15
  const packageName = "@atlaskit/editor-common";
16
- const packageVersion = "96.8.0";
16
+ const packageVersion = "96.8.1";
17
17
  const halfFocusRing = 1;
18
18
  const dropOffset = '0, 8';
19
19
  class DropList extends Component {
@@ -74,5 +74,10 @@ export var toolbarMessages = defineMessages({
74
74
  id: 'fabric.editor.layout.columnOption',
75
75
  defaultMessage: '{count, plural, one { Column} other {{count} Columns}}',
76
76
  description: 'column option text for layout'
77
+ },
78
+ resizeLayout: {
79
+ id: 'fabric.editor.layout.resizeLayout',
80
+ defaultMessage: 'Resize layout',
81
+ description: 'resize layout'
77
82
  }
78
83
  });
@@ -7,7 +7,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
7
7
  import { isFedRamp } from './environment';
8
8
  var SENTRY_DSN = 'https://0b10c8e02fb44d8796c047b102c9bee8@o55978.ingest.sentry.io/4505129224110080';
9
9
  var packageName = 'editor-common'; // Sentry doesn't accept '/' in its releases https://docs.sentry.io/platforms/javascript/configuration/releases/
10
- var packageVersion = "96.8.0";
10
+ var packageVersion = "96.8.1";
11
11
  var sanitiseSentryEvents = function sanitiseSentryEvents(data, _hint) {
12
12
  // Remove URL as it has UGC
13
13
  // TODO: Sanitise the URL instead of just removing it
@@ -1,10 +1,12 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
- import React, { useCallback, useEffect, useMemo, useState } from 'react';
2
+ import React, { useCallback, useEffect, useMemo, useRef, useState, useLayoutEffect } from 'react';
3
+ import { bind, bindAll } from 'bind-event-listener';
3
4
  import { akEditorDefaultLayoutWidth, akEditorFullWidthLayoutWidth, akEditorGutterPadding, akEditorGutterPaddingDynamic } from '@atlaskit/editor-shared-styles';
4
5
  import { fg } from '@atlaskit/platform-feature-flags';
5
6
  import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments';
6
7
  import { ACTION, ACTION_SUBJECT, EVENT_TYPE } from '../analytics';
7
8
  import { LAYOUT_COLUMN_PADDING, LAYOUT_SECTION_MARGIN } from '../styles';
9
+ import { browser } from '../utils/browser';
8
10
  import Resizer from './Resizer';
9
11
  var breakoutSupportedNodes = ['layoutSection', 'expand', 'codeBlock'];
10
12
  var getHandleStyle = function getHandleStyle(node) {
@@ -61,6 +63,7 @@ var resizingStyles = {
61
63
  var defaultStyles = {
62
64
  display: 'grid'
63
65
  };
66
+ var RESIZE_STEP_VALUE = 10;
64
67
 
65
68
  /**
66
69
  * BreakoutResizer is a common component used to resize nodes that support the 'Breakout' mark, so it requires
@@ -89,6 +92,8 @@ var BreakoutResizer = function BreakoutResizer(_ref) {
89
92
  maxWidth = _useState2$.maxWidth,
90
93
  isResizing = _useState2$.isResizing,
91
94
  setResizingState = _useState2[1];
95
+ var areResizeMetaKeysPressed = useRef(false);
96
+ var resizerRef = useRef(null);
92
97
 
93
98
  // Relying on re-renders caused by selection changes inside/around node
94
99
  var isSelectionInNode = useMemo(function () {
@@ -166,6 +171,99 @@ var BreakoutResizer = function BreakoutResizer(_ref) {
166
171
  maxWidth: undefined
167
172
  });
168
173
  }, [getPos, editorView, displayGapCursor, editorAnalyticsApi]);
174
+ var handleEscape = useCallback(function () {
175
+ editorView === null || editorView === void 0 || editorView.focus();
176
+ }, [editorView]);
177
+ var handleLayoutSizeChangeOnKeypress = useCallback(function (step) {
178
+ if (!parentRef) {
179
+ return;
180
+ }
181
+ var resizerItem = parentRef.closest('.resizer-item');
182
+ if (!(resizerItem instanceof HTMLElement)) {
183
+ return;
184
+ }
185
+ var newWidth = resizerItem.offsetWidth + step;
186
+ if (maxWidth && newWidth > maxWidth || minWidth && newWidth < minWidth) {
187
+ return;
188
+ }
189
+ handleResizeStop({
190
+ width: resizerItem.offsetWidth,
191
+ x: 0,
192
+ y: 0,
193
+ height: 0
194
+ }, {
195
+ width: step,
196
+ height: 0
197
+ });
198
+ }, [handleResizeStop, maxWidth, minWidth, parentRef]);
199
+ var resizeHandleKeyDownHandler = useCallback(function (event) {
200
+ var isBracketKey = event.code === 'BracketRight' || event.code === 'BracketLeft';
201
+ var metaKey = browser.mac ? event.metaKey : event.ctrlKey;
202
+ if (event.altKey || metaKey || event.shiftKey) {
203
+ areResizeMetaKeysPressed.current = true;
204
+ }
205
+ if (event.altKey && metaKey) {
206
+ if (isBracketKey) {
207
+ event.preventDefault();
208
+ handleLayoutSizeChangeOnKeypress(event.code === 'BracketRight' ? RESIZE_STEP_VALUE : -RESIZE_STEP_VALUE);
209
+ }
210
+ } else if (!areResizeMetaKeysPressed.current) {
211
+ handleEscape();
212
+ }
213
+ }, [handleEscape, handleLayoutSizeChangeOnKeypress]);
214
+ var resizeHandleKeyUpHandler = useCallback(function (event) {
215
+ if (event.altKey || event.metaKey) {
216
+ areResizeMetaKeysPressed.current = false;
217
+ }
218
+ return;
219
+ }, [areResizeMetaKeysPressed]);
220
+ var resizerGlobalKeyDownHandler = useCallback(function (event) {
221
+ if (!resizerRef.current) {
222
+ return;
223
+ }
224
+ var resizeHandleThumbEl = resizerRef.current.getResizerThumbEl();
225
+ var metaKey = browser.mac ? event.metaKey : event.ctrlKey;
226
+ var isTargetResizeHandle = event.target instanceof HTMLElement && event.target.classList.contains('resizer-handle-thumb');
227
+ if (event.altKey && event.shiftKey && metaKey && event.code === 'KeyR' || isTargetResizeHandle && (event.altKey || metaKey || event.shiftKey)) {
228
+ event.preventDefault();
229
+ if (!resizeHandleThumbEl) {
230
+ return;
231
+ }
232
+ resizeHandleThumbEl.focus();
233
+ resizeHandleThumbEl.scrollIntoView({
234
+ behavior: 'smooth',
235
+ block: 'center',
236
+ inline: 'nearest'
237
+ });
238
+ }
239
+ }, [resizerRef]);
240
+ useLayoutEffect(function () {
241
+ if (!resizerRef.current || !editorView) {
242
+ return;
243
+ }
244
+ var resizeHandleThumbEl = resizerRef.current.getResizerThumbEl();
245
+ if (!resizeHandleThumbEl) {
246
+ return;
247
+ }
248
+ if (fg('platform_editor_advanced_layouts_a11y')) {
249
+ var editorViewDom = editorView.dom;
250
+ var unbindEditorViewDom = bind(editorViewDom, {
251
+ type: 'keydown',
252
+ listener: resizerGlobalKeyDownHandler
253
+ });
254
+ var unbindResizeHandle = bindAll(resizeHandleThumbEl, [{
255
+ type: 'keydown',
256
+ listener: resizeHandleKeyDownHandler
257
+ }, {
258
+ type: 'keyup',
259
+ listener: resizeHandleKeyUpHandler
260
+ }]);
261
+ return function () {
262
+ unbindEditorViewDom();
263
+ unbindResizeHandle();
264
+ };
265
+ }
266
+ }, [editorView, resizerGlobalKeyDownHandler, resizeHandleKeyDownHandler, resizeHandleKeyUpHandler]);
169
267
  useEffect(function () {
170
268
  // clean up gap cursor if node was unmounting when resizing (e.g. during collab)
171
269
  return function () {
@@ -181,6 +279,7 @@ var BreakoutResizer = function BreakoutResizer(_ref) {
181
279
  });
182
280
  }
183
281
  return /*#__PURE__*/React.createElement(Resizer, {
282
+ ref: resizerRef,
184
283
  enable: {
185
284
  left: true,
186
285
  right: true
@@ -20,7 +20,7 @@ import withAnalyticsContext from '@atlaskit/analytics-next/withAnalyticsContext'
20
20
  import withAnalyticsEvents from '@atlaskit/analytics-next/withAnalyticsEvents';
21
21
  import Layer from '../Layer';
22
22
  var packageName = "@atlaskit/editor-common";
23
- var packageVersion = "96.8.0";
23
+ var packageVersion = "96.8.1";
24
24
  var halfFocusRing = 1;
25
25
  var dropOffset = '0, 8';
26
26
  var DropList = /*#__PURE__*/function (_Component) {
@@ -74,4 +74,9 @@ export declare const toolbarMessages: {
74
74
  defaultMessage: string;
75
75
  description: string;
76
76
  };
77
+ resizeLayout: {
78
+ id: string;
79
+ defaultMessage: string;
80
+ description: string;
81
+ };
77
82
  };
@@ -74,4 +74,9 @@ export declare const toolbarMessages: {
74
74
  defaultMessage: string;
75
75
  description: string;
76
76
  };
77
+ resizeLayout: {
78
+ id: string;
79
+ defaultMessage: string;
80
+ description: string;
81
+ };
77
82
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-common",
3
- "version": "96.8.0",
3
+ "version": "96.8.1",
4
4
  "description": "A package that contains common classes and components for editor and renderer",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -140,7 +140,7 @@
140
140
  "@atlaskit/media-file-preview": "^0.9.0",
141
141
  "@atlaskit/media-picker": "^67.0.0",
142
142
  "@atlaskit/media-ui": "^27.1.0",
143
- "@atlaskit/media-viewer": "49.5.0",
143
+ "@atlaskit/media-viewer": "49.5.1",
144
144
  "@atlaskit/mention": "^23.4.0",
145
145
  "@atlaskit/menu": "^2.13.0",
146
146
  "@atlaskit/onboarding": "^12.2.0",
@@ -163,6 +163,7 @@
163
163
  "@sentry/browser": "^6.18.2",
164
164
  "@sentry/integrations": "^6.18.2",
165
165
  "@sentry/types": "^6.18.2",
166
+ "bind-event-listener": "^3.0.0",
166
167
  "chromatism": "^2.6.0",
167
168
  "classnames": "^2.2.5",
168
169
  "clipboard-polyfill": "4.0.1",
@@ -304,6 +305,9 @@
304
305
  "platform_editor_selection_toolbar_scroll_fix": {
305
306
  "type": "boolean"
306
307
  },
308
+ "platform_editor_advanced_layouts_a11y": {
309
+ "type": "boolean"
310
+ },
307
311
  "platform_editor_legacy_content_macro": {
308
312
  "type": "boolean"
309
313
  },