@atlaskit/editor-core 219.9.9 → 219.9.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # @atlaskit/editor-core
2
2
 
3
+ ## 219.9.10
4
+
5
+ ### Patch Changes
6
+
7
+ - [`96b390b511102`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/96b390b511102) -
8
+ Add the `platform_editor_per_plugin_error_boundary` experiment and use it to isolate editor
9
+ PluginSlot failures to the failing plugin.
10
+ - Updated dependencies
11
+
3
12
  ## 219.9.9
4
13
 
5
14
  ### Patch Changes
@@ -259,7 +259,7 @@ var Content = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
259
259
  var _states$markdownModeS2;
260
260
  return (_states$markdownModeS2 = states.markdownModeState) === null || _states$markdownModeS2 === void 0 ? void 0 : _states$markdownModeS2.isMarkdownMode;
261
261
  });
262
- var shouldHideProseMirrorForMarkdownMode = (0, _expValEqualsNoExposure.expValEqualsNoExposure)('cc-markdown-mode', 'isEnabled', true) && markdownPluginCurrentView !== 'wysiwyg' && markdownPluginCurrentIsMarkdownMode;
262
+ var shouldHideProseMirrorForMarkdownMode = (0, _expValEqualsNoExposure.expValEqualsNoExposure)('cc-markdown-mode', 'isEnabled', true) && markdownPluginCurrentView !== 'preview' && markdownPluginCurrentIsMarkdownMode;
263
263
  return (0, _react2.jsx)("div", {
264
264
  css: [contentAreaNew, props.isEditorToolbarHidden && contentAreaHeightNoToolbar],
265
265
  "data-testid": CONTENT_AREA_TEST_ID,
@@ -17,8 +17,8 @@ var _PluginSlotEmotion = require("./PluginSlot-emotion");
17
17
  var PluginsComponentsWrapperMigration = (0, _platformFeatureFlagsReact.componentWithCondition)(function () {
18
18
  return (0, _expValEquals.expValEquals)('platform_editor_core_non_ecc_static_css', 'isEnabled', true);
19
19
  }, _PluginSlotCompiled.PluginsComponentsWrapperCompiled, _PluginSlotEmotion.PluginsComponentsWrapperEmotion);
20
- var PluginSlot = function PluginSlot(_ref) {
21
- var items = _ref.items,
20
+ var PluginComponent = function PluginComponent(_ref) {
21
+ var component = _ref.component,
22
22
  editorView = _ref.editorView,
23
23
  editorActions = _ref.editorActions,
24
24
  eventDispatcher = _ref.eventDispatcher,
@@ -30,11 +30,43 @@ var PluginSlot = function PluginSlot(_ref) {
30
30
  containerElement = _ref.containerElement,
31
31
  disabled = _ref.disabled,
32
32
  dispatchAnalyticsEvent = _ref.dispatchAnalyticsEvent,
33
- wrapperElement = _ref.wrapperElement,
34
- pluginHooks = _ref.pluginHooks;
33
+ wrapperElement = _ref.wrapperElement;
34
+ return component({
35
+ editorView: editorView,
36
+ editorActions: editorActions,
37
+ eventDispatcher: eventDispatcher,
38
+ providerFactory: providerFactory,
39
+ dispatchAnalyticsEvent: dispatchAnalyticsEvent,
40
+ // Ignored via go/ees005
41
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
42
+ appearance: appearance,
43
+ popupsMountPoint: popupsMountPoint,
44
+ popupsBoundariesElement: popupsBoundariesElement,
45
+ popupsScrollableElement: popupsScrollableElement,
46
+ containerElement: containerElement,
47
+ disabled: disabled,
48
+ wrapperElement: wrapperElement
49
+ });
50
+ };
51
+ var PluginSlot = function PluginSlot(_ref2) {
52
+ var items = _ref2.items,
53
+ editorView = _ref2.editorView,
54
+ editorActions = _ref2.editorActions,
55
+ eventDispatcher = _ref2.eventDispatcher,
56
+ providerFactory = _ref2.providerFactory,
57
+ appearance = _ref2.appearance,
58
+ popupsMountPoint = _ref2.popupsMountPoint,
59
+ popupsBoundariesElement = _ref2.popupsBoundariesElement,
60
+ popupsScrollableElement = _ref2.popupsScrollableElement,
61
+ containerElement = _ref2.containerElement,
62
+ disabled = _ref2.disabled,
63
+ dispatchAnalyticsEvent = _ref2.dispatchAnalyticsEvent,
64
+ wrapperElement = _ref2.wrapperElement,
65
+ pluginHooks = _ref2.pluginHooks;
35
66
  if (!items && !pluginHooks) {
36
67
  return null;
37
68
  }
69
+ var isolatePluginSlotFailures = Boolean(items === null || items === void 0 ? void 0 : items.length) && (0, _expValEquals.expValEquals)('platform_editor_per_plugin_error_boundary', 'isEnabled', true);
38
70
  return /*#__PURE__*/_react.default.createElement(_ErrorBoundary.ErrorBoundary, {
39
71
  component: _analytics.ACTION_SUBJECT.PLUGIN_SLOT,
40
72
  fallbackComponent: null
@@ -44,9 +76,41 @@ var PluginSlot = function PluginSlot(_ref) {
44
76
  containerElement: containerElement
45
77
  }), /*#__PURE__*/_react.default.createElement(PluginsComponentsWrapperMigration, {
46
78
  "data-testid": "plugins-components-wrapper"
47
- }, items === null || items === void 0 ? void 0 : items.map(function (component, key) {
79
+ }, items === null || items === void 0 ? void 0 : items.map(function (component, index) {
80
+ if (isolatePluginSlotFailures) {
81
+ return (
82
+ /*#__PURE__*/
83
+ // The wrapper adds a small amount of overhead, but moves the plugin factory call
84
+ // inside the per-plugin boundary while still invoking it as a factory.
85
+ _react.default.createElement(_ErrorBoundary.ErrorBoundary
86
+ // Switching to a data-derived key currently breaks editor-plugin-ai's
87
+ // Discard flow (which relies on positional remounts to reset modal
88
+ // state). Tracked for follow-up behind a separate gate.
89
+ // eslint-disable-next-line react/no-array-index-key
90
+ , {
91
+ key: index,
92
+ component: _analytics.ACTION_SUBJECT.PLUGIN_SLOT,
93
+ dispatchAnalyticsEvent: dispatchAnalyticsEvent,
94
+ fallbackComponent: null
95
+ }, /*#__PURE__*/_react.default.createElement(PluginComponent, {
96
+ component: component,
97
+ editorView: editorView,
98
+ editorActions: editorActions,
99
+ eventDispatcher: eventDispatcher,
100
+ providerFactory: providerFactory,
101
+ appearance: appearance,
102
+ popupsMountPoint: popupsMountPoint,
103
+ popupsBoundariesElement: popupsBoundariesElement,
104
+ popupsScrollableElement: popupsScrollableElement,
105
+ containerElement: containerElement,
106
+ disabled: disabled,
107
+ dispatchAnalyticsEvent: dispatchAnalyticsEvent,
108
+ wrapperElement: wrapperElement
109
+ }))
110
+ );
111
+ }
48
112
  var props = {
49
- key: key
113
+ key: index
50
114
  };
51
115
  var element = component({
52
116
  editorView: editorView,
@@ -5,4 +5,4 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.version = exports.name = void 0;
7
7
  var name = exports.name = "@atlaskit/editor-core";
8
- var version = exports.version = "219.9.8";
8
+ var version = exports.version = "219.9.9";
@@ -251,7 +251,7 @@ const Content = /*#__PURE__*/React.forwardRef((props, ref) => {
251
251
  var _states$markdownModeS2;
252
252
  return (_states$markdownModeS2 = states.markdownModeState) === null || _states$markdownModeS2 === void 0 ? void 0 : _states$markdownModeS2.isMarkdownMode;
253
253
  });
254
- const shouldHideProseMirrorForMarkdownMode = expValEqualsNoExposure('cc-markdown-mode', 'isEnabled', true) && markdownPluginCurrentView !== 'wysiwyg' && markdownPluginCurrentIsMarkdownMode;
254
+ const shouldHideProseMirrorForMarkdownMode = expValEqualsNoExposure('cc-markdown-mode', 'isEnabled', true) && markdownPluginCurrentView !== 'preview' && markdownPluginCurrentIsMarkdownMode;
255
255
  return jsx("div", {
256
256
  css: [contentAreaNew, props.isEditorToolbarHidden && contentAreaHeightNoToolbar],
257
257
  "data-testid": CONTENT_AREA_TEST_ID,
@@ -8,6 +8,38 @@ import { MountPluginHooks } from './mount-plugin-hooks';
8
8
  import { PluginsComponentsWrapperCompiled } from './PluginSlot-compiled';
9
9
  import { PluginsComponentsWrapperEmotion } from './PluginSlot-emotion';
10
10
  const PluginsComponentsWrapperMigration = componentWithCondition(() => expValEquals('platform_editor_core_non_ecc_static_css', 'isEnabled', true), PluginsComponentsWrapperCompiled, PluginsComponentsWrapperEmotion);
11
+ const PluginComponent = ({
12
+ component,
13
+ editorView,
14
+ editorActions,
15
+ eventDispatcher,
16
+ providerFactory,
17
+ appearance,
18
+ popupsMountPoint,
19
+ popupsBoundariesElement,
20
+ popupsScrollableElement,
21
+ containerElement,
22
+ disabled,
23
+ dispatchAnalyticsEvent,
24
+ wrapperElement
25
+ }) => {
26
+ return component({
27
+ editorView: editorView,
28
+ editorActions: editorActions,
29
+ eventDispatcher: eventDispatcher,
30
+ providerFactory,
31
+ dispatchAnalyticsEvent,
32
+ // Ignored via go/ees005
33
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
34
+ appearance: appearance,
35
+ popupsMountPoint,
36
+ popupsBoundariesElement,
37
+ popupsScrollableElement,
38
+ containerElement,
39
+ disabled,
40
+ wrapperElement
41
+ });
42
+ };
11
43
  const PluginSlot = ({
12
44
  items,
13
45
  editorView,
@@ -27,6 +59,7 @@ const PluginSlot = ({
27
59
  if (!items && !pluginHooks) {
28
60
  return null;
29
61
  }
62
+ const isolatePluginSlotFailures = Boolean(items === null || items === void 0 ? void 0 : items.length) && expValEquals('platform_editor_per_plugin_error_boundary', 'isEnabled', true);
30
63
  return /*#__PURE__*/React.createElement(ErrorBoundary, {
31
64
  component: ACTION_SUBJECT.PLUGIN_SLOT,
32
65
  fallbackComponent: null
@@ -36,9 +69,41 @@ const PluginSlot = ({
36
69
  containerElement: containerElement
37
70
  }), /*#__PURE__*/React.createElement(PluginsComponentsWrapperMigration, {
38
71
  "data-testid": "plugins-components-wrapper"
39
- }, items === null || items === void 0 ? void 0 : items.map((component, key) => {
72
+ }, items === null || items === void 0 ? void 0 : items.map((component, index) => {
73
+ if (isolatePluginSlotFailures) {
74
+ return (
75
+ /*#__PURE__*/
76
+ // The wrapper adds a small amount of overhead, but moves the plugin factory call
77
+ // inside the per-plugin boundary while still invoking it as a factory.
78
+ React.createElement(ErrorBoundary
79
+ // Switching to a data-derived key currently breaks editor-plugin-ai's
80
+ // Discard flow (which relies on positional remounts to reset modal
81
+ // state). Tracked for follow-up behind a separate gate.
82
+ // eslint-disable-next-line react/no-array-index-key
83
+ , {
84
+ key: index,
85
+ component: ACTION_SUBJECT.PLUGIN_SLOT,
86
+ dispatchAnalyticsEvent: dispatchAnalyticsEvent,
87
+ fallbackComponent: null
88
+ }, /*#__PURE__*/React.createElement(PluginComponent, {
89
+ component: component,
90
+ editorView: editorView,
91
+ editorActions: editorActions,
92
+ eventDispatcher: eventDispatcher,
93
+ providerFactory: providerFactory,
94
+ appearance: appearance,
95
+ popupsMountPoint: popupsMountPoint,
96
+ popupsBoundariesElement: popupsBoundariesElement,
97
+ popupsScrollableElement: popupsScrollableElement,
98
+ containerElement: containerElement,
99
+ disabled: disabled,
100
+ dispatchAnalyticsEvent: dispatchAnalyticsEvent,
101
+ wrapperElement: wrapperElement
102
+ }))
103
+ );
104
+ }
40
105
  const props = {
41
- key
106
+ key: index
42
107
  };
43
108
  const element = component({
44
109
  editorView: editorView,
@@ -1,2 +1,2 @@
1
1
  export const name = "@atlaskit/editor-core";
2
- export const version = "219.9.8";
2
+ export const version = "219.9.9";
@@ -249,7 +249,7 @@ var Content = /*#__PURE__*/React.forwardRef(function (props, ref) {
249
249
  var _states$markdownModeS2;
250
250
  return (_states$markdownModeS2 = states.markdownModeState) === null || _states$markdownModeS2 === void 0 ? void 0 : _states$markdownModeS2.isMarkdownMode;
251
251
  });
252
- var shouldHideProseMirrorForMarkdownMode = expValEqualsNoExposure('cc-markdown-mode', 'isEnabled', true) && markdownPluginCurrentView !== 'wysiwyg' && markdownPluginCurrentIsMarkdownMode;
252
+ var shouldHideProseMirrorForMarkdownMode = expValEqualsNoExposure('cc-markdown-mode', 'isEnabled', true) && markdownPluginCurrentView !== 'preview' && markdownPluginCurrentIsMarkdownMode;
253
253
  return jsx("div", {
254
254
  css: [contentAreaNew, props.isEditorToolbarHidden && contentAreaHeightNoToolbar],
255
255
  "data-testid": CONTENT_AREA_TEST_ID,
@@ -10,8 +10,8 @@ import { PluginsComponentsWrapperEmotion } from './PluginSlot-emotion';
10
10
  var PluginsComponentsWrapperMigration = componentWithCondition(function () {
11
11
  return expValEquals('platform_editor_core_non_ecc_static_css', 'isEnabled', true);
12
12
  }, PluginsComponentsWrapperCompiled, PluginsComponentsWrapperEmotion);
13
- var PluginSlot = function PluginSlot(_ref) {
14
- var items = _ref.items,
13
+ var PluginComponent = function PluginComponent(_ref) {
14
+ var component = _ref.component,
15
15
  editorView = _ref.editorView,
16
16
  editorActions = _ref.editorActions,
17
17
  eventDispatcher = _ref.eventDispatcher,
@@ -23,11 +23,43 @@ var PluginSlot = function PluginSlot(_ref) {
23
23
  containerElement = _ref.containerElement,
24
24
  disabled = _ref.disabled,
25
25
  dispatchAnalyticsEvent = _ref.dispatchAnalyticsEvent,
26
- wrapperElement = _ref.wrapperElement,
27
- pluginHooks = _ref.pluginHooks;
26
+ wrapperElement = _ref.wrapperElement;
27
+ return component({
28
+ editorView: editorView,
29
+ editorActions: editorActions,
30
+ eventDispatcher: eventDispatcher,
31
+ providerFactory: providerFactory,
32
+ dispatchAnalyticsEvent: dispatchAnalyticsEvent,
33
+ // Ignored via go/ees005
34
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
35
+ appearance: appearance,
36
+ popupsMountPoint: popupsMountPoint,
37
+ popupsBoundariesElement: popupsBoundariesElement,
38
+ popupsScrollableElement: popupsScrollableElement,
39
+ containerElement: containerElement,
40
+ disabled: disabled,
41
+ wrapperElement: wrapperElement
42
+ });
43
+ };
44
+ var PluginSlot = function PluginSlot(_ref2) {
45
+ var items = _ref2.items,
46
+ editorView = _ref2.editorView,
47
+ editorActions = _ref2.editorActions,
48
+ eventDispatcher = _ref2.eventDispatcher,
49
+ providerFactory = _ref2.providerFactory,
50
+ appearance = _ref2.appearance,
51
+ popupsMountPoint = _ref2.popupsMountPoint,
52
+ popupsBoundariesElement = _ref2.popupsBoundariesElement,
53
+ popupsScrollableElement = _ref2.popupsScrollableElement,
54
+ containerElement = _ref2.containerElement,
55
+ disabled = _ref2.disabled,
56
+ dispatchAnalyticsEvent = _ref2.dispatchAnalyticsEvent,
57
+ wrapperElement = _ref2.wrapperElement,
58
+ pluginHooks = _ref2.pluginHooks;
28
59
  if (!items && !pluginHooks) {
29
60
  return null;
30
61
  }
62
+ var isolatePluginSlotFailures = Boolean(items === null || items === void 0 ? void 0 : items.length) && expValEquals('platform_editor_per_plugin_error_boundary', 'isEnabled', true);
31
63
  return /*#__PURE__*/React.createElement(ErrorBoundary, {
32
64
  component: ACTION_SUBJECT.PLUGIN_SLOT,
33
65
  fallbackComponent: null
@@ -37,9 +69,41 @@ var PluginSlot = function PluginSlot(_ref) {
37
69
  containerElement: containerElement
38
70
  }), /*#__PURE__*/React.createElement(PluginsComponentsWrapperMigration, {
39
71
  "data-testid": "plugins-components-wrapper"
40
- }, items === null || items === void 0 ? void 0 : items.map(function (component, key) {
72
+ }, items === null || items === void 0 ? void 0 : items.map(function (component, index) {
73
+ if (isolatePluginSlotFailures) {
74
+ return (
75
+ /*#__PURE__*/
76
+ // The wrapper adds a small amount of overhead, but moves the plugin factory call
77
+ // inside the per-plugin boundary while still invoking it as a factory.
78
+ React.createElement(ErrorBoundary
79
+ // Switching to a data-derived key currently breaks editor-plugin-ai's
80
+ // Discard flow (which relies on positional remounts to reset modal
81
+ // state). Tracked for follow-up behind a separate gate.
82
+ // eslint-disable-next-line react/no-array-index-key
83
+ , {
84
+ key: index,
85
+ component: ACTION_SUBJECT.PLUGIN_SLOT,
86
+ dispatchAnalyticsEvent: dispatchAnalyticsEvent,
87
+ fallbackComponent: null
88
+ }, /*#__PURE__*/React.createElement(PluginComponent, {
89
+ component: component,
90
+ editorView: editorView,
91
+ editorActions: editorActions,
92
+ eventDispatcher: eventDispatcher,
93
+ providerFactory: providerFactory,
94
+ appearance: appearance,
95
+ popupsMountPoint: popupsMountPoint,
96
+ popupsBoundariesElement: popupsBoundariesElement,
97
+ popupsScrollableElement: popupsScrollableElement,
98
+ containerElement: containerElement,
99
+ disabled: disabled,
100
+ dispatchAnalyticsEvent: dispatchAnalyticsEvent,
101
+ wrapperElement: wrapperElement
102
+ }))
103
+ );
104
+ }
41
105
  var props = {
42
- key: key
106
+ key: index
43
107
  };
44
108
  var element = component({
45
109
  editorView: editorView,
@@ -1,2 +1,2 @@
1
1
  export var name = "@atlaskit/editor-core";
2
- export var version = "219.9.8";
2
+ export var version = "219.9.9";
@@ -1,5 +1,5 @@
1
1
  import type { NextEditorPlugin } from '@atlaskit/editor-common/types';
2
- export type MarkdownModeView = 'syntax' | 'wysiwyg' | 'preview';
2
+ export type MarkdownModeView = 'syntax' | 'split-view' | 'preview';
3
3
  export type MarkdownModePlugin = NextEditorPlugin<'markdownMode', {
4
4
  actions: {
5
5
  setView: (view: MarkdownModeView) => void;
@@ -15,4 +15,4 @@ export interface ChromelessEditorContainerProps extends HTMLAttributes<HTMLDivEl
15
15
  maxHeight?: number;
16
16
  minHeight: number;
17
17
  }
18
- export declare const ChromelessEditorContainerCompiled: ({ children, containerRef, maxHeight, minHeight }: ChromelessEditorContainerProps) => React.JSX.Element;
18
+ export declare const ChromelessEditorContainerCompiled: ({ children, containerRef, maxHeight, minHeight, }: ChromelessEditorContainerProps) => React.JSX.Element;
@@ -1,5 +1,5 @@
1
1
  import type { NextEditorPlugin } from '@atlaskit/editor-common/types';
2
- export type MarkdownModeView = 'syntax' | 'wysiwyg' | 'preview';
2
+ export type MarkdownModeView = 'syntax' | 'split-view' | 'preview';
3
3
  export type MarkdownModePlugin = NextEditorPlugin<'markdownMode', {
4
4
  actions: {
5
5
  setView: (view: MarkdownModeView) => void;
@@ -15,4 +15,4 @@ export interface ChromelessEditorContainerProps extends HTMLAttributes<HTMLDivEl
15
15
  maxHeight?: number;
16
16
  minHeight: number;
17
17
  }
18
- export declare const ChromelessEditorContainerCompiled: ({ children, containerRef, maxHeight, minHeight }: ChromelessEditorContainerProps) => React.JSX.Element;
18
+ export declare const ChromelessEditorContainerCompiled: ({ children, containerRef, maxHeight, minHeight, }: ChromelessEditorContainerProps) => React.JSX.Element;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-core",
3
- "version": "219.9.9",
3
+ "version": "219.9.10",
4
4
  "description": "A package contains Atlassian editor core functionality",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -66,7 +66,7 @@
66
66
  "@atlaskit/editor-toolbar-model": "^0.5.0",
67
67
  "@atlaskit/emoji": "^70.10.0",
68
68
  "@atlaskit/feature-gate-js-client": "^5.7.0",
69
- "@atlaskit/icon": "^35.1.0",
69
+ "@atlaskit/icon": "^35.2.0",
70
70
  "@atlaskit/link": "^3.4.0",
71
71
  "@atlaskit/media-card": "^80.5.0",
72
72
  "@atlaskit/mention": "^26.0.0",
@@ -74,7 +74,7 @@
74
74
  "@atlaskit/platform-feature-flags-react": "^0.5.0",
75
75
  "@atlaskit/react-ufo": "^6.1.0",
76
76
  "@atlaskit/task-decision": "^20.1.0",
77
- "@atlaskit/tmp-editor-statsig": "^83.0.0",
77
+ "@atlaskit/tmp-editor-statsig": "^83.1.0",
78
78
  "@atlaskit/tokens": "^13.0.0",
79
79
  "@atlaskit/tooltip": "^22.3.0",
80
80
  "@atlaskit/width-detector": "^5.1.0",
@@ -92,7 +92,7 @@
92
92
  "uuid": "^3.1.0"
93
93
  },
94
94
  "peerDependencies": {
95
- "@atlaskit/editor-common": "^114.46.0",
95
+ "@atlaskit/editor-common": "^114.47.0",
96
96
  "@atlaskit/link-provider": "^4.4.0",
97
97
  "@atlaskit/media-core": "^37.1.0",
98
98
  "react": "^18.2.0",
@@ -113,7 +113,7 @@
113
113
  "@atlaskit/editor-plugin-paste": "^11.2.0",
114
114
  "@atlaskit/editor-test-helpers": "workspace:^",
115
115
  "@atlaskit/link-provider": "^4.4.0",
116
- "@atlaskit/linking-common": "^9.11.0",
116
+ "@atlaskit/linking-common": "^9.12.0",
117
117
  "@atlaskit/logo": "^20.1.0",
118
118
  "@atlaskit/media-core": "^37.1.0",
119
119
  "@atlaskit/media-integration-test-helpers": "workspace:^",
@@ -124,7 +124,7 @@
124
124
  "@atlaskit/renderer": "^131.1.0",
125
125
  "@atlaskit/section-message": "^8.13.0",
126
126
  "@atlaskit/synchrony-test-helpers": "workspace:^",
127
- "@atlaskit/toggle": "^15.6.0",
127
+ "@atlaskit/toggle": "^16.0.0",
128
128
  "@atlaskit/util-data-test": "^18.6.0",
129
129
  "@atlassian/a11y-jest-testing": "^0.11.0",
130
130
  "@atlassian/a11y-playwright-testing": "^0.10.0",