@atlaskit/editor-common 107.23.0 → 107.23.2

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 (43) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/cjs/monitoring/error.js +1 -1
  3. package/dist/cjs/portal/PortalManager.js +72 -25
  4. package/dist/cjs/portal/common.js +3 -2
  5. package/dist/cjs/react-node-view/index.js +4 -3
  6. package/dist/cjs/selection-based-node-view/SelectionBasedNodeView.js +2 -2
  7. package/dist/cjs/toolbar/index.js +0 -6
  8. package/dist/cjs/toolbar/keys.js +1 -5
  9. package/dist/cjs/toolbar/rank.js +1 -1
  10. package/dist/cjs/ui/DropList/index.js +1 -1
  11. package/dist/es2019/monitoring/error.js +1 -1
  12. package/dist/es2019/portal/PortalManager.js +54 -14
  13. package/dist/es2019/portal/common.js +3 -3
  14. package/dist/es2019/react-node-view/index.js +4 -3
  15. package/dist/es2019/selection-based-node-view/SelectionBasedNodeView.js +2 -2
  16. package/dist/es2019/toolbar/index.js +1 -1
  17. package/dist/es2019/toolbar/keys.js +0 -4
  18. package/dist/es2019/toolbar/rank.js +6 -7
  19. package/dist/es2019/ui/DropList/index.js +1 -1
  20. package/dist/esm/monitoring/error.js +1 -1
  21. package/dist/esm/portal/PortalManager.js +72 -25
  22. package/dist/esm/portal/common.js +3 -2
  23. package/dist/esm/react-node-view/index.js +4 -3
  24. package/dist/esm/selection-based-node-view/SelectionBasedNodeView.js +2 -2
  25. package/dist/esm/toolbar/index.js +1 -1
  26. package/dist/esm/toolbar/keys.js +0 -4
  27. package/dist/esm/toolbar/rank.js +2 -2
  28. package/dist/esm/ui/DropList/index.js +1 -1
  29. package/dist/types/portal/PortalManager.d.ts +10 -4
  30. package/dist/types/portal/common.d.ts +1 -1
  31. package/dist/types/react-node-view/index.d.ts +2 -1
  32. package/dist/types/selection-based-node-view/SelectionBasedNodeView.d.ts +1 -1
  33. package/dist/types/toolbar/index.d.ts +1 -1
  34. package/dist/types/toolbar/keys.d.ts +0 -4
  35. package/dist/types/toolbar/rank.d.ts +2 -3
  36. package/dist/types-ts4.5/portal/PortalManager.d.ts +10 -4
  37. package/dist/types-ts4.5/portal/common.d.ts +1 -1
  38. package/dist/types-ts4.5/react-node-view/index.d.ts +2 -1
  39. package/dist/types-ts4.5/selection-based-node-view/SelectionBasedNodeView.d.ts +1 -1
  40. package/dist/types-ts4.5/toolbar/index.d.ts +1 -1
  41. package/dist/types-ts4.5/toolbar/keys.d.ts +0 -4
  42. package/dist/types-ts4.5/toolbar/rank.d.ts +2 -3
  43. package/package.json +4 -4
package/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # @atlaskit/editor-common
2
2
 
3
+ ## 107.23.2
4
+
5
+ ### Patch Changes
6
+
7
+ - [#201259](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/201259)
8
+ [`1de5dd69e269d`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/1de5dd69e269d) -
9
+ [ux] [EDITOR-1064] Added ai commands on the new selection toolbar platform
10
+ - Updated dependencies
11
+
12
+ ## 107.23.1
13
+
14
+ ### Patch Changes
15
+
16
+ - [#200948](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/200948)
17
+ [`8dd9a944113d5`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/8dd9a944113d5) -
18
+ Introduced throttling for portals
19
+ - Updated dependencies
20
+
3
21
  ## 107.23.0
4
22
 
5
23
  ### Minor Changes
@@ -16,7 +16,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
16
16
  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 _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
17
17
  var SENTRY_DSN = 'https://0b10c8e02fb44d8796c047b102c9bee8@o55978.ingest.sentry.io/4505129224110080';
18
18
  var packageName = 'editor-common'; // Sentry doesn't accept '/' in its releases https://docs.sentry.io/platforms/javascript/configuration/releases/
19
- var packageVersion = "107.22.1";
19
+ var packageVersion = "107.23.1";
20
20
  var sanitiseSentryEvents = function sanitiseSentryEvents(data, _hint) {
21
21
  // Remove URL as it has UGC
22
22
  // Ignored via go/ees007
@@ -9,11 +9,14 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
9
9
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
10
10
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
11
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
12
+ var _throttle = _interopRequireDefault(require("lodash/throttle"));
13
+ var _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals");
12
14
  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; }
13
15
  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; }
14
16
  var DEFAULT_INITIAL_BUCKETS = 50;
15
17
  var DEFAULT_MAX_BUCKET_CAPACITY = 50;
16
18
  var DEFAULT_SCALE_RATIO = 0.5;
19
+ var DEFAULT_THROTTLE_DELAY = 16; // ~60fps for smooth updates
17
20
 
18
21
  /**
19
22
  * Creates an empty bucket object with a specified capacity. Each bucket is designed
@@ -38,7 +41,7 @@ function createEmptyBucket(capacity) {
38
41
  * across "buckets" and updating these buckets as necessary to balance load and performance.
39
42
  *
40
43
  * @class PortalManager
41
- * @typedef {Object} PortalManager
44
+ * @typedef {object} PortalManager
42
45
  *
43
46
  * @property {number} maxBucketCapacity - The maximum capacity of each bucket before a new bucket is created.
44
47
  * @property {number} scaleRatio - The ratio to determine the number of new buckets to add when scaling up.
@@ -47,19 +50,24 @@ function createEmptyBucket(capacity) {
47
50
  * @property {Map<React.Key, number>} portalToBucketMap - A map of React portal keys to their corresponding bucket indices.
48
51
  * @property {PortalRendererUpdater|null} portalRendererUpdater - A function to trigger updates to the rendering of portals.
49
52
  * @property {number} scaleCapacityThreshold - The threshold at which the buckets are scaled up to accommodate more portals.
53
+ * @property {Map<number, ReturnType<typeof throttle>>} throttledBucketUpdaters - A map of bucket IDs to their throttled update functions.
54
+ * @property {number} throttleDelay - The delay in milliseconds for throttling bucket updates.
50
55
  *
51
56
  * @param {number} [initialBuckets=DEFAULT_INITIAL_BUCKETS] - The initial number of buckets to create.
52
57
  * @param {number} [maxBucketCapacity=DEFAULT_MAX_BUCKET_CAPACITY] - The maximum number of portals a single bucket can hold.
53
58
  * @param {number} [scaleRatio=DEFAULT_SCALE_RATIO] - The ratio used to calculate the number of new buckets to add when scaling.
59
+ * @param {number} [throttleDelay=DEFAULT_THROTTLE_DELAY] - The delay in milliseconds for throttling updates.
54
60
  */
55
61
  var PortalManager = exports.PortalManager = /*#__PURE__*/function () {
56
62
  function PortalManager() {
57
63
  var initialBuckets = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DEFAULT_INITIAL_BUCKETS;
58
64
  var maxBucketCapacity = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_MAX_BUCKET_CAPACITY;
59
65
  var scaleRatio = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : DEFAULT_SCALE_RATIO;
66
+ var throttleDelay = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : DEFAULT_THROTTLE_DELAY;
60
67
  (0, _classCallCheck2.default)(this, PortalManager);
61
68
  this.maxBucketCapacity = maxBucketCapacity;
62
69
  this.scaleRatio = scaleRatio;
70
+ this.throttleDelay = throttleDelay;
63
71
 
64
72
  // Initialise buckets array by creating an array of length `initialBuckets` containing empty buckets
65
73
  this.buckets = Array.from({
@@ -75,6 +83,7 @@ var PortalManager = exports.PortalManager = /*#__PURE__*/function () {
75
83
  }));
76
84
  this.portalRendererUpdater = null;
77
85
  this.scaleCapacityThreshold = maxBucketCapacity / 2;
86
+ this.throttledBucketUpdaters = new Map();
78
87
  }
79
88
  return (0, _createClass2.default)(PortalManager, [{
80
89
  key: "getCurrentBucket",
@@ -112,6 +121,21 @@ var PortalManager = exports.PortalManager = /*#__PURE__*/function () {
112
121
  }
113
122
  (_this$portalRendererU = this.portalRendererUpdater) === null || _this$portalRendererU === void 0 || _this$portalRendererU.call(this, this.buckets);
114
123
  }
124
+ }, {
125
+ key: "getOrCreateThrottledUpdater",
126
+ value: function getOrCreateThrottledUpdater(id) {
127
+ var _this = this;
128
+ if (!this.throttledBucketUpdaters.has(id)) {
129
+ var throttledUpdater = (0, _throttle.default)(function () {
130
+ var _this$buckets$id, _this$buckets$id$upda;
131
+ (_this$buckets$id = _this.buckets[id]) === null || _this$buckets$id === void 0 || (_this$buckets$id$upda = _this$buckets$id.updater) === null || _this$buckets$id$upda === void 0 || _this$buckets$id$upda.call(_this$buckets$id, function () {
132
+ return _objectSpread({}, _this.buckets[id].portals);
133
+ });
134
+ }, this.throttleDelay);
135
+ this.throttledBucketUpdaters.set(id, throttledUpdater);
136
+ }
137
+ return this.throttledBucketUpdaters.get(id);
138
+ }
115
139
  }, {
116
140
  key: "getBuckets",
117
141
  value: function getBuckets() {
@@ -120,35 +144,52 @@ var PortalManager = exports.PortalManager = /*#__PURE__*/function () {
120
144
  }, {
121
145
  key: "registerBucket",
122
146
  value: function registerBucket(id, updater) {
123
- var _this$buckets$id$upda,
124
- _this$buckets$id,
125
- _this = this;
147
+ var _this$buckets$id$upda2,
148
+ _this$buckets$id2,
149
+ _this2 = this;
126
150
  this.buckets[id].updater = updater;
127
- (_this$buckets$id$upda = (_this$buckets$id = this.buckets[id]).updater) === null || _this$buckets$id$upda === void 0 || _this$buckets$id$upda.call(_this$buckets$id, function () {
128
- return _objectSpread({}, _this.buckets[id].portals);
151
+ (_this$buckets$id$upda2 = (_this$buckets$id2 = this.buckets[id]).updater) === null || _this$buckets$id$upda2 === void 0 || _this$buckets$id$upda2.call(_this$buckets$id2, function () {
152
+ return _objectSpread({}, _this2.buckets[id].portals);
129
153
  });
130
154
  }
131
155
  }, {
132
156
  key: "unregisterBucket",
133
157
  value: function unregisterBucket(id) {
134
158
  this.buckets[id].updater = null;
159
+ // Clean up throttled updater when bucket is unregistered
160
+ if (this.throttledBucketUpdaters.has(id)) {
161
+ var _this$throttledBucket;
162
+ (_this$throttledBucket = this.throttledBucketUpdaters.get(id)) === null || _this$throttledBucket === void 0 || _this$throttledBucket.cancel();
163
+ this.throttledBucketUpdaters.delete(id);
164
+ }
135
165
  }
136
166
  }, {
137
167
  key: "updateBuckets",
138
168
  value: function updateBuckets(id) {
139
- var _this$buckets$id$upda2,
140
- _this$buckets$id2,
141
- _this2 = this;
142
- (_this$buckets$id$upda2 = (_this$buckets$id2 = this.buckets[id]).updater) === null || _this$buckets$id$upda2 === void 0 || _this$buckets$id$upda2.call(_this$buckets$id2, function () {
143
- // new object is required to trigger react updates
144
- return _objectSpread({}, _this2.buckets[id].portals);
145
- });
169
+ var _this3 = this;
170
+ var immediate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
171
+ if (immediate || !(0, _expValEquals.expValEquals)('platform_editor_debounce_portal_provider', 'isEnabled', true)) {
172
+ var _this$buckets$id$upda3, _this$buckets$id3;
173
+ // Cancel any pending throttled update and update immediately
174
+ if (this.throttledBucketUpdaters.has(id)) {
175
+ var _this$throttledBucket2;
176
+ (_this$throttledBucket2 = this.throttledBucketUpdaters.get(id)) === null || _this$throttledBucket2 === void 0 || _this$throttledBucket2.cancel();
177
+ }
178
+ (_this$buckets$id$upda3 = (_this$buckets$id3 = this.buckets[id]).updater) === null || _this$buckets$id$upda3 === void 0 || _this$buckets$id$upda3.call(_this$buckets$id3, function () {
179
+ return _objectSpread({}, _this3.buckets[id].portals);
180
+ });
181
+ } else {
182
+ var _this$getOrCreateThro;
183
+ // Use throttled update for smooth, regular updates
184
+ (_this$getOrCreateThro = this.getOrCreateThrottledUpdater(id)) === null || _this$getOrCreateThro === void 0 || _this$getOrCreateThro();
185
+ }
146
186
  }
147
187
  }, {
148
188
  key: "registerPortal",
149
189
  value: function registerPortal(key, portal) {
150
190
  var _this$portalToBucketM,
151
- _this3 = this;
191
+ _this4 = this;
192
+ var immediate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
152
193
  this.createBucket();
153
194
  // @ts-ignore - TS2538 TypeScript 5.9.2 upgrade
154
195
  this.buckets[this.getCurrentBucket()].capacity -= 1;
@@ -160,32 +201,32 @@ var PortalManager = exports.PortalManager = /*#__PURE__*/function () {
160
201
  // @ts-ignore - TS2538 TypeScript 5.9.2 upgrade
161
202
  this.buckets[id].portals[key] = portal;
162
203
  // @ts-ignore - TS2345 TypeScript 5.9.2 upgrade
163
- this.updateBuckets(id);
204
+ this.updateBuckets(id, immediate);
164
205
  }
165
206
 
166
207
  //returns a function to unregister the portal
167
208
  return function () {
168
209
  // @ts-ignore - TS2538 TypeScript 5.9.2 upgrade
169
- delete _this3.buckets[id].portals[key];
170
- _this3.portalToBucketMap.delete(key);
210
+ delete _this4.buckets[id].portals[key];
211
+ _this4.portalToBucketMap.delete(key);
171
212
  // @ts-ignore - TS2538 TypeScript 5.9.2 upgrade
172
- _this3.buckets[id].capacity += 1;
213
+ _this4.buckets[id].capacity += 1;
173
214
  // @ts-ignore - TS2538 TypeScript 5.9.2 upgrade
174
- if (_this3.buckets[id].capacity > _this3.scaleCapacityThreshold) {
215
+ if (_this4.buckets[id].capacity > _this4.scaleCapacityThreshold) {
175
216
  // @ts-ignore - TS2345 TypeScript 5.9.2 upgrade
176
- _this3.availableBuckets.add(id);
217
+ _this4.availableBuckets.add(id);
177
218
  }
178
219
  // @ts-ignore - TS2345 TypeScript 5.9.2 upgrade
179
- _this3.updateBuckets(id);
220
+ _this4.updateBuckets(id, immediate);
180
221
  };
181
222
  }
182
223
  }, {
183
224
  key: "registerPortalRenderer",
184
225
  value: function registerPortalRenderer(updater) {
185
- var _this4 = this;
226
+ var _this5 = this;
186
227
  if (!this.portalRendererUpdater) {
187
228
  updater(function () {
188
- return _this4.buckets;
229
+ return _this5.buckets;
189
230
  });
190
231
  }
191
232
  this.portalRendererUpdater = updater;
@@ -203,12 +244,18 @@ var PortalManager = exports.PortalManager = /*#__PURE__*/function () {
203
244
  }, {
204
245
  key: "destroy",
205
246
  value: function destroy() {
206
- var _this5 = this;
247
+ var _this6 = this;
248
+ // Cancel all pending throttled updates
249
+ this.throttledBucketUpdaters.forEach(function (updater) {
250
+ updater.cancel();
251
+ });
252
+ this.throttledBucketUpdaters.clear();
253
+
207
254
  // Iterate through each bucket and clear its portals and unset the updater function
208
255
  this.buckets.forEach(function (bucket, id) {
209
256
  bucket.portals = {}; // Clearing all portals from the bucket
210
257
  bucket.updater = null; // Unsetting the bucket's updater function
211
- _this5.availableBuckets.add(id); // Mark all buckets as available
258
+ _this6.availableBuckets.add(id); // Mark all buckets as available
212
259
  });
213
260
  this.portalToBucketMap.clear();
214
261
  this.portalRendererUpdater = null;
@@ -80,15 +80,16 @@ var getPortalProviderAPI = exports.getPortalProviderAPI = function getPortalProv
80
80
  var portalsMap = new Map();
81
81
  return {
82
82
  render: function render(children, container, key, onBeforeReactDomRender) {
83
+ var immediate = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
83
84
  if (typeof onBeforeReactDomRender === 'function') {
84
85
  var portal = /*#__PURE__*/(0, _reactDom.createPortal)( /*#__PURE__*/_react.default.createElement(PortalRenderWrapper, {
85
86
  getChildren: children,
86
87
  onBeforeRender: onBeforeReactDomRender
87
88
  }), container, key);
88
- portalsMap.set(key, portalManager.registerPortal(key, portal));
89
+ portalsMap.set(key, portalManager.registerPortal(key, portal, immediate));
89
90
  } else {
90
91
  var _portal = /*#__PURE__*/(0, _reactDom.createPortal)(children(), container, key);
91
- portalsMap.set(key, portalManager.registerPortal(key, _portal));
92
+ portalsMap.set(key, portalManager.registerPortal(key, _portal, immediate));
92
93
  }
93
94
  },
94
95
  remove: function remove(key) {
@@ -35,7 +35,7 @@ var ReactNodeView = exports.default = /*#__PURE__*/function () {
35
35
  function ReactNodeView(_node, view, getPos, portalProviderAPI, eventDispatcher, reactComponentProps,
36
36
  // Ignored via go/ees005
37
37
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
38
- reactComponent, viewShouldUpdate) {
38
+ reactComponent, viewShouldUpdate, shouldRenderImmediatelyInPortal) {
39
39
  var _this = this;
40
40
  (0, _classCallCheck2.default)(this, ReactNodeView);
41
41
  // Ignored via go/ees005
@@ -61,6 +61,7 @@ var ReactNodeView = exports.default = /*#__PURE__*/function () {
61
61
  this._viewShouldUpdate = viewShouldUpdate;
62
62
  this.eventDispatcher = eventDispatcher;
63
63
  this.key = (0, _generateUniqueNodeKey.generateUniqueNodeKey)();
64
+ this.shouldRenderImmediatelyInPortal = shouldRenderImmediatelyInPortal || false;
64
65
  }
65
66
 
66
67
  /**
@@ -131,10 +132,10 @@ var ReactNodeView = exports.default = /*#__PURE__*/function () {
131
132
  dispatchAnalyticsEvent: _this3.dispatchAnalyticsEvent
132
133
  }, component());
133
134
  };
134
-
135
+ this.portalProviderAPI.render(componentWithErrorBoundary,
135
136
  // Ignored via go/ees005
136
137
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
137
- this.portalProviderAPI.render(componentWithErrorBoundary, this.domRef, this.key);
138
+ this.domRef, this.key, undefined, this.shouldRenderImmediatelyInPortal);
138
139
  }
139
140
  }, {
140
141
  key: "createDomRef",
@@ -41,10 +41,10 @@ var SelectionBasedNodeView = exports.SelectionBasedNodeView = /*#__PURE__*/funct
41
41
  function SelectionBasedNodeView(node, view, getPos, portalProviderAPI, eventDispatcher, reactComponentProps,
42
42
  // Ignored via go/ees005
43
43
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
44
- reactComponent, viewShouldUpdate) {
44
+ reactComponent, viewShouldUpdate, shouldRenderImmediatelyInPortal) {
45
45
  var _this;
46
46
  (0, _classCallCheck2.default)(this, SelectionBasedNodeView);
47
- _this = _callSuper(this, SelectionBasedNodeView, [node, view, getPos, portalProviderAPI, eventDispatcher, reactComponentProps, reactComponent, viewShouldUpdate]);
47
+ _this = _callSuper(this, SelectionBasedNodeView, [node, view, getPos, portalProviderAPI, eventDispatcher, reactComponentProps, reactComponent, viewShouldUpdate, shouldRenderImmediatelyInPortal]);
48
48
  (0, _defineProperty2.default)(_this, "isSelectedNode", false);
49
49
  (0, _defineProperty2.default)(_this, "isNodeInsideSelection", function (from, to, pos, posEnd) {
50
50
  var _this$getPositionsWit = _this.getPositionsWithDefault(pos, posEnd);
@@ -489,12 +489,6 @@ Object.defineProperty(exports, "SUBSCRIPT_MENU_ITEM", {
489
489
  return _keys.SUBSCRIPT_MENU_ITEM;
490
490
  }
491
491
  });
492
- Object.defineProperty(exports, "SUMMARIZE_MENU_ITEM", {
493
- enumerable: true,
494
- get: function get() {
495
- return _keys.SUMMARIZE_MENU_ITEM;
496
- }
497
- });
498
492
  Object.defineProperty(exports, "SUPERSCRIPT_MENU_ITEM", {
499
493
  enumerable: true,
500
494
  get: function get() {
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.UNDERLINE_MENU_ITEM = exports.TRANSLATE_NESTED_MENU = exports.TRANSLATE_MENU_SECTION = exports.TOOLBARS = exports.TEXT_STYLES_MENU_SECTION = exports.TEXT_STYLES_MENU = exports.TEXT_STYLES_GROUP = exports.TEXT_SECTION = exports.TEXT_FORMATTING_MENU_SECTION = exports.TEXT_FORMATTING_MENU = exports.TEXT_FORMATTING_HERO_BUTTON = exports.TEXT_FORMATTING_GROUP = exports.TEXT_COLOR_MENU_ITEM = exports.TEXT_COLOR_HIGHLIGHT_MENU_SECTION = exports.TEXT_COLOR_HIGHLIGHT_MENU = exports.TEXT_COLOR_HIGHLIGHT_GROUP = exports.TASK_LIST_MENU_ITEM = exports.SUPERSCRIPT_MENU_ITEM = exports.SUMMARIZE_MENU_ITEM = exports.SUBSCRIPT_MENU_ITEM = exports.STRIKE_MENU_ITEM = exports.SPELLING_AND_GRAMMAR_MENU_ITEM = exports.ROVO_PROMPT_MENU_SECTION = exports.ROVO_MENU = exports.ROVO_HERO_BUTTON = exports.ROVO_GROUP = exports.PIN_MENU_SECTION = exports.PIN_MENU_ITEM = exports.OVERFLOW_SECTION = exports.OVERFLOW_MENU = exports.OVERFLOW_GROUP = exports.OUTDENT_MENU_ITEM = exports.NUMBERED_LIST_MENU_ITEM = exports.NORMAL_TEXT_MENU_ITEM = exports.MORE_PROFESSIONAL_MENU_ITEM = exports.MORE_EMPATHETIC_MENU_ITEM = exports.MORE_CASUAL_MENU_ITEM = exports.MAKE_SHORTER_MENU_ITEM = exports.MAKE_LONGER_MENU_ITEM = exports.LISTS_INDENTATION_MENU_SECTION = exports.LISTS_INDENTATION_MENU = exports.LISTS_INDENTATION_HERO_BUTTON = exports.LISTS_INDENTATION_GROUP = exports.LINKING_SECTION = exports.LINKING_GROUP = exports.LINKING_BUTTON = exports.ITALIC_MENU_ITEM = exports.INDENT_MENU_ITEM = exports.IMPROVE_WRITING_GROUP = exports.IMPROVE_WRITING_BUTTON = exports.HIGHLIGHT_MENU_ITEM = exports.HEADING_6_MENU_ITEM = exports.HEADING_5_MENU_ITEM = exports.HEADING_4_MENU_ITEM = exports.HEADING_3_MENU_ITEM = exports.HEADING_2_MENU_ITEM = exports.HEADING_1_MENU_ITEM = exports.COMMENT_HERO_BUTTON = exports.COMMENT_GROUP = exports.COLLAB_SECTION = exports.CODE_MENU_ITEM = exports.CLEAR_FORMATTING_MENU_ITEM = exports.CLEAR_FORMARTTING_MENU_SECTION = exports.CHANGE_TONE_NESTED_MENU = exports.CHANGE_TONE_MENU_SECTION = exports.BULLETED_LIST_MENU_ITEM = exports.BOLD_MENU_ITEM = exports.BLOCK_QUOTE_MENU_ITEM = exports.APPS_SECTION = exports.ALIGN_RIGHT_MENU_ITEM = exports.ALIGN_LEFT_MENU_ITEM = exports.ALIGN_CENTER_MENU_ITEM = exports.ALIGNMENT_MENU_SECTION = exports.ALIGNMENT_MENU = exports.ALIGNMENT_GROUP = exports.AI_SECTION = void 0;
6
+ exports.UNDERLINE_MENU_ITEM = exports.TRANSLATE_NESTED_MENU = exports.TRANSLATE_MENU_SECTION = exports.TOOLBARS = exports.TEXT_STYLES_MENU_SECTION = exports.TEXT_STYLES_MENU = exports.TEXT_STYLES_GROUP = exports.TEXT_SECTION = exports.TEXT_FORMATTING_MENU_SECTION = exports.TEXT_FORMATTING_MENU = exports.TEXT_FORMATTING_HERO_BUTTON = exports.TEXT_FORMATTING_GROUP = exports.TEXT_COLOR_MENU_ITEM = exports.TEXT_COLOR_HIGHLIGHT_MENU_SECTION = exports.TEXT_COLOR_HIGHLIGHT_MENU = exports.TEXT_COLOR_HIGHLIGHT_GROUP = exports.TASK_LIST_MENU_ITEM = exports.SUPERSCRIPT_MENU_ITEM = exports.SUBSCRIPT_MENU_ITEM = exports.STRIKE_MENU_ITEM = exports.SPELLING_AND_GRAMMAR_MENU_ITEM = exports.ROVO_PROMPT_MENU_SECTION = exports.ROVO_MENU = exports.ROVO_HERO_BUTTON = exports.ROVO_GROUP = exports.PIN_MENU_SECTION = exports.PIN_MENU_ITEM = exports.OVERFLOW_SECTION = exports.OVERFLOW_MENU = exports.OVERFLOW_GROUP = exports.OUTDENT_MENU_ITEM = exports.NUMBERED_LIST_MENU_ITEM = exports.NORMAL_TEXT_MENU_ITEM = exports.MORE_PROFESSIONAL_MENU_ITEM = exports.MORE_EMPATHETIC_MENU_ITEM = exports.MORE_CASUAL_MENU_ITEM = exports.MAKE_SHORTER_MENU_ITEM = exports.MAKE_LONGER_MENU_ITEM = exports.LISTS_INDENTATION_MENU_SECTION = exports.LISTS_INDENTATION_MENU = exports.LISTS_INDENTATION_HERO_BUTTON = exports.LISTS_INDENTATION_GROUP = exports.LINKING_SECTION = exports.LINKING_GROUP = exports.LINKING_BUTTON = exports.ITALIC_MENU_ITEM = exports.INDENT_MENU_ITEM = exports.IMPROVE_WRITING_GROUP = exports.IMPROVE_WRITING_BUTTON = exports.HIGHLIGHT_MENU_ITEM = exports.HEADING_6_MENU_ITEM = exports.HEADING_5_MENU_ITEM = exports.HEADING_4_MENU_ITEM = exports.HEADING_3_MENU_ITEM = exports.HEADING_2_MENU_ITEM = exports.HEADING_1_MENU_ITEM = exports.COMMENT_HERO_BUTTON = exports.COMMENT_GROUP = exports.COLLAB_SECTION = exports.CODE_MENU_ITEM = exports.CLEAR_FORMATTING_MENU_ITEM = exports.CLEAR_FORMARTTING_MENU_SECTION = exports.CHANGE_TONE_NESTED_MENU = exports.CHANGE_TONE_MENU_SECTION = exports.BULLETED_LIST_MENU_ITEM = exports.BOLD_MENU_ITEM = exports.BLOCK_QUOTE_MENU_ITEM = exports.APPS_SECTION = exports.ALIGN_RIGHT_MENU_ITEM = exports.ALIGN_LEFT_MENU_ITEM = exports.ALIGN_CENTER_MENU_ITEM = exports.ALIGNMENT_MENU_SECTION = exports.ALIGNMENT_MENU = exports.ALIGNMENT_GROUP = exports.AI_SECTION = void 0;
7
7
  var TOOLBARS = exports.TOOLBARS = {
8
8
  INLINE_TEXT_TOOLBAR: 'inline-text-toolbar',
9
9
  PRIMARY_TOOLBAR: 'primary-toolbar'
@@ -56,10 +56,6 @@ var SPELLING_AND_GRAMMAR_MENU_ITEM = exports.SPELLING_AND_GRAMMAR_MENU_ITEM = {
56
56
  key: 'spelling-and-grammar-menu-item',
57
57
  type: 'menu-item'
58
58
  };
59
- var SUMMARIZE_MENU_ITEM = exports.SUMMARIZE_MENU_ITEM = {
60
- key: 'summarize-menu-item',
61
- type: 'menu-item'
62
- };
63
59
  var CHANGE_TONE_MENU_SECTION = exports.CHANGE_TONE_MENU_SECTION = {
64
60
  key: 'change-tone-default-menu-section',
65
61
  type: 'menu-section'
@@ -16,7 +16,7 @@ var AI_SECTION_RANK = exports.AI_SECTION_RANK = (0, _defineProperty2.default)((0
16
16
  var ROVO_GROUP_RANK = exports.ROVO_GROUP_RANK = (0, _defineProperty2.default)((0, _defineProperty2.default)({}, _keys.ROVO_HERO_BUTTON.key, 100), _keys.ROVO_MENU.key, 200);
17
17
  var IMPROVE_WRITING_GROUP_RANK = exports.IMPROVE_WRITING_GROUP_RANK = (0, _defineProperty2.default)({}, _keys.IMPROVE_WRITING_BUTTON.key, 100);
18
18
  var ROVO_MENU_RANK = exports.ROVO_MENU_RANK = (0, _defineProperty2.default)({}, _keys.ROVO_PROMPT_MENU_SECTION.key, 100);
19
- var ROVO_PROMPT_MENU_SECTION_RANK = exports.ROVO_PROMPT_MENU_SECTION_RANK = (0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)({}, _keys.MAKE_SHORTER_MENU_ITEM.key, 100), _keys.MAKE_LONGER_MENU_ITEM.key, 200), _keys.CHANGE_TONE_NESTED_MENU.key, 300), _keys.SPELLING_AND_GRAMMAR_MENU_ITEM.key, 400), _keys.TRANSLATE_NESTED_MENU.key, 500), _keys.SUMMARIZE_MENU_ITEM.key, 600);
19
+ var ROVO_PROMPT_MENU_SECTION_RANK = exports.ROVO_PROMPT_MENU_SECTION_RANK = (0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)({}, _keys.SPELLING_AND_GRAMMAR_MENU_ITEM.key, 100), _keys.CHANGE_TONE_NESTED_MENU.key, 200), _keys.MAKE_SHORTER_MENU_ITEM.key, 300), _keys.MAKE_LONGER_MENU_ITEM.key, 400), _keys.TRANSLATE_NESTED_MENU.key, 500);
20
20
  var CHANGE_TONE_MENU_RANK = exports.CHANGE_TONE_MENU_RANK = (0, _defineProperty2.default)({}, _keys.CHANGE_TONE_MENU_SECTION.key, 100);
21
21
  var CHANGE_TONE_MENU_SECTION_RANK = exports.CHANGE_TONE_MENU_SECTION_RANK = (0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)({}, _keys.MORE_PROFESSIONAL_MENU_ITEM.key, 100), _keys.MORE_CASUAL_MENU_ITEM.key, 200), _keys.MORE_EMPATHETIC_MENU_ITEM.key, 300);
22
22
  var TRANSLATE_MENU_RANK = exports.TRANSLATE_MENU_RANK = (0, _defineProperty2.default)({}, _keys.TRANSLATE_MENU_SECTION.key, 100);
@@ -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 = "107.22.1";
26
+ var packageVersion = "107.23.1";
27
27
  var halfFocusRing = 1;
28
28
  var dropOffset = '0, 8';
29
29
  // Ignored via go/ees005
@@ -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 = "107.22.1";
4
+ const packageVersion = "107.23.1";
5
5
  const sanitiseSentryEvents = (data, _hint) => {
6
6
  // Remove URL as it has UGC
7
7
  // Ignored via go/ees007
@@ -1,6 +1,9 @@
1
+ import throttle from 'lodash/throttle';
2
+ import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
1
3
  const DEFAULT_INITIAL_BUCKETS = 50;
2
4
  const DEFAULT_MAX_BUCKET_CAPACITY = 50;
3
5
  const DEFAULT_SCALE_RATIO = 0.5;
6
+ const DEFAULT_THROTTLE_DELAY = 16; // ~60fps for smooth updates
4
7
 
5
8
  /**
6
9
  * Creates an empty bucket object with a specified capacity. Each bucket is designed
@@ -25,7 +28,7 @@ function createEmptyBucket(capacity) {
25
28
  * across "buckets" and updating these buckets as necessary to balance load and performance.
26
29
  *
27
30
  * @class PortalManager
28
- * @typedef {Object} PortalManager
31
+ * @typedef {object} PortalManager
29
32
  *
30
33
  * @property {number} maxBucketCapacity - The maximum capacity of each bucket before a new bucket is created.
31
34
  * @property {number} scaleRatio - The ratio to determine the number of new buckets to add when scaling up.
@@ -34,15 +37,19 @@ function createEmptyBucket(capacity) {
34
37
  * @property {Map<React.Key, number>} portalToBucketMap - A map of React portal keys to their corresponding bucket indices.
35
38
  * @property {PortalRendererUpdater|null} portalRendererUpdater - A function to trigger updates to the rendering of portals.
36
39
  * @property {number} scaleCapacityThreshold - The threshold at which the buckets are scaled up to accommodate more portals.
40
+ * @property {Map<number, ReturnType<typeof throttle>>} throttledBucketUpdaters - A map of bucket IDs to their throttled update functions.
41
+ * @property {number} throttleDelay - The delay in milliseconds for throttling bucket updates.
37
42
  *
38
43
  * @param {number} [initialBuckets=DEFAULT_INITIAL_BUCKETS] - The initial number of buckets to create.
39
44
  * @param {number} [maxBucketCapacity=DEFAULT_MAX_BUCKET_CAPACITY] - The maximum number of portals a single bucket can hold.
40
45
  * @param {number} [scaleRatio=DEFAULT_SCALE_RATIO] - The ratio used to calculate the number of new buckets to add when scaling.
46
+ * @param {number} [throttleDelay=DEFAULT_THROTTLE_DELAY] - The delay in milliseconds for throttling updates.
41
47
  */
42
48
  export class PortalManager {
43
- constructor(initialBuckets = DEFAULT_INITIAL_BUCKETS, maxBucketCapacity = DEFAULT_MAX_BUCKET_CAPACITY, scaleRatio = DEFAULT_SCALE_RATIO) {
49
+ constructor(initialBuckets = DEFAULT_INITIAL_BUCKETS, maxBucketCapacity = DEFAULT_MAX_BUCKET_CAPACITY, scaleRatio = DEFAULT_SCALE_RATIO, throttleDelay = DEFAULT_THROTTLE_DELAY) {
44
50
  this.maxBucketCapacity = maxBucketCapacity;
45
51
  this.scaleRatio = scaleRatio;
52
+ this.throttleDelay = throttleDelay;
46
53
 
47
54
  // Initialise buckets array by creating an array of length `initialBuckets` containing empty buckets
48
55
  this.buckets = Array.from({
@@ -54,6 +61,7 @@ export class PortalManager {
54
61
  }, (_, i) => i));
55
62
  this.portalRendererUpdater = null;
56
63
  this.scaleCapacityThreshold = maxBucketCapacity / 2;
64
+ this.throttledBucketUpdaters = new Map();
57
65
  }
58
66
  getCurrentBucket() {
59
67
  return this.availableBuckets.values().next().value;
@@ -87,29 +95,55 @@ export class PortalManager {
87
95
  }
88
96
  (_this$portalRendererU = this.portalRendererUpdater) === null || _this$portalRendererU === void 0 ? void 0 : _this$portalRendererU.call(this, this.buckets);
89
97
  }
98
+ getOrCreateThrottledUpdater(id) {
99
+ if (!this.throttledBucketUpdaters.has(id)) {
100
+ const throttledUpdater = throttle(() => {
101
+ var _this$buckets$id, _this$buckets$id$upda;
102
+ (_this$buckets$id = this.buckets[id]) === null || _this$buckets$id === void 0 ? void 0 : (_this$buckets$id$upda = _this$buckets$id.updater) === null || _this$buckets$id$upda === void 0 ? void 0 : _this$buckets$id$upda.call(_this$buckets$id, () => ({
103
+ ...this.buckets[id].portals
104
+ }));
105
+ }, this.throttleDelay);
106
+ this.throttledBucketUpdaters.set(id, throttledUpdater);
107
+ }
108
+ return this.throttledBucketUpdaters.get(id);
109
+ }
90
110
  getBuckets() {
91
111
  return this.buckets;
92
112
  }
93
113
  registerBucket(id, updater) {
94
- var _this$buckets$id$upda, _this$buckets$id;
114
+ var _this$buckets$id$upda2, _this$buckets$id2;
95
115
  this.buckets[id].updater = updater;
96
- (_this$buckets$id$upda = (_this$buckets$id = this.buckets[id]).updater) === null || _this$buckets$id$upda === void 0 ? void 0 : _this$buckets$id$upda.call(_this$buckets$id, () => ({
116
+ (_this$buckets$id$upda2 = (_this$buckets$id2 = this.buckets[id]).updater) === null || _this$buckets$id$upda2 === void 0 ? void 0 : _this$buckets$id$upda2.call(_this$buckets$id2, () => ({
97
117
  ...this.buckets[id].portals
98
118
  }));
99
119
  }
100
120
  unregisterBucket(id) {
101
121
  this.buckets[id].updater = null;
122
+ // Clean up throttled updater when bucket is unregistered
123
+ if (this.throttledBucketUpdaters.has(id)) {
124
+ var _this$throttledBucket;
125
+ (_this$throttledBucket = this.throttledBucketUpdaters.get(id)) === null || _this$throttledBucket === void 0 ? void 0 : _this$throttledBucket.cancel();
126
+ this.throttledBucketUpdaters.delete(id);
127
+ }
102
128
  }
103
- updateBuckets(id) {
104
- var _this$buckets$id$upda2, _this$buckets$id2;
105
- (_this$buckets$id$upda2 = (_this$buckets$id2 = this.buckets[id]).updater) === null || _this$buckets$id$upda2 === void 0 ? void 0 : _this$buckets$id$upda2.call(_this$buckets$id2, () => {
106
- // new object is required to trigger react updates
107
- return {
129
+ updateBuckets(id, immediate = false) {
130
+ if (immediate || !expValEquals('platform_editor_debounce_portal_provider', 'isEnabled', true)) {
131
+ var _this$buckets$id$upda3, _this$buckets$id3;
132
+ // Cancel any pending throttled update and update immediately
133
+ if (this.throttledBucketUpdaters.has(id)) {
134
+ var _this$throttledBucket2;
135
+ (_this$throttledBucket2 = this.throttledBucketUpdaters.get(id)) === null || _this$throttledBucket2 === void 0 ? void 0 : _this$throttledBucket2.cancel();
136
+ }
137
+ (_this$buckets$id$upda3 = (_this$buckets$id3 = this.buckets[id]).updater) === null || _this$buckets$id$upda3 === void 0 ? void 0 : _this$buckets$id$upda3.call(_this$buckets$id3, () => ({
108
138
  ...this.buckets[id].portals
109
- };
110
- });
139
+ }));
140
+ } else {
141
+ var _this$getOrCreateThro;
142
+ // Use throttled update for smooth, regular updates
143
+ (_this$getOrCreateThro = this.getOrCreateThrottledUpdater(id)) === null || _this$getOrCreateThro === void 0 ? void 0 : _this$getOrCreateThro();
144
+ }
111
145
  }
112
- registerPortal(key, portal) {
146
+ registerPortal(key, portal, immediate = false) {
113
147
  var _this$portalToBucketM;
114
148
  this.createBucket();
115
149
  // @ts-ignore - TS2538 TypeScript 5.9.2 upgrade
@@ -122,7 +156,7 @@ export class PortalManager {
122
156
  // @ts-ignore - TS2538 TypeScript 5.9.2 upgrade
123
157
  this.buckets[id].portals[key] = portal;
124
158
  // @ts-ignore - TS2345 TypeScript 5.9.2 upgrade
125
- this.updateBuckets(id);
159
+ this.updateBuckets(id, immediate);
126
160
  }
127
161
 
128
162
  //returns a function to unregister the portal
@@ -138,7 +172,7 @@ export class PortalManager {
138
172
  this.availableBuckets.add(id);
139
173
  }
140
174
  // @ts-ignore - TS2345 TypeScript 5.9.2 upgrade
141
- this.updateBuckets(id);
175
+ this.updateBuckets(id, immediate);
142
176
  };
143
177
  }
144
178
  registerPortalRenderer(updater) {
@@ -156,6 +190,12 @@ export class PortalManager {
156
190
  * unregistering all buckets, and resetting internal state.
157
191
  */
158
192
  destroy() {
193
+ // Cancel all pending throttled updates
194
+ this.throttledBucketUpdaters.forEach(updater => {
195
+ updater.cancel();
196
+ });
197
+ this.throttledBucketUpdaters.clear();
198
+
159
199
  // Iterate through each bucket and clear its portals and unset the updater function
160
200
  this.buckets.forEach((bucket, id) => {
161
201
  bucket.portals = {}; // Clearing all portals from the bucket
@@ -61,16 +61,16 @@ PortalRenderWrapper.displayName = 'PortalRenderWrapper';
61
61
  export const getPortalProviderAPI = portalManager => {
62
62
  const portalsMap = new Map();
63
63
  return {
64
- render: (children, container, key, onBeforeReactDomRender) => {
64
+ render: (children, container, key, onBeforeReactDomRender, immediate = false) => {
65
65
  if (typeof onBeforeReactDomRender === 'function') {
66
66
  const portal = /*#__PURE__*/createPortal( /*#__PURE__*/React.createElement(PortalRenderWrapper, {
67
67
  getChildren: children,
68
68
  onBeforeRender: onBeforeReactDomRender
69
69
  }), container, key);
70
- portalsMap.set(key, portalManager.registerPortal(key, portal));
70
+ portalsMap.set(key, portalManager.registerPortal(key, portal, immediate));
71
71
  } else {
72
72
  const portal = /*#__PURE__*/createPortal(children(), container, key);
73
- portalsMap.set(key, portalManager.registerPortal(key, portal));
73
+ portalsMap.set(key, portalManager.registerPortal(key, portal, immediate));
74
74
  }
75
75
  },
76
76
  remove: key => {
@@ -15,7 +15,7 @@ export default class ReactNodeView {
15
15
  constructor(_node, view, getPos, portalProviderAPI, eventDispatcher, reactComponentProps,
16
16
  // Ignored via go/ees005
17
17
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
18
- reactComponent, viewShouldUpdate) {
18
+ reactComponent, viewShouldUpdate, shouldRenderImmediatelyInPortal) {
19
19
  // Ignored via go/ees005
20
20
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
21
21
  _defineProperty(this, "decorations", []);
@@ -37,6 +37,7 @@ export default class ReactNodeView {
37
37
  this._viewShouldUpdate = viewShouldUpdate;
38
38
  this.eventDispatcher = eventDispatcher;
39
39
  this.key = generateUniqueNodeKey();
40
+ this.shouldRenderImmediatelyInPortal = shouldRenderImmediatelyInPortal || false;
40
41
  }
41
42
 
42
43
  /**
@@ -101,10 +102,10 @@ export default class ReactNodeView {
101
102
  dispatchAnalyticsEvent: this.dispatchAnalyticsEvent
102
103
  }, component());
103
104
  };
104
-
105
+ this.portalProviderAPI.render(componentWithErrorBoundary,
105
106
  // Ignored via go/ees005
106
107
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
107
- this.portalProviderAPI.render(componentWithErrorBoundary, this.domRef, this.key);
108
+ this.domRef, this.key, undefined, this.shouldRenderImmediatelyInPortal);
108
109
  }
109
110
  createDomRef() {
110
111
  if (!this.node.isInline) {
@@ -29,8 +29,8 @@ export class SelectionBasedNodeView extends ReactNodeView {
29
29
  constructor(node, view, getPos, portalProviderAPI, eventDispatcher, reactComponentProps,
30
30
  // Ignored via go/ees005
31
31
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
32
- reactComponent, viewShouldUpdate) {
33
- super(node, view, getPos, portalProviderAPI, eventDispatcher, reactComponentProps, reactComponent, viewShouldUpdate);
32
+ reactComponent, viewShouldUpdate, shouldRenderImmediatelyInPortal) {
33
+ super(node, view, getPos, portalProviderAPI, eventDispatcher, reactComponentProps, reactComponent, viewShouldUpdate, shouldRenderImmediatelyInPortal);
34
34
  _defineProperty(this, "isSelectedNode", false);
35
35
  _defineProperty(this, "isNodeInsideSelection", (from, to, pos, posEnd) => {
36
36
  ({
@@ -2,7 +2,7 @@
2
2
  /* eslint-disable @atlaskit/editor/no-re-export */
3
3
 
4
4
  export { TOOLBAR_RANK, AI_SECTION_RANK, ROVO_GROUP_RANK, IMPROVE_WRITING_GROUP_RANK, ROVO_MENU_RANK, ROVO_PROMPT_MENU_SECTION_RANK, CHANGE_TONE_MENU_RANK, CHANGE_TONE_MENU_SECTION_RANK, TRANSLATE_MENU_RANK, COLLAB_SECTION_RANK, COMMENT_GROUP_RANK, TEXT_SECTION_RANK, TEXT_STYLES_GROUP_RANK, TEXT_STYLES_MENU_RANK, TEXT_STYLES_MENU_SECTION_RANK, TEXT_FORMAT_GROUP_RANK, TEXT_FORMAT_MENU_RANK, TEXT_FORMATTING_MENU_SECTION_RANK, CLEAR_FORMARTTING_MENU_SECTION_RANK, TEXT_COLOR_HIGHLIGHT_MENU_SECTION_RANK, TEXT_COLOR_HIGHLIGHT_GROUP_RANK, TEXT_COLOR_HIGHLIGHT_MENU_RANK, OVERFLOW_SECTION_RANK, OVERFLOW_GROUP_RANK, OVERFLOW_MENU_RANK, PIN_MENU_SECTION_RANK, LINKING_SECTION_RANK, LINKING_GROUP_RANK, ALIGNMENT_GROUP_RANK, ALIGNMENT_MENU_RANK, ALIGNMENT_MENU_SECTION_RANK, LISTS_INDENTATION_GROUP_RANK, LISTS_INDENTATION_MENU_RANK, LISTS_INDENTATION_MENU_SECTION_RANK } from './rank';
5
- export { TOOLBARS, AI_SECTION, ROVO_GROUP, IMPROVE_WRITING_GROUP, IMPROVE_WRITING_BUTTON, ROVO_HERO_BUTTON, ROVO_MENU, ROVO_PROMPT_MENU_SECTION, MAKE_SHORTER_MENU_ITEM, MAKE_LONGER_MENU_ITEM, CHANGE_TONE_NESTED_MENU, SPELLING_AND_GRAMMAR_MENU_ITEM, SUMMARIZE_MENU_ITEM, CHANGE_TONE_MENU_SECTION, MORE_PROFESSIONAL_MENU_ITEM, MORE_CASUAL_MENU_ITEM, MORE_EMPATHETIC_MENU_ITEM, TRANSLATE_NESTED_MENU, TRANSLATE_MENU_SECTION, TEXT_SECTION, TEXT_FORMATTING_GROUP, TEXT_FORMATTING_HERO_BUTTON, TEXT_FORMATTING_MENU, TEXT_FORMATTING_MENU_SECTION, TEXT_STYLES_GROUP, TEXT_STYLES_MENU, TEXT_STYLES_MENU_SECTION, NORMAL_TEXT_MENU_ITEM, HEADING_1_MENU_ITEM, HEADING_2_MENU_ITEM, HEADING_3_MENU_ITEM, HEADING_4_MENU_ITEM, HEADING_5_MENU_ITEM, HEADING_6_MENU_ITEM, BLOCK_QUOTE_MENU_ITEM, BOLD_MENU_ITEM, ITALIC_MENU_ITEM, UNDERLINE_MENU_ITEM, STRIKE_MENU_ITEM, CODE_MENU_ITEM, SUBSCRIPT_MENU_ITEM, SUPERSCRIPT_MENU_ITEM, CLEAR_FORMARTTING_MENU_SECTION, CLEAR_FORMATTING_MENU_ITEM, LISTS_INDENTATION_GROUP, LISTS_INDENTATION_HERO_BUTTON, LISTS_INDENTATION_MENU, LISTS_INDENTATION_MENU_SECTION, BULLETED_LIST_MENU_ITEM, NUMBERED_LIST_MENU_ITEM, TASK_LIST_MENU_ITEM, INDENT_MENU_ITEM, OUTDENT_MENU_ITEM, LINKING_SECTION, LINKING_GROUP, LINKING_BUTTON, COLLAB_SECTION, COMMENT_GROUP, COMMENT_HERO_BUTTON, APPS_SECTION, OVERFLOW_SECTION, TEXT_COLOR_HIGHLIGHT_GROUP, TEXT_COLOR_HIGHLIGHT_MENU, TEXT_COLOR_HIGHLIGHT_MENU_SECTION, TEXT_COLOR_MENU_ITEM, HIGHLIGHT_MENU_ITEM, OVERFLOW_GROUP, OVERFLOW_MENU, PIN_MENU_SECTION, PIN_MENU_ITEM, ALIGNMENT_GROUP, ALIGNMENT_MENU, ALIGNMENT_MENU_SECTION, ALIGN_LEFT_MENU_ITEM, ALIGN_CENTER_MENU_ITEM, ALIGN_RIGHT_MENU_ITEM } from './keys';
5
+ export { TOOLBARS, AI_SECTION, ROVO_GROUP, IMPROVE_WRITING_GROUP, IMPROVE_WRITING_BUTTON, ROVO_HERO_BUTTON, ROVO_MENU, ROVO_PROMPT_MENU_SECTION, MAKE_SHORTER_MENU_ITEM, MAKE_LONGER_MENU_ITEM, CHANGE_TONE_NESTED_MENU, SPELLING_AND_GRAMMAR_MENU_ITEM, CHANGE_TONE_MENU_SECTION, MORE_PROFESSIONAL_MENU_ITEM, MORE_CASUAL_MENU_ITEM, MORE_EMPATHETIC_MENU_ITEM, TRANSLATE_NESTED_MENU, TRANSLATE_MENU_SECTION, TEXT_SECTION, TEXT_FORMATTING_GROUP, TEXT_FORMATTING_HERO_BUTTON, TEXT_FORMATTING_MENU, TEXT_FORMATTING_MENU_SECTION, TEXT_STYLES_GROUP, TEXT_STYLES_MENU, TEXT_STYLES_MENU_SECTION, NORMAL_TEXT_MENU_ITEM, HEADING_1_MENU_ITEM, HEADING_2_MENU_ITEM, HEADING_3_MENU_ITEM, HEADING_4_MENU_ITEM, HEADING_5_MENU_ITEM, HEADING_6_MENU_ITEM, BLOCK_QUOTE_MENU_ITEM, BOLD_MENU_ITEM, ITALIC_MENU_ITEM, UNDERLINE_MENU_ITEM, STRIKE_MENU_ITEM, CODE_MENU_ITEM, SUBSCRIPT_MENU_ITEM, SUPERSCRIPT_MENU_ITEM, CLEAR_FORMARTTING_MENU_SECTION, CLEAR_FORMATTING_MENU_ITEM, LISTS_INDENTATION_GROUP, LISTS_INDENTATION_HERO_BUTTON, LISTS_INDENTATION_MENU, LISTS_INDENTATION_MENU_SECTION, BULLETED_LIST_MENU_ITEM, NUMBERED_LIST_MENU_ITEM, TASK_LIST_MENU_ITEM, INDENT_MENU_ITEM, OUTDENT_MENU_ITEM, LINKING_SECTION, LINKING_GROUP, LINKING_BUTTON, COLLAB_SECTION, COMMENT_GROUP, COMMENT_HERO_BUTTON, APPS_SECTION, OVERFLOW_SECTION, TEXT_COLOR_HIGHLIGHT_GROUP, TEXT_COLOR_HIGHLIGHT_MENU, TEXT_COLOR_HIGHLIGHT_MENU_SECTION, TEXT_COLOR_MENU_ITEM, HIGHLIGHT_MENU_ITEM, OVERFLOW_GROUP, OVERFLOW_MENU, PIN_MENU_SECTION, PIN_MENU_ITEM, ALIGNMENT_GROUP, ALIGNMENT_MENU, ALIGNMENT_MENU_SECTION, ALIGN_LEFT_MENU_ITEM, ALIGN_CENTER_MENU_ITEM, ALIGN_RIGHT_MENU_ITEM } from './keys';
6
6
  export { useEditorToolbar, EditorToolbarProvider } from './context';
7
7
  export { EditorToolbarUIProvider } from './EditorToolbarUIProvider';
8
8
  export { getInputMethodFromParentKeys } from './utils';
@@ -50,10 +50,6 @@ export const SPELLING_AND_GRAMMAR_MENU_ITEM = {
50
50
  key: 'spelling-and-grammar-menu-item',
51
51
  type: 'menu-item'
52
52
  };
53
- export const SUMMARIZE_MENU_ITEM = {
54
- key: 'summarize-menu-item',
55
- type: 'menu-item'
56
- };
57
53
  export const CHANGE_TONE_MENU_SECTION = {
58
54
  key: 'change-tone-default-menu-section',
59
55
  type: 'menu-section'