@atlaskit/editor-common 109.11.4 → 109.13.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.
- package/CHANGELOG.md +32 -0
- package/dist/cjs/ai-messages/ai-failed-state.js +45 -10
- package/dist/cjs/analytics/types/enums.js +1 -1
- package/dist/cjs/analytics/types/table-events.js +1 -0
- package/dist/cjs/monitoring/error.js +1 -1
- package/dist/cjs/node-width/index.js +20 -5
- package/dist/cjs/sync-block/sync-block-store-manager.js +58 -1
- package/dist/cjs/toolbar/EditorToolbarUIProvider.js +4 -2
- package/dist/cjs/ui/DropList/index.js +1 -1
- package/dist/es2019/ai-messages/ai-failed-state.js +45 -10
- package/dist/es2019/analytics/types/enums.js +1 -1
- package/dist/es2019/analytics/types/table-events.js +1 -0
- package/dist/es2019/monitoring/error.js +1 -1
- package/dist/es2019/node-width/index.js +21 -6
- package/dist/es2019/sync-block/sync-block-store-manager.js +26 -2
- package/dist/es2019/toolbar/EditorToolbarUIProvider.js +4 -2
- package/dist/es2019/ui/DropList/index.js +1 -1
- package/dist/esm/ai-messages/ai-failed-state.js +45 -10
- package/dist/esm/analytics/types/enums.js +1 -1
- package/dist/esm/analytics/types/table-events.js +1 -0
- package/dist/esm/monitoring/error.js +1 -1
- package/dist/esm/node-width/index.js +21 -6
- package/dist/esm/sync-block/sync-block-store-manager.js +58 -2
- package/dist/esm/toolbar/EditorToolbarUIProvider.js +4 -2
- package/dist/esm/ui/DropList/index.js +1 -1
- package/dist/types/ai-messages/ai-failed-state.d.ts +45 -10
- package/dist/types/analytics/types/enums.d.ts +1 -1
- package/dist/types/analytics/types/events.d.ts +1 -2
- package/dist/types/analytics/types/table-events.d.ts +12 -2
- package/dist/types/sync-block/sync-block-store-manager.d.ts +15 -0
- package/dist/types/toolbar/EditorToolbarUIProvider.d.ts +2 -2
- package/dist/types-ts4.5/ai-messages/ai-failed-state.d.ts +45 -10
- package/dist/types-ts4.5/analytics/types/enums.d.ts +1 -1
- package/dist/types-ts4.5/analytics/types/events.d.ts +1 -2
- package/dist/types-ts4.5/analytics/types/table-events.d.ts +12 -2
- package/dist/types-ts4.5/sync-block/sync-block-store-manager.d.ts +15 -0
- package/dist/types-ts4.5/toolbar/EditorToolbarUIProvider.d.ts +2 -2
- package/package.json +4 -4
- package/dist/cjs/analytics/types/width-events.js +0 -5
- package/dist/es2019/analytics/types/width-events.js +0 -1
- package/dist/esm/analytics/types/width-events.js +0 -1
- package/dist/types/analytics/types/width-events.d.ts +0 -5
- package/dist/types-ts4.5/analytics/types/width-events.d.ts +0 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,37 @@
|
|
|
1
1
|
# @atlaskit/editor-common
|
|
2
2
|
|
|
3
|
+
## 109.13.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [`23e11d126d7c9`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/23e11d126d7c9) -
|
|
8
|
+
EDITOR-1312: Add new AIFC error messages.
|
|
9
|
+
|
|
10
|
+
### Patch Changes
|
|
11
|
+
|
|
12
|
+
- [`6d186dc817ef9`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/6d186dc817ef9) -
|
|
13
|
+
[ux] ED-26884 fix bug where resize columns for nested table results in a scrollbar
|
|
14
|
+
- [`407e1dc11eeed`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/407e1dc11eeed) -
|
|
15
|
+
Minor changes to border radius values.
|
|
16
|
+
- Updated dependencies
|
|
17
|
+
|
|
18
|
+
## 109.12.0
|
|
19
|
+
|
|
20
|
+
### Minor Changes
|
|
21
|
+
|
|
22
|
+
- [`889f0cb60f68d`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/889f0cb60f68d) -
|
|
23
|
+
EDITOR-1561 implement confirmation before deleting a source sync block
|
|
24
|
+
|
|
25
|
+
### Patch Changes
|
|
26
|
+
|
|
27
|
+
- [`a77acd87fef67`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/a77acd87fef67) -
|
|
28
|
+
EDITOR-1391 add new analytics event which logs editor width and all table widths on the page once
|
|
29
|
+
after page is loaded in both editor and renderer. remove previous implementation in width plugin.
|
|
30
|
+
- [`bb498825fca37`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/bb498825fca37) -
|
|
31
|
+
[ux] [ED-29266] add ToolbarKeyboardNavigationProvider to selection toolbar with Alt+F10 shortcut
|
|
32
|
+
to focus
|
|
33
|
+
- Updated dependencies
|
|
34
|
+
|
|
3
35
|
## 109.11.4
|
|
4
36
|
|
|
5
37
|
### Patch Changes
|
|
@@ -13,11 +13,6 @@ var aiFailedStateMessages = exports.aiFailedStateMessages = (0, _reactIntlNext.d
|
|
|
13
13
|
defaultMessage: 'Your prompt or content might not comply with our Acceptable Use Policy. Please review both and refer to our <link>Acceptable Use Policy</link> if needed. If the problem persists, consider trying a different prompt or content.',
|
|
14
14
|
description: 'Message to indicate to user their prompt or content (this can be a range of content, such as a selection or document -- we used content to keep it vague -- as this will change without user knowing) has been detected as violating Atlassians acceptable use policy. Note the markdown link -- this is expected to remain as markdown as this string is converted to html.'
|
|
15
15
|
},
|
|
16
|
-
cmdPaletteAupViolationMessage: {
|
|
17
|
-
id: 'fabric.editor.ai.experience.cmdPaletteAupViolationMessage',
|
|
18
|
-
defaultMessage: "We couldn’t complete that request because it doesn't comply with our <link>Acceptable Use Policy</link>.",
|
|
19
|
-
description: 'Message to indicate to user their prompt or content (this can be a range of content, such as a selection or document -- we used content to keep it vague -- as this will change without user knowing) has been detected as violating Atlassians acceptable use policy. Note the markdown link -- this is expected to remain as markdown as this string is converted to html.'
|
|
20
|
-
},
|
|
21
16
|
documentInsertError: {
|
|
22
17
|
id: 'fabric.editor.ai.experience-application.documentInsertError',
|
|
23
18
|
defaultMessage: "We're having trouble inserting the response. Close the dialog and try again.",
|
|
@@ -38,11 +33,6 @@ var aiFailedStateMessages = exports.aiFailedStateMessages = (0, _reactIntlNext.d
|
|
|
38
33
|
defaultMessage: "We couldn\u2019t get a response, please try again.",
|
|
39
34
|
description: "We couldn't get a response due to an api error (ie. the backend responded with an error, or got a timeout)"
|
|
40
35
|
},
|
|
41
|
-
cmdPaletteApiError: {
|
|
42
|
-
id: 'fabric.editor.ai.experience.cmdPaletteApiError',
|
|
43
|
-
defaultMessage: "An error occurred while generating your response.",
|
|
44
|
-
description: "We couldn't get a response due to an api error (ie. the backend responded with an error, or got a timeout)"
|
|
45
|
-
},
|
|
46
36
|
elevateDisabledGenerateError: {
|
|
47
37
|
id: 'fabric.editor.ai.experience.elevateDisabledGenetateError',
|
|
48
38
|
defaultMessage: "Free generate is disabled in Elevate at this time.",
|
|
@@ -67,5 +57,50 @@ var aiFailedStateMessages = exports.aiFailedStateMessages = (0, _reactIntlNext.d
|
|
|
67
57
|
id: 'fabric.editor.ai.experience.adfStreamingError',
|
|
68
58
|
defaultMessage: "Our apologies, we couldn't get a response.",
|
|
69
59
|
description: "This error message is displayed when error(s) are encountered during processing of LLM response in ADF format."
|
|
60
|
+
},
|
|
61
|
+
aifcAupViolationMessage: {
|
|
62
|
+
id: 'fabric.editor.ai.experience.aifcAupViolationMessage',
|
|
63
|
+
defaultMessage: 'Content does not comply with our <link>Acceptable Use Policy</link>.',
|
|
64
|
+
description: 'Error message to indicate to user their prompt or content (this can be a range of content, such as a selection or document -- we used content to keep it vague -- as this will change without user knowing) has been detected as violating Atlassians acceptable use policy.'
|
|
65
|
+
},
|
|
66
|
+
aifcApiError: {
|
|
67
|
+
id: 'fabric.editor.ai.experience.aifcApiError',
|
|
68
|
+
defaultMessage: 'An unknown error occurred.',
|
|
69
|
+
description: 'Message for users when a non-retryable API error occurs.'
|
|
70
|
+
},
|
|
71
|
+
aifcApiErrorRetry: {
|
|
72
|
+
id: 'fabric.editor.ai.experience.aifcApiErrorRetry',
|
|
73
|
+
defaultMessage: 'An unknown error occurred. Please reload and try again.',
|
|
74
|
+
description: 'Message for users when an API error occurs'
|
|
75
|
+
},
|
|
76
|
+
aifcTokenLimitExceeded: {
|
|
77
|
+
id: 'fabric.editor.ai.experience.aifcTokenLimitExceeded',
|
|
78
|
+
defaultMessage: 'There’s too much content to process. Select less content and try again.',
|
|
79
|
+
description: 'Message to users that displays when their request has exceeded the maximum input or output limit.'
|
|
80
|
+
},
|
|
81
|
+
aifcInputTooShortError: {
|
|
82
|
+
id: 'fabric.editor.ai.experience.aifcInputTooShortError',
|
|
83
|
+
defaultMessage: 'More content needed to complete your request. Please select more content and try again.',
|
|
84
|
+
description: 'Error message when the input was too short to process.'
|
|
85
|
+
},
|
|
86
|
+
aifcHipaaContentError: {
|
|
87
|
+
id: 'fabric.editor.ai.experience.aifcHipaaContentError',
|
|
88
|
+
defaultMessage: 'Your content contains links to HIPAA restricted content. Remove links and try again.',
|
|
89
|
+
description: 'Error message when HIPAA links have been detected.'
|
|
90
|
+
},
|
|
91
|
+
aifcRateLimitEnforced: {
|
|
92
|
+
id: 'fabric.editor.ai.experience.aifcRateLimitEnforced',
|
|
93
|
+
defaultMessage: 'You’ve reached the <link>maximum number of requests</link>. Try again in 5 minutes.',
|
|
94
|
+
description: 'Message to users that rate limiting has been enforced.'
|
|
95
|
+
},
|
|
96
|
+
aifcInternalServerError: {
|
|
97
|
+
id: 'fabric.editor.ai.experience.aifcInternalServerError',
|
|
98
|
+
defaultMessage: 'Our apologies, we couldn’t get a response. Try again in 5 minutes or <link>check Rovo status</link>.',
|
|
99
|
+
description: 'Error message when a Rovo internal server occurs.'
|
|
100
|
+
},
|
|
101
|
+
aifcAdfStreamingError: {
|
|
102
|
+
id: 'fabric.editor.ai.experience.aifcAdfStreamingError',
|
|
103
|
+
defaultMessage: 'Our apologies, we couldn’t get a response.',
|
|
104
|
+
description: 'This error message is displayed when error(s) are encountered during processing of LLM response in ADF format.'
|
|
70
105
|
}
|
|
71
106
|
});
|
|
@@ -197,7 +197,7 @@ var ACTION = exports.ACTION = /*#__PURE__*/function (ACTION) {
|
|
|
197
197
|
ACTION["SUGGESTION_INSERTED"] = "suggestionInserted";
|
|
198
198
|
ACTION["SUGGESTION_DISMISSED"] = "suggestionDismissed";
|
|
199
199
|
ACTION["SUGGESTION_VIEWED"] = "suggestionViewed";
|
|
200
|
-
ACTION["
|
|
200
|
+
ACTION["TABLE_WIDTH_INFO"] = "tableWidthInformation";
|
|
201
201
|
return ACTION;
|
|
202
202
|
}({});
|
|
203
203
|
var INPUT_METHOD = exports.INPUT_METHOD = /*#__PURE__*/function (INPUT_METHOD) {
|
|
@@ -44,6 +44,7 @@ var TABLE_ACTION = exports.TABLE_ACTION = /*#__PURE__*/function (TABLE_ACTION) {
|
|
|
44
44
|
TABLE_ACTION["CHANGED_ALIGNMENT"] = "changedAlignment";
|
|
45
45
|
// Temporary to track usage of CONFCLOUD-78239 bug
|
|
46
46
|
TABLE_ACTION["TABLE_CELL_BACKGROUND_FIXED"] = "tableCellBackgroundFixed";
|
|
47
|
+
TABLE_ACTION["TABLE_WIDTH_INFO"] = "tableWidthInformation";
|
|
47
48
|
return TABLE_ACTION;
|
|
48
49
|
}({});
|
|
49
50
|
var TABLE_BREAKOUT = exports.TABLE_BREAKOUT = /*#__PURE__*/function (TABLE_BREAKOUT) {
|
|
@@ -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 = "
|
|
19
|
+
var packageVersion = "109.12.0";
|
|
20
20
|
var sanitiseSentryEvents = function sanitiseSentryEvents(data, _hint) {
|
|
21
21
|
// Remove URL as it has UGC
|
|
22
22
|
// Ignored via go/ees007
|
|
@@ -6,11 +6,15 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.layoutToWidth = exports.getTableWidthWithNumberColumn = exports.getTableContainerWidth = exports.getParentNodeWidth = void 0;
|
|
7
7
|
var _utils = require("@atlaskit/editor-prosemirror/utils");
|
|
8
8
|
var _editorSharedStyles = require("@atlaskit/editor-shared-styles");
|
|
9
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
10
|
+
var _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals");
|
|
9
11
|
var _extension = require("../styles/shared/extension");
|
|
10
12
|
var _layout = require("../styles/shared/layout");
|
|
11
13
|
var _table = require("../styles/shared/table");
|
|
12
14
|
var _breakout = require("../utils/breakout");
|
|
13
15
|
var GRID_SIZE = 8;
|
|
16
|
+
var NESTED_DND_GUTTER_OFFSET = 8;
|
|
17
|
+
var NESTED_DND_MARGIN_OFFSET = 12;
|
|
14
18
|
var layoutToWidth = exports.layoutToWidth = {
|
|
15
19
|
// eslint-disable-next-line @atlaskit/editor/no-re-export
|
|
16
20
|
default: _editorSharedStyles.akEditorDefaultLayoutWidth,
|
|
@@ -39,7 +43,8 @@ var getParentNodeWidth = exports.getParentNodeWidth = function getParentNodeWidt
|
|
|
39
43
|
if (breakoutMark && breakoutMark.attrs.mode) {
|
|
40
44
|
layout = breakoutMark.attrs.mode;
|
|
41
45
|
}
|
|
42
|
-
var
|
|
46
|
+
var breakoutWidth = breakoutMark ? breakoutMark.attrs.width : undefined;
|
|
47
|
+
var parentWidth = calcBreakoutNodeWidth(layout, containerWidth, isFullWidthModeEnabled, breakoutWidth);
|
|
43
48
|
|
|
44
49
|
// Please, do not copy or use this kind of code below
|
|
45
50
|
// @ts-ignore
|
|
@@ -53,13 +58,17 @@ var getParentNodeWidth = exports.getParentNodeWidth = function getParentNodeWidt
|
|
|
53
58
|
};
|
|
54
59
|
switch (node.type) {
|
|
55
60
|
case schema.nodes.layoutSection:
|
|
56
|
-
|
|
61
|
+
// the extra width of the layout does not add to the width of the area the table can be inside
|
|
62
|
+
if (!(0, _expValEquals.expValEquals)('platform_editor_nested_table_refresh_width_fix', 'isEnabled', true)) {
|
|
63
|
+
parentWidth += _editorSharedStyles.akLayoutGutterOffset * 2; // extra width that gets added to layout
|
|
64
|
+
}
|
|
57
65
|
|
|
58
66
|
// Calculate width of parent layout column when
|
|
59
67
|
// Parallel layout with viewport greater than 1024px
|
|
60
68
|
// OR side panel of an extension is open and change the node width to smaller than containerWidth
|
|
61
69
|
if (containerWidth.width > _editorSharedStyles.gridMediumMaxWidth || ((_contextPanelPluginKe = contextPanelPluginKey.getState(state)) === null || _contextPanelPluginKe === void 0 ? void 0 : _contextPanelPluginKe.contents.length) > 0 && ((_contextPanelPluginKe2 = contextPanelPluginKey.getState(state)) === null || _contextPanelPluginKe2 === void 0 ? void 0 : _contextPanelPluginKe2.contents[0]) !== undefined) {
|
|
62
|
-
|
|
70
|
+
// margin between sections
|
|
71
|
+
parentWidth -= (0, _expValEquals.expValEquals)('platform_editor_nested_table_refresh_width_fix', 'isEnabled', true) && (0, _platformFeatureFlags.fg)('platform_editor_nested_dnd_styles_changes') ? (_layout.LAYOUT_SECTION_MARGIN + NESTED_DND_MARGIN_OFFSET + 2) * (node.childCount - 1) : (_layout.LAYOUT_SECTION_MARGIN + 2) * (node.childCount - 1);
|
|
63
72
|
var $pos = state.doc.resolve(pos);
|
|
64
73
|
var column = (0, _utils.findParentNodeOfTypeClosestToPos)($pos, [state.schema.nodes.layoutColumn]);
|
|
65
74
|
if (column && column.node && !isNaN(column.node.attrs.width)) {
|
|
@@ -69,7 +78,7 @@ var getParentNodeWidth = exports.getParentNodeWidth = function getParentNodeWidt
|
|
|
69
78
|
}
|
|
70
79
|
|
|
71
80
|
// account for the padding of the parent node
|
|
72
|
-
parentWidth -= _layout.LAYOUT_COLUMN_PADDING * 2;
|
|
81
|
+
parentWidth -= (0, _expValEquals.expValEquals)('platform_editor_nested_table_refresh_width_fix', 'isEnabled', true) && (0, _platformFeatureFlags.fg)('platform_editor_nested_dnd_styles_changes') ? (_layout.LAYOUT_COLUMN_PADDING + NESTED_DND_GUTTER_OFFSET) * 2 : _layout.LAYOUT_COLUMN_PADDING * 2;
|
|
73
82
|
break;
|
|
74
83
|
case schema.nodes.bodiedExtension:
|
|
75
84
|
parentWidth -= _extension.BODIED_EXT_PADDING * 2;
|
|
@@ -111,7 +120,13 @@ var getNestedParentNode = function getNestedParentNode(tablePos, state) {
|
|
|
111
120
|
var parent = (0, _utils.findParentNodeOfTypeClosestToPos)($pos, [state.schema.nodes.bodiedExtension, state.schema.nodes.extensionFrame, state.schema.nodes.layoutSection, state.schema.nodes.expand, state.schema.nodes.tableCell, state.schema.nodes.tableHeader]);
|
|
112
121
|
return parent ? parent.node : null;
|
|
113
122
|
};
|
|
114
|
-
var calcBreakoutNodeWidth = function calcBreakoutNodeWidth(layout, containerWidth, isFullWidthModeEnabled) {
|
|
123
|
+
var calcBreakoutNodeWidth = function calcBreakoutNodeWidth(layout, containerWidth, isFullWidthModeEnabled, breakoutWidth) {
|
|
124
|
+
if (breakoutWidth && (0, _expValEquals.expValEquals)('platform_editor_nested_table_refresh_width_fix', 'isEnabled', true)) {
|
|
125
|
+
return isFullWidthModeEnabled ? Math.min(containerWidth.lineLength, breakoutWidth) :
|
|
126
|
+
// container width minus breakout padding
|
|
127
|
+
// --ak-editor--breakout-full-page-guttering-padding = (--ak-editor--large-gutter-padding * 2) + --ak-editor--default-gutter-padding
|
|
128
|
+
Math.min(containerWidth.width - ((0, _editorSharedStyles.akEditorGutterPaddingDynamic)() * 2 + _editorSharedStyles.akEditorGutterPadding), breakoutWidth);
|
|
129
|
+
}
|
|
115
130
|
return isFullWidthModeEnabled ? Math.min(containerWidth.lineLength, _editorSharedStyles.akEditorFullWidthLayoutWidth) : (0, _breakout.absoluteBreakoutWidth)(layout, containerWidth.width);
|
|
116
131
|
};
|
|
117
132
|
var getTableContainerWidth = exports.getTableContainerWidth = function getTableContainerWidth(node) {
|
|
@@ -5,11 +5,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.SyncBlockStoreManager = void 0;
|
|
8
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
8
10
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
9
11
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
10
12
|
// Do this typedef to make it clear that
|
|
11
13
|
// this is a local identifier for a resource for local use
|
|
12
|
-
// Represents a SOURCE sync block within the editor.
|
|
13
14
|
// A store manager responsible for the lifecycle and state management of sync blocks in an editor instance.
|
|
14
15
|
// Supports create, read, update, and delete operations for sync blocks.
|
|
15
16
|
// Designed to manage local in-memory state and synchronize with an external data provider.
|
|
@@ -22,6 +23,11 @@ var SyncBlockStoreManager = exports.SyncBlockStoreManager = /*#__PURE__*/functio
|
|
|
22
23
|
this.dataProvider = dataProvider;
|
|
23
24
|
}
|
|
24
25
|
return (0, _createClass2.default)(SyncBlockStoreManager, [{
|
|
26
|
+
key: "setEditorView",
|
|
27
|
+
value: function setEditorView(editorView) {
|
|
28
|
+
this.editorView = editorView;
|
|
29
|
+
}
|
|
30
|
+
}, {
|
|
25
31
|
key: "isSourceBlock",
|
|
26
32
|
value: function isSourceBlock(node) {
|
|
27
33
|
var _this$syncBlocks$get;
|
|
@@ -33,5 +39,56 @@ var SyncBlockStoreManager = exports.SyncBlockStoreManager = /*#__PURE__*/functio
|
|
|
33
39
|
localId = _node$attrs.localId;
|
|
34
40
|
return this.syncBlocks.has(resourceId) && ((_this$syncBlocks$get = this.syncBlocks.get(resourceId)) === null || _this$syncBlocks$get === void 0 ? void 0 : _this$syncBlocks$get.sourceLocalId) === localId;
|
|
35
41
|
}
|
|
42
|
+
}, {
|
|
43
|
+
key: "registerConfirmationCallback",
|
|
44
|
+
value: function registerConfirmationCallback(callback) {
|
|
45
|
+
var _this = this;
|
|
46
|
+
this.confirmationCallback = callback;
|
|
47
|
+
return function () {
|
|
48
|
+
_this.confirmationCallback = undefined;
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
}, {
|
|
52
|
+
key: "requireConfirmationBeforeDelete",
|
|
53
|
+
value: function requireConfirmationBeforeDelete() {
|
|
54
|
+
return !!this.confirmationCallback;
|
|
55
|
+
}
|
|
56
|
+
}, {
|
|
57
|
+
key: "deleteSyncBlocksWithConfirmation",
|
|
58
|
+
value: function () {
|
|
59
|
+
var _deleteSyncBlocksWithConfirmation = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(tr, syncBlockIds) {
|
|
60
|
+
var _this2 = this;
|
|
61
|
+
var confirmed, _this$editorView;
|
|
62
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
63
|
+
while (1) switch (_context.prev = _context.next) {
|
|
64
|
+
case 0:
|
|
65
|
+
if (!this.confirmationCallback) {
|
|
66
|
+
_context.next = 5;
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
_context.next = 3;
|
|
70
|
+
return this.confirmationCallback();
|
|
71
|
+
case 3:
|
|
72
|
+
confirmed = _context.sent;
|
|
73
|
+
if (confirmed) {
|
|
74
|
+
// TODO: EDITOR-1779 - "rebase" the transaction to reflect the latest document state
|
|
75
|
+
(_this$editorView = this.editorView) === null || _this$editorView === void 0 || _this$editorView.dispatch(tr.setMeta('isConfirmedSyncBlockDeletion', true));
|
|
76
|
+
// Need to update the BE on deletion
|
|
77
|
+
syncBlockIds.forEach(function (_ref) {
|
|
78
|
+
var resourceId = _ref.resourceId;
|
|
79
|
+
return _this2.syncBlocks.delete(resourceId);
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
case 5:
|
|
83
|
+
case "end":
|
|
84
|
+
return _context.stop();
|
|
85
|
+
}
|
|
86
|
+
}, _callee, this);
|
|
87
|
+
}));
|
|
88
|
+
function deleteSyncBlocksWithConfirmation(_x, _x2) {
|
|
89
|
+
return _deleteSyncBlocksWithConfirmation.apply(this, arguments);
|
|
90
|
+
}
|
|
91
|
+
return deleteSyncBlocksWithConfirmation;
|
|
92
|
+
}()
|
|
36
93
|
}]);
|
|
37
94
|
}();
|
|
@@ -15,7 +15,8 @@ var EditorToolbarUIProvider = exports.EditorToolbarUIProvider = function EditorT
|
|
|
15
15
|
popupsMountPoint = _ref.popupsMountPoint,
|
|
16
16
|
popupsBoundariesElement = _ref.popupsBoundariesElement,
|
|
17
17
|
popupsScrollableElement = _ref.popupsScrollableElement,
|
|
18
|
-
fireAnalyticsEvent = _ref.fireAnalyticsEvent
|
|
18
|
+
fireAnalyticsEvent = _ref.fireAnalyticsEvent,
|
|
19
|
+
keyboardNavigation = _ref.keyboardNavigation;
|
|
19
20
|
var onDropdownOpenChanged = (0, _react.useCallback)(function (_ref2) {
|
|
20
21
|
var isOpen = _ref2.isOpen;
|
|
21
22
|
if (!isOpen) {
|
|
@@ -37,6 +38,7 @@ var EditorToolbarUIProvider = exports.EditorToolbarUIProvider = function EditorT
|
|
|
37
38
|
popupsMountPoint: popupsMountPoint,
|
|
38
39
|
popupsBoundariesElement: popupsBoundariesElement,
|
|
39
40
|
popupsScrollableElement: popupsScrollableElement,
|
|
40
|
-
fireAnalyticsEvent: fireAnalyticsEvent
|
|
41
|
+
fireAnalyticsEvent: fireAnalyticsEvent,
|
|
42
|
+
keyboardNavigation: keyboardNavigation
|
|
41
43
|
}, children);
|
|
42
44
|
};
|
|
@@ -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 = "
|
|
27
|
+
var packageVersion = "109.12.0";
|
|
28
28
|
var halfFocusRing = 1;
|
|
29
29
|
var dropOffset = '0, 8';
|
|
30
30
|
var fadeIn = (0, _react2.keyframes)({
|
|
@@ -6,11 +6,6 @@ export const aiFailedStateMessages = defineMessages({
|
|
|
6
6
|
defaultMessage: 'Your prompt or content might not comply with our Acceptable Use Policy. Please review both and refer to our <link>Acceptable Use Policy</link> if needed. If the problem persists, consider trying a different prompt or content.',
|
|
7
7
|
description: 'Message to indicate to user their prompt or content (this can be a range of content, such as a selection or document -- we used content to keep it vague -- as this will change without user knowing) has been detected as violating Atlassians acceptable use policy. Note the markdown link -- this is expected to remain as markdown as this string is converted to html.'
|
|
8
8
|
},
|
|
9
|
-
cmdPaletteAupViolationMessage: {
|
|
10
|
-
id: 'fabric.editor.ai.experience.cmdPaletteAupViolationMessage',
|
|
11
|
-
defaultMessage: "We couldn’t complete that request because it doesn't comply with our <link>Acceptable Use Policy</link>.",
|
|
12
|
-
description: 'Message to indicate to user their prompt or content (this can be a range of content, such as a selection or document -- we used content to keep it vague -- as this will change without user knowing) has been detected as violating Atlassians acceptable use policy. Note the markdown link -- this is expected to remain as markdown as this string is converted to html.'
|
|
13
|
-
},
|
|
14
9
|
documentInsertError: {
|
|
15
10
|
id: 'fabric.editor.ai.experience-application.documentInsertError',
|
|
16
11
|
defaultMessage: `We're having trouble inserting the response. Close the dialog and try again.`,
|
|
@@ -31,11 +26,6 @@ export const aiFailedStateMessages = defineMessages({
|
|
|
31
26
|
defaultMessage: `We couldn’t get a response, please try again.`,
|
|
32
27
|
description: `We couldn't get a response due to an api error (ie. the backend responded with an error, or got a timeout)`
|
|
33
28
|
},
|
|
34
|
-
cmdPaletteApiError: {
|
|
35
|
-
id: 'fabric.editor.ai.experience.cmdPaletteApiError',
|
|
36
|
-
defaultMessage: `An error occurred while generating your response.`,
|
|
37
|
-
description: `We couldn't get a response due to an api error (ie. the backend responded with an error, or got a timeout)`
|
|
38
|
-
},
|
|
39
29
|
elevateDisabledGenerateError: {
|
|
40
30
|
id: 'fabric.editor.ai.experience.elevateDisabledGenetateError',
|
|
41
31
|
defaultMessage: `Free generate is disabled in Elevate at this time.`,
|
|
@@ -60,5 +50,50 @@ export const aiFailedStateMessages = defineMessages({
|
|
|
60
50
|
id: 'fabric.editor.ai.experience.adfStreamingError',
|
|
61
51
|
defaultMessage: `Our apologies, we couldn't get a response.`,
|
|
62
52
|
description: `This error message is displayed when error(s) are encountered during processing of LLM response in ADF format.`
|
|
53
|
+
},
|
|
54
|
+
aifcAupViolationMessage: {
|
|
55
|
+
id: 'fabric.editor.ai.experience.aifcAupViolationMessage',
|
|
56
|
+
defaultMessage: 'Content does not comply with our <link>Acceptable Use Policy</link>.',
|
|
57
|
+
description: 'Error message to indicate to user their prompt or content (this can be a range of content, such as a selection or document -- we used content to keep it vague -- as this will change without user knowing) has been detected as violating Atlassians acceptable use policy.'
|
|
58
|
+
},
|
|
59
|
+
aifcApiError: {
|
|
60
|
+
id: 'fabric.editor.ai.experience.aifcApiError',
|
|
61
|
+
defaultMessage: 'An unknown error occurred.',
|
|
62
|
+
description: 'Message for users when a non-retryable API error occurs.'
|
|
63
|
+
},
|
|
64
|
+
aifcApiErrorRetry: {
|
|
65
|
+
id: 'fabric.editor.ai.experience.aifcApiErrorRetry',
|
|
66
|
+
defaultMessage: 'An unknown error occurred. Please reload and try again.',
|
|
67
|
+
description: 'Message for users when an API error occurs'
|
|
68
|
+
},
|
|
69
|
+
aifcTokenLimitExceeded: {
|
|
70
|
+
id: 'fabric.editor.ai.experience.aifcTokenLimitExceeded',
|
|
71
|
+
defaultMessage: 'There’s too much content to process. Select less content and try again.',
|
|
72
|
+
description: 'Message to users that displays when their request has exceeded the maximum input or output limit.'
|
|
73
|
+
},
|
|
74
|
+
aifcInputTooShortError: {
|
|
75
|
+
id: 'fabric.editor.ai.experience.aifcInputTooShortError',
|
|
76
|
+
defaultMessage: 'More content needed to complete your request. Please select more content and try again.',
|
|
77
|
+
description: 'Error message when the input was too short to process.'
|
|
78
|
+
},
|
|
79
|
+
aifcHipaaContentError: {
|
|
80
|
+
id: 'fabric.editor.ai.experience.aifcHipaaContentError',
|
|
81
|
+
defaultMessage: 'Your content contains links to HIPAA restricted content. Remove links and try again.',
|
|
82
|
+
description: 'Error message when HIPAA links have been detected.'
|
|
83
|
+
},
|
|
84
|
+
aifcRateLimitEnforced: {
|
|
85
|
+
id: 'fabric.editor.ai.experience.aifcRateLimitEnforced',
|
|
86
|
+
defaultMessage: 'You’ve reached the <link>maximum number of requests</link>. Try again in 5 minutes.',
|
|
87
|
+
description: 'Message to users that rate limiting has been enforced.'
|
|
88
|
+
},
|
|
89
|
+
aifcInternalServerError: {
|
|
90
|
+
id: 'fabric.editor.ai.experience.aifcInternalServerError',
|
|
91
|
+
defaultMessage: 'Our apologies, we couldn’t get a response. Try again in 5 minutes or <link>check Rovo status</link>.',
|
|
92
|
+
description: 'Error message when a Rovo internal server occurs.'
|
|
93
|
+
},
|
|
94
|
+
aifcAdfStreamingError: {
|
|
95
|
+
id: 'fabric.editor.ai.experience.aifcAdfStreamingError',
|
|
96
|
+
defaultMessage: 'Our apologies, we couldn’t get a response.',
|
|
97
|
+
description: 'This error message is displayed when error(s) are encountered during processing of LLM response in ADF format.'
|
|
63
98
|
}
|
|
64
99
|
});
|
|
@@ -191,7 +191,7 @@ export let ACTION = /*#__PURE__*/function (ACTION) {
|
|
|
191
191
|
ACTION["SUGGESTION_INSERTED"] = "suggestionInserted";
|
|
192
192
|
ACTION["SUGGESTION_DISMISSED"] = "suggestionDismissed";
|
|
193
193
|
ACTION["SUGGESTION_VIEWED"] = "suggestionViewed";
|
|
194
|
-
ACTION["
|
|
194
|
+
ACTION["TABLE_WIDTH_INFO"] = "tableWidthInformation";
|
|
195
195
|
return ACTION;
|
|
196
196
|
}({});
|
|
197
197
|
export let INPUT_METHOD = /*#__PURE__*/function (INPUT_METHOD) {
|
|
@@ -38,6 +38,7 @@ export let TABLE_ACTION = /*#__PURE__*/function (TABLE_ACTION) {
|
|
|
38
38
|
TABLE_ACTION["CHANGED_ALIGNMENT"] = "changedAlignment";
|
|
39
39
|
// Temporary to track usage of CONFCLOUD-78239 bug
|
|
40
40
|
TABLE_ACTION["TABLE_CELL_BACKGROUND_FIXED"] = "tableCellBackgroundFixed";
|
|
41
|
+
TABLE_ACTION["TABLE_WIDTH_INFO"] = "tableWidthInformation";
|
|
41
42
|
return TABLE_ACTION;
|
|
42
43
|
}({});
|
|
43
44
|
export let TABLE_BREAKOUT = /*#__PURE__*/function (TABLE_BREAKOUT) {
|
|
@@ -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 = "
|
|
4
|
+
const packageVersion = "109.12.0";
|
|
5
5
|
const sanitiseSentryEvents = (data, _hint) => {
|
|
6
6
|
// Remove URL as it has UGC
|
|
7
7
|
// Ignored via go/ees007
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
import { findParentNodeOfTypeClosestToPos } from '@atlaskit/editor-prosemirror/utils';
|
|
2
|
-
import { akEditorDefaultLayoutWidth, akEditorFullWidthLayoutWidth, akEditorWideLayoutWidth, akLayoutGutterOffset, gridMediumMaxWidth } from '@atlaskit/editor-shared-styles';
|
|
2
|
+
import { akEditorDefaultLayoutWidth, akEditorFullWidthLayoutWidth, akEditorGutterPadding, akEditorGutterPaddingDynamic, akEditorWideLayoutWidth, akLayoutGutterOffset, gridMediumMaxWidth } from '@atlaskit/editor-shared-styles';
|
|
3
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
4
|
+
import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
|
|
3
5
|
import { BODIED_EXT_PADDING } from '../styles/shared/extension';
|
|
4
6
|
import { LAYOUT_COLUMN_PADDING, LAYOUT_SECTION_MARGIN } from '../styles/shared/layout';
|
|
5
7
|
import { tableCellPadding } from '../styles/shared/table';
|
|
6
8
|
import { absoluteBreakoutWidth } from '../utils/breakout';
|
|
7
9
|
const GRID_SIZE = 8;
|
|
10
|
+
const NESTED_DND_GUTTER_OFFSET = 8;
|
|
11
|
+
const NESTED_DND_MARGIN_OFFSET = 12;
|
|
8
12
|
export const layoutToWidth = {
|
|
9
13
|
// eslint-disable-next-line @atlaskit/editor/no-re-export
|
|
10
14
|
default: akEditorDefaultLayoutWidth,
|
|
@@ -35,7 +39,8 @@ export const getParentNodeWidth = (pos, state, containerWidth, isFullWidthModeEn
|
|
|
35
39
|
if (breakoutMark && breakoutMark.attrs.mode) {
|
|
36
40
|
layout = breakoutMark.attrs.mode;
|
|
37
41
|
}
|
|
38
|
-
|
|
42
|
+
const breakoutWidth = breakoutMark ? breakoutMark.attrs.width : undefined;
|
|
43
|
+
let parentWidth = calcBreakoutNodeWidth(layout, containerWidth, isFullWidthModeEnabled, breakoutWidth);
|
|
39
44
|
|
|
40
45
|
// Please, do not copy or use this kind of code below
|
|
41
46
|
// @ts-ignore
|
|
@@ -49,13 +54,17 @@ export const getParentNodeWidth = (pos, state, containerWidth, isFullWidthModeEn
|
|
|
49
54
|
};
|
|
50
55
|
switch (node.type) {
|
|
51
56
|
case schema.nodes.layoutSection:
|
|
52
|
-
|
|
57
|
+
// the extra width of the layout does not add to the width of the area the table can be inside
|
|
58
|
+
if (!expValEquals('platform_editor_nested_table_refresh_width_fix', 'isEnabled', true)) {
|
|
59
|
+
parentWidth += akLayoutGutterOffset * 2; // extra width that gets added to layout
|
|
60
|
+
}
|
|
53
61
|
|
|
54
62
|
// Calculate width of parent layout column when
|
|
55
63
|
// Parallel layout with viewport greater than 1024px
|
|
56
64
|
// OR side panel of an extension is open and change the node width to smaller than containerWidth
|
|
57
65
|
if (containerWidth.width > gridMediumMaxWidth || ((_contextPanelPluginKe = contextPanelPluginKey.getState(state)) === null || _contextPanelPluginKe === void 0 ? void 0 : _contextPanelPluginKe.contents.length) > 0 && ((_contextPanelPluginKe2 = contextPanelPluginKey.getState(state)) === null || _contextPanelPluginKe2 === void 0 ? void 0 : _contextPanelPluginKe2.contents[0]) !== undefined) {
|
|
58
|
-
|
|
66
|
+
// margin between sections
|
|
67
|
+
parentWidth -= expValEquals('platform_editor_nested_table_refresh_width_fix', 'isEnabled', true) && fg('platform_editor_nested_dnd_styles_changes') ? (LAYOUT_SECTION_MARGIN + NESTED_DND_MARGIN_OFFSET + 2) * (node.childCount - 1) : (LAYOUT_SECTION_MARGIN + 2) * (node.childCount - 1);
|
|
59
68
|
const $pos = state.doc.resolve(pos);
|
|
60
69
|
const column = findParentNodeOfTypeClosestToPos($pos, [state.schema.nodes.layoutColumn]);
|
|
61
70
|
if (column && column.node && !isNaN(column.node.attrs.width)) {
|
|
@@ -65,7 +74,7 @@ export const getParentNodeWidth = (pos, state, containerWidth, isFullWidthModeEn
|
|
|
65
74
|
}
|
|
66
75
|
|
|
67
76
|
// account for the padding of the parent node
|
|
68
|
-
parentWidth -= LAYOUT_COLUMN_PADDING * 2;
|
|
77
|
+
parentWidth -= expValEquals('platform_editor_nested_table_refresh_width_fix', 'isEnabled', true) && fg('platform_editor_nested_dnd_styles_changes') ? (LAYOUT_COLUMN_PADDING + NESTED_DND_GUTTER_OFFSET) * 2 : LAYOUT_COLUMN_PADDING * 2;
|
|
69
78
|
break;
|
|
70
79
|
case schema.nodes.bodiedExtension:
|
|
71
80
|
parentWidth -= BODIED_EXT_PADDING * 2;
|
|
@@ -105,7 +114,13 @@ const getNestedParentNode = (tablePos, state) => {
|
|
|
105
114
|
const parent = findParentNodeOfTypeClosestToPos($pos, [state.schema.nodes.bodiedExtension, state.schema.nodes.extensionFrame, state.schema.nodes.layoutSection, state.schema.nodes.expand, state.schema.nodes.tableCell, state.schema.nodes.tableHeader]);
|
|
106
115
|
return parent ? parent.node : null;
|
|
107
116
|
};
|
|
108
|
-
const calcBreakoutNodeWidth = (layout, containerWidth, isFullWidthModeEnabled) => {
|
|
117
|
+
const calcBreakoutNodeWidth = (layout, containerWidth, isFullWidthModeEnabled, breakoutWidth) => {
|
|
118
|
+
if (breakoutWidth && expValEquals('platform_editor_nested_table_refresh_width_fix', 'isEnabled', true)) {
|
|
119
|
+
return isFullWidthModeEnabled ? Math.min(containerWidth.lineLength, breakoutWidth) :
|
|
120
|
+
// container width minus breakout padding
|
|
121
|
+
// --ak-editor--breakout-full-page-guttering-padding = (--ak-editor--large-gutter-padding * 2) + --ak-editor--default-gutter-padding
|
|
122
|
+
Math.min(containerWidth.width - (akEditorGutterPaddingDynamic() * 2 + akEditorGutterPadding), breakoutWidth);
|
|
123
|
+
}
|
|
109
124
|
return isFullWidthModeEnabled ? Math.min(containerWidth.lineLength, akEditorFullWidthLayoutWidth) : absoluteBreakoutWidth(layout, containerWidth.width);
|
|
110
125
|
};
|
|
111
126
|
export const getTableContainerWidth = node => {
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
// Do this typedef to make it clear that
|
|
2
2
|
// this is a local identifier for a resource for local use
|
|
3
3
|
|
|
4
|
-
// Represents a SOURCE sync block within the editor.
|
|
5
|
-
|
|
6
4
|
// A store manager responsible for the lifecycle and state management of sync blocks in an editor instance.
|
|
7
5
|
// Supports create, read, update, and delete operations for sync blocks.
|
|
8
6
|
// Designed to manage local in-memory state and synchronize with an external data provider.
|
|
@@ -13,6 +11,9 @@ export class SyncBlockStoreManager {
|
|
|
13
11
|
this.syncBlocks = new Map();
|
|
14
12
|
this.dataProvider = dataProvider;
|
|
15
13
|
}
|
|
14
|
+
setEditorView(editorView) {
|
|
15
|
+
this.editorView = editorView;
|
|
16
|
+
}
|
|
16
17
|
isSourceBlock(node) {
|
|
17
18
|
var _this$syncBlocks$get;
|
|
18
19
|
if (!this.dataProvider || node.type.name !== 'syncBlock') {
|
|
@@ -24,4 +25,27 @@ export class SyncBlockStoreManager {
|
|
|
24
25
|
} = node.attrs;
|
|
25
26
|
return this.syncBlocks.has(resourceId) && ((_this$syncBlocks$get = this.syncBlocks.get(resourceId)) === null || _this$syncBlocks$get === void 0 ? void 0 : _this$syncBlocks$get.sourceLocalId) === localId;
|
|
26
27
|
}
|
|
28
|
+
registerConfirmationCallback(callback) {
|
|
29
|
+
this.confirmationCallback = callback;
|
|
30
|
+
return () => {
|
|
31
|
+
this.confirmationCallback = undefined;
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
requireConfirmationBeforeDelete() {
|
|
35
|
+
return !!this.confirmationCallback;
|
|
36
|
+
}
|
|
37
|
+
async deleteSyncBlocksWithConfirmation(tr, syncBlockIds) {
|
|
38
|
+
if (this.confirmationCallback) {
|
|
39
|
+
const confirmed = await this.confirmationCallback();
|
|
40
|
+
if (confirmed) {
|
|
41
|
+
var _this$editorView;
|
|
42
|
+
// TODO: EDITOR-1779 - "rebase" the transaction to reflect the latest document state
|
|
43
|
+
(_this$editorView = this.editorView) === null || _this$editorView === void 0 ? void 0 : _this$editorView.dispatch(tr.setMeta('isConfirmedSyncBlockDeletion', true));
|
|
44
|
+
// Need to update the BE on deletion
|
|
45
|
+
syncBlockIds.forEach(({
|
|
46
|
+
resourceId
|
|
47
|
+
}) => this.syncBlocks.delete(resourceId));
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
27
51
|
}
|
|
@@ -7,7 +7,8 @@ export const EditorToolbarUIProvider = ({
|
|
|
7
7
|
popupsMountPoint,
|
|
8
8
|
popupsBoundariesElement,
|
|
9
9
|
popupsScrollableElement,
|
|
10
|
-
fireAnalyticsEvent
|
|
10
|
+
fireAnalyticsEvent,
|
|
11
|
+
keyboardNavigation
|
|
11
12
|
}) => {
|
|
12
13
|
const onDropdownOpenChanged = useCallback(({
|
|
13
14
|
isOpen
|
|
@@ -29,6 +30,7 @@ export const EditorToolbarUIProvider = ({
|
|
|
29
30
|
popupsMountPoint: popupsMountPoint,
|
|
30
31
|
popupsBoundariesElement: popupsBoundariesElement,
|
|
31
32
|
popupsScrollableElement: popupsScrollableElement,
|
|
32
|
-
fireAnalyticsEvent: fireAnalyticsEvent
|
|
33
|
+
fireAnalyticsEvent: fireAnalyticsEvent,
|
|
34
|
+
keyboardNavigation: keyboardNavigation
|
|
33
35
|
}, children);
|
|
34
36
|
};
|
|
@@ -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 = "
|
|
17
|
+
const packageVersion = "109.12.0";
|
|
18
18
|
const halfFocusRing = 1;
|
|
19
19
|
const dropOffset = '0, 8';
|
|
20
20
|
const fadeIn = keyframes({
|