@atlaskit/editor-core 188.0.2 → 188.0.5

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,18 @@
1
1
  # @atlaskit/editor-core
2
2
 
3
+ ## 188.0.5
4
+
5
+ ### Patch Changes
6
+
7
+ - [#40878](https://bitbucket.org/atlassian/atlassian-frontend/pull-requests/40878) [`15c7575b19c`](https://bitbucket.org/atlassian/atlassian-frontend/commits/15c7575b19c) - Fixing comments for editor-common, editor-core
8
+
9
+ ## 188.0.4
10
+
11
+ ### Patch Changes
12
+
13
+ - [#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
14
+ - [#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
15
+
3
16
  ## 188.0.2
4
17
 
5
18
  ### 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 createNewState(editorActions, quickInsert, extensionProviders, createAnalyticsEvent) {
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 extensionProviders = props.extensionProviders,
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 providerFactory = (0, _react.useRef)(new _providerFactory.ProviderFactory());
56
- var _useState = (0, _react.useState)(createNewState(editorActions, quickInsert, extensionProviders, createAnalyticsEvent)),
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
- }), providerState.extensionProvider, providerState.quickInsertProvider);
110
- }, [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
+ });
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
  }
@@ -21,7 +21,7 @@ function getScrollGutterOptions(props) {
21
21
  var appearance = props.appearance,
22
22
  persistScrollGutter = props.persistScrollGutter;
23
23
  if ((0, _isFullPage.isFullPage)(appearance)) {
24
- // Full Page appearance uses a scrollable div wrapper
24
+ // Full Page appearance uses a scrollable div wrapper.
25
25
  return {
26
26
  getScrollElement: function getScrollElement() {
27
27
  return document.querySelector('.fabric-editor-popup-scroll-parent');
@@ -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.2";
9
+ var version = "188.0.5";
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, useRef, useState } from 'react';
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 createNewState(editorActions, quickInsert, extensionProviders, createAnalyticsEvent) {
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 [providerState, setProviderState] = useState(createNewState(editorActions, quickInsert, extensionProviders, createAnalyticsEvent));
49
- const prevProps = usePreviousState({
50
- extensionProviders,
51
- quickInsert
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
- if (extensionProviders && extensionProviders !== (prevProps === null || prevProps === void 0 ? void 0 : prevProps.extensionProviders) ||
55
- // Though this will introduce some performance regression related to quick insert
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: 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
  }
@@ -11,7 +11,7 @@ export function getScrollGutterOptions(props) {
11
11
  persistScrollGutter
12
12
  } = props;
13
13
  if (fullPageCheck(appearance)) {
14
- // Full Page appearance uses a scrollable div wrapper
14
+ // Full Page appearance uses a scrollable div wrapper.
15
15
  return {
16
16
  getScrollElement: () => document.querySelector('.fabric-editor-popup-scroll-parent')
17
17
  };
@@ -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,5 +1,5 @@
1
1
  export const name = "@atlaskit/editor-core";
2
- export const version = "188.0.2";
2
+ export const version = "188.0.5";
3
3
  export const nextMajorVersion = () => {
4
4
  return [Number(version.split('.')[0]) + 1, 0, 0].join('.');
5
5
  };
@@ -1,12 +1,10 @@
1
- import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
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 createNewState(editorActions, quickInsert, extensionProviders, createAnalyticsEvent) {
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 extensionProviders = props.extensionProviders,
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 providerFactory = useRef(new ProviderFactory());
49
- var _useState = useState(createNewState(editorActions, quickInsert, extensionProviders, createAnalyticsEvent)),
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
- }), providerState.extensionProvider, providerState.quickInsertProvider);
103
- }, [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]);
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
  }
@@ -12,7 +12,7 @@ export function getScrollGutterOptions(props) {
12
12
  var appearance = props.appearance,
13
13
  persistScrollGutter = props.persistScrollGutter;
14
14
  if (fullPageCheck(appearance)) {
15
- // Full Page appearance uses a scrollable div wrapper
15
+ // Full Page appearance uses a scrollable div wrapper.
16
16
  return {
17
17
  getScrollElement: function getScrollElement() {
18
18
  return document.querySelector('.fabric-editor-popup-scroll-parent');
@@ -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,5 +1,5 @@
1
1
  export var name = "@atlaskit/editor-core";
2
- export var version = "188.0.2";
2
+ export var version = "188.0.5";
3
3
  export var nextMajorVersion = function nextMajorVersion() {
4
4
  return [Number(version.split('.')[0]) + 1, 0, 0].join('.');
5
5
  };
@@ -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;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-core",
3
- "version": "188.0.2",
3
+ "version": "188.0.5",
4
4
  "description": "A package contains Atlassian editor core functionality",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -154,7 +154,7 @@
154
154
  "@af/integration-testing": "*",
155
155
  "@af/visual-regression": "*",
156
156
  "@atlaskit/code": "^14.6.0",
157
- "@atlaskit/collab-provider": "9.12.5",
157
+ "@atlaskit/collab-provider": "9.13.0",
158
158
  "@atlaskit/dropdown-menu": "^11.14.0",
159
159
  "@atlaskit/editor-extension-dropbox": "^0.4.0",
160
160
  "@atlaskit/editor-plugin-table": "^4.0.0",