@atlaskit/editor-core 188.0.2 → 188.0.4
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 +7 -0
- package/dist/cjs/composable-editor/hooks/useProviderFactory.js +23 -47
- package/dist/cjs/composable-editor/utils/getProvidersFromEditorProps.js +1 -1
- package/dist/cjs/plugins/type-ahead/ui/TypeAheadListItem.js +3 -1
- package/dist/cjs/version-wrapper.js +1 -1
- package/dist/es2019/composable-editor/hooks/useProviderFactory.js +32 -57
- package/dist/es2019/composable-editor/utils/getProvidersFromEditorProps.js +2 -2
- package/dist/es2019/plugins/type-ahead/ui/TypeAheadListItem.js +3 -1
- package/dist/es2019/version-wrapper.js +1 -1
- package/dist/esm/composable-editor/hooks/useProviderFactory.js +24 -48
- package/dist/esm/composable-editor/utils/getProvidersFromEditorProps.js +1 -1
- package/dist/esm/plugins/type-ahead/ui/TypeAheadListItem.js +3 -1
- package/dist/esm/version-wrapper.js +1 -1
- package/dist/types/composable-editor/hooks/useProviderFactory.d.ts +0 -6
- package/dist/types/types/editor-props.d.ts +2 -2
- package/dist/types/utils/prepare-extension-provider.d.ts +2 -2
- package/dist/types-ts4.5/composable-editor/hooks/useProviderFactory.d.ts +0 -6
- package/dist/types-ts4.5/types/editor-props.d.ts +2 -2
- package/dist/types-ts4.5/utils/prepare-extension-provider.d.ts +2 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# @atlaskit/editor-core
|
|
2
2
|
|
|
3
|
+
## 188.0.4
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#40655](https://bitbucket.org/atlassian/atlassian-frontend/pull-requests/40655) [`e08f00068b8`](https://bitbucket.org/atlassian/atlassian-frontend/commits/e08f00068b8) - [ECA11Y-76] Typeahead List - Improvement for screen reader users, now it correctly reads the position of the selected item in the list
|
|
8
|
+
- [#40774](https://bitbucket.org/atlassian/atlassian-frontend/pull-requests/40774) [`c61db65ea25`](https://bitbucket.org/atlassian/atlassian-frontend/commits/c61db65ea25) - [ED-17196] Refactored provider factory initialisation
|
|
9
|
+
|
|
3
10
|
## 188.0.2
|
|
4
11
|
|
|
5
12
|
### Patch Changes
|
|
@@ -5,15 +5,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.default = useProviderFactory;
|
|
8
|
-
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
9
8
|
var _react = require("react");
|
|
10
|
-
var _hooks = require("@atlaskit/editor-common/hooks");
|
|
11
9
|
var _providerFactory = require("@atlaskit/editor-common/provider-factory");
|
|
12
10
|
var _prepareExtensionProvider = _interopRequireDefault(require("../../utils/prepare-extension-provider"));
|
|
13
11
|
var _prepareQuickInsertProvider = _interopRequireDefault(require("../../utils/prepare-quick-insert-provider"));
|
|
14
12
|
var _getProvidersFromEditorProps = _interopRequireDefault(require("../utils/getProvidersFromEditorProps"));
|
|
15
13
|
var _handleProviders = _interopRequireDefault(require("../utils/handleProviders"));
|
|
16
|
-
function
|
|
14
|
+
function prepareProviders(editorActions, quickInsert, extensionProviders, createAnalyticsEvent) {
|
|
17
15
|
var extensionProvider = (0, _prepareExtensionProvider.default)(function () {
|
|
18
16
|
return editorActions;
|
|
19
17
|
})(extensionProviders);
|
|
@@ -34,9 +32,7 @@ function createNewState(editorActions, quickInsert, extensionProviders, createAn
|
|
|
34
32
|
* @returns ProviderFactory for Editor
|
|
35
33
|
*/
|
|
36
34
|
function useProviderFactory(props, editorActions, createAnalyticsEvent) {
|
|
37
|
-
var
|
|
38
|
-
quickInsert = props.quickInsert,
|
|
39
|
-
linking = props.linking,
|
|
35
|
+
var linking = props.linking,
|
|
40
36
|
autoformattingProvider = props.autoformattingProvider,
|
|
41
37
|
media = props.media,
|
|
42
38
|
emojiProvider = props.emojiProvider,
|
|
@@ -49,47 +45,15 @@ function useProviderFactory(props, editorActions, createAnalyticsEvent) {
|
|
|
49
45
|
activityProvider = props.activityProvider,
|
|
50
46
|
collabEdit = props.collabEdit,
|
|
51
47
|
collabEditProvider = props.collabEditProvider,
|
|
52
|
-
presenceProvider = props.presenceProvider
|
|
48
|
+
presenceProvider = props.presenceProvider,
|
|
49
|
+
quickInsert = props.quickInsert,
|
|
50
|
+
extensionProviders = props.extensionProviders;
|
|
51
|
+
|
|
52
|
+
// TODO: Remove these when we deprecate these props from editor-props - smartLinks is unfortunately still used in some places, we can sidestep this problem if we move everyone across to ComposableEditor and deprecate Editor
|
|
53
53
|
var UNSAFE_cards = props.UNSAFE_cards;
|
|
54
54
|
var smartLinks = props.smartLinks;
|
|
55
|
-
var
|
|
56
|
-
|
|
57
|
-
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
58
|
-
providerState = _useState2[0],
|
|
59
|
-
setProviderState = _useState2[1];
|
|
60
|
-
var prevProps = (0, _hooks.usePreviousState)({
|
|
61
|
-
extensionProviders: extensionProviders,
|
|
62
|
-
quickInsert: quickInsert
|
|
63
|
-
});
|
|
64
|
-
(0, _react.useEffect)(function () {
|
|
65
|
-
if (extensionProviders && extensionProviders !== (prevProps === null || prevProps === void 0 ? void 0 : prevProps.extensionProviders) ||
|
|
66
|
-
// Though this will introduce some performance regression related to quick insert
|
|
67
|
-
// loading but we can remove it soon when Forge will move to new API.
|
|
68
|
-
// quickInsert={Promise.resolve(consumerQuickInsert)} is one of the main reason behind this performance issue.
|
|
69
|
-
quickInsert && quickInsert !== (prevProps === null || prevProps === void 0 ? void 0 : prevProps.quickInsert)) {
|
|
70
|
-
var newState = createNewState(editorActions, quickInsert, extensionProviders, createAnalyticsEvent);
|
|
71
|
-
setProviderState(newState);
|
|
72
|
-
(0, _handleProviders.default)(providerFactory.current, (0, _getProvidersFromEditorProps.default)({
|
|
73
|
-
linking: linking,
|
|
74
|
-
smartLinks: smartLinks,
|
|
75
|
-
UNSAFE_cards: UNSAFE_cards,
|
|
76
|
-
autoformattingProvider: autoformattingProvider,
|
|
77
|
-
media: media,
|
|
78
|
-
emojiProvider: emojiProvider,
|
|
79
|
-
mentionProvider: mentionProvider,
|
|
80
|
-
legacyImageUploadProvider: legacyImageUploadProvider,
|
|
81
|
-
taskDecisionProvider: taskDecisionProvider,
|
|
82
|
-
contextIdentifierProvider: contextIdentifierProvider,
|
|
83
|
-
searchProvider: searchProvider,
|
|
84
|
-
macroProvider: macroProvider,
|
|
85
|
-
activityProvider: activityProvider,
|
|
86
|
-
collabEdit: collabEdit,
|
|
87
|
-
collabEditProvider: collabEditProvider,
|
|
88
|
-
presenceProvider: presenceProvider
|
|
89
|
-
}), newState.extensionProvider, newState.quickInsertProvider);
|
|
90
|
-
return;
|
|
91
|
-
}
|
|
92
|
-
(0, _handleProviders.default)(providerFactory.current, (0, _getProvidersFromEditorProps.default)({
|
|
55
|
+
var providers = (0, _react.useMemo)(function () {
|
|
56
|
+
return (0, _getProvidersFromEditorProps.default)({
|
|
93
57
|
linking: linking,
|
|
94
58
|
smartLinks: smartLinks,
|
|
95
59
|
UNSAFE_cards: UNSAFE_cards,
|
|
@@ -106,8 +70,20 @@ function useProviderFactory(props, editorActions, createAnalyticsEvent) {
|
|
|
106
70
|
collabEdit: collabEdit,
|
|
107
71
|
collabEditProvider: collabEditProvider,
|
|
108
72
|
presenceProvider: presenceProvider
|
|
109
|
-
})
|
|
110
|
-
}, [linking, smartLinks, UNSAFE_cards, autoformattingProvider, media, emojiProvider, mentionProvider, legacyImageUploadProvider, taskDecisionProvider, contextIdentifierProvider, searchProvider, macroProvider, activityProvider, collabEdit, collabEditProvider, presenceProvider
|
|
73
|
+
});
|
|
74
|
+
}, [linking, smartLinks, UNSAFE_cards, autoformattingProvider, media, emojiProvider, mentionProvider, legacyImageUploadProvider, taskDecisionProvider, contextIdentifierProvider, searchProvider, macroProvider, activityProvider, collabEdit, collabEditProvider, presenceProvider]);
|
|
75
|
+
var providerFactory = (0, _react.useRef)(new _providerFactory.ProviderFactory());
|
|
76
|
+
var preparedProviders = (0, _react.useMemo)(function () {
|
|
77
|
+
return (
|
|
78
|
+
// Though this will introduce some performance regression related to quick insert
|
|
79
|
+
// loading but we can remove it soon when Forge will move to new API.
|
|
80
|
+
// quickInsert={Promise.resolve(consumerQuickInsert)} is one of the main reason behind this performance issue.
|
|
81
|
+
prepareProviders(editorActions, quickInsert, extensionProviders, createAnalyticsEvent)
|
|
82
|
+
);
|
|
83
|
+
}, [extensionProviders, quickInsert, editorActions, createAnalyticsEvent]);
|
|
84
|
+
(0, _react.useEffect)(function () {
|
|
85
|
+
(0, _handleProviders.default)(providerFactory.current, providers, preparedProviders.extensionProvider, preparedProviders.quickInsertProvider);
|
|
86
|
+
}, [providers, preparedProviders]);
|
|
111
87
|
|
|
112
88
|
// componentWillUnmount equivalent
|
|
113
89
|
(0, _react.useEffect)(function () {
|
|
@@ -36,6 +36,6 @@ function getProvidersFromEditorProps(_ref) {
|
|
|
36
36
|
searchProvider: searchProvider,
|
|
37
37
|
presenceProvider: presenceProvider,
|
|
38
38
|
macroProvider: macroProvider,
|
|
39
|
-
collabEditProvider: collabEdit && collabEdit.provider ? collabEdit.provider : collabEditProvider
|
|
39
|
+
collabEditProvider: collabEdit !== null && collabEdit !== void 0 && collabEdit.provider ? collabEdit.provider : collabEditProvider
|
|
40
40
|
};
|
|
41
41
|
}
|
|
@@ -128,6 +128,7 @@ var TypeAheadListItem = function TypeAheadListItem(_ref3) {
|
|
|
128
128
|
role: "option",
|
|
129
129
|
"aria-label": ariaLabel,
|
|
130
130
|
"aria-setsize": itemsLength,
|
|
131
|
+
"aria-posinset": itemIndex,
|
|
131
132
|
tabIndex: 0,
|
|
132
133
|
css: listItemClasses,
|
|
133
134
|
className: "ak-typeahead-item ".concat(isSelected ? 'typeahead-selected-item' : '')
|
|
@@ -142,7 +143,7 @@ var TypeAheadListItem = function TypeAheadListItem(_ref3) {
|
|
|
142
143
|
,
|
|
143
144
|
onHover: noop
|
|
144
145
|
})));
|
|
145
|
-
}, [customRenderItem, isSelected, ariaLabel, itemsLength, customItemRef, insertSelectedItem]);
|
|
146
|
+
}, [customRenderItem, isSelected, ariaLabel, itemsLength, customItemRef, insertSelectedItem, itemIndex]);
|
|
146
147
|
if (customItem) {
|
|
147
148
|
return customItem;
|
|
148
149
|
}
|
|
@@ -156,6 +157,7 @@ var TypeAheadListItem = function TypeAheadListItem(_ref3) {
|
|
|
156
157
|
"aria-selected": isSelected,
|
|
157
158
|
"aria-label": title,
|
|
158
159
|
"aria-setsize": itemsLength,
|
|
160
|
+
"aria-posinset": itemIndex,
|
|
159
161
|
role: "option",
|
|
160
162
|
ref: buttonItemRef,
|
|
161
163
|
css: listItemClasses
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.version = exports.nextMajorVersion = exports.name = void 0;
|
|
7
7
|
var name = "@atlaskit/editor-core";
|
|
8
8
|
exports.name = name;
|
|
9
|
-
var version = "188.0.
|
|
9
|
+
var version = "188.0.4";
|
|
10
10
|
exports.version = version;
|
|
11
11
|
var nextMajorVersion = function nextMajorVersion() {
|
|
12
12
|
return [Number(version.split('.')[0]) + 1, 0, 0].join('.');
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import { useEffect,
|
|
2
|
-
import { usePreviousState } from '@atlaskit/editor-common/hooks';
|
|
1
|
+
import { useEffect, useMemo, useRef } from 'react';
|
|
3
2
|
import { ProviderFactory } from '@atlaskit/editor-common/provider-factory';
|
|
4
3
|
import prepareExtensionProvider from '../../utils/prepare-extension-provider';
|
|
5
4
|
import prepareQuickInsertProvider from '../../utils/prepare-quick-insert-provider';
|
|
6
5
|
import getProvidersFromEditorProps from '../utils/getProvidersFromEditorProps';
|
|
7
6
|
import handleProviders from '../utils/handleProviders';
|
|
8
|
-
function
|
|
7
|
+
function prepareProviders(editorActions, quickInsert, extensionProviders, createAnalyticsEvent) {
|
|
9
8
|
const extensionProvider = prepareExtensionProvider(() => editorActions)(extensionProviders);
|
|
10
9
|
const quickInsertProvider = prepareQuickInsertProvider(editorActions, extensionProvider, quickInsert, createAnalyticsEvent);
|
|
11
10
|
return {
|
|
@@ -25,8 +24,6 @@ function createNewState(editorActions, quickInsert, extensionProviders, createAn
|
|
|
25
24
|
*/
|
|
26
25
|
export default function useProviderFactory(props, editorActions, createAnalyticsEvent) {
|
|
27
26
|
const {
|
|
28
|
-
extensionProviders,
|
|
29
|
-
quickInsert,
|
|
30
27
|
linking,
|
|
31
28
|
autoformattingProvider,
|
|
32
29
|
media,
|
|
@@ -40,63 +37,41 @@ export default function useProviderFactory(props, editorActions, createAnalytics
|
|
|
40
37
|
activityProvider,
|
|
41
38
|
collabEdit,
|
|
42
39
|
collabEditProvider,
|
|
43
|
-
presenceProvider
|
|
40
|
+
presenceProvider,
|
|
41
|
+
quickInsert,
|
|
42
|
+
extensionProviders
|
|
44
43
|
} = props;
|
|
44
|
+
|
|
45
|
+
// TODO: Remove these when we deprecate these props from editor-props - smartLinks is unfortunately still used in some places, we can sidestep this problem if we move everyone across to ComposableEditor and deprecate Editor
|
|
45
46
|
const UNSAFE_cards = props.UNSAFE_cards;
|
|
46
47
|
const smartLinks = props.smartLinks;
|
|
48
|
+
const providers = useMemo(() => getProvidersFromEditorProps({
|
|
49
|
+
linking,
|
|
50
|
+
smartLinks,
|
|
51
|
+
UNSAFE_cards,
|
|
52
|
+
autoformattingProvider,
|
|
53
|
+
media,
|
|
54
|
+
emojiProvider,
|
|
55
|
+
mentionProvider,
|
|
56
|
+
legacyImageUploadProvider,
|
|
57
|
+
taskDecisionProvider,
|
|
58
|
+
contextIdentifierProvider,
|
|
59
|
+
searchProvider,
|
|
60
|
+
macroProvider,
|
|
61
|
+
activityProvider,
|
|
62
|
+
collabEdit,
|
|
63
|
+
collabEditProvider,
|
|
64
|
+
presenceProvider
|
|
65
|
+
}), [linking, smartLinks, UNSAFE_cards, autoformattingProvider, media, emojiProvider, mentionProvider, legacyImageUploadProvider, taskDecisionProvider, contextIdentifierProvider, searchProvider, macroProvider, activityProvider, collabEdit, collabEditProvider, presenceProvider]);
|
|
47
66
|
const providerFactory = useRef(new ProviderFactory());
|
|
48
|
-
const
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
67
|
+
const preparedProviders = useMemo(() =>
|
|
68
|
+
// Though this will introduce some performance regression related to quick insert
|
|
69
|
+
// loading but we can remove it soon when Forge will move to new API.
|
|
70
|
+
// quickInsert={Promise.resolve(consumerQuickInsert)} is one of the main reason behind this performance issue.
|
|
71
|
+
prepareProviders(editorActions, quickInsert, extensionProviders, createAnalyticsEvent), [extensionProviders, quickInsert, editorActions, createAnalyticsEvent]);
|
|
53
72
|
useEffect(() => {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
// loading but we can remove it soon when Forge will move to new API.
|
|
57
|
-
// quickInsert={Promise.resolve(consumerQuickInsert)} is one of the main reason behind this performance issue.
|
|
58
|
-
quickInsert && quickInsert !== (prevProps === null || prevProps === void 0 ? void 0 : prevProps.quickInsert)) {
|
|
59
|
-
const newState = createNewState(editorActions, quickInsert, extensionProviders, createAnalyticsEvent);
|
|
60
|
-
setProviderState(newState);
|
|
61
|
-
handleProviders(providerFactory.current, getProvidersFromEditorProps({
|
|
62
|
-
linking,
|
|
63
|
-
smartLinks,
|
|
64
|
-
UNSAFE_cards,
|
|
65
|
-
autoformattingProvider,
|
|
66
|
-
media,
|
|
67
|
-
emojiProvider,
|
|
68
|
-
mentionProvider,
|
|
69
|
-
legacyImageUploadProvider,
|
|
70
|
-
taskDecisionProvider,
|
|
71
|
-
contextIdentifierProvider,
|
|
72
|
-
searchProvider,
|
|
73
|
-
macroProvider,
|
|
74
|
-
activityProvider,
|
|
75
|
-
collabEdit,
|
|
76
|
-
collabEditProvider,
|
|
77
|
-
presenceProvider
|
|
78
|
-
}), newState.extensionProvider, newState.quickInsertProvider);
|
|
79
|
-
return;
|
|
80
|
-
}
|
|
81
|
-
handleProviders(providerFactory.current, getProvidersFromEditorProps({
|
|
82
|
-
linking,
|
|
83
|
-
smartLinks,
|
|
84
|
-
UNSAFE_cards,
|
|
85
|
-
autoformattingProvider,
|
|
86
|
-
media,
|
|
87
|
-
emojiProvider,
|
|
88
|
-
mentionProvider,
|
|
89
|
-
legacyImageUploadProvider,
|
|
90
|
-
taskDecisionProvider,
|
|
91
|
-
contextIdentifierProvider,
|
|
92
|
-
searchProvider,
|
|
93
|
-
macroProvider,
|
|
94
|
-
activityProvider,
|
|
95
|
-
collabEdit,
|
|
96
|
-
collabEditProvider,
|
|
97
|
-
presenceProvider
|
|
98
|
-
}), providerState.extensionProvider, providerState.quickInsertProvider);
|
|
99
|
-
}, [linking, smartLinks, UNSAFE_cards, autoformattingProvider, media, emojiProvider, mentionProvider, legacyImageUploadProvider, taskDecisionProvider, contextIdentifierProvider, searchProvider, macroProvider, activityProvider, collabEdit, collabEditProvider, presenceProvider, prevProps === null || prevProps === void 0 ? void 0 : prevProps.quickInsert, prevProps === null || prevProps === void 0 ? void 0 : prevProps.extensionProviders, createAnalyticsEvent, editorActions, providerState.extensionProvider, providerState.quickInsertProvider, extensionProviders, quickInsert]);
|
|
73
|
+
handleProviders(providerFactory.current, providers, preparedProviders.extensionProvider, preparedProviders.quickInsertProvider);
|
|
74
|
+
}, [providers, preparedProviders]);
|
|
100
75
|
|
|
101
76
|
// componentWillUnmount equivalent
|
|
102
77
|
useEffect(() => {
|
|
@@ -23,7 +23,7 @@ export default function getProvidersFromEditorProps({
|
|
|
23
23
|
emojiProvider: emojiProvider,
|
|
24
24
|
mentionProvider: mentionProvider,
|
|
25
25
|
autoformattingProvider: autoformattingProvider,
|
|
26
|
-
cardProvider
|
|
26
|
+
cardProvider,
|
|
27
27
|
activityProvider: activityProvider,
|
|
28
28
|
imageUploadProvider: legacyImageUploadProvider,
|
|
29
29
|
taskDecisionProvider: taskDecisionProvider,
|
|
@@ -31,6 +31,6 @@ export default function getProvidersFromEditorProps({
|
|
|
31
31
|
searchProvider: searchProvider,
|
|
32
32
|
presenceProvider: presenceProvider,
|
|
33
33
|
macroProvider: macroProvider,
|
|
34
|
-
collabEditProvider: collabEdit && collabEdit.provider ? collabEdit.provider : collabEditProvider
|
|
34
|
+
collabEditProvider: collabEdit !== null && collabEdit !== void 0 && collabEdit.provider ? collabEdit.provider : collabEditProvider
|
|
35
35
|
};
|
|
36
36
|
}
|
|
@@ -159,6 +159,7 @@ export const TypeAheadListItem = ({
|
|
|
159
159
|
role: "option",
|
|
160
160
|
"aria-label": ariaLabel,
|
|
161
161
|
"aria-setsize": itemsLength,
|
|
162
|
+
"aria-posinset": itemIndex,
|
|
162
163
|
tabIndex: 0,
|
|
163
164
|
css: listItemClasses,
|
|
164
165
|
className: `ak-typeahead-item ${isSelected ? 'typeahead-selected-item' : ''}`
|
|
@@ -173,7 +174,7 @@ export const TypeAheadListItem = ({
|
|
|
173
174
|
,
|
|
174
175
|
onHover: noop
|
|
175
176
|
})));
|
|
176
|
-
}, [customRenderItem, isSelected, ariaLabel, itemsLength, customItemRef, insertSelectedItem]);
|
|
177
|
+
}, [customRenderItem, isSelected, ariaLabel, itemsLength, customItemRef, insertSelectedItem, itemIndex]);
|
|
177
178
|
if (customItem) {
|
|
178
179
|
return customItem;
|
|
179
180
|
}
|
|
@@ -187,6 +188,7 @@ export const TypeAheadListItem = ({
|
|
|
187
188
|
"aria-selected": isSelected,
|
|
188
189
|
"aria-label": title,
|
|
189
190
|
"aria-setsize": itemsLength,
|
|
191
|
+
"aria-posinset": itemIndex,
|
|
190
192
|
role: "option",
|
|
191
193
|
ref: buttonItemRef,
|
|
192
194
|
css: listItemClasses
|
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { useEffect, useRef, useState } from 'react';
|
|
3
|
-
import { usePreviousState } from '@atlaskit/editor-common/hooks';
|
|
1
|
+
import { useEffect, useMemo, useRef } from 'react';
|
|
4
2
|
import { ProviderFactory } from '@atlaskit/editor-common/provider-factory';
|
|
5
3
|
import prepareExtensionProvider from '../../utils/prepare-extension-provider';
|
|
6
4
|
import prepareQuickInsertProvider from '../../utils/prepare-quick-insert-provider';
|
|
7
5
|
import getProvidersFromEditorProps from '../utils/getProvidersFromEditorProps';
|
|
8
6
|
import handleProviders from '../utils/handleProviders';
|
|
9
|
-
function
|
|
7
|
+
function prepareProviders(editorActions, quickInsert, extensionProviders, createAnalyticsEvent) {
|
|
10
8
|
var extensionProvider = prepareExtensionProvider(function () {
|
|
11
9
|
return editorActions;
|
|
12
10
|
})(extensionProviders);
|
|
@@ -27,9 +25,7 @@ function createNewState(editorActions, quickInsert, extensionProviders, createAn
|
|
|
27
25
|
* @returns ProviderFactory for Editor
|
|
28
26
|
*/
|
|
29
27
|
export default function useProviderFactory(props, editorActions, createAnalyticsEvent) {
|
|
30
|
-
var
|
|
31
|
-
quickInsert = props.quickInsert,
|
|
32
|
-
linking = props.linking,
|
|
28
|
+
var linking = props.linking,
|
|
33
29
|
autoformattingProvider = props.autoformattingProvider,
|
|
34
30
|
media = props.media,
|
|
35
31
|
emojiProvider = props.emojiProvider,
|
|
@@ -42,47 +38,15 @@ export default function useProviderFactory(props, editorActions, createAnalytics
|
|
|
42
38
|
activityProvider = props.activityProvider,
|
|
43
39
|
collabEdit = props.collabEdit,
|
|
44
40
|
collabEditProvider = props.collabEditProvider,
|
|
45
|
-
presenceProvider = props.presenceProvider
|
|
41
|
+
presenceProvider = props.presenceProvider,
|
|
42
|
+
quickInsert = props.quickInsert,
|
|
43
|
+
extensionProviders = props.extensionProviders;
|
|
44
|
+
|
|
45
|
+
// TODO: Remove these when we deprecate these props from editor-props - smartLinks is unfortunately still used in some places, we can sidestep this problem if we move everyone across to ComposableEditor and deprecate Editor
|
|
46
46
|
var UNSAFE_cards = props.UNSAFE_cards;
|
|
47
47
|
var smartLinks = props.smartLinks;
|
|
48
|
-
var
|
|
49
|
-
|
|
50
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
51
|
-
providerState = _useState2[0],
|
|
52
|
-
setProviderState = _useState2[1];
|
|
53
|
-
var prevProps = usePreviousState({
|
|
54
|
-
extensionProviders: extensionProviders,
|
|
55
|
-
quickInsert: quickInsert
|
|
56
|
-
});
|
|
57
|
-
useEffect(function () {
|
|
58
|
-
if (extensionProviders && extensionProviders !== (prevProps === null || prevProps === void 0 ? void 0 : prevProps.extensionProviders) ||
|
|
59
|
-
// Though this will introduce some performance regression related to quick insert
|
|
60
|
-
// loading but we can remove it soon when Forge will move to new API.
|
|
61
|
-
// quickInsert={Promise.resolve(consumerQuickInsert)} is one of the main reason behind this performance issue.
|
|
62
|
-
quickInsert && quickInsert !== (prevProps === null || prevProps === void 0 ? void 0 : prevProps.quickInsert)) {
|
|
63
|
-
var newState = createNewState(editorActions, quickInsert, extensionProviders, createAnalyticsEvent);
|
|
64
|
-
setProviderState(newState);
|
|
65
|
-
handleProviders(providerFactory.current, getProvidersFromEditorProps({
|
|
66
|
-
linking: linking,
|
|
67
|
-
smartLinks: smartLinks,
|
|
68
|
-
UNSAFE_cards: UNSAFE_cards,
|
|
69
|
-
autoformattingProvider: autoformattingProvider,
|
|
70
|
-
media: media,
|
|
71
|
-
emojiProvider: emojiProvider,
|
|
72
|
-
mentionProvider: mentionProvider,
|
|
73
|
-
legacyImageUploadProvider: legacyImageUploadProvider,
|
|
74
|
-
taskDecisionProvider: taskDecisionProvider,
|
|
75
|
-
contextIdentifierProvider: contextIdentifierProvider,
|
|
76
|
-
searchProvider: searchProvider,
|
|
77
|
-
macroProvider: macroProvider,
|
|
78
|
-
activityProvider: activityProvider,
|
|
79
|
-
collabEdit: collabEdit,
|
|
80
|
-
collabEditProvider: collabEditProvider,
|
|
81
|
-
presenceProvider: presenceProvider
|
|
82
|
-
}), newState.extensionProvider, newState.quickInsertProvider);
|
|
83
|
-
return;
|
|
84
|
-
}
|
|
85
|
-
handleProviders(providerFactory.current, getProvidersFromEditorProps({
|
|
48
|
+
var providers = useMemo(function () {
|
|
49
|
+
return getProvidersFromEditorProps({
|
|
86
50
|
linking: linking,
|
|
87
51
|
smartLinks: smartLinks,
|
|
88
52
|
UNSAFE_cards: UNSAFE_cards,
|
|
@@ -99,8 +63,20 @@ export default function useProviderFactory(props, editorActions, createAnalytics
|
|
|
99
63
|
collabEdit: collabEdit,
|
|
100
64
|
collabEditProvider: collabEditProvider,
|
|
101
65
|
presenceProvider: presenceProvider
|
|
102
|
-
})
|
|
103
|
-
}, [linking, smartLinks, UNSAFE_cards, autoformattingProvider, media, emojiProvider, mentionProvider, legacyImageUploadProvider, taskDecisionProvider, contextIdentifierProvider, searchProvider, macroProvider, activityProvider, collabEdit, collabEditProvider, presenceProvider
|
|
66
|
+
});
|
|
67
|
+
}, [linking, smartLinks, UNSAFE_cards, autoformattingProvider, media, emojiProvider, mentionProvider, legacyImageUploadProvider, taskDecisionProvider, contextIdentifierProvider, searchProvider, macroProvider, activityProvider, collabEdit, collabEditProvider, presenceProvider]);
|
|
68
|
+
var providerFactory = useRef(new ProviderFactory());
|
|
69
|
+
var preparedProviders = useMemo(function () {
|
|
70
|
+
return (
|
|
71
|
+
// Though this will introduce some performance regression related to quick insert
|
|
72
|
+
// loading but we can remove it soon when Forge will move to new API.
|
|
73
|
+
// quickInsert={Promise.resolve(consumerQuickInsert)} is one of the main reason behind this performance issue.
|
|
74
|
+
prepareProviders(editorActions, quickInsert, extensionProviders, createAnalyticsEvent)
|
|
75
|
+
);
|
|
76
|
+
}, [extensionProviders, quickInsert, editorActions, createAnalyticsEvent]);
|
|
77
|
+
useEffect(function () {
|
|
78
|
+
handleProviders(providerFactory.current, providers, preparedProviders.extensionProvider, preparedProviders.quickInsertProvider);
|
|
79
|
+
}, [providers, preparedProviders]);
|
|
104
80
|
|
|
105
81
|
// componentWillUnmount equivalent
|
|
106
82
|
useEffect(function () {
|
|
@@ -30,6 +30,6 @@ export default function getProvidersFromEditorProps(_ref) {
|
|
|
30
30
|
searchProvider: searchProvider,
|
|
31
31
|
presenceProvider: presenceProvider,
|
|
32
32
|
macroProvider: macroProvider,
|
|
33
|
-
collabEditProvider: collabEdit && collabEdit.provider ? collabEdit.provider : collabEditProvider
|
|
33
|
+
collabEditProvider: collabEdit !== null && collabEdit !== void 0 && collabEdit.provider ? collabEdit.provider : collabEditProvider
|
|
34
34
|
};
|
|
35
35
|
}
|
|
@@ -114,6 +114,7 @@ export var TypeAheadListItem = function TypeAheadListItem(_ref3) {
|
|
|
114
114
|
role: "option",
|
|
115
115
|
"aria-label": ariaLabel,
|
|
116
116
|
"aria-setsize": itemsLength,
|
|
117
|
+
"aria-posinset": itemIndex,
|
|
117
118
|
tabIndex: 0,
|
|
118
119
|
css: listItemClasses,
|
|
119
120
|
className: "ak-typeahead-item ".concat(isSelected ? 'typeahead-selected-item' : '')
|
|
@@ -128,7 +129,7 @@ export var TypeAheadListItem = function TypeAheadListItem(_ref3) {
|
|
|
128
129
|
,
|
|
129
130
|
onHover: noop
|
|
130
131
|
})));
|
|
131
|
-
}, [customRenderItem, isSelected, ariaLabel, itemsLength, customItemRef, insertSelectedItem]);
|
|
132
|
+
}, [customRenderItem, isSelected, ariaLabel, itemsLength, customItemRef, insertSelectedItem, itemIndex]);
|
|
132
133
|
if (customItem) {
|
|
133
134
|
return customItem;
|
|
134
135
|
}
|
|
@@ -142,6 +143,7 @@ export var TypeAheadListItem = function TypeAheadListItem(_ref3) {
|
|
|
142
143
|
"aria-selected": isSelected,
|
|
143
144
|
"aria-label": title,
|
|
144
145
|
"aria-setsize": itemsLength,
|
|
146
|
+
"aria-posinset": itemIndex,
|
|
145
147
|
role: "option",
|
|
146
148
|
ref: buttonItemRef,
|
|
147
149
|
css: listItemClasses
|
|
@@ -1,13 +1,7 @@
|
|
|
1
1
|
import type { CreateUIAnalyticsEvent } from '@atlaskit/analytics-next';
|
|
2
|
-
import type { ExtensionProvider } from '@atlaskit/editor-common/extensions';
|
|
3
2
|
import { ProviderFactory } from '@atlaskit/editor-common/provider-factory';
|
|
4
3
|
import type EditorActions from '../../actions';
|
|
5
|
-
import type { QuickInsertProvider } from '@atlaskit/editor-common/provider-factory';
|
|
6
4
|
import type { EditorNextProps } from '../../types/editor-props';
|
|
7
|
-
export type ProviderFactoryState = {
|
|
8
|
-
extensionProvider?: ExtensionProvider;
|
|
9
|
-
quickInsertProvider?: Promise<QuickInsertProvider>;
|
|
10
|
-
};
|
|
11
5
|
/**
|
|
12
6
|
*
|
|
13
7
|
* This hook is used to create the provider factory object.
|
|
@@ -252,9 +252,9 @@ export interface EditorPluginFeatureProps {
|
|
|
252
252
|
allowTextColor?: boolean | TextColorPluginConfig;
|
|
253
253
|
allowTables?: boolean | TablesPluginConfig;
|
|
254
254
|
insertMenuItems?: MenuItem[];
|
|
255
|
-
/** @deprecated Use smartLinks instead. */
|
|
255
|
+
/** @deprecated Use linking.smartLinks prop instead. */
|
|
256
256
|
UNSAFE_cards?: CardOptions;
|
|
257
|
-
/** @deprecated Use linking instead. */
|
|
257
|
+
/** @deprecated Use linking.smartLinks prop instead. */
|
|
258
258
|
smartLinks?: CardOptions;
|
|
259
259
|
allowAnalyticsGASV3?: boolean;
|
|
260
260
|
codeBlock?: CodeBlockOptions;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ExtensionProvider } from '@atlaskit/editor-common/extensions';
|
|
2
|
-
import EditorActions from '../actions';
|
|
3
|
-
import { ExtensionProvidersProp } from '../types/editor-props';
|
|
2
|
+
import type EditorActions from '../actions';
|
|
3
|
+
import type { ExtensionProvidersProp } from '../types/editor-props';
|
|
4
4
|
declare const prepareExtensionProvider: (getEditorActions: () => EditorActions) => (extensionProviders?: ExtensionProvidersProp) => ExtensionProvider | undefined;
|
|
5
5
|
export default prepareExtensionProvider;
|
|
@@ -1,13 +1,7 @@
|
|
|
1
1
|
import type { CreateUIAnalyticsEvent } from '@atlaskit/analytics-next';
|
|
2
|
-
import type { ExtensionProvider } from '@atlaskit/editor-common/extensions';
|
|
3
2
|
import { ProviderFactory } from '@atlaskit/editor-common/provider-factory';
|
|
4
3
|
import type EditorActions from '../../actions';
|
|
5
|
-
import type { QuickInsertProvider } from '@atlaskit/editor-common/provider-factory';
|
|
6
4
|
import type { EditorNextProps } from '../../types/editor-props';
|
|
7
|
-
export type ProviderFactoryState = {
|
|
8
|
-
extensionProvider?: ExtensionProvider;
|
|
9
|
-
quickInsertProvider?: Promise<QuickInsertProvider>;
|
|
10
|
-
};
|
|
11
5
|
/**
|
|
12
6
|
*
|
|
13
7
|
* This hook is used to create the provider factory object.
|
|
@@ -252,9 +252,9 @@ export interface EditorPluginFeatureProps {
|
|
|
252
252
|
allowTextColor?: boolean | TextColorPluginConfig;
|
|
253
253
|
allowTables?: boolean | TablesPluginConfig;
|
|
254
254
|
insertMenuItems?: MenuItem[];
|
|
255
|
-
/** @deprecated Use smartLinks instead. */
|
|
255
|
+
/** @deprecated Use linking.smartLinks prop instead. */
|
|
256
256
|
UNSAFE_cards?: CardOptions;
|
|
257
|
-
/** @deprecated Use linking instead. */
|
|
257
|
+
/** @deprecated Use linking.smartLinks prop instead. */
|
|
258
258
|
smartLinks?: CardOptions;
|
|
259
259
|
allowAnalyticsGASV3?: boolean;
|
|
260
260
|
codeBlock?: CodeBlockOptions;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ExtensionProvider } from '@atlaskit/editor-common/extensions';
|
|
2
|
-
import EditorActions from '../actions';
|
|
3
|
-
import { ExtensionProvidersProp } from '../types/editor-props';
|
|
2
|
+
import type EditorActions from '../actions';
|
|
3
|
+
import type { ExtensionProvidersProp } from '../types/editor-props';
|
|
4
4
|
declare const prepareExtensionProvider: (getEditorActions: () => EditorActions) => (extensionProviders?: ExtensionProvidersProp) => ExtensionProvider | undefined;
|
|
5
5
|
export default prepareExtensionProvider;
|