@atlaskit/editor-common 78.2.1 → 78.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/cjs/element-browser/components/ElementList/ElementList.js +2 -1
  3. package/dist/cjs/element-browser/components/ElementSearch.js +28 -7
  4. package/dist/cjs/element-browser/components/StatelessElementBrowser.js +4 -2
  5. package/dist/cjs/element-browser/messages.js +3 -3
  6. package/dist/cjs/extensibility/MultiBodiedExtension/action-api.js +6 -5
  7. package/dist/cjs/extensibility/MultiBodiedExtension/index.js +3 -2
  8. package/dist/cjs/extensibility/MultiBodiedExtension/styles.js +3 -9
  9. package/dist/cjs/messages/list.js +5 -0
  10. package/dist/cjs/messages/toolbar.js +5 -0
  11. package/dist/cjs/monitoring/error.js +1 -1
  12. package/dist/cjs/resizer/Resizer.js +7 -2
  13. package/dist/cjs/styles/shared/resizer.js +1 -1
  14. package/dist/cjs/ui/DropList/index.js +1 -1
  15. package/dist/cjs/ui/MediaSingle/styled.js +1 -1
  16. package/dist/cjs/ui/MultiBodiedExtension/index.js +21 -0
  17. package/dist/cjs/ui/index.js +7 -0
  18. package/dist/es2019/element-browser/components/ElementList/ElementList.js +2 -1
  19. package/dist/es2019/element-browser/components/ElementSearch.js +25 -8
  20. package/dist/es2019/element-browser/components/StatelessElementBrowser.js +4 -2
  21. package/dist/es2019/element-browser/messages.js +3 -3
  22. package/dist/es2019/extensibility/MultiBodiedExtension/action-api.js +6 -5
  23. package/dist/es2019/extensibility/MultiBodiedExtension/index.js +5 -4
  24. package/dist/es2019/extensibility/MultiBodiedExtension/styles.js +2 -64
  25. package/dist/es2019/messages/list.js +5 -0
  26. package/dist/es2019/messages/toolbar.js +5 -0
  27. package/dist/es2019/monitoring/error.js +1 -1
  28. package/dist/es2019/resizer/Resizer.js +5 -1
  29. package/dist/es2019/styles/shared/resizer.js +5 -2
  30. package/dist/es2019/ui/DropList/index.js +1 -1
  31. package/dist/es2019/ui/MediaSingle/styled.js +1 -0
  32. package/dist/es2019/ui/MultiBodiedExtension/index.js +87 -0
  33. package/dist/es2019/ui/index.js +2 -1
  34. package/dist/esm/element-browser/components/ElementList/ElementList.js +2 -1
  35. package/dist/esm/element-browser/components/ElementSearch.js +29 -8
  36. package/dist/esm/element-browser/components/StatelessElementBrowser.js +4 -2
  37. package/dist/esm/element-browser/messages.js +3 -3
  38. package/dist/esm/extensibility/MultiBodiedExtension/action-api.js +6 -5
  39. package/dist/esm/extensibility/MultiBodiedExtension/index.js +4 -3
  40. package/dist/esm/extensibility/MultiBodiedExtension/styles.js +2 -8
  41. package/dist/esm/messages/list.js +5 -0
  42. package/dist/esm/messages/toolbar.js +5 -0
  43. package/dist/esm/monitoring/error.js +1 -1
  44. package/dist/esm/resizer/Resizer.js +7 -2
  45. package/dist/esm/styles/shared/resizer.js +1 -1
  46. package/dist/esm/ui/DropList/index.js +1 -1
  47. package/dist/esm/ui/MediaSingle/styled.js +1 -1
  48. package/dist/esm/ui/MultiBodiedExtension/index.js +15 -0
  49. package/dist/esm/ui/index.js +2 -1
  50. package/dist/types/element-browser/components/ElementSearch.d.ts +1 -0
  51. package/dist/types/extensibility/MultiBodiedExtension/styles.d.ts +0 -3
  52. package/dist/types/messages/list.d.ts +5 -0
  53. package/dist/types/messages/toolbar.d.ts +5 -0
  54. package/dist/types/resizer/Resizer.d.ts +4 -0
  55. package/dist/types/ui/MultiBodiedExtension/index.d.ts +6 -0
  56. package/dist/types/ui/index.d.ts +1 -0
  57. package/dist/types-ts4.5/element-browser/components/ElementSearch.d.ts +1 -0
  58. package/dist/types-ts4.5/extensibility/MultiBodiedExtension/styles.d.ts +0 -3
  59. package/dist/types-ts4.5/messages/list.d.ts +5 -0
  60. package/dist/types-ts4.5/messages/toolbar.d.ts +5 -0
  61. package/dist/types-ts4.5/resizer/Resizer.d.ts +4 -0
  62. package/dist/types-ts4.5/ui/MultiBodiedExtension/index.d.ts +6 -0
  63. package/dist/types-ts4.5/ui/index.d.ts +1 -0
  64. package/package.json +5 -4
@@ -7,10 +7,11 @@ import { css, jsx } from '@emotion/react';
7
7
  import classnames from 'classnames';
8
8
  import EditorFileIcon from '@atlaskit/icon/glyph/editor/file';
9
9
  import { useSharedPluginState } from '../../hooks';
10
+ import { sharedMultiBodiedExtensionStyles } from '../../ui/MultiBodiedExtension';
10
11
  import { calculateBreakoutStyles, getExtensionLozengeData } from '../../utils';
11
12
  import { WithPluginState } from '../../with-plugin-state';
12
13
  import { useMultiBodiedExtensionActions } from './action-api';
13
- import { extensionFrameContentCSS, mbeExtensionContainerCSS, mbeExtensionWrapperCSS, mbeNavigationCSS } from './styles';
14
+ import { mbeExtensionWrapperCSS } from './styles';
14
15
  // Similar to the one in platform/packages/editor/editor-common/src/extensibility/Extension/Lozenge.tsx
15
16
  const getWrapperTitleContent = (imageData, title) => {
16
17
  if (imageData) {
@@ -79,10 +80,10 @@ const MultiBodiedExtensionWithWidth = ({
79
80
  return handleContentDOMRef(node);
80
81
  }, [handleContentDOMRef]);
81
82
  const containerCssExtended = css`
82
- ${mbeExtensionContainerCSS};
83
+ ${sharedMultiBodiedExtensionStyles.mbeExtensionContainer};
83
84
  .multiBodiedExtension-content-dom-wrapper
84
85
  > [data-extension-frame='true']:nth-of-type(${activeChildIndex + 1}) {
85
- ${extensionFrameContentCSS}
86
+ ${sharedMultiBodiedExtensionStyles.extensionFrameContent}
86
87
  }
87
88
  `;
88
89
  const shouldBreakout =
@@ -114,7 +115,7 @@ const MultiBodiedExtensionWithWidth = ({
114
115
  "data-active-child-index": activeChildIndex
115
116
  }, jsx("nav", {
116
117
  className: "multiBodiedExtension-navigation",
117
- css: mbeNavigationCSS,
118
+ css: sharedMultiBodiedExtensionStyles.mbeNavigation,
118
119
  "data-testid": "multiBodiedExtension-navigation"
119
120
  }, extensionHandlerResult), jsx("article", {
120
121
  className: "multiBodiedExtension--frames",
@@ -1,11 +1,12 @@
1
1
  import { css } from '@emotion/react';
2
- import { N30, N40 } from '@atlaskit/theme/colors';
3
2
  import { wrapperDefault } from '../Extension/styles';
4
3
 
5
4
  // Wrapper the extension title and extensionContainer
6
5
  export const mbeExtensionWrapperCSS = css`
7
6
  ${wrapperDefault};
8
7
  cursor: pointer;
8
+ margin-top: ${"var(--ds-space-250, 24px)"};
9
+ margin-bottom: ${"var(--ds-space-200, 16px)"};
9
10
  .extension-title {
10
11
  display: flex;
11
12
  align-items: center;
@@ -15,67 +16,4 @@ export const mbeExtensionWrapperCSS = css`
15
16
  margin-right: ${"var(--ds-space-100, 8px)"};
16
17
  padding-top: ${"var(--ds-space-100, 8px)"} !important;
17
18
  }
18
- `;
19
-
20
- // Wraps the navigation bar and extensionFrames
21
- export const mbeExtensionContainerCSS = css`
22
- background: transpaent !important;
23
- padding: {
24
- bottom: ${"var(--ds-space-100, 8px)"} !important;
25
- left: ${"var(--ds-space-100, 8px)"} !important;
26
- right: ${"var(--ds-space-100, 8px)"} !important;
27
- }
28
- padding-bottom: ${"var(--ds-space-100, 8px)"};
29
- position: relative;
30
- vertical-align: middle;
31
- cursor: pointer;
32
-
33
- .multiBodiedExtension-content-dom-wrapper > [data-extension-frame='true'] {
34
- display: none;
35
- background: ${"var(--ds-surface, white)"};
36
- }
37
- `;
38
- export const mbeNavigationCSS = css`
39
- // make sure the user can't see a range selection inside the navigation
40
- // This is really important to keep the navigation working properly
41
- border-top-left-radius: ${"var(--ds-border-radius, 3px)"};
42
- border-top-right-radius: ${"var(--ds-border-radius, 3px)"};
43
-
44
- user-select: none;
45
- -webkit-user-modify: read-only;
46
- border: 1px solid ${`var(--ds-border, ${N40})`};
47
- border-bottom: none;
48
- background: ${"var(--ds-surface, white)"};
49
- margin-left: ${"var(--ds-space-100, 8px)"};
50
- margin-right: ${"var(--ds-space-100, 8px)"};
51
- `;
52
- export const extensionFrameContentCSS = css`
53
- padding: ${"var(--ds-space-100, 8px)"} !important;
54
- border: 1px solid ${`var(--ds-border, ${N30})`};
55
- display: block;
56
- min-height: 100px;
57
- background: ${"var(--ds-surface, white)"};
58
- border-bottom-left-radius: ${"var(--ds-border-radius, 3px)"};
59
- border-bottom-right-radius: ${"var(--ds-border-radius, 3px)"};
60
-
61
- margin-left: ${"var(--ds-space-100, 8px)"};
62
- margin-right: ${"var(--ds-space-100, 8px)"};
63
- cursor: initial;
64
-
65
- .pm-table-container {
66
- margin-left: ${"var(--ds-space-100, 8px)"} !important;
67
- padding-right: ${"var(--ds-space-200, 16px)"} !important;
68
- }
69
- .pm-table-with-controls {
70
- margin-left: ${"var(--ds-space-150, 12px)"} !important;
71
- padding-right: ${"var(--ds-space-150, 12px)"} !important;
72
- }
73
- .bodiedExtensionView-content-wrap {
74
- margin-top: ${"var(--ds-space-150, 12px)"} !important;
75
- }
76
- // Extension wrap have an additional margin on all four borders, so we need to adjust the spacing
77
- // compared to the bodiedExtensionView-content-wrap
78
- .extensionView-content-wrap {
79
- margin-top: ${"var(--ds-space-100, 8px)"} !important;
80
- }
81
19
  `;
@@ -25,5 +25,10 @@ export const messages = defineMessages({
25
25
  id: 'fabric.editor.lists',
26
26
  defaultMessage: 'Lists',
27
27
  description: 'Menu shows ordered/bullet list and unordered/numbered lists'
28
+ },
29
+ listsFormat: {
30
+ id: 'fabric.editor.listsFormat',
31
+ defaultMessage: 'List formating',
32
+ description: 'Aria label for the wrapper of list buttons'
28
33
  }
29
34
  });
@@ -50,6 +50,11 @@ export const toolbarMessages = defineMessages({
50
50
  defaultMessage: 'More formatting',
51
51
  description: 'Clicking this will show a menu with additional formatting options'
52
52
  },
53
+ textFormatting: {
54
+ id: 'fabric.editor.textFormatting',
55
+ defaultMessage: 'Text formatting',
56
+ description: 'Aria label for the wrapper of text format buttons'
57
+ },
53
58
  bold: {
54
59
  id: 'fabric.editor.bold',
55
60
  defaultMessage: 'Bold',
@@ -1,6 +1,6 @@
1
1
  const SENTRY_DSN = 'https://0b10c8e02fb44d8796c047b102c9bee8@o55978.ingest.sentry.io/4505129224110080';
2
2
  const packageName = 'editor-common'; // Sentry doesn't accept '/' in its releases https://docs.sentry.io/platforms/javascript/configuration/releases/
3
- const packageVersion = "78.2.1";
3
+ const packageVersion = "78.3.1";
4
4
  const sanitiseSentryEvents = (data, _hint) => {
5
5
  // Remove URL as it has UGC
6
6
  // TODO: Sanitise the URL instead of just removing it
@@ -35,6 +35,7 @@ const ResizerNext = (props, ref) => {
35
35
  isHandleVisible = false,
36
36
  handleHighlight = 'none',
37
37
  handleTooltipContent,
38
+ needExtendedResizeZone = true,
38
39
  ...otherProps
39
40
  } = props;
40
41
  const onResizeStart = useCallback(event => {
@@ -94,6 +95,9 @@ const ResizerNext = (props, ref) => {
94
95
  'display-handle': isHandleVisible,
95
96
  [resizerDangerClassName]: appearance === 'danger'
96
97
  });
98
+ const resizerZoneClassName = classnames(resizerHoverZoneClassName, {
99
+ 'is-extended': needExtendedResizeZone
100
+ });
97
101
  const handleComponent = useMemo(() => {
98
102
  return SUPPORTED_HANDLES.reduce((result, position) => {
99
103
  const thumb = /*#__PURE__*/React.createElement("button", {
@@ -164,7 +168,7 @@ const ResizerNext = (props, ref) => {
164
168
  snap: snap,
165
169
  handleComponent: handleComponent
166
170
  }, otherProps), /*#__PURE__*/React.createElement("span", {
167
- className: resizerHoverZoneClassName
171
+ className: resizerZoneClassName
168
172
  }, children));
169
173
  };
170
174
  export default /*#__PURE__*/forwardRef(ResizerNext);
@@ -187,11 +187,14 @@ export const resizerStyles = css`
187
187
  }
188
188
 
189
189
  .${resizerHoverZoneClassName} {
190
- padding: 0 ${"var(--ds-space-150, 12px)"};
191
190
  position: relative;
192
191
  display: inline-block;
193
192
  width: 100%;
194
- left: ${"var(--ds-space-negative-150, -12px)"};
193
+
194
+ &.is-extended {
195
+ padding: 0 ${"var(--ds-space-150, 12px)"};
196
+ left: ${"var(--ds-space-negative-150, -12px)"};
197
+ }
195
198
  }
196
199
 
197
200
  // This below style is here to make sure the image width is correct when nested in a table
@@ -7,7 +7,7 @@ import { createAndFireEvent, withAnalyticsContext, withAnalyticsEvents } from '@
7
7
  import { N0, N50A, N60A, N900 } from '@atlaskit/theme/colors';
8
8
  import Layer from '../Layer';
9
9
  const packageName = "@atlaskit/editor-common";
10
- const packageVersion = "78.2.1";
10
+ const packageVersion = "78.3.1";
11
11
  const halfFocusRing = 1;
12
12
  const dropOffset = '0, 8';
13
13
  class DropList extends Component {
@@ -110,6 +110,7 @@ export const MediaSingleDimensionHelper = ({
110
110
  tr &,
111
111
  [data-layout-column] &,
112
112
  [data-node-type='expand'] &,
113
+ [data-panel-type] &,
113
114
  li & {
114
115
  max-width: 100%;
115
116
  }
@@ -0,0 +1,87 @@
1
+ /** @jsx jsx */
2
+
3
+ import { css } from '@emotion/react';
4
+ import { N30, N40 } from '@atlaskit/theme/colors';
5
+ // Wraps the navigation bar and extensionFrames
6
+ const mbeExtensionContainer = css`
7
+ background: transpaent !important;
8
+ padding: {
9
+ bottom: ${"var(--ds-space-100, 8px)"} !important;
10
+ left: ${"var(--ds-space-100, 8px)"} !important;
11
+ right: ${"var(--ds-space-100, 8px)"} !important;
12
+ }
13
+ padding-bottom: ${"var(--ds-space-100, 8px)"};
14
+ position: relative;
15
+ vertical-align: middle;
16
+ cursor: pointer;
17
+
18
+ .multiBodiedExtension-handler-result {
19
+ margin-left: ${"var(--ds-space-100, 8px)"};
20
+ }
21
+
22
+ .multiBodiedExtension-content-dom-wrapper > [data-extension-frame='true'],
23
+ .multiBodiedExtension--frames > [data-extension-frame='true'] {
24
+ display: none;
25
+ background: ${"var(--ds-surface, white)"};
26
+ }
27
+
28
+ .multiBodiedExtension-content-dom-wrapper,
29
+ .multiBodiedExtension--frames {
30
+ [data-extension-frame='true'] > :not(style):first-child,
31
+ [data-extension-frame='true'] > style:first-child + * {
32
+ margin-top: 0;
33
+ }
34
+ }
35
+ `;
36
+ const mbeNavigation = css`
37
+ // make sure the user can't see a range selection inside the navigation
38
+ // This is really important to keep the navigation working properly
39
+ border-top-left-radius: ${"var(--ds-border-radius, 3px)"};
40
+ border-top-right-radius: ${"var(--ds-border-radius, 3px)"};
41
+
42
+ user-select: none;
43
+ -webkit-user-modify: read-only;
44
+ border: 1px solid ${`var(--ds-border, ${N40})`};
45
+ border-bottom: none !important;
46
+ background: ${"var(--ds-surface, white)"};
47
+ margin-left: ${"var(--ds-space-100, 8px)"};
48
+ margin-right: ${"var(--ds-space-100, 8px)"};
49
+ `;
50
+ const extensionFrameContent = css`
51
+ padding: ${"var(--ds-space-100, 8px)"} !important;
52
+ border: 1px solid ${`var(--ds-border, ${N30})`};
53
+ display: block;
54
+ min-height: 100px;
55
+ background: ${"var(--ds-surface, white)"};
56
+ border-bottom-left-radius: ${"var(--ds-border-radius, 3px)"};
57
+ border-bottom-right-radius: ${"var(--ds-border-radius, 3px)"};
58
+
59
+ margin-left: ${"var(--ds-space-100, 8px)"};
60
+ margin-right: ${"var(--ds-space-100, 8px)"};
61
+ cursor: initial;
62
+
63
+ .pm-table-with-controls {
64
+ margin-left: ${"var(--ds-space-150, 12px)"} !important;
65
+ padding-right: ${"var(--ds-space-150, 12px)"} !important;
66
+ }
67
+ .bodiedExtensionView-content-wrap {
68
+ margin-top: ${"var(--ds-space-150, 12px)"} !important;
69
+ }
70
+ // Extension wrap have an additional margin on all four borders, so we need to adjust the spacing
71
+ // compared to the bodiedExtensionView-content-wrap
72
+ .extensionView-content-wrap {
73
+ margin-top: ${"var(--ds-space-100, 8px)"} !important;
74
+ }
75
+ .decisionItemView-content-wrap {
76
+ margin-top: 0px !important;
77
+ }
78
+
79
+ .decisionItemView-content-wrap > [data-decision-wrapper] {
80
+ margin-top: 0px !important;
81
+ }
82
+ `;
83
+ export const sharedMultiBodiedExtensionStyles = {
84
+ mbeExtensionContainer,
85
+ mbeNavigation,
86
+ extensionFrameContent
87
+ };
@@ -29,4 +29,5 @@ export { panelTextInput } from './PanelTextInput/styles';
29
29
  export { default as PanelTextInput } from './PanelTextInput';
30
30
  export { default as Announcer } from './Announcer/announcer';
31
31
  export { EDIT_AREA_ID } from './Toolbar';
32
- export { default as DropList } from './DropList';
32
+ export { default as DropList } from './DropList';
33
+ export { sharedMultiBodiedExtensionStyles } from './MultiBodiedExtension';
@@ -176,7 +176,8 @@ export function ElementItem(_ref4) {
176
176
  isSelected: selected,
177
177
  "aria-describedby": title,
178
178
  ref: ref,
179
- testId: "element-item-".concat(index)
179
+ testId: "element-item-".concat(index),
180
+ id: "searched-item-".concat(index)
180
181
  }, jsx(ItemContent, {
181
182
  style: inlineMode ? null : itemStyleOverrides,
182
183
  tabIndex: 0,
@@ -1,7 +1,8 @@
1
1
  import _taggedTemplateLiteral from "@babel/runtime/helpers/taggedTemplateLiteral";
2
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
3
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
3
4
  /** @jsx jsx */
4
- import React, { memo, useLayoutEffect, useRef } from 'react';
5
+ import React, { memo, useLayoutEffect, useRef, useState } from 'react';
5
6
  import { css, jsx } from '@emotion/react';
6
7
  import { injectIntl } from 'react-intl-next';
7
8
  import { withAnalyticsContext } from '@atlaskit/analytics-next';
@@ -22,9 +23,14 @@ function ElementSearch(_ref) {
22
23
  onClick = _ref.onClick,
23
24
  onKeyDown = _ref.onKeyDown,
24
25
  searchTerm = _ref.searchTerm,
25
- items = _ref.items;
26
+ items = _ref.items,
27
+ selectedItemIndex = _ref.selectedItemIndex;
26
28
  var ref = useFocus(focus);
27
29
  var assistiveTextRef = useRef(null);
30
+ var _useState = useState(false),
31
+ _useState2 = _slicedToArray(_useState, 2),
32
+ inputFocused = _useState2[0],
33
+ setInputFocused = _useState2[1];
28
34
  useLayoutEffect(function () {
29
35
  if (assistiveTextRef) {
30
36
  var assistiveDiv = assistiveTextRef.current;
@@ -39,21 +45,33 @@ function ElementSearch(_ref) {
39
45
  var value = _ref2.target.value;
40
46
  onSearch(value);
41
47
  };
42
- var onFocus = function onFocus(e) {};
43
- var onBlur = function onBlur(e) {};
48
+ var onFocus = function onFocus(e) {
49
+ setInputFocused(true);
50
+ };
51
+ var onBlur = function onBlur(e) {
52
+ setInputFocused(false);
53
+ };
44
54
  var getFormattedMessage = function getFormattedMessage(itemsCount) {
45
55
  if (searchTerm === '') {
46
- return "".concat(itemsCount, " ").concat(formatMessage(commonMessages.assistiveTextSuggestionsDefault));
56
+ return "".concat(formatMessage(commonMessages.assistiveTextSuggestionsDefault, {
57
+ count: itemsCount
58
+ }));
47
59
  }
48
60
  if (itemsCount > 1) {
49
- return "".concat(itemsCount, " ").concat(formatMessage(commonMessages.assistiveTextSuggestions));
61
+ return "".concat(formatMessage(commonMessages.assistiveTextSuggestions, {
62
+ count: itemsCount
63
+ }));
50
64
  }
51
65
  if (itemsCount === 1) {
52
- return "".concat(itemsCount, " ").concat(formatMessage(commonMessages.assistiveTextSuggestion));
66
+ return "".concat(formatMessage(commonMessages.assistiveTextSuggestion, {
67
+ count: itemsCount
68
+ }));
53
69
  }
54
70
  return formatMessage(commonMessages.assistiveTextSuggestionNothing);
55
71
  };
56
72
  var assistiveMessage = getFormattedMessage(items === null || items === void 0 ? void 0 : items.length);
73
+ var isInputNotFocusedAndItemSelected = !inputFocused && selectedItemIndex !== undefined;
74
+ var ariaActiveDescendant = isInputNotFocusedAndItemSelected ? "searched-item-".concat(selectedItemIndex) : undefined;
57
75
  return jsx("div", {
58
76
  css: [wrapper, mode === Modes.inline && wrapperInline]
59
77
  }, jsx(Textfield, {
@@ -65,7 +83,8 @@ function ElementSearch(_ref) {
65
83
  onBlur: onBlur,
66
84
  elemBeforeInput: jsx("div", {
67
85
  css: elementBeforeInput,
68
- "data-testid": "element_search__element_before_input"
86
+ "data-testid": "element_search__element_before_input",
87
+ "aria-hidden": "true"
69
88
  }, jsx(SearchIcon, {
70
89
  size: "medium",
71
90
  label: "Advanced search",
@@ -81,6 +100,8 @@ function ElementSearch(_ref) {
81
100
  "aria-label": "search",
82
101
  "aria-labelledby": "search-assistive",
83
102
  className: "js-search-input",
103
+ role: "combobox",
104
+ "aria-activedescendant": ariaActiveDescendant,
84
105
  value: searchTerm
85
106
  }), jsx("span", {
86
107
  id: "search-assistive",
@@ -159,7 +159,8 @@ function MobileBrowser(_ref) {
159
159
  focus: focusOnSearch,
160
160
  onClick: setFocusOnSearch,
161
161
  searchTerm: searchTerm,
162
- items: items
162
+ items: items,
163
+ selectedItemIndex: selectedItemIndex
163
164
  }), showCategories && jsx("nav", {
164
165
  css: mobileCategoryListWrapper,
165
166
  tabIndex: -1
@@ -239,7 +240,8 @@ function DesktopBrowser(_ref2) {
239
240
  focus: focusOnSearch,
240
241
  onClick: setFocusOnSearch,
241
242
  searchTerm: searchTerm,
242
- items: items
243
+ items: items,
244
+ selectedItemIndex: selectedItemIndex
243
245
  })), jsx(ElementList, {
244
246
  items: items,
245
247
  mode: mode,
@@ -12,17 +12,17 @@ export default defineMessages({
12
12
  },
13
13
  assistiveTextSuggestionsDefault: {
14
14
  id: 'fabric.editor.elementbrowser.searchbar.assistive.text.suggestions',
15
- defaultMessage: 'suggestions available by default.',
15
+ defaultMessage: '{count} suggestions available by default.',
16
16
  description: 'Assistive text to describe the default list of suggestions'
17
17
  },
18
18
  assistiveTextSuggestions: {
19
19
  id: 'fabric.editor.elementbrowser.searchbar.assistive.text.suggestions',
20
- defaultMessage: 'suggestions available for typed text.',
20
+ defaultMessage: '{count} suggestions available for typed text.',
21
21
  description: 'Assistive text to describe the list of suggestions filtered by typed user input, plural of fabric.editor.elementbrowser.searchbar.assistive.text.suggestion'
22
22
  },
23
23
  assistiveTextSuggestion: {
24
24
  id: 'fabric.editor.elementbrowser.searchbar.assistive.text.suggestion',
25
- defaultMessage: 'suggestion available for typed text.',
25
+ defaultMessage: '{count} suggestion available for typed text.',
26
26
  description: 'Assistive text to describe the that there is one suggestion for the users typed input'
27
27
  },
28
28
  assistiveTextSuggestionNothing: {
@@ -14,6 +14,7 @@ export var useMultiBodiedExtensionActions = function useMultiBodiedExtensionActi
14
14
  var actions = React.useMemo(function () {
15
15
  return {
16
16
  changeActive: function changeActive(index) {
17
+ var _possiblyMbeNode$type;
17
18
  var state = editorView.state,
18
19
  dispatch = editorView.dispatch;
19
20
  var updateActiveChildResult = updateActiveChild(index);
@@ -21,12 +22,12 @@ export var useMultiBodiedExtensionActions = function useMultiBodiedExtensionActi
21
22
  sendMBEAnalyticsEvent(ACTION.CHANGE_ACTIVE, node, eventDispatcher);
22
23
  }
23
24
  // On selection of a childFrame, we need to change the focus/selection to the end of the target child Frame
24
- var mbeNode = state.doc.nodeAt(state.tr.selection.from);
25
+ var possiblyMbeNode = state.doc.nodeAt(state.tr.selection.from);
25
26
  var desiredPos = state.tr.selection.from || 0;
26
- if (mbeNode && mbeNode !== null && mbeNode !== void 0 && mbeNode.content) {
27
- for (var i = 0; i <= index && i < (mbeNode === null || mbeNode === void 0 || (_mbeNode$content = mbeNode.content) === null || _mbeNode$content === void 0 ? void 0 : _mbeNode$content.childCount); i++) {
28
- var _mbeNode$content, _mbeNode$content2;
29
- desiredPos += (mbeNode === null || mbeNode === void 0 || (_mbeNode$content2 = mbeNode.content) === null || _mbeNode$content2 === void 0 || (_mbeNode$content2 = _mbeNode$content2.child(i)) === null || _mbeNode$content2 === void 0 ? void 0 : _mbeNode$content2.nodeSize) || 0;
27
+ if (possiblyMbeNode && (possiblyMbeNode === null || possiblyMbeNode === void 0 || (_possiblyMbeNode$type = possiblyMbeNode.type) === null || _possiblyMbeNode$type === void 0 ? void 0 : _possiblyMbeNode$type.name) === 'multiBodiedExtension' && possiblyMbeNode !== null && possiblyMbeNode !== void 0 && possiblyMbeNode.content) {
28
+ for (var i = 0; i <= index && i < (possiblyMbeNode === null || possiblyMbeNode === void 0 || (_possiblyMbeNode$cont = possiblyMbeNode.content) === null || _possiblyMbeNode$cont === void 0 ? void 0 : _possiblyMbeNode$cont.childCount); i++) {
29
+ var _possiblyMbeNode$cont, _possiblyMbeNode$cont2;
30
+ desiredPos += (possiblyMbeNode === null || possiblyMbeNode === void 0 || (_possiblyMbeNode$cont2 = possiblyMbeNode.content) === null || _possiblyMbeNode$cont2 === void 0 || (_possiblyMbeNode$cont2 = _possiblyMbeNode$cont2.child(i)) === null || _possiblyMbeNode$cont2 === void 0 ? void 0 : _possiblyMbeNode$cont2.nodeSize) || 0;
30
31
  }
31
32
  /* desiredPos gives the cursor at the end of last child of the current frame, in case of paragraph nodes, this will be the end of the paragraph
32
33
  * Performing -1 brings the cursor inside the paragraph, similar to a user click, so any pasted text will be inside the last paragraph rather than a new line
@@ -13,10 +13,11 @@ import { css, jsx } from '@emotion/react';
13
13
  import classnames from 'classnames';
14
14
  import EditorFileIcon from '@atlaskit/icon/glyph/editor/file';
15
15
  import { useSharedPluginState } from '../../hooks';
16
+ import { sharedMultiBodiedExtensionStyles } from '../../ui/MultiBodiedExtension';
16
17
  import { calculateBreakoutStyles, getExtensionLozengeData } from '../../utils';
17
18
  import { WithPluginState } from '../../with-plugin-state';
18
19
  import { useMultiBodiedExtensionActions } from './action-api';
19
- import { extensionFrameContentCSS, mbeExtensionContainerCSS, mbeExtensionWrapperCSS, mbeNavigationCSS } from './styles';
20
+ import { mbeExtensionWrapperCSS } from './styles';
20
21
  // Similar to the one in platform/packages/editor/editor-common/src/extensibility/Extension/Lozenge.tsx
21
22
  var getWrapperTitleContent = function getWrapperTitleContent(imageData, title) {
22
23
  if (imageData) {
@@ -80,7 +81,7 @@ var MultiBodiedExtensionWithWidth = function MultiBodiedExtensionWithWidth(_ref)
80
81
  var articleRef = React.useCallback(function (node) {
81
82
  return handleContentDOMRef(node);
82
83
  }, [handleContentDOMRef]);
83
- var containerCssExtended = css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n ", ";\n .multiBodiedExtension-content-dom-wrapper\n > [data-extension-frame='true']:nth-of-type(", ") {\n ", "\n }\n "])), mbeExtensionContainerCSS, activeChildIndex + 1, extensionFrameContentCSS);
84
+ var containerCssExtended = css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n ", ";\n .multiBodiedExtension-content-dom-wrapper\n > [data-extension-frame='true']:nth-of-type(", ") {\n ", "\n }\n "])), sharedMultiBodiedExtensionStyles.mbeExtensionContainer, activeChildIndex + 1, sharedMultiBodiedExtensionStyles.extensionFrameContent);
84
85
  var shouldBreakout =
85
86
  // Extension should breakout when the layout is set to 'full-width' or 'wide'.
86
87
  ['full-width', 'wide'].includes(node.attrs.layout) &&
@@ -109,7 +110,7 @@ var MultiBodiedExtensionWithWidth = function MultiBodiedExtensionWithWidth(_ref)
109
110
  "data-active-child-index": activeChildIndex
110
111
  }, jsx("nav", {
111
112
  className: "multiBodiedExtension-navigation",
112
- css: mbeNavigationCSS,
113
+ css: sharedMultiBodiedExtensionStyles.mbeNavigation,
113
114
  "data-testid": "multiBodiedExtension-navigation"
114
115
  }, extensionHandlerResult), jsx("article", {
115
116
  className: "multiBodiedExtension--frames",
@@ -1,13 +1,7 @@
1
1
  import _taggedTemplateLiteral from "@babel/runtime/helpers/taggedTemplateLiteral";
2
- var _templateObject, _templateObject2, _templateObject3, _templateObject4;
2
+ var _templateObject;
3
3
  import { css } from '@emotion/react';
4
- import { N30, N40 } from '@atlaskit/theme/colors';
5
4
  import { wrapperDefault } from '../Extension/styles';
6
5
 
7
6
  // Wrapper the extension title and extensionContainer
8
- export var mbeExtensionWrapperCSS = css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n ", ";\n cursor: pointer;\n .extension-title {\n display: flex;\n align-items: center;\n line-height: 16px !important;\n margin-bottom: ", ";\n margin-left: ", " !important;\n margin-right: ", ";\n padding-top: ", " !important;\n }\n"])), wrapperDefault, "var(--ds-space-100, 8px)", "var(--ds-space-050, 4px)", "var(--ds-space-100, 8px)", "var(--ds-space-100, 8px)");
9
-
10
- // Wraps the navigation bar and extensionFrames
11
- export var mbeExtensionContainerCSS = css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n background: transpaent !important;\n padding: {\n bottom: ", " !important;\n left: ", " !important;\n right: ", " !important;\n }\n padding-bottom: ", ";\n position: relative;\n vertical-align: middle;\n cursor: pointer;\n\n .multiBodiedExtension-content-dom-wrapper > [data-extension-frame='true'] {\n display: none;\n background: ", ";\n }\n"])), "var(--ds-space-100, 8px)", "var(--ds-space-100, 8px)", "var(--ds-space-100, 8px)", "var(--ds-space-100, 8px)", "var(--ds-surface, white)");
12
- export var mbeNavigationCSS = css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n // make sure the user can't see a range selection inside the navigation\n // This is really important to keep the navigation working properly\n border-top-left-radius: ", ";\n border-top-right-radius: ", ";\n\n user-select: none;\n -webkit-user-modify: read-only;\n border: 1px solid ", ";\n border-bottom: none;\n background: ", ";\n margin-left: ", ";\n margin-right: ", ";\n"])), "var(--ds-border-radius, 3px)", "var(--ds-border-radius, 3px)", "var(--ds-border, ".concat(N40, ")"), "var(--ds-surface, white)", "var(--ds-space-100, 8px)", "var(--ds-space-100, 8px)");
13
- export var extensionFrameContentCSS = css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n padding: ", " !important;\n border: 1px solid ", ";\n display: block;\n min-height: 100px;\n background: ", ";\n border-bottom-left-radius: ", ";\n border-bottom-right-radius: ", ";\n\n margin-left: ", ";\n margin-right: ", ";\n cursor: initial;\n\n .pm-table-container {\n margin-left: ", " !important;\n padding-right: ", " !important;\n }\n .pm-table-with-controls {\n margin-left: ", " !important;\n padding-right: ", " !important;\n }\n .bodiedExtensionView-content-wrap {\n margin-top: ", " !important;\n }\n // Extension wrap have an additional margin on all four borders, so we need to adjust the spacing\n // compared to the bodiedExtensionView-content-wrap\n .extensionView-content-wrap {\n margin-top: ", " !important;\n }\n"])), "var(--ds-space-100, 8px)", "var(--ds-border, ".concat(N30, ")"), "var(--ds-surface, white)", "var(--ds-border-radius, 3px)", "var(--ds-border-radius, 3px)", "var(--ds-space-100, 8px)", "var(--ds-space-100, 8px)", "var(--ds-space-100, 8px)", "var(--ds-space-200, 16px)", "var(--ds-space-150, 12px)", "var(--ds-space-150, 12px)", "var(--ds-space-150, 12px)", "var(--ds-space-100, 8px)");
7
+ export var mbeExtensionWrapperCSS = css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n ", ";\n cursor: pointer;\n margin-top: ", ";\n margin-bottom: ", ";\n .extension-title {\n display: flex;\n align-items: center;\n line-height: 16px !important;\n margin-bottom: ", ";\n margin-left: ", " !important;\n margin-right: ", ";\n padding-top: ", " !important;\n }\n"])), wrapperDefault, "var(--ds-space-250, 24px)", "var(--ds-space-200, 16px)", "var(--ds-space-100, 8px)", "var(--ds-space-050, 4px)", "var(--ds-space-100, 8px)", "var(--ds-space-100, 8px)");
@@ -25,5 +25,10 @@ export var messages = defineMessages({
25
25
  id: 'fabric.editor.lists',
26
26
  defaultMessage: 'Lists',
27
27
  description: 'Menu shows ordered/bullet list and unordered/numbered lists'
28
+ },
29
+ listsFormat: {
30
+ id: 'fabric.editor.listsFormat',
31
+ defaultMessage: 'List formating',
32
+ description: 'Aria label for the wrapper of list buttons'
28
33
  }
29
34
  });
@@ -50,6 +50,11 @@ export var toolbarMessages = defineMessages({
50
50
  defaultMessage: 'More formatting',
51
51
  description: 'Clicking this will show a menu with additional formatting options'
52
52
  },
53
+ textFormatting: {
54
+ id: 'fabric.editor.textFormatting',
55
+ defaultMessage: 'Text formatting',
56
+ description: 'Aria label for the wrapper of text format buttons'
57
+ },
53
58
  bold: {
54
59
  id: 'fabric.editor.bold',
55
60
  defaultMessage: 'Bold',
@@ -6,7 +6,7 @@ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbol
6
6
  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) { _defineProperty(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; }
7
7
  var SENTRY_DSN = 'https://0b10c8e02fb44d8796c047b102c9bee8@o55978.ingest.sentry.io/4505129224110080';
8
8
  var packageName = 'editor-common'; // Sentry doesn't accept '/' in its releases https://docs.sentry.io/platforms/javascript/configuration/releases/
9
- var packageVersion = "78.2.1";
9
+ var packageVersion = "78.3.1";
10
10
  var sanitiseSentryEvents = function sanitiseSentryEvents(data, _hint) {
11
11
  // Remove URL as it has UGC
12
12
  // TODO: Sanitise the URL instead of just removing it
@@ -2,7 +2,7 @@ import _extends from "@babel/runtime/helpers/extends";
2
2
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
3
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
4
4
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
5
- var _excluded = ["width", "children", "handleClassName", "className", "handleResize", "handleResizeStart", "handleResizeStop", "handleSize", "handleAlignmentMethod", "handlePositioning", "appearance", "handleStyles", "resizeRatio", "snap", "snapGap", "isHandleVisible", "handleHighlight", "handleTooltipContent"];
5
+ var _excluded = ["width", "children", "handleClassName", "className", "handleResize", "handleResizeStart", "handleResizeStop", "handleSize", "handleAlignmentMethod", "handlePositioning", "appearance", "handleStyles", "resizeRatio", "snap", "snapGap", "isHandleVisible", "handleHighlight", "handleTooltipContent", "needExtendedResizeZone"];
6
6
  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; }
7
7
  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) { _defineProperty(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; }
8
8
  import React, { forwardRef, useCallback, useImperativeHandle, useMemo, useRef, useState } from 'react';
@@ -49,6 +49,8 @@ var ResizerNext = function ResizerNext(props, ref) {
49
49
  _props$handleHighligh = props.handleHighlight,
50
50
  handleHighlight = _props$handleHighligh === void 0 ? 'none' : _props$handleHighligh,
51
51
  handleTooltipContent = props.handleTooltipContent,
52
+ _props$needExtendedRe = props.needExtendedResizeZone,
53
+ needExtendedResizeZone = _props$needExtendedRe === void 0 ? true : _props$needExtendedRe,
52
54
  otherProps = _objectWithoutProperties(props, _excluded);
53
55
  var onResizeStart = useCallback(function (event) {
54
56
  // prevent creating a drag event on Firefox
@@ -101,6 +103,9 @@ var ResizerNext = function ResizerNext(props, ref) {
101
103
  'is-resizing': isResizing,
102
104
  'display-handle': isHandleVisible
103
105
  }, resizerDangerClassName, appearance === 'danger'));
106
+ var resizerZoneClassName = classnames(resizerHoverZoneClassName, {
107
+ 'is-extended': needExtendedResizeZone
108
+ });
104
109
  var handleComponent = useMemo(function () {
105
110
  return SUPPORTED_HANDLES.reduce(function (result, position) {
106
111
  var thumb = /*#__PURE__*/React.createElement("button", {
@@ -162,7 +167,7 @@ var ResizerNext = function ResizerNext(props, ref) {
162
167
  snap: snap,
163
168
  handleComponent: handleComponent
164
169
  }, otherProps), /*#__PURE__*/React.createElement("span", {
165
- className: resizerHoverZoneClassName
170
+ className: resizerZoneClassName
166
171
  }, children));
167
172
  };
168
173
  export default /*#__PURE__*/forwardRef(ResizerNext);
@@ -19,4 +19,4 @@ export var resizerDangerClassName = "".concat(resizerHandleClassName, "-danger")
19
19
  var akEditorSelectedNodeClassName = 'ak-editor-selected-node';
20
20
  export var handleWrapperClass = 'resizer-handle-wrapper';
21
21
  export var resizerHandleZIndex = 1;
22
- export var resizerStyles = css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n .", " {\n will-change: width;\n\n &:hover,\n &.display-handle {\n & > .", " > .", " {\n visibility: visible;\n opacity: 1;\n }\n }\n\n &.is-resizing {\n & .", " {\n background: ", ";\n }\n }\n\n &.", " {\n & .", " {\n transition: none;\n background: ", ";\n }\n }\n }\n\n .", " {\n display: flex;\n visibility: hidden;\n opacity: 0;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n width: 7px;\n transition: visibility 0.2s, opacity 0.2s;\n\n /*\n NOTE: The below style is targeted at the div element added by the tooltip. We don't have any means of injecting styles\n into the tooltip\n */\n & div[role='presentation'] {\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n margin-top: ", ";\n white-space: normal;\n }\n\n /*\n Handle Positions\n */\n &.left {\n align-items: flex-start;\n }\n &.right {\n align-items: flex-end;\n }\n\n /*\n Handle Sizing\n */\n &.small {\n & .", " {\n height: 43px;\n }\n }\n &.medium {\n & .", " {\n height: 64px;\n }\n }\n &.large {\n & .", " {\n height: 96px;\n }\n }\n\n /*\n Handle Alignment\n */\n &.sticky {\n & .", " {\n position: sticky;\n top: ", ";\n bottom: ", ";\n }\n }\n\n &:hover {\n & .", " {\n background: ", ";\n }\n\n & .", " {\n visibility: visible;\n opacity: 0.5;\n }\n }\n }\n\n .", " {\n content: ' ';\n display: flex;\n width: 3px;\n margin: 0 ", ";\n height: 64px;\n transition: background-color 0.2s;\n border-radius: 6px;\n border: 0;\n padding: 0;\n z-index: 2;\n outline: none;\n min-height: 24px;\n background: ", ";\n\n &:hover {\n cursor: col-resize;\n }\n\n &:focus {\n background: ", ";\n\n &::after {\n content: '';\n position: absolute;\n top: ", ";\n right: ", ";\n bottom: ", ";\n left: ", ";\n border: 2px solid ", ";\n border-radius: inherit;\n z-index: -1;\n }\n }\n }\n\n .", " {\n visibility: hidden;\n position: absolute;\n width: 7px;\n height: calc(100% - 40px);\n border-radius: 4px;\n opacity: 0;\n transition: background-color 0.2s, visibility 0.2s, opacity 0.2s;\n\n &.none {\n background: none;\n }\n\n &.shadow {\n background: ", ";\n }\n\n &.full-height {\n background: ", ";\n height: 100%;\n min-height: 36px;\n }\n }\n\n .", " {\n & .", " {\n background: ", ";\n }\n }\n\n .", " {\n padding: 0 ", ";\n position: relative;\n display: inline-block;\n width: 100%;\n left: ", ";\n }\n\n // This below style is here to make sure the image width is correct when nested in a table\n table .", " {\n padding: unset;\n left: unset;\n }\n"])), resizerItemClassName, handleWrapperClass, resizerHandleClassName, resizerHandleThumbClassName, "var(--ds-border-focused, ".concat(B200, ")"), resizerDangerClassName, resizerHandleThumbClassName, "var(--ds-icon-danger, ".concat(akEditorDeleteIconColor, ")"), resizerHandleClassName, "var(--ds-space-negative-200, -16px)", resizerHandleThumbClassName, resizerHandleThumbClassName, resizerHandleThumbClassName, resizerHandleThumbClassName, "var(--ds-space-150, 12px)", "var(--ds-space-150, 12px)", resizerHandleThumbClassName, "var(--ds-border-focused, ".concat(B200, ")"), resizerHandleTrackClassName, resizerHandleThumbClassName, "var(--ds-space-025, 2px)", "var(--ds-border, ".concat(N60, ")"), "var(--ds-border-selected, #0C66E4)", "var(--ds-space-negative-050, -4px)", "var(--ds-space-negative-050, -4px)", "var(--ds-space-negative-050, -4px)", "var(--ds-space-negative-050, -4px)", "var(--ds-border-focused, #388BFF)", resizerHandleTrackClassName, "var(--ds-background-selected, ".concat(B50, ")"), "var(--ds-background-selected, ".concat(B50, ")"), akEditorSelectedNodeClassName, resizerHandleThumbClassName, "var(--ds-border-focused, ".concat(B200, ")"), resizerHoverZoneClassName, "var(--ds-space-150, 12px)", "var(--ds-space-negative-150, -12px)", resizerHoverZoneClassName);
22
+ export var resizerStyles = css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n .", " {\n will-change: width;\n\n &:hover,\n &.display-handle {\n & > .", " > .", " {\n visibility: visible;\n opacity: 1;\n }\n }\n\n &.is-resizing {\n & .", " {\n background: ", ";\n }\n }\n\n &.", " {\n & .", " {\n transition: none;\n background: ", ";\n }\n }\n }\n\n .", " {\n display: flex;\n visibility: hidden;\n opacity: 0;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n width: 7px;\n transition: visibility 0.2s, opacity 0.2s;\n\n /*\n NOTE: The below style is targeted at the div element added by the tooltip. We don't have any means of injecting styles\n into the tooltip\n */\n & div[role='presentation'] {\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n margin-top: ", ";\n white-space: normal;\n }\n\n /*\n Handle Positions\n */\n &.left {\n align-items: flex-start;\n }\n &.right {\n align-items: flex-end;\n }\n\n /*\n Handle Sizing\n */\n &.small {\n & .", " {\n height: 43px;\n }\n }\n &.medium {\n & .", " {\n height: 64px;\n }\n }\n &.large {\n & .", " {\n height: 96px;\n }\n }\n\n /*\n Handle Alignment\n */\n &.sticky {\n & .", " {\n position: sticky;\n top: ", ";\n bottom: ", ";\n }\n }\n\n &:hover {\n & .", " {\n background: ", ";\n }\n\n & .", " {\n visibility: visible;\n opacity: 0.5;\n }\n }\n }\n\n .", " {\n content: ' ';\n display: flex;\n width: 3px;\n margin: 0 ", ";\n height: 64px;\n transition: background-color 0.2s;\n border-radius: 6px;\n border: 0;\n padding: 0;\n z-index: 2;\n outline: none;\n min-height: 24px;\n background: ", ";\n\n &:hover {\n cursor: col-resize;\n }\n\n &:focus {\n background: ", ";\n\n &::after {\n content: '';\n position: absolute;\n top: ", ";\n right: ", ";\n bottom: ", ";\n left: ", ";\n border: 2px solid ", ";\n border-radius: inherit;\n z-index: -1;\n }\n }\n }\n\n .", " {\n visibility: hidden;\n position: absolute;\n width: 7px;\n height: calc(100% - 40px);\n border-radius: 4px;\n opacity: 0;\n transition: background-color 0.2s, visibility 0.2s, opacity 0.2s;\n\n &.none {\n background: none;\n }\n\n &.shadow {\n background: ", ";\n }\n\n &.full-height {\n background: ", ";\n height: 100%;\n min-height: 36px;\n }\n }\n\n .", " {\n & .", " {\n background: ", ";\n }\n }\n\n .", " {\n position: relative;\n display: inline-block;\n width: 100%;\n\n &.is-extended {\n padding: 0 ", ";\n left: ", ";\n }\n }\n\n // This below style is here to make sure the image width is correct when nested in a table\n table .", " {\n padding: unset;\n left: unset;\n }\n"])), resizerItemClassName, handleWrapperClass, resizerHandleClassName, resizerHandleThumbClassName, "var(--ds-border-focused, ".concat(B200, ")"), resizerDangerClassName, resizerHandleThumbClassName, "var(--ds-icon-danger, ".concat(akEditorDeleteIconColor, ")"), resizerHandleClassName, "var(--ds-space-negative-200, -16px)", resizerHandleThumbClassName, resizerHandleThumbClassName, resizerHandleThumbClassName, resizerHandleThumbClassName, "var(--ds-space-150, 12px)", "var(--ds-space-150, 12px)", resizerHandleThumbClassName, "var(--ds-border-focused, ".concat(B200, ")"), resizerHandleTrackClassName, resizerHandleThumbClassName, "var(--ds-space-025, 2px)", "var(--ds-border, ".concat(N60, ")"), "var(--ds-border-selected, #0C66E4)", "var(--ds-space-negative-050, -4px)", "var(--ds-space-negative-050, -4px)", "var(--ds-space-negative-050, -4px)", "var(--ds-space-negative-050, -4px)", "var(--ds-border-focused, #388BFF)", resizerHandleTrackClassName, "var(--ds-background-selected, ".concat(B50, ")"), "var(--ds-background-selected, ".concat(B50, ")"), akEditorSelectedNodeClassName, resizerHandleThumbClassName, "var(--ds-border-focused, ".concat(B200, ")"), resizerHoverZoneClassName, "var(--ds-space-150, 12px)", "var(--ds-space-negative-150, -12px)", resizerHoverZoneClassName);