@atlaskit/editor-common 121.2.1 → 121.2.3

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 +25 -0
  2. package/dist/cjs/ai-messages/ai-suggestions.js +5 -0
  3. package/dist/cjs/analytics/types/enums.js +1 -0
  4. package/dist/cjs/extensibility/Extension/Extension/index.js +6 -3
  5. package/dist/cjs/extensibility/Extension/InlineExtension/index.js +6 -3
  6. package/dist/cjs/extensibility/Extension/Lozenge/ExtensionLabel.js +2 -1
  7. package/dist/cjs/extensibility/Extension/Lozenge/LozengeComponent.js +3 -1
  8. package/dist/cjs/extensibility/Extension/Lozenge/index.js +1 -0
  9. package/dist/cjs/extensibility/ExtensionComponent.js +129 -26
  10. package/dist/cjs/extensibility/MultiBodiedExtension/index.js +4 -2
  11. package/dist/cjs/monitoring/error.js +1 -1
  12. package/dist/cjs/ui/DropList/index.js +1 -1
  13. package/dist/es2019/ai-messages/ai-suggestions.js +5 -0
  14. package/dist/es2019/analytics/types/enums.js +1 -0
  15. package/dist/es2019/extensibility/Extension/Extension/index.js +6 -3
  16. package/dist/es2019/extensibility/Extension/InlineExtension/index.js +6 -3
  17. package/dist/es2019/extensibility/Extension/Lozenge/ExtensionLabel.js +2 -1
  18. package/dist/es2019/extensibility/Extension/Lozenge/LozengeComponent.js +3 -1
  19. package/dist/es2019/extensibility/Extension/Lozenge/index.js +1 -0
  20. package/dist/es2019/extensibility/ExtensionComponent.js +85 -3
  21. package/dist/es2019/extensibility/MultiBodiedExtension/index.js +4 -2
  22. package/dist/es2019/monitoring/error.js +1 -1
  23. package/dist/es2019/ui/DropList/index.js +1 -1
  24. package/dist/esm/ai-messages/ai-suggestions.js +5 -0
  25. package/dist/esm/analytics/types/enums.js +1 -0
  26. package/dist/esm/extensibility/Extension/Extension/index.js +6 -3
  27. package/dist/esm/extensibility/Extension/InlineExtension/index.js +6 -3
  28. package/dist/esm/extensibility/Extension/Lozenge/ExtensionLabel.js +2 -1
  29. package/dist/esm/extensibility/Extension/Lozenge/LozengeComponent.js +3 -1
  30. package/dist/esm/extensibility/Extension/Lozenge/index.js +1 -0
  31. package/dist/esm/extensibility/ExtensionComponent.js +128 -25
  32. package/dist/esm/extensibility/MultiBodiedExtension/index.js +4 -2
  33. package/dist/esm/monitoring/error.js +1 -1
  34. package/dist/esm/ui/DropList/index.js +1 -1
  35. package/dist/types/ai-messages/ai-suggestions.d.ts +5 -0
  36. package/dist/types/analytics/types/enums.d.ts +1 -0
  37. package/dist/types/analytics/types/node-events.d.ts +1 -1
  38. package/dist/types/extensibility/Extension/Extension/index.d.ts +1 -0
  39. package/dist/types/extensibility/Extension/InlineExtension/index.d.ts +1 -0
  40. package/dist/types/extensibility/Extension/Lozenge/ExtensionLabel.d.ts +2 -1
  41. package/dist/types/extensibility/Extension/Lozenge/LozengeComponent.d.ts +2 -1
  42. package/dist/types/extensibility/Extension/Lozenge/index.d.ts +1 -0
  43. package/dist/types/extensibility/ExtensionComponent.d.ts +1 -0
  44. package/dist/types/extensibility/MultiBodiedExtension/index.d.ts +1 -0
  45. package/package.json +6 -4
  46. package/afm-cc/tsconfig.json +0 -206
package/CHANGELOG.md CHANGED
@@ -1,5 +1,30 @@
1
1
  # @atlaskit/editor-common
2
2
 
3
+ ## 121.2.3
4
+
5
+ ### Patch Changes
6
+
7
+ - [`9ec75083521a7`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/9ec75083521a7) -
8
+ [ux] Behind `platform_editor_hide_configure_lozenge_non_configurable`: hide the "Configure {name}"
9
+ extension lozenge label for extensions that expose no configuration, using the same signal the
10
+ floating toolbar uses for its edit button (an `update` method on the extension handler or node
11
+ module). Configurable extensions are unchanged. Motivating case: the guard-premium redaction node,
12
+ which should only expose its delete affordance.
13
+ - [`0e5685af71a8f`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/0e5685af71a8f) -
14
+ [ux] [EDITOR-8350] This change adds a feature-gated floating toolbar for divider nodes behind
15
+ platform_editor_lovability_dividers, with Copy and Delete buttons.
16
+ - Updated dependencies
17
+
18
+ ## 121.2.2
19
+
20
+ ### Patch Changes
21
+
22
+ - [`38a509b8e70ac`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/38a509b8e70ac) -
23
+ [ux] Show the reviewing agent name and avatar on the first AI suggestions thinking-bar status,
24
+ behind the platform_editor_ai_content_suggested_edits experiment. Adds a firstMessage prop to
25
+ RovoThinkingBar to override the first status's text/icon.
26
+ - Updated dependencies
27
+
3
28
  ## 121.2.1
4
29
 
5
30
  ### Patch Changes
@@ -276,6 +276,11 @@ var aiSuggestionsMessages = exports.aiSuggestionsMessages = (0, _reactIntl.defin
276
276
  defaultMessage: 'Reviewing content',
277
277
  description: 'Loading message shown while the AI is reviewing the content'
278
278
  },
279
+ thinkingReviewingContentWithAgent: {
280
+ id: 'fabric.editor.ai.suggestions.thinking.reviewingContentWithAgent.non-final',
281
+ defaultMessage: 'Reviewing content with {agentName}',
282
+ description: 'First loading message on the AI suggestions thinking bar. The {agentName} placeholder is replaced with the reviewing agent name (for example "Content Reviewer"). Shown for a few seconds before the remaining rotating statuses.'
283
+ },
279
284
  thinkingMayTakeAFewMinutes: {
280
285
  id: 'fabric.editor.ai.suggestions.thinking.mayTakeAFewMinutes.non-final',
281
286
  defaultMessage: 'This may take a few minutes',
@@ -327,6 +327,7 @@ var ACTION_SUBJECT = exports.ACTION_SUBJECT = /*#__PURE__*/function (ACTION_SUBJ
327
327
  ACTION_SUBJECT["CONTENT_COMPONENT"] = "contentComponent";
328
328
  ACTION_SUBJECT["DATE"] = "date";
329
329
  ACTION_SUBJECT["DATE_SEGMENT"] = "dateSegment";
330
+ ACTION_SUBJECT["DIVIDER"] = "divider";
330
331
  ACTION_SUBJECT["DOCUMENT"] = "document";
331
332
  ACTION_SUBJECT["EDITOR"] = "editor";
332
333
  ACTION_SUBJECT["ACTIVITY_SESSION"] = "activitySession";
@@ -60,7 +60,8 @@ function ExtensionWithPluginState(props) {
60
60
  showBodiedExtensionRendererView = props.showBodiedExtensionRendererView,
61
61
  setShowBodiedExtensionRendererView = props.setShowBodiedExtensionRendererView,
62
62
  pluginInjectionApi = props.pluginInjectionApi,
63
- isLivePageViewMode = props.isLivePageViewMode;
63
+ isLivePageViewMode = props.isLivePageViewMode,
64
+ hideConfigureLabel = props.hideConfigureLabel;
64
65
  var _ref = macroInteractionDesignFeatureFlags || {},
65
66
  showMacroInteractionDesignUpdates = _ref.showMacroInteractionDesignUpdates;
66
67
  var isLegacyContentMacroExtension = function isLegacyContentMacroExtension(extensionNode) {
@@ -153,7 +154,8 @@ function ExtensionWithPluginState(props) {
153
154
  showUpdatedLivePages1PBodiedExtensionUI: showUpdatedLivePages1PBodiedExtensionUI,
154
155
  showBodiedExtensionRendererView: showBodiedExtensionRendererView,
155
156
  setShowBodiedExtensionRendererView: setShowBodiedExtensionRendererView,
156
- pluginInjectionApi: pluginInjectionApi
157
+ pluginInjectionApi: pluginInjectionApi,
158
+ hideConfigureLabel: hideConfigureLabel
157
159
  }), (0, _react2.jsx)("div", {
158
160
  "data-testid": "extension-container",
159
161
  ref: handleRef,
@@ -199,7 +201,8 @@ function ExtensionWithPluginState(props) {
199
201
  }, !removeBorder && (0, _react2.jsx)(_Lozenge.default, {
200
202
  node: node,
201
203
  showMacroInteractionDesignUpdates: showMacroInteractionDesignUpdates,
202
- pluginInjectionApi: pluginInjectionApi
204
+ pluginInjectionApi: pluginInjectionApi,
205
+ hideConfigureLabel: hideConfigureLabel
203
206
  }), children), hasBody &&
204
207
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop, @atlaskit/design-system/consistent-css-prop-usage -- Ignored via go/DSP-18766
205
208
  (0, _react2.jsx)("div", {
@@ -84,7 +84,8 @@ var InlineExtension = function InlineExtension(props) {
84
84
  children = props.children,
85
85
  isNodeHovered = props.isNodeHovered,
86
86
  setIsNodeHovered = props.setIsNodeHovered,
87
- isLivePageViewMode = props.isLivePageViewMode;
87
+ isLivePageViewMode = props.isLivePageViewMode,
88
+ hideConfigureLabel = props.hideConfigureLabel;
88
89
  var _ref3 = macroInteractionDesignFeatureFlags || {},
89
90
  showMacroInteractionDesignUpdates = _ref3.showMacroInteractionDesignUpdates;
90
91
  var shouldUseFlowingInlineWrapper = (0, _fg.fg)('rovo_skill_tag_label_wrapping');
@@ -122,7 +123,8 @@ var InlineExtension = function InlineExtension(props) {
122
123
  isNodeHovered: isNodeHovered,
123
124
  showMacroInteractionDesignUpdates: showMacroInteractionDesignUpdates,
124
125
  setIsNodeHovered: setIsNodeHovered,
125
- pluginInjectionApi: pluginInjectionApi
126
+ pluginInjectionApi: pluginInjectionApi,
127
+ hideConfigureLabel: hideConfigureLabel
126
128
  }), (0, _react2.jsx)("div", {
127
129
  "data-testid": "inline-extension-wrapper",
128
130
  css: [
@@ -148,7 +150,8 @@ var InlineExtension = function InlineExtension(props) {
148
150
  }), children ? children : (0, _react2.jsx)(_Lozenge.default, {
149
151
  node: node,
150
152
  showMacroInteractionDesignUpdates: showMacroInteractionDesignUpdates,
151
- pluginInjectionApi: pluginInjectionApi
153
+ pluginInjectionApi: pluginInjectionApi,
154
+ hideConfigureLabel: hideConfigureLabel
152
155
  })));
153
156
  return (0, _expValEquals.expValEquals)('enghealth-53346_fix_redaction_marker_editor', 'isEnabled', true) ? (0, _react2.jsx)(MemoizedWidthContextProvider, {
154
157
  rendererContainerWidth: rendererContainerWidth
@@ -126,6 +126,7 @@ var ExtensionLabel = exports.ExtensionLabel = function ExtensionLabel(_ref) {
126
126
  isNodeNested = _ref.isNodeNested,
127
127
  setIsNodeHovered = _ref.setIsNodeHovered,
128
128
  isBodiedMacro = _ref.isBodiedMacro,
129
+ hideConfigureLabel = _ref.hideConfigureLabel,
129
130
  showUpdatedLivePages1PBodiedExtensionUI = _ref.showUpdatedLivePages1PBodiedExtensionUI,
130
131
  showLivePagesBodiedMacrosRendererView = _ref.showLivePagesBodiedMacrosRendererView,
131
132
  showBodiedExtensionRendererView = _ref.showBodiedExtensionRendererView,
@@ -183,7 +184,7 @@ var ExtensionLabel = exports.ExtensionLabel = function ExtensionLabel(_ref) {
183
184
  onBlur: (0, _expValEquals.expValEquals)('editor_a11y__enghealth-46814_fy26', 'isEnabled', true) ? function () {} : undefined,
184
185
  "data-testid": "new-lozenge-container",
185
186
  contentEditable: false
186
- }, (0, _react2.jsx)(_Tooltip.default, {
187
+ }, !hideConfigureLabel && (0, _react2.jsx)(_Tooltip.default, {
187
188
  content: (0, _react2.jsx)(_reactIntl.FormattedMessage
188
189
  // Ignored via go/ees005
189
190
  // eslint-disable-next-line react/jsx-props-no-spreading
@@ -38,12 +38,14 @@ var LozengeComponent = exports.LozengeComponent = function LozengeComponent(_ref
38
38
  showUpdatedLivePages1PBodiedExtensionUI = _ref.showUpdatedLivePages1PBodiedExtensionUI,
39
39
  showBodiedExtensionRendererView = _ref.showBodiedExtensionRendererView,
40
40
  setShowBodiedExtensionRendererView = _ref.setShowBodiedExtensionRendererView,
41
- pluginInjectionApi = _ref.pluginInjectionApi;
41
+ pluginInjectionApi = _ref.pluginInjectionApi,
42
+ hideConfigureLabel = _ref.hideConfigureLabel;
42
43
  var capitalizedTitle = capitalizeFirstLetter(title);
43
44
  if (showMacroInteractionDesignUpdates) {
44
45
  return (0, _react2.jsx)(_react.Fragment, null, (0, _react2.jsx)(_ExtensionLabel.ExtensionLabel, {
45
46
  text: capitalizedTitle,
46
47
  extensionName: extensionName,
48
+ hideConfigureLabel: hideConfigureLabel,
47
49
  isNodeHovered: isNodeHovered,
48
50
  isNodeNested: isNodeNested,
49
51
  customContainerStyles: customContainerStyles,
@@ -70,6 +70,7 @@ var ExtensionLozenge = exports.default = /*#__PURE__*/function (_Component) {
70
70
  isNodeNested: isNodeNested,
71
71
  showMacroInteractionDesignUpdates: showMacroInteractionDesignUpdates,
72
72
  extensionName: name,
73
+ hideConfigureLabel: _this.props.hideConfigureLabel,
73
74
  lozengeData: lozengeData,
74
75
  params: params,
75
76
  title: title,
@@ -1,12 +1,13 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _typeof = require("@babel/runtime/helpers/typeof");
4
+ var _typeof3 = require("@babel/runtime/helpers/typeof");
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.ExtensionComponent = void 0;
9
9
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
10
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
10
11
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
11
12
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
12
13
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
@@ -29,7 +30,7 @@ var _InlineExtension = _interopRequireDefault(require("./Extension/InlineExtensi
29
30
  var _MultiBodiedExtension = _interopRequireDefault(require("./MultiBodiedExtension"));
30
31
  var _excluded = ["extensionProvider", "showLivePagesBodiedMacrosRendererView", "node"];
31
32
  /* eslint-disable @repo/internal/react/no-class-components */
32
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t2 in e) "default" !== _t2 && {}.hasOwnProperty.call(e, _t2) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t2)) && (i.get || i.set) ? o(f, _t2, i) : f[_t2] = e[_t2]); return f; })(e, t); }
33
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof3(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t3 in e) "default" !== _t3 && {}.hasOwnProperty.call(e, _t3) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t3)) && (i.get || i.set) ? o(f, _t3, i) : f[_t3] = e[_t3]); return f; })(e, t); }
33
34
  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)); }
34
35
  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
35
36
  var getBodiedExtensionContent = function getBodiedExtensionContent(node) {
@@ -86,6 +87,8 @@ var ExtensionComponentInner = /*#__PURE__*/function (_Component) {
86
87
  }
87
88
  _this = _callSuper(this, ExtensionComponentInner, [].concat(args));
88
89
  (0, _defineProperty2.default)(_this, "privatePropsParsed", false);
90
+ (0, _defineProperty2.default)(_this, "configureAffordanceResolved", false);
91
+ (0, _defineProperty2.default)(_this, "isUnmounted", false);
89
92
  (0, _defineProperty2.default)(_this, "state", {});
90
93
  // memoized to avoid rerender on extension state changes
91
94
  (0, _defineProperty2.default)(_this, "getNodeRenderer", (0, _memoizeOne.default)(_extensions.getNodeRenderer));
@@ -145,14 +148,100 @@ var ExtensionComponentInner = /*#__PURE__*/function (_Component) {
145
148
  }
146
149
  }, _callee, null, [[2, 4]]);
147
150
  })));
151
+ /**
152
+ * Decides whether the "Configure {name}" lozenge label should be hidden for this node.
153
+ *
154
+ * Mirrors how the floating toolbar decides to show its edit button (see
155
+ * `shouldShowEditButton` and `updateEditButton` in `editor-plugin-extension`):
156
+ * - a legacy function handler is configurable via the macro browser;
157
+ * - an object handler is configurable only if it defines `update`;
158
+ * - otherwise the node module from the extension provider decides via its optional `update`.
159
+ * Nodes with no way to be configured get no Configure affordance. Anything we cannot
160
+ * resolve keeps the label, which is the pre-existing behaviour.
161
+ *
162
+ * The result is resolved once per node and held in state rather than derived on each render
163
+ * because the provider path is asynchronous: `getExtensionModuleNode` goes through
164
+ * `extensionProvider.getExtension`, which returns a Promise. Deriving the synchronous handler
165
+ * branches in render while the provider branch stays async would let the same node flip
166
+ * between answers, and would re-run the manifest lookup on every hover re-render. One
167
+ * resolution keeps the label stable and cheap.
168
+ */
169
+ (0, _defineProperty2.default)(_this, "resolveConfigureAffordanceIfNeeded", /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
170
+ var _this$props, extensionHandlers, extensionProvider, node, _node$attrs, extensionType, extensionKey, extensionHandler, extensionModuleNode, _t2;
171
+ return _regenerator.default.wrap(function (_context2) {
172
+ while (1) switch (_context2.prev = _context2.next) {
173
+ case 0:
174
+ if (!(_this.configureAffordanceResolved || !(0, _fg.fg)('platform_editor_hide_configure_lozenge_non_configurable'))) {
175
+ _context2.next = 1;
176
+ break;
177
+ }
178
+ return _context2.abrupt("return");
179
+ case 1:
180
+ _this$props = _this.props, extensionHandlers = _this$props.extensionHandlers, extensionProvider = _this$props.extensionProvider, node = _this$props.node;
181
+ _node$attrs = node.attrs, extensionType = _node$attrs.extensionType, extensionKey = _node$attrs.extensionKey;
182
+ extensionHandler = extensionHandlers === null || extensionHandlers === void 0 ? void 0 : extensionHandlers[extensionType];
183
+ if (!(typeof extensionHandler === 'function')) {
184
+ _context2.next = 2;
185
+ break;
186
+ }
187
+ // Legacy macro browser: configurable, keep the label.
188
+ _this.configureAffordanceResolved = true;
189
+ return _context2.abrupt("return");
190
+ case 2:
191
+ if (!(extensionHandler && (0, _typeof2.default)(extensionHandler) === 'object')) {
192
+ _context2.next = 3;
193
+ break;
194
+ }
195
+ _this.configureAffordanceResolved = true;
196
+ if (typeof extensionHandler.update !== 'function') {
197
+ _this.setState({
198
+ hideConfigureLabel: true
199
+ });
200
+ }
201
+ return _context2.abrupt("return");
202
+ case 3:
203
+ if (extensionProvider) {
204
+ _context2.next = 4;
205
+ break;
206
+ }
207
+ return _context2.abrupt("return");
208
+ case 4:
209
+ _this.configureAffordanceResolved = true;
210
+ _context2.prev = 5;
211
+ _context2.next = 6;
212
+ return (0, _extensions.getExtensionModuleNode)(extensionProvider, extensionType, extensionKey);
213
+ case 6:
214
+ extensionModuleNode = _context2.sent;
215
+ if (!_this.isUnmounted) {
216
+ _context2.next = 7;
217
+ break;
218
+ }
219
+ return _context2.abrupt("return");
220
+ case 7:
221
+ if (typeof (extensionModuleNode === null || extensionModuleNode === void 0 ? void 0 : extensionModuleNode.update) !== 'function') {
222
+ _this.setState({
223
+ hideConfigureLabel: true
224
+ });
225
+ }
226
+ _context2.next = 9;
227
+ break;
228
+ case 8:
229
+ _context2.prev = 8;
230
+ _t2 = _context2["catch"](5);
231
+ case 9:
232
+ case "end":
233
+ return _context2.stop();
234
+ }
235
+ }, _callee2, null, [[5, 8]]);
236
+ })));
148
237
  (0, _defineProperty2.default)(_this, "handleExtension", function (pmNode, actions) {
149
238
  var _pmNode$marks;
150
- var _this$props = _this.props,
151
- extensionHandlers = _this$props.extensionHandlers,
152
- extensionLoadingHandlers = _this$props.extensionLoadingHandlers,
153
- editorView = _this$props.editorView,
154
- showBodiedExtensionRendererView = _this$props.showBodiedExtensionRendererView,
155
- rendererExtensionHandlers = _this$props.rendererExtensionHandlers;
239
+ var _this$props2 = _this.props,
240
+ extensionHandlers = _this$props2.extensionHandlers,
241
+ extensionLoadingHandlers = _this$props2.extensionLoadingHandlers,
242
+ editorView = _this$props2.editorView,
243
+ showBodiedExtensionRendererView = _this$props2.showBodiedExtensionRendererView,
244
+ rendererExtensionHandlers = _this$props2.rendererExtensionHandlers;
156
245
  var _pmNode$attrs = pmNode.attrs,
157
246
  extensionType = _pmNode$attrs.extensionType,
158
247
  extensionKey = _pmNode$attrs.extensionKey,
@@ -217,30 +306,41 @@ var ExtensionComponentInner = /*#__PURE__*/function (_Component) {
217
306
  }
218
307
  (0, _inherits2.default)(ExtensionComponentInner, _Component);
219
308
  return (0, _createClass2.default)(ExtensionComponentInner, [{
309
+ key: "componentDidMount",
310
+ value: function componentDidMount() {
311
+ this.resolveConfigureAffordanceIfNeeded();
312
+ }
313
+ }, {
220
314
  key: "componentDidUpdate",
221
315
  value: function componentDidUpdate() {
222
316
  this.parsePrivateNodePropsIfNeeded();
317
+ this.resolveConfigureAffordanceIfNeeded();
318
+ }
319
+ }, {
320
+ key: "componentWillUnmount",
321
+ value: function componentWillUnmount() {
322
+ this.isUnmounted = true;
223
323
  }
224
324
  }, {
225
325
  key: "render",
226
326
  value: function render() {
227
327
  var _this$state$_privateP2;
228
- var _this$props2 = this.props,
229
- node = _this$props2.node,
230
- handleContentDOMRef = _this$props2.handleContentDOMRef,
231
- editorView = _this$props2.editorView,
232
- references = _this$props2.references,
233
- editorAppearance = _this$props2.editorAppearance,
234
- pluginInjectionApi = _this$props2.pluginInjectionApi,
235
- getPos = _this$props2.getPos,
236
- eventDispatcher = _this$props2.eventDispatcher,
237
- macroInteractionDesignFeatureFlags = _this$props2.macroInteractionDesignFeatureFlags,
238
- extensionProvider = _this$props2.extensionProvider,
239
- showLivePagesBodiedMacrosRendererView = _this$props2.showLivePagesBodiedMacrosRendererView,
240
- showUpdatedLivePages1PBodiedExtensionUI = _this$props2.showUpdatedLivePages1PBodiedExtensionUI,
241
- showBodiedExtensionRendererView = _this$props2.showBodiedExtensionRendererView,
242
- setShowBodiedExtensionRendererView = _this$props2.setShowBodiedExtensionRendererView,
243
- isLivePageViewMode = _this$props2.isLivePageViewMode;
328
+ var _this$props3 = this.props,
329
+ node = _this$props3.node,
330
+ handleContentDOMRef = _this$props3.handleContentDOMRef,
331
+ editorView = _this$props3.editorView,
332
+ references = _this$props3.references,
333
+ editorAppearance = _this$props3.editorAppearance,
334
+ pluginInjectionApi = _this$props3.pluginInjectionApi,
335
+ getPos = _this$props3.getPos,
336
+ eventDispatcher = _this$props3.eventDispatcher,
337
+ macroInteractionDesignFeatureFlags = _this$props3.macroInteractionDesignFeatureFlags,
338
+ extensionProvider = _this$props3.extensionProvider,
339
+ showLivePagesBodiedMacrosRendererView = _this$props3.showLivePagesBodiedMacrosRendererView,
340
+ showUpdatedLivePages1PBodiedExtensionUI = _this$props3.showUpdatedLivePages1PBodiedExtensionUI,
341
+ showBodiedExtensionRendererView = _this$props3.showBodiedExtensionRendererView,
342
+ setShowBodiedExtensionRendererView = _this$props3.setShowBodiedExtensionRendererView,
343
+ isLivePageViewMode = _this$props3.isLivePageViewMode;
244
344
  var selection = editorView.state.selection;
245
345
  var selectedNode = selection instanceof _state.NodeSelection && selection.node;
246
346
  var position = typeof getPos === 'function' && getPos();
@@ -264,7 +364,8 @@ var ExtensionComponentInner = /*#__PURE__*/function (_Component) {
264
364
  isNodeNested: isNodeNested,
265
365
  setIsNodeHovered: this.setIsNodeHovered,
266
366
  isLivePageViewMode: isLivePageViewMode,
267
- allowBodiedOverride: allowBodiedOverride
367
+ allowBodiedOverride: allowBodiedOverride,
368
+ hideConfigureLabel: this.state.hideConfigureLabel
268
369
  });
269
370
  }
270
371
  var extensionHandlerResult = this.tryExtensionHandler(undefined);
@@ -279,6 +380,7 @@ var ExtensionComponentInner = /*#__PURE__*/function (_Component) {
279
380
  handleContentDOMRef: handleContentDOMRef,
280
381
  view: editorView,
281
382
  editorAppearance: editorAppearance,
383
+ hideConfigureLabel: this.state.hideConfigureLabel,
282
384
  hideFrame: (_this$state$_privateP2 = this.state._privateProps) === null || _this$state$_privateP2 === void 0 ? void 0 : _this$state$_privateP2.__hideFrame,
283
385
  pluginInjectionApi: pluginInjectionApi,
284
386
  macroInteractionDesignFeatureFlags: macroInteractionDesignFeatureFlags,
@@ -296,7 +398,8 @@ var ExtensionComponentInner = /*#__PURE__*/function (_Component) {
296
398
  macroInteractionDesignFeatureFlags: macroInteractionDesignFeatureFlags,
297
399
  isNodeSelected: selectedNode === node,
298
400
  pluginInjectionApi: pluginInjectionApi,
299
- isLivePageViewMode: isLivePageViewMode
401
+ isLivePageViewMode: isLivePageViewMode,
402
+ hideConfigureLabel: this.state.hideConfigureLabel
300
403
  }, extensionHandlerResult);
301
404
  default:
302
405
  return null;
@@ -214,7 +214,8 @@ var MultiBodiedExtensionWithWidth = function MultiBodiedExtensionWithWidth(_ref2
214
214
  pluginInjectionApi = _ref2.pluginInjectionApi,
215
215
  isLivePageViewMode = _ref2.isLivePageViewMode,
216
216
  _ref2$allowBodiedOver = _ref2.allowBodiedOverride,
217
- allowBodiedOverride = _ref2$allowBodiedOver === void 0 ? false : _ref2$allowBodiedOver;
217
+ allowBodiedOverride = _ref2$allowBodiedOver === void 0 ? false : _ref2$allowBodiedOver,
218
+ hideConfigureLabel = _ref2.hideConfigureLabel;
218
219
  var _ref3 = macroInteractionDesignFeatureFlags || {},
219
220
  showMacroInteractionDesignUpdates = _ref3.showMacroInteractionDesignUpdates;
220
221
  var _node$attrs = node.attrs,
@@ -325,7 +326,8 @@ var MultiBodiedExtensionWithWidth = function MultiBodiedExtensionWithWidth(_ref2
325
326
  isNodeNested: isNodeNested,
326
327
  setIsNodeHovered: setIsNodeHovered,
327
328
  isBodiedMacro: true,
328
- pluginInjectionApi: pluginInjectionApi
329
+ pluginInjectionApi: pluginInjectionApi,
330
+ hideConfigureLabel: hideConfigureLabel
329
331
  }), (0, _react2.jsx)("div", {
330
332
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
331
333
  className: wrapperClassNames,
@@ -27,7 +27,7 @@ var NETWORK_FAILURE_REGEX = /^network failure/i;
27
27
  var RESIZE_OBSERVER_LOOP_REGEX = /ResizeObserver loop completed with undelivered notifications/;
28
28
  var SENTRY_DSN = 'https://0b10c8e02fb44d8796c047b102c9bee8@o55978.ingest.sentry.io/4505129224110080';
29
29
  var packageName = 'editor-common'; // Sentry doesn't accept '/' in its releases https://docs.sentry.io/platforms/javascript/configuration/releases/
30
- var packageVersion = "121.2.0";
30
+ var packageVersion = "121.2.3";
31
31
  var sanitiseSentryEvents = function sanitiseSentryEvents(data, _hint) {
32
32
  // Remove URL as it has UGC
33
33
  // Ignored via go/ees007
@@ -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 = "121.2.0";
27
+ var packageVersion = "121.2.3";
28
28
  var halfFocusRing = 1;
29
29
  var dropOffset = '0, 8';
30
30
  var fadeIn = (0, _react2.keyframes)({
@@ -270,6 +270,11 @@ export const aiSuggestionsMessages = defineMessages({
270
270
  defaultMessage: 'Reviewing content',
271
271
  description: 'Loading message shown while the AI is reviewing the content'
272
272
  },
273
+ thinkingReviewingContentWithAgent: {
274
+ id: 'fabric.editor.ai.suggestions.thinking.reviewingContentWithAgent.non-final',
275
+ defaultMessage: 'Reviewing content with {agentName}',
276
+ description: 'First loading message on the AI suggestions thinking bar. The {agentName} placeholder is replaced with the reviewing agent name (for example "Content Reviewer"). Shown for a few seconds before the remaining rotating statuses.'
277
+ },
273
278
  thinkingMayTakeAFewMinutes: {
274
279
  id: 'fabric.editor.ai.suggestions.thinking.mayTakeAFewMinutes.non-final',
275
280
  defaultMessage: 'This may take a few minutes',
@@ -333,6 +333,7 @@ export let ACTION_SUBJECT = /*#__PURE__*/function (ACTION_SUBJECT) {
333
333
  ACTION_SUBJECT["CONTENT_COMPONENT"] = "contentComponent";
334
334
  ACTION_SUBJECT["DATE"] = "date";
335
335
  ACTION_SUBJECT["DATE_SEGMENT"] = "dateSegment";
336
+ ACTION_SUBJECT["DIVIDER"] = "divider";
336
337
  ACTION_SUBJECT["DOCUMENT"] = "document";
337
338
  ACTION_SUBJECT["EDITOR"] = "editor";
338
339
  ACTION_SUBJECT["ACTIVITY_SESSION"] = "activitySession";
@@ -49,7 +49,8 @@ function ExtensionWithPluginState(props) {
49
49
  showBodiedExtensionRendererView,
50
50
  setShowBodiedExtensionRendererView,
51
51
  pluginInjectionApi,
52
- isLivePageViewMode
52
+ isLivePageViewMode,
53
+ hideConfigureLabel
53
54
  } = props;
54
55
  const {
55
56
  showMacroInteractionDesignUpdates
@@ -153,7 +154,8 @@ function ExtensionWithPluginState(props) {
153
154
  showUpdatedLivePages1PBodiedExtensionUI: showUpdatedLivePages1PBodiedExtensionUI,
154
155
  showBodiedExtensionRendererView: showBodiedExtensionRendererView,
155
156
  setShowBodiedExtensionRendererView: setShowBodiedExtensionRendererView,
156
- pluginInjectionApi: pluginInjectionApi
157
+ pluginInjectionApi: pluginInjectionApi,
158
+ hideConfigureLabel: hideConfigureLabel
157
159
  }), jsx("div", {
158
160
  "data-testid": "extension-container",
159
161
  ref: handleRef,
@@ -195,7 +197,8 @@ function ExtensionWithPluginState(props) {
195
197
  }, !removeBorder && jsx(ExtensionLozenge, {
196
198
  node: node,
197
199
  showMacroInteractionDesignUpdates: showMacroInteractionDesignUpdates,
198
- pluginInjectionApi: pluginInjectionApi
200
+ pluginInjectionApi: pluginInjectionApi,
201
+ hideConfigureLabel: hideConfigureLabel
199
202
  }), children), hasBody &&
200
203
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop, @atlaskit/design-system/consistent-css-prop-usage -- Ignored via go/DSP-18766
201
204
  jsx("div", {
@@ -75,7 +75,8 @@ const InlineExtension = props => {
75
75
  children,
76
76
  isNodeHovered,
77
77
  setIsNodeHovered,
78
- isLivePageViewMode
78
+ isLivePageViewMode,
79
+ hideConfigureLabel
79
80
  } = props;
80
81
  const {
81
82
  showMacroInteractionDesignUpdates
@@ -116,7 +117,8 @@ const InlineExtension = props => {
116
117
  isNodeHovered: isNodeHovered,
117
118
  showMacroInteractionDesignUpdates: showMacroInteractionDesignUpdates,
118
119
  setIsNodeHovered: setIsNodeHovered,
119
- pluginInjectionApi: pluginInjectionApi
120
+ pluginInjectionApi: pluginInjectionApi,
121
+ hideConfigureLabel: hideConfigureLabel
120
122
  }), jsx("div", {
121
123
  "data-testid": "inline-extension-wrapper",
122
124
  css: [
@@ -138,7 +140,8 @@ const InlineExtension = props => {
138
140
  }), children ? children : jsx(ExtensionLozenge, {
139
141
  node: node,
140
142
  showMacroInteractionDesignUpdates: showMacroInteractionDesignUpdates,
141
- pluginInjectionApi: pluginInjectionApi
143
+ pluginInjectionApi: pluginInjectionApi,
144
+ hideConfigureLabel: hideConfigureLabel
142
145
  })));
143
146
  return expValEquals('enghealth-53346_fix_redaction_marker_editor', 'isEnabled', true) ? jsx(MemoizedWidthContextProvider, {
144
147
  rendererContainerWidth: rendererContainerWidth
@@ -117,6 +117,7 @@ export const ExtensionLabel = ({
117
117
  isNodeNested,
118
118
  setIsNodeHovered,
119
119
  isBodiedMacro,
120
+ hideConfigureLabel,
120
121
  showUpdatedLivePages1PBodiedExtensionUI,
121
122
  showLivePagesBodiedMacrosRendererView,
122
123
  showBodiedExtensionRendererView,
@@ -173,7 +174,7 @@ export const ExtensionLabel = ({
173
174
  onBlur: expValEquals('editor_a11y__enghealth-46814_fy26', 'isEnabled', true) ? () => {} : undefined,
174
175
  "data-testid": "new-lozenge-container",
175
176
  contentEditable: false
176
- }, jsx(Tooltip, {
177
+ }, !hideConfigureLabel && jsx(Tooltip, {
177
178
  content: jsx(FormattedMessage
178
179
  // Ignored via go/ees005
179
180
  // eslint-disable-next-line react/jsx-props-no-spreading
@@ -32,13 +32,15 @@ export const LozengeComponent = ({
32
32
  showUpdatedLivePages1PBodiedExtensionUI,
33
33
  showBodiedExtensionRendererView,
34
34
  setShowBodiedExtensionRendererView,
35
- pluginInjectionApi
35
+ pluginInjectionApi,
36
+ hideConfigureLabel
36
37
  }) => {
37
38
  const capitalizedTitle = capitalizeFirstLetter(title);
38
39
  if (showMacroInteractionDesignUpdates) {
39
40
  return jsx(Fragment, null, jsx(ExtensionLabel, {
40
41
  text: capitalizedTitle,
41
42
  extensionName: extensionName,
43
+ hideConfigureLabel: hideConfigureLabel,
42
44
  isNodeHovered: isNodeHovered,
43
45
  isNodeNested: isNodeNested,
44
46
  customContainerStyles: customContainerStyles,
@@ -59,6 +59,7 @@ export default class ExtensionLozenge extends Component {
59
59
  isNodeNested: isNodeNested,
60
60
  showMacroInteractionDesignUpdates: showMacroInteractionDesignUpdates,
61
61
  extensionName: name,
62
+ hideConfigureLabel: this.props.hideConfigureLabel,
62
63
  lozengeData: lozengeData,
63
64
  params: params,
64
65
  title: title,