@atlaskit/editor-common 102.10.3 → 102.11.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.
- package/CHANGELOG.md +17 -0
- package/dist/cjs/floating-toolbar/DropdownMenuExtensionItems.js +203 -0
- package/dist/cjs/floating-toolbar/DropdownMenuItem.js +203 -0
- package/dist/cjs/floating-toolbar/index.js +15 -1
- package/dist/cjs/messages/index.js +5 -0
- package/dist/cjs/monitoring/error.js +1 -1
- package/dist/cjs/ui/DropList/index.js +1 -1
- package/dist/es2019/floating-toolbar/DropdownMenuExtensionItems.js +126 -0
- package/dist/es2019/floating-toolbar/DropdownMenuItem.js +196 -0
- package/dist/es2019/floating-toolbar/index.js +3 -1
- package/dist/es2019/messages/index.js +5 -0
- package/dist/es2019/monitoring/error.js +1 -1
- package/dist/es2019/ui/DropList/index.js +1 -1
- package/dist/esm/floating-toolbar/DropdownMenuExtensionItems.js +193 -0
- package/dist/esm/floating-toolbar/DropdownMenuItem.js +195 -0
- package/dist/esm/floating-toolbar/index.js +3 -1
- package/dist/esm/messages/index.js +5 -0
- package/dist/esm/monitoring/error.js +1 -1
- package/dist/esm/ui/DropList/index.js +1 -1
- package/dist/types/floating-toolbar/DropdownMenuExtensionItems.d.ts +24 -0
- package/dist/types/floating-toolbar/DropdownMenuItem.d.ts +43 -0
- package/dist/types/floating-toolbar/index.d.ts +3 -0
- package/dist/types/messages/index.d.ts +5 -0
- package/dist/types/types/floating-toolbar.d.ts +8 -1
- package/dist/types-ts4.5/floating-toolbar/DropdownMenuExtensionItems.d.ts +24 -0
- package/dist/types-ts4.5/floating-toolbar/DropdownMenuItem.d.ts +43 -0
- package/dist/types-ts4.5/floating-toolbar/index.d.ts +3 -0
- package/dist/types-ts4.5/messages/index.d.ts +5 -0
- package/dist/types-ts4.5/types/floating-toolbar.d.ts +8 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# @atlaskit/editor-common
|
|
2
2
|
|
|
3
|
+
## 102.11.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#127253](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/127253)
|
|
8
|
+
[`a2593d5c73ccb`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/a2593d5c73ccb) -
|
|
9
|
+
[ux] Table overflow menu on floating toolbar
|
|
10
|
+
|
|
11
|
+
## 102.10.4
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- [#128122](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/128122)
|
|
16
|
+
[`27fc970e08293`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/27fc970e08293) -
|
|
17
|
+
ED-27167 Move datasource copy and delete buttons to overflow menu in floating toolbar
|
|
18
|
+
- Updated dependencies
|
|
19
|
+
|
|
3
20
|
## 102.10.3
|
|
4
21
|
|
|
5
22
|
### Patch Changes
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.DropdownMenuExtensionItems = void 0;
|
|
9
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
10
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
11
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
12
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
13
|
+
var _reactLoadable = _interopRequireDefault(require("react-loadable"));
|
|
14
|
+
var _extensions = require("../extensions");
|
|
15
|
+
var _utils = require("../utils");
|
|
16
|
+
var _DropdownMenuItem = require("./DropdownMenuItem");
|
|
17
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
18
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
19
|
+
var noop = function noop() {
|
|
20
|
+
return null;
|
|
21
|
+
};
|
|
22
|
+
var isDefaultExport = function isDefaultExport(mod) {
|
|
23
|
+
return mod.hasOwnProperty('default');
|
|
24
|
+
};
|
|
25
|
+
var resolveExtensionIcon = /*#__PURE__*/function () {
|
|
26
|
+
var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(getIcon) {
|
|
27
|
+
var maybeIcon;
|
|
28
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
29
|
+
while (1) switch (_context.prev = _context.next) {
|
|
30
|
+
case 0:
|
|
31
|
+
if (getIcon) {
|
|
32
|
+
_context.next = 2;
|
|
33
|
+
break;
|
|
34
|
+
}
|
|
35
|
+
return _context.abrupt("return", noop);
|
|
36
|
+
case 2:
|
|
37
|
+
_context.next = 4;
|
|
38
|
+
return getIcon();
|
|
39
|
+
case 4:
|
|
40
|
+
maybeIcon = _context.sent;
|
|
41
|
+
return _context.abrupt("return", isDefaultExport(maybeIcon) ? maybeIcon.default : maybeIcon);
|
|
42
|
+
case 6:
|
|
43
|
+
case "end":
|
|
44
|
+
return _context.stop();
|
|
45
|
+
}
|
|
46
|
+
}, _callee);
|
|
47
|
+
}));
|
|
48
|
+
return function resolveExtensionIcon(_x) {
|
|
49
|
+
return _ref.apply(this, arguments);
|
|
50
|
+
};
|
|
51
|
+
}();
|
|
52
|
+
var convertExtensionToDropdownMenuItem = function convertExtensionToDropdownMenuItem(_ref2) {
|
|
53
|
+
var item = _ref2.item,
|
|
54
|
+
disabled = _ref2.disabled,
|
|
55
|
+
node = _ref2.node,
|
|
56
|
+
extension = _ref2.extension;
|
|
57
|
+
var ButtonIcon = item.icon ? (0, _reactLoadable.default)({
|
|
58
|
+
// Ignored via go/ees005
|
|
59
|
+
// eslint-disable-next-line require-await
|
|
60
|
+
loader: function () {
|
|
61
|
+
var _loader = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
|
|
62
|
+
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
63
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
64
|
+
case 0:
|
|
65
|
+
return _context2.abrupt("return", resolveExtensionIcon(item.icon));
|
|
66
|
+
case 1:
|
|
67
|
+
case "end":
|
|
68
|
+
return _context2.stop();
|
|
69
|
+
}
|
|
70
|
+
}, _callee2);
|
|
71
|
+
}));
|
|
72
|
+
function loader() {
|
|
73
|
+
return _loader.apply(this, arguments);
|
|
74
|
+
}
|
|
75
|
+
return loader;
|
|
76
|
+
}(),
|
|
77
|
+
loading: noop
|
|
78
|
+
}) : undefined;
|
|
79
|
+
var title = '';
|
|
80
|
+
if (item.label) {
|
|
81
|
+
title = item.label;
|
|
82
|
+
} else if (typeof item.tooltip === 'string') {
|
|
83
|
+
title = item.tooltip;
|
|
84
|
+
} else if (item.ariaLabel) {
|
|
85
|
+
title = item.ariaLabel;
|
|
86
|
+
}
|
|
87
|
+
item.disabled = (disabled === null || disabled === void 0 ? void 0 : disabled(item.key)) || false;
|
|
88
|
+
return {
|
|
89
|
+
title: title,
|
|
90
|
+
icon: ButtonIcon ? /*#__PURE__*/_react.default.createElement(ButtonIcon, {
|
|
91
|
+
label: item.label || ''
|
|
92
|
+
}) : undefined,
|
|
93
|
+
disabled: item.disabled,
|
|
94
|
+
onClick: function onClick() {
|
|
95
|
+
if (typeof item.action !== 'function') {
|
|
96
|
+
throw new Error("'action' of context toolbar item '".concat(item.key, "' is not a function"));
|
|
97
|
+
}
|
|
98
|
+
var targetNodeAdf = (0, _utils.nodeToJSON)(node);
|
|
99
|
+
extension.extensionApi && item.action(targetNodeAdf, extension.extensionApi);
|
|
100
|
+
return true;
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
};
|
|
104
|
+
var DropdownMenuExtensionItem = function DropdownMenuExtensionItem(_ref3) {
|
|
105
|
+
var item = _ref3.item,
|
|
106
|
+
editorView = _ref3.editorView,
|
|
107
|
+
disabled = _ref3.disabled,
|
|
108
|
+
node = _ref3.node,
|
|
109
|
+
extension = _ref3.extension,
|
|
110
|
+
dropdownOptions = _ref3.dropdownOptions;
|
|
111
|
+
var dropdownItem = convertExtensionToDropdownMenuItem({
|
|
112
|
+
item: item,
|
|
113
|
+
disabled: disabled,
|
|
114
|
+
node: node,
|
|
115
|
+
extension: extension
|
|
116
|
+
});
|
|
117
|
+
if (!dropdownItem) {
|
|
118
|
+
return null;
|
|
119
|
+
}
|
|
120
|
+
return /*#__PURE__*/_react.default.createElement(_DropdownMenuItem.DropdownMenuItem, {
|
|
121
|
+
key: item.key,
|
|
122
|
+
item: dropdownItem,
|
|
123
|
+
editorView: editorView,
|
|
124
|
+
hide: dropdownOptions.hide,
|
|
125
|
+
dispatchCommand: dropdownOptions.dispatchCommand,
|
|
126
|
+
showSelected: dropdownOptions.showSelected,
|
|
127
|
+
intl: dropdownOptions.intl
|
|
128
|
+
});
|
|
129
|
+
};
|
|
130
|
+
var DropdownMenuExtensionItems = exports.DropdownMenuExtensionItems = function DropdownMenuExtensionItems(props) {
|
|
131
|
+
var node = props.node,
|
|
132
|
+
editorView = props.editorView,
|
|
133
|
+
extension = props.extension,
|
|
134
|
+
disabled = props.disabled,
|
|
135
|
+
dropdownOptions = props.dropdownOptions;
|
|
136
|
+
|
|
137
|
+
// Ignored via go/ees005
|
|
138
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
139
|
+
var _useState = (0, _react.useState)([]),
|
|
140
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
141
|
+
extensions = _useState2[0],
|
|
142
|
+
setExtensions = _useState2[1];
|
|
143
|
+
(0, _react.useEffect)(function () {
|
|
144
|
+
getExtensions();
|
|
145
|
+
function getExtensions() {
|
|
146
|
+
return _getExtensions.apply(this, arguments);
|
|
147
|
+
}
|
|
148
|
+
function _getExtensions() {
|
|
149
|
+
_getExtensions = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
|
|
150
|
+
var provider;
|
|
151
|
+
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
152
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
153
|
+
case 0:
|
|
154
|
+
_context3.next = 2;
|
|
155
|
+
return extension.extensionProvider;
|
|
156
|
+
case 2:
|
|
157
|
+
provider = _context3.sent;
|
|
158
|
+
if (!provider) {
|
|
159
|
+
_context3.next = 9;
|
|
160
|
+
break;
|
|
161
|
+
}
|
|
162
|
+
_context3.t0 = setExtensions;
|
|
163
|
+
_context3.next = 7;
|
|
164
|
+
return provider.getExtensions();
|
|
165
|
+
case 7:
|
|
166
|
+
_context3.t1 = _context3.sent;
|
|
167
|
+
(0, _context3.t0)(_context3.t1);
|
|
168
|
+
case 9:
|
|
169
|
+
case "end":
|
|
170
|
+
return _context3.stop();
|
|
171
|
+
}
|
|
172
|
+
}, _callee3);
|
|
173
|
+
}));
|
|
174
|
+
return _getExtensions.apply(this, arguments);
|
|
175
|
+
}
|
|
176
|
+
}, [extension.extensionProvider]);
|
|
177
|
+
var nodeAdf = _react.default.useMemo(function () {
|
|
178
|
+
return (0, _utils.nodeToJSON)(node);
|
|
179
|
+
}, [node]);
|
|
180
|
+
var extensionItems = _react.default.useMemo(function () {
|
|
181
|
+
if (!extension.extensionApi) {
|
|
182
|
+
return [];
|
|
183
|
+
}
|
|
184
|
+
return (0, _extensions.getContextualToolbarItemsFromModule)(extensions, nodeAdf, extension.extensionApi);
|
|
185
|
+
}, [extensions, nodeAdf, extension.extensionApi]);
|
|
186
|
+
if (!extensionItems.length || !dropdownOptions) {
|
|
187
|
+
return null;
|
|
188
|
+
}
|
|
189
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, extensionItems.map(function (item, idx) {
|
|
190
|
+
if (!('key' in item)) {
|
|
191
|
+
return null;
|
|
192
|
+
}
|
|
193
|
+
return /*#__PURE__*/_react.default.createElement(DropdownMenuExtensionItem, {
|
|
194
|
+
key: item.key,
|
|
195
|
+
item: item,
|
|
196
|
+
editorView: editorView,
|
|
197
|
+
disabled: disabled,
|
|
198
|
+
node: node,
|
|
199
|
+
extension: extension,
|
|
200
|
+
dropdownOptions: dropdownOptions
|
|
201
|
+
});
|
|
202
|
+
}));
|
|
203
|
+
};
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.menuItemDimensions = exports.DropdownMenuItem = void 0;
|
|
8
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
9
|
+
var _react = require("react");
|
|
10
|
+
var _react2 = require("@emotion/react");
|
|
11
|
+
var _checkMarkEditorDone = _interopRequireDefault(require("@atlaskit/icon/core/migration/check-mark--editor-done"));
|
|
12
|
+
var _menu = require("@atlaskit/menu");
|
|
13
|
+
var _tooltip = _interopRequireDefault(require("@atlaskit/tooltip"));
|
|
14
|
+
var _floatingToolbar = require("../floating-toolbar");
|
|
15
|
+
/**
|
|
16
|
+
* @jsxRuntime classic
|
|
17
|
+
* @jsx jsx
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
|
|
21
|
+
|
|
22
|
+
// eslint-disable-next-line @atlaskit/design-system/no-deprecated-imports
|
|
23
|
+
|
|
24
|
+
var menuItemDimensions = exports.menuItemDimensions = {
|
|
25
|
+
width: 175,
|
|
26
|
+
height: 32
|
|
27
|
+
};
|
|
28
|
+
var labelStyles = (0, _react2.css)({
|
|
29
|
+
display: 'inline-block',
|
|
30
|
+
width: '100%'
|
|
31
|
+
});
|
|
32
|
+
var spacerStyles = (0, _react2.css)({
|
|
33
|
+
display: 'flex',
|
|
34
|
+
flex: 1,
|
|
35
|
+
padding: "var(--ds-space-100, 8px)"
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
// Extend the ButtonItem component type to allow mouse events to be accepted from the Typescript check
|
|
39
|
+
|
|
40
|
+
var DropdownButtonItem = _menu.ButtonItem;
|
|
41
|
+
var SelectedIconBefore = function SelectedIconBefore(_ref) {
|
|
42
|
+
var itemSelected = _ref.itemSelected,
|
|
43
|
+
intl = _ref.intl,
|
|
44
|
+
showSelected = _ref.showSelected;
|
|
45
|
+
if (showSelected && itemSelected) {
|
|
46
|
+
return (0, _react2.jsx)("span", {
|
|
47
|
+
"aria-hidden": "true"
|
|
48
|
+
}, (0, _react2.jsx)(_checkMarkEditorDone.default, {
|
|
49
|
+
LEGACY_primaryColor: "var(--ds-icon-selected, #0C66E4)",
|
|
50
|
+
LEGACY_size: "small",
|
|
51
|
+
label: intl.formatMessage(_floatingToolbar.messages.confirmModalOK),
|
|
52
|
+
spacing: "none"
|
|
53
|
+
}));
|
|
54
|
+
}
|
|
55
|
+
return (0, _react2.jsx)("span", {
|
|
56
|
+
css: spacerStyles
|
|
57
|
+
});
|
|
58
|
+
};
|
|
59
|
+
var DropdownMenuItem = exports.DropdownMenuItem = function DropdownMenuItem(props) {
|
|
60
|
+
var item = props.item,
|
|
61
|
+
hide = props.hide,
|
|
62
|
+
dispatchCommand = props.dispatchCommand,
|
|
63
|
+
editorView = props.editorView,
|
|
64
|
+
showSelected = props.showSelected,
|
|
65
|
+
intl = props.intl;
|
|
66
|
+
var itemSelected = item.selected;
|
|
67
|
+
var iconBefore = (0, _react.useMemo)(function () {
|
|
68
|
+
if (item.icon) {
|
|
69
|
+
return item.icon;
|
|
70
|
+
} else {
|
|
71
|
+
return (0, _react2.jsx)(SelectedIconBefore, {
|
|
72
|
+
itemSelected: itemSelected,
|
|
73
|
+
showSelected: showSelected,
|
|
74
|
+
intl: intl
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
}, [itemSelected, showSelected, intl, item.icon]);
|
|
78
|
+
var _useState = (0, _react.useState)(item.tooltip || ''),
|
|
79
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
80
|
+
tooltipContent = _useState2[0],
|
|
81
|
+
setTooltipContent = _useState2[1];
|
|
82
|
+
var handleItemMouseOut = (0, _react.useCallback)(function () {
|
|
83
|
+
setTooltipContent('');
|
|
84
|
+
if (item.onMouseOut) {
|
|
85
|
+
dispatchCommand(item.onMouseOut);
|
|
86
|
+
}
|
|
87
|
+
}, [item.onMouseOut, dispatchCommand]);
|
|
88
|
+
var handleItemMouseDown = (0, _react.useCallback)(function (e) {
|
|
89
|
+
e.preventDefault(); // ED-16204 - This is needed for safari to get handleItemClick() to work
|
|
90
|
+
if (item.onMouseDown) {
|
|
91
|
+
dispatchCommand(item.onMouseDown);
|
|
92
|
+
}
|
|
93
|
+
}, [item.onMouseDown, dispatchCommand]);
|
|
94
|
+
var handleItemMouseOver = (0, _react.useCallback)(function () {
|
|
95
|
+
setTooltipContent(item.tooltip || '');
|
|
96
|
+
if (item.onMouseOver) {
|
|
97
|
+
dispatchCommand(item.onMouseOver);
|
|
98
|
+
}
|
|
99
|
+
}, [item.tooltip, item.onMouseOver, dispatchCommand]);
|
|
100
|
+
var handleItemMouseEnter = (0, _react.useCallback)(function (e) {
|
|
101
|
+
if (item.onMouseEnter) {
|
|
102
|
+
e.preventDefault();
|
|
103
|
+
dispatchCommand(item.onMouseEnter);
|
|
104
|
+
}
|
|
105
|
+
}, [item.onMouseEnter, dispatchCommand]);
|
|
106
|
+
var handleItemMouseLeave = (0, _react.useCallback)(function (e) {
|
|
107
|
+
if (item.onMouseLeave) {
|
|
108
|
+
e.preventDefault();
|
|
109
|
+
dispatchCommand(item.onMouseLeave);
|
|
110
|
+
}
|
|
111
|
+
}, [item.onMouseLeave, dispatchCommand]);
|
|
112
|
+
var handleItemOnFocus = (0, _react.useCallback)(function (e) {
|
|
113
|
+
if (item.onFocus) {
|
|
114
|
+
e.preventDefault();
|
|
115
|
+
dispatchCommand(item.onFocus);
|
|
116
|
+
}
|
|
117
|
+
}, [item.onFocus, dispatchCommand]);
|
|
118
|
+
var handleItemOnBlur = (0, _react.useCallback)(function (e) {
|
|
119
|
+
if (item.onBlur) {
|
|
120
|
+
e.preventDefault();
|
|
121
|
+
dispatchCommand(item.onBlur);
|
|
122
|
+
}
|
|
123
|
+
}, [item.onBlur, dispatchCommand]);
|
|
124
|
+
var handleItemClick = (0, _react.useCallback)(function () {
|
|
125
|
+
/**
|
|
126
|
+
* The order of dispatching the event and hide() is important, because
|
|
127
|
+
* the ClickAreaBlock will be relying on the element to calculate the
|
|
128
|
+
* click coordinate.
|
|
129
|
+
* For more details, please visit the comment in this PR https://bitbucket.org/atlassian/atlassian-frontend/pull-requests/5328/edm-1321-set-selection-near-smart-link?link_source=email#chg-packages/editor/editor-core/src/plugins/floating-toolbar/ui/DropdownMenu.tsx
|
|
130
|
+
*/
|
|
131
|
+
dispatchCommand(item.onClick);
|
|
132
|
+
hide();
|
|
133
|
+
if (!(editorView !== null && editorView !== void 0 && editorView.hasFocus())) {
|
|
134
|
+
editorView === null || editorView === void 0 || editorView.focus();
|
|
135
|
+
}
|
|
136
|
+
}, [dispatchCommand, item.onClick, hide, editorView]);
|
|
137
|
+
|
|
138
|
+
/* ED-16704 - Native mouse event handler to overcome firefox issue on disabled <button> - https://github.com/whatwg/html/issues/5886 */
|
|
139
|
+
var labelRef = (0, _react.useRef)(null);
|
|
140
|
+
var handleTitleWrapperMouseEvent = (0, _react.useCallback)(
|
|
141
|
+
// Ignored via go/ees005
|
|
142
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
143
|
+
function (e) {
|
|
144
|
+
if (item.disabled) {
|
|
145
|
+
e.stopPropagation();
|
|
146
|
+
e.preventDefault();
|
|
147
|
+
}
|
|
148
|
+
}, [item.disabled]);
|
|
149
|
+
|
|
150
|
+
// Ignored via go/ees005
|
|
151
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
152
|
+
var isAriaChecked = function isAriaChecked(item) {
|
|
153
|
+
var selected = item.selected,
|
|
154
|
+
domItemOptions = item.domItemOptions;
|
|
155
|
+
return (domItemOptions === null || domItemOptions === void 0 ? void 0 : domItemOptions.type) === 'item-checkbox' ? selected : undefined;
|
|
156
|
+
};
|
|
157
|
+
|
|
158
|
+
// Ignored via go/ees005
|
|
159
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
160
|
+
var hasRole = function hasRole(item) {
|
|
161
|
+
var _item$domItemOptions;
|
|
162
|
+
return ((_item$domItemOptions = item.domItemOptions) === null || _item$domItemOptions === void 0 ? void 0 : _item$domItemOptions.type) === 'item-checkbox' ? 'menuitemcheckbox' : undefined;
|
|
163
|
+
};
|
|
164
|
+
(0, _react.useEffect)(function () {
|
|
165
|
+
var labelRefCurrent = labelRef.current;
|
|
166
|
+
// eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
|
|
167
|
+
labelRefCurrent === null || labelRefCurrent === void 0 || labelRefCurrent.addEventListener('click', handleTitleWrapperMouseEvent);
|
|
168
|
+
// eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
|
|
169
|
+
labelRefCurrent === null || labelRefCurrent === void 0 || labelRefCurrent.addEventListener('mousedown', handleTitleWrapperMouseEvent);
|
|
170
|
+
return function () {
|
|
171
|
+
// eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
|
|
172
|
+
labelRefCurrent === null || labelRefCurrent === void 0 || labelRefCurrent.removeEventListener('click', handleTitleWrapperMouseEvent);
|
|
173
|
+
// eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
|
|
174
|
+
labelRefCurrent === null || labelRefCurrent === void 0 || labelRefCurrent.removeEventListener('mousedown', handleTitleWrapperMouseEvent);
|
|
175
|
+
};
|
|
176
|
+
});
|
|
177
|
+
var itemContent = (0, _react2.jsx)(DropdownButtonItem, {
|
|
178
|
+
isSelected: itemSelected,
|
|
179
|
+
iconBefore: iconBefore,
|
|
180
|
+
iconAfter: item.elemAfter,
|
|
181
|
+
onClick: handleItemClick,
|
|
182
|
+
"data-testid": item.testId,
|
|
183
|
+
isDisabled: item.disabled,
|
|
184
|
+
onMouseDown: handleItemMouseDown,
|
|
185
|
+
onMouseOver: handleItemMouseOver,
|
|
186
|
+
onMouseEnter: handleItemMouseEnter,
|
|
187
|
+
onMouseLeave: handleItemMouseLeave,
|
|
188
|
+
onMouseOut: handleItemMouseOut,
|
|
189
|
+
onFocus: handleItemOnFocus,
|
|
190
|
+
onBlur: handleItemOnBlur,
|
|
191
|
+
role: hasRole(item),
|
|
192
|
+
"aria-checked": isAriaChecked(item)
|
|
193
|
+
}, (0, _react2.jsx)("span", {
|
|
194
|
+
ref: labelRef,
|
|
195
|
+
css: labelStyles
|
|
196
|
+
}, item.title));
|
|
197
|
+
if (tooltipContent) {
|
|
198
|
+
return (0, _react2.jsx)(_tooltip.default, {
|
|
199
|
+
content: tooltipContent
|
|
200
|
+
}, itemContent);
|
|
201
|
+
}
|
|
202
|
+
return itemContent;
|
|
203
|
+
};
|
|
@@ -4,6 +4,18 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
+
Object.defineProperty(exports, "DropdownMenuExtensionItems", {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function get() {
|
|
10
|
+
return _DropdownMenuExtensionItems.DropdownMenuExtensionItems;
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
Object.defineProperty(exports, "DropdownMenuItem", {
|
|
14
|
+
enumerable: true,
|
|
15
|
+
get: function get() {
|
|
16
|
+
return _DropdownMenuItem.DropdownMenuItem;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
7
19
|
exports.isSameItem = exports.compareArrays = exports.areSameItems = void 0;
|
|
8
20
|
Object.defineProperty(exports, "messages", {
|
|
9
21
|
enumerable: true,
|
|
@@ -12,6 +24,8 @@ Object.defineProperty(exports, "messages", {
|
|
|
12
24
|
}
|
|
13
25
|
});
|
|
14
26
|
exports.shallowEqual = void 0;
|
|
27
|
+
var _DropdownMenuExtensionItems = require("./DropdownMenuExtensionItems");
|
|
28
|
+
var _DropdownMenuItem = require("./DropdownMenuItem");
|
|
15
29
|
var _messages = _interopRequireDefault(require("./messages"));
|
|
16
30
|
// Ignored via go/ees005
|
|
17
31
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -132,4 +146,4 @@ var areSameItems = exports.areSameItems = function areSameItems(leftArr, rightAr
|
|
|
132
146
|
});
|
|
133
147
|
};
|
|
134
148
|
|
|
135
|
-
|
|
149
|
+
/* eslint-disable @atlaskit/editor/no-re-export */
|
|
@@ -291,6 +291,11 @@ var _default = exports.default = (0, _reactIntlNext.defineMessages)({
|
|
|
291
291
|
defaultMessage: 'Align left',
|
|
292
292
|
description: 'Aligns image to the left'
|
|
293
293
|
},
|
|
294
|
+
delete: {
|
|
295
|
+
id: 'fabric.editor.delete',
|
|
296
|
+
defaultMessage: 'Delete',
|
|
297
|
+
description: 'Delete the element (image, panel, table, etc.) from your document'
|
|
298
|
+
},
|
|
294
299
|
remove: {
|
|
295
300
|
id: 'fabric.editor.remove',
|
|
296
301
|
defaultMessage: 'Remove',
|
|
@@ -17,7 +17,7 @@ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return
|
|
|
17
17
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
18
18
|
var SENTRY_DSN = 'https://0b10c8e02fb44d8796c047b102c9bee8@o55978.ingest.sentry.io/4505129224110080';
|
|
19
19
|
var packageName = 'editor-common'; // Sentry doesn't accept '/' in its releases https://docs.sentry.io/platforms/javascript/configuration/releases/
|
|
20
|
-
var packageVersion = "102.
|
|
20
|
+
var packageVersion = "102.11.0";
|
|
21
21
|
var sanitiseSentryEvents = function sanitiseSentryEvents(data, _hint) {
|
|
22
22
|
// Remove URL as it has UGC
|
|
23
23
|
// Ignored via go/ees007
|
|
@@ -23,7 +23,7 @@ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.
|
|
|
23
23
|
* @jsx jsx
|
|
24
24
|
*/ // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
|
|
25
25
|
var packageName = "@atlaskit/editor-common";
|
|
26
|
-
var packageVersion = "102.
|
|
26
|
+
var packageVersion = "102.11.0";
|
|
27
27
|
var halfFocusRing = 1;
|
|
28
28
|
var dropOffset = '0, 8';
|
|
29
29
|
// Ignored via go/ees005
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import React, { useEffect, useState } from 'react';
|
|
2
|
+
import Loadable from 'react-loadable';
|
|
3
|
+
import { getContextualToolbarItemsFromModule } from '../extensions';
|
|
4
|
+
import { nodeToJSON } from '../utils';
|
|
5
|
+
import { DropdownMenuItem } from './DropdownMenuItem';
|
|
6
|
+
const noop = () => null;
|
|
7
|
+
const isDefaultExport = mod => {
|
|
8
|
+
return mod.hasOwnProperty('default');
|
|
9
|
+
};
|
|
10
|
+
const resolveExtensionIcon = async getIcon => {
|
|
11
|
+
if (!getIcon) {
|
|
12
|
+
return noop;
|
|
13
|
+
}
|
|
14
|
+
const maybeIcon = await getIcon();
|
|
15
|
+
return isDefaultExport(maybeIcon) ? maybeIcon.default : maybeIcon;
|
|
16
|
+
};
|
|
17
|
+
const convertExtensionToDropdownMenuItem = ({
|
|
18
|
+
item,
|
|
19
|
+
disabled,
|
|
20
|
+
node,
|
|
21
|
+
extension
|
|
22
|
+
}) => {
|
|
23
|
+
const ButtonIcon = item.icon ? Loadable({
|
|
24
|
+
// Ignored via go/ees005
|
|
25
|
+
// eslint-disable-next-line require-await
|
|
26
|
+
loader: async () => resolveExtensionIcon(item.icon),
|
|
27
|
+
loading: noop
|
|
28
|
+
}) : undefined;
|
|
29
|
+
let title = '';
|
|
30
|
+
if (item.label) {
|
|
31
|
+
title = item.label;
|
|
32
|
+
} else if (typeof item.tooltip === 'string') {
|
|
33
|
+
title = item.tooltip;
|
|
34
|
+
} else if (item.ariaLabel) {
|
|
35
|
+
title = item.ariaLabel;
|
|
36
|
+
}
|
|
37
|
+
item.disabled = (disabled === null || disabled === void 0 ? void 0 : disabled(item.key)) || false;
|
|
38
|
+
return {
|
|
39
|
+
title,
|
|
40
|
+
icon: ButtonIcon ? /*#__PURE__*/React.createElement(ButtonIcon, {
|
|
41
|
+
label: item.label || ''
|
|
42
|
+
}) : undefined,
|
|
43
|
+
disabled: item.disabled,
|
|
44
|
+
onClick: () => {
|
|
45
|
+
if (typeof item.action !== 'function') {
|
|
46
|
+
throw new Error(`'action' of context toolbar item '${item.key}' is not a function`);
|
|
47
|
+
}
|
|
48
|
+
const targetNodeAdf = nodeToJSON(node);
|
|
49
|
+
extension.extensionApi && item.action(targetNodeAdf, extension.extensionApi);
|
|
50
|
+
return true;
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
const DropdownMenuExtensionItem = ({
|
|
55
|
+
item,
|
|
56
|
+
editorView,
|
|
57
|
+
disabled,
|
|
58
|
+
node,
|
|
59
|
+
extension,
|
|
60
|
+
dropdownOptions
|
|
61
|
+
}) => {
|
|
62
|
+
const dropdownItem = convertExtensionToDropdownMenuItem({
|
|
63
|
+
item,
|
|
64
|
+
disabled,
|
|
65
|
+
node,
|
|
66
|
+
extension
|
|
67
|
+
});
|
|
68
|
+
if (!dropdownItem) {
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
return /*#__PURE__*/React.createElement(DropdownMenuItem, {
|
|
72
|
+
key: item.key,
|
|
73
|
+
item: dropdownItem,
|
|
74
|
+
editorView: editorView,
|
|
75
|
+
hide: dropdownOptions.hide,
|
|
76
|
+
dispatchCommand: dropdownOptions.dispatchCommand,
|
|
77
|
+
showSelected: dropdownOptions.showSelected,
|
|
78
|
+
intl: dropdownOptions.intl
|
|
79
|
+
});
|
|
80
|
+
};
|
|
81
|
+
export const DropdownMenuExtensionItems = props => {
|
|
82
|
+
const {
|
|
83
|
+
node,
|
|
84
|
+
editorView,
|
|
85
|
+
extension,
|
|
86
|
+
disabled,
|
|
87
|
+
dropdownOptions
|
|
88
|
+
} = props;
|
|
89
|
+
|
|
90
|
+
// Ignored via go/ees005
|
|
91
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
92
|
+
const [extensions, setExtensions] = useState([]);
|
|
93
|
+
useEffect(() => {
|
|
94
|
+
getExtensions();
|
|
95
|
+
async function getExtensions() {
|
|
96
|
+
const provider = await extension.extensionProvider;
|
|
97
|
+
if (provider) {
|
|
98
|
+
setExtensions(await provider.getExtensions());
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}, [extension.extensionProvider]);
|
|
102
|
+
const nodeAdf = React.useMemo(() => nodeToJSON(node), [node]);
|
|
103
|
+
const extensionItems = React.useMemo(() => {
|
|
104
|
+
if (!extension.extensionApi) {
|
|
105
|
+
return [];
|
|
106
|
+
}
|
|
107
|
+
return getContextualToolbarItemsFromModule(extensions, nodeAdf, extension.extensionApi);
|
|
108
|
+
}, [extensions, nodeAdf, extension.extensionApi]);
|
|
109
|
+
if (!extensionItems.length || !dropdownOptions) {
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, extensionItems.map((item, idx) => {
|
|
113
|
+
if (!('key' in item)) {
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
|
+
return /*#__PURE__*/React.createElement(DropdownMenuExtensionItem, {
|
|
117
|
+
key: item.key,
|
|
118
|
+
item: item,
|
|
119
|
+
editorView: editorView,
|
|
120
|
+
disabled: disabled,
|
|
121
|
+
node: node,
|
|
122
|
+
extension: extension,
|
|
123
|
+
dropdownOptions: dropdownOptions
|
|
124
|
+
});
|
|
125
|
+
}));
|
|
126
|
+
};
|