@atlaskit/editor-common 119.2.0 → 119.4.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 (56) hide show
  1. package/CHANGELOG.md +82 -0
  2. package/block-controls-suppression/package.json +10 -0
  3. package/dist/cjs/block-controls-suppression.js +20 -0
  4. package/dist/cjs/clipboard/index.js +1 -1
  5. package/dist/cjs/doc-utils/editor-use-only.js +1 -2
  6. package/dist/cjs/extensibility/MultiBodiedExtension/index.js +1 -1
  7. package/dist/cjs/link/LinkSearch/LinkSearchListItem.js +0 -1
  8. package/dist/cjs/link/LinkSearch/withActivityProvider.js +2 -0
  9. package/dist/cjs/media-single/MediaBadges.js +0 -1
  10. package/dist/cjs/monitoring/error.js +2 -4
  11. package/dist/cjs/react-node-view/index.js +0 -1
  12. package/dist/cjs/safe-plugin/index.js +1 -1
  13. package/dist/cjs/selection/utils.js +2 -0
  14. package/dist/cjs/toolbar/EditorToolbarUIProvider.js +4 -0
  15. package/dist/cjs/ui/DropList/index.js +1 -1
  16. package/dist/cjs/utils/compareNodes.js +2 -6
  17. package/dist/cjs/utils/extractSliceFromStep.js +0 -1
  18. package/dist/cjs/utils/get-dom-ref-from-selection.js +2 -0
  19. package/dist/cjs/utils/validate-using-spec.js +6 -3
  20. package/dist/es2019/block-controls-suppression.js +12 -0
  21. package/dist/es2019/clipboard/index.js +0 -2
  22. package/dist/es2019/doc-utils/editor-use-only.js +1 -2
  23. package/dist/es2019/extensibility/MultiBodiedExtension/index.js +1 -1
  24. package/dist/es2019/link/LinkSearch/LinkSearchListItem.js +0 -1
  25. package/dist/es2019/link/LinkSearch/withActivityProvider.js +1 -0
  26. package/dist/es2019/media-single/MediaBadges.js +0 -1
  27. package/dist/es2019/monitoring/error.js +1 -4
  28. package/dist/es2019/react-node-view/index.js +0 -1
  29. package/dist/es2019/safe-plugin/index.js +2 -0
  30. package/dist/es2019/selection/utils.js +2 -0
  31. package/dist/es2019/toolbar/EditorToolbarUIProvider.js +4 -0
  32. package/dist/es2019/ui/DropList/index.js +1 -1
  33. package/dist/es2019/utils/compareNodes.js +2 -6
  34. package/dist/es2019/utils/extractSliceFromStep.js +0 -1
  35. package/dist/es2019/utils/get-dom-ref-from-selection.js +3 -0
  36. package/dist/es2019/utils/validate-using-spec.js +6 -3
  37. package/dist/esm/block-controls-suppression.js +13 -0
  38. package/dist/esm/clipboard/index.js +1 -1
  39. package/dist/esm/doc-utils/editor-use-only.js +1 -2
  40. package/dist/esm/extensibility/MultiBodiedExtension/index.js +1 -1
  41. package/dist/esm/link/LinkSearch/LinkSearchListItem.js +0 -1
  42. package/dist/esm/link/LinkSearch/withActivityProvider.js +1 -0
  43. package/dist/esm/media-single/MediaBadges.js +0 -1
  44. package/dist/esm/monitoring/error.js +2 -4
  45. package/dist/esm/react-node-view/index.js +0 -1
  46. package/dist/esm/safe-plugin/index.js +2 -0
  47. package/dist/esm/selection/utils.js +2 -0
  48. package/dist/esm/toolbar/EditorToolbarUIProvider.js +4 -0
  49. package/dist/esm/ui/DropList/index.js +1 -1
  50. package/dist/esm/utils/compareNodes.js +2 -6
  51. package/dist/esm/utils/extractSliceFromStep.js +0 -1
  52. package/dist/esm/utils/get-dom-ref-from-selection.js +3 -0
  53. package/dist/esm/utils/validate-using-spec.js +6 -3
  54. package/dist/types/block-controls-suppression.d.ts +9 -0
  55. package/dist/types/utils/validate-using-spec.d.ts +1 -1
  56. package/package.json +9 -8
package/CHANGELOG.md CHANGED
@@ -1,5 +1,87 @@
1
1
  # @atlaskit/editor-common
2
2
 
3
+ ## 119.4.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`710e3d9ec4c65`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/710e3d9ec4c65) -
8
+ Allow a table nested inside a panel, but only at the document root, inside a synced block, or
9
+ inside a layout column (the `panel_c1` variant).
10
+
11
+ `panel_c1` is now marked `stage0` and emitted as a standalone JSON Schema definition (via
12
+ `noExtend`), so table-in-panel validates in the stage-0 schema at those positions only — a plain
13
+ `panel` elsewhere still rejects a table.
14
+
15
+ The runtime `@atlaskit/adf-utils` validator can now accept table-in-panel via the `panel_c1` spec
16
+ directly, gated behind the `platform_editor_table_in_panel_patch_1` feature gate. Three validator
17
+ fixes make this work (all gated — when the gate is off, the validator behaves exactly as before):
18
+ 1. A variant tuple's overridden content-item names are resolved to their base specs the same way
19
+ base-spec content is (e.g. `paragraph_with_no_marks` → `paragraph`). Previously they stayed
20
+ raw, so `panel_c1` matched only plainly-named children (`table`) and rejected variant-named
21
+ ones (a normal `paragraph`).
22
+ 2. `createSpec` retains a variant whose overridden content is a nested `$or` list (e.g.
23
+ `panel_c1`) when the validator is built from an explicit node list (as `validateADFEntity`
24
+ does).
25
+ 3. When a stored node matches several candidate specs, the multi-branch matcher prefers a branch
26
+ that validates cleanly over one that only "succeeds" by wrapping otherwise-valid content as
27
+ `unsupportedBlock` — so `panel_c1` is chosen instead of the base `panel` repairing the table
28
+ away.
29
+
30
+ The `allowTableInPanel` override in `@atlaskit/editor-common` is retained but gated by the same
31
+ feature gate: when `platform_editor_table_in_panel_patch_1` is on the override is skipped (the
32
+ validator fixes handle table-in-panel); when it is off the override runs as before. So the single
33
+ gate flips between the new validator behaviour (on) and the previous override behaviour (off).
34
+
35
+ Also adds `panel-with-nested-table` validation fixtures.
36
+
37
+ **BREAKING (`@atlaskit/adf-schema`):** marking `panel_c1` as `stage0` (correcting an earlier
38
+ omission) renames its generated `schema-next` exports: `panelC1` → `panelC1Stage0`, `PanelC1Node`
39
+ → `PanelC1Stage0Node`, `PanelC1Definition` → `PanelC1Stage0Definition`.
40
+
41
+ Migration — update imports from `@atlaskit/adf-schema/schema-next`:
42
+
43
+ ```ts
44
+ // Before
45
+ import {
46
+ panelC1,
47
+ type PanelC1Node,
48
+ type PanelC1Definition,
49
+ } from '@atlaskit/adf-schema/schema-next';
50
+
51
+ // After
52
+ import {
53
+ panelC1Stage0,
54
+ type PanelC1Stage0Node,
55
+ type PanelC1Stage0Definition,
56
+ } from '@atlaskit/adf-schema/schema-next';
57
+ ```
58
+
59
+ ### Patch Changes
60
+
61
+ - [`eec66a5b383e5`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/eec66a5b383e5) -
62
+ Scope selection toolbar interactions and dropdown refocus behavior to their owning editor behind
63
+ the `platform_editor_toolbar_multi_editor_fix` experiment.
64
+ - [`07a24b62d9f86`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/07a24b62d9f86) -
65
+ Fix MBE empty frame placeholder styling to tolerate ProseMirror selection marker elements.
66
+ - Updated dependencies
67
+
68
+ ## 119.3.0
69
+
70
+ ### Minor Changes
71
+
72
+ - [`47b2ae576b031`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/47b2ae576b031) -
73
+ [ux] Under the `cc_maui_remix_button_hover_corridor` experiment, replace the Remix button's
74
+ rendered hover corridor and fixed right-margin exclusion with the existing click-wrapper hover
75
+ tracking. Hide block controls over the marked object sidebar container and its control surfaces.
76
+
77
+ ## 119.2.1
78
+
79
+ ### Patch Changes
80
+
81
+ - [`f17ccd8f05809`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/f17ccd8f05809) -
82
+ Clean up feature gate `draft_reply_contextual_pills_gate` (fully rolled out, keeping the enabled
83
+ path).
84
+
3
85
  ## 119.2.0
4
86
 
5
87
  ### Minor Changes
@@ -0,0 +1,10 @@
1
+ {
2
+ "name": "@atlaskit/editor-common/block-controls-suppression",
3
+ "main": "../dist/cjs/block-controls-suppression.js",
4
+ "module": "../dist/esm/block-controls-suppression.js",
5
+ "module:es2019": "../dist/es2019/block-controls-suppression.js",
6
+ "sideEffects": [
7
+ "**/*.compiled.css"
8
+ ],
9
+ "types": "../dist/types/block-controls-suppression.d.ts"
10
+ }
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.isBlockControlsSuppressionTarget = exports.blockControlsSuppressionProps = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var BLOCK_CONTROLS_SUPPRESSION_ATTRIBUTE = 'data-block-controls-suppression';
10
+ var BLOCK_CONTROLS_SUPPRESSION_SELECTOR = "[".concat(BLOCK_CONTROLS_SUPPRESSION_ATTRIBUTE, "]");
11
+
12
+ /**
13
+ * Marks external control surfaces where editor or renderer block controls must be hidden. This
14
+ * prevents controls such as Remix and comment buttons from appearing underneath Rovo or the object
15
+ * sidebar while those controls are being used.
16
+ */
17
+ var blockControlsSuppressionProps = exports.blockControlsSuppressionProps = (0, _defineProperty2.default)({}, BLOCK_CONTROLS_SUPPRESSION_ATTRIBUTE, 'true');
18
+ var isBlockControlsSuppressionTarget = exports.isBlockControlsSuppressionTarget = function isBlockControlsSuppressionTarget(target) {
19
+ return target instanceof Element && target.closest(BLOCK_CONTROLS_SUPPRESSION_SELECTOR) !== null;
20
+ };
@@ -108,7 +108,7 @@ var copyHTMLToClipboard = exports.copyHTMLToClipboard = /*#__PURE__*/function ()
108
108
  'text/html': new Blob([elementToCopy.innerHTML], {
109
109
  type: 'text/html'
110
110
  })
111
- }); // @ts-ignore
111
+ });
112
112
  _context2.next = 2;
113
113
  return navigator.clipboard.write([data]);
114
114
  case 2:
@@ -23,8 +23,7 @@ function AlternativePackagesMessage(_ref) {
23
23
  return /*#__PURE__*/_react.default.createElement("p", null, "Consider using one of these packages instead:", /*#__PURE__*/_react.default.createElement("ul", null, alternatePackages.map(function (p) {
24
24
  return (
25
25
  /*#__PURE__*/
26
- // Ignored via go/ees005
27
- // eslint-disable-next-line react/jsx-key
26
+ // oxlint-disable-line react/jsx-key
28
27
  _react.default.createElement("li", null, /*#__PURE__*/_react.default.createElement(_link.default, {
29
28
  href: p.link
30
29
  }, p.name))
@@ -53,7 +53,7 @@ var getContainerCssExtendedStyles = function getContainerCssExtendedStyles(activ
53
53
  var getEmptyFramePlaceholderStyles = function getEmptyFramePlaceholderStyles(activeChildIndex, placeholderText) {
54
54
  return (0, _react2.css)((0, _defineProperty2.default)({}, "& .multiBodiedExtension-content-dom-wrapper > [data-extension-frame='true']:nth-of-type(".concat(activeChildIndex + 1
55
55
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors, @atlaskit/ui-styling-standard/no-unsafe-selectors, @atlaskit/ui-styling-standard/no-unsafe-values -- Ignored via go/DSP-18766
56
- , ") > p:only-child:has(.ProseMirror-trailingBreak:only-child)::before"), {
56
+ , ") > p:only-child:has(> .ProseMirror-trailingBreak):not(:has(> :not(.ProseMirror-widget):not(.ProseMirror-separator):not(.ProseMirror-trailingBreak)))::before"), {
57
57
  color: "var(--ds-text-subtlest, #6B6E76)",
58
58
  // JSON.stringify produces a quoted and escaped CSS string.
59
59
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-unsafe-values -- Ignored via go/DSP-18766
@@ -22,7 +22,6 @@ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r
22
22
  // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
23
23
 
24
24
  // AFP-2532 TODO: Fix automatic suppressions below
25
- // eslint-disable-next-line @atlassian/tangerine/import/entry-points
26
25
 
27
26
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-exported-styles -- Ignored via go/DSP-18766
28
27
  var container = exports.container = (0, _react2.css)({
@@ -18,6 +18,8 @@ var _providerFactory2 = require("../../provider-factory");
18
18
  var _excluded = ["providerFactory"];
19
19
  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)); }
20
20
  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
21
+ // oxlint-disable-next-line import/no-duplicates
22
+
21
23
  // eslint-disable-next-line no-duplicate-imports
22
24
 
23
25
  function withActivityProvider(WrappedComponent) {
@@ -34,7 +34,6 @@ var containerStyles = (0, _primitives.xcss)({
34
34
  // toolbar, where the z-index is "2". We have to hack in our own z-index less
35
35
  // than that to ensure our badge appears under the toolbar when scrolled.
36
36
  var hackedZIndexStyles = (0, _primitives.xcss)({
37
- // @ts-ignore
38
37
  zIndex: '1'
39
38
  });
40
39
  var resizeOffsetStyles = (0, _primitives.xcss)({
@@ -28,7 +28,7 @@ var NETWORK_FAILURE_REGEX = /^network failure/i;
28
28
  var RESIZE_OBSERVER_LOOP_REGEX = /ResizeObserver loop completed with undelivered notifications/;
29
29
  var SENTRY_DSN = 'https://0b10c8e02fb44d8796c047b102c9bee8@o55978.ingest.sentry.io/4505129224110080';
30
30
  var packageName = 'editor-common'; // Sentry doesn't accept '/' in its releases https://docs.sentry.io/platforms/javascript/configuration/releases/
31
- var packageVersion = "119.1.0";
31
+ var packageVersion = "119.3.0";
32
32
  var sanitiseSentryEvents = function sanitiseSentryEvents(data, _hint) {
33
33
  // Remove URL as it has UGC
34
34
  // Ignored via go/ees007
@@ -103,7 +103,7 @@ var logException = exports.logException = /*#__PURE__*/function () {
103
103
  beforeSend: sanitiseSentryEvents
104
104
  }; // Use a client to avoid picking up the errors from parent applications
105
105
  client = new BrowserClient(sentryOptions);
106
- hub = getCurrentHub(); // @ts-ignore - TypeScript 5.9.2 upgrade
106
+ hub = getCurrentHub();
107
107
  hub.bindClient(client);
108
108
  hub.withScope(function (scope) {
109
109
  var _buildInfo;
@@ -127,8 +127,6 @@ var logException = exports.logException = /*#__PURE__*/function () {
127
127
  scope.clearBreadcrumbs();
128
128
  hub.captureException(error);
129
129
  });
130
-
131
- // @ts-ignore - TypeScript 5.9.2 upgrade
132
130
  return _context.abrupt("return", client.close());
133
131
  case 4:
134
132
  _context.prev = 4;
@@ -186,7 +186,6 @@ var ReactNodeView = exports.default = /*#__PURE__*/function () {
186
186
  value: function _handleRef(node) {
187
187
  var _this4 = this;
188
188
  var contentDOM = this.contentDOMWrapper || this.contentDOM;
189
- // @ts-ignore
190
189
  // Spreading props to pass through dynamic component props
191
190
  // Ignored via go/ees005
192
191
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -22,7 +22,7 @@ var _prosemirrorDomMetadata = require("../prosemirror-dom-metadata");
22
22
  var _nativeAnchor = require("../styles/shared/native-anchor");
23
23
  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)); }
24
24
  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
25
- function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
25
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } // oxlint-disable-next-line import/no-duplicates
26
26
  /**
27
27
  * 🧱 Internal Helper Function: Editor FE Platform
28
28
  *
@@ -72,6 +72,8 @@ var _isSelectionAtEndOfNode = require("./isSelectionAtEndOfNode");
72
72
  var _atTheEndOfDoc = require("./atTheEndOfDoc");
73
73
  var _atTheBeginningOfDoc = require("./atTheBeginningOfDoc");
74
74
  var _expandSelectionBounds = require("./expandSelectionBounds");
75
+ // oxlint-disable-next-line import/no-duplicates
76
+
75
77
  function atTheEndOfBlock(state) {
76
78
  var selection = state.selection;
77
79
  var $to = selection.$to;
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.EditorToolbarUIProvider = void 0;
8
8
  var _react = _interopRequireWildcard(require("react"));
9
9
  var _editorToolbar = require("@atlaskit/editor-toolbar");
10
+ var _isExperimentEnabled = require("@atlaskit/platform-feature-experiments/is-experiment-enabled");
10
11
  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); }
11
12
  var EditorToolbarUIProvider = exports.EditorToolbarUIProvider = function EditorToolbarUIProvider(_ref) {
12
13
  var children = _ref.children,
@@ -26,6 +27,9 @@ var EditorToolbarUIProvider = exports.EditorToolbarUIProvider = function EditorT
26
27
  // When closed via keyboard Escape, keep focus on the trigger for better keyboard UX.
27
28
  var isKeyboardEscape = event instanceof KeyboardEvent && event.key === 'Escape';
28
29
  var shouldFocusEditor = !isKeyboardEscape;
30
+ if ((0, _isExperimentEnabled.isExperimentEnabled)('platform_editor_toolbar_multi_editor_fix') && event instanceof MouseEvent && event.target instanceof Element && !event.target.closest('[role="menu"]')) {
31
+ return;
32
+ }
29
33
  if (shouldFocusEditor) {
30
34
  // On Dropdown closed, focus is returned to trigger button by default in requestAnimationFrame
31
35
  // Hence, `.focus()` should also be called in requestAnimationFrame
@@ -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 = "119.1.0";
27
+ var packageVersion = "119.3.0";
28
28
  var halfFocusRing = 1;
29
29
  var dropOffset = '0, 8';
30
30
  var fadeIn = (0, _react2.keyframes)({
@@ -38,12 +38,8 @@ function parseLocaleNumber(stringNumber, groupPattern, fractionPattern) {
38
38
  function createNormalizeTextParser() {
39
39
  // Source: https://stackoverflow.com/questions/12004808/does-javascript-take-local-decimal-separators-into-account
40
40
  var locale = window.navigator.language;
41
- var thousandSeparator = Intl.NumberFormat(locale).format(11111)
42
- // @ts-ignore - TS1501 TypeScript 5.9.2 upgrade
43
- .replace(/(?:[0-9\xB2\xB3\xB9\xBC-\xBE\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u09F4-\u09F9\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0B72-\u0B77\u0BE6-\u0BF2\u0C66-\u0C6F\u0C78-\u0C7E\u0CE6-\u0CEF\u0D58-\u0D5E\u0D66-\u0D78\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F33\u1040-\u1049\u1090-\u1099\u1369-\u137C\u16EE-\u16F0\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1946-\u194F\u19D0-\u19DA\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\u2070\u2074-\u2079\u2080-\u2089\u2150-\u2182\u2185-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2CFD\u3007\u3021-\u3029\u3038-\u303A\u3192-\u3195\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\uA620-\uA629\uA6E6-\uA6EF\uA830-\uA835\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19]|\uD800[\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDEE1-\uDEFB\uDF20-\uDF23\uDF41\uDF4A\uDFD1-\uDFD5]|\uD801[\uDCA0-\uDCA9]|\uD802[\uDC58-\uDC5F\uDC79-\uDC7F\uDCA7-\uDCAF\uDCFB-\uDCFF\uDD16-\uDD1B\uDDBC\uDDBD\uDDC0-\uDDCF\uDDD2-\uDDFF\uDE40-\uDE48\uDE7D\uDE7E\uDE9D-\uDE9F\uDEEB-\uDEEF\uDF58-\uDF5F\uDF78-\uDF7F\uDFA9-\uDFAF]|\uD803[\uDCFA-\uDCFF\uDD30-\uDD39\uDD40-\uDD49\uDE60-\uDE7E\uDF1D-\uDF26\uDF51-\uDF54\uDFC5-\uDFCB]|\uD804[\uDC52-\uDC6F\uDCF0-\uDCF9\uDD36-\uDD3F\uDDD0-\uDDD9\uDDE1-\uDDF4\uDEF0-\uDEF9]|\uD805[\uDC50-\uDC59\uDCD0-\uDCD9\uDE50-\uDE59\uDEC0-\uDEC9\uDED0-\uDEE3\uDF30-\uDF3B]|\uD806[\uDCE0-\uDCF2\uDD50-\uDD59\uDFF0-\uDFF9]|\uD807[\uDC50-\uDC6C\uDD50-\uDD59\uDDA0-\uDDA9\uDDE0-\uDDE9\uDF50-\uDF59\uDFC0-\uDFD4]|\uD809[\uDC00-\uDC6E]|\uD818[\uDD30-\uDD39]|\uD81A[\uDE60-\uDE69\uDEC0-\uDEC9\uDF50-\uDF59\uDF5B-\uDF61]|\uD81B[\uDD70-\uDD79\uDE80-\uDE96\uDFF4-\uDFF6]|\uD833[\uDCF0-\uDCF9]|\uD834[\uDEC0-\uDED3\uDEE0-\uDEF3\uDF60-\uDF78]|\uD835[\uDFCE-\uDFFF]|\uD838[\uDD40-\uDD49\uDEF0-\uDEF9]|\uD839[\uDCF0-\uDCF9\uDDF1-\uDDFA]|\uD83A[\uDCC7-\uDCCF\uDD50-\uDD59]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D]|\uD83C[\uDD00-\uDD0C]|\uD83E[\uDFF0-\uDFF9])/g, '');
44
- var decimalSeparator = Intl.NumberFormat(locale).format(1.1)
45
- // @ts-ignore - TS1501 TypeScript 5.9.2 upgrade
46
- .replace(/(?:[0-9\xB2\xB3\xB9\xBC-\xBE\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u09F4-\u09F9\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0B72-\u0B77\u0BE6-\u0BF2\u0C66-\u0C6F\u0C78-\u0C7E\u0CE6-\u0CEF\u0D58-\u0D5E\u0D66-\u0D78\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F33\u1040-\u1049\u1090-\u1099\u1369-\u137C\u16EE-\u16F0\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1946-\u194F\u19D0-\u19DA\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\u2070\u2074-\u2079\u2080-\u2089\u2150-\u2182\u2185-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2CFD\u3007\u3021-\u3029\u3038-\u303A\u3192-\u3195\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\uA620-\uA629\uA6E6-\uA6EF\uA830-\uA835\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19]|\uD800[\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDEE1-\uDEFB\uDF20-\uDF23\uDF41\uDF4A\uDFD1-\uDFD5]|\uD801[\uDCA0-\uDCA9]|\uD802[\uDC58-\uDC5F\uDC79-\uDC7F\uDCA7-\uDCAF\uDCFB-\uDCFF\uDD16-\uDD1B\uDDBC\uDDBD\uDDC0-\uDDCF\uDDD2-\uDDFF\uDE40-\uDE48\uDE7D\uDE7E\uDE9D-\uDE9F\uDEEB-\uDEEF\uDF58-\uDF5F\uDF78-\uDF7F\uDFA9-\uDFAF]|\uD803[\uDCFA-\uDCFF\uDD30-\uDD39\uDD40-\uDD49\uDE60-\uDE7E\uDF1D-\uDF26\uDF51-\uDF54\uDFC5-\uDFCB]|\uD804[\uDC52-\uDC6F\uDCF0-\uDCF9\uDD36-\uDD3F\uDDD0-\uDDD9\uDDE1-\uDDF4\uDEF0-\uDEF9]|\uD805[\uDC50-\uDC59\uDCD0-\uDCD9\uDE50-\uDE59\uDEC0-\uDEC9\uDED0-\uDEE3\uDF30-\uDF3B]|\uD806[\uDCE0-\uDCF2\uDD50-\uDD59\uDFF0-\uDFF9]|\uD807[\uDC50-\uDC6C\uDD50-\uDD59\uDDA0-\uDDA9\uDDE0-\uDDE9\uDF50-\uDF59\uDFC0-\uDFD4]|\uD809[\uDC00-\uDC6E]|\uD818[\uDD30-\uDD39]|\uD81A[\uDE60-\uDE69\uDEC0-\uDEC9\uDF50-\uDF59\uDF5B-\uDF61]|\uD81B[\uDD70-\uDD79\uDE80-\uDE96\uDFF4-\uDFF6]|\uD833[\uDCF0-\uDCF9]|\uD834[\uDEC0-\uDED3\uDEE0-\uDEF3\uDF60-\uDF78]|\uD835[\uDFCE-\uDFFF]|\uD838[\uDD40-\uDD49\uDEF0-\uDEF9]|\uD839[\uDCF0-\uDCF9\uDDF1-\uDDFA]|\uD83A[\uDCC7-\uDCCF\uDD50-\uDD59]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D]|\uD83C[\uDD00-\uDD0C]|\uD83E[\uDFF0-\uDFF9])/g, '');
41
+ var thousandSeparator = Intl.NumberFormat(locale).format(11111).replace(/(?:[0-9\xB2\xB3\xB9\xBC-\xBE\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u09F4-\u09F9\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0B72-\u0B77\u0BE6-\u0BF2\u0C66-\u0C6F\u0C78-\u0C7E\u0CE6-\u0CEF\u0D58-\u0D5E\u0D66-\u0D78\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F33\u1040-\u1049\u1090-\u1099\u1369-\u137C\u16EE-\u16F0\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1946-\u194F\u19D0-\u19DA\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\u2070\u2074-\u2079\u2080-\u2089\u2150-\u2182\u2185-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2CFD\u3007\u3021-\u3029\u3038-\u303A\u3192-\u3195\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\uA620-\uA629\uA6E6-\uA6EF\uA830-\uA835\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19]|\uD800[\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDEE1-\uDEFB\uDF20-\uDF23\uDF41\uDF4A\uDFD1-\uDFD5]|\uD801[\uDCA0-\uDCA9]|\uD802[\uDC58-\uDC5F\uDC79-\uDC7F\uDCA7-\uDCAF\uDCFB-\uDCFF\uDD16-\uDD1B\uDDBC\uDDBD\uDDC0-\uDDCF\uDDD2-\uDDFF\uDE40-\uDE48\uDE7D\uDE7E\uDE9D-\uDE9F\uDEEB-\uDEEF\uDF58-\uDF5F\uDF78-\uDF7F\uDFA9-\uDFAF]|\uD803[\uDCFA-\uDCFF\uDD30-\uDD39\uDD40-\uDD49\uDE60-\uDE7E\uDF1D-\uDF26\uDF51-\uDF54\uDFC5-\uDFCB]|\uD804[\uDC52-\uDC6F\uDCF0-\uDCF9\uDD36-\uDD3F\uDDD0-\uDDD9\uDDE1-\uDDF4\uDEF0-\uDEF9]|\uD805[\uDC50-\uDC59\uDCD0-\uDCD9\uDE50-\uDE59\uDEC0-\uDEC9\uDED0-\uDEE3\uDF30-\uDF3B]|\uD806[\uDCE0-\uDCF2\uDD50-\uDD59\uDFF0-\uDFF9]|\uD807[\uDC50-\uDC6C\uDD50-\uDD59\uDDA0-\uDDA9\uDDE0-\uDDE9\uDF50-\uDF59\uDFC0-\uDFD4]|\uD809[\uDC00-\uDC6E]|\uD818[\uDD30-\uDD39]|\uD81A[\uDE60-\uDE69\uDEC0-\uDEC9\uDF50-\uDF59\uDF5B-\uDF61]|\uD81B[\uDD70-\uDD79\uDE80-\uDE96\uDFF4-\uDFF6]|\uD833[\uDCF0-\uDCF9]|\uD834[\uDEC0-\uDED3\uDEE0-\uDEF3\uDF60-\uDF78]|\uD835[\uDFCE-\uDFFF]|\uD838[\uDD40-\uDD49\uDEF0-\uDEF9]|\uD839[\uDCF0-\uDCF9\uDDF1-\uDDFA]|\uD83A[\uDCC7-\uDCCF\uDD50-\uDD59]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D]|\uD83C[\uDD00-\uDD0C]|\uD83E[\uDFF0-\uDFF9])/g, '');
42
+ var decimalSeparator = Intl.NumberFormat(locale).format(1.1).replace(/(?:[0-9\xB2\xB3\xB9\xBC-\xBE\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u09F4-\u09F9\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0B72-\u0B77\u0BE6-\u0BF2\u0C66-\u0C6F\u0C78-\u0C7E\u0CE6-\u0CEF\u0D58-\u0D5E\u0D66-\u0D78\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F33\u1040-\u1049\u1090-\u1099\u1369-\u137C\u16EE-\u16F0\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1946-\u194F\u19D0-\u19DA\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\u2070\u2074-\u2079\u2080-\u2089\u2150-\u2182\u2185-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2CFD\u3007\u3021-\u3029\u3038-\u303A\u3192-\u3195\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\uA620-\uA629\uA6E6-\uA6EF\uA830-\uA835\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19]|\uD800[\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDEE1-\uDEFB\uDF20-\uDF23\uDF41\uDF4A\uDFD1-\uDFD5]|\uD801[\uDCA0-\uDCA9]|\uD802[\uDC58-\uDC5F\uDC79-\uDC7F\uDCA7-\uDCAF\uDCFB-\uDCFF\uDD16-\uDD1B\uDDBC\uDDBD\uDDC0-\uDDCF\uDDD2-\uDDFF\uDE40-\uDE48\uDE7D\uDE7E\uDE9D-\uDE9F\uDEEB-\uDEEF\uDF58-\uDF5F\uDF78-\uDF7F\uDFA9-\uDFAF]|\uD803[\uDCFA-\uDCFF\uDD30-\uDD39\uDD40-\uDD49\uDE60-\uDE7E\uDF1D-\uDF26\uDF51-\uDF54\uDFC5-\uDFCB]|\uD804[\uDC52-\uDC6F\uDCF0-\uDCF9\uDD36-\uDD3F\uDDD0-\uDDD9\uDDE1-\uDDF4\uDEF0-\uDEF9]|\uD805[\uDC50-\uDC59\uDCD0-\uDCD9\uDE50-\uDE59\uDEC0-\uDEC9\uDED0-\uDEE3\uDF30-\uDF3B]|\uD806[\uDCE0-\uDCF2\uDD50-\uDD59\uDFF0-\uDFF9]|\uD807[\uDC50-\uDC6C\uDD50-\uDD59\uDDA0-\uDDA9\uDDE0-\uDDE9\uDF50-\uDF59\uDFC0-\uDFD4]|\uD809[\uDC00-\uDC6E]|\uD818[\uDD30-\uDD39]|\uD81A[\uDE60-\uDE69\uDEC0-\uDEC9\uDF50-\uDF59\uDF5B-\uDF61]|\uD81B[\uDD70-\uDD79\uDE80-\uDE96\uDFF4-\uDFF6]|\uD833[\uDCF0-\uDCF9]|\uD834[\uDEC0-\uDED3\uDEE0-\uDEF3\uDF60-\uDF78]|\uD835[\uDFCE-\uDFFF]|\uD838[\uDD40-\uDD49\uDEF0-\uDEF9]|\uD839[\uDCF0-\uDCF9\uDDF1-\uDDFA]|\uD83A[\uDCC7-\uDCCF\uDD50-\uDD59]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D]|\uD83C[\uDD00-\uDD0C]|\uD83E[\uDFF0-\uDFF9])/g, '');
47
43
 
48
44
  // Ignored via go/ees005
49
45
  // eslint-disable-next-line require-unicode-regexp
@@ -10,7 +10,6 @@ var extractSliceFromStep = exports.extractSliceFromStep = function extractSliceF
10
10
  return null;
11
11
  }
12
12
 
13
- // @ts-ignore This is by design. Slice is a private property, but accesible, from ReplaceStep.
14
13
  // However, we need to read it to found if the step was adding a newline
15
14
  var slice = step.slice;
16
15
  return slice;
@@ -6,6 +6,8 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.getDomRefFromSelection = void 0;
7
7
  var _utils = require("@atlaskit/editor-prosemirror/utils");
8
8
  var _analytics = require("../analytics");
9
+ // oxlint-disable-next-line import/no-duplicates
10
+
9
11
  var getDomRefFromSelection = exports.getDomRefFromSelection = function getDomRefFromSelection(view, actionSubjectId, editorAnalyticsAPI) {
10
12
  try {
11
13
  var domRef = (0, _utils.findDomRefAtPos)(view.state.selection.from, view.domAtPos.bind(view));
@@ -13,6 +13,7 @@ Object.defineProperty(exports, "wrapWithUnsupported", {
13
13
  });
14
14
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
15
  var _validator = require("@atlaskit/adf-utils/validator");
16
+ var _fg = require("@atlaskit/platform-feature-flags/fg");
16
17
  var _analytics = require("../analytics");
17
18
  var _trackUnsupportedContent = require("./track-unsupported-content");
18
19
  var _wrapWithUnsupported = require("./wrapWithUnsupported");
@@ -94,9 +95,11 @@ var validationErrorHandler = exports.validationErrorHandler = function validatio
94
95
 
95
96
  // panel_c1 is a ProseMirror-only variant: on save, table-in-panel documents are stored as
96
97
  // plain ADF `panel` nodes containing a `table`. The base validator-spec does not permit
97
- // `table` inside `panel` (it's gated behind the experiment), so we suppress the
98
- // INVALID_CONTENT error when the experiment is active.
99
- if (options.allowTableInPanel) {
98
+ // `table` inside `panel`, so suppress the INVALID_CONTENT error when the experiment is active.
99
+ // Only while platform_editor_table_in_panel_patch_1 is OFF: with the patch on, the adf-utils
100
+ // validator accepts table-in-panel positionally (doc / layout column / synced block only), and
101
+ // this blunt suppression would wrongly allow it in every panel.
102
+ if (options.allowTableInPanel && !(0, _fg.fg)('platform_editor_table_in_panel_patch_1')) {
100
103
  var _meta = error.meta;
101
104
  if ((_meta === null || _meta === void 0 ? void 0 : _meta.parentType) === 'panel' && error.code === 'INVALID_CONTENT' && entity.type === 'table') {
102
105
  return entity;
@@ -0,0 +1,12 @@
1
+ const BLOCK_CONTROLS_SUPPRESSION_ATTRIBUTE = 'data-block-controls-suppression';
2
+ const BLOCK_CONTROLS_SUPPRESSION_SELECTOR = `[${BLOCK_CONTROLS_SUPPRESSION_ATTRIBUTE}]`;
3
+
4
+ /**
5
+ * Marks external control surfaces where editor or renderer block controls must be hidden. This
6
+ * prevents controls such as Remix and comment buttons from appearing underneath Rovo or the object
7
+ * sidebar while those controls are being used.
8
+ */
9
+ export const blockControlsSuppressionProps = {
10
+ [BLOCK_CONTROLS_SUPPRESSION_ATTRIBUTE]: 'true'
11
+ };
12
+ export const isBlockControlsSuppressionTarget = target => target instanceof Element && target.closest(BLOCK_CONTROLS_SUPPRESSION_SELECTOR) !== null;
@@ -37,7 +37,6 @@ export const copyToClipboard = async textToCopy => {
37
37
 
38
38
  // eslint-disable-next-line @atlaskit/volt-strict-mode/no-multiple-exports
39
39
  export const copyHTMLToClipboard = async (elementToCopy, plainTextToCopy) => {
40
- // @ts-ignore
41
40
  if (isClipboardApiSupported() && typeof ClipboardItem !== 'undefined') {
42
41
  try {
43
42
  const data = new ClipboardItem({
@@ -48,7 +47,6 @@ export const copyHTMLToClipboard = async (elementToCopy, plainTextToCopy) => {
48
47
  type: 'text/html'
49
48
  })
50
49
  });
51
- // @ts-ignore
52
50
  await navigator.clipboard.write([data]);
53
51
  } catch (error) {
54
52
  throw new Error('Clipboard api is not supported');
@@ -15,8 +15,7 @@ function AlternativePackagesMessage({
15
15
  }
16
16
  return /*#__PURE__*/React.createElement("p", null, "Consider using one of these packages instead:", /*#__PURE__*/React.createElement("ul", null, alternatePackages.map(p =>
17
17
  /*#__PURE__*/
18
- // Ignored via go/ees005
19
- // eslint-disable-next-line react/jsx-key
18
+ // oxlint-disable-line react/jsx-key
20
19
  React.createElement("li", null, /*#__PURE__*/React.createElement(Link, {
21
20
  href: p.link
22
21
  }, p.name)))));
@@ -42,7 +42,7 @@ const getEmptyFramePlaceholderStyles = (activeChildIndex, placeholderText) => cs
42
42
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors, @atlaskit/ui-styling-standard/no-unsafe-selectors, @atlaskit/ui-styling-standard/no-unsafe-values -- Ignored via go/DSP-18766
43
43
  [`& .multiBodiedExtension-content-dom-wrapper > [data-extension-frame='true']:nth-of-type(${activeChildIndex + 1
44
44
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors, @atlaskit/ui-styling-standard/no-unsafe-selectors, @atlaskit/ui-styling-standard/no-unsafe-values -- Ignored via go/DSP-18766
45
- }) > p:only-child:has(.ProseMirror-trailingBreak:only-child)::before`]: {
45
+ }) > p:only-child:has(> .ProseMirror-trailingBreak):not(:has(> :not(.ProseMirror-widget):not(.ProseMirror-separator):not(.ProseMirror-trailingBreak)))::before`]: {
46
46
  color: "var(--ds-text-subtlest, #6B6E76)",
47
47
  // JSON.stringify produces a quoted and escaped CSS string.
48
48
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-unsafe-values -- Ignored via go/DSP-18766
@@ -8,7 +8,6 @@ import React, { forwardRef, Fragment, useCallback } from 'react';
8
8
  import { css, jsx } from '@emotion/react';
9
9
 
10
10
  // AFP-2532 TODO: Fix automatic suppressions below
11
- // eslint-disable-next-line @atlassian/tangerine/import/entry-points
12
11
 
13
12
  import { injectIntl } from 'react-intl';
14
13
  import { relativeFontSizeToBase16 } from '@atlaskit/editor-shared-styles';
@@ -2,6 +2,7 @@ import _extends from "@babel/runtime/helpers/extends";
2
2
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
3
  import React from 'react';
4
4
  import { WithProviders } from '../../provider-factory';
5
+ // oxlint-disable-next-line import/no-duplicates
5
6
 
6
7
  // eslint-disable-next-line no-duplicate-imports
7
8
 
@@ -23,7 +23,6 @@ const containerStyles = xcss({
23
23
  // toolbar, where the z-index is "2". We have to hack in our own z-index less
24
24
  // than that to ensure our badge appears under the toolbar when scrolled.
25
25
  const hackedZIndexStyles = xcss({
26
- // @ts-ignore
27
26
  zIndex: '1'
28
27
  });
29
28
  const resizeOffsetStyles = xcss({
@@ -14,7 +14,7 @@ const NETWORK_FAILURE_REGEX = /^network failure/i;
14
14
  const RESIZE_OBSERVER_LOOP_REGEX = /ResizeObserver loop completed with undelivered notifications/;
15
15
  const SENTRY_DSN = 'https://0b10c8e02fb44d8796c047b102c9bee8@o55978.ingest.sentry.io/4505129224110080';
16
16
  const packageName = 'editor-common'; // Sentry doesn't accept '/' in its releases https://docs.sentry.io/platforms/javascript/configuration/releases/
17
- const packageVersion = "119.1.0";
17
+ const packageVersion = "119.3.0";
18
18
  const sanitiseSentryEvents = (data, _hint) => {
19
19
  // Remove URL as it has UGC
20
20
  // Ignored via go/ees007
@@ -77,7 +77,6 @@ export const logException = async (error, tags) => {
77
77
  // Use a client to avoid picking up the errors from parent applications
78
78
  const client = new BrowserClient(sentryOptions);
79
79
  const hub = getCurrentHub();
80
- // @ts-ignore - TypeScript 5.9.2 upgrade
81
80
  hub.bindClient(client);
82
81
  hub.withScope(scope => {
83
82
  var _buildInfo;
@@ -102,8 +101,6 @@ export const logException = async (error, tags) => {
102
101
  scope.clearBreadcrumbs();
103
102
  hub.captureException(error);
104
103
  });
105
-
106
- // @ts-ignore - TypeScript 5.9.2 upgrade
107
104
  return client.close();
108
105
  } catch (_error) {
109
106
  // Error reporting failed, we don't want this to generate more errors
@@ -142,7 +142,6 @@ export default class ReactNodeView {
142
142
  }
143
143
  _handleRef(node) {
144
144
  const contentDOM = this.contentDOMWrapper || this.contentDOM;
145
- // @ts-ignore
146
145
  // Spreading props to pass through dynamic component props
147
146
  // Ignored via go/ees005
148
147
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -1,3 +1,5 @@
1
+ // oxlint-disable-next-line import/no-duplicates
2
+
1
3
  import { Plugin } from '@atlaskit/editor-prosemirror/state';
2
4
  import { fg } from '@atlaskit/platform-feature-flags';
3
5
  import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
@@ -1,3 +1,5 @@
1
+ // oxlint-disable-next-line import/no-duplicates
2
+
1
3
  import { NodeSelection, TextSelection } from '@atlaskit/editor-prosemirror/state';
2
4
  import { findTable, isTableSelected } from '@atlaskit/editor-tables/utils';
3
5
  import { isListNode } from '../utils';
@@ -1,5 +1,6 @@
1
1
  import React, { useCallback } from 'react';
2
2
  import { ToolbarUIProvider } from '@atlaskit/editor-toolbar';
3
+ import { isExperimentEnabled } from '@atlaskit/platform-feature-experiments/is-experiment-enabled';
3
4
  export const EditorToolbarUIProvider = ({
4
5
  children,
5
6
  api,
@@ -20,6 +21,9 @@ export const EditorToolbarUIProvider = ({
20
21
  // When closed via keyboard Escape, keep focus on the trigger for better keyboard UX.
21
22
  const isKeyboardEscape = event instanceof KeyboardEvent && event.key === 'Escape';
22
23
  const shouldFocusEditor = !isKeyboardEscape;
24
+ if (isExperimentEnabled('platform_editor_toolbar_multi_editor_fix') && event instanceof MouseEvent && event.target instanceof Element && !event.target.closest('[role="menu"]')) {
25
+ return;
26
+ }
23
27
  if (shouldFocusEditor) {
24
28
  // On Dropdown closed, focus is returned to trigger button by default in requestAnimationFrame
25
29
  // Hence, `.focus()` should also be called in requestAnimationFrame
@@ -14,7 +14,7 @@ import withAnalyticsEvents from '@atlaskit/analytics-next/withAnalyticsEvents';
14
14
  import { fg } from '@atlaskit/platform-feature-flags';
15
15
  import Layer from '../Layer';
16
16
  const packageName = "@atlaskit/editor-common";
17
- const packageVersion = "119.1.0";
17
+ const packageVersion = "119.3.0";
18
18
  const halfFocusRing = 1;
19
19
  const dropOffset = '0, 8';
20
20
  const fadeIn = keyframes({
@@ -18,12 +18,8 @@ function parseLocaleNumber(stringNumber, groupPattern, fractionPattern) {
18
18
  export function createNormalizeTextParser() {
19
19
  // Source: https://stackoverflow.com/questions/12004808/does-javascript-take-local-decimal-separators-into-account
20
20
  const locale = window.navigator.language;
21
- const thousandSeparator = Intl.NumberFormat(locale).format(11111)
22
- // @ts-ignore - TS1501 TypeScript 5.9.2 upgrade
23
- .replace(/\p{Number}/gu, '');
24
- const decimalSeparator = Intl.NumberFormat(locale).format(1.1)
25
- // @ts-ignore - TS1501 TypeScript 5.9.2 upgrade
26
- .replace(/\p{Number}/gu, '');
21
+ const thousandSeparator = Intl.NumberFormat(locale).format(11111).replace(/\p{Number}/gu, '');
22
+ const decimalSeparator = Intl.NumberFormat(locale).format(1.1).replace(/\p{Number}/gu, '');
27
23
 
28
24
  // Ignored via go/ees005
29
25
  // eslint-disable-next-line require-unicode-regexp
@@ -4,7 +4,6 @@ export const extractSliceFromStep = step => {
4
4
  return null;
5
5
  }
6
6
 
7
- // @ts-ignore This is by design. Slice is a private property, but accesible, from ReplaceStep.
8
7
  // However, we need to read it to found if the step was adding a newline
9
8
  const slice = step.slice;
10
9
  return slice;
@@ -1,4 +1,7 @@
1
1
  import { findDomRefAtPos } from '@atlaskit/editor-prosemirror/utils';
2
+
3
+ // oxlint-disable-next-line import/no-duplicates
4
+
2
5
  import { ACTION, ACTION_SUBJECT, EVENT_TYPE } from '../analytics';
3
6
  export const getDomRefFromSelection = (view, actionSubjectId, editorAnalyticsAPI) => {
4
7
  try {
@@ -1,4 +1,5 @@
1
1
  import { validator } from '@atlaskit/adf-utils/validator';
2
+ import { fg } from '@atlaskit/platform-feature-flags/fg';
2
3
  import { ACTION_SUBJECT_ID } from '../analytics';
3
4
  export const UNSUPPORTED_NODE_ATTRIBUTE = 'unsupportedNodeAttribute';
4
5
  import { fireUnsupportedEvent } from './track-unsupported-content';
@@ -79,9 +80,11 @@ export const validationErrorHandler = (entity, error, options, marks, validate,
79
80
 
80
81
  // panel_c1 is a ProseMirror-only variant: on save, table-in-panel documents are stored as
81
82
  // plain ADF `panel` nodes containing a `table`. The base validator-spec does not permit
82
- // `table` inside `panel` (it's gated behind the experiment), so we suppress the
83
- // INVALID_CONTENT error when the experiment is active.
84
- if (options.allowTableInPanel) {
83
+ // `table` inside `panel`, so suppress the INVALID_CONTENT error when the experiment is active.
84
+ // Only while platform_editor_table_in_panel_patch_1 is OFF: with the patch on, the adf-utils
85
+ // validator accepts table-in-panel positionally (doc / layout column / synced block only), and
86
+ // this blunt suppression would wrongly allow it in every panel.
87
+ if (options.allowTableInPanel && !fg('platform_editor_table_in_panel_patch_1')) {
85
88
  const meta = error.meta;
86
89
  if ((meta === null || meta === void 0 ? void 0 : meta.parentType) === 'panel' && error.code === 'INVALID_CONTENT' && entity.type === 'table') {
87
90
  return entity;
@@ -0,0 +1,13 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ var BLOCK_CONTROLS_SUPPRESSION_ATTRIBUTE = 'data-block-controls-suppression';
3
+ var BLOCK_CONTROLS_SUPPRESSION_SELECTOR = "[".concat(BLOCK_CONTROLS_SUPPRESSION_ATTRIBUTE, "]");
4
+
5
+ /**
6
+ * Marks external control surfaces where editor or renderer block controls must be hidden. This
7
+ * prevents controls such as Remix and comment buttons from appearing underneath Rovo or the object
8
+ * sidebar while those controls are being used.
9
+ */
10
+ export var blockControlsSuppressionProps = _defineProperty({}, BLOCK_CONTROLS_SUPPRESSION_ATTRIBUTE, 'true');
11
+ export var isBlockControlsSuppressionTarget = function isBlockControlsSuppressionTarget(target) {
12
+ return target instanceof Element && target.closest(BLOCK_CONTROLS_SUPPRESSION_SELECTOR) !== null;
13
+ };
@@ -100,7 +100,7 @@ export var copyHTMLToClipboard = /*#__PURE__*/function () {
100
100
  'text/html': new Blob([elementToCopy.innerHTML], {
101
101
  type: 'text/html'
102
102
  })
103
- }); // @ts-ignore
103
+ });
104
104
  _context2.next = 2;
105
105
  return navigator.clipboard.write([data]);
106
106
  case 2:
@@ -15,8 +15,7 @@ function AlternativePackagesMessage(_ref) {
15
15
  return /*#__PURE__*/React.createElement("p", null, "Consider using one of these packages instead:", /*#__PURE__*/React.createElement("ul", null, alternatePackages.map(function (p) {
16
16
  return (
17
17
  /*#__PURE__*/
18
- // Ignored via go/ees005
19
- // eslint-disable-next-line react/jsx-key
18
+ // oxlint-disable-line react/jsx-key
20
19
  React.createElement("li", null, /*#__PURE__*/React.createElement(Link, {
21
20
  href: p.link
22
21
  }, p.name))
@@ -46,7 +46,7 @@ var getContainerCssExtendedStyles = function getContainerCssExtendedStyles(activ
46
46
  var getEmptyFramePlaceholderStyles = function getEmptyFramePlaceholderStyles(activeChildIndex, placeholderText) {
47
47
  return css(_defineProperty({}, "& .multiBodiedExtension-content-dom-wrapper > [data-extension-frame='true']:nth-of-type(".concat(activeChildIndex + 1
48
48
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors, @atlaskit/ui-styling-standard/no-unsafe-selectors, @atlaskit/ui-styling-standard/no-unsafe-values -- Ignored via go/DSP-18766
49
- , ") > p:only-child:has(.ProseMirror-trailingBreak:only-child)::before"), {
49
+ , ") > p:only-child:has(> .ProseMirror-trailingBreak):not(:has(> :not(.ProseMirror-widget):not(.ProseMirror-separator):not(.ProseMirror-trailingBreak)))::before"), {
50
50
  color: "var(--ds-text-subtlest, #6B6E76)",
51
51
  // JSON.stringify produces a quoted and escaped CSS string.
52
52
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-unsafe-values -- Ignored via go/DSP-18766
@@ -8,7 +8,6 @@ import React, { forwardRef, Fragment, useCallback } from 'react';
8
8
  import { css, jsx } from '@emotion/react';
9
9
 
10
10
  // AFP-2532 TODO: Fix automatic suppressions below
11
- // eslint-disable-next-line @atlassian/tangerine/import/entry-points
12
11
 
13
12
  import { injectIntl } from 'react-intl';
14
13
  import { relativeFontSizeToBase16 } from '@atlaskit/editor-shared-styles';
@@ -11,6 +11,7 @@ function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstruct
11
11
  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
12
12
  import React from 'react';
13
13
  import { WithProviders } from '../../provider-factory';
14
+ // oxlint-disable-next-line import/no-duplicates
14
15
 
15
16
  // eslint-disable-next-line no-duplicate-imports
16
17
 
@@ -24,7 +24,6 @@ var containerStyles = xcss({
24
24
  // toolbar, where the z-index is "2". We have to hack in our own z-index less
25
25
  // than that to ensure our badge appears under the toolbar when scrolled.
26
26
  var hackedZIndexStyles = xcss({
27
- // @ts-ignore
28
27
  zIndex: '1'
29
28
  });
30
29
  var resizeOffsetStyles = xcss({
@@ -20,7 +20,7 @@ var NETWORK_FAILURE_REGEX = /^network failure/i;
20
20
  var RESIZE_OBSERVER_LOOP_REGEX = /ResizeObserver loop completed with undelivered notifications/;
21
21
  var SENTRY_DSN = 'https://0b10c8e02fb44d8796c047b102c9bee8@o55978.ingest.sentry.io/4505129224110080';
22
22
  var packageName = 'editor-common'; // Sentry doesn't accept '/' in its releases https://docs.sentry.io/platforms/javascript/configuration/releases/
23
- var packageVersion = "119.1.0";
23
+ var packageVersion = "119.3.0";
24
24
  var sanitiseSentryEvents = function sanitiseSentryEvents(data, _hint) {
25
25
  // Remove URL as it has UGC
26
26
  // Ignored via go/ees007
@@ -91,7 +91,7 @@ export var logException = /*#__PURE__*/function () {
91
91
  beforeSend: sanitiseSentryEvents
92
92
  }; // Use a client to avoid picking up the errors from parent applications
93
93
  client = new BrowserClient(sentryOptions);
94
- hub = getCurrentHub(); // @ts-ignore - TypeScript 5.9.2 upgrade
94
+ hub = getCurrentHub();
95
95
  hub.bindClient(client);
96
96
  hub.withScope(function (scope) {
97
97
  var _buildInfo;
@@ -115,8 +115,6 @@ export var logException = /*#__PURE__*/function () {
115
115
  scope.clearBreadcrumbs();
116
116
  hub.captureException(error);
117
117
  });
118
-
119
- // @ts-ignore - TypeScript 5.9.2 upgrade
120
118
  return _context.abrupt("return", client.close());
121
119
  case 4:
122
120
  _context.prev = 4;
@@ -162,7 +162,6 @@ var ReactNodeView = /*#__PURE__*/function () {
162
162
  value: function _handleRef(node) {
163
163
  var _this4 = this;
164
164
  var contentDOM = this.contentDOMWrapper || this.contentDOM;
165
- // @ts-ignore
166
165
  // Spreading props to pass through dynamic component props
167
166
  // Ignored via go/ees005
168
167
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -9,6 +9,8 @@ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
9
9
  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
10
10
  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
11
11
  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
12
+ // oxlint-disable-next-line import/no-duplicates
13
+
12
14
  import { Plugin } from '@atlaskit/editor-prosemirror/state';
13
15
  import { fg } from '@atlaskit/platform-feature-flags';
14
16
  import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
@@ -1,4 +1,6 @@
1
1
  import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
+ // oxlint-disable-next-line import/no-duplicates
3
+
2
4
  import { NodeSelection, TextSelection } from '@atlaskit/editor-prosemirror/state';
3
5
  import { findTable, isTableSelected } from '@atlaskit/editor-tables/utils';
4
6
  import { isListNode } from '../utils';
@@ -1,5 +1,6 @@
1
1
  import React, { useCallback } from 'react';
2
2
  import { ToolbarUIProvider } from '@atlaskit/editor-toolbar';
3
+ import { isExperimentEnabled } from '@atlaskit/platform-feature-experiments/is-experiment-enabled';
3
4
  export var EditorToolbarUIProvider = function EditorToolbarUIProvider(_ref) {
4
5
  var children = _ref.children,
5
6
  api = _ref.api,
@@ -18,6 +19,9 @@ export var EditorToolbarUIProvider = function EditorToolbarUIProvider(_ref) {
18
19
  // When closed via keyboard Escape, keep focus on the trigger for better keyboard UX.
19
20
  var isKeyboardEscape = event instanceof KeyboardEvent && event.key === 'Escape';
20
21
  var shouldFocusEditor = !isKeyboardEscape;
22
+ if (isExperimentEnabled('platform_editor_toolbar_multi_editor_fix') && event instanceof MouseEvent && event.target instanceof Element && !event.target.closest('[role="menu"]')) {
23
+ return;
24
+ }
21
25
  if (shouldFocusEditor) {
22
26
  // On Dropdown closed, focus is returned to trigger button by default in requestAnimationFrame
23
27
  // Hence, `.focus()` should also be called in requestAnimationFrame
@@ -21,7 +21,7 @@ import withAnalyticsEvents from '@atlaskit/analytics-next/withAnalyticsEvents';
21
21
  import { fg } from '@atlaskit/platform-feature-flags';
22
22
  import Layer from '../Layer';
23
23
  var packageName = "@atlaskit/editor-common";
24
- var packageVersion = "119.1.0";
24
+ var packageVersion = "119.3.0";
25
25
  var halfFocusRing = 1;
26
26
  var dropOffset = '0, 8';
27
27
  var fadeIn = keyframes({
@@ -23,12 +23,8 @@ function parseLocaleNumber(stringNumber, groupPattern, fractionPattern) {
23
23
  export function createNormalizeTextParser() {
24
24
  // Source: https://stackoverflow.com/questions/12004808/does-javascript-take-local-decimal-separators-into-account
25
25
  var locale = window.navigator.language;
26
- var thousandSeparator = Intl.NumberFormat(locale).format(11111)
27
- // @ts-ignore - TS1501 TypeScript 5.9.2 upgrade
28
- .replace(/(?:[0-9\xB2\xB3\xB9\xBC-\xBE\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u09F4-\u09F9\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0B72-\u0B77\u0BE6-\u0BF2\u0C66-\u0C6F\u0C78-\u0C7E\u0CE6-\u0CEF\u0D58-\u0D5E\u0D66-\u0D78\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F33\u1040-\u1049\u1090-\u1099\u1369-\u137C\u16EE-\u16F0\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1946-\u194F\u19D0-\u19DA\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\u2070\u2074-\u2079\u2080-\u2089\u2150-\u2182\u2185-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2CFD\u3007\u3021-\u3029\u3038-\u303A\u3192-\u3195\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\uA620-\uA629\uA6E6-\uA6EF\uA830-\uA835\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19]|\uD800[\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDEE1-\uDEFB\uDF20-\uDF23\uDF41\uDF4A\uDFD1-\uDFD5]|\uD801[\uDCA0-\uDCA9]|\uD802[\uDC58-\uDC5F\uDC79-\uDC7F\uDCA7-\uDCAF\uDCFB-\uDCFF\uDD16-\uDD1B\uDDBC\uDDBD\uDDC0-\uDDCF\uDDD2-\uDDFF\uDE40-\uDE48\uDE7D\uDE7E\uDE9D-\uDE9F\uDEEB-\uDEEF\uDF58-\uDF5F\uDF78-\uDF7F\uDFA9-\uDFAF]|\uD803[\uDCFA-\uDCFF\uDD30-\uDD39\uDD40-\uDD49\uDE60-\uDE7E\uDF1D-\uDF26\uDF51-\uDF54\uDFC5-\uDFCB]|\uD804[\uDC52-\uDC6F\uDCF0-\uDCF9\uDD36-\uDD3F\uDDD0-\uDDD9\uDDE1-\uDDF4\uDEF0-\uDEF9]|\uD805[\uDC50-\uDC59\uDCD0-\uDCD9\uDE50-\uDE59\uDEC0-\uDEC9\uDED0-\uDEE3\uDF30-\uDF3B]|\uD806[\uDCE0-\uDCF2\uDD50-\uDD59\uDFF0-\uDFF9]|\uD807[\uDC50-\uDC6C\uDD50-\uDD59\uDDA0-\uDDA9\uDDE0-\uDDE9\uDF50-\uDF59\uDFC0-\uDFD4]|\uD809[\uDC00-\uDC6E]|\uD818[\uDD30-\uDD39]|\uD81A[\uDE60-\uDE69\uDEC0-\uDEC9\uDF50-\uDF59\uDF5B-\uDF61]|\uD81B[\uDD70-\uDD79\uDE80-\uDE96\uDFF4-\uDFF6]|\uD833[\uDCF0-\uDCF9]|\uD834[\uDEC0-\uDED3\uDEE0-\uDEF3\uDF60-\uDF78]|\uD835[\uDFCE-\uDFFF]|\uD838[\uDD40-\uDD49\uDEF0-\uDEF9]|\uD839[\uDCF0-\uDCF9\uDDF1-\uDDFA]|\uD83A[\uDCC7-\uDCCF\uDD50-\uDD59]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D]|\uD83C[\uDD00-\uDD0C]|\uD83E[\uDFF0-\uDFF9])/g, '');
29
- var decimalSeparator = Intl.NumberFormat(locale).format(1.1)
30
- // @ts-ignore - TS1501 TypeScript 5.9.2 upgrade
31
- .replace(/(?:[0-9\xB2\xB3\xB9\xBC-\xBE\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u09F4-\u09F9\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0B72-\u0B77\u0BE6-\u0BF2\u0C66-\u0C6F\u0C78-\u0C7E\u0CE6-\u0CEF\u0D58-\u0D5E\u0D66-\u0D78\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F33\u1040-\u1049\u1090-\u1099\u1369-\u137C\u16EE-\u16F0\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1946-\u194F\u19D0-\u19DA\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\u2070\u2074-\u2079\u2080-\u2089\u2150-\u2182\u2185-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2CFD\u3007\u3021-\u3029\u3038-\u303A\u3192-\u3195\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\uA620-\uA629\uA6E6-\uA6EF\uA830-\uA835\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19]|\uD800[\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDEE1-\uDEFB\uDF20-\uDF23\uDF41\uDF4A\uDFD1-\uDFD5]|\uD801[\uDCA0-\uDCA9]|\uD802[\uDC58-\uDC5F\uDC79-\uDC7F\uDCA7-\uDCAF\uDCFB-\uDCFF\uDD16-\uDD1B\uDDBC\uDDBD\uDDC0-\uDDCF\uDDD2-\uDDFF\uDE40-\uDE48\uDE7D\uDE7E\uDE9D-\uDE9F\uDEEB-\uDEEF\uDF58-\uDF5F\uDF78-\uDF7F\uDFA9-\uDFAF]|\uD803[\uDCFA-\uDCFF\uDD30-\uDD39\uDD40-\uDD49\uDE60-\uDE7E\uDF1D-\uDF26\uDF51-\uDF54\uDFC5-\uDFCB]|\uD804[\uDC52-\uDC6F\uDCF0-\uDCF9\uDD36-\uDD3F\uDDD0-\uDDD9\uDDE1-\uDDF4\uDEF0-\uDEF9]|\uD805[\uDC50-\uDC59\uDCD0-\uDCD9\uDE50-\uDE59\uDEC0-\uDEC9\uDED0-\uDEE3\uDF30-\uDF3B]|\uD806[\uDCE0-\uDCF2\uDD50-\uDD59\uDFF0-\uDFF9]|\uD807[\uDC50-\uDC6C\uDD50-\uDD59\uDDA0-\uDDA9\uDDE0-\uDDE9\uDF50-\uDF59\uDFC0-\uDFD4]|\uD809[\uDC00-\uDC6E]|\uD818[\uDD30-\uDD39]|\uD81A[\uDE60-\uDE69\uDEC0-\uDEC9\uDF50-\uDF59\uDF5B-\uDF61]|\uD81B[\uDD70-\uDD79\uDE80-\uDE96\uDFF4-\uDFF6]|\uD833[\uDCF0-\uDCF9]|\uD834[\uDEC0-\uDED3\uDEE0-\uDEF3\uDF60-\uDF78]|\uD835[\uDFCE-\uDFFF]|\uD838[\uDD40-\uDD49\uDEF0-\uDEF9]|\uD839[\uDCF0-\uDCF9\uDDF1-\uDDFA]|\uD83A[\uDCC7-\uDCCF\uDD50-\uDD59]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D]|\uD83C[\uDD00-\uDD0C]|\uD83E[\uDFF0-\uDFF9])/g, '');
26
+ var thousandSeparator = Intl.NumberFormat(locale).format(11111).replace(/(?:[0-9\xB2\xB3\xB9\xBC-\xBE\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u09F4-\u09F9\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0B72-\u0B77\u0BE6-\u0BF2\u0C66-\u0C6F\u0C78-\u0C7E\u0CE6-\u0CEF\u0D58-\u0D5E\u0D66-\u0D78\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F33\u1040-\u1049\u1090-\u1099\u1369-\u137C\u16EE-\u16F0\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1946-\u194F\u19D0-\u19DA\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\u2070\u2074-\u2079\u2080-\u2089\u2150-\u2182\u2185-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2CFD\u3007\u3021-\u3029\u3038-\u303A\u3192-\u3195\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\uA620-\uA629\uA6E6-\uA6EF\uA830-\uA835\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19]|\uD800[\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDEE1-\uDEFB\uDF20-\uDF23\uDF41\uDF4A\uDFD1-\uDFD5]|\uD801[\uDCA0-\uDCA9]|\uD802[\uDC58-\uDC5F\uDC79-\uDC7F\uDCA7-\uDCAF\uDCFB-\uDCFF\uDD16-\uDD1B\uDDBC\uDDBD\uDDC0-\uDDCF\uDDD2-\uDDFF\uDE40-\uDE48\uDE7D\uDE7E\uDE9D-\uDE9F\uDEEB-\uDEEF\uDF58-\uDF5F\uDF78-\uDF7F\uDFA9-\uDFAF]|\uD803[\uDCFA-\uDCFF\uDD30-\uDD39\uDD40-\uDD49\uDE60-\uDE7E\uDF1D-\uDF26\uDF51-\uDF54\uDFC5-\uDFCB]|\uD804[\uDC52-\uDC6F\uDCF0-\uDCF9\uDD36-\uDD3F\uDDD0-\uDDD9\uDDE1-\uDDF4\uDEF0-\uDEF9]|\uD805[\uDC50-\uDC59\uDCD0-\uDCD9\uDE50-\uDE59\uDEC0-\uDEC9\uDED0-\uDEE3\uDF30-\uDF3B]|\uD806[\uDCE0-\uDCF2\uDD50-\uDD59\uDFF0-\uDFF9]|\uD807[\uDC50-\uDC6C\uDD50-\uDD59\uDDA0-\uDDA9\uDDE0-\uDDE9\uDF50-\uDF59\uDFC0-\uDFD4]|\uD809[\uDC00-\uDC6E]|\uD818[\uDD30-\uDD39]|\uD81A[\uDE60-\uDE69\uDEC0-\uDEC9\uDF50-\uDF59\uDF5B-\uDF61]|\uD81B[\uDD70-\uDD79\uDE80-\uDE96\uDFF4-\uDFF6]|\uD833[\uDCF0-\uDCF9]|\uD834[\uDEC0-\uDED3\uDEE0-\uDEF3\uDF60-\uDF78]|\uD835[\uDFCE-\uDFFF]|\uD838[\uDD40-\uDD49\uDEF0-\uDEF9]|\uD839[\uDCF0-\uDCF9\uDDF1-\uDDFA]|\uD83A[\uDCC7-\uDCCF\uDD50-\uDD59]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D]|\uD83C[\uDD00-\uDD0C]|\uD83E[\uDFF0-\uDFF9])/g, '');
27
+ var decimalSeparator = Intl.NumberFormat(locale).format(1.1).replace(/(?:[0-9\xB2\xB3\xB9\xBC-\xBE\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u09F4-\u09F9\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0B72-\u0B77\u0BE6-\u0BF2\u0C66-\u0C6F\u0C78-\u0C7E\u0CE6-\u0CEF\u0D58-\u0D5E\u0D66-\u0D78\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F33\u1040-\u1049\u1090-\u1099\u1369-\u137C\u16EE-\u16F0\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1946-\u194F\u19D0-\u19DA\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\u2070\u2074-\u2079\u2080-\u2089\u2150-\u2182\u2185-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2CFD\u3007\u3021-\u3029\u3038-\u303A\u3192-\u3195\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\uA620-\uA629\uA6E6-\uA6EF\uA830-\uA835\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19]|\uD800[\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDEE1-\uDEFB\uDF20-\uDF23\uDF41\uDF4A\uDFD1-\uDFD5]|\uD801[\uDCA0-\uDCA9]|\uD802[\uDC58-\uDC5F\uDC79-\uDC7F\uDCA7-\uDCAF\uDCFB-\uDCFF\uDD16-\uDD1B\uDDBC\uDDBD\uDDC0-\uDDCF\uDDD2-\uDDFF\uDE40-\uDE48\uDE7D\uDE7E\uDE9D-\uDE9F\uDEEB-\uDEEF\uDF58-\uDF5F\uDF78-\uDF7F\uDFA9-\uDFAF]|\uD803[\uDCFA-\uDCFF\uDD30-\uDD39\uDD40-\uDD49\uDE60-\uDE7E\uDF1D-\uDF26\uDF51-\uDF54\uDFC5-\uDFCB]|\uD804[\uDC52-\uDC6F\uDCF0-\uDCF9\uDD36-\uDD3F\uDDD0-\uDDD9\uDDE1-\uDDF4\uDEF0-\uDEF9]|\uD805[\uDC50-\uDC59\uDCD0-\uDCD9\uDE50-\uDE59\uDEC0-\uDEC9\uDED0-\uDEE3\uDF30-\uDF3B]|\uD806[\uDCE0-\uDCF2\uDD50-\uDD59\uDFF0-\uDFF9]|\uD807[\uDC50-\uDC6C\uDD50-\uDD59\uDDA0-\uDDA9\uDDE0-\uDDE9\uDF50-\uDF59\uDFC0-\uDFD4]|\uD809[\uDC00-\uDC6E]|\uD818[\uDD30-\uDD39]|\uD81A[\uDE60-\uDE69\uDEC0-\uDEC9\uDF50-\uDF59\uDF5B-\uDF61]|\uD81B[\uDD70-\uDD79\uDE80-\uDE96\uDFF4-\uDFF6]|\uD833[\uDCF0-\uDCF9]|\uD834[\uDEC0-\uDED3\uDEE0-\uDEF3\uDF60-\uDF78]|\uD835[\uDFCE-\uDFFF]|\uD838[\uDD40-\uDD49\uDEF0-\uDEF9]|\uD839[\uDCF0-\uDCF9\uDDF1-\uDDFA]|\uD83A[\uDCC7-\uDCCF\uDD50-\uDD59]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D]|\uD83C[\uDD00-\uDD0C]|\uD83E[\uDFF0-\uDFF9])/g, '');
32
28
 
33
29
  // Ignored via go/ees005
34
30
  // eslint-disable-next-line require-unicode-regexp
@@ -4,7 +4,6 @@ export var extractSliceFromStep = function extractSliceFromStep(step) {
4
4
  return null;
5
5
  }
6
6
 
7
- // @ts-ignore This is by design. Slice is a private property, but accesible, from ReplaceStep.
8
7
  // However, we need to read it to found if the step was adding a newline
9
8
  var slice = step.slice;
10
9
  return slice;
@@ -1,4 +1,7 @@
1
1
  import { findDomRefAtPos } from '@atlaskit/editor-prosemirror/utils';
2
+
3
+ // oxlint-disable-next-line import/no-duplicates
4
+
2
5
  import { ACTION, ACTION_SUBJECT, EVENT_TYPE } from '../analytics';
3
6
  export var getDomRefFromSelection = function getDomRefFromSelection(view, actionSubjectId, editorAnalyticsAPI) {
4
7
  try {
@@ -2,6 +2,7 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
  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; }
3
3
  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) { _defineProperty(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; }
4
4
  import { validator } from '@atlaskit/adf-utils/validator';
5
+ import { fg } from '@atlaskit/platform-feature-flags/fg';
5
6
  import { ACTION_SUBJECT_ID } from '../analytics';
6
7
  export var UNSUPPORTED_NODE_ATTRIBUTE = 'unsupportedNodeAttribute';
7
8
  import { fireUnsupportedEvent } from './track-unsupported-content';
@@ -81,9 +82,11 @@ export var validationErrorHandler = function validationErrorHandler(entity, erro
81
82
 
82
83
  // panel_c1 is a ProseMirror-only variant: on save, table-in-panel documents are stored as
83
84
  // plain ADF `panel` nodes containing a `table`. The base validator-spec does not permit
84
- // `table` inside `panel` (it's gated behind the experiment), so we suppress the
85
- // INVALID_CONTENT error when the experiment is active.
86
- if (options.allowTableInPanel) {
85
+ // `table` inside `panel`, so suppress the INVALID_CONTENT error when the experiment is active.
86
+ // Only while platform_editor_table_in_panel_patch_1 is OFF: with the patch on, the adf-utils
87
+ // validator accepts table-in-panel positionally (doc / layout column / synced block only), and
88
+ // this blunt suppression would wrongly allow it in every panel.
89
+ if (options.allowTableInPanel && !fg('platform_editor_table_in_panel_patch_1')) {
87
90
  var _meta = error.meta;
88
91
  if ((_meta === null || _meta === void 0 ? void 0 : _meta.parentType) === 'panel' && error.code === 'INVALID_CONTENT' && entity.type === 'table') {
89
92
  return entity;
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Marks external control surfaces where editor or renderer block controls must be hidden. This
3
+ * prevents controls such as Remix and comment buttons from appearing underneath Rovo or the object
4
+ * sidebar while those controls are being used.
5
+ */
6
+ export declare const blockControlsSuppressionProps: {
7
+ readonly 'data-block-controls-suppression': 'true';
8
+ };
9
+ export declare const isBlockControlsSuppressionTarget: (target: EventTarget | null) => boolean;
@@ -11,8 +11,8 @@ export declare const validationErrorHandler: (entity: ADFEntity, error: Validati
11
11
  type: string;
12
12
  } | undefined;
13
13
  export declare const validateADFEntity: (schema: Schema, node: ADFEntity, dispatchAnalyticsEvent?: DispatchAnalyticsEvent, validationOverrides?: {
14
+ allowExpandInPanel?: boolean;
14
15
  allowNestedTables?: boolean;
15
16
  allowTableInPanel?: boolean;
16
- allowExpandInPanel?: boolean;
17
17
  }) => ADFEntity;
18
18
  export { wrapWithUnsupported } from './wrapWithUnsupported';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-common",
3
- "version": "119.2.0",
3
+ "version": "119.4.0",
4
4
  "description": "A package that contains common classes and components for editor and renderer",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -29,8 +29,8 @@
29
29
  },
30
30
  "dependencies": {
31
31
  "@atlaskit/activity-provider": "^3.0.0",
32
- "@atlaskit/adf-schema": "^56.7.0",
33
- "@atlaskit/adf-utils": "^20.5.0",
32
+ "@atlaskit/adf-schema": "^57.0.0",
33
+ "@atlaskit/adf-utils": "^20.6.0",
34
34
  "@atlaskit/afm-i18n-platform-editor-editor-common": "2.200.0",
35
35
  "@atlaskit/analytics-listeners": "^11.1.0",
36
36
  "@atlaskit/analytics-namespaced-context": "^8.1.0",
@@ -42,7 +42,7 @@
42
42
  "@atlaskit/css": "^1.0.0",
43
43
  "@atlaskit/custom-steps": "^1.0.0",
44
44
  "@atlaskit/dropdown-menu": "^18.0.0",
45
- "@atlaskit/editor-json-transformer": "^9.2.0",
45
+ "@atlaskit/editor-json-transformer": "^9.4.0",
46
46
  "@atlaskit/editor-palette": "^3.4.0",
47
47
  "@atlaskit/editor-prosemirror": "^8.0.0",
48
48
  "@atlaskit/editor-shared-styles": "^4.0.0",
@@ -76,7 +76,7 @@
76
76
  "@atlaskit/profilecard": "^26.18.0",
77
77
  "@atlaskit/prosemirror-history": "^1.1.0",
78
78
  "@atlaskit/react-compiler-gating": "^0.2.0",
79
- "@atlaskit/react-ufo": "^7.5.0",
79
+ "@atlaskit/react-ufo": "^7.6.0",
80
80
  "@atlaskit/section-message": "^10.0.0",
81
81
  "@atlaskit/smart-card": "^45.17.0",
82
82
  "@atlaskit/smart-user-picker": "^11.5.0",
@@ -168,6 +168,10 @@
168
168
  "platform_editor_use_new_experiments_api": {
169
169
  "type": "boolean"
170
170
  },
171
+ "platform_editor_table_in_panel_patch_1": {
172
+ "type": "boolean",
173
+ "referenceOnly": true
174
+ },
171
175
  "platform-dst-popper-consolidation": {
172
176
  "type": "boolean",
173
177
  "referenceOnly": true
@@ -220,9 +224,6 @@
220
224
  "platform_editor_fix_mixed_types_column_sort": {
221
225
  "type": "boolean"
222
226
  },
223
- "draft_reply_contextual_pills_gate": {
224
- "type": "boolean"
225
- },
226
227
  "platform_editor_sentry_breadcrumbs": {
227
228
  "type": "boolean"
228
229
  },