@atlaskit/editor-plugin-insert-block 30.0.5 → 31.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/cjs/ui/ToolbarInsertBlock/block-insert-element-browser.js +2 -2
  3. package/dist/cjs/ui/registered-insert-menu/RegisteredInsertButton.js +2 -2
  4. package/dist/cjs/ui/registered-insert-menu/RegisteredInsertMenu.compiled.css +1 -0
  5. package/dist/cjs/ui/registered-insert-menu/RegisteredInsertMenu.js +113 -238
  6. package/dist/cjs/ui/registered-insert-menu/RegisteredInsertMenuContent.js +1 -4
  7. package/dist/es2019/ui/ToolbarInsertBlock/block-insert-element-browser.js +1 -1
  8. package/dist/es2019/ui/registered-insert-menu/RegisteredInsertButton.js +1 -1
  9. package/dist/es2019/ui/registered-insert-menu/RegisteredInsertMenu.compiled.css +1 -0
  10. package/dist/es2019/ui/registered-insert-menu/RegisteredInsertMenu.js +97 -204
  11. package/dist/es2019/ui/registered-insert-menu/RegisteredInsertMenuContent.js +1 -4
  12. package/dist/esm/ui/ToolbarInsertBlock/block-insert-element-browser.js +1 -1
  13. package/dist/esm/ui/registered-insert-menu/RegisteredInsertButton.js +1 -1
  14. package/dist/esm/ui/registered-insert-menu/RegisteredInsertMenu.compiled.css +1 -0
  15. package/dist/esm/ui/registered-insert-menu/RegisteredInsertMenu.js +115 -240
  16. package/dist/esm/ui/registered-insert-menu/RegisteredInsertMenuContent.js +1 -4
  17. package/dist/types/ui/registered-insert-menu/RegisteredInsertMenu.d.ts +5 -7
  18. package/package.json +31 -31
  19. package/dist/cjs/ui/registered-insert-menu/RegisteredInsertMenuItem.js +0 -64
  20. package/dist/cjs/ui/registered-insert-menu/RegisteredInsertMenuList.compiled.css +0 -11
  21. package/dist/cjs/ui/registered-insert-menu/RegisteredInsertMenuList.js +0 -324
  22. package/dist/es2019/ui/registered-insert-menu/RegisteredInsertMenuItem.js +0 -54
  23. package/dist/es2019/ui/registered-insert-menu/RegisteredInsertMenuList.compiled.css +0 -11
  24. package/dist/es2019/ui/registered-insert-menu/RegisteredInsertMenuList.js +0 -273
  25. package/dist/esm/ui/registered-insert-menu/RegisteredInsertMenuItem.js +0 -56
  26. package/dist/esm/ui/registered-insert-menu/RegisteredInsertMenuList.compiled.css +0 -11
  27. package/dist/esm/ui/registered-insert-menu/RegisteredInsertMenuList.js +0 -317
  28. package/dist/types/ui/registered-insert-menu/RegisteredInsertMenuItem.d.ts +0 -16
  29. package/dist/types/ui/registered-insert-menu/RegisteredInsertMenuList.d.ts +0 -31
package/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # @atlaskit/editor-plugin-insert-block
2
2
 
3
+ ## 31.0.0
4
+
5
+ ### Patch Changes
6
+
7
+ - [`7e91f3141329d`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/7e91f3141329d) -
8
+ Decouple Quick Insert menu rendering and interaction from typeahead under the existing
9
+ `platform_editor_slash_command` experiment.
10
+ - Updated dependencies
11
+
3
12
  ## 30.0.5
4
13
 
5
14
  ### Patch Changes
@@ -8,7 +8,7 @@ Object.defineProperty(exports, "__esModule", {
8
8
  exports.BlockInsertElementBrowser = void 0;
9
9
  var _react = _interopRequireWildcard(require("react"));
10
10
  var _Popup = _interopRequireDefault(require("@atlaskit/editor-common/Popup"));
11
- var _useMenuPopupSizing = require("@atlaskit/editor-common/quick-insert/use-menu-popup-sizing");
11
+ var _popupSizing = require("@atlaskit/editor-common/registered-menu/popup-sizing");
12
12
  var _isExperimentEnabled = require("@atlaskit/platform-feature-experiments/is-experiment-enabled");
13
13
  var _InsertMenu = _interopRequireWildcard(require("../ElementBrowser/InsertMenu"));
14
14
  var _RegisteredInsertMenuContent = require("../registered-insert-menu/RegisteredInsertMenuContent");
@@ -22,7 +22,7 @@ var BlockInsertElementBrowser = exports.BlockInsertElementBrowser = function Blo
22
22
  var togglePlusMenuVisibility = props.togglePlusMenuVisibility,
23
23
  plusButtonRef = props.plusButtonRef;
24
24
  var isRegisteredMenu = (0, _isExperimentEnabled.isExperimentEnabled)('platform_editor_slash_command');
25
- var menuHeight = (0, _useMenuPopupSizing.useMenuPopupSizing)({
25
+ var menuHeight = (0, _popupSizing.useMenuPopupSizing)({
26
26
  target: plusButtonRef,
27
27
  boundariesElement: props.popupsBoundariesElement,
28
28
  scrollableElement: props.popupsScrollableElement,
@@ -13,7 +13,7 @@ var _isOfflineMode = require("@atlaskit/editor-common/connectivity/isOfflineMode
13
13
  var _keymaps = require("@atlaskit/editor-common/keymaps");
14
14
  var _insertBlock = require("@atlaskit/editor-common/messages/insert-block");
15
15
  var _Popup = _interopRequireDefault(require("@atlaskit/editor-common/Popup"));
16
- var _useMenuPopupSizing = require("@atlaskit/editor-common/quick-insert/use-menu-popup-sizing");
16
+ var _popupSizing = require("@atlaskit/editor-common/registered-menu/popup-sizing");
17
17
  var _context = require("@atlaskit/editor-common/toolbar/context");
18
18
  var _keys = require("@atlaskit/editor-common/toolbar/keys");
19
19
  var _useSharedPluginStateWithSelector = require("@atlaskit/editor-common/useSharedPluginStateWithSelector");
@@ -48,7 +48,7 @@ var RegisteredInsertButton = exports.RegisteredInsertButton = function Registere
48
48
  isOpen = _useState2[0],
49
49
  setIsOpen = _useState2[1];
50
50
  var buttonRef = (0, _react.useRef)(null);
51
- var menuHeight = (0, _useMenuPopupSizing.useMenuPopupSizing)({
51
+ var menuHeight = (0, _popupSizing.useMenuPopupSizing)({
52
52
  target: buttonRef.current,
53
53
  boundariesElement: popupsBoundariesElement,
54
54
  scrollableElement: popupsScrollableElement,
@@ -3,6 +3,7 @@
3
3
  ._18m915vq{overflow-y:hidden}
4
4
  ._1bsb1edt{width:350px}
5
5
  ._1e0c1txw{display:flex}
6
+ ._1e0cglyw{display:none}
6
7
  ._1o9zidpf{flex-shrink:0}
7
8
  ._1q51utpp{padding-block-start:var(--ds-space-150,9pt)}
8
9
  ._1reo15vq{overflow-x:hidden}
@@ -9,285 +9,160 @@ Object.defineProperty(exports, "__esModule", {
9
9
  exports.RegisteredInsertMenu = void 0;
10
10
  require("./RegisteredInsertMenu.compiled.css");
11
11
  var _runtime = require("@compiled/react/runtime");
12
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
13
12
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
14
13
  var _react = _interopRequireWildcard(require("react"));
15
14
  var _reactIntl = require("react-intl");
16
- var _browserApis = require("@atlaskit/browser-apis");
15
+ var _insert = require("@atlaskit/editor-common/insert");
17
16
  var _insertBlock = require("@atlaskit/editor-common/messages/insert-block");
18
17
  var _keys = require("@atlaskit/editor-common/quick-insert/keys");
19
- var _registeredMenuModel = require("@atlaskit/editor-common/quick-insert/registered-menu-model");
20
- var _useSearchAnalytics = require("@atlaskit/editor-common/quick-insert/use-search-analytics");
21
- var _typeAheadIsSectionOverflowItemKey = require("@atlaskit/editor-common/type-ahead-is-section-overflow-item-key");
22
- var _typeAheadSurfaceContext = require("@atlaskit/editor-common/type-ahead-surface-context");
23
- var _createSurfaceContext = require("@atlaskit/editor-ui-control-model/create-surface-context");
18
+ var _context = require("@atlaskit/editor-common/registered-menu/context");
19
+ var _surfaceContext = require("@atlaskit/editor-common/registered-menu/surface-context");
20
+ var _messages = require("@atlaskit/editor-common/type-ahead/messages");
24
21
  var _box = require("@atlaskit/primitives/compiled/box");
25
22
  var _textField = _interopRequireDefault(require("@atlaskit/textfield/text-field"));
26
- var _RegisteredInsertMenuList = require("./RegisteredInsertMenuList");
27
23
  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); }
28
24
  var DEFAULT_MENU_MAX_HEIGHT = 520;
25
+ var SEARCH_HEIGHT = 64;
29
26
  var styles = {
30
27
  menu: "_2rko1mok _1reo15vq _18m915vq _bfhk1bhr _16qs130s _1e0c1txw _2lx21bp4 _1bsb1edt",
28
+ hidden: "_1e0cglyw",
31
29
  search: "_18zrutpp _1o9zidpf _1q51utpp _85i5u2gc"
32
30
  };
33
- var RegisteredInsertMenu = exports.RegisteredInsertMenu = function RegisteredInsertMenu(_ref) {
34
- var components = _ref.components,
35
- emptyStateHandler = _ref.emptyStateHandler,
36
- fireAnalyticsEvent = _ref.fireAnalyticsEvent,
37
- getItemRank = _ref.getItemRank,
38
- editorView = _ref.editorView,
39
- isOffline = _ref.isOffline,
40
- _ref$maxHeight = _ref.maxHeight,
41
- maxHeight = _ref$maxHeight === void 0 ? DEFAULT_MENU_MAX_HEIGHT : _ref$maxHeight,
42
- onClose = _ref.onClose,
43
- onSelect = _ref.onSelect;
44
- var menuStyle = {
45
- maxHeight: maxHeight
46
- };
31
+ var RegisteredInsertMenu = exports.RegisteredInsertMenu = function RegisteredInsertMenu(props) {
32
+ var _props$maxHeight, _interaction$expanded;
33
+ var components = props.components,
34
+ editorView = props.editorView,
35
+ isOffline = props.isOffline,
36
+ onSelect = props.onSelect;
47
37
  var _useIntl = (0, _reactIntl.useIntl)(),
48
38
  formatMessage = _useIntl.formatMessage;
49
- var listId = (0, _react.useId)();
50
- var _useState = (0, _react.useState)(function () {
39
+ var _useState = (0, _react.useState)(),
40
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
41
+ interaction = _useState2[0],
42
+ setInteraction = _useState2[1];
43
+ var registerInteraction = (0, _react.useCallback)(function (next) {
44
+ setInteraction(next);
45
+ return function () {
46
+ return setInteraction(function (current) {
47
+ return current === next ? undefined : current;
48
+ });
49
+ };
50
+ }, []);
51
+ var searchRef = (0, _react.useRef)(null);
52
+ var hasInteraction = Boolean(interaction);
53
+ (0, _react.useLayoutEffect)(function () {
54
+ if (hasInteraction) {
55
+ var _searchRef$current;
56
+ (_searchRef$current = searchRef.current) === null || _searchRef$current === void 0 || _searchRef$current.focus({
57
+ preventScroll: true
58
+ });
59
+ }
60
+ }, [hasInteraction]);
61
+ var maxHeight = (_props$maxHeight = props.maxHeight) !== null && _props$maxHeight !== void 0 ? _props$maxHeight : DEFAULT_MENU_MAX_HEIGHT;
62
+ var menuStyle = (0, _react.useMemo)(function () {
63
+ return {
64
+ maxHeight: maxHeight
65
+ };
66
+ }, [maxHeight]);
67
+ var _useState3 = (0, _react.useState)(function () {
51
68
  return Symbol('registered-insert-menu-open');
52
69
  }),
53
- _useState2 = (0, _slicedToArray2.default)(_useState, 1),
54
- menuOpenId = _useState2[0];
55
- var _useState3 = (0, _react.useState)(''),
56
- _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
57
- query = _useState4[0],
58
- setQuery = _useState4[1];
59
- var _useState5 = (0, _react.useState)(0),
70
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 1),
71
+ menuOpenId = _useState4[0];
72
+ var _useState5 = (0, _react.useState)(''),
60
73
  _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
61
- selectedItemIndex = _useState6[0],
62
- setSelectedItemIndex = _useState6[1];
63
- var selectedItemIndexRef = (0, _react.useRef)(selectedItemIndex);
64
- var _useState7 = (0, _react.useState)({
65
- startIndex: -1,
66
- stopIndex: -1
67
- }),
68
- _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
69
- renderedItems = _useState8[0],
70
- setRenderedItems = _useState8[1];
71
- var searchRef = (0, _react.useRef)(null);
72
- (0, _react.useLayoutEffect)(function () {
73
- var _searchRef$current;
74
- // Popup positions on the next frame; focusing must not scroll to its initial location.
75
- (_searchRef$current = searchRef.current) === null || _searchRef$current === void 0 || _searchRef$current.focus({
76
- preventScroll: true
77
- });
78
- }, []);
74
+ query = _useState6[0],
75
+ setQuery = _useState6[1];
79
76
  var surfaceContext = (0, _react.useMemo)(function () {
80
- return (0, _createSurfaceContext.createSurfaceContext)(_typeAheadSurfaceContext.TYPE_AHEAD_SURFACE_CONTEXT, {
81
- menuOpenId: menuOpenId
77
+ return (0, _surfaceContext.createRegisteredMenuSurfaceContext)({
78
+ menuOpenId: menuOpenId,
79
+ surface: 'toolbar'
82
80
  });
83
81
  }, [menuOpenId]);
84
- var hasSectionOverflowItems = (0, _react.useMemo)(function () {
85
- return components.some(function (_ref2) {
86
- var key = _ref2.key;
87
- return (0, _typeAheadIsSectionOverflowItemKey.isSectionOverflowItemKey)(key);
88
- });
82
+ var Root = (0, _react.useMemo)(function () {
83
+ var _components$find;
84
+ return (_components$find = components.find(function (_ref) {
85
+ var key = _ref.key,
86
+ type = _ref.type,
87
+ parents = _ref.parents;
88
+ return key === _keys.MENU.key && type === _keys.MENU.type && !(parents !== null && parents !== void 0 && parents.length);
89
+ })) === null || _components$find === void 0 ? void 0 : _components$find.component;
89
90
  }, [components]);
90
- var model = (0, _react.useMemo)(function () {
91
- return (0, _registeredMenuModel.getQuickInsertMenuModel)({
92
- components: components,
93
- formatMessage: formatMessage,
94
- getItemRank: getItemRank,
95
- query: query,
96
- rootComponent: _keys.MENU,
97
- selectCategoryItems: hasSectionOverflowItems ? _registeredMenuModel.selectQuickInsertCategoryItems : undefined,
98
- surfaceContext: surfaceContext
99
- });
100
- }, [components, formatMessage, getItemRank, hasSectionOverflowItems, query, surfaceContext]);
101
- var _useState9 = (0, _react.useState)(),
102
- _useState0 = (0, _slicedToArray2.default)(_useState9, 2),
103
- previewActivation = _useState0[0],
104
- setPreviewActivation = _useState0[1];
105
- var activePreviewItemKey = (previewActivation === null || previewActivation === void 0 ? void 0 : previewActivation.model) === model ? previewActivation.itemKey : undefined;
106
- var searchResultCount = (0, _react.useMemo)(function () {
107
- return model.sections.reduce(function (count, section) {
108
- return count + section.filter(function (_ref3) {
109
- var key = _ref3.key,
110
- type = _ref3.type;
111
- return type === 'menu-item' && !(0, _typeAheadIsSectionOverflowItemKey.isSectionOverflowItemKey)(key);
112
- }).length;
113
- }, 0);
114
- }, [model.sections]);
115
- var flushSearchAnalytics = (0, _useSearchAnalytics.useQuickInsertSearchAnalytics)({
116
- fireAnalyticsEvent: fireAnalyticsEvent,
117
- query: query,
118
- resultCount: searchResultCount,
119
- surface: 'toolbar'
120
- });
121
- var closeWithAnalytics = (0, _react.useCallback)(function () {
122
- flushSearchAnalytics();
123
- onClose();
124
- }, [flushSearchAnalytics, onClose]);
125
- var selectWithAnalytics = (0, _react.useCallback)(function () {
126
- flushSearchAnalytics();
91
+ // Interaction updates should not recreate the registered component's own props.
92
+ var menu = (0, _react.useMemo)(function () {
93
+ return Root && /*#__PURE__*/_react.default.createElement(Root, null, null);
94
+ }, [Root]);
95
+ var select = (0, _react.useCallback)(function (selection) {
127
96
  onSelect();
128
- }, [flushSearchAnalytics, onSelect]);
129
- var selectableItems = (0, _react.useMemo)(function () {
130
- return (0, _registeredMenuModel.getQuickInsertMenuRows)(model).filter(function (row) {
131
- return row.type === 'menu-item';
132
- });
133
- }, [model]);
134
- var itemCount = selectableItems.length + (model.footer ? 1 : 0);
135
- var selectableItemKeys = (0, _react.useMemo)(function () {
136
- return [].concat((0, _toConsumableArray2.default)(selectableItems), (0, _toConsumableArray2.default)(model.footer ? [model.footer] : [])).map(function (_ref4) {
137
- var key = _ref4.key;
138
- return key;
139
- }).join(',');
140
- }, [model.footer, selectableItems]);
141
- (0, _react.useLayoutEffect)(function () {
142
- var initialItemIndex = itemCount > 0 ? 0 : -1;
143
- selectedItemIndexRef.current = initialItemIndex;
144
- setSelectedItemIndex(initialItemIndex);
145
- }, [itemCount, query, selectableItemKeys]);
146
- (0, _react.useLayoutEffect)(function () {
147
- setPreviewActivation(undefined);
148
- }, [model, query]);
149
- var isActiveItemMounted = selectedItemIndex >= 0 && selectedItemIndex < itemCount && (selectedItemIndex >= renderedItems.startIndex && selectedItemIndex <= renderedItems.stopIndex || Boolean(model.footer) && selectedItemIndex === itemCount - 1);
150
- var activeItemId = "".concat(listId, "-").concat(selectedItemIndex);
151
- var setKeyboardPreview = (0, _react.useCallback)(function (itemIndex) {
152
- var item = selectableItems[itemIndex];
153
- setPreviewActivation(item ? {
154
- itemKey: item.key,
155
- model: model,
156
- source: 'keyboard'
157
- } : undefined);
158
- }, [model, selectableItems]);
159
- var selectNextItem = (0, _react.useCallback)(function () {
160
- var currentIndex = selectedItemIndexRef.current;
161
- var nextIndex = itemCount === 0 ? -1 : currentIndex < 0 ? 0 : (currentIndex + 1) % itemCount;
162
- selectedItemIndexRef.current = nextIndex;
163
- setSelectedItemIndex(nextIndex);
164
- setKeyboardPreview(nextIndex);
165
- }, [itemCount, setKeyboardPreview]);
166
- var selectPreviousItem = (0, _react.useCallback)(function () {
167
- var currentIndex = selectedItemIndexRef.current;
168
- var previousIndex = itemCount === 0 ? -1 : currentIndex <= 0 ? itemCount - 1 : currentIndex - 1;
169
- selectedItemIndexRef.current = previousIndex;
170
- setSelectedItemIndex(previousIndex);
171
- setKeyboardPreview(previousIndex);
172
- }, [itemCount, setKeyboardPreview]);
173
- var onItemHover = (0, _react.useCallback)(function (itemIndex, itemKey) {
174
- selectedItemIndexRef.current = itemIndex;
175
- setSelectedItemIndex(itemIndex);
176
- setPreviewActivation(function (current) {
177
- if ((current === null || current === void 0 ? void 0 : current.itemKey) === itemKey && (current === null || current === void 0 ? void 0 : current.model) === model && (current === null || current === void 0 ? void 0 : current.source) === 'pointer') {
178
- return current;
179
- }
180
- return itemKey ? {
181
- itemKey: itemKey,
182
- model: model,
183
- source: 'pointer'
184
- } : undefined;
185
- });
186
- }, [model]);
187
- var onItemFocus = (0, _react.useCallback)(function (itemIndex, itemKey) {
188
- selectedItemIndexRef.current = itemIndex;
189
- setSelectedItemIndex(itemIndex);
190
- setPreviewActivation(function (current) {
191
- if ((current === null || current === void 0 ? void 0 : current.itemKey) === itemKey && (current === null || current === void 0 ? void 0 : current.model) === model) {
192
- return current;
97
+ queueMicrotask(function () {
98
+ var state = editorView.state;
99
+ var insert = function insert(content) {
100
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
101
+ return (0, _insert.insertSelectedItem)(content, options)(state, state.tr, state.selection.head);
102
+ };
103
+ var transaction = selection(insert);
104
+ if (transaction) {
105
+ editorView.dispatch(transaction);
193
106
  }
194
- return itemKey ? {
195
- itemKey: itemKey,
196
- model: model,
197
- source: 'keyboard'
198
- } : undefined;
199
- });
200
- }, [model]);
201
- var onItemLeave = (0, _react.useCallback)(function (itemKey) {
202
- setPreviewActivation(function (current) {
203
- return (current === null || current === void 0 ? void 0 : current.source) === 'pointer' && current.itemKey === itemKey ? undefined : current;
204
- });
205
- }, []);
206
- var onItemBlur = (0, _react.useCallback)(function (itemKey) {
207
- setPreviewActivation(function (current) {
208
- return (current === null || current === void 0 ? void 0 : current.itemKey) === itemKey ? undefined : current;
209
107
  });
210
- }, []);
211
- var onItemVisibilityChange = (0, _react.useCallback)(function (itemKey, isVisible) {
212
- if (!isVisible) {
213
- setPreviewActivation(function (current) {
214
- return (current === null || current === void 0 ? void 0 : current.source) === 'pointer' && current.itemKey === itemKey ? undefined : current;
215
- });
216
- }
217
- }, []);
218
- var selectActiveItem = (0, _react.useCallback)(function () {
219
- if (isActiveItemMounted) {
220
- var _getDocument;
221
- (_getDocument = (0, _browserApis.getDocument)()) === null || _getDocument === void 0 || (_getDocument = _getDocument.getElementById(activeItemId)) === null || _getDocument === void 0 || _getDocument.click();
222
- }
223
- }, [activeItemId, isActiveItemMounted]);
108
+ }, [editorView, onSelect]);
109
+ var registeredMenu = (0, _react.useMemo)(function () {
110
+ return {
111
+ components: components,
112
+ onClose: props.onClose,
113
+ maxHeight: Math.max(0, maxHeight - SEARCH_HEIGHT),
114
+ registerInteraction: registerInteraction,
115
+ editorView: editorView,
116
+ isOffline: isOffline,
117
+ menuOpenId: menuOpenId,
118
+ rootComponent: _keys.MENU,
119
+ query: query,
120
+ select: select,
121
+ surfaceContext: surfaceContext
122
+ };
123
+ }, [components, props.onClose, maxHeight, registerInteraction, editorView, isOffline, menuOpenId, query, select, surfaceContext]);
224
124
  var onQueryChange = (0, _react.useCallback)(function (event) {
225
- setQuery(event.currentTarget.value);
125
+ return setQuery(event.currentTarget.value);
226
126
  }, []);
227
127
  var onKeyDown = (0, _react.useCallback)(function (event) {
228
128
  if (event.key === 'Escape') {
129
+ var _interaction$onClose;
229
130
  event.preventDefault();
230
- closeWithAnalytics();
131
+ interaction === null || interaction === void 0 || (_interaction$onClose = interaction.onClose) === null || _interaction$onClose === void 0 || _interaction$onClose.call(interaction);
132
+ props.onClose();
231
133
  return;
232
134
  }
233
-
234
- // The search field owns the composite's arrow-key and Enter behaviour. Other
235
- // focusable controls, including consumer-provided empty-state content, need
236
- // to retain their native keyboard behaviour.
237
- if (event.target !== searchRef.current) {
135
+ // Some IME key events report 229 without setting isComposing. Let the input finish
136
+ // composing text before handling menu navigation or selection.
137
+ if (event.target !== searchRef.current || event.nativeEvent.isComposing || event.keyCode === 229) {
238
138
  return;
239
139
  }
240
- switch (event.key) {
241
- case 'ArrowDown':
242
- event.preventDefault();
243
- selectNextItem();
244
- break;
245
- case 'ArrowUp':
246
- event.preventDefault();
247
- selectPreviousItem();
248
- break;
249
- case 'Enter':
250
- event.preventDefault();
251
- selectActiveItem();
252
- break;
140
+ if (interaction !== null && interaction !== void 0 && interaction.onKeyDown(event.nativeEvent)) {
141
+ event.preventDefault();
253
142
  }
254
- }, [closeWithAnalytics, selectActiveItem, selectNextItem, selectPreviousItem]);
255
- return /*#__PURE__*/_react.default.createElement(_box.Box, {
256
- "data-keyboard-navigation-independent": "",
257
- testId: "registered-insert-menu",
143
+ }, [interaction, props.onClose]);
144
+ return /*#__PURE__*/_react.default.createElement(_context.RegisteredMenuContext.Provider, {
145
+ value: registeredMenu
146
+ }, Root && /*#__PURE__*/_react.default.createElement("div", {
147
+ "data-registered-insert-menu-root": "",
258
148
  onKeyDownCapture: onKeyDown,
259
- xcss: styles.menu,
260
- style: menuStyle
149
+ "data-keyboard-navigation-independent": "",
150
+ "data-testid": "registered-insert-menu",
151
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/enforce-style-prop -- The popup supplies the available height at runtime.
152
+ style: menuStyle,
153
+ className: (0, _runtime.ax)([styles.menu, !interaction && styles.hidden])
261
154
  }, /*#__PURE__*/_react.default.createElement(_box.Box, {
262
155
  xcss: styles.search
263
156
  }, /*#__PURE__*/_react.default.createElement(_textField.default, {
264
- "aria-activedescendant": isActiveItemMounted ? activeItemId : undefined,
265
- "aria-controls": listId,
266
- "aria-expanded": "true",
267
- placeholder: "Search",
157
+ "aria-label": (interaction === null || interaction === void 0 ? void 0 : interaction.label) || formatMessage(_insertBlock.toolbarInsertBlockMessages.insertMenu),
158
+ "aria-activedescendant": interaction === null || interaction === void 0 ? void 0 : interaction.activeDescendantId,
159
+ "aria-controls": interaction === null || interaction === void 0 ? void 0 : interaction.listId,
160
+ "aria-expanded": (_interaction$expanded = interaction === null || interaction === void 0 ? void 0 : interaction.expanded) !== null && _interaction$expanded !== void 0 ? _interaction$expanded : false,
161
+ "aria-autocomplete": "list",
162
+ placeholder: formatMessage(_messages.typeAheadListMessages.quickInsertInputPlaceholderLabel),
268
163
  ref: searchRef,
269
164
  role: "combobox",
270
165
  value: query,
271
166
  onChange: onQueryChange
272
- })), /*#__PURE__*/_react.default.createElement(_RegisteredInsertMenuList.RegisteredInsertMenuList, {
273
- editorView: editorView,
274
- emptyStateHandler: emptyStateHandler,
275
- isOffline: isOffline,
276
- listId: listId,
277
- listLabel: formatMessage(_insertBlock.toolbarInsertBlockMessages.insertMenu),
278
- maxHeight: maxHeight,
279
- menuOpenId: menuOpenId,
280
- model: model,
281
- onClose: selectWithAnalytics,
282
- onItemFocus: onItemFocus,
283
- onItemHover: onItemHover,
284
- onItemBlur: onItemBlur,
285
- onItemLeave: onItemLeave,
286
- onItemVisibilityChange: onItemVisibilityChange,
287
- onRenderedItemsChange: setRenderedItems,
288
- query: query,
289
- selectedItemIndex: selectedItemIndex,
290
- surfaceContext: surfaceContext,
291
- activePreviewItemKey: activePreviewItemKey
292
- }));
167
+ })), menu));
293
168
  };
@@ -25,7 +25,7 @@ var RegisteredInsertMenuContainer = function RegisteredInsertMenuContainer(_ref)
25
25
  };
26
26
  var RegisteredInsertMenuWithListeners = (0, _withOuterListeners.default)(RegisteredInsertMenuContainer);
27
27
  var RegisteredInsertMenuContent = exports.RegisteredInsertMenuContent = function RegisteredInsertMenuContent(_ref2) {
28
- var _api$uiControlRegistr2, _api$uiControlRegistr3, _api$quickInsert, _api$analytics, _api$quickInsert2;
28
+ var _api$uiControlRegistr2, _api$uiControlRegistr3;
29
29
  var api = _ref2.api,
30
30
  editorView = _ref2.editorView,
31
31
  isOffline = _ref2.isOffline,
@@ -51,9 +51,6 @@ var RegisteredInsertMenuContent = exports.RegisteredInsertMenuContent = function
51
51
  }, /*#__PURE__*/_react.default.createElement(_RegisteredInsertMenu.RegisteredInsertMenu, {
52
52
  components: components,
53
53
  editorView: editorView,
54
- emptyStateHandler: api === null || api === void 0 || (_api$quickInsert = api.quickInsert) === null || _api$quickInsert === void 0 || (_api$quickInsert = _api$quickInsert.sharedState.currentState()) === null || _api$quickInsert === void 0 ? void 0 : _api$quickInsert.emptyStateHandler,
55
- fireAnalyticsEvent: api === null || api === void 0 || (_api$analytics = api.analytics) === null || _api$analytics === void 0 ? void 0 : _api$analytics.actions.fireAnalyticsEvent,
56
- getItemRank: api === null || api === void 0 || (_api$quickInsert2 = api.quickInsert) === null || _api$quickInsert2 === void 0 || (_api$quickInsert2 = _api$quickInsert2.sharedState.currentState()) === null || _api$quickInsert2 === void 0 ? void 0 : _api$quickInsert2.getItemRank,
57
54
  isOffline: isOffline,
58
55
  maxHeight: maxHeight,
59
56
  onClose: onClose,
@@ -1,6 +1,6 @@
1
1
  import React, { useCallback } from 'react';
2
2
  import Popup from '@atlaskit/editor-common/Popup';
3
- import { useMenuPopupSizing } from '@atlaskit/editor-common/quick-insert/use-menu-popup-sizing';
3
+ import { useMenuPopupSizing } from '@atlaskit/editor-common/registered-menu/popup-sizing';
4
4
  import { isExperimentEnabled } from '@atlaskit/platform-feature-experiments/is-experiment-enabled';
5
5
  import InsertMenu, { DEFAULT_HEIGHT } from '../ElementBrowser/InsertMenu';
6
6
  import { RegisteredInsertMenuContent } from '../registered-insert-menu/RegisteredInsertMenuContent';
@@ -4,7 +4,7 @@ import { isOfflineMode } from '@atlaskit/editor-common/connectivity/isOfflineMod
4
4
  import { getAriaKeyshortcuts, insertElements, ToolTipContent } from '@atlaskit/editor-common/keymaps';
5
5
  import { toolbarInsertBlockMessages as messages } from '@atlaskit/editor-common/messages/insert-block';
6
6
  import Popup from '@atlaskit/editor-common/Popup';
7
- import { useMenuPopupSizing } from '@atlaskit/editor-common/quick-insert/use-menu-popup-sizing';
7
+ import { useMenuPopupSizing } from '@atlaskit/editor-common/registered-menu/popup-sizing';
8
8
  import { useEditorToolbar } from '@atlaskit/editor-common/toolbar/context';
9
9
  import { TOOLBAR_BUTTON_TEST_ID } from '@atlaskit/editor-common/toolbar/keys';
10
10
  import { useSharedPluginStateWithSelector } from '@atlaskit/editor-common/useSharedPluginStateWithSelector';
@@ -3,6 +3,7 @@
3
3
  ._18m915vq{overflow-y:hidden}
4
4
  ._1bsb1edt{width:350px}
5
5
  ._1e0c1txw{display:flex}
6
+ ._1e0cglyw{display:none}
6
7
  ._1o9zidpf{flex-shrink:0}
7
8
  ._1q51utpp{padding-block-start:var(--ds-space-150,9pt)}
8
9
  ._1reo15vq{overflow-x:hidden}