@atlaskit/editor-common 93.1.6 → 93.2.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 +15 -0
- package/afm-jira/tsconfig.json +3 -0
- package/afm-post-office/tsconfig.json +3 -0
- package/dist/cjs/analytics/types/enums.js +1 -0
- package/dist/cjs/extensibility/ExtensionComponent.js +263 -10
- package/dist/cjs/monitoring/error.js +1 -1
- package/dist/cjs/ui/DropList/index.js +1 -1
- package/dist/es2019/analytics/types/enums.js +1 -0
- package/dist/es2019/extensibility/ExtensionComponent.js +231 -3
- package/dist/es2019/monitoring/error.js +1 -1
- package/dist/es2019/ui/DropList/index.js +1 -1
- package/dist/esm/analytics/types/enums.js +1 -0
- package/dist/esm/extensibility/ExtensionComponent.js +266 -9
- package/dist/esm/monitoring/error.js +1 -1
- package/dist/esm/ui/DropList/index.js +1 -1
- package/dist/types/analytics/types/enums.d.ts +1 -0
- package/dist/types/analytics/types/general-events.d.ts +7 -1
- package/dist/types/extensibility/ExtensionComponent.d.ts +7 -1
- package/dist/types-ts4.5/analytics/types/enums.d.ts +1 -0
- package/dist/types-ts4.5/analytics/types/general-events.d.ts +7 -1
- package/dist/types-ts4.5/extensibility/ExtensionComponent.d.ts +7 -1
- package/package.json +5 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# @atlaskit/editor-common
|
|
2
2
|
|
|
3
|
+
## 93.2.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#150260](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/150260)
|
|
8
|
+
[`b6d9de1b0e543`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/b6d9de1b0e543) -
|
|
9
|
+
Added an editor analytics event for clicking the copy anchor link floating toolbar item
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- [#150241](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/150241)
|
|
14
|
+
[`11814f141483a`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/11814f141483a) -
|
|
15
|
+
ED-24117: remediates extension component for react 18
|
|
16
|
+
- Updated dependencies
|
|
17
|
+
|
|
3
18
|
## 93.1.6
|
|
4
19
|
|
|
5
20
|
### Patch Changes
|
package/afm-jira/tsconfig.json
CHANGED
|
@@ -107,6 +107,9 @@
|
|
|
107
107
|
{
|
|
108
108
|
"path": "../../../design-system/menu/afm-post-office/tsconfig.json"
|
|
109
109
|
},
|
|
110
|
+
{
|
|
111
|
+
"path": "../../../design-system/onboarding/afm-post-office/tsconfig.json"
|
|
112
|
+
},
|
|
110
113
|
{
|
|
111
114
|
"path": "../../../platform/feature-flags/afm-post-office/tsconfig.json"
|
|
112
115
|
},
|
|
@@ -281,6 +281,7 @@ var ACTION_SUBJECT_ID = exports.ACTION_SUBJECT_ID = /*#__PURE__*/function (ACTIO
|
|
|
281
281
|
ACTION_SUBJECT_ID["CODE_BLOCK"] = "codeBlock";
|
|
282
282
|
ACTION_SUBJECT_ID["CODEBLOCK_COPY"] = "codeBlockCopy";
|
|
283
283
|
ACTION_SUBJECT_ID["CODEBLOCK_WRAP"] = "codeBlockWrap";
|
|
284
|
+
ACTION_SUBJECT_ID["COPY_LINK_TO_ANCHOR"] = "copyLinkToAnchor";
|
|
284
285
|
ACTION_SUBJECT_ID["CREATE_INLINE_COMMENT_FROM_HIGHLIGHT_ACTIONS_MENU"] = "createInlineCommentFromHighlightActionsMenu";
|
|
285
286
|
ACTION_SUBJECT_ID["DATE"] = "date";
|
|
286
287
|
ACTION_SUBJECT_ID["DATE_DAY"] = "day";
|
|
@@ -5,7 +5,10 @@ var _typeof = require("@babel/runtime/helpers/typeof");
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.ExtensionComponent = void 0;
|
|
8
|
+
exports.ExtensionComponentOld = exports.ExtensionComponentNew = exports.ExtensionComponent = void 0;
|
|
9
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
11
|
+
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
9
12
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
10
13
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
11
14
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
@@ -18,21 +21,25 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
|
|
|
18
21
|
var _react = _interopRequireWildcard(require("react"));
|
|
19
22
|
var _memoizeOne = _interopRequireDefault(require("memoize-one"));
|
|
20
23
|
var _state = require("@atlaskit/editor-prosemirror/state");
|
|
24
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
21
25
|
var _extensions = require("../extensions");
|
|
22
26
|
var _utils = require("../utils");
|
|
23
27
|
var _Extension = _interopRequireDefault(require("./Extension/Extension"));
|
|
24
28
|
var _InlineExtension = _interopRequireDefault(require("./Extension/InlineExtension"));
|
|
25
29
|
var _MultiBodiedExtension = _interopRequireDefault(require("./MultiBodiedExtension"));
|
|
30
|
+
var _excluded = ["extensionProvider"];
|
|
26
31
|
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); }
|
|
27
32
|
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; }
|
|
28
33
|
function _createSuper(t) { var r = _isNativeReflectConstruct(); return function () { var e, o = (0, _getPrototypeOf2.default)(t); if (r) { var s = (0, _getPrototypeOf2.default)(this).constructor; e = Reflect.construct(o, arguments, s); } else e = o.apply(this, arguments); return (0, _possibleConstructorReturn2.default)(this, e); }; }
|
|
29
|
-
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
+
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } /* eslint-disable @repo/internal/react/no-class-components */
|
|
35
|
+
/* temporary type until FG cleaned up */
|
|
36
|
+
/* temporary type until FG cleaned up */
|
|
37
|
+
var ExtensionComponentOld = exports.ExtensionComponentOld = /*#__PURE__*/function (_Component) {
|
|
38
|
+
(0, _inherits2.default)(ExtensionComponentOld, _Component);
|
|
39
|
+
var _super = _createSuper(ExtensionComponentOld);
|
|
40
|
+
function ExtensionComponentOld() {
|
|
34
41
|
var _this;
|
|
35
|
-
(0, _classCallCheck2.default)(this,
|
|
42
|
+
(0, _classCallCheck2.default)(this, ExtensionComponentOld);
|
|
36
43
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
37
44
|
args[_key] = arguments[_key];
|
|
38
45
|
}
|
|
@@ -156,7 +163,7 @@ var ExtensionComponent = exports.ExtensionComponent = /*#__PURE__*/function (_Co
|
|
|
156
163
|
});
|
|
157
164
|
return _this;
|
|
158
165
|
}
|
|
159
|
-
(0, _createClass2.default)(
|
|
166
|
+
(0, _createClass2.default)(ExtensionComponentOld, [{
|
|
160
167
|
key: "UNSAFE_componentWillMount",
|
|
161
168
|
value: function UNSAFE_componentWillMount() {
|
|
162
169
|
this.mounted = true;
|
|
@@ -274,5 +281,251 @@ var ExtensionComponent = exports.ExtensionComponent = /*#__PURE__*/function (_Co
|
|
|
274
281
|
return null;
|
|
275
282
|
}
|
|
276
283
|
}]);
|
|
277
|
-
return
|
|
278
|
-
}(_react.Component);
|
|
284
|
+
return ExtensionComponentOld;
|
|
285
|
+
}(_react.Component);
|
|
286
|
+
var ExtensionComponentNew = exports.ExtensionComponentNew = function ExtensionComponentNew(props) {
|
|
287
|
+
var extensionProviderResolver = props.extensionProvider,
|
|
288
|
+
restProps = (0, _objectWithoutProperties2.default)(props, _excluded);
|
|
289
|
+
var _useState = (0, _react.useState)(undefined),
|
|
290
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
291
|
+
extensionProvider = _useState2[0],
|
|
292
|
+
setExtensionProvider = _useState2[1];
|
|
293
|
+
var mountedRef = (0, _react.useRef)(true);
|
|
294
|
+
(0, _react.useLayoutEffect)(function () {
|
|
295
|
+
mountedRef.current = true;
|
|
296
|
+
return function () {
|
|
297
|
+
mountedRef.current = false;
|
|
298
|
+
};
|
|
299
|
+
}, []);
|
|
300
|
+
(0, _react.useEffect)(function () {
|
|
301
|
+
extensionProviderResolver === null || extensionProviderResolver === void 0 || extensionProviderResolver.then(function (provider) {
|
|
302
|
+
if (mountedRef.current) {
|
|
303
|
+
setExtensionProvider(provider);
|
|
304
|
+
}
|
|
305
|
+
});
|
|
306
|
+
}, [extensionProviderResolver]);
|
|
307
|
+
return /*#__PURE__*/_react.default.createElement(ExtensionComponentInner, (0, _extends2.default)({}, restProps, {
|
|
308
|
+
extensionProvider: extensionProvider
|
|
309
|
+
}));
|
|
310
|
+
};
|
|
311
|
+
var ExtensionComponentInner = /*#__PURE__*/function (_Component2) {
|
|
312
|
+
(0, _inherits2.default)(ExtensionComponentInner, _Component2);
|
|
313
|
+
var _super2 = _createSuper(ExtensionComponentInner);
|
|
314
|
+
function ExtensionComponentInner() {
|
|
315
|
+
var _this2;
|
|
316
|
+
(0, _classCallCheck2.default)(this, ExtensionComponentInner);
|
|
317
|
+
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
318
|
+
args[_key2] = arguments[_key2];
|
|
319
|
+
}
|
|
320
|
+
_this2 = _super2.call.apply(_super2, [this].concat(args));
|
|
321
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this2), "privatePropsParsed", false);
|
|
322
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this2), "state", {});
|
|
323
|
+
// memoized to avoid rerender on extension state changes
|
|
324
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this2), "getNodeRenderer", (0, _memoizeOne.default)(_extensions.getNodeRenderer));
|
|
325
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this2), "getExtensionModuleNodePrivateProps", (0, _memoizeOne.default)(_extensions.getExtensionModuleNodePrivateProps));
|
|
326
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this2), "setIsNodeHovered", function (isHovered) {
|
|
327
|
+
_this2.setState({
|
|
328
|
+
isNodeHovered: isHovered
|
|
329
|
+
});
|
|
330
|
+
});
|
|
331
|
+
/**
|
|
332
|
+
* Parses any private nodes once an extension provider is available.
|
|
333
|
+
*
|
|
334
|
+
* We do this separately from resolving a node renderer component since the
|
|
335
|
+
* private props come from extension provider, rather than an extension
|
|
336
|
+
* handler which only handles `render`/component concerns.
|
|
337
|
+
*/
|
|
338
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this2), "parsePrivateNodePropsIfNeeded", /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
|
|
339
|
+
var _this2$props$node$att, extensionType, extensionKey, privateProps;
|
|
340
|
+
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
341
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
342
|
+
case 0:
|
|
343
|
+
if (!(_this2.privatePropsParsed || !_this2.props.extensionProvider)) {
|
|
344
|
+
_context2.next = 2;
|
|
345
|
+
break;
|
|
346
|
+
}
|
|
347
|
+
return _context2.abrupt("return");
|
|
348
|
+
case 2:
|
|
349
|
+
_this2.privatePropsParsed = true;
|
|
350
|
+
_this2$props$node$att = _this2.props.node.attrs, extensionType = _this2$props$node$att.extensionType, extensionKey = _this2$props$node$att.extensionKey;
|
|
351
|
+
/**
|
|
352
|
+
* getExtensionModuleNodePrivateProps can throw if there are issues in the
|
|
353
|
+
* manifest
|
|
354
|
+
*/
|
|
355
|
+
_context2.prev = 4;
|
|
356
|
+
_context2.next = 7;
|
|
357
|
+
return _this2.getExtensionModuleNodePrivateProps(_this2.props.extensionProvider, extensionType, extensionKey);
|
|
358
|
+
case 7:
|
|
359
|
+
privateProps = _context2.sent;
|
|
360
|
+
_this2.setState({
|
|
361
|
+
_privateProps: privateProps
|
|
362
|
+
});
|
|
363
|
+
_context2.next = 14;
|
|
364
|
+
break;
|
|
365
|
+
case 11:
|
|
366
|
+
_context2.prev = 11;
|
|
367
|
+
_context2.t0 = _context2["catch"](4);
|
|
368
|
+
// eslint-disable-next-line no-console
|
|
369
|
+
console.error('Provided extension handler has thrown an error\n', _context2.t0);
|
|
370
|
+
/** We don't want this error to block renderer */
|
|
371
|
+
/** We keep rendering the default content */
|
|
372
|
+
case 14:
|
|
373
|
+
case "end":
|
|
374
|
+
return _context2.stop();
|
|
375
|
+
}
|
|
376
|
+
}, _callee2, null, [[4, 11]]);
|
|
377
|
+
})));
|
|
378
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this2), "handleExtension", function (pmNode, actions) {
|
|
379
|
+
var _pmNode$marks2;
|
|
380
|
+
var _this2$props = _this2.props,
|
|
381
|
+
extensionHandlers = _this2$props.extensionHandlers,
|
|
382
|
+
editorView = _this2$props.editorView;
|
|
383
|
+
var _pmNode$attrs2 = pmNode.attrs,
|
|
384
|
+
extensionType = _pmNode$attrs2.extensionType,
|
|
385
|
+
extensionKey = _pmNode$attrs2.extensionKey,
|
|
386
|
+
parameters = _pmNode$attrs2.parameters,
|
|
387
|
+
text = _pmNode$attrs2.text;
|
|
388
|
+
var isBodiedExtension = pmNode.type.name === 'bodiedExtension';
|
|
389
|
+
if (isBodiedExtension) {
|
|
390
|
+
return;
|
|
391
|
+
}
|
|
392
|
+
var fragmentLocalId = pmNode === null || pmNode === void 0 || (_pmNode$marks2 = pmNode.marks) === null || _pmNode$marks2 === void 0 || (_pmNode$marks2 = _pmNode$marks2.find(function (m) {
|
|
393
|
+
return m.type.name === 'fragment';
|
|
394
|
+
})) === null || _pmNode$marks2 === void 0 || (_pmNode$marks2 = _pmNode$marks2.attrs) === null || _pmNode$marks2 === void 0 ? void 0 : _pmNode$marks2.localId;
|
|
395
|
+
var node = {
|
|
396
|
+
type: pmNode.type.name,
|
|
397
|
+
extensionType: extensionType,
|
|
398
|
+
extensionKey: extensionKey,
|
|
399
|
+
parameters: parameters,
|
|
400
|
+
content: text,
|
|
401
|
+
localId: pmNode.attrs.localId,
|
|
402
|
+
fragmentLocalId: fragmentLocalId
|
|
403
|
+
};
|
|
404
|
+
var result;
|
|
405
|
+
if (extensionHandlers && extensionHandlers[extensionType]) {
|
|
406
|
+
var render = (0, _utils.getExtensionRenderer)(extensionHandlers[extensionType]);
|
|
407
|
+
result = render(node, editorView.state.doc, actions);
|
|
408
|
+
}
|
|
409
|
+
if (!result) {
|
|
410
|
+
var extensionHandlerFromProvider = _this2.props.extensionProvider && _this2.getNodeRenderer(_this2.props.extensionProvider, extensionType, extensionKey);
|
|
411
|
+
if (extensionHandlerFromProvider) {
|
|
412
|
+
var NodeRenderer = extensionHandlerFromProvider;
|
|
413
|
+
if (node.type === 'multiBodiedExtension') {
|
|
414
|
+
return /*#__PURE__*/_react.default.createElement(NodeRenderer, {
|
|
415
|
+
node: node,
|
|
416
|
+
references: _this2.props.references,
|
|
417
|
+
actions: actions
|
|
418
|
+
});
|
|
419
|
+
} else {
|
|
420
|
+
return /*#__PURE__*/_react.default.createElement(NodeRenderer, {
|
|
421
|
+
node: node,
|
|
422
|
+
references: _this2.props.references
|
|
423
|
+
});
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
return result;
|
|
428
|
+
});
|
|
429
|
+
return _this2;
|
|
430
|
+
}
|
|
431
|
+
(0, _createClass2.default)(ExtensionComponentInner, [{
|
|
432
|
+
key: "componentDidUpdate",
|
|
433
|
+
value: function componentDidUpdate() {
|
|
434
|
+
this.parsePrivateNodePropsIfNeeded();
|
|
435
|
+
}
|
|
436
|
+
}, {
|
|
437
|
+
key: "render",
|
|
438
|
+
value: function render() {
|
|
439
|
+
var _this$state$_privateP2;
|
|
440
|
+
var _this$props3 = this.props,
|
|
441
|
+
node = _this$props3.node,
|
|
442
|
+
handleContentDOMRef = _this$props3.handleContentDOMRef,
|
|
443
|
+
editorView = _this$props3.editorView,
|
|
444
|
+
references = _this$props3.references,
|
|
445
|
+
editorAppearance = _this$props3.editorAppearance,
|
|
446
|
+
pluginInjectionApi = _this$props3.pluginInjectionApi,
|
|
447
|
+
getPos = _this$props3.getPos,
|
|
448
|
+
eventDispatcher = _this$props3.eventDispatcher,
|
|
449
|
+
macroInteractionDesignFeatureFlags = _this$props3.macroInteractionDesignFeatureFlags,
|
|
450
|
+
extensionProvider = _this$props3.extensionProvider;
|
|
451
|
+
var selection = editorView.state.selection;
|
|
452
|
+
var selectedNode = selection instanceof _state.NodeSelection && selection.node;
|
|
453
|
+
var position = typeof getPos === 'function' && getPos();
|
|
454
|
+
var resolvedPosition = position && editorView.state.doc.resolve(position);
|
|
455
|
+
var isNodeNested = !!(resolvedPosition && resolvedPosition.depth > 0);
|
|
456
|
+
if (node.type.name === 'multiBodiedExtension') {
|
|
457
|
+
return /*#__PURE__*/_react.default.createElement(_MultiBodiedExtension.default, {
|
|
458
|
+
node: node,
|
|
459
|
+
editorView: editorView,
|
|
460
|
+
getPos: getPos,
|
|
461
|
+
handleContentDOMRef: handleContentDOMRef,
|
|
462
|
+
tryExtensionHandler: this.tryExtensionHandler.bind(this),
|
|
463
|
+
eventDispatcher: eventDispatcher,
|
|
464
|
+
pluginInjectionApi: pluginInjectionApi,
|
|
465
|
+
editorAppearance: editorAppearance,
|
|
466
|
+
macroInteractionDesignFeatureFlags: macroInteractionDesignFeatureFlags,
|
|
467
|
+
isNodeSelected: selectedNode === node,
|
|
468
|
+
isNodeNested: isNodeNested,
|
|
469
|
+
isNodeHovered: this.state.isNodeHovered,
|
|
470
|
+
setIsNodeHovered: this.setIsNodeHovered
|
|
471
|
+
});
|
|
472
|
+
}
|
|
473
|
+
var extensionHandlerResult = this.tryExtensionHandler(undefined);
|
|
474
|
+
switch (node.type.name) {
|
|
475
|
+
case 'extension':
|
|
476
|
+
case 'bodiedExtension':
|
|
477
|
+
return /*#__PURE__*/_react.default.createElement(_Extension.default, {
|
|
478
|
+
node: node,
|
|
479
|
+
getPos: this.props.getPos,
|
|
480
|
+
references: references,
|
|
481
|
+
extensionProvider: extensionProvider,
|
|
482
|
+
handleContentDOMRef: handleContentDOMRef,
|
|
483
|
+
view: editorView,
|
|
484
|
+
editorAppearance: editorAppearance,
|
|
485
|
+
hideFrame: (_this$state$_privateP2 = this.state._privateProps) === null || _this$state$_privateP2 === void 0 ? void 0 : _this$state$_privateP2.__hideFrame,
|
|
486
|
+
pluginInjectionApi: pluginInjectionApi,
|
|
487
|
+
macroInteractionDesignFeatureFlags: macroInteractionDesignFeatureFlags,
|
|
488
|
+
isNodeSelected: selectedNode === node,
|
|
489
|
+
isNodeHovered: this.state.isNodeHovered,
|
|
490
|
+
isNodeNested: isNodeNested,
|
|
491
|
+
setIsNodeHovered: this.setIsNodeHovered
|
|
492
|
+
}, extensionHandlerResult);
|
|
493
|
+
case 'inlineExtension':
|
|
494
|
+
return /*#__PURE__*/_react.default.createElement(_InlineExtension.default, {
|
|
495
|
+
node: node,
|
|
496
|
+
macroInteractionDesignFeatureFlags: macroInteractionDesignFeatureFlags,
|
|
497
|
+
isNodeSelected: selectedNode === node,
|
|
498
|
+
pluginInjectionApi: pluginInjectionApi,
|
|
499
|
+
isNodeHovered: this.state.isNodeHovered,
|
|
500
|
+
setIsNodeHovered: this.setIsNodeHovered
|
|
501
|
+
}, extensionHandlerResult);
|
|
502
|
+
default:
|
|
503
|
+
return null;
|
|
504
|
+
}
|
|
505
|
+
}
|
|
506
|
+
}, {
|
|
507
|
+
key: "tryExtensionHandler",
|
|
508
|
+
value: function tryExtensionHandler(actions) {
|
|
509
|
+
var node = this.props.node;
|
|
510
|
+
try {
|
|
511
|
+
var extensionContent = this.handleExtension(node, actions);
|
|
512
|
+
if (extensionContent && /*#__PURE__*/_react.default.isValidElement(extensionContent)) {
|
|
513
|
+
return extensionContent;
|
|
514
|
+
}
|
|
515
|
+
} catch (e) {
|
|
516
|
+
// eslint-disable-next-line no-console
|
|
517
|
+
console.error('Provided extension handler has thrown an error\n', e);
|
|
518
|
+
/** We don't want this error to block renderer */
|
|
519
|
+
/** We keep rendering the default content */
|
|
520
|
+
}
|
|
521
|
+
return null;
|
|
522
|
+
}
|
|
523
|
+
}]);
|
|
524
|
+
return ExtensionComponentInner;
|
|
525
|
+
}(_react.Component);
|
|
526
|
+
var ExtensionComponent = exports.ExtensionComponent = function ExtensionComponent(props) {
|
|
527
|
+
if ((0, _platformFeatureFlags.fg)('platform_editor_react18_extension_component')) {
|
|
528
|
+
return /*#__PURE__*/_react.default.createElement(ExtensionComponentNew, props);
|
|
529
|
+
}
|
|
530
|
+
return /*#__PURE__*/_react.default.createElement(ExtensionComponentOld, props);
|
|
531
|
+
};
|
|
@@ -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 = "93.
|
|
20
|
+
var packageVersion = "93.2.0";
|
|
21
21
|
var sanitiseSentryEvents = function sanitiseSentryEvents(data, _hint) {
|
|
22
22
|
// Remove URL as it has UGC
|
|
23
23
|
// TODO: Sanitise the URL instead of just removing it
|
|
@@ -24,7 +24,7 @@ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.
|
|
|
24
24
|
* @jsx jsx
|
|
25
25
|
*/ // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
|
|
26
26
|
var packageName = "@atlaskit/editor-common";
|
|
27
|
-
var packageVersion = "93.
|
|
27
|
+
var packageVersion = "93.2.0";
|
|
28
28
|
var halfFocusRing = 1;
|
|
29
29
|
var dropOffset = '0, 8';
|
|
30
30
|
var DropList = /*#__PURE__*/function (_Component) {
|
|
@@ -275,6 +275,7 @@ export let ACTION_SUBJECT_ID = /*#__PURE__*/function (ACTION_SUBJECT_ID) {
|
|
|
275
275
|
ACTION_SUBJECT_ID["CODE_BLOCK"] = "codeBlock";
|
|
276
276
|
ACTION_SUBJECT_ID["CODEBLOCK_COPY"] = "codeBlockCopy";
|
|
277
277
|
ACTION_SUBJECT_ID["CODEBLOCK_WRAP"] = "codeBlockWrap";
|
|
278
|
+
ACTION_SUBJECT_ID["COPY_LINK_TO_ANCHOR"] = "copyLinkToAnchor";
|
|
278
279
|
ACTION_SUBJECT_ID["CREATE_INLINE_COMMENT_FROM_HIGHLIGHT_ACTIONS_MENU"] = "createInlineCommentFromHighlightActionsMenu";
|
|
279
280
|
ACTION_SUBJECT_ID["DATE"] = "date";
|
|
280
281
|
ACTION_SUBJECT_ID["DATE_DAY"] = "day";
|
|
@@ -1,13 +1,21 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/extends";
|
|
1
2
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
-
|
|
3
|
+
/* eslint-disable @repo/internal/react/no-class-components */
|
|
4
|
+
import React, { Component, useEffect, useLayoutEffect, useRef, useState } from 'react';
|
|
3
5
|
import memoizeOne from 'memoize-one';
|
|
4
6
|
import { NodeSelection } from '@atlaskit/editor-prosemirror/state';
|
|
7
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
5
8
|
import { getExtensionModuleNodePrivateProps, getNodeRenderer } from '../extensions';
|
|
6
9
|
import { getExtensionRenderer } from '../utils';
|
|
7
10
|
import Extension from './Extension/Extension';
|
|
8
11
|
import InlineExtension from './Extension/InlineExtension';
|
|
9
12
|
import MultiBodiedExtension from './MultiBodiedExtension';
|
|
10
|
-
|
|
13
|
+
|
|
14
|
+
/* temporary type until FG cleaned up */
|
|
15
|
+
|
|
16
|
+
/* temporary type until FG cleaned up */
|
|
17
|
+
|
|
18
|
+
export class ExtensionComponentOld extends Component {
|
|
11
19
|
constructor(...args) {
|
|
12
20
|
super(...args);
|
|
13
21
|
_defineProperty(this, "privatePropsParsed", false);
|
|
@@ -228,4 +236,224 @@ export class ExtensionComponent extends Component {
|
|
|
228
236
|
}
|
|
229
237
|
return null;
|
|
230
238
|
}
|
|
231
|
-
}
|
|
239
|
+
}
|
|
240
|
+
export const ExtensionComponentNew = props => {
|
|
241
|
+
const {
|
|
242
|
+
extensionProvider: extensionProviderResolver,
|
|
243
|
+
...restProps
|
|
244
|
+
} = props;
|
|
245
|
+
const [extensionProvider, setExtensionProvider] = useState(undefined);
|
|
246
|
+
const mountedRef = useRef(true);
|
|
247
|
+
useLayoutEffect(() => {
|
|
248
|
+
mountedRef.current = true;
|
|
249
|
+
return () => {
|
|
250
|
+
mountedRef.current = false;
|
|
251
|
+
};
|
|
252
|
+
}, []);
|
|
253
|
+
useEffect(() => {
|
|
254
|
+
extensionProviderResolver === null || extensionProviderResolver === void 0 ? void 0 : extensionProviderResolver.then(provider => {
|
|
255
|
+
if (mountedRef.current) {
|
|
256
|
+
setExtensionProvider(provider);
|
|
257
|
+
}
|
|
258
|
+
});
|
|
259
|
+
}, [extensionProviderResolver]);
|
|
260
|
+
return /*#__PURE__*/React.createElement(ExtensionComponentInner, _extends({}, restProps, {
|
|
261
|
+
extensionProvider: extensionProvider
|
|
262
|
+
}));
|
|
263
|
+
};
|
|
264
|
+
class ExtensionComponentInner extends Component {
|
|
265
|
+
constructor(...args) {
|
|
266
|
+
super(...args);
|
|
267
|
+
_defineProperty(this, "privatePropsParsed", false);
|
|
268
|
+
_defineProperty(this, "state", {});
|
|
269
|
+
// memoized to avoid rerender on extension state changes
|
|
270
|
+
_defineProperty(this, "getNodeRenderer", memoizeOne(getNodeRenderer));
|
|
271
|
+
_defineProperty(this, "getExtensionModuleNodePrivateProps", memoizeOne(getExtensionModuleNodePrivateProps));
|
|
272
|
+
_defineProperty(this, "setIsNodeHovered", isHovered => {
|
|
273
|
+
this.setState({
|
|
274
|
+
isNodeHovered: isHovered
|
|
275
|
+
});
|
|
276
|
+
});
|
|
277
|
+
/**
|
|
278
|
+
* Parses any private nodes once an extension provider is available.
|
|
279
|
+
*
|
|
280
|
+
* We do this separately from resolving a node renderer component since the
|
|
281
|
+
* private props come from extension provider, rather than an extension
|
|
282
|
+
* handler which only handles `render`/component concerns.
|
|
283
|
+
*/
|
|
284
|
+
_defineProperty(this, "parsePrivateNodePropsIfNeeded", async () => {
|
|
285
|
+
if (this.privatePropsParsed || !this.props.extensionProvider) {
|
|
286
|
+
return;
|
|
287
|
+
}
|
|
288
|
+
this.privatePropsParsed = true;
|
|
289
|
+
const {
|
|
290
|
+
extensionType,
|
|
291
|
+
extensionKey
|
|
292
|
+
} = this.props.node.attrs;
|
|
293
|
+
|
|
294
|
+
/**
|
|
295
|
+
* getExtensionModuleNodePrivateProps can throw if there are issues in the
|
|
296
|
+
* manifest
|
|
297
|
+
*/
|
|
298
|
+
try {
|
|
299
|
+
const privateProps = await this.getExtensionModuleNodePrivateProps(this.props.extensionProvider, extensionType, extensionKey);
|
|
300
|
+
this.setState({
|
|
301
|
+
_privateProps: privateProps
|
|
302
|
+
});
|
|
303
|
+
} catch (e) {
|
|
304
|
+
// eslint-disable-next-line no-console
|
|
305
|
+
console.error('Provided extension handler has thrown an error\n', e);
|
|
306
|
+
/** We don't want this error to block renderer */
|
|
307
|
+
/** We keep rendering the default content */
|
|
308
|
+
}
|
|
309
|
+
});
|
|
310
|
+
_defineProperty(this, "handleExtension", (pmNode, actions) => {
|
|
311
|
+
var _pmNode$marks2, _pmNode$marks2$find, _pmNode$marks2$find$a;
|
|
312
|
+
const {
|
|
313
|
+
extensionHandlers,
|
|
314
|
+
editorView
|
|
315
|
+
} = this.props;
|
|
316
|
+
const {
|
|
317
|
+
extensionType,
|
|
318
|
+
extensionKey,
|
|
319
|
+
parameters,
|
|
320
|
+
text
|
|
321
|
+
} = pmNode.attrs;
|
|
322
|
+
const isBodiedExtension = pmNode.type.name === 'bodiedExtension';
|
|
323
|
+
if (isBodiedExtension) {
|
|
324
|
+
return;
|
|
325
|
+
}
|
|
326
|
+
const fragmentLocalId = pmNode === null || pmNode === void 0 ? void 0 : (_pmNode$marks2 = pmNode.marks) === null || _pmNode$marks2 === void 0 ? void 0 : (_pmNode$marks2$find = _pmNode$marks2.find(m => m.type.name === 'fragment')) === null || _pmNode$marks2$find === void 0 ? void 0 : (_pmNode$marks2$find$a = _pmNode$marks2$find.attrs) === null || _pmNode$marks2$find$a === void 0 ? void 0 : _pmNode$marks2$find$a.localId;
|
|
327
|
+
const node = {
|
|
328
|
+
type: pmNode.type.name,
|
|
329
|
+
extensionType,
|
|
330
|
+
extensionKey,
|
|
331
|
+
parameters,
|
|
332
|
+
content: text,
|
|
333
|
+
localId: pmNode.attrs.localId,
|
|
334
|
+
fragmentLocalId
|
|
335
|
+
};
|
|
336
|
+
let result;
|
|
337
|
+
if (extensionHandlers && extensionHandlers[extensionType]) {
|
|
338
|
+
const render = getExtensionRenderer(extensionHandlers[extensionType]);
|
|
339
|
+
result = render(node, editorView.state.doc, actions);
|
|
340
|
+
}
|
|
341
|
+
if (!result) {
|
|
342
|
+
const extensionHandlerFromProvider = this.props.extensionProvider && this.getNodeRenderer(this.props.extensionProvider, extensionType, extensionKey);
|
|
343
|
+
if (extensionHandlerFromProvider) {
|
|
344
|
+
const NodeRenderer = extensionHandlerFromProvider;
|
|
345
|
+
if (node.type === 'multiBodiedExtension') {
|
|
346
|
+
return /*#__PURE__*/React.createElement(NodeRenderer, {
|
|
347
|
+
node: node,
|
|
348
|
+
references: this.props.references,
|
|
349
|
+
actions: actions
|
|
350
|
+
});
|
|
351
|
+
} else {
|
|
352
|
+
return /*#__PURE__*/React.createElement(NodeRenderer, {
|
|
353
|
+
node: node,
|
|
354
|
+
references: this.props.references
|
|
355
|
+
});
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
return result;
|
|
360
|
+
});
|
|
361
|
+
}
|
|
362
|
+
componentDidUpdate() {
|
|
363
|
+
this.parsePrivateNodePropsIfNeeded();
|
|
364
|
+
}
|
|
365
|
+
render() {
|
|
366
|
+
var _this$state$_privateP2;
|
|
367
|
+
const {
|
|
368
|
+
node,
|
|
369
|
+
handleContentDOMRef,
|
|
370
|
+
editorView,
|
|
371
|
+
references,
|
|
372
|
+
editorAppearance,
|
|
373
|
+
pluginInjectionApi,
|
|
374
|
+
getPos,
|
|
375
|
+
eventDispatcher,
|
|
376
|
+
macroInteractionDesignFeatureFlags,
|
|
377
|
+
extensionProvider
|
|
378
|
+
} = this.props;
|
|
379
|
+
const {
|
|
380
|
+
selection
|
|
381
|
+
} = editorView.state;
|
|
382
|
+
const selectedNode = selection instanceof NodeSelection && selection.node;
|
|
383
|
+
const position = typeof getPos === 'function' && getPos();
|
|
384
|
+
const resolvedPosition = position && editorView.state.doc.resolve(position);
|
|
385
|
+
const isNodeNested = !!(resolvedPosition && resolvedPosition.depth > 0);
|
|
386
|
+
if (node.type.name === 'multiBodiedExtension') {
|
|
387
|
+
return /*#__PURE__*/React.createElement(MultiBodiedExtension, {
|
|
388
|
+
node: node,
|
|
389
|
+
editorView: editorView,
|
|
390
|
+
getPos: getPos,
|
|
391
|
+
handleContentDOMRef: handleContentDOMRef,
|
|
392
|
+
tryExtensionHandler: this.tryExtensionHandler.bind(this),
|
|
393
|
+
eventDispatcher: eventDispatcher,
|
|
394
|
+
pluginInjectionApi: pluginInjectionApi,
|
|
395
|
+
editorAppearance: editorAppearance,
|
|
396
|
+
macroInteractionDesignFeatureFlags: macroInteractionDesignFeatureFlags,
|
|
397
|
+
isNodeSelected: selectedNode === node,
|
|
398
|
+
isNodeNested: isNodeNested,
|
|
399
|
+
isNodeHovered: this.state.isNodeHovered,
|
|
400
|
+
setIsNodeHovered: this.setIsNodeHovered
|
|
401
|
+
});
|
|
402
|
+
}
|
|
403
|
+
const extensionHandlerResult = this.tryExtensionHandler(undefined);
|
|
404
|
+
switch (node.type.name) {
|
|
405
|
+
case 'extension':
|
|
406
|
+
case 'bodiedExtension':
|
|
407
|
+
return /*#__PURE__*/React.createElement(Extension, {
|
|
408
|
+
node: node,
|
|
409
|
+
getPos: this.props.getPos,
|
|
410
|
+
references: references,
|
|
411
|
+
extensionProvider: extensionProvider,
|
|
412
|
+
handleContentDOMRef: handleContentDOMRef,
|
|
413
|
+
view: editorView,
|
|
414
|
+
editorAppearance: editorAppearance,
|
|
415
|
+
hideFrame: (_this$state$_privateP2 = this.state._privateProps) === null || _this$state$_privateP2 === void 0 ? void 0 : _this$state$_privateP2.__hideFrame,
|
|
416
|
+
pluginInjectionApi: pluginInjectionApi,
|
|
417
|
+
macroInteractionDesignFeatureFlags: macroInteractionDesignFeatureFlags,
|
|
418
|
+
isNodeSelected: selectedNode === node,
|
|
419
|
+
isNodeHovered: this.state.isNodeHovered,
|
|
420
|
+
isNodeNested: isNodeNested,
|
|
421
|
+
setIsNodeHovered: this.setIsNodeHovered
|
|
422
|
+
}, extensionHandlerResult);
|
|
423
|
+
case 'inlineExtension':
|
|
424
|
+
return /*#__PURE__*/React.createElement(InlineExtension, {
|
|
425
|
+
node: node,
|
|
426
|
+
macroInteractionDesignFeatureFlags: macroInteractionDesignFeatureFlags,
|
|
427
|
+
isNodeSelected: selectedNode === node,
|
|
428
|
+
pluginInjectionApi: pluginInjectionApi,
|
|
429
|
+
isNodeHovered: this.state.isNodeHovered,
|
|
430
|
+
setIsNodeHovered: this.setIsNodeHovered
|
|
431
|
+
}, extensionHandlerResult);
|
|
432
|
+
default:
|
|
433
|
+
return null;
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
tryExtensionHandler(actions) {
|
|
437
|
+
const {
|
|
438
|
+
node
|
|
439
|
+
} = this.props;
|
|
440
|
+
try {
|
|
441
|
+
const extensionContent = this.handleExtension(node, actions);
|
|
442
|
+
if (extensionContent && /*#__PURE__*/React.isValidElement(extensionContent)) {
|
|
443
|
+
return extensionContent;
|
|
444
|
+
}
|
|
445
|
+
} catch (e) {
|
|
446
|
+
// eslint-disable-next-line no-console
|
|
447
|
+
console.error('Provided extension handler has thrown an error\n', e);
|
|
448
|
+
/** We don't want this error to block renderer */
|
|
449
|
+
/** We keep rendering the default content */
|
|
450
|
+
}
|
|
451
|
+
return null;
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
export const ExtensionComponent = props => {
|
|
455
|
+
if (fg('platform_editor_react18_extension_component')) {
|
|
456
|
+
return /*#__PURE__*/React.createElement(ExtensionComponentNew, props);
|
|
457
|
+
}
|
|
458
|
+
return /*#__PURE__*/React.createElement(ExtensionComponentOld, props);
|
|
459
|
+
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { isFedRamp } from './environment';
|
|
2
2
|
const SENTRY_DSN = 'https://0b10c8e02fb44d8796c047b102c9bee8@o55978.ingest.sentry.io/4505129224110080';
|
|
3
3
|
const packageName = 'editor-common'; // Sentry doesn't accept '/' in its releases https://docs.sentry.io/platforms/javascript/configuration/releases/
|
|
4
|
-
const packageVersion = "93.
|
|
4
|
+
const packageVersion = "93.2.0";
|
|
5
5
|
const sanitiseSentryEvents = (data, _hint) => {
|
|
6
6
|
// Remove URL as it has UGC
|
|
7
7
|
// TODO: Sanitise the URL instead of just removing it
|
|
@@ -13,7 +13,7 @@ import withAnalyticsContext from '@atlaskit/analytics-next/withAnalyticsContext'
|
|
|
13
13
|
import withAnalyticsEvents from '@atlaskit/analytics-next/withAnalyticsEvents';
|
|
14
14
|
import Layer from '../Layer';
|
|
15
15
|
const packageName = "@atlaskit/editor-common";
|
|
16
|
-
const packageVersion = "93.
|
|
16
|
+
const packageVersion = "93.2.0";
|
|
17
17
|
const halfFocusRing = 1;
|
|
18
18
|
const dropOffset = '0, 8';
|
|
19
19
|
class DropList extends Component {
|
|
@@ -275,6 +275,7 @@ export var ACTION_SUBJECT_ID = /*#__PURE__*/function (ACTION_SUBJECT_ID) {
|
|
|
275
275
|
ACTION_SUBJECT_ID["CODE_BLOCK"] = "codeBlock";
|
|
276
276
|
ACTION_SUBJECT_ID["CODEBLOCK_COPY"] = "codeBlockCopy";
|
|
277
277
|
ACTION_SUBJECT_ID["CODEBLOCK_WRAP"] = "codeBlockWrap";
|
|
278
|
+
ACTION_SUBJECT_ID["COPY_LINK_TO_ANCHOR"] = "copyLinkToAnchor";
|
|
278
279
|
ACTION_SUBJECT_ID["CREATE_INLINE_COMMENT_FROM_HIGHLIGHT_ACTIONS_MENU"] = "createInlineCommentFromHighlightActionsMenu";
|
|
279
280
|
ACTION_SUBJECT_ID["DATE"] = "date";
|
|
280
281
|
ACTION_SUBJECT_ID["DATE_DAY"] = "day";
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
+
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
3
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
1
4
|
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
2
5
|
import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
|
|
3
6
|
import _createClass from "@babel/runtime/helpers/createClass";
|
|
@@ -6,23 +9,31 @@ import _inherits from "@babel/runtime/helpers/inherits";
|
|
|
6
9
|
import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
|
|
7
10
|
import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
|
|
8
11
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
12
|
+
var _excluded = ["extensionProvider"];
|
|
9
13
|
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
10
14
|
function _createSuper(t) { var r = _isNativeReflectConstruct(); return function () { var e, o = _getPrototypeOf(t); if (r) { var s = _getPrototypeOf(this).constructor; e = Reflect.construct(o, arguments, s); } else e = o.apply(this, arguments); return _possibleConstructorReturn(this, e); }; }
|
|
11
15
|
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
12
|
-
|
|
16
|
+
/* eslint-disable @repo/internal/react/no-class-components */
|
|
17
|
+
import React, { Component, useEffect, useLayoutEffect, useRef, useState } from 'react';
|
|
13
18
|
import memoizeOne from 'memoize-one';
|
|
14
19
|
import { NodeSelection } from '@atlaskit/editor-prosemirror/state';
|
|
20
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
15
21
|
import { getExtensionModuleNodePrivateProps, getNodeRenderer } from '../extensions';
|
|
16
22
|
import { getExtensionRenderer } from '../utils';
|
|
17
23
|
import Extension from './Extension/Extension';
|
|
18
24
|
import InlineExtension from './Extension/InlineExtension';
|
|
19
25
|
import MultiBodiedExtension from './MultiBodiedExtension';
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
26
|
+
|
|
27
|
+
/* temporary type until FG cleaned up */
|
|
28
|
+
|
|
29
|
+
/* temporary type until FG cleaned up */
|
|
30
|
+
|
|
31
|
+
export var ExtensionComponentOld = /*#__PURE__*/function (_Component) {
|
|
32
|
+
_inherits(ExtensionComponentOld, _Component);
|
|
33
|
+
var _super = _createSuper(ExtensionComponentOld);
|
|
34
|
+
function ExtensionComponentOld() {
|
|
24
35
|
var _this;
|
|
25
|
-
_classCallCheck(this,
|
|
36
|
+
_classCallCheck(this, ExtensionComponentOld);
|
|
26
37
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
27
38
|
args[_key] = arguments[_key];
|
|
28
39
|
}
|
|
@@ -146,7 +157,7 @@ export var ExtensionComponent = /*#__PURE__*/function (_Component) {
|
|
|
146
157
|
});
|
|
147
158
|
return _this;
|
|
148
159
|
}
|
|
149
|
-
_createClass(
|
|
160
|
+
_createClass(ExtensionComponentOld, [{
|
|
150
161
|
key: "UNSAFE_componentWillMount",
|
|
151
162
|
value: function UNSAFE_componentWillMount() {
|
|
152
163
|
this.mounted = true;
|
|
@@ -264,5 +275,251 @@ export var ExtensionComponent = /*#__PURE__*/function (_Component) {
|
|
|
264
275
|
return null;
|
|
265
276
|
}
|
|
266
277
|
}]);
|
|
267
|
-
return
|
|
268
|
-
}(Component);
|
|
278
|
+
return ExtensionComponentOld;
|
|
279
|
+
}(Component);
|
|
280
|
+
export var ExtensionComponentNew = function ExtensionComponentNew(props) {
|
|
281
|
+
var extensionProviderResolver = props.extensionProvider,
|
|
282
|
+
restProps = _objectWithoutProperties(props, _excluded);
|
|
283
|
+
var _useState = useState(undefined),
|
|
284
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
285
|
+
extensionProvider = _useState2[0],
|
|
286
|
+
setExtensionProvider = _useState2[1];
|
|
287
|
+
var mountedRef = useRef(true);
|
|
288
|
+
useLayoutEffect(function () {
|
|
289
|
+
mountedRef.current = true;
|
|
290
|
+
return function () {
|
|
291
|
+
mountedRef.current = false;
|
|
292
|
+
};
|
|
293
|
+
}, []);
|
|
294
|
+
useEffect(function () {
|
|
295
|
+
extensionProviderResolver === null || extensionProviderResolver === void 0 || extensionProviderResolver.then(function (provider) {
|
|
296
|
+
if (mountedRef.current) {
|
|
297
|
+
setExtensionProvider(provider);
|
|
298
|
+
}
|
|
299
|
+
});
|
|
300
|
+
}, [extensionProviderResolver]);
|
|
301
|
+
return /*#__PURE__*/React.createElement(ExtensionComponentInner, _extends({}, restProps, {
|
|
302
|
+
extensionProvider: extensionProvider
|
|
303
|
+
}));
|
|
304
|
+
};
|
|
305
|
+
var ExtensionComponentInner = /*#__PURE__*/function (_Component2) {
|
|
306
|
+
_inherits(ExtensionComponentInner, _Component2);
|
|
307
|
+
var _super2 = _createSuper(ExtensionComponentInner);
|
|
308
|
+
function ExtensionComponentInner() {
|
|
309
|
+
var _this2;
|
|
310
|
+
_classCallCheck(this, ExtensionComponentInner);
|
|
311
|
+
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
312
|
+
args[_key2] = arguments[_key2];
|
|
313
|
+
}
|
|
314
|
+
_this2 = _super2.call.apply(_super2, [this].concat(args));
|
|
315
|
+
_defineProperty(_assertThisInitialized(_this2), "privatePropsParsed", false);
|
|
316
|
+
_defineProperty(_assertThisInitialized(_this2), "state", {});
|
|
317
|
+
// memoized to avoid rerender on extension state changes
|
|
318
|
+
_defineProperty(_assertThisInitialized(_this2), "getNodeRenderer", memoizeOne(getNodeRenderer));
|
|
319
|
+
_defineProperty(_assertThisInitialized(_this2), "getExtensionModuleNodePrivateProps", memoizeOne(getExtensionModuleNodePrivateProps));
|
|
320
|
+
_defineProperty(_assertThisInitialized(_this2), "setIsNodeHovered", function (isHovered) {
|
|
321
|
+
_this2.setState({
|
|
322
|
+
isNodeHovered: isHovered
|
|
323
|
+
});
|
|
324
|
+
});
|
|
325
|
+
/**
|
|
326
|
+
* Parses any private nodes once an extension provider is available.
|
|
327
|
+
*
|
|
328
|
+
* We do this separately from resolving a node renderer component since the
|
|
329
|
+
* private props come from extension provider, rather than an extension
|
|
330
|
+
* handler which only handles `render`/component concerns.
|
|
331
|
+
*/
|
|
332
|
+
_defineProperty(_assertThisInitialized(_this2), "parsePrivateNodePropsIfNeeded", /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
|
|
333
|
+
var _this2$props$node$att, extensionType, extensionKey, privateProps;
|
|
334
|
+
return _regeneratorRuntime.wrap(function _callee2$(_context2) {
|
|
335
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
336
|
+
case 0:
|
|
337
|
+
if (!(_this2.privatePropsParsed || !_this2.props.extensionProvider)) {
|
|
338
|
+
_context2.next = 2;
|
|
339
|
+
break;
|
|
340
|
+
}
|
|
341
|
+
return _context2.abrupt("return");
|
|
342
|
+
case 2:
|
|
343
|
+
_this2.privatePropsParsed = true;
|
|
344
|
+
_this2$props$node$att = _this2.props.node.attrs, extensionType = _this2$props$node$att.extensionType, extensionKey = _this2$props$node$att.extensionKey;
|
|
345
|
+
/**
|
|
346
|
+
* getExtensionModuleNodePrivateProps can throw if there are issues in the
|
|
347
|
+
* manifest
|
|
348
|
+
*/
|
|
349
|
+
_context2.prev = 4;
|
|
350
|
+
_context2.next = 7;
|
|
351
|
+
return _this2.getExtensionModuleNodePrivateProps(_this2.props.extensionProvider, extensionType, extensionKey);
|
|
352
|
+
case 7:
|
|
353
|
+
privateProps = _context2.sent;
|
|
354
|
+
_this2.setState({
|
|
355
|
+
_privateProps: privateProps
|
|
356
|
+
});
|
|
357
|
+
_context2.next = 14;
|
|
358
|
+
break;
|
|
359
|
+
case 11:
|
|
360
|
+
_context2.prev = 11;
|
|
361
|
+
_context2.t0 = _context2["catch"](4);
|
|
362
|
+
// eslint-disable-next-line no-console
|
|
363
|
+
console.error('Provided extension handler has thrown an error\n', _context2.t0);
|
|
364
|
+
/** We don't want this error to block renderer */
|
|
365
|
+
/** We keep rendering the default content */
|
|
366
|
+
case 14:
|
|
367
|
+
case "end":
|
|
368
|
+
return _context2.stop();
|
|
369
|
+
}
|
|
370
|
+
}, _callee2, null, [[4, 11]]);
|
|
371
|
+
})));
|
|
372
|
+
_defineProperty(_assertThisInitialized(_this2), "handleExtension", function (pmNode, actions) {
|
|
373
|
+
var _pmNode$marks2;
|
|
374
|
+
var _this2$props = _this2.props,
|
|
375
|
+
extensionHandlers = _this2$props.extensionHandlers,
|
|
376
|
+
editorView = _this2$props.editorView;
|
|
377
|
+
var _pmNode$attrs2 = pmNode.attrs,
|
|
378
|
+
extensionType = _pmNode$attrs2.extensionType,
|
|
379
|
+
extensionKey = _pmNode$attrs2.extensionKey,
|
|
380
|
+
parameters = _pmNode$attrs2.parameters,
|
|
381
|
+
text = _pmNode$attrs2.text;
|
|
382
|
+
var isBodiedExtension = pmNode.type.name === 'bodiedExtension';
|
|
383
|
+
if (isBodiedExtension) {
|
|
384
|
+
return;
|
|
385
|
+
}
|
|
386
|
+
var fragmentLocalId = pmNode === null || pmNode === void 0 || (_pmNode$marks2 = pmNode.marks) === null || _pmNode$marks2 === void 0 || (_pmNode$marks2 = _pmNode$marks2.find(function (m) {
|
|
387
|
+
return m.type.name === 'fragment';
|
|
388
|
+
})) === null || _pmNode$marks2 === void 0 || (_pmNode$marks2 = _pmNode$marks2.attrs) === null || _pmNode$marks2 === void 0 ? void 0 : _pmNode$marks2.localId;
|
|
389
|
+
var node = {
|
|
390
|
+
type: pmNode.type.name,
|
|
391
|
+
extensionType: extensionType,
|
|
392
|
+
extensionKey: extensionKey,
|
|
393
|
+
parameters: parameters,
|
|
394
|
+
content: text,
|
|
395
|
+
localId: pmNode.attrs.localId,
|
|
396
|
+
fragmentLocalId: fragmentLocalId
|
|
397
|
+
};
|
|
398
|
+
var result;
|
|
399
|
+
if (extensionHandlers && extensionHandlers[extensionType]) {
|
|
400
|
+
var render = getExtensionRenderer(extensionHandlers[extensionType]);
|
|
401
|
+
result = render(node, editorView.state.doc, actions);
|
|
402
|
+
}
|
|
403
|
+
if (!result) {
|
|
404
|
+
var extensionHandlerFromProvider = _this2.props.extensionProvider && _this2.getNodeRenderer(_this2.props.extensionProvider, extensionType, extensionKey);
|
|
405
|
+
if (extensionHandlerFromProvider) {
|
|
406
|
+
var NodeRenderer = extensionHandlerFromProvider;
|
|
407
|
+
if (node.type === 'multiBodiedExtension') {
|
|
408
|
+
return /*#__PURE__*/React.createElement(NodeRenderer, {
|
|
409
|
+
node: node,
|
|
410
|
+
references: _this2.props.references,
|
|
411
|
+
actions: actions
|
|
412
|
+
});
|
|
413
|
+
} else {
|
|
414
|
+
return /*#__PURE__*/React.createElement(NodeRenderer, {
|
|
415
|
+
node: node,
|
|
416
|
+
references: _this2.props.references
|
|
417
|
+
});
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
return result;
|
|
422
|
+
});
|
|
423
|
+
return _this2;
|
|
424
|
+
}
|
|
425
|
+
_createClass(ExtensionComponentInner, [{
|
|
426
|
+
key: "componentDidUpdate",
|
|
427
|
+
value: function componentDidUpdate() {
|
|
428
|
+
this.parsePrivateNodePropsIfNeeded();
|
|
429
|
+
}
|
|
430
|
+
}, {
|
|
431
|
+
key: "render",
|
|
432
|
+
value: function render() {
|
|
433
|
+
var _this$state$_privateP2;
|
|
434
|
+
var _this$props3 = this.props,
|
|
435
|
+
node = _this$props3.node,
|
|
436
|
+
handleContentDOMRef = _this$props3.handleContentDOMRef,
|
|
437
|
+
editorView = _this$props3.editorView,
|
|
438
|
+
references = _this$props3.references,
|
|
439
|
+
editorAppearance = _this$props3.editorAppearance,
|
|
440
|
+
pluginInjectionApi = _this$props3.pluginInjectionApi,
|
|
441
|
+
getPos = _this$props3.getPos,
|
|
442
|
+
eventDispatcher = _this$props3.eventDispatcher,
|
|
443
|
+
macroInteractionDesignFeatureFlags = _this$props3.macroInteractionDesignFeatureFlags,
|
|
444
|
+
extensionProvider = _this$props3.extensionProvider;
|
|
445
|
+
var selection = editorView.state.selection;
|
|
446
|
+
var selectedNode = selection instanceof NodeSelection && selection.node;
|
|
447
|
+
var position = typeof getPos === 'function' && getPos();
|
|
448
|
+
var resolvedPosition = position && editorView.state.doc.resolve(position);
|
|
449
|
+
var isNodeNested = !!(resolvedPosition && resolvedPosition.depth > 0);
|
|
450
|
+
if (node.type.name === 'multiBodiedExtension') {
|
|
451
|
+
return /*#__PURE__*/React.createElement(MultiBodiedExtension, {
|
|
452
|
+
node: node,
|
|
453
|
+
editorView: editorView,
|
|
454
|
+
getPos: getPos,
|
|
455
|
+
handleContentDOMRef: handleContentDOMRef,
|
|
456
|
+
tryExtensionHandler: this.tryExtensionHandler.bind(this),
|
|
457
|
+
eventDispatcher: eventDispatcher,
|
|
458
|
+
pluginInjectionApi: pluginInjectionApi,
|
|
459
|
+
editorAppearance: editorAppearance,
|
|
460
|
+
macroInteractionDesignFeatureFlags: macroInteractionDesignFeatureFlags,
|
|
461
|
+
isNodeSelected: selectedNode === node,
|
|
462
|
+
isNodeNested: isNodeNested,
|
|
463
|
+
isNodeHovered: this.state.isNodeHovered,
|
|
464
|
+
setIsNodeHovered: this.setIsNodeHovered
|
|
465
|
+
});
|
|
466
|
+
}
|
|
467
|
+
var extensionHandlerResult = this.tryExtensionHandler(undefined);
|
|
468
|
+
switch (node.type.name) {
|
|
469
|
+
case 'extension':
|
|
470
|
+
case 'bodiedExtension':
|
|
471
|
+
return /*#__PURE__*/React.createElement(Extension, {
|
|
472
|
+
node: node,
|
|
473
|
+
getPos: this.props.getPos,
|
|
474
|
+
references: references,
|
|
475
|
+
extensionProvider: extensionProvider,
|
|
476
|
+
handleContentDOMRef: handleContentDOMRef,
|
|
477
|
+
view: editorView,
|
|
478
|
+
editorAppearance: editorAppearance,
|
|
479
|
+
hideFrame: (_this$state$_privateP2 = this.state._privateProps) === null || _this$state$_privateP2 === void 0 ? void 0 : _this$state$_privateP2.__hideFrame,
|
|
480
|
+
pluginInjectionApi: pluginInjectionApi,
|
|
481
|
+
macroInteractionDesignFeatureFlags: macroInteractionDesignFeatureFlags,
|
|
482
|
+
isNodeSelected: selectedNode === node,
|
|
483
|
+
isNodeHovered: this.state.isNodeHovered,
|
|
484
|
+
isNodeNested: isNodeNested,
|
|
485
|
+
setIsNodeHovered: this.setIsNodeHovered
|
|
486
|
+
}, extensionHandlerResult);
|
|
487
|
+
case 'inlineExtension':
|
|
488
|
+
return /*#__PURE__*/React.createElement(InlineExtension, {
|
|
489
|
+
node: node,
|
|
490
|
+
macroInteractionDesignFeatureFlags: macroInteractionDesignFeatureFlags,
|
|
491
|
+
isNodeSelected: selectedNode === node,
|
|
492
|
+
pluginInjectionApi: pluginInjectionApi,
|
|
493
|
+
isNodeHovered: this.state.isNodeHovered,
|
|
494
|
+
setIsNodeHovered: this.setIsNodeHovered
|
|
495
|
+
}, extensionHandlerResult);
|
|
496
|
+
default:
|
|
497
|
+
return null;
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
}, {
|
|
501
|
+
key: "tryExtensionHandler",
|
|
502
|
+
value: function tryExtensionHandler(actions) {
|
|
503
|
+
var node = this.props.node;
|
|
504
|
+
try {
|
|
505
|
+
var extensionContent = this.handleExtension(node, actions);
|
|
506
|
+
if (extensionContent && /*#__PURE__*/React.isValidElement(extensionContent)) {
|
|
507
|
+
return extensionContent;
|
|
508
|
+
}
|
|
509
|
+
} catch (e) {
|
|
510
|
+
// eslint-disable-next-line no-console
|
|
511
|
+
console.error('Provided extension handler has thrown an error\n', e);
|
|
512
|
+
/** We don't want this error to block renderer */
|
|
513
|
+
/** We keep rendering the default content */
|
|
514
|
+
}
|
|
515
|
+
return null;
|
|
516
|
+
}
|
|
517
|
+
}]);
|
|
518
|
+
return ExtensionComponentInner;
|
|
519
|
+
}(Component);
|
|
520
|
+
export var ExtensionComponent = function ExtensionComponent(props) {
|
|
521
|
+
if (fg('platform_editor_react18_extension_component')) {
|
|
522
|
+
return /*#__PURE__*/React.createElement(ExtensionComponentNew, props);
|
|
523
|
+
}
|
|
524
|
+
return /*#__PURE__*/React.createElement(ExtensionComponentOld, props);
|
|
525
|
+
};
|
|
@@ -7,7 +7,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
7
7
|
import { isFedRamp } from './environment';
|
|
8
8
|
var SENTRY_DSN = 'https://0b10c8e02fb44d8796c047b102c9bee8@o55978.ingest.sentry.io/4505129224110080';
|
|
9
9
|
var packageName = 'editor-common'; // Sentry doesn't accept '/' in its releases https://docs.sentry.io/platforms/javascript/configuration/releases/
|
|
10
|
-
var packageVersion = "93.
|
|
10
|
+
var packageVersion = "93.2.0";
|
|
11
11
|
var sanitiseSentryEvents = function sanitiseSentryEvents(data, _hint) {
|
|
12
12
|
// Remove URL as it has UGC
|
|
13
13
|
// TODO: Sanitise the URL instead of just removing it
|
|
@@ -21,7 +21,7 @@ import withAnalyticsContext from '@atlaskit/analytics-next/withAnalyticsContext'
|
|
|
21
21
|
import withAnalyticsEvents from '@atlaskit/analytics-next/withAnalyticsEvents';
|
|
22
22
|
import Layer from '../Layer';
|
|
23
23
|
var packageName = "@atlaskit/editor-common";
|
|
24
|
-
var packageVersion = "93.
|
|
24
|
+
var packageVersion = "93.2.0";
|
|
25
25
|
var halfFocusRing = 1;
|
|
26
26
|
var dropOffset = '0, 8';
|
|
27
27
|
var DropList = /*#__PURE__*/function (_Component) {
|
|
@@ -277,6 +277,7 @@ export declare enum ACTION_SUBJECT_ID {
|
|
|
277
277
|
CODE_BLOCK = "codeBlock",
|
|
278
278
|
CODEBLOCK_COPY = "codeBlockCopy",
|
|
279
279
|
CODEBLOCK_WRAP = "codeBlockWrap",
|
|
280
|
+
COPY_LINK_TO_ANCHOR = "copyLinkToAnchor",
|
|
280
281
|
CREATE_INLINE_COMMENT_FROM_HIGHLIGHT_ACTIONS_MENU = "createInlineCommentFromHighlightActionsMenu",
|
|
281
282
|
DATE = "date",
|
|
282
283
|
DATE_DAY = "day",
|
|
@@ -195,5 +195,11 @@ export type RequestToEditAEP = UIAEP<ACTION.REQUEST_TO_EDIT | ACTION.DISMISSED,
|
|
|
195
195
|
platform: PLATFORMS;
|
|
196
196
|
mode: MODE;
|
|
197
197
|
}, undefined>;
|
|
198
|
-
|
|
198
|
+
type CopyLinkToAnchorButtonAEP = ButtonAEP<ACTION_SUBJECT_ID.COPY_LINK_TO_ANCHOR, {
|
|
199
|
+
inputMethod: INPUT_METHOD;
|
|
200
|
+
extensionKey?: string;
|
|
201
|
+
extensionType?: string;
|
|
202
|
+
isLivePage?: boolean;
|
|
203
|
+
}>;
|
|
204
|
+
export type GeneralEventPayload<T = void> = AnnotateButtonAEP | AnnotationAEP | BrowserFreezePayload | ButtonFeedbackAEP | ButtonHelpAEP | ButtonUploadMediaAEP | ColorPickerAEP | DispatchedTransactionAEP | EditorPerfAEP | EditorRenderedAEP<T> | EditorStartAEP | EditorStopAEP | EditorTTIAEP | ExpandToggleAEP | FeedbackAEP | FullWidthModeAEP | HelpQuickInsertAEP | InputPerfSamlingAEP | InputPerfSamplingAvgAEP | PickerEmojiAEP | PickerImageAEP | PickerMediaInsertAEP | PickerMediaInsertClosedAEP | PickerMediaInsertCancelledAEP | ReactNodeViewRenderedAEP | RichMediaLayoutAEP | SelectionAEP | SlowInputAEP | TransactionMutatedAEP | UploadExternalFailedAEP | WithPluginStateCalledAEP | CodeBlockLanguageSelectedAEP | EditorContentRetrievalPerformedAEP | UfoSessionCompletePayloadAEP | MediaLinkTransformedAEP | TextLinkCodeMarkTransformedAEP | DedupeMarksTransformedAEP | IndentationMarksTransformedAEP | NodesMissingContentTransformedAEP | InvalidProsemirrorDocumentErrorAEP | DocumentProcessingErrorAEP | InvalidMediaContentTransformedAEP | HeadingAnchorLinkButtonAEP | CollabStepsTrackerPayloadAEP | CodeBlockWordWrapToggleAEP | RequestToEditAEP | CopyLinkToAnchorButtonAEP;
|
|
199
205
|
export {};
|
|
@@ -29,7 +29,11 @@ export interface State {
|
|
|
29
29
|
activeChildIndex?: number;
|
|
30
30
|
isNodeHovered?: boolean;
|
|
31
31
|
}
|
|
32
|
-
export
|
|
32
|
+
export type PropsNew = Omit<Props, 'extensionProvider'> & {
|
|
33
|
+
extensionProvider?: ExtensionProvider;
|
|
34
|
+
};
|
|
35
|
+
export type StateNew = Omit<State, 'extensionProvider'>;
|
|
36
|
+
export declare class ExtensionComponentOld extends Component<Props, State> {
|
|
33
37
|
private privatePropsParsed;
|
|
34
38
|
state: State;
|
|
35
39
|
mounted: boolean;
|
|
@@ -54,3 +58,5 @@ export declare class ExtensionComponent extends Component<Props, State> {
|
|
|
54
58
|
private tryExtensionHandler;
|
|
55
59
|
private handleExtension;
|
|
56
60
|
}
|
|
61
|
+
export declare const ExtensionComponentNew: (props: Props) => JSX.Element;
|
|
62
|
+
export declare const ExtensionComponent: (props: Props) => JSX.Element;
|
|
@@ -277,6 +277,7 @@ export declare enum ACTION_SUBJECT_ID {
|
|
|
277
277
|
CODE_BLOCK = "codeBlock",
|
|
278
278
|
CODEBLOCK_COPY = "codeBlockCopy",
|
|
279
279
|
CODEBLOCK_WRAP = "codeBlockWrap",
|
|
280
|
+
COPY_LINK_TO_ANCHOR = "copyLinkToAnchor",
|
|
280
281
|
CREATE_INLINE_COMMENT_FROM_HIGHLIGHT_ACTIONS_MENU = "createInlineCommentFromHighlightActionsMenu",
|
|
281
282
|
DATE = "date",
|
|
282
283
|
DATE_DAY = "day",
|
|
@@ -195,5 +195,11 @@ export type RequestToEditAEP = UIAEP<ACTION.REQUEST_TO_EDIT | ACTION.DISMISSED,
|
|
|
195
195
|
platform: PLATFORMS;
|
|
196
196
|
mode: MODE;
|
|
197
197
|
}, undefined>;
|
|
198
|
-
|
|
198
|
+
type CopyLinkToAnchorButtonAEP = ButtonAEP<ACTION_SUBJECT_ID.COPY_LINK_TO_ANCHOR, {
|
|
199
|
+
inputMethod: INPUT_METHOD;
|
|
200
|
+
extensionKey?: string;
|
|
201
|
+
extensionType?: string;
|
|
202
|
+
isLivePage?: boolean;
|
|
203
|
+
}>;
|
|
204
|
+
export type GeneralEventPayload<T = void> = AnnotateButtonAEP | AnnotationAEP | BrowserFreezePayload | ButtonFeedbackAEP | ButtonHelpAEP | ButtonUploadMediaAEP | ColorPickerAEP | DispatchedTransactionAEP | EditorPerfAEP | EditorRenderedAEP<T> | EditorStartAEP | EditorStopAEP | EditorTTIAEP | ExpandToggleAEP | FeedbackAEP | FullWidthModeAEP | HelpQuickInsertAEP | InputPerfSamlingAEP | InputPerfSamplingAvgAEP | PickerEmojiAEP | PickerImageAEP | PickerMediaInsertAEP | PickerMediaInsertClosedAEP | PickerMediaInsertCancelledAEP | ReactNodeViewRenderedAEP | RichMediaLayoutAEP | SelectionAEP | SlowInputAEP | TransactionMutatedAEP | UploadExternalFailedAEP | WithPluginStateCalledAEP | CodeBlockLanguageSelectedAEP | EditorContentRetrievalPerformedAEP | UfoSessionCompletePayloadAEP | MediaLinkTransformedAEP | TextLinkCodeMarkTransformedAEP | DedupeMarksTransformedAEP | IndentationMarksTransformedAEP | NodesMissingContentTransformedAEP | InvalidProsemirrorDocumentErrorAEP | DocumentProcessingErrorAEP | InvalidMediaContentTransformedAEP | HeadingAnchorLinkButtonAEP | CollabStepsTrackerPayloadAEP | CodeBlockWordWrapToggleAEP | RequestToEditAEP | CopyLinkToAnchorButtonAEP;
|
|
199
205
|
export {};
|
|
@@ -29,7 +29,11 @@ export interface State {
|
|
|
29
29
|
activeChildIndex?: number;
|
|
30
30
|
isNodeHovered?: boolean;
|
|
31
31
|
}
|
|
32
|
-
export
|
|
32
|
+
export type PropsNew = Omit<Props, 'extensionProvider'> & {
|
|
33
|
+
extensionProvider?: ExtensionProvider;
|
|
34
|
+
};
|
|
35
|
+
export type StateNew = Omit<State, 'extensionProvider'>;
|
|
36
|
+
export declare class ExtensionComponentOld extends Component<Props, State> {
|
|
33
37
|
private privatePropsParsed;
|
|
34
38
|
state: State;
|
|
35
39
|
mounted: boolean;
|
|
@@ -54,3 +58,5 @@ export declare class ExtensionComponent extends Component<Props, State> {
|
|
|
54
58
|
private tryExtensionHandler;
|
|
55
59
|
private handleExtension;
|
|
56
60
|
}
|
|
61
|
+
export declare const ExtensionComponentNew: (props: Props) => JSX.Element;
|
|
62
|
+
export declare const ExtensionComponent: (props: Props) => JSX.Element;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/editor-common",
|
|
3
|
-
"version": "93.
|
|
3
|
+
"version": "93.2.0",
|
|
4
4
|
"description": "A package that contains common classes and components for editor and renderer",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"registry": "https://registry.npmjs.org/"
|
|
@@ -145,7 +145,7 @@
|
|
|
145
145
|
"@atlaskit/primitives": "^12.2.0",
|
|
146
146
|
"@atlaskit/profilecard": "^20.4.0",
|
|
147
147
|
"@atlaskit/section-message": "^6.6.0",
|
|
148
|
-
"@atlaskit/smart-card": "^29.
|
|
148
|
+
"@atlaskit/smart-card": "^29.2.0",
|
|
149
149
|
"@atlaskit/smart-user-picker": "^6.10.0",
|
|
150
150
|
"@atlaskit/spinner": "^16.3.0",
|
|
151
151
|
"@atlaskit/task-decision": "^17.11.0",
|
|
@@ -271,6 +271,9 @@
|
|
|
271
271
|
"use-effect-in-use-previous-props": {
|
|
272
272
|
"type": "boolean"
|
|
273
273
|
},
|
|
274
|
+
"platform_editor_react18_extension_component": {
|
|
275
|
+
"type": "boolean"
|
|
276
|
+
},
|
|
274
277
|
"platform-datasources-enable-two-way-sync": {
|
|
275
278
|
"type": "boolean"
|
|
276
279
|
},
|