@atlaskit/editor-common 102.2.0 → 102.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/cjs/analytics/types/enums.js +1 -0
  3. package/dist/cjs/extensibility/Extension/Extension/index.js +6 -4
  4. package/dist/cjs/extensions/module-helpers.js +31 -14
  5. package/dist/cjs/keymaps/index.js +3 -2
  6. package/dist/cjs/monitoring/error.js +1 -1
  7. package/dist/cjs/ui/DropList/index.js +1 -1
  8. package/dist/cjs/ui/Mention/index.js +13 -1
  9. package/dist/cjs/ui/Mention/mention-with-providers.js +105 -2
  10. package/dist/es2019/analytics/types/enums.js +1 -0
  11. package/dist/es2019/extensibility/Extension/Extension/index.js +6 -4
  12. package/dist/es2019/extensions/module-helpers.js +24 -5
  13. package/dist/es2019/keymaps/index.js +1 -0
  14. package/dist/es2019/monitoring/error.js +1 -1
  15. package/dist/es2019/ui/DropList/index.js +1 -1
  16. package/dist/es2019/ui/Mention/index.js +14 -2
  17. package/dist/es2019/ui/Mention/mention-with-providers.js +83 -2
  18. package/dist/esm/analytics/types/enums.js +1 -0
  19. package/dist/esm/extensibility/Extension/Extension/index.js +6 -4
  20. package/dist/esm/extensions/module-helpers.js +31 -14
  21. package/dist/esm/keymaps/index.js +1 -0
  22. package/dist/esm/monitoring/error.js +1 -1
  23. package/dist/esm/ui/DropList/index.js +1 -1
  24. package/dist/esm/ui/Mention/index.js +14 -2
  25. package/dist/esm/ui/Mention/mention-with-providers.js +105 -2
  26. package/dist/types/analytics/types/enums.d.ts +1 -0
  27. package/dist/types/analytics/types/selection-events.d.ts +5 -1
  28. package/dist/types/extensions/module-helpers.d.ts +2 -2
  29. package/dist/types/extensions/types/extension-manifest-toolbar-item.d.ts +3 -1
  30. package/dist/types/extensions/types/extension-manifest.d.ts +1 -1
  31. package/dist/types/keymaps/index.d.ts +1 -0
  32. package/dist/types/types/floating-toolbar.d.ts +2 -1
  33. package/dist/types/types/index.d.ts +1 -1
  34. package/dist/types/ui/Mention/mention-with-providers.d.ts +8 -1
  35. package/dist/types/ui-menu/ColorPickerButton/index.d.ts +1 -1
  36. package/dist/types-ts4.5/analytics/types/enums.d.ts +1 -0
  37. package/dist/types-ts4.5/analytics/types/selection-events.d.ts +5 -1
  38. package/dist/types-ts4.5/extensions/module-helpers.d.ts +2 -2
  39. package/dist/types-ts4.5/extensions/types/extension-manifest-toolbar-item.d.ts +3 -1
  40. package/dist/types-ts4.5/extensions/types/extension-manifest.d.ts +1 -1
  41. package/dist/types-ts4.5/keymaps/index.d.ts +1 -0
  42. package/dist/types-ts4.5/types/floating-toolbar.d.ts +2 -1
  43. package/dist/types-ts4.5/types/index.d.ts +1 -1
  44. package/dist/types-ts4.5/ui/Mention/mention-with-providers.d.ts +8 -1
  45. package/dist/types-ts4.5/ui-menu/ColorPickerButton/index.d.ts +1 -1
  46. package/package.json +11 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,29 @@
1
1
  # @atlaskit/editor-common
2
2
 
3
+ ## 102.3.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#122181](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/122181)
8
+ [`cf759849b38dc`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/cf759849b38dc) -
9
+ [ux] Added dropdown menu in floating toolbar for autoconverted extensions
10
+ - [#124688](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/124688)
11
+ [`9b1137bda6f87`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/9b1137bda6f87) -
12
+ [ux] ED-25486 Updates cmd+a behaviour to progressively select nodes behind
13
+ platform_editor_cmd_a_progressively_select_nodes experiment.
14
+
15
+ ### Patch Changes
16
+
17
+ - Updated dependencies
18
+
19
+ ## 102.2.1
20
+
21
+ ### Patch Changes
22
+
23
+ - [#123984](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/123984)
24
+ [`d26bb785e8693`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/d26bb785e8693) -
25
+ Fix SSR of live/editor bodied macros
26
+
3
27
  ## 102.2.0
4
28
 
5
29
  ### Minor Changes
@@ -100,6 +100,7 @@ var ACTION = exports.ACTION = /*#__PURE__*/function (ACTION) {
100
100
  ACTION["RESOLVED"] = "resolved";
101
101
  ACTION["REQUEST_TO_EDIT"] = "requestToEdit";
102
102
  ACTION["SELECTED"] = "selected";
103
+ ACTION["SELECT_ALL"] = "selectAll";
103
104
  ACTION["SHOWN"] = "shown";
104
105
  ACTION["SLOW_INPUT"] = "slowInput";
105
106
  ACTION["STARTED"] = "started";
@@ -194,12 +194,14 @@ function ExtensionWithPluginState(props) {
194
194
  "data-testid": "extension-content"
195
195
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-imported-style-values, @atlaskit/design-system/consistent-css-prop-usage -- Ignored via go/DSP-18766
196
196
  ,
197
- css: _styles2.content,
198
- ref: handleContentDOMRef
197
+ css: _styles2.content
199
198
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
200
199
  ,
201
- className: contentClassNames
202
- })))));
200
+ className: contentClassNames,
201
+ ref: !(0, _platformFeatureFlags.fg)('platform_editor_extension_fix_ssr_ref') ? handleContentDOMRef : undefined
202
+ }, (0, _platformFeatureFlags.fg)('platform_editor_extension_fix_ssr_ref') && (0, _react2.jsx)("div", {
203
+ ref: handleContentDOMRef
204
+ }))))));
203
205
  }
204
206
  var Extension = function Extension(props) {
205
207
  var pluginInjectionApi = props.pluginInjectionApi;
@@ -14,6 +14,7 @@ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"))
14
14
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
15
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
16
16
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
17
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
17
18
  var _manifestHelpers = require("./manifest-helpers");
18
19
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
19
20
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
@@ -164,21 +165,21 @@ var logError = function logError(msg) {
164
165
  // eslint-disable-next-line no-console
165
166
  (_console = console).error.apply(_console, [msg].concat(args));
166
167
  };
167
- var toolbarItemToButtonConfig = function toolbarItemToButtonConfig(toolbarItem, parentKey) {
168
- var tooltip = toolbarItem.tooltip,
169
- tooltipStyle = toolbarItem.tooltipStyle,
170
- key = toolbarItem.key,
171
- label = toolbarItem.label,
172
- ariaLabel = toolbarItem.ariaLabel,
173
- icon = toolbarItem.icon,
174
- action = toolbarItem.action,
175
- disabled = toolbarItem.disabled;
168
+ var toolbarItemToButtonConfig = function toolbarItemToButtonConfig(toolbarButton, parentKey) {
169
+ var tooltip = toolbarButton.tooltip,
170
+ tooltipStyle = toolbarButton.tooltipStyle,
171
+ key = toolbarButton.key,
172
+ label = toolbarButton.label,
173
+ ariaLabel = toolbarButton.ariaLabel,
174
+ icon = toolbarButton.icon,
175
+ action = toolbarButton.action,
176
+ disabled = toolbarButton.disabled;
176
177
  var itemKey = [parentKey, key].join(':');
177
178
  if (typeof action !== 'function') {
178
179
  logError("Provided action is not a function for extension toolbar button: ".concat(label, " (").concat(itemKey, ")"));
179
180
  }
180
181
  var labelAndIcon = {};
181
- switch (toolbarItem.display) {
182
+ switch (toolbarButton.display) {
182
183
  case 'icon':
183
184
  if (!icon) {
184
185
  logError("icon should be provided for extension toolbar button (".concat(itemKey, "), when display is set to 'icon'"));
@@ -254,9 +255,16 @@ var getContextualToolbarItemsFromModule = exports.getContextualToolbarItemsFromM
254
255
  return toolbarItems;
255
256
  }
256
257
  return [];
257
- }).flatMap(function (toolbarButtons) {
258
- return toolbarButtons.map(function (toolbarButton) {
259
- return toolbarItemToButtonConfig(toolbarButton, extension.key);
258
+ }).flatMap(function (toolbarItems) {
259
+ return toolbarItems.map(function (toolbarItem) {
260
+ if ((0, _platformFeatureFlags.fg)('forge_macro_autoconvert')) {
261
+ if (isToolbarButton(toolbarItem)) {
262
+ return toolbarItemToButtonConfig(toolbarItem, extension.key);
263
+ }
264
+ return toolbarItem;
265
+ } else {
266
+ return toolbarItemToButtonConfig(toolbarItem, extension.key);
267
+ }
260
268
  });
261
269
  });
262
270
  }
@@ -265,6 +273,12 @@ var getContextualToolbarItemsFromModule = exports.getContextualToolbarItemsFromM
265
273
  return extensionToolbarButtons;
266
274
  });
267
275
  };
276
+ var isToolbarButton = function isToolbarButton(toolbarItem) {
277
+ if ('type' in toolbarItem) {
278
+ return false;
279
+ }
280
+ return true;
281
+ };
268
282
 
269
283
  // defines whether to add toolbar item for the given node
270
284
  function shouldAddExtensionItemForNode(item, node) {
@@ -280,11 +294,14 @@ function shouldAddExtensionItemForNode(item, node) {
280
294
 
281
295
  // in cases where we need custom exclusion depending on the node
282
296
  if (item.context.shouldExclude) {
283
- return item.context.shouldExclude(node);
297
+ if (item.context.shouldExclude(node)) {
298
+ return false;
299
+ }
284
300
  }
285
301
  var _item$context = item.context,
286
302
  extensionType = _item$context.extensionType,
287
303
  extensionKey = _item$context.extensionKey;
304
+
288
305
  // if extension type is given - should match extension type
289
306
  if (extensionType && extensionType !== ((_node$attrs = node.attrs) === null || _node$attrs === void 0 ? void 0 : _node$attrs.extensionType)) {
290
307
  return false;
@@ -102,8 +102,8 @@ Object.defineProperty(exports, "keymap", {
102
102
  exports.makeKeyMapArrayWithCommon = makeKeyMapArrayWithCommon;
103
103
  exports.makeKeyMapWithCommon = makeKeyMapWithCommon;
104
104
  exports.makeKeymap = makeKeymap;
105
- exports.startColumnResizing = exports.splitListItem = exports.splitCodeBlock = exports.space = exports.showElementDragHandle = exports.shiftTab = exports.shiftEnter = exports.shiftBackspace = exports.shiftArrowUp = exports.setNormalText = exports.selectTable = exports.selectRow = exports.selectColumn = exports.redo = exports.previousCell = exports.pastePlainText = exports.paste = exports.outdentList = exports.outdent = exports.openHelp = exports.nextCell = exports.navToFloatingToolbar = exports.navToEditorToolbar = exports.moveUp = exports.moveRowUp = exports.moveRowDown = exports.moveRight = exports.moveLeft = exports.moveDown = exports.moveColumnRight = exports.moveColumnLeft = void 0;
106
- exports.toggleUnderline = exports.toggleTaskItemCheckbox = exports.toggleTable = exports.toggleSuperscript = exports.toggleSubscript = exports.toggleStrikethrough = exports.toggleOrderedList = exports.toggleItalic = exports.toggleHighlightPalette = exports.toggleHeading6 = exports.toggleHeading5 = exports.toggleHeading4 = exports.toggleHeading3 = exports.toggleHeading2 = exports.toggleHeading1 = exports.toggleCode = exports.toggleBulletList = exports.toggleBold = exports.toggleBlockQuote = exports.tab = exports.submit = void 0;
105
+ exports.splitListItem = exports.splitCodeBlock = exports.space = exports.showElementDragHandle = exports.shiftTab = exports.shiftEnter = exports.shiftBackspace = exports.shiftArrowUp = exports.setNormalText = exports.selectTable = exports.selectRow = exports.selectNode = exports.selectColumn = exports.redo = exports.previousCell = exports.pastePlainText = exports.paste = exports.outdentList = exports.outdent = exports.openHelp = exports.nextCell = exports.navToFloatingToolbar = exports.navToEditorToolbar = exports.moveUp = exports.moveRowUp = exports.moveRowDown = exports.moveRight = exports.moveLeft = exports.moveDown = exports.moveColumnRight = exports.moveColumnLeft = void 0;
106
+ exports.toggleUnderline = exports.toggleTaskItemCheckbox = exports.toggleTable = exports.toggleSuperscript = exports.toggleSubscript = exports.toggleStrikethrough = exports.toggleOrderedList = exports.toggleItalic = exports.toggleHighlightPalette = exports.toggleHeading6 = exports.toggleHeading5 = exports.toggleHeading4 = exports.toggleHeading3 = exports.toggleHeading2 = exports.toggleHeading1 = exports.toggleCode = exports.toggleBulletList = exports.toggleBold = exports.toggleBlockQuote = exports.tab = exports.submit = exports.startColumnResizing = void 0;
107
107
  exports.tooltip = tooltip;
108
108
  exports.undo = void 0;
109
109
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
@@ -207,6 +207,7 @@ var toggleTaskItemCheckbox = exports.toggleTaskItemCheckbox = makeKeyMapWithComm
207
207
  var selectRow = exports.selectRow = makeKeyMapArrayWithCommon('Select row', ['Mod-Alt-Shift-ArrowLeft', 'Mod-Alt-Shift-ArrowRight']);
208
208
  var selectColumn = exports.selectColumn = makeKeyMapArrayWithCommon('Select column', ['Mod-Alt-Shift-ArrowDown', 'Mod-Alt-Shift-ArrowUp']);
209
209
  var selectTable = exports.selectTable = makeKeyMapWithCommon('Select table', 'Mod-a');
210
+ var selectNode = exports.selectNode = makeKeyMapWithCommon('Select node', 'Mod-a');
210
211
  var increaseMediaSize = exports.increaseMediaSize = makeKeyMapWithCommon('increase image size', 'Mod-Alt-]');
211
212
  var decreaseMediaSize = exports.decreaseMediaSize = makeKeyMapWithCommon('increase image size', 'Mod-Alt-[');
212
213
  var activateVideoControls = exports.activateVideoControls = makeKeyMapWithCommon('Activate controls panel on video', 'Shift-F10');
@@ -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.2.0";
20
+ var packageVersion = "102.3.0";
21
21
  var sanitiseSentryEvents = function sanitiseSentryEvents(data, _hint) {
22
22
  // Remove URL as it has UGC
23
23
  // Ignored via go/ees007
@@ -23,7 +23,7 @@ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.
23
23
  * @jsx jsx
24
24
  */ // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
25
25
  var packageName = "@atlaskit/editor-common";
26
- var packageVersion = "102.2.0";
26
+ var packageVersion = "102.3.0";
27
27
  var halfFocusRing = 1;
28
28
  var dropOffset = '0, 8';
29
29
  // Ignored via go/ees005
@@ -13,6 +13,7 @@ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/ge
13
13
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
14
14
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
15
  var _react = _interopRequireWildcard(require("react"));
16
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
16
17
  var _providerFactory = require("../../provider-factory");
17
18
  var _mentionWithProviders = require("./mention-with-providers");
18
19
  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); }
@@ -33,7 +34,18 @@ var Mention = exports.default = /*#__PURE__*/function (_PureComponent) {
33
34
  localId = _this$props.localId;
34
35
  var mentionProvider = providers.mentionProvider,
35
36
  profilecardProvider = providers.profilecardProvider;
36
- return /*#__PURE__*/_react.default.createElement(_mentionWithProviders.MentionWithProviders, {
37
+ if ((0, _platformFeatureFlags.fg)('platform_editor_react18_mention_with_provider_fix')) {
38
+ return /*#__PURE__*/_react.default.createElement(_mentionWithProviders.MentionWithProviders, {
39
+ id: id,
40
+ text: text,
41
+ accessLevel: accessLevel,
42
+ localId: localId,
43
+ eventHandlers: eventHandlers,
44
+ mentionProvider: mentionProvider,
45
+ profilecardProvider: profilecardProvider
46
+ });
47
+ }
48
+ return /*#__PURE__*/_react.default.createElement(_mentionWithProviders.MentionWithProvidersOld, {
37
49
  id: id,
38
50
  text: text,
39
51
  accessLevel: accessLevel,
@@ -5,14 +5,24 @@ var _typeof = require("@babel/runtime/helpers/typeof");
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.MentionWithProviders = void 0;
8
+ exports.MentionWithProvidersOld = exports.MentionWithProviders = void 0;
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
12
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
13
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
14
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
15
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
16
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
17
  var _react = _interopRequireWildcard(require("react"));
11
18
  var _element = require("@atlaskit/mention/element");
12
19
  var _mentionWithProfilecard = _interopRequireDefault(require("./mention-with-profilecard"));
13
20
  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); }
14
21
  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; }
22
+ function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
23
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
15
24
  var GENERIC_USER_IDS = ['HipChat', 'all', 'here'];
25
+ var noop = function noop() {};
16
26
  var MentionWithProviders = exports.MentionWithProviders = function MentionWithProviders(_ref) {
17
27
  var accessLevel = _ref.accessLevel,
18
28
  eventHandlers = _ref.eventHandlers,
@@ -62,4 +72,97 @@ var MentionWithProviders = exports.MentionWithProviders = function MentionWithPr
62
72
  onMouseEnter: eventHandlers === null || eventHandlers === void 0 ? void 0 : eventHandlers.onMouseEnter,
63
73
  onMouseLeave: eventHandlers === null || eventHandlers === void 0 ? void 0 : eventHandlers.onMouseLeave
64
74
  });
65
- };
75
+ };
76
+
77
+ // eslint-disable-next-line @repo/internal/react/no-class-components
78
+ var MentionWithProvidersOld = exports.MentionWithProvidersOld = /*#__PURE__*/function (_PureComponent) {
79
+ function MentionWithProvidersOld() {
80
+ var _this;
81
+ (0, _classCallCheck2.default)(this, MentionWithProvidersOld);
82
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
83
+ args[_key] = arguments[_key];
84
+ }
85
+ _this = _callSuper(this, MentionWithProvidersOld, [].concat(args));
86
+ (0, _defineProperty2.default)(_this, "state", {
87
+ profilecardProvider: null
88
+ });
89
+ return _this;
90
+ }
91
+ (0, _inherits2.default)(MentionWithProvidersOld, _PureComponent);
92
+ return (0, _createClass2.default)(MentionWithProvidersOld, [{
93
+ key: "UNSAFE_componentWillMount",
94
+ value:
95
+ // Ignored via go/ees005
96
+ // eslint-disable-next-line react/no-unsafe
97
+ function UNSAFE_componentWillMount() {
98
+ this.updateProfilecardProvider(this.props);
99
+ }
100
+
101
+ // Ignored via go/ees005
102
+ // eslint-disable-next-line react/no-unsafe
103
+ }, {
104
+ key: "UNSAFE_componentWillReceiveProps",
105
+ value: function UNSAFE_componentWillReceiveProps(nextProps) {
106
+ if (nextProps.profilecardProvider !== this.props.profilecardProvider) {
107
+ this.updateProfilecardProvider(nextProps);
108
+ }
109
+ }
110
+ }, {
111
+ key: "updateProfilecardProvider",
112
+ value: function updateProfilecardProvider(props) {
113
+ var _this2 = this;
114
+ // We are not using async/await here to avoid having an intermediate Promise
115
+ // introduced by the transpiler.
116
+ // This will allow consumer to use a SynchronousPromise.resolve and avoid useless
117
+ // rerendering
118
+ if (props.profilecardProvider) {
119
+ props.profilecardProvider.then(function (profilecardProvider) {
120
+ _this2.setState({
121
+ profilecardProvider: profilecardProvider
122
+ });
123
+ }).catch(function () {
124
+ _this2.setState({
125
+ profilecardProvider: null
126
+ });
127
+ });
128
+ } else {
129
+ this.setState({
130
+ profilecardProvider: null
131
+ });
132
+ }
133
+ }
134
+ }, {
135
+ key: "render",
136
+ value: function render() {
137
+ var _this$props = this.props,
138
+ accessLevel = _this$props.accessLevel,
139
+ eventHandlers = _this$props.eventHandlers,
140
+ id = _this$props.id,
141
+ mentionProvider = _this$props.mentionProvider,
142
+ text = _this$props.text,
143
+ localId = _this$props.localId;
144
+ var profilecardProvider = this.state.profilecardProvider;
145
+
146
+ // Ignored via go/ees005
147
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
148
+ var actionHandlers = {};
149
+ ['onClick', 'onMouseEnter', 'onMouseLeave'].forEach(function (handler) {
150
+ actionHandlers[handler] = eventHandlers && eventHandlers[handler] || noop;
151
+ });
152
+ var MentionComponent = profilecardProvider && GENERIC_USER_IDS.indexOf(id) === -1 ? _mentionWithProfilecard.default : _element.ResourcedMention;
153
+ return /*#__PURE__*/_react.default.createElement(MentionComponent, (0, _extends2.default)({
154
+ id: id,
155
+ text: text,
156
+ accessLevel: accessLevel,
157
+ localId: localId,
158
+ mentionProvider: mentionProvider
159
+ // Ignored via go/ees005
160
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
161
+ ,
162
+ profilecardProvider: profilecardProvider
163
+ // Ignored via go/ees005
164
+ // eslint-disable-next-line react/jsx-props-no-spreading
165
+ }, actionHandlers));
166
+ }
167
+ }]);
168
+ }(_react.PureComponent);
@@ -94,6 +94,7 @@ export let ACTION = /*#__PURE__*/function (ACTION) {
94
94
  ACTION["RESOLVED"] = "resolved";
95
95
  ACTION["REQUEST_TO_EDIT"] = "requestToEdit";
96
96
  ACTION["SELECTED"] = "selected";
97
+ ACTION["SELECT_ALL"] = "selectAll";
97
98
  ACTION["SHOWN"] = "shown";
98
99
  ACTION["SLOW_INPUT"] = "slowInput";
99
100
  ACTION["STARTED"] = "started";
@@ -188,12 +188,14 @@ function ExtensionWithPluginState(props) {
188
188
  "data-testid": "extension-content"
189
189
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-imported-style-values, @atlaskit/design-system/consistent-css-prop-usage -- Ignored via go/DSP-18766
190
190
  ,
191
- css: content,
192
- ref: handleContentDOMRef
191
+ css: content
193
192
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
194
193
  ,
195
- className: contentClassNames
196
- })))));
194
+ className: contentClassNames,
195
+ ref: !fg('platform_editor_extension_fix_ssr_ref') ? handleContentDOMRef : undefined
196
+ }, fg('platform_editor_extension_fix_ssr_ref') && jsx("div", {
197
+ ref: handleContentDOMRef
198
+ }))))));
197
199
  }
198
200
  const Extension = props => {
199
201
  const {
@@ -1,3 +1,4 @@
1
+ import { fg } from '@atlaskit/platform-feature-flags';
1
2
  import { buildAction } from './manifest-helpers';
2
3
  export const groupBy = (arr, attr, keyRenamer) =>
3
4
  // Ignored via go/ees005
@@ -68,7 +69,7 @@ const logError = (msg, ...args) => {
68
69
  // eslint-disable-next-line no-console
69
70
  console.error(msg, ...args);
70
71
  };
71
- const toolbarItemToButtonConfig = (toolbarItem, parentKey) => {
72
+ const toolbarItemToButtonConfig = (toolbarButton, parentKey) => {
72
73
  const {
73
74
  tooltip,
74
75
  tooltipStyle,
@@ -78,13 +79,13 @@ const toolbarItemToButtonConfig = (toolbarItem, parentKey) => {
78
79
  icon,
79
80
  action,
80
81
  disabled
81
- } = toolbarItem;
82
+ } = toolbarButton;
82
83
  const itemKey = [parentKey, key].join(':');
83
84
  if (typeof action !== 'function') {
84
85
  logError(`Provided action is not a function for extension toolbar button: ${label} (${itemKey})`);
85
86
  }
86
87
  let labelAndIcon = {};
87
- switch (toolbarItem.display) {
88
+ switch (toolbarButton.display) {
88
89
  case 'icon':
89
90
  if (!icon) {
90
91
  logError(`icon should be provided for extension toolbar button (${itemKey}), when display is set to 'icon'`);
@@ -157,11 +158,26 @@ export const getContextualToolbarItemsFromModule = (extensions, node, api) => {
157
158
  return toolbarItems;
158
159
  }
159
160
  return [];
160
- }).flatMap(toolbarButtons => toolbarButtons.map(toolbarButton => toolbarItemToButtonConfig(toolbarButton, extension.key)));
161
+ }).flatMap(toolbarItems => toolbarItems.map(toolbarItem => {
162
+ if (fg('forge_macro_autoconvert')) {
163
+ if (isToolbarButton(toolbarItem)) {
164
+ return toolbarItemToButtonConfig(toolbarItem, extension.key);
165
+ }
166
+ return toolbarItem;
167
+ } else {
168
+ return toolbarItemToButtonConfig(toolbarItem, extension.key);
169
+ }
170
+ }));
161
171
  }
162
172
  return [];
163
173
  }).flatMap(extensionToolbarButtons => extensionToolbarButtons);
164
174
  };
175
+ const isToolbarButton = toolbarItem => {
176
+ if ('type' in toolbarItem) {
177
+ return false;
178
+ }
179
+ return true;
180
+ };
165
181
 
166
182
  // defines whether to add toolbar item for the given node
167
183
  function shouldAddExtensionItemForNode(item, node) {
@@ -177,12 +193,15 @@ function shouldAddExtensionItemForNode(item, node) {
177
193
 
178
194
  // in cases where we need custom exclusion depending on the node
179
195
  if (item.context.shouldExclude) {
180
- return item.context.shouldExclude(node);
196
+ if (item.context.shouldExclude(node)) {
197
+ return false;
198
+ }
181
199
  }
182
200
  const {
183
201
  extensionType,
184
202
  extensionKey
185
203
  } = item.context;
204
+
186
205
  // if extension type is given - should match extension type
187
206
  if (extensionType && extensionType !== ((_node$attrs = node.attrs) === null || _node$attrs === void 0 ? void 0 : _node$attrs.extensionType)) {
188
207
  return false;
@@ -93,6 +93,7 @@ export const toggleTaskItemCheckbox = makeKeyMapWithCommon('Toggles task item',
93
93
  export const selectRow = makeKeyMapArrayWithCommon('Select row', ['Mod-Alt-Shift-ArrowLeft', 'Mod-Alt-Shift-ArrowRight']);
94
94
  export const selectColumn = makeKeyMapArrayWithCommon('Select column', ['Mod-Alt-Shift-ArrowDown', 'Mod-Alt-Shift-ArrowUp']);
95
95
  export const selectTable = makeKeyMapWithCommon('Select table', 'Mod-a');
96
+ export const selectNode = makeKeyMapWithCommon('Select node', 'Mod-a');
96
97
  export const increaseMediaSize = makeKeyMapWithCommon('increase image size', 'Mod-Alt-]');
97
98
  export const decreaseMediaSize = makeKeyMapWithCommon('increase image size', 'Mod-Alt-[');
98
99
  export const activateVideoControls = makeKeyMapWithCommon('Activate controls panel on video', 'Shift-F10');
@@ -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 = "102.2.0";
4
+ const packageVersion = "102.3.0";
5
5
  const sanitiseSentryEvents = (data, _hint) => {
6
6
  // Remove URL as it has UGC
7
7
  // Ignored via go/ees007
@@ -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 = "102.2.0";
16
+ const packageVersion = "102.3.0";
17
17
  const halfFocusRing = 1;
18
18
  const dropOffset = '0, 8';
19
19
  // Ignored via go/ees005
@@ -1,8 +1,9 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
  /* eslint-disable @repo/internal/react/no-class-components */
3
3
  import React, { PureComponent } from 'react';
4
+ import { fg } from '@atlaskit/platform-feature-flags';
4
5
  import { ProviderFactory, WithProviders } from '../../provider-factory';
5
- import { MentionWithProviders } from './mention-with-providers';
6
+ import { MentionWithProviders, MentionWithProvidersOld } from './mention-with-providers';
6
7
  export default class Mention extends PureComponent {
7
8
  constructor(props) {
8
9
  super(props);
@@ -18,7 +19,18 @@ export default class Mention extends PureComponent {
18
19
  mentionProvider,
19
20
  profilecardProvider
20
21
  } = providers;
21
- return /*#__PURE__*/React.createElement(MentionWithProviders, {
22
+ if (fg('platform_editor_react18_mention_with_provider_fix')) {
23
+ return /*#__PURE__*/React.createElement(MentionWithProviders, {
24
+ id: id,
25
+ text: text,
26
+ accessLevel: accessLevel,
27
+ localId: localId,
28
+ eventHandlers: eventHandlers,
29
+ mentionProvider: mentionProvider,
30
+ profilecardProvider: profilecardProvider
31
+ });
32
+ }
33
+ return /*#__PURE__*/React.createElement(MentionWithProvidersOld, {
22
34
  id: id,
23
35
  text: text,
24
36
  accessLevel: accessLevel,
@@ -1,7 +1,10 @@
1
- import React, { useLayoutEffect, useRef, useState } from 'react';
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
+ import React, { PureComponent, useLayoutEffect, useRef, useState } from 'react';
2
4
  import { ResourcedMention } from '@atlaskit/mention/element';
3
5
  import ResourcedMentionWithProfilecard from './mention-with-profilecard';
4
6
  const GENERIC_USER_IDS = ['HipChat', 'all', 'here'];
7
+ const noop = () => {};
5
8
  export const MentionWithProviders = ({
6
9
  accessLevel,
7
10
  eventHandlers,
@@ -49,4 +52,82 @@ export const MentionWithProviders = ({
49
52
  onMouseEnter: eventHandlers === null || eventHandlers === void 0 ? void 0 : eventHandlers.onMouseEnter,
50
53
  onMouseLeave: eventHandlers === null || eventHandlers === void 0 ? void 0 : eventHandlers.onMouseLeave
51
54
  });
52
- };
55
+ };
56
+
57
+ // eslint-disable-next-line @repo/internal/react/no-class-components
58
+ export class MentionWithProvidersOld extends PureComponent {
59
+ constructor(...args) {
60
+ super(...args);
61
+ _defineProperty(this, "state", {
62
+ profilecardProvider: null
63
+ });
64
+ }
65
+ // Ignored via go/ees005
66
+ // eslint-disable-next-line react/no-unsafe
67
+ UNSAFE_componentWillMount() {
68
+ this.updateProfilecardProvider(this.props);
69
+ }
70
+
71
+ // Ignored via go/ees005
72
+ // eslint-disable-next-line react/no-unsafe
73
+ UNSAFE_componentWillReceiveProps(nextProps) {
74
+ if (nextProps.profilecardProvider !== this.props.profilecardProvider) {
75
+ this.updateProfilecardProvider(nextProps);
76
+ }
77
+ }
78
+ updateProfilecardProvider(props) {
79
+ // We are not using async/await here to avoid having an intermediate Promise
80
+ // introduced by the transpiler.
81
+ // This will allow consumer to use a SynchronousPromise.resolve and avoid useless
82
+ // rerendering
83
+ if (props.profilecardProvider) {
84
+ props.profilecardProvider.then(profilecardProvider => {
85
+ this.setState({
86
+ profilecardProvider
87
+ });
88
+ }).catch(() => {
89
+ this.setState({
90
+ profilecardProvider: null
91
+ });
92
+ });
93
+ } else {
94
+ this.setState({
95
+ profilecardProvider: null
96
+ });
97
+ }
98
+ }
99
+ render() {
100
+ const {
101
+ accessLevel,
102
+ eventHandlers,
103
+ id,
104
+ mentionProvider,
105
+ text,
106
+ localId
107
+ } = this.props;
108
+ const {
109
+ profilecardProvider
110
+ } = this.state;
111
+
112
+ // Ignored via go/ees005
113
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
114
+ const actionHandlers = {};
115
+ ['onClick', 'onMouseEnter', 'onMouseLeave'].forEach(handler => {
116
+ actionHandlers[handler] = eventHandlers && eventHandlers[handler] || noop;
117
+ });
118
+ const MentionComponent = profilecardProvider && GENERIC_USER_IDS.indexOf(id) === -1 ? ResourcedMentionWithProfilecard : ResourcedMention;
119
+ return /*#__PURE__*/React.createElement(MentionComponent, _extends({
120
+ id: id,
121
+ text: text,
122
+ accessLevel: accessLevel,
123
+ localId: localId,
124
+ mentionProvider: mentionProvider
125
+ // Ignored via go/ees005
126
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
127
+ ,
128
+ profilecardProvider: profilecardProvider
129
+ // Ignored via go/ees005
130
+ // eslint-disable-next-line react/jsx-props-no-spreading
131
+ }, actionHandlers));
132
+ }
133
+ }
@@ -94,6 +94,7 @@ export var ACTION = /*#__PURE__*/function (ACTION) {
94
94
  ACTION["RESOLVED"] = "resolved";
95
95
  ACTION["REQUEST_TO_EDIT"] = "requestToEdit";
96
96
  ACTION["SELECTED"] = "selected";
97
+ ACTION["SELECT_ALL"] = "selectAll";
97
98
  ACTION["SHOWN"] = "shown";
98
99
  ACTION["SLOW_INPUT"] = "slowInput";
99
100
  ACTION["STARTED"] = "started";
@@ -186,12 +186,14 @@ function ExtensionWithPluginState(props) {
186
186
  "data-testid": "extension-content"
187
187
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-imported-style-values, @atlaskit/design-system/consistent-css-prop-usage -- Ignored via go/DSP-18766
188
188
  ,
189
- css: content,
190
- ref: handleContentDOMRef
189
+ css: content
191
190
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
192
191
  ,
193
- className: contentClassNames
194
- })))));
192
+ className: contentClassNames,
193
+ ref: !fg('platform_editor_extension_fix_ssr_ref') ? handleContentDOMRef : undefined
194
+ }, fg('platform_editor_extension_fix_ssr_ref') && jsx("div", {
195
+ ref: handleContentDOMRef
196
+ }))))));
195
197
  }
196
198
  var Extension = function Extension(props) {
197
199
  var pluginInjectionApi = props.pluginInjectionApi;