@atlaskit/editor-common 78.11.6 → 78.11.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/dist/cjs/extensibility/Extension/Extension/index.js +16 -2
- package/dist/cjs/extensibility/Extension/Lozenge.js +2 -0
- package/dist/cjs/extensibility/Extension/LozengeComponent.js +23 -18
- package/dist/cjs/extensibility/Extension/styles.js +9 -1
- package/dist/cjs/extensibility/ExtensionComponent.js +11 -2
- package/dist/cjs/extensibility/MultiBodiedExtension/index.js +17 -3
- package/dist/cjs/monitoring/error.js +1 -1
- package/dist/cjs/preset/plugin-injection-api.js +0 -4
- package/dist/cjs/ui/DropList/index.js +1 -1
- package/dist/es2019/extensibility/Extension/Extension/index.js +12 -2
- package/dist/es2019/extensibility/Extension/Lozenge.js +2 -0
- package/dist/es2019/extensibility/Extension/LozengeComponent.js +22 -17
- package/dist/es2019/extensibility/Extension/styles.js +9 -1
- package/dist/es2019/extensibility/ExtensionComponent.js +11 -2
- package/dist/es2019/extensibility/MultiBodiedExtension/index.js +13 -3
- package/dist/es2019/monitoring/error.js +1 -1
- package/dist/es2019/preset/plugin-injection-api.js +0 -4
- package/dist/es2019/ui/DropList/index.js +1 -1
- package/dist/esm/extensibility/Extension/Extension/index.js +16 -2
- package/dist/esm/extensibility/Extension/Lozenge.js +2 -0
- package/dist/esm/extensibility/Extension/LozengeComponent.js +23 -18
- package/dist/esm/extensibility/Extension/styles.js +9 -1
- package/dist/esm/extensibility/ExtensionComponent.js +11 -2
- package/dist/esm/extensibility/MultiBodiedExtension/index.js +17 -3
- package/dist/esm/monitoring/error.js +1 -1
- package/dist/esm/preset/plugin-injection-api.js +0 -4
- package/dist/esm/ui/DropList/index.js +1 -1
- package/dist/types/extensibility/Extension/Extension/index.d.ts +2 -0
- package/dist/types/extensibility/Extension/Lozenge.d.ts +1 -0
- package/dist/types/extensibility/Extension/LozengeComponent.d.ts +2 -1
- package/dist/types/extensibility/ExtensionComponent.d.ts +2 -0
- package/dist/types/extensibility/MultiBodiedExtension/index.d.ts +2 -0
- package/dist/types-ts4.5/extensibility/Extension/Extension/index.d.ts +2 -0
- package/dist/types-ts4.5/extensibility/Extension/Lozenge.d.ts +1 -0
- package/dist/types-ts4.5/extensibility/Extension/LozengeComponent.d.ts +2 -1
- package/dist/types-ts4.5/extensibility/ExtensionComponent.d.ts +2 -0
- package/dist/types-ts4.5/extensibility/MultiBodiedExtension/index.d.ts +2 -0
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# @atlaskit/editor-common
|
|
2
2
|
|
|
3
|
+
## 78.11.7
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#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
|
|
8
|
+
- [#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
|
|
9
|
+
|
|
3
10
|
## 78.11.6
|
|
4
11
|
|
|
5
12
|
### 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:
|
|
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,
|
|
@@ -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.
|
|
19
|
+
var packageVersion = "78.11.7";
|
|
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.
|
|
25
|
+
var packageVersion = "78.11.7";
|
|
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:
|
|
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,
|
|
@@ -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.
|
|
3
|
+
const packageVersion = "78.11.7";
|
|
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.
|
|
10
|
+
const packageVersion = "78.11.7";
|
|
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:
|
|
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,
|
|
@@ -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.
|
|
9
|
+
var packageVersion = "78.11.7";
|
|
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.
|
|
20
|
+
var packageVersion = "78.11.7";
|
|
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
|
|
@@ -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
|
/**
|
|
@@ -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
|
|
@@ -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
|
/**
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/editor-common",
|
|
3
|
-
"version": "78.11.
|
|
3
|
+
"version": "78.11.7",
|
|
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/"
|
|
@@ -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.
|
|
137
|
+
"@atlaskit/textfield": "^6.1.0",
|
|
138
138
|
"@atlaskit/theme": "^12.6.0",
|
|
139
|
-
"@atlaskit/tokens": "^1.
|
|
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",
|