@atlaskit/editor-plugin-quick-insert 29.0.3 → 30.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 (87) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/cjs/quickInsertPlugin.js +10 -5
  3. package/dist/cjs/ui/QuickInsertRecommendedSlot.js +11 -8
  4. package/dist/cjs/ui/RegistryElementBrowser/RegistryElementBrowser.js +31 -7
  5. package/dist/cjs/ui/RegistryElementBrowser/RegistryElementBrowserSearchResults.js +13 -7
  6. package/dist/cjs/ui/RegistryElementBrowser/model.js +14 -15
  7. package/dist/cjs/ui/getQuickInsertComponents.js +28 -16
  8. package/dist/cjs/ui/getRecommendedComponents.js +2 -2
  9. package/dist/cjs/ui/registered-menu/QuickInsertEmptyState.compiled.css +11 -0
  10. package/dist/cjs/ui/registered-menu/QuickInsertEmptyState.js +61 -0
  11. package/dist/cjs/ui/registered-menu/QuickInsertMenuRoot.js +220 -0
  12. package/dist/cjs/ui/registered-menu/QuickInsertMenuSection.js +23 -0
  13. package/dist/cjs/ui/registered-menu/QuickInsertSearchResultsSection.js +19 -0
  14. package/dist/cjs/ui/registered-menu/RegisteredQuickInsertMenuItem.js +42 -0
  15. package/dist/cjs/ui/registered-menu/ToolbarQuickInsertMenu.compiled.css +11 -0
  16. package/dist/cjs/ui/registered-menu/ToolbarQuickInsertMenu.js +128 -0
  17. package/dist/cjs/ui/registered-menu/TypeAheadQuickInsertMenu.compiled.css +3 -0
  18. package/dist/cjs/ui/registered-menu/TypeAheadQuickInsertMenu.js +90 -0
  19. package/dist/cjs/ui/registered-menu/assets/no-results.js +36 -0
  20. package/dist/cjs/ui/registered-menu/get-quick-insert-menu-model.js +237 -0
  21. package/dist/cjs/ui/registered-menu/getQuickInsertMenuItemId.js +9 -0
  22. package/dist/cjs/ui/registered-menu/selectQuickInsertCategoryItems.js +27 -0
  23. package/dist/cjs/ui/registered-menu/useQuickInsertSearchAnalytics.js +100 -0
  24. package/dist/es2019/quickInsertPlugin.js +10 -5
  25. package/dist/es2019/ui/QuickInsertRecommendedSlot.js +10 -5
  26. package/dist/es2019/ui/RegistryElementBrowser/RegistryElementBrowser.js +19 -2
  27. package/dist/es2019/ui/RegistryElementBrowser/RegistryElementBrowserSearchResults.js +12 -7
  28. package/dist/es2019/ui/RegistryElementBrowser/model.js +12 -13
  29. package/dist/es2019/ui/getQuickInsertComponents.js +24 -10
  30. package/dist/es2019/ui/getRecommendedComponents.js +2 -2
  31. package/dist/es2019/ui/registered-menu/QuickInsertEmptyState.compiled.css +11 -0
  32. package/dist/es2019/ui/registered-menu/QuickInsertEmptyState.js +47 -0
  33. package/dist/es2019/ui/registered-menu/QuickInsertMenuRoot.js +191 -0
  34. package/dist/es2019/ui/registered-menu/QuickInsertMenuSection.js +15 -0
  35. package/dist/es2019/ui/registered-menu/QuickInsertSearchResultsSection.js +14 -0
  36. package/dist/es2019/ui/registered-menu/RegisteredQuickInsertMenuItem.js +34 -0
  37. package/dist/es2019/ui/registered-menu/ToolbarQuickInsertMenu.compiled.css +11 -0
  38. package/dist/es2019/ui/registered-menu/ToolbarQuickInsertMenu.js +116 -0
  39. package/dist/es2019/ui/registered-menu/TypeAheadQuickInsertMenu.compiled.css +3 -0
  40. package/dist/es2019/ui/registered-menu/TypeAheadQuickInsertMenu.js +78 -0
  41. package/dist/es2019/ui/registered-menu/assets/no-results.js +30 -0
  42. package/dist/es2019/ui/registered-menu/get-quick-insert-menu-model.js +177 -0
  43. package/dist/es2019/ui/registered-menu/getQuickInsertMenuItemId.js +1 -0
  44. package/dist/es2019/ui/registered-menu/selectQuickInsertCategoryItems.js +19 -0
  45. package/dist/es2019/ui/registered-menu/useQuickInsertSearchAnalytics.js +91 -0
  46. package/dist/esm/quickInsertPlugin.js +10 -5
  47. package/dist/esm/ui/QuickInsertRecommendedSlot.js +11 -8
  48. package/dist/esm/ui/RegistryElementBrowser/RegistryElementBrowser.js +30 -6
  49. package/dist/esm/ui/RegistryElementBrowser/RegistryElementBrowserSearchResults.js +12 -7
  50. package/dist/esm/ui/RegistryElementBrowser/model.js +14 -15
  51. package/dist/esm/ui/getQuickInsertComponents.js +27 -15
  52. package/dist/esm/ui/getRecommendedComponents.js +2 -2
  53. package/dist/esm/ui/registered-menu/QuickInsertEmptyState.compiled.css +11 -0
  54. package/dist/esm/ui/registered-menu/QuickInsertEmptyState.js +50 -0
  55. package/dist/esm/ui/registered-menu/QuickInsertMenuRoot.js +211 -0
  56. package/dist/esm/ui/registered-menu/QuickInsertMenuSection.js +16 -0
  57. package/dist/esm/ui/registered-menu/QuickInsertSearchResultsSection.js +12 -0
  58. package/dist/esm/ui/registered-menu/RegisteredQuickInsertMenuItem.js +34 -0
  59. package/dist/esm/ui/registered-menu/ToolbarQuickInsertMenu.compiled.css +11 -0
  60. package/dist/esm/ui/registered-menu/ToolbarQuickInsertMenu.js +120 -0
  61. package/dist/esm/ui/registered-menu/TypeAheadQuickInsertMenu.compiled.css +3 -0
  62. package/dist/esm/ui/registered-menu/TypeAheadQuickInsertMenu.js +82 -0
  63. package/dist/esm/ui/registered-menu/assets/no-results.js +29 -0
  64. package/dist/esm/ui/registered-menu/get-quick-insert-menu-model.js +230 -0
  65. package/dist/esm/ui/registered-menu/getQuickInsertMenuItemId.js +3 -0
  66. package/dist/esm/ui/registered-menu/selectQuickInsertCategoryItems.js +21 -0
  67. package/dist/esm/ui/registered-menu/useQuickInsertSearchAnalytics.js +93 -0
  68. package/dist/types/quickInsertPluginType.d.ts +1 -1
  69. package/dist/types/ui/QuickInsertRecommendedSlot.d.ts +3 -3
  70. package/dist/types/ui/RegistryElementBrowser/RegistryElementBrowserSearchResults.d.ts +5 -2
  71. package/dist/types/ui/RegistryElementBrowser/model.d.ts +3 -2
  72. package/dist/types/ui/getQuickInsertComponents.d.ts +8 -2
  73. package/dist/types/ui/registered-menu/QuickInsertEmptyState.d.ts +7 -0
  74. package/dist/types/ui/registered-menu/QuickInsertMenuRoot.d.ts +11 -0
  75. package/dist/types/ui/registered-menu/QuickInsertMenuSection.d.ts +4 -0
  76. package/dist/types/ui/registered-menu/QuickInsertSearchResultsSection.d.ts +2 -0
  77. package/dist/types/ui/registered-menu/RegisteredQuickInsertMenuItem.d.ts +3 -0
  78. package/dist/types/ui/registered-menu/ToolbarQuickInsertMenu.d.ts +28 -0
  79. package/dist/types/ui/registered-menu/TypeAheadQuickInsertMenu.d.ts +27 -0
  80. package/dist/types/ui/registered-menu/assets/no-results.d.ts +7 -0
  81. package/dist/types/ui/registered-menu/get-quick-insert-menu-model.d.ts +19 -0
  82. package/dist/types/ui/registered-menu/getQuickInsertMenuItemId.d.ts +1 -0
  83. package/dist/types/ui/registered-menu/selectQuickInsertCategoryItems.d.ts +7 -0
  84. package/dist/types/ui/registered-menu/useQuickInsertSearchAnalytics.d.ts +12 -0
  85. package/package.json +14 -11
  86. package/registered-menu/model/package.json +10 -0
  87. package/registered-menu/search-analytics/package.json +10 -0
@@ -2,9 +2,9 @@ import { logException } from '@atlaskit/editor-common/monitoring/error';
2
2
  import { quickInsertProviderMenuItemKey } from '@atlaskit/editor-common/quick-insert/get-provider-menu-item-key';
3
3
  import { defaultIsRecommendedItem } from '@atlaskit/editor-common/quick-insert/is-recommended-item';
4
4
  import { MENU } from '@atlaskit/editor-common/quick-insert/keys';
5
+ import { REGISTERED_MENU_SURFACE_CONTEXT } from '@atlaskit/editor-common/registered-menu/surface-context';
5
6
  import { isMenuFooterSectionKey } from '@atlaskit/editor-common/type-ahead-is-menu-footer-section-key';
6
7
  import { isSectionOverflowItemKey } from '@atlaskit/editor-common/type-ahead-is-section-overflow-item-key';
7
- import { TYPE_AHEAD_SURFACE_CONTEXT } from '@atlaskit/editor-common/type-ahead-surface-context';
8
8
  export var MAX_RECOMMENDED_ITEMS = 5;
9
9
  export var RECOMMENDED_SLOT_KEY_PREFIX = 'quick-insert-recommended-slot-';
10
10
  export var isRecommendedSlotKey = function isRecommendedSlotKey(key) {
@@ -76,7 +76,7 @@ export var createRecommendedSnapshotCache = function createRecommendedSnapshotCa
76
76
  var snapshot;
77
77
  var getSnapshot = function getSnapshot(surfaceContext) {
78
78
  var _surfaceContext$get, _snapshot;
79
- var menuOpenId = surfaceContext === null || surfaceContext === void 0 || (_surfaceContext$get = surfaceContext.get(TYPE_AHEAD_SURFACE_CONTEXT)) === null || _surfaceContext$get === void 0 ? void 0 : _surfaceContext$get.menuOpenId;
79
+ var menuOpenId = surfaceContext === null || surfaceContext === void 0 || (_surfaceContext$get = surfaceContext.get(REGISTERED_MENU_SURFACE_CONTEXT)) === null || _surfaceContext$get === void 0 ? void 0 : _surfaceContext$get.menuOpenId;
80
80
  if (!surfaceContext || !menuOpenId) {
81
81
  return [];
82
82
  }
@@ -0,0 +1,11 @@
1
+ ._zulp1ejb{gap:var(--ds-space-300,24px)}
2
+ ._1rjcoahv{padding-block:var(--ds-space-600,3pc)}
3
+ ._1rjcxy5q{padding-block:var(--ds-space-400,2pc)}._1bah1h6o{justify-content:center}
4
+ ._1bsb1mcy{width:57px}
5
+ ._1bsb1osq{width:100%}
6
+ ._1bsbtudo{width:76px}
7
+ ._1e0c1txw{display:flex}
8
+ ._2lx21bp4{flex-direction:column}
9
+ ._4cvr1h6o{align-items:center}
10
+ ._4t3i1h39{height:63px}
11
+ ._4t3io7ol{height:84px}
@@ -0,0 +1,50 @@
1
+ /* QuickInsertEmptyState.tsx generated by @compiled/babel-plugin v3.0.2 */
2
+ import "./QuickInsertEmptyState.compiled.css";
3
+ import { ax, ix } from "@compiled/react/runtime";
4
+ import React from 'react';
5
+ import { useIntl } from 'react-intl';
6
+ import { lazy, LazySuspense } from 'react-loosely-lazy';
7
+ import { cx } from '@atlaskit/css';
8
+ import { messages } from '@atlaskit/editor-common/quick-insert/messages';
9
+ import { Box } from '@atlaskit/primitives/compiled/box';
10
+ import { Text } from '@atlaskit/primitives/compiled/text';
11
+ var NoResultsIllustration = lazy(function () {
12
+ return import( /* webpackChunkName: "@atlaskit-internal_editor-quick-insert-no-results" */
13
+ './assets/no-results').then(function (module) {
14
+ return module.default;
15
+ });
16
+ });
17
+ var styles = {
18
+ base: "_zulp1ejb _4cvr1h6o _1e0c1txw _2lx21bp4 _1bah1h6o _1bsb1osq",
19
+ compact: "_1rjcxy5q",
20
+ spacious: "_1rjcoahv",
21
+ inlineIllustration: "_4t3i1h39 _1bsb1mcy",
22
+ fullIllustration: "_4t3io7ol _1bsbtudo"
23
+ };
24
+ export var QuickInsertEmptyState = function QuickInsertEmptyState(_ref) {
25
+ var mode = _ref.mode,
26
+ _ref$spacing = _ref.spacing,
27
+ spacing = _ref$spacing === void 0 ? mode === 'full' ? 'spacious' : 'compact' : _ref$spacing;
28
+ var _useIntl = useIntl(),
29
+ formatMessage = _useIntl.formatMessage;
30
+ var illustrationSize = mode === 'full' ? {
31
+ width: 76,
32
+ height: 84
33
+ } : {
34
+ width: 57,
35
+ height: 63
36
+ };
37
+ return /*#__PURE__*/React.createElement(Box, {
38
+ testId: "quick-insert-empty-state",
39
+ xcss: cx(styles.base, styles[spacing])
40
+ }, /*#__PURE__*/React.createElement(Box, {
41
+ xcss: mode === 'full' ? styles.fullIllustration : styles.inlineIllustration
42
+ }, /*#__PURE__*/React.createElement(LazySuspense, {
43
+ fallback: null
44
+ }, /*#__PURE__*/React.createElement(NoResultsIllustration, {
45
+ width: illustrationSize.width,
46
+ height: illustrationSize.height
47
+ }))), /*#__PURE__*/React.createElement(Text, {
48
+ align: "center"
49
+ }, formatMessage(messages.noSearchResults)));
50
+ };
@@ -0,0 +1,211 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
+ import _toArray from "@babel/runtime/helpers/toArray";
4
+ var _excluded = ["rows", "selectableItems", "selectedItemIndex", "activeItemKey"];
5
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
6
+ import React, { useCallback, useId, useLayoutEffect, useMemo, useRef, useState } from 'react';
7
+ import { useIntl } from 'react-intl';
8
+ import { INPUT_METHOD } from '@atlaskit/editor-common/analytics/types/enums';
9
+ import { toolbarInsertBlockMessages } from '@atlaskit/editor-common/messages/insert-block';
10
+ import { QuickInsertProvider } from '@atlaskit/editor-common/quick-insert/provider';
11
+ import { useRegisteredMenuContext } from '@atlaskit/editor-common/registered-menu/context';
12
+ import { REGISTERED_MENU_SURFACE_CONTEXT } from '@atlaskit/editor-common/registered-menu/surface-context';
13
+ import { useRegisteredMenu } from '@atlaskit/editor-common/registered-menu/use-registered-menu';
14
+ import { isSectionOverflowItemKey } from '@atlaskit/editor-common/type-ahead-is-section-overflow-item-key';
15
+ import { typeAheadListMessages } from '@atlaskit/editor-common/type-ahead/messages';
16
+ import MenuGroup from '@atlaskit/menu/menu-group';
17
+ import { getQuickInsertMenuModel } from './get-quick-insert-menu-model';
18
+ import { getQuickInsertMenuItemId } from './getQuickInsertMenuItemId';
19
+ import { RegisteredQuickInsertMenuItem } from './RegisteredQuickInsertMenuItem';
20
+ import { selectQuickInsertCategoryItems } from './selectQuickInsertCategoryItems';
21
+ import { ToolbarQuickInsertMenu } from './ToolbarQuickInsertMenu';
22
+ import { TypeAheadQuickInsertMenu } from './TypeAheadQuickInsertMenu';
23
+ import { useQuickInsertSearchAnalytics } from './useQuickInsertSearchAnalytics';
24
+ var DEFAULT_MENU_MAX_HEIGHT = 480;
25
+ var isImeEnter = function isImeEnter(event) {
26
+ return event.isComposing || event.keyCode === 229;
27
+ };
28
+ var QuickInsertMenuRoot = function QuickInsertMenuRoot(_ref) {
29
+ var _surfaceContext$get, _registeredMenu$maxHe;
30
+ var emptyStateHandler = _ref.emptyStateHandler,
31
+ fireAnalyticsEvent = _ref.fireAnalyticsEvent,
32
+ getItemRank = _ref.getItemRank;
33
+ var registeredMenu = useRegisteredMenuContext();
34
+ var _registeredMenu$query = registeredMenu.query,
35
+ query = _registeredMenu$query === void 0 ? '' : _registeredMenu$query,
36
+ selectFromHost = registeredMenu.select,
37
+ surfaceContext = registeredMenu.surfaceContext;
38
+ var surface = (_surfaceContext$get = surfaceContext.get(REGISTERED_MENU_SURFACE_CONTEXT)) === null || _surfaceContext$get === void 0 ? void 0 : _surfaceContext$get.surface;
39
+ if (!selectFromHost || !surface || surface === 'element-browser') {
40
+ throw new Error('QuickInsertMenuRoot requires a selection action and registered menu surface');
41
+ }
42
+ var _useIntl = useIntl(),
43
+ formatMessage = _useIntl.formatMessage;
44
+ var components = registeredMenu.components,
45
+ runtimeItemRank = registeredMenu.getItemRank,
46
+ rootComponent = registeredMenu.rootComponent;
47
+ var model = useMemo(function () {
48
+ return getQuickInsertMenuModel({
49
+ components: components,
50
+ formatMessage: formatMessage,
51
+ getItemRank: runtimeItemRank !== null && runtimeItemRank !== void 0 ? runtimeItemRank : getItemRank,
52
+ query: query,
53
+ rootComponent: rootComponent,
54
+ selectCategoryItems: components.some(function (_ref2) {
55
+ var key = _ref2.key;
56
+ return isSectionOverflowItemKey(key);
57
+ }) ? selectQuickInsertCategoryItems : undefined,
58
+ surfaceContext: surfaceContext
59
+ });
60
+ }, [components, formatMessage, getItemRank, query, rootComponent, runtimeItemRank, surfaceContext]);
61
+ var resultCount = useMemo(function () {
62
+ return model.sections.reduce(function (count, _ref3) {
63
+ var _ref4 = _toArray(_ref3),
64
+ items = _arrayLikeToArray(_ref4).slice(1);
65
+ return count + items.filter(function (_ref5) {
66
+ var key = _ref5.key;
67
+ return !isSectionOverflowItemKey(key);
68
+ }).length;
69
+ }, 0);
70
+ }, [model.sections]);
71
+ var flushSearchAnalytics = useQuickInsertSearchAnalytics({
72
+ surface: surface,
73
+ fireAnalyticsEvent: fireAnalyticsEvent,
74
+ query: query,
75
+ resultCount: resultCount
76
+ });
77
+ var selectItem = useCallback(function (selection) {
78
+ flushSearchAnalytics();
79
+ selectFromHost(function (insert) {
80
+ return selection({
81
+ insert: insert,
82
+ source: surface === 'toolbar' ? INPUT_METHOD.INSERT_MENU : INPUT_METHOD.QUICK_INSERT
83
+ });
84
+ });
85
+ }, [flushSearchAnalytics, selectFromHost, surface]);
86
+ var menuContextValue = useMemo(function () {
87
+ return {
88
+ editorView: registeredMenu.editorView,
89
+ isOffline: registeredMenu.isOffline,
90
+ popupsMountPoint: registeredMenu.portalMountPoint,
91
+ select: selectItem,
92
+ surfaceContext: registeredMenu.surfaceContext
93
+ };
94
+ }, [registeredMenu.editorView, registeredMenu.isOffline, registeredMenu.portalMountPoint, registeredMenu.surfaceContext, selectItem]);
95
+ var listLabel = formatMessage(surface === 'typeahead' ? typeAheadListMessages.quickInsertInputLabel : toolbarInsertBlockMessages.insertMenu);
96
+ var _useRegisteredMenu = useRegisteredMenu({
97
+ model: model,
98
+ resetKey: query
99
+ }),
100
+ rows = _useRegisteredMenu.rows,
101
+ selectableItems = _useRegisteredMenu.selectableItems,
102
+ selectedItemIndex = _useRegisteredMenu.selectedItemIndex,
103
+ activeItemKey = _useRegisteredMenu.activeItemKey,
104
+ listEvents = _objectWithoutProperties(_useRegisteredMenu, _excluded);
105
+ var listId = useId();
106
+ var _useState = useState({
107
+ startIndex: -1,
108
+ stopIndex: -1
109
+ }),
110
+ _useState2 = _slicedToArray(_useState, 2),
111
+ renderedItems = _useState2[0],
112
+ setRenderedItems = _useState2[1];
113
+ var menuRef = useRef(null);
114
+ var maxHeight = (_registeredMenu$maxHe = registeredMenu.maxHeight) !== null && _registeredMenu$maxHe !== void 0 ? _registeredMenu$maxHe : DEFAULT_MENU_MAX_HEIGHT;
115
+ var itemCount = selectableItems.length + (model.footer ? 1 : 0);
116
+ var activeItemId = selectedItemIndex >= 0 && selectedItemIndex < itemCount ? getQuickInsertMenuItemId(listId, selectedItemIndex) : undefined;
117
+ var isActiveItemMounted = selectedItemIndex >= 0 && selectedItemIndex < itemCount && (selectedItemIndex >= renderedItems.startIndex && selectedItemIndex <= renderedItems.stopIndex || Boolean(model.footer) && selectedItemIndex === itemCount - 1);
118
+ var selectActiveItem = useCallback(function () {
119
+ if (isActiveItemMounted && activeItemId) {
120
+ var _menuRef$current;
121
+ (_menuRef$current = menuRef.current) === null || _menuRef$current === void 0 || (_menuRef$current = _menuRef$current.ownerDocument.getElementById(activeItemId)) === null || _menuRef$current === void 0 || _menuRef$current.click();
122
+ }
123
+ }, [activeItemId, isActiveItemMounted]);
124
+ var onMenuKeyDown = useCallback(function (event) {
125
+ if (event.key === 'ArrowDown') {
126
+ listEvents.selectNext();
127
+ return true;
128
+ }
129
+ if (event.key === 'ArrowUp') {
130
+ listEvents.selectPrevious();
131
+ return true;
132
+ }
133
+ if (event.key === 'Enter') {
134
+ if (isImeEnter(event)) {
135
+ return false;
136
+ }
137
+ selectActiveItem();
138
+ return true;
139
+ }
140
+ return false;
141
+ }, [listEvents.selectNext, listEvents.selectPrevious, selectActiveItem]);
142
+ var containsTarget = useCallback(function (target) {
143
+ var _menuRef$current2;
144
+ return Boolean((_menuRef$current2 = menuRef.current) === null || _menuRef$current2 === void 0 ? void 0 : _menuRef$current2.contains(target));
145
+ }, []);
146
+ var interaction = useMemo(function () {
147
+ return {
148
+ activeDescendantId: isActiveItemMounted ? activeItemId : undefined,
149
+ containsTarget: containsTarget,
150
+ expanded: itemCount > 0,
151
+ label: listLabel,
152
+ listId: listId,
153
+ onKeyDown: onMenuKeyDown,
154
+ onClose: flushSearchAnalytics,
155
+ optionCount: itemCount,
156
+ selectNext: listEvents.selectNext,
157
+ selectPrevious: listEvents.selectPrevious
158
+ };
159
+ }, [activeItemId, containsTarget, flushSearchAnalytics, isActiveItemMounted, itemCount, listId, listLabel, listEvents.selectNext, listEvents.selectPrevious, onMenuKeyDown]);
160
+ useLayoutEffect(function () {
161
+ if (!model.root) {
162
+ return;
163
+ }
164
+ return registeredMenu.registerInteraction(interaction);
165
+ }, [model.root, interaction, registeredMenu.registerInteraction]);
166
+ if (!model.root) {
167
+ return null;
168
+ }
169
+ return /*#__PURE__*/React.createElement(QuickInsertProvider, {
170
+ value: menuContextValue
171
+ }, /*#__PURE__*/React.createElement("div", {
172
+ ref: menuRef
173
+ }, /*#__PURE__*/React.createElement(MenuGroup, null, surface === 'typeahead' ? /*#__PURE__*/React.createElement(TypeAheadQuickInsertMenu, {
174
+ Item: RegisteredQuickInsertMenuItem,
175
+ activeItemKey: activeItemKey,
176
+ hasScrollPadding: true,
177
+ itemCount: itemCount,
178
+ listId: listId,
179
+ listLabel: listLabel,
180
+ maxHeight: maxHeight,
181
+ model: model,
182
+ onItemBlur: listEvents.onItemBlur,
183
+ onItemFocus: listEvents.onItemFocus,
184
+ onItemHover: listEvents.onItemHover,
185
+ onItemLeave: listEvents.onItemLeave,
186
+ onItemVisibilityChange: listEvents.onItemVisibilityChange,
187
+ onRenderedItemsChange: setRenderedItems,
188
+ query: query,
189
+ rows: rows,
190
+ selectedItemIndex: selectedItemIndex
191
+ }) : /*#__PURE__*/React.createElement(ToolbarQuickInsertMenu, {
192
+ Item: RegisteredQuickInsertMenuItem,
193
+ activePreviewItemKey: activeItemKey,
194
+ emptyStateHandler: emptyStateHandler,
195
+ itemCount: itemCount,
196
+ listId: listId,
197
+ listLabel: listLabel,
198
+ maxHeight: maxHeight,
199
+ model: model,
200
+ onItemBlur: listEvents.onItemBlur,
201
+ onItemFocus: listEvents.onItemFocus,
202
+ onItemHover: listEvents.onItemHover,
203
+ onItemLeave: listEvents.onItemLeave,
204
+ onItemVisibilityChange: listEvents.onItemVisibilityChange,
205
+ onRenderedItemsChange: setRenderedItems,
206
+ query: query,
207
+ rows: rows,
208
+ selectedItemIndex: selectedItemIndex
209
+ }))));
210
+ };
211
+ export default QuickInsertMenuRoot;
@@ -0,0 +1,16 @@
1
+ import React from 'react';
2
+ import HeadingItem from '@atlaskit/menu/heading-item';
3
+ import { Box } from '@atlaskit/primitives/compiled/box';
4
+ export var QuickInsertMenuSection = function QuickInsertMenuSection(_ref) {
5
+ var children = _ref.children,
6
+ title = _ref.title;
7
+ return /*#__PURE__*/React.createElement(Box, {
8
+ role: "group",
9
+ "aria-label": title
10
+ }, /*#__PURE__*/React.createElement(Box, {
11
+ paddingBlockStart: "space.150",
12
+ paddingBlockEnd: "space.050"
13
+ }, /*#__PURE__*/React.createElement(HeadingItem, {
14
+ "aria-hidden": true
15
+ }, title)), children);
16
+ };
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import { useIntl } from 'react-intl';
3
+ import { messages } from '@atlaskit/editor-common/quick-insert/messages';
4
+ import { QuickInsertMenuSection } from './QuickInsertMenuSection';
5
+ export var QuickInsertSearchResultsSection = function QuickInsertSearchResultsSection(_ref) {
6
+ var children = _ref.children;
7
+ var _useIntl = useIntl(),
8
+ formatMessage = _useIntl.formatMessage;
9
+ return /*#__PURE__*/React.createElement(QuickInsertMenuSection, {
10
+ title: formatMessage(messages.searchResults)
11
+ }, children);
12
+ };
@@ -0,0 +1,34 @@
1
+ import React, { useMemo } from 'react';
2
+ import { QuickInsertProvider } from '@atlaskit/editor-common/quick-insert/provider';
3
+ import { useQuickInsertContext } from '@atlaskit/editor-common/quick-insert/use-quick-insert-context';
4
+ export var RegisteredQuickInsertMenuItem = function RegisteredQuickInsertMenuItem(_ref) {
5
+ var _registration$compone;
6
+ var id = _ref.id,
7
+ isSelected = _ref.isSelected,
8
+ isActive = _ref.isActive,
9
+ registration = _ref.registration;
10
+ var _useQuickInsertContex = useQuickInsertContext(),
11
+ editorView = _useQuickInsertContex.editorView,
12
+ isOffline = _useQuickInsertContex.isOffline,
13
+ popupsMountPoint = _useQuickInsertContex.popupsMountPoint,
14
+ select = _useQuickInsertContex.select,
15
+ surfaceContext = _useQuickInsertContex.surfaceContext;
16
+ var value = useMemo(function () {
17
+ return {
18
+ editorView: editorView,
19
+ isOffline: isOffline,
20
+ item: {
21
+ id: id,
22
+ isSelected: isSelected,
23
+ isPreviewActive: isActive
24
+ },
25
+ popupsMountPoint: popupsMountPoint,
26
+ select: select,
27
+ surfaceContext: surfaceContext
28
+ };
29
+ }, [editorView, isOffline, popupsMountPoint, select, surfaceContext, isActive, id, isSelected]);
30
+ var Component = (_registration$compone = registration.component) !== null && _registration$compone !== void 0 ? _registration$compone : React.Fragment;
31
+ return /*#__PURE__*/React.createElement(QuickInsertProvider, {
32
+ value: value
33
+ }, /*#__PURE__*/React.createElement(Component, null, null));
34
+ };
@@ -0,0 +1,11 @@
1
+ ._15a5nqa1{border-top-style:solid}
2
+ ._16jlkb7n{flex-grow:1}
3
+ ._18m91wug{overflow-y:auto}
4
+ ._1e0c1txw{display:flex}
5
+ ._1i531l7x{border-top-color:var(--ds-border,#0b120e24)}
6
+ ._1o9zidpf{flex-shrink:0}
7
+ ._1q51u2gc{padding-block-start:var(--ds-space-100,8px)}
8
+ ._1tkeidpf{min-height:0}
9
+ ._2lx21bp4{flex-direction:column}
10
+ ._85i5u2gc{padding-block-end:var(--ds-space-100,8px)}
11
+ ._uwhke4h9{border-top-width:var(--ds-border-width,1px)}
@@ -0,0 +1,120 @@
1
+ /* ToolbarQuickInsertMenu.tsx generated by @compiled/babel-plugin v3.0.2 */
2
+ import "./ToolbarQuickInsertMenu.compiled.css";
3
+ import { ax, ix } from "@compiled/react/runtime";
4
+ import React, { useCallback } from 'react';
5
+ import { RegisteredMenuList } from '@atlaskit/editor-common/registered-menu/list';
6
+ import { Box } from '@atlaskit/primitives/compiled/box';
7
+ import { getQuickInsertMenuItemId } from './getQuickInsertMenuItemId';
8
+ import { QuickInsertEmptyState } from './QuickInsertEmptyState';
9
+ var MENU_FOOTER_HEIGHT = 45;
10
+ var LIST_WIDTH = 350;
11
+ var styles = {
12
+ content: "_1e0c1txw _2lx21bp4 _1tkeidpf",
13
+ scrollable: "_16jlkb7n _1tkeidpf _18m91wug",
14
+ footer: "_1o9zidpf",
15
+ externalControls: "_1i531l7x _15a5nqa1 _uwhke4h9 _1q51u2gc _85i5u2gc",
16
+ footerDivider: "_1i531l7x _15a5nqa1 _uwhke4h9 _1o9zidpf"
17
+ };
18
+ export var ToolbarQuickInsertMenu = function ToolbarQuickInsertMenu(_ref) {
19
+ var Item = _ref.Item,
20
+ model = _ref.model,
21
+ emptyStateHandler = _ref.emptyStateHandler,
22
+ listLabel = _ref.listLabel,
23
+ activePreviewItemKey = _ref.activePreviewItemKey,
24
+ itemCount = _ref.itemCount,
25
+ listId = _ref.listId,
26
+ maxHeight = _ref.maxHeight,
27
+ rows = _ref.rows,
28
+ onItemBlur = _ref.onItemBlur,
29
+ onItemFocus = _ref.onItemFocus,
30
+ onItemHover = _ref.onItemHover,
31
+ onItemLeave = _ref.onItemLeave,
32
+ onItemVisibilityChange = _ref.onItemVisibilityChange,
33
+ onRenderedItemsChange = _ref.onRenderedItemsChange,
34
+ query = _ref.query,
35
+ selectedItemIndex = _ref.selectedItemIndex;
36
+ var footerItemIndex = itemCount - 1;
37
+ var footerItemId = getQuickInsertMenuItemId(listId, footerItemIndex);
38
+ var isEmptySearch = query !== '' && model.sections.length === 0;
39
+ var hasNoSearchResults = model.sections.length === 0 && model.fallbackItems.length === 0;
40
+ var externalControls = isEmptySearch ? emptyStateHandler === null || emptyStateHandler === void 0 ? void 0 : emptyStateHandler({
41
+ mode: 'inline',
42
+ searchTerm: query,
43
+ showNoResultsMessage: false
44
+ }) : null;
45
+ var onFooterItemFocus = useCallback(function () {
46
+ return onItemFocus(footerItemIndex);
47
+ }, [footerItemIndex, onItemFocus]);
48
+ var onFooterItemHover = useCallback(function () {
49
+ return onItemHover(footerItemIndex);
50
+ }, [footerItemIndex, onItemHover]);
51
+ var listMaxHeight = Math.max(0, maxHeight - (model.footer ? MENU_FOOTER_HEIGHT : 0));
52
+ var contentStyle = {
53
+ maxHeight: maxHeight
54
+ };
55
+ var getItemId = useCallback(function (_ref2) {
56
+ var itemIndex = _ref2.itemIndex;
57
+ return getQuickInsertMenuItemId(listId, itemIndex);
58
+ }, [listId]);
59
+ var onScrollableContentScroll = useCallback(function (event) {
60
+ if (event.target === event.currentTarget && activePreviewItemKey) {
61
+ onItemVisibilityChange(activePreviewItemKey, false);
62
+ }
63
+ }, [activePreviewItemKey, onItemVisibilityChange]);
64
+ if (!model.root) {
65
+ return null;
66
+ }
67
+ return /*#__PURE__*/React.createElement(Box, {
68
+ xcss: styles.content,
69
+ style: contentStyle
70
+ }, /*#__PURE__*/React.createElement(Box, {
71
+ xcss: styles.scrollable,
72
+ onScroll: onScrollableContentScroll
73
+ }, /*#__PURE__*/React.createElement(Box, {
74
+ "aria-label": listLabel,
75
+ "aria-owns": model.footer ? footerItemId : undefined,
76
+ id: listId,
77
+ role: "listbox"
78
+ }, rows.length > 0 && /*#__PURE__*/React.createElement(RegisteredMenuList, {
79
+ rows: rows,
80
+ Item: Item,
81
+ width: LIST_WIDTH,
82
+ maxHeight: listMaxHeight,
83
+ getItemId: getItemId,
84
+ activeItemKey: activePreviewItemKey,
85
+ selectedItemIndex: selectedItemIndex,
86
+ scrollResetKey: query,
87
+ onItemHover: onItemHover,
88
+ onItemFocus: onItemFocus,
89
+ onItemBlur: onItemBlur,
90
+ onItemLeave: onItemLeave,
91
+ onItemVisibilityChange: onItemVisibilityChange,
92
+ onRenderedItemsChange: onRenderedItemsChange,
93
+ role: "group",
94
+ tabIndex: null,
95
+ omitAriaReadonly: true,
96
+ lastRowPadding: "space.100",
97
+ scrollTo: "top-on-reset"
98
+ })), query !== '' && hasNoSearchResults && /*#__PURE__*/React.createElement(QuickInsertEmptyState, {
99
+ mode: "inline"
100
+ }), externalControls && /*#__PURE__*/React.createElement(Box, {
101
+ testId: "registered-insert-menu-external-controls",
102
+ xcss: styles.externalControls
103
+ }, externalControls)), model.footer && /*#__PURE__*/React.createElement(Box, {
104
+ xcss: styles.footer
105
+ }, /*#__PURE__*/React.createElement(Box, {
106
+ testId: "registered-insert-menu-footer",
107
+ xcss: styles.footer
108
+ }, !isEmptySearch || !hasNoSearchResults || Boolean(externalControls) ? /*#__PURE__*/React.createElement(Box, {
109
+ "aria-hidden": "true",
110
+ xcss: styles.footerDivider
111
+ }) : null, /*#__PURE__*/React.createElement(Box, {
112
+ onFocus: onFooterItemFocus,
113
+ onMouseMove: onFooterItemHover
114
+ }, /*#__PURE__*/React.createElement(Item, {
115
+ id: footerItemId,
116
+ isSelected: selectedItemIndex === footerItemIndex,
117
+ isActive: false,
118
+ registration: model.footer
119
+ })))));
120
+ };
@@ -0,0 +1,3 @@
1
+ ._15a5nqa1{border-top-style:solid}
2
+ ._1i531l7x{border-top-color:var(--ds-border,#0b120e24)}
3
+ ._uwhke4h9{border-top-width:var(--ds-border-width,1px)}
@@ -0,0 +1,82 @@
1
+ /* TypeAheadQuickInsertMenu.tsx generated by @compiled/babel-plugin v3.0.2 */
2
+ import "./TypeAheadQuickInsertMenu.compiled.css";
3
+ import { ax, ix } from "@compiled/react/runtime";
4
+ import React, { useCallback } from 'react';
5
+ import { RegisteredMenuList } from '@atlaskit/editor-common/registered-menu/list';
6
+ import { Box } from '@atlaskit/primitives/compiled/box';
7
+ import { getQuickInsertMenuItemId } from './getQuickInsertMenuItemId';
8
+ import { QuickInsertEmptyState } from './QuickInsertEmptyState';
9
+ var LIST_WIDTH = 320;
10
+ var MENU_FOOTER_HEIGHT = 45;
11
+ var MENU_FOOTER_HEIGHT_WITH_SCROLL_PADDING = 51;
12
+ var styles = {
13
+ footer: "_1i531l7x _15a5nqa1 _uwhke4h9"
14
+ };
15
+ export var TypeAheadQuickInsertMenu = function TypeAheadQuickInsertMenu(_ref) {
16
+ var Item = _ref.Item,
17
+ rows = _ref.rows,
18
+ activeItemKey = _ref.activeItemKey,
19
+ itemCount = _ref.itemCount,
20
+ listId = _ref.listId,
21
+ listLabel = _ref.listLabel,
22
+ maxHeight = _ref.maxHeight,
23
+ model = _ref.model,
24
+ onItemFocus = _ref.onItemFocus,
25
+ onItemBlur = _ref.onItemBlur,
26
+ onItemHover = _ref.onItemHover,
27
+ onItemLeave = _ref.onItemLeave,
28
+ onItemVisibilityChange = _ref.onItemVisibilityChange,
29
+ onRenderedItemsChange = _ref.onRenderedItemsChange,
30
+ _ref$query = _ref.query,
31
+ query = _ref$query === void 0 ? '' : _ref$query,
32
+ selectedItemIndex = _ref.selectedItemIndex,
33
+ _ref$hasScrollPadding = _ref.hasScrollPadding,
34
+ hasScrollPadding = _ref$hasScrollPadding === void 0 ? false : _ref$hasScrollPadding;
35
+ var footerItemIndex = itemCount - 1;
36
+ var onFooterItemHover = useCallback(function () {
37
+ return onItemHover(footerItemIndex);
38
+ }, [footerItemIndex, onItemHover]);
39
+ var getItemId = useCallback(function (_ref2) {
40
+ var itemIndex = _ref2.itemIndex;
41
+ return getQuickInsertMenuItemId(listId, itemIndex);
42
+ }, [listId]);
43
+ if (!model.root) {
44
+ return null;
45
+ }
46
+ var listMaxHeight = Math.max(0, maxHeight - (model.footer ? hasScrollPadding ? MENU_FOOTER_HEIGHT_WITH_SCROLL_PADDING : MENU_FOOTER_HEIGHT : 0));
47
+ var hasListboxContent = rows.length > 0 || model.footer !== undefined;
48
+ return /*#__PURE__*/React.createElement(Box, {
49
+ "aria-label": hasListboxContent ? listLabel : undefined,
50
+ id: listId,
51
+ role: hasListboxContent ? 'listbox' : undefined
52
+ }, rows.length > 0 ? /*#__PURE__*/React.createElement(RegisteredMenuList, {
53
+ rows: rows,
54
+ Item: Item,
55
+ width: LIST_WIDTH,
56
+ maxHeight: listMaxHeight,
57
+ getItemId: getItemId,
58
+ activeItemKey: activeItemKey,
59
+ selectedItemIndex: selectedItemIndex,
60
+ scrollResetKey: query,
61
+ hasScrollPadding: hasScrollPadding,
62
+ scrollTo: "top-on-reset",
63
+ onItemFocus: onItemFocus,
64
+ onItemBlur: onItemBlur,
65
+ onItemHover: onItemHover,
66
+ onItemLeave: onItemLeave,
67
+ onItemVisibilityChange: onItemVisibilityChange,
68
+ onRenderedItemsChange: onRenderedItemsChange
69
+ }) : query !== '' && /*#__PURE__*/React.createElement(QuickInsertEmptyState, {
70
+ mode: "inline",
71
+ spacing: "spacious"
72
+ }), model.footer && /*#__PURE__*/React.createElement(Box, {
73
+ onMouseMove: onFooterItemHover,
74
+ paddingBlockEnd: hasScrollPadding ? 'space.075' : undefined,
75
+ xcss: styles.footer
76
+ }, /*#__PURE__*/React.createElement(Item, {
77
+ id: getQuickInsertMenuItemId(listId, footerItemIndex),
78
+ isSelected: selectedItemIndex === footerItemIndex,
79
+ isActive: false,
80
+ registration: model.footer
81
+ })));
82
+ };
@@ -0,0 +1,29 @@
1
+ import React from 'react';
2
+ export default function NoResultsIllustration(_ref) {
3
+ var height = _ref.height,
4
+ width = _ref.width;
5
+ return /*#__PURE__*/React.createElement("svg", {
6
+ width: width,
7
+ height: height,
8
+ viewBox: "0 0 57 63",
9
+ fill: "none",
10
+ xmlns: "http://www.w3.org/2000/svg",
11
+ "aria-hidden": "true",
12
+ focusable: "false"
13
+ }, /*#__PURE__*/React.createElement("path", {
14
+ fill: "#dddee1",
15
+ d: "M23.5 49.223c-5.196 0-10.166-1.955-14.442-5.814a30 30 0 0 1-3.545-3.85 29.6 29.6 0 0 1-2.868-4.456c-4.56-8.775-3.179-18.124 3.79-25.647a32.6 32.6 0 0 1 3.942-3.593 32 32 0 0 1 4.287-2.81c9.017-4.89 18.424-3.869 25.803 2.8a30.3 30.3 0 0 1 3.59 3.897 29.7 29.7 0 0 1 2.837 4.396C51.5 22.96 50.12 32.324 43.106 39.83a31.5 31.5 0 0 1-3.797 3.442 33 33 0 0 1-4.468 2.912c-3.777 2.03-7.62 3.036-11.341 3.036zm2.478-44.539c-2.957 0-6.02.824-9.082 2.489a28 28 0 0 0-3.658 2.396 27.5 27.5 0 0 0-3.37 3.07C4.24 18.711 3.15 25.92 6.798 32.941a25 25 0 0 0 2.42 3.75 25 25 0 0 0 2.981 3.24c5.866 5.299 13.119 6.054 20.427 2.13a27.4 27.4 0 0 0 3.818-2.492 27.5 27.5 0 0 0 3.24-2.936c5.658-6.054 6.741-13.27 3.06-20.318a25 25 0 0 0-2.39-3.698 25.3 25.3 0 0 0-3.021-3.289c-3.418-3.086-7.288-4.645-11.348-4.645z"
16
+ }), /*#__PURE__*/React.createElement("path", {
17
+ fill: "#dddee1",
18
+ d: "M42.822 42.291c-1.21-1.685-2.509-1.675-3.777-.694-1.19.92-1.507 2.164-.24 3.801l1.45 1.873 4.017-3.107z"
19
+ }), /*#__PURE__*/React.createElement("path", {
20
+ fill: "#dddee1",
21
+ d: "m45.28 43.385-6.03 4.663 11.332 14.657 6.03-4.663z"
22
+ }), /*#__PURE__*/React.createElement("path", {
23
+ fill: "#b7b9be",
24
+ d: "m44.31 44.134-4.091 3.163 3.843 4.97 4.091-3.163z"
25
+ }), /*#__PURE__*/React.createElement("path", {
26
+ fill: "#dddee1",
27
+ d: "M26.834 30.328h-3.42v-.217c-.116-2.432 1.264-5.066 3.227-6.143l.037-.02q.08-.042.154-.093c1.071-.69 1.68-1.88 1.643-3.189-.037-1.298-.707-2.439-1.791-3.052a4.5 4.5 0 0 0-2.21-.592c-2.315 0-4.198 1.897-4.198 4.229h-3.42c0-4.23 3.417-7.672 7.618-7.672a7.9 7.9 0 0 1 3.884 1.033c2.14 1.211 3.462 3.437 3.534 5.955.073 2.53-1.125 4.84-3.203 6.18q-.211.139-.424.251c-.815.458-1.497 1.868-1.434 2.97zM24.795 32.303a3.4 3.4 0 0 1 1.096-.004c1.115.183 2.021.965 2.241 2.182l.002.01.002.009a3.4 3.4 0 0 1-.002 1.103v.004c-.216 1.23-1.136 2.009-2.247 2.19a3.417 3.417 0 0 1-1.085-.003c-1.117-.18-2.027-.961-2.249-2.179l-.002-.01-.001-.01a3.3 3.3 0 0 1 0-1.095l.002-.01.001-.01c.223-1.223 1.137-1.992 2.24-2.177z"
28
+ }));
29
+ }