@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 +9 -0
- package/dist/cjs/messages/layout.js +5 -0
- package/dist/cjs/monitoring/error.js +1 -1
- package/dist/cjs/resizer/BreakoutResizer.js +99 -0
- package/dist/cjs/ui/DropList/index.js +1 -1
- package/dist/es2019/messages/layout.js +5 -0
- package/dist/es2019/monitoring/error.js +1 -1
- package/dist/es2019/resizer/BreakoutResizer.js +100 -1
- package/dist/es2019/ui/DropList/index.js +1 -1
- package/dist/esm/messages/layout.js +5 -0
- package/dist/esm/monitoring/error.js +1 -1
- package/dist/esm/resizer/BreakoutResizer.js +100 -1
- package/dist/esm/ui/DropList/index.js +1 -1
- package/dist/types/messages/layout.d.ts +5 -0
- package/dist/types-ts4.5/messages/layout.d.ts +5 -0
- package/package.json +6 -2
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
23
|
+
var packageVersion = "96.8.1";
|
|
24
24
|
var halfFocusRing = 1;
|
|
25
25
|
var dropOffset = '0, 8';
|
|
26
26
|
var DropList = /*#__PURE__*/function (_Component) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/editor-common",
|
|
3
|
-
"version": "96.8.
|
|
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.
|
|
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
|
},
|