@atlaskit/editor-common 78.11.6 → 78.12.0

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 (44) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/cjs/extensibility/Extension/Extension/index.js +16 -2
  3. package/dist/cjs/extensibility/Extension/Lozenge.js +2 -0
  4. package/dist/cjs/extensibility/Extension/LozengeComponent.js +23 -18
  5. package/dist/cjs/extensibility/Extension/styles.js +9 -1
  6. package/dist/cjs/extensibility/ExtensionComponent.js +11 -2
  7. package/dist/cjs/extensibility/MultiBodiedExtension/index.js +17 -3
  8. package/dist/cjs/keymaps/index.js +5 -3
  9. package/dist/cjs/monitoring/error.js +1 -1
  10. package/dist/cjs/preset/plugin-injection-api.js +0 -4
  11. package/dist/cjs/ui/DropList/index.js +1 -1
  12. package/dist/es2019/extensibility/Extension/Extension/index.js +12 -2
  13. package/dist/es2019/extensibility/Extension/Lozenge.js +2 -0
  14. package/dist/es2019/extensibility/Extension/LozengeComponent.js +22 -17
  15. package/dist/es2019/extensibility/Extension/styles.js +9 -1
  16. package/dist/es2019/extensibility/ExtensionComponent.js +11 -2
  17. package/dist/es2019/extensibility/MultiBodiedExtension/index.js +13 -3
  18. package/dist/es2019/keymaps/index.js +2 -0
  19. package/dist/es2019/monitoring/error.js +1 -1
  20. package/dist/es2019/preset/plugin-injection-api.js +0 -4
  21. package/dist/es2019/ui/DropList/index.js +1 -1
  22. package/dist/esm/extensibility/Extension/Extension/index.js +16 -2
  23. package/dist/esm/extensibility/Extension/Lozenge.js +2 -0
  24. package/dist/esm/extensibility/Extension/LozengeComponent.js +23 -18
  25. package/dist/esm/extensibility/Extension/styles.js +9 -1
  26. package/dist/esm/extensibility/ExtensionComponent.js +11 -2
  27. package/dist/esm/extensibility/MultiBodiedExtension/index.js +17 -3
  28. package/dist/esm/keymaps/index.js +2 -0
  29. package/dist/esm/monitoring/error.js +1 -1
  30. package/dist/esm/preset/plugin-injection-api.js +0 -4
  31. package/dist/esm/ui/DropList/index.js +1 -1
  32. package/dist/types/extensibility/Extension/Extension/index.d.ts +2 -0
  33. package/dist/types/extensibility/Extension/Lozenge.d.ts +1 -0
  34. package/dist/types/extensibility/Extension/LozengeComponent.d.ts +2 -1
  35. package/dist/types/extensibility/ExtensionComponent.d.ts +2 -0
  36. package/dist/types/extensibility/MultiBodiedExtension/index.d.ts +2 -0
  37. package/dist/types/keymaps/index.d.ts +2 -0
  38. package/dist/types-ts4.5/extensibility/Extension/Extension/index.d.ts +2 -0
  39. package/dist/types-ts4.5/extensibility/Extension/Lozenge.d.ts +1 -0
  40. package/dist/types-ts4.5/extensibility/Extension/LozengeComponent.d.ts +2 -1
  41. package/dist/types-ts4.5/extensibility/ExtensionComponent.d.ts +2 -0
  42. package/dist/types-ts4.5/extensibility/MultiBodiedExtension/index.d.ts +2 -0
  43. package/dist/types-ts4.5/keymaps/index.d.ts +2 -0
  44. package/package.json +5 -5
package/CHANGELOG.md CHANGED
@@ -1,5 +1,22 @@
1
1
  # @atlaskit/editor-common
2
2
 
3
+ ## 78.12.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#77222](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/77222) [`b924ab2b79f3`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/b924ab2b79f3) - [ux] Add keyboard shortcuts for center and right text alignment
8
+
9
+ ### Patch Changes
10
+
11
+ - Updated dependencies
12
+
13
+ ## 78.11.7
14
+
15
+ ### Patch Changes
16
+
17
+ - [#80237](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/80237) [`bdbdbabdf655`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/bdbdbabdf655) - Remove excess editor brower logging
18
+ - [#80510](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/80510) [`d1ef61df58a5`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/d1ef61df58a5) - [ux] Adds hover interaction for lozenges in extensions
19
+
3
20
  ## 78.11.6
4
21
 
5
22
  ### Patch Changes
@@ -38,7 +38,9 @@ function ExtensionWithPluginState(props) {
38
38
  hideFrame = props.hideFrame,
39
39
  editorAppearance = props.editorAppearance,
40
40
  showMacroInteractionDesignUpdates = props.showMacroInteractionDesignUpdates,
41
- isNodeSelected = props.isNodeSelected;
41
+ isNodeSelected = props.isNodeSelected,
42
+ isNodeHovered = props.isNodeHovered,
43
+ setIsNodeHovered = props.setIsNodeHovered;
42
44
  var hasBody = ['bodiedExtension', 'multiBodiedExtension'].includes(node.type.name);
43
45
  var isMobile = editorAppearance === 'mobile';
44
46
  var hasChildren = !!children;
@@ -84,8 +86,14 @@ function ExtensionWithPluginState(props) {
84
86
  customContainerStyles = breakoutStyles;
85
87
  }
86
88
  newContentStyles = _objectSpread(_objectSpread({}, newContentStyles), _styles2.contentWrapper);
89
+ var handleMouseEvent = function handleMouseEvent(didHover) {
90
+ if (setIsNodeHovered) {
91
+ setIsNodeHovered(didHover);
92
+ }
93
+ };
87
94
  return (0, _react2.jsx)(_react.Fragment, null, showMacroInteractionDesignUpdates && (0, _react2.jsx)(_Lozenge.default, {
88
95
  isNodeSelected: isNodeSelected,
96
+ isNodeHovered: isNodeHovered,
89
97
  node: node,
90
98
  showMacroInteractionDesignUpdates: showMacroInteractionDesignUpdates,
91
99
  customContainerStyles: customContainerStyles
@@ -94,7 +102,13 @@ function ExtensionWithPluginState(props) {
94
102
  "data-layout": node.attrs.layout,
95
103
  className: classNames,
96
104
  css: _styles2.wrapperStyle,
97
- style: customContainerStyles
105
+ style: customContainerStyles,
106
+ onMouseOver: function onMouseOver() {
107
+ return handleMouseEvent(true);
108
+ },
109
+ onMouseLeave: function onMouseLeave() {
110
+ return handleMouseEvent(false);
111
+ }
98
112
  }, (0, _react2.jsx)("div", {
99
113
  className: "extension-overflow-wrapper ".concat(hasBody ? 'with-body' : '')
100
114
  }, (0, _react2.jsx)("div", {
@@ -47,6 +47,7 @@ var ExtensionLozenge = exports.default = /*#__PURE__*/function (_Component) {
47
47
  var _this$props = _this.props,
48
48
  showMacroInteractionDesignUpdates = _this$props.showMacroInteractionDesignUpdates,
49
49
  isNodeSelected = _this$props.isNodeSelected,
50
+ isNodeHovered = _this$props.isNodeHovered,
50
51
  customContainerStyles = _this$props.customContainerStyles;
51
52
  var _this$props$node$attr = _this.props.node.attrs,
52
53
  parameters = _this$props$node$attr.parameters,
@@ -56,6 +57,7 @@ var ExtensionLozenge = exports.default = /*#__PURE__*/function (_Component) {
56
57
  var title = parameters && parameters.extensionTitle || parameters && parameters.macroMetadata && parameters.macroMetadata.title || extensionKey;
57
58
  var isBlockExtension = name === 'extension';
58
59
  return (0, _react2.jsx)(_LozengeComponent.LozengeComponent, {
60
+ isNodeHovered: isNodeHovered,
59
61
  isNodeSelected: isNodeSelected,
60
62
  showMacroInteractionDesignUpdates: showMacroInteractionDesignUpdates,
61
63
  isBlockExtension: isBlockExtension,
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.LozengeComponent = exports.ICON_SIZE = void 0;
8
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
9
  var _react = require("@emotion/react");
10
+ var _classnames = _interopRequireDefault(require("classnames"));
10
11
  var _file = _interopRequireDefault(require("@atlaskit/icon/glyph/editor/file"));
11
12
  var _tag = require("@atlaskit/tag");
12
13
  var _styles = require("./styles");
@@ -24,12 +25,15 @@ var LozengeComponent = exports.LozengeComponent = function LozengeComponent(_ref
24
25
  renderImage = _ref.renderImage,
25
26
  isNodeSelected = _ref.isNodeSelected,
26
27
  showMacroInteractionDesignUpdates = _ref.showMacroInteractionDesignUpdates,
27
- customContainerStyles = _ref.customContainerStyles;
28
+ customContainerStyles = _ref.customContainerStyles,
29
+ isNodeHovered = _ref.isNodeHovered;
28
30
  var capitalizedTitle = capitalizeFirstLetter(title);
29
- // TODO: only show on lozenge on hover: https://product-fabric.atlassian.net/browse/PGXT-4945
30
31
  if (showMacroInteractionDesignUpdates) {
32
+ var lozengeClassNames = (0, _classnames.default)('extension-title', {
33
+ 'show-lozenge': isNodeHovered || isNodeSelected
34
+ });
31
35
  return (0, _react.jsx)("div", {
32
- className: "extension-title",
36
+ className: lozengeClassNames,
33
37
  css: _styles.lozengeWrapper,
34
38
  "data-testid": "new-lozenge",
35
39
  style: customContainerStyles
@@ -37,20 +41,21 @@ var LozengeComponent = exports.LozengeComponent = function LozengeComponent(_ref
37
41
  text: capitalizedTitle,
38
42
  color: isNodeSelected ? 'blueLight' : 'greyLight'
39
43
  }));
44
+ } else {
45
+ return (0, _react.jsx)("div", {
46
+ "data-testid": "lozenge-fallback",
47
+ css: _styles.placeholderFallback
48
+ }, lozengeData && !isBlockExtension ? renderImage(_objectSpread({
49
+ height: ICON_SIZE,
50
+ width: ICON_SIZE
51
+ }, lozengeData)) : (0, _react.jsx)(_file.default, {
52
+ label: title
53
+ }), (0, _react.jsx)("span", {
54
+ className: "extension-title"
55
+ }, capitalizedTitle), params && !isBlockExtension && (0, _react.jsx)("span", {
56
+ css: _styles.placeholderFallbackParams
57
+ }, Object.keys(params).map(function (key) {
58
+ return key && " | ".concat(key, " = ").concat(params[key].value);
59
+ })));
40
60
  }
41
- return (0, _react.jsx)("div", {
42
- "data-testid": "lozenge-fallback",
43
- css: _styles.placeholderFallback
44
- }, lozengeData && !isBlockExtension ? renderImage(_objectSpread({
45
- height: ICON_SIZE,
46
- width: ICON_SIZE
47
- }, lozengeData)) : (0, _react.jsx)(_file.default, {
48
- label: title
49
- }), (0, _react.jsx)("span", {
50
- className: "extension-title"
51
- }, capitalizedTitle), params && !isBlockExtension && (0, _react.jsx)("span", {
52
- css: _styles.placeholderFallbackParams
53
- }, Object.keys(params).map(function (key) {
54
- return key && " | ".concat(key, " = ").concat(params[key].value);
55
- })));
56
61
  };
@@ -78,6 +78,14 @@ var lozengeWrapper = exports.lozengeWrapper = (0, _react.css)({
78
78
  display: 'flex',
79
79
  justifyContent: 'left',
80
80
  width: '100%',
81
+ /* -0.75rem neutralizes the margin top coming from extensionView-content-wrap.
82
+ The lozenge takes up space so we don't need the extra padding anymore. */
83
+ marginTop: "var(--ds-space-negative-150, -0.75rem)",
81
84
  marginLeft: "var(--ds-space-050, 4px)",
82
- marginBottom: "var(--ds-space-negative-050, -4px)"
85
+ marginBottom: "var(--ds-space-negative-050, -4px)",
86
+ // Using opacity so that lozenge takes up space and doesn't cause shift on render
87
+ opacity: '0',
88
+ '&.show-lozenge': {
89
+ opacity: '1'
90
+ }
83
91
  });
@@ -43,6 +43,11 @@ var ExtensionComponent = exports.ExtensionComponent = /*#__PURE__*/function (_Co
43
43
  // memoized to avoid rerender on extension state changes
44
44
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "getNodeRenderer", (0, _memoizeOne.default)(_extensions.getNodeRenderer));
45
45
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "getExtensionModuleNodePrivateProps", (0, _memoizeOne.default)(_extensions.getExtensionModuleNodePrivateProps));
46
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "setIsNodeHovered", function (isHovered) {
47
+ _this.setState({
48
+ isNodeHovered: isHovered
49
+ });
50
+ });
46
51
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "setStateFromPromise", function (stateKey, promise) {
47
52
  promise && promise.then(function (p) {
48
53
  if (!_this.mounted) {
@@ -209,7 +214,9 @@ var ExtensionComponent = exports.ExtensionComponent = /*#__PURE__*/function (_Co
209
214
  pluginInjectionApi: pluginInjectionApi,
210
215
  editorAppearance: editorAppearance,
211
216
  showMacroInteractionDesignUpdates: showMacroInteractionDesignUpdates,
212
- isNodeSelected: selectedNode === node
217
+ isNodeSelected: selectedNode === node,
218
+ isNodeHovered: this.state.isNodeHovered,
219
+ setIsNodeHovered: this.setIsNodeHovered
213
220
  });
214
221
  }
215
222
  var extensionHandlerResult = this.tryExtensionHandler(undefined);
@@ -227,7 +234,9 @@ var ExtensionComponent = exports.ExtensionComponent = /*#__PURE__*/function (_Co
227
234
  hideFrame: (_this$state$_privateP = this.state._privateProps) === null || _this$state$_privateP === void 0 ? void 0 : _this$state$_privateP.__hideFrame,
228
235
  pluginInjectionApi: pluginInjectionApi,
229
236
  showMacroInteractionDesignUpdates: showMacroInteractionDesignUpdates,
230
- isNodeSelected: selectedNode === node
237
+ isNodeSelected: selectedNode === node,
238
+ isNodeHovered: this.state.isNodeHovered,
239
+ setIsNodeHovered: this.setIsNodeHovered
231
240
  }, extensionHandlerResult);
232
241
  case 'inlineExtension':
233
242
  return /*#__PURE__*/_react.default.createElement(_InlineExtension.default, {
@@ -64,7 +64,9 @@ var MultiBodiedExtensionWithWidth = function MultiBodiedExtensionWithWidth(_ref)
64
64
  widthState = _ref.widthState,
65
65
  editorAppearance = _ref.editorAppearance,
66
66
  showMacroInteractionDesignUpdates = _ref.showMacroInteractionDesignUpdates,
67
- isNodeSelected = _ref.isNodeSelected;
67
+ isNodeSelected = _ref.isNodeSelected,
68
+ isNodeHovered = _ref.isNodeHovered,
69
+ setIsNodeHovered = _ref.setIsNodeHovered;
68
70
  var _node$attrs = node.attrs,
69
71
  parameters = _node$attrs.parameters,
70
72
  extensionKey = _node$attrs.extensionKey;
@@ -124,16 +126,28 @@ var MultiBodiedExtensionWithWidth = function MultiBodiedExtensionWithWidth(_ref)
124
126
  var navigationClassNames = (0, _classnames.default)('multiBodiedExtension--navigation', {
125
127
  'remove-margins': showMacroInteractionDesignUpdates
126
128
  });
129
+ var handleMouseEvent = function handleMouseEvent(didHover) {
130
+ if (setIsNodeHovered) {
131
+ setIsNodeHovered(didHover);
132
+ }
133
+ };
127
134
  return (0, _react2.jsx)(_react.Fragment, null, showMacroInteractionDesignUpdates && (0, _react2.jsx)(_Lozenge.default, {
128
135
  isNodeSelected: isNodeSelected,
129
136
  node: node,
130
137
  showMacroInteractionDesignUpdates: true,
131
- customContainerStyles: mbeWrapperStyles
138
+ customContainerStyles: mbeWrapperStyles,
139
+ isNodeHovered: isNodeHovered
132
140
  }), (0, _react2.jsx)("div", {
133
141
  className: wrapperClassNames,
134
142
  css: _styles.mbeExtensionWrapperCSS,
135
143
  "data-testid": "multiBodiedExtension--wrapper",
136
- style: mbeWrapperStyles
144
+ style: mbeWrapperStyles,
145
+ onMouseOver: function onMouseOver() {
146
+ return handleMouseEvent(true);
147
+ },
148
+ onMouseLeave: function onMouseLeave() {
149
+ return handleMouseEvent(false);
150
+ }
137
151
  }, getWrapperTitleContent(imageData, title, showMacroInteractionDesignUpdates), (0, _react2.jsx)("div", {
138
152
  className: containerClassNames,
139
153
  css: containerCssExtended,
@@ -78,7 +78,7 @@ Object.defineProperty(exports, "UP", {
78
78
  return _consts.UP;
79
79
  }
80
80
  });
81
- exports.backspace = exports.altPaste = exports.alignLeft = exports.addRowBefore = exports.addRowAfter = exports.addLink = exports.addInlineComment = exports.addColumnBefore = exports.addColumnAfter = exports.addAltText = void 0;
81
+ exports.backspace = exports.altPaste = exports.alignRight = exports.alignLeft = exports.alignCenter = exports.addRowBefore = exports.addRowAfter = exports.addLink = exports.addInlineComment = exports.addColumnBefore = exports.addColumnAfter = exports.addAltText = void 0;
82
82
  exports.bindKeymapArrayWithCommand = bindKeymapArrayWithCommand;
83
83
  exports.bindKeymapWithCommand = bindKeymapWithCommand;
84
84
  exports.bindKeymapWithEditorCommand = bindKeymapWithEditorCommand;
@@ -100,8 +100,8 @@ Object.defineProperty(exports, "keymap", {
100
100
  exports.makeKeyMapArrayWithCommon = makeKeyMapArrayWithCommon;
101
101
  exports.makeKeyMapWithCommon = makeKeyMapWithCommon;
102
102
  exports.makeKeymap = makeKeymap;
103
- exports.toggleSuperscript = exports.toggleSubscript = exports.toggleStrikethrough = exports.toggleOrderedList = exports.toggleItalic = exports.toggleHeading6 = exports.toggleHeading5 = exports.toggleHeading4 = exports.toggleHeading3 = exports.toggleHeading2 = exports.toggleHeading1 = exports.toggleCode = exports.toggleBulletList = exports.toggleBold = exports.toggleBlockQuote = exports.tab = exports.submit = exports.startColumnResizing = exports.splitListItem = exports.splitCodeBlock = exports.space = exports.shiftTab = exports.shiftEnter = exports.shiftBackspace = exports.shiftArrowUp = exports.setNormalText = exports.selectRow = exports.selectColumn = exports.redo = exports.previousCell = exports.pastePlainText = exports.paste = exports.outdentList = exports.outdent = exports.openHelp = exports.nextCell = exports.navToFloatingToolbar = exports.navToEditorToolbar = exports.moveUp = exports.moveRowUp = exports.moveRowDown = exports.moveRight = exports.moveLeft = exports.moveDown = exports.moveColumnRight = exports.moveColumnLeft = void 0;
104
- exports.toggleUnderline = exports.toggleTaskItemCheckbox = exports.toggleTable = void 0;
103
+ exports.toggleStrikethrough = exports.toggleOrderedList = exports.toggleItalic = exports.toggleHeading6 = exports.toggleHeading5 = exports.toggleHeading4 = exports.toggleHeading3 = exports.toggleHeading2 = exports.toggleHeading1 = exports.toggleCode = exports.toggleBulletList = exports.toggleBold = exports.toggleBlockQuote = exports.tab = exports.submit = exports.startColumnResizing = exports.splitListItem = exports.splitCodeBlock = exports.space = exports.shiftTab = exports.shiftEnter = exports.shiftBackspace = exports.shiftArrowUp = exports.setNormalText = exports.selectRow = exports.selectColumn = exports.redo = exports.previousCell = exports.pastePlainText = exports.paste = exports.outdentList = exports.outdent = exports.openHelp = exports.nextCell = exports.navToFloatingToolbar = exports.navToEditorToolbar = exports.moveUp = exports.moveRowUp = exports.moveRowDown = exports.moveRight = exports.moveLeft = exports.moveDown = exports.moveColumnRight = exports.moveColumnLeft = void 0;
104
+ exports.toggleUnderline = exports.toggleTaskItemCheckbox = exports.toggleTable = exports.toggleSuperscript = exports.toggleSubscript = void 0;
105
105
  exports.tooltip = tooltip;
106
106
  exports.undo = void 0;
107
107
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
@@ -190,6 +190,8 @@ var paste = exports.paste = makeKeyMapWithCommon('Paste', 'Mod-v');
190
190
  var altPaste = exports.altPaste = makeKeyMapWithCommon('Paste', 'Mod-Shift-v');
191
191
  var find = exports.find = makeKeyMapWithCommon('Find', 'Mod-f');
192
192
  var alignLeft = exports.alignLeft = makeKeyMapWithCommon('Align Left', 'Mod-Shift-l');
193
+ var alignCenter = exports.alignCenter = makeKeyMapWithCommon('Align Center', 'Mod-Alt-e');
194
+ var alignRight = exports.alignRight = makeKeyMapWithCommon('Align Right', 'Mod-Alt-t');
193
195
  var toggleTaskItemCheckbox = exports.toggleTaskItemCheckbox = makeKeyMapWithCommon('Toggles task item', 'Mod-Alt-Enter');
194
196
  var selectRow = exports.selectRow = makeKeyMapArrayWithCommon('Select row', ['Mod-Alt-Shift-ArrowLeft', 'Mod-Alt-Shift-ArrowRight']);
195
197
  var selectColumn = exports.selectColumn = makeKeyMapArrayWithCommon('Select column', ['Mod-Alt-Shift-ArrowDown', 'Mod-Alt-Shift-ArrowUp']);
@@ -16,7 +16,7 @@ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return
16
16
  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 && Object.prototype.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; }
17
17
  var SENTRY_DSN = 'https://0b10c8e02fb44d8796c047b102c9bee8@o55978.ingest.sentry.io/4505129224110080';
18
18
  var packageName = 'editor-common'; // Sentry doesn't accept '/' in its releases https://docs.sentry.io/platforms/javascript/configuration/releases/
19
- var packageVersion = "78.11.6";
19
+ var packageVersion = "78.12.0";
20
20
  var sanitiseSentryEvents = function sanitiseSentryEvents(data, _hint) {
21
21
  // Remove URL as it has UGC
22
22
  // TODO: Sanitise the URL instead of just removing it
@@ -299,10 +299,6 @@ var EditorPluginInjectionAPI = exports.EditorPluginInjectionAPI = /*#__PURE__*/f
299
299
  }
300
300
  var plugin = getPluginByName(prop);
301
301
  if (!plugin) {
302
- if (process.env.NODE_ENV === 'development') {
303
- // eslint-disable-next-line
304
- console.warn("Plugin: ".concat(prop, " does not exist"));
305
- }
306
302
  return undefined;
307
303
  }
308
304
  var sharedState = sharedStateAPI.createAPI(plugin);
@@ -22,7 +22,7 @@ var _templateObject, _templateObject2, _templateObject3;
22
22
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
23
23
  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } /** @jsx jsx */
24
24
  var packageName = "@atlaskit/editor-common";
25
- var packageVersion = "78.11.6";
25
+ var packageVersion = "78.12.0";
26
26
  var halfFocusRing = 1;
27
27
  var dropOffset = '0, 8';
28
28
  var DropList = /*#__PURE__*/function (_Component) {
@@ -24,7 +24,9 @@ function ExtensionWithPluginState(props) {
24
24
  hideFrame,
25
25
  editorAppearance,
26
26
  showMacroInteractionDesignUpdates,
27
- isNodeSelected
27
+ isNodeSelected,
28
+ isNodeHovered,
29
+ setIsNodeHovered
28
30
  } = props;
29
31
  const hasBody = ['bodiedExtension', 'multiBodiedExtension'].includes(node.type.name);
30
32
  const isMobile = editorAppearance === 'mobile';
@@ -80,8 +82,14 @@ function ExtensionWithPluginState(props) {
80
82
  ...newContentStyles,
81
83
  ...contentWrapper
82
84
  };
85
+ const handleMouseEvent = didHover => {
86
+ if (setIsNodeHovered) {
87
+ setIsNodeHovered(didHover);
88
+ }
89
+ };
83
90
  return jsx(Fragment, null, showMacroInteractionDesignUpdates && jsx(ExtensionLozenge, {
84
91
  isNodeSelected: isNodeSelected,
92
+ isNodeHovered: isNodeHovered,
85
93
  node: node,
86
94
  showMacroInteractionDesignUpdates: showMacroInteractionDesignUpdates,
87
95
  customContainerStyles: customContainerStyles
@@ -90,7 +98,9 @@ function ExtensionWithPluginState(props) {
90
98
  "data-layout": node.attrs.layout,
91
99
  className: classNames,
92
100
  css: wrapperStyle,
93
- style: customContainerStyles
101
+ style: customContainerStyles,
102
+ onMouseOver: () => handleMouseEvent(true),
103
+ onMouseLeave: () => handleMouseEvent(false)
94
104
  }, jsx("div", {
95
105
  className: `extension-overflow-wrapper ${hasBody ? 'with-body' : ''}`
96
106
  }, jsx("div", {
@@ -28,6 +28,7 @@ export default class ExtensionLozenge extends Component {
28
28
  const {
29
29
  showMacroInteractionDesignUpdates,
30
30
  isNodeSelected,
31
+ isNodeHovered,
31
32
  customContainerStyles
32
33
  } = this.props;
33
34
  const {
@@ -41,6 +42,7 @@ export default class ExtensionLozenge extends Component {
41
42
  const title = parameters && parameters.extensionTitle || parameters && parameters.macroMetadata && parameters.macroMetadata.title || extensionKey;
42
43
  const isBlockExtension = name === 'extension';
43
44
  return jsx(LozengeComponent, {
45
+ isNodeHovered: isNodeHovered,
44
46
  isNodeSelected: isNodeSelected,
45
47
  showMacroInteractionDesignUpdates: showMacroInteractionDesignUpdates,
46
48
  isBlockExtension: isBlockExtension,
@@ -1,6 +1,7 @@
1
1
  /** @jsx jsx */
2
2
 
3
3
  import { jsx } from '@emotion/react';
4
+ import classnames from 'classnames';
4
5
  import EditorFileIcon from '@atlaskit/icon/glyph/editor/file';
5
6
  import { SimpleTag as Tag } from '@atlaskit/tag';
6
7
  import { lozengeWrapper, placeholderFallback, placeholderFallbackParams } from './styles';
@@ -16,13 +17,16 @@ export const LozengeComponent = ({
16
17
  renderImage,
17
18
  isNodeSelected,
18
19
  showMacroInteractionDesignUpdates,
19
- customContainerStyles
20
+ customContainerStyles,
21
+ isNodeHovered
20
22
  }) => {
21
23
  const capitalizedTitle = capitalizeFirstLetter(title);
22
- // TODO: only show on lozenge on hover: https://product-fabric.atlassian.net/browse/PGXT-4945
23
24
  if (showMacroInteractionDesignUpdates) {
25
+ const lozengeClassNames = classnames('extension-title', {
26
+ 'show-lozenge': isNodeHovered || isNodeSelected
27
+ });
24
28
  return jsx("div", {
25
- className: "extension-title",
29
+ className: lozengeClassNames,
26
30
  css: lozengeWrapper,
27
31
  "data-testid": "new-lozenge",
28
32
  style: customContainerStyles
@@ -30,19 +34,20 @@ export const LozengeComponent = ({
30
34
  text: capitalizedTitle,
31
35
  color: isNodeSelected ? 'blueLight' : 'greyLight'
32
36
  }));
37
+ } else {
38
+ return jsx("div", {
39
+ "data-testid": "lozenge-fallback",
40
+ css: placeholderFallback
41
+ }, lozengeData && !isBlockExtension ? renderImage({
42
+ height: ICON_SIZE,
43
+ width: ICON_SIZE,
44
+ ...lozengeData
45
+ }) : jsx(EditorFileIcon, {
46
+ label: title
47
+ }), jsx("span", {
48
+ className: "extension-title"
49
+ }, capitalizedTitle), params && !isBlockExtension && jsx("span", {
50
+ css: placeholderFallbackParams
51
+ }, Object.keys(params).map(key => key && ` | ${key} = ${params[key].value}`)));
33
52
  }
34
- return jsx("div", {
35
- "data-testid": "lozenge-fallback",
36
- css: placeholderFallback
37
- }, lozengeData && !isBlockExtension ? renderImage({
38
- height: ICON_SIZE,
39
- width: ICON_SIZE,
40
- ...lozengeData
41
- }) : jsx(EditorFileIcon, {
42
- label: title
43
- }), jsx("span", {
44
- className: "extension-title"
45
- }, capitalizedTitle), params && !isBlockExtension && jsx("span", {
46
- css: placeholderFallbackParams
47
- }, Object.keys(params).map(key => key && ` | ${key} = ${params[key].value}`)));
48
53
  };
@@ -60,6 +60,14 @@ export const lozengeWrapper = css({
60
60
  display: 'flex',
61
61
  justifyContent: 'left',
62
62
  width: '100%',
63
+ /* -0.75rem neutralizes the margin top coming from extensionView-content-wrap.
64
+ The lozenge takes up space so we don't need the extra padding anymore. */
65
+ marginTop: "var(--ds-space-negative-150, -0.75rem)",
63
66
  marginLeft: "var(--ds-space-050, 4px)",
64
- marginBottom: "var(--ds-space-negative-050, -4px)"
67
+ marginBottom: "var(--ds-space-negative-050, -4px)",
68
+ // Using opacity so that lozenge takes up space and doesn't cause shift on render
69
+ opacity: '0',
70
+ '&.show-lozenge': {
71
+ opacity: '1'
72
+ }
65
73
  });
@@ -16,6 +16,11 @@ export class ExtensionComponent extends Component {
16
16
  // memoized to avoid rerender on extension state changes
17
17
  _defineProperty(this, "getNodeRenderer", memoizeOne(getNodeRenderer));
18
18
  _defineProperty(this, "getExtensionModuleNodePrivateProps", memoizeOne(getExtensionModuleNodePrivateProps));
19
+ _defineProperty(this, "setIsNodeHovered", isHovered => {
20
+ this.setState({
21
+ isNodeHovered: isHovered
22
+ });
23
+ });
19
24
  _defineProperty(this, "setStateFromPromise", (stateKey, promise) => {
20
25
  promise && promise.then(p => {
21
26
  if (!this.mounted) {
@@ -164,7 +169,9 @@ export class ExtensionComponent extends Component {
164
169
  pluginInjectionApi: pluginInjectionApi,
165
170
  editorAppearance: editorAppearance,
166
171
  showMacroInteractionDesignUpdates: showMacroInteractionDesignUpdates,
167
- isNodeSelected: selectedNode === node
172
+ isNodeSelected: selectedNode === node,
173
+ isNodeHovered: this.state.isNodeHovered,
174
+ setIsNodeHovered: this.setIsNodeHovered
168
175
  });
169
176
  }
170
177
  const extensionHandlerResult = this.tryExtensionHandler(undefined);
@@ -182,7 +189,9 @@ export class ExtensionComponent extends Component {
182
189
  hideFrame: (_this$state$_privateP = this.state._privateProps) === null || _this$state$_privateP === void 0 ? void 0 : _this$state$_privateP.__hideFrame,
183
190
  pluginInjectionApi: pluginInjectionApi,
184
191
  showMacroInteractionDesignUpdates: showMacroInteractionDesignUpdates,
185
- isNodeSelected: selectedNode === node
192
+ isNodeSelected: selectedNode === node,
193
+ isNodeHovered: this.state.isNodeHovered,
194
+ setIsNodeHovered: this.setIsNodeHovered
186
195
  }, extensionHandlerResult);
187
196
  case 'inlineExtension':
188
197
  return /*#__PURE__*/React.createElement(InlineExtension, {
@@ -52,7 +52,9 @@ const MultiBodiedExtensionWithWidth = ({
52
52
  widthState,
53
53
  editorAppearance,
54
54
  showMacroInteractionDesignUpdates,
55
- isNodeSelected
55
+ isNodeSelected,
56
+ isNodeHovered,
57
+ setIsNodeHovered
56
58
  }) => {
57
59
  const {
58
60
  parameters,
@@ -114,16 +116,24 @@ const MultiBodiedExtensionWithWidth = ({
114
116
  const navigationClassNames = classnames('multiBodiedExtension--navigation', {
115
117
  'remove-margins': showMacroInteractionDesignUpdates
116
118
  });
119
+ const handleMouseEvent = didHover => {
120
+ if (setIsNodeHovered) {
121
+ setIsNodeHovered(didHover);
122
+ }
123
+ };
117
124
  return jsx(Fragment, null, showMacroInteractionDesignUpdates && jsx(ExtensionLozenge, {
118
125
  isNodeSelected: isNodeSelected,
119
126
  node: node,
120
127
  showMacroInteractionDesignUpdates: true,
121
- customContainerStyles: mbeWrapperStyles
128
+ customContainerStyles: mbeWrapperStyles,
129
+ isNodeHovered: isNodeHovered
122
130
  }), jsx("div", {
123
131
  className: wrapperClassNames,
124
132
  css: mbeExtensionWrapperCSS,
125
133
  "data-testid": "multiBodiedExtension--wrapper",
126
- style: mbeWrapperStyles
134
+ style: mbeWrapperStyles,
135
+ onMouseOver: () => handleMouseEvent(true),
136
+ onMouseLeave: () => handleMouseEvent(false)
127
137
  }, getWrapperTitleContent(imageData, title, showMacroInteractionDesignUpdates), jsx("div", {
128
138
  className: containerClassNames,
129
139
  css: containerCssExtended,
@@ -78,6 +78,8 @@ export const paste = makeKeyMapWithCommon('Paste', 'Mod-v');
78
78
  export const altPaste = makeKeyMapWithCommon('Paste', 'Mod-Shift-v');
79
79
  export const find = makeKeyMapWithCommon('Find', 'Mod-f');
80
80
  export const alignLeft = makeKeyMapWithCommon('Align Left', 'Mod-Shift-l');
81
+ export const alignCenter = makeKeyMapWithCommon('Align Center', 'Mod-Alt-e');
82
+ export const alignRight = makeKeyMapWithCommon('Align Right', 'Mod-Alt-t');
81
83
  export const toggleTaskItemCheckbox = makeKeyMapWithCommon('Toggles task item', 'Mod-Alt-Enter');
82
84
  export const selectRow = makeKeyMapArrayWithCommon('Select row', ['Mod-Alt-Shift-ArrowLeft', 'Mod-Alt-Shift-ArrowRight']);
83
85
  export const selectColumn = makeKeyMapArrayWithCommon('Select column', ['Mod-Alt-Shift-ArrowDown', 'Mod-Alt-Shift-ArrowUp']);
@@ -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.11.6";
3
+ const packageVersion = "78.12.0";
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
@@ -220,10 +220,6 @@ export class EditorPluginInjectionAPI {
220
220
  }
221
221
  const plugin = getPluginByName(prop);
222
222
  if (!plugin) {
223
- if (process.env.NODE_ENV === 'development') {
224
- // eslint-disable-next-line
225
- console.warn(`Plugin: ${prop} does not exist`);
226
- }
227
223
  return undefined;
228
224
  }
229
225
  const sharedState = sharedStateAPI.createAPI(plugin);
@@ -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.11.6";
10
+ const packageVersion = "78.12.0";
11
11
  const halfFocusRing = 1;
12
12
  const dropOffset = '0, 8';
13
13
  class DropList extends Component {
@@ -29,7 +29,9 @@ function ExtensionWithPluginState(props) {
29
29
  hideFrame = props.hideFrame,
30
30
  editorAppearance = props.editorAppearance,
31
31
  showMacroInteractionDesignUpdates = props.showMacroInteractionDesignUpdates,
32
- isNodeSelected = props.isNodeSelected;
32
+ isNodeSelected = props.isNodeSelected,
33
+ isNodeHovered = props.isNodeHovered,
34
+ setIsNodeHovered = props.setIsNodeHovered;
33
35
  var hasBody = ['bodiedExtension', 'multiBodiedExtension'].includes(node.type.name);
34
36
  var isMobile = editorAppearance === 'mobile';
35
37
  var hasChildren = !!children;
@@ -75,8 +77,14 @@ function ExtensionWithPluginState(props) {
75
77
  customContainerStyles = breakoutStyles;
76
78
  }
77
79
  newContentStyles = _objectSpread(_objectSpread({}, newContentStyles), contentWrapper);
80
+ var handleMouseEvent = function handleMouseEvent(didHover) {
81
+ if (setIsNodeHovered) {
82
+ setIsNodeHovered(didHover);
83
+ }
84
+ };
78
85
  return jsx(Fragment, null, showMacroInteractionDesignUpdates && jsx(ExtensionLozenge, {
79
86
  isNodeSelected: isNodeSelected,
87
+ isNodeHovered: isNodeHovered,
80
88
  node: node,
81
89
  showMacroInteractionDesignUpdates: showMacroInteractionDesignUpdates,
82
90
  customContainerStyles: customContainerStyles
@@ -85,7 +93,13 @@ function ExtensionWithPluginState(props) {
85
93
  "data-layout": node.attrs.layout,
86
94
  className: classNames,
87
95
  css: wrapperStyle,
88
- style: customContainerStyles
96
+ style: customContainerStyles,
97
+ onMouseOver: function onMouseOver() {
98
+ return handleMouseEvent(true);
99
+ },
100
+ onMouseLeave: function onMouseLeave() {
101
+ return handleMouseEvent(false);
102
+ }
89
103
  }, jsx("div", {
90
104
  className: "extension-overflow-wrapper ".concat(hasBody ? 'with-body' : '')
91
105
  }, jsx("div", {
@@ -41,6 +41,7 @@ var ExtensionLozenge = /*#__PURE__*/function (_Component) {
41
41
  var _this$props = _this.props,
42
42
  showMacroInteractionDesignUpdates = _this$props.showMacroInteractionDesignUpdates,
43
43
  isNodeSelected = _this$props.isNodeSelected,
44
+ isNodeHovered = _this$props.isNodeHovered,
44
45
  customContainerStyles = _this$props.customContainerStyles;
45
46
  var _this$props$node$attr = _this.props.node.attrs,
46
47
  parameters = _this$props$node$attr.parameters,
@@ -50,6 +51,7 @@ var ExtensionLozenge = /*#__PURE__*/function (_Component) {
50
51
  var title = parameters && parameters.extensionTitle || parameters && parameters.macroMetadata && parameters.macroMetadata.title || extensionKey;
51
52
  var isBlockExtension = name === 'extension';
52
53
  return jsx(LozengeComponent, {
54
+ isNodeHovered: isNodeHovered,
53
55
  isNodeSelected: isNodeSelected,
54
56
  showMacroInteractionDesignUpdates: showMacroInteractionDesignUpdates,
55
57
  isBlockExtension: isBlockExtension,
@@ -4,6 +4,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
4
4
  /** @jsx jsx */
5
5
 
6
6
  import { jsx } from '@emotion/react';
7
+ import classnames from 'classnames';
7
8
  import EditorFileIcon from '@atlaskit/icon/glyph/editor/file';
8
9
  import { SimpleTag as Tag } from '@atlaskit/tag';
9
10
  import { lozengeWrapper, placeholderFallback, placeholderFallbackParams } from './styles';
@@ -19,12 +20,15 @@ export var LozengeComponent = function LozengeComponent(_ref) {
19
20
  renderImage = _ref.renderImage,
20
21
  isNodeSelected = _ref.isNodeSelected,
21
22
  showMacroInteractionDesignUpdates = _ref.showMacroInteractionDesignUpdates,
22
- customContainerStyles = _ref.customContainerStyles;
23
+ customContainerStyles = _ref.customContainerStyles,
24
+ isNodeHovered = _ref.isNodeHovered;
23
25
  var capitalizedTitle = capitalizeFirstLetter(title);
24
- // TODO: only show on lozenge on hover: https://product-fabric.atlassian.net/browse/PGXT-4945
25
26
  if (showMacroInteractionDesignUpdates) {
27
+ var lozengeClassNames = classnames('extension-title', {
28
+ 'show-lozenge': isNodeHovered || isNodeSelected
29
+ });
26
30
  return jsx("div", {
27
- className: "extension-title",
31
+ className: lozengeClassNames,
28
32
  css: lozengeWrapper,
29
33
  "data-testid": "new-lozenge",
30
34
  style: customContainerStyles
@@ -32,20 +36,21 @@ export var LozengeComponent = function LozengeComponent(_ref) {
32
36
  text: capitalizedTitle,
33
37
  color: isNodeSelected ? 'blueLight' : 'greyLight'
34
38
  }));
39
+ } else {
40
+ return jsx("div", {
41
+ "data-testid": "lozenge-fallback",
42
+ css: placeholderFallback
43
+ }, lozengeData && !isBlockExtension ? renderImage(_objectSpread({
44
+ height: ICON_SIZE,
45
+ width: ICON_SIZE
46
+ }, lozengeData)) : jsx(EditorFileIcon, {
47
+ label: title
48
+ }), jsx("span", {
49
+ className: "extension-title"
50
+ }, capitalizedTitle), params && !isBlockExtension && jsx("span", {
51
+ css: placeholderFallbackParams
52
+ }, Object.keys(params).map(function (key) {
53
+ return key && " | ".concat(key, " = ").concat(params[key].value);
54
+ })));
35
55
  }
36
- return jsx("div", {
37
- "data-testid": "lozenge-fallback",
38
- css: placeholderFallback
39
- }, lozengeData && !isBlockExtension ? renderImage(_objectSpread({
40
- height: ICON_SIZE,
41
- width: ICON_SIZE
42
- }, lozengeData)) : jsx(EditorFileIcon, {
43
- label: title
44
- }), jsx("span", {
45
- className: "extension-title"
46
- }, capitalizedTitle), params && !isBlockExtension && jsx("span", {
47
- css: placeholderFallbackParams
48
- }, Object.keys(params).map(function (key) {
49
- return key && " | ".concat(key, " = ").concat(params[key].value);
50
- })));
51
56
  };
@@ -60,6 +60,14 @@ export var lozengeWrapper = css({
60
60
  display: 'flex',
61
61
  justifyContent: 'left',
62
62
  width: '100%',
63
+ /* -0.75rem neutralizes the margin top coming from extensionView-content-wrap.
64
+ The lozenge takes up space so we don't need the extra padding anymore. */
65
+ marginTop: "var(--ds-space-negative-150, -0.75rem)",
63
66
  marginLeft: "var(--ds-space-050, 4px)",
64
- marginBottom: "var(--ds-space-negative-050, -4px)"
67
+ marginBottom: "var(--ds-space-negative-050, -4px)",
68
+ // Using opacity so that lozenge takes up space and doesn't cause shift on render
69
+ opacity: '0',
70
+ '&.show-lozenge': {
71
+ opacity: '1'
72
+ }
65
73
  });
@@ -33,6 +33,11 @@ export var ExtensionComponent = /*#__PURE__*/function (_Component) {
33
33
  // memoized to avoid rerender on extension state changes
34
34
  _defineProperty(_assertThisInitialized(_this), "getNodeRenderer", memoizeOne(getNodeRenderer));
35
35
  _defineProperty(_assertThisInitialized(_this), "getExtensionModuleNodePrivateProps", memoizeOne(getExtensionModuleNodePrivateProps));
36
+ _defineProperty(_assertThisInitialized(_this), "setIsNodeHovered", function (isHovered) {
37
+ _this.setState({
38
+ isNodeHovered: isHovered
39
+ });
40
+ });
36
41
  _defineProperty(_assertThisInitialized(_this), "setStateFromPromise", function (stateKey, promise) {
37
42
  promise && promise.then(function (p) {
38
43
  if (!_this.mounted) {
@@ -199,7 +204,9 @@ export var ExtensionComponent = /*#__PURE__*/function (_Component) {
199
204
  pluginInjectionApi: pluginInjectionApi,
200
205
  editorAppearance: editorAppearance,
201
206
  showMacroInteractionDesignUpdates: showMacroInteractionDesignUpdates,
202
- isNodeSelected: selectedNode === node
207
+ isNodeSelected: selectedNode === node,
208
+ isNodeHovered: this.state.isNodeHovered,
209
+ setIsNodeHovered: this.setIsNodeHovered
203
210
  });
204
211
  }
205
212
  var extensionHandlerResult = this.tryExtensionHandler(undefined);
@@ -217,7 +224,9 @@ export var ExtensionComponent = /*#__PURE__*/function (_Component) {
217
224
  hideFrame: (_this$state$_privateP = this.state._privateProps) === null || _this$state$_privateP === void 0 ? void 0 : _this$state$_privateP.__hideFrame,
218
225
  pluginInjectionApi: pluginInjectionApi,
219
226
  showMacroInteractionDesignUpdates: showMacroInteractionDesignUpdates,
220
- isNodeSelected: selectedNode === node
227
+ isNodeSelected: selectedNode === node,
228
+ isNodeHovered: this.state.isNodeHovered,
229
+ setIsNodeHovered: this.setIsNodeHovered
221
230
  }, extensionHandlerResult);
222
231
  case 'inlineExtension':
223
232
  return /*#__PURE__*/React.createElement(InlineExtension, {
@@ -55,7 +55,9 @@ var MultiBodiedExtensionWithWidth = function MultiBodiedExtensionWithWidth(_ref)
55
55
  widthState = _ref.widthState,
56
56
  editorAppearance = _ref.editorAppearance,
57
57
  showMacroInteractionDesignUpdates = _ref.showMacroInteractionDesignUpdates,
58
- isNodeSelected = _ref.isNodeSelected;
58
+ isNodeSelected = _ref.isNodeSelected,
59
+ isNodeHovered = _ref.isNodeHovered,
60
+ setIsNodeHovered = _ref.setIsNodeHovered;
59
61
  var _node$attrs = node.attrs,
60
62
  parameters = _node$attrs.parameters,
61
63
  extensionKey = _node$attrs.extensionKey;
@@ -115,16 +117,28 @@ var MultiBodiedExtensionWithWidth = function MultiBodiedExtensionWithWidth(_ref)
115
117
  var navigationClassNames = classnames('multiBodiedExtension--navigation', {
116
118
  'remove-margins': showMacroInteractionDesignUpdates
117
119
  });
120
+ var handleMouseEvent = function handleMouseEvent(didHover) {
121
+ if (setIsNodeHovered) {
122
+ setIsNodeHovered(didHover);
123
+ }
124
+ };
118
125
  return jsx(Fragment, null, showMacroInteractionDesignUpdates && jsx(ExtensionLozenge, {
119
126
  isNodeSelected: isNodeSelected,
120
127
  node: node,
121
128
  showMacroInteractionDesignUpdates: true,
122
- customContainerStyles: mbeWrapperStyles
129
+ customContainerStyles: mbeWrapperStyles,
130
+ isNodeHovered: isNodeHovered
123
131
  }), jsx("div", {
124
132
  className: wrapperClassNames,
125
133
  css: mbeExtensionWrapperCSS,
126
134
  "data-testid": "multiBodiedExtension--wrapper",
127
- style: mbeWrapperStyles
135
+ style: mbeWrapperStyles,
136
+ onMouseOver: function onMouseOver() {
137
+ return handleMouseEvent(true);
138
+ },
139
+ onMouseLeave: function onMouseLeave() {
140
+ return handleMouseEvent(false);
141
+ }
128
142
  }, getWrapperTitleContent(imageData, title, showMacroInteractionDesignUpdates), jsx("div", {
129
143
  className: containerClassNames,
130
144
  css: containerCssExtended,
@@ -79,6 +79,8 @@ export var paste = makeKeyMapWithCommon('Paste', 'Mod-v');
79
79
  export var altPaste = makeKeyMapWithCommon('Paste', 'Mod-Shift-v');
80
80
  export var find = makeKeyMapWithCommon('Find', 'Mod-f');
81
81
  export var alignLeft = makeKeyMapWithCommon('Align Left', 'Mod-Shift-l');
82
+ export var alignCenter = makeKeyMapWithCommon('Align Center', 'Mod-Alt-e');
83
+ export var alignRight = makeKeyMapWithCommon('Align Right', 'Mod-Alt-t');
82
84
  export var toggleTaskItemCheckbox = makeKeyMapWithCommon('Toggles task item', 'Mod-Alt-Enter');
83
85
  export var selectRow = makeKeyMapArrayWithCommon('Select row', ['Mod-Alt-Shift-ArrowLeft', 'Mod-Alt-Shift-ArrowRight']);
84
86
  export var selectColumn = makeKeyMapArrayWithCommon('Select column', ['Mod-Alt-Shift-ArrowDown', 'Mod-Alt-Shift-ArrowUp']);
@@ -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.11.6";
9
+ var packageVersion = "78.12.0";
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
@@ -292,10 +292,6 @@ export var EditorPluginInjectionAPI = /*#__PURE__*/function () {
292
292
  }
293
293
  var plugin = getPluginByName(prop);
294
294
  if (!plugin) {
295
- if (process.env.NODE_ENV === 'development') {
296
- // eslint-disable-next-line
297
- console.warn("Plugin: ".concat(prop, " does not exist"));
298
- }
299
295
  return undefined;
300
296
  }
301
297
  var sharedState = sharedStateAPI.createAPI(plugin);
@@ -17,7 +17,7 @@ import { createAndFireEvent, withAnalyticsContext, withAnalyticsEvents } from '@
17
17
  import { N0, N50A, N60A, N900 } from '@atlaskit/theme/colors';
18
18
  import Layer from '../Layer';
19
19
  var packageName = "@atlaskit/editor-common";
20
- var packageVersion = "78.11.6";
20
+ var packageVersion = "78.12.0";
21
21
  var halfFocusRing = 1;
22
22
  var dropOffset = '0, 8';
23
23
  var DropList = /*#__PURE__*/function (_Component) {
@@ -18,6 +18,8 @@ export interface Props {
18
18
  pluginInjectionApi: ExtensionsPluginInjectionAPI;
19
19
  showMacroInteractionDesignUpdates?: boolean;
20
20
  isNodeSelected?: boolean;
21
+ isNodeHovered?: boolean;
22
+ setIsNodeHovered?: (isHovered: boolean) => void;
21
23
  }
22
24
  /**
23
25
  * End workaround
@@ -7,6 +7,7 @@ export interface Props {
7
7
  node: PmNode;
8
8
  showMacroInteractionDesignUpdates?: boolean;
9
9
  isNodeSelected?: boolean;
10
+ isNodeHovered?: boolean;
10
11
  customContainerStyles?: CSSProperties;
11
12
  }
12
13
  export interface LozengeData {
@@ -12,6 +12,7 @@ type LozengeComponentProps = {
12
12
  isNodeSelected?: boolean;
13
13
  showMacroInteractionDesignUpdates?: boolean;
14
14
  customContainerStyles?: CSSProperties;
15
+ isNodeHovered?: boolean;
15
16
  };
16
- export declare const LozengeComponent: ({ lozengeData, isBlockExtension, title, params, renderImage, isNodeSelected, showMacroInteractionDesignUpdates, customContainerStyles, }: LozengeComponentProps) => jsx.JSX.Element;
17
+ export declare const LozengeComponent: ({ lozengeData, isBlockExtension, title, params, renderImage, isNodeSelected, showMacroInteractionDesignUpdates, customContainerStyles, isNodeHovered, }: LozengeComponentProps) => jsx.JSX.Element;
17
18
  export {};
@@ -27,6 +27,7 @@ export interface State {
27
27
  __hideFrame?: boolean;
28
28
  };
29
29
  activeChildIndex?: number;
30
+ isNodeHovered?: boolean;
30
31
  }
31
32
  export declare class ExtensionComponent extends Component<Props, State> {
32
33
  private privatePropsParsed;
@@ -39,6 +40,7 @@ export declare class ExtensionComponent extends Component<Props, State> {
39
40
  UNSAFE_componentWillReceiveProps(nextProps: Props): void;
40
41
  getNodeRenderer: import("memoize-one").MemoizedFn<typeof getNodeRenderer>;
41
42
  getExtensionModuleNodePrivateProps: import("memoize-one").MemoizedFn<typeof getExtensionModuleNodePrivateProps>;
43
+ setIsNodeHovered: (isHovered: boolean) => void;
42
44
  render(): JSX.Element | null;
43
45
  private setStateFromPromise;
44
46
  /**
@@ -20,6 +20,8 @@ type Props = {
20
20
  editorAppearance?: EditorAppearance;
21
21
  showMacroInteractionDesignUpdates?: boolean;
22
22
  isNodeSelected?: boolean;
23
+ isNodeHovered?: boolean;
24
+ setIsNodeHovered?: (isHovered: boolean) => void;
23
25
  };
24
26
  declare const MultiBodiedExtension: (props: Props & OverflowShadowProps) => jsx.JSX.Element;
25
27
  /**
@@ -76,6 +76,8 @@ export declare const paste: Keymap;
76
76
  export declare const altPaste: Keymap;
77
77
  export declare const find: Keymap;
78
78
  export declare const alignLeft: Keymap;
79
+ export declare const alignCenter: Keymap;
80
+ export declare const alignRight: Keymap;
79
81
  export declare const toggleTaskItemCheckbox: Keymap;
80
82
  export declare const selectRow: Keymap[];
81
83
  export declare const selectColumn: Keymap[];
@@ -18,6 +18,8 @@ export interface Props {
18
18
  pluginInjectionApi: ExtensionsPluginInjectionAPI;
19
19
  showMacroInteractionDesignUpdates?: boolean;
20
20
  isNodeSelected?: boolean;
21
+ isNodeHovered?: boolean;
22
+ setIsNodeHovered?: (isHovered: boolean) => void;
21
23
  }
22
24
  /**
23
25
  * End workaround
@@ -7,6 +7,7 @@ export interface Props {
7
7
  node: PmNode;
8
8
  showMacroInteractionDesignUpdates?: boolean;
9
9
  isNodeSelected?: boolean;
10
+ isNodeHovered?: boolean;
10
11
  customContainerStyles?: CSSProperties;
11
12
  }
12
13
  export interface LozengeData {
@@ -12,6 +12,7 @@ type LozengeComponentProps = {
12
12
  isNodeSelected?: boolean;
13
13
  showMacroInteractionDesignUpdates?: boolean;
14
14
  customContainerStyles?: CSSProperties;
15
+ isNodeHovered?: boolean;
15
16
  };
16
- export declare const LozengeComponent: ({ lozengeData, isBlockExtension, title, params, renderImage, isNodeSelected, showMacroInteractionDesignUpdates, customContainerStyles, }: LozengeComponentProps) => jsx.JSX.Element;
17
+ export declare const LozengeComponent: ({ lozengeData, isBlockExtension, title, params, renderImage, isNodeSelected, showMacroInteractionDesignUpdates, customContainerStyles, isNodeHovered, }: LozengeComponentProps) => jsx.JSX.Element;
17
18
  export {};
@@ -27,6 +27,7 @@ export interface State {
27
27
  __hideFrame?: boolean;
28
28
  };
29
29
  activeChildIndex?: number;
30
+ isNodeHovered?: boolean;
30
31
  }
31
32
  export declare class ExtensionComponent extends Component<Props, State> {
32
33
  private privatePropsParsed;
@@ -39,6 +40,7 @@ export declare class ExtensionComponent extends Component<Props, State> {
39
40
  UNSAFE_componentWillReceiveProps(nextProps: Props): void;
40
41
  getNodeRenderer: import("memoize-one").MemoizedFn<typeof getNodeRenderer>;
41
42
  getExtensionModuleNodePrivateProps: import("memoize-one").MemoizedFn<typeof getExtensionModuleNodePrivateProps>;
43
+ setIsNodeHovered: (isHovered: boolean) => void;
42
44
  render(): JSX.Element | null;
43
45
  private setStateFromPromise;
44
46
  /**
@@ -20,6 +20,8 @@ type Props = {
20
20
  editorAppearance?: EditorAppearance;
21
21
  showMacroInteractionDesignUpdates?: boolean;
22
22
  isNodeSelected?: boolean;
23
+ isNodeHovered?: boolean;
24
+ setIsNodeHovered?: (isHovered: boolean) => void;
23
25
  };
24
26
  declare const MultiBodiedExtension: (props: Props & OverflowShadowProps) => jsx.JSX.Element;
25
27
  /**
@@ -76,6 +76,8 @@ export declare const paste: Keymap;
76
76
  export declare const altPaste: Keymap;
77
77
  export declare const find: Keymap;
78
78
  export declare const alignLeft: Keymap;
79
+ export declare const alignCenter: Keymap;
80
+ export declare const alignRight: Keymap;
79
81
  export declare const toggleTaskItemCheckbox: Keymap;
80
82
  export declare const selectRow: Keymap[];
81
83
  export declare const selectColumn: Keymap[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-common",
3
- "version": "78.11.6",
3
+ "version": "78.12.0",
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/"
@@ -122,11 +122,11 @@
122
122
  "@atlaskit/media-file-preview": "^0.5.0",
123
123
  "@atlaskit/media-picker": "^66.3.0",
124
124
  "@atlaskit/media-ui": "^25.4.0",
125
- "@atlaskit/media-viewer": "48.3.5",
125
+ "@atlaskit/media-viewer": "48.3.6",
126
126
  "@atlaskit/mention": "^23.0.0",
127
127
  "@atlaskit/menu": "^2.1.0",
128
128
  "@atlaskit/platform-feature-flags": "^0.2.0",
129
- "@atlaskit/primitives": "^4.0.0",
129
+ "@atlaskit/primitives": "^4.1.0",
130
130
  "@atlaskit/profilecard": "^19.11.0",
131
131
  "@atlaskit/section-message": "^6.4.0",
132
132
  "@atlaskit/smart-card": "^26.49.0",
@@ -134,9 +134,9 @@
134
134
  "@atlaskit/spinner": "^16.0.0",
135
135
  "@atlaskit/tag": "^12.0.0",
136
136
  "@atlaskit/task-decision": "^17.9.0",
137
- "@atlaskit/textfield": "^6.0.0",
137
+ "@atlaskit/textfield": "^6.1.0",
138
138
  "@atlaskit/theme": "^12.6.0",
139
- "@atlaskit/tokens": "^1.39.0",
139
+ "@atlaskit/tokens": "^1.41.0",
140
140
  "@atlaskit/tooltip": "^18.1.0",
141
141
  "@atlaskit/ufo": "^0.2.0",
142
142
  "@atlaskit/width-detector": "^4.1.0",