@atlaskit/editor-common 102.10.4 → 102.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -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/monitoring/error.js +1 -1
- package/dist/cjs/preset/core-plugin/index.js +3 -1
- package/dist/cjs/preset/core-plugin/requestDocument.js +2 -2
- 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/monitoring/error.js +1 -1
- package/dist/es2019/preset/core-plugin/index.js +3 -1
- package/dist/es2019/preset/core-plugin/requestDocument.js +2 -3
- 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/monitoring/error.js +1 -1
- package/dist/esm/preset/core-plugin/index.js +3 -1
- package/dist/esm/preset/core-plugin/requestDocument.js +2 -3
- 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/preset/core-plugin/requestDocument.d.ts +6 -2
- 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/preset/core-plugin/requestDocument.d.ts +6 -2
- package/dist/types-ts4.5/types/floating-toolbar.d.ts +8 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# @atlaskit/editor-common
|
|
2
2
|
|
|
3
|
+
## 102.11.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#128991](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/128991)
|
|
8
|
+
[`c24ae5545b4ba`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/c24ae5545b4ba) -
|
|
9
|
+
Fix bug where requestDocument was throttling at a module level rather than per editor - this was
|
|
10
|
+
causing issues in products that use multiple editors at the same time.
|
|
11
|
+
- Updated dependencies
|
|
12
|
+
|
|
13
|
+
## 102.11.0
|
|
14
|
+
|
|
15
|
+
### Minor Changes
|
|
16
|
+
|
|
17
|
+
- [#127253](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/127253)
|
|
18
|
+
[`a2593d5c73ccb`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/a2593d5c73ccb) -
|
|
19
|
+
[ux] Table overflow menu on floating toolbar
|
|
20
|
+
|
|
3
21
|
## 102.10.4
|
|
4
22
|
|
|
5
23
|
### 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 */
|
|
@@ -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.1";
|
|
21
21
|
var sanitiseSentryEvents = function sanitiseSentryEvents(data, _hint) {
|
|
22
22
|
// Remove URL as it has UGC
|
|
23
23
|
// Ignored via go/ees007
|
|
@@ -13,6 +13,8 @@ var _requestDocument = require("./requestDocument");
|
|
|
13
13
|
*/
|
|
14
14
|
var corePlugin = exports.corePlugin = function corePlugin(_ref) {
|
|
15
15
|
var config = _ref.config;
|
|
16
|
+
// Create the document request throttler per editor (rather than at a module level)
|
|
17
|
+
var scheduleDocumentRequest = (0, _requestDocument.createThrottleSchedule)(_requestDocument.returnDocumentRequest);
|
|
16
18
|
return {
|
|
17
19
|
name: 'core',
|
|
18
20
|
actions: {
|
|
@@ -75,7 +77,7 @@ var corePlugin = exports.corePlugin = function corePlugin(_ref) {
|
|
|
75
77
|
requestDocument: function requestDocument(onReceive, options) {
|
|
76
78
|
var _config$getEditorView;
|
|
77
79
|
var view = (_config$getEditorView = config === null || config === void 0 ? void 0 : config.getEditorView()) !== null && _config$getEditorView !== void 0 ? _config$getEditorView : null;
|
|
78
|
-
|
|
80
|
+
scheduleDocumentRequest(view, onReceive, options === null || options === void 0 ? void 0 : options.transformer, config === null || config === void 0 ? void 0 : config.fireAnalyticsEvent);
|
|
79
81
|
},
|
|
80
82
|
createTransformer: function createTransformer(cb) {
|
|
81
83
|
var _config$getEditorView2;
|
|
@@ -4,7 +4,8 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.
|
|
7
|
+
exports.createThrottleSchedule = createThrottleSchedule;
|
|
8
|
+
exports.returnDocumentRequest = returnDocumentRequest;
|
|
8
9
|
exports.toJSON = toJSON;
|
|
9
10
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
10
11
|
var _editorJsonTransformer = require("@atlaskit/editor-json-transformer");
|
|
@@ -44,7 +45,6 @@ function createThrottleSchedule(callback) {
|
|
|
44
45
|
};
|
|
45
46
|
return wrapperFn;
|
|
46
47
|
}
|
|
47
|
-
var scheduleDocumentRequest = exports.scheduleDocumentRequest = createThrottleSchedule(returnDocumentRequest);
|
|
48
48
|
|
|
49
49
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
50
50
|
function returnDocumentRequest(editorView, callback, transformer, fireAnalyticsEvent) {
|
|
@@ -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.1";
|
|
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
|
+
};
|