@atlaskit/editor-plugin-quick-insert 29.0.4 → 30.0.1

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 +24 -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 +31 -18
  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 +254 -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 +27 -16
  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 +191 -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 +31 -18
  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 +247 -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 +15 -12
  86. package/registered-menu/model/package.json +10 -0
  87. package/registered-menu/search-analytics/package.json +10 -0
@@ -14,16 +14,14 @@ var compareRanks = function compareRanks(left, right) {
14
14
  }
15
15
  return 0;
16
16
  };
17
- var isVisible = function isVisible(registration) {
18
- var _registration$isHidde;
19
- return ((_registration$isHidde = registration.isHidden) === null || _registration$isHidde === void 0 ? void 0 : _registration$isHidde.call(registration)) !== true;
20
- };
21
- var getChildren = function getChildren(components, parentKey) {
17
+ var getChildren = function getChildren(components, parentKey, surfaceContext) {
22
18
  return components.filter(function (component) {
23
- var _component$parents;
24
- return isVisible(component) && ((_component$parents = component.parents) === null || _component$parents === void 0 ? void 0 : _component$parents.some(function (parent) {
19
+ var _component$parents, _component$isHidden;
20
+ return ((_component$parents = component.parents) === null || _component$parents === void 0 ? void 0 : _component$parents.some(function (parent) {
25
21
  return parent.key === parentKey;
26
- }));
22
+ })) && ((_component$isHidden = component.isHidden) === null || _component$isHidden === void 0 ? void 0 : _component$isHidden.call(component, {
23
+ surfaceContext: surfaceContext
24
+ })) !== true;
27
25
  });
28
26
  };
29
27
  var getParentRank = function getParentRank(registration, parentKey) {
@@ -32,8 +30,8 @@ var getParentRank = function getParentRank(registration, parentKey) {
32
30
  return parent.key === parentKey;
33
31
  })) === null || _registration$parents2 === void 0 ? void 0 : _registration$parents2.rank) !== null && _registration$parents !== void 0 ? _registration$parents : Number.MAX_SAFE_INTEGER;
34
32
  };
35
- var _getDescendantItems = function getDescendantItems(components, parentKey, ancestorRanks, sectionKey) {
36
- return getChildren(components, parentKey).flatMap(function (component) {
33
+ var _getDescendantItems = function getDescendantItems(components, parentKey, ancestorRanks, sectionKey, surfaceContext) {
34
+ return getChildren(components, parentKey, surfaceContext).flatMap(function (component) {
37
35
  var ranks = [].concat(_toConsumableArray(ancestorRanks), [getParentRank(component, parentKey)]);
38
36
  if (component.type === 'menu-item') {
39
37
  return component.component ? [{
@@ -42,7 +40,7 @@ var _getDescendantItems = function getDescendantItems(components, parentKey, anc
42
40
  sectionKeys: [sectionKey]
43
41
  }] : [];
44
42
  }
45
- return _getDescendantItems(components, component.key, ranks, sectionKey);
43
+ return _getDescendantItems(components, component.key, ranks, sectionKey, surfaceContext);
46
44
  });
47
45
  };
48
46
 
@@ -54,12 +52,13 @@ export var createRegistryElementBrowserModel = function createRegistryElementBro
54
52
  var footerKey = _ref.footerKey,
55
53
  overflowKeys = _ref.overflowKeys,
56
54
  recommendedSectionKey = _ref.recommendedSectionKey,
57
- rootKey = _ref.rootKey;
55
+ rootKey = _ref.rootKey,
56
+ surfaceContext = _ref.surfaceContext;
58
57
  var excludedKeys = new Set([footerKey, recommendedSectionKey].concat(_toConsumableArray(overflowKeys)));
59
58
  var visibleComponents = components.filter(function (component) {
60
- return isVisible(component) && !excludedKeys.has(component.key);
59
+ return !excludedKeys.has(component.key);
61
60
  });
62
- var sections = getChildren(visibleComponents, rootKey).filter(function (component) {
61
+ var sections = getChildren(visibleComponents, rootKey, surfaceContext).filter(function (component) {
63
62
  return component.type === 'menu-section';
64
63
  }).map(function (section) {
65
64
  return {
@@ -71,7 +70,7 @@ export var createRegistryElementBrowserModel = function createRegistryElementBro
71
70
  });
72
71
  var itemByKey = new Map();
73
72
  sections.forEach(function (section) {
74
- _getDescendantItems(visibleComponents, section.key, [section.rank], section.key).forEach(function (item) {
73
+ _getDescendantItems(visibleComponents, section.key, [section.rank], section.key, surfaceContext).forEach(function (item) {
75
74
  var existing = itemByKey.get(item.registration.key);
76
75
  if (!existing) {
77
76
  itemByKey.set(item.registration.key, item);
@@ -121,17 +120,31 @@ export var getRegistryElementBrowserItems = function getRegistryElementBrowserIt
121
120
  if (!normalizedQuery) {
122
121
  return itemsWithDescriptions;
123
122
  }
124
- return itemsWithDescriptions.flatMap(function (item) {
123
+ var matches = itemsWithDescriptions.flatMap(function (item) {
125
124
  var _item$registration$ma, _item$registration;
126
125
  var result = (_item$registration$ma = (_item$registration = item.registration).match) === null || _item$registration$ma === void 0 ? void 0 : _item$registration$ma.call(_item$registration, {
127
126
  formatMessage: formatMessage,
127
+ itemKey: item.registration.key,
128
128
  query: normalizedQuery
129
129
  });
130
130
  return result ? [_objectSpread(_objectSpread({}, item), {}, {
131
+ priorityGroup: result.priorityGroup !== undefined && Number.isFinite(result.priorityGroup) ? result.priorityGroup : undefined,
131
132
  score: Math.min(1, Math.max(0, result.score))
132
133
  })] : [];
133
- }).sort(function (left, right) {
134
+ });
135
+ var prioritized = matches.filter(function (_ref4) {
136
+ var priorityGroup = _ref4.priorityGroup;
137
+ return priorityGroup !== undefined;
138
+ });
139
+ var unprioritized = matches.filter(function (_ref5) {
140
+ var priorityGroup = _ref5.priorityGroup;
141
+ return priorityGroup === undefined;
142
+ });
143
+ return [].concat(_toConsumableArray(prioritized.sort(function (left, right) {
144
+ var _right$priorityGroup, _left$priorityGroup;
145
+ return ((_right$priorityGroup = right.priorityGroup) !== null && _right$priorityGroup !== void 0 ? _right$priorityGroup : 0) - ((_left$priorityGroup = left.priorityGroup) !== null && _left$priorityGroup !== void 0 ? _left$priorityGroup : 0) || left.score - right.score || compareRanks(left.ranks, right.ranks) || left.registration.key.localeCompare(right.registration.key);
146
+ })), _toConsumableArray(unprioritized.sort(function (left, right) {
134
147
  var _left$ranks$, _right$ranks$;
135
148
  return ((_left$ranks$ = left.ranks[0]) !== null && _left$ranks$ !== void 0 ? _left$ranks$ : 0) - ((_right$ranks$ = right.ranks[0]) !== null && _right$ranks$ !== void 0 ? _right$ranks$ : 0) || left.score - right.score || compareRanks(left.ranks, right.ranks) || left.registration.key.localeCompare(right.registration.key);
136
- });
149
+ })));
137
150
  };
@@ -1,12 +1,7 @@
1
1
  import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
4
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
5
2
  import React from 'react';
6
3
  import { useIntl } from 'react-intl';
7
4
  import { BLOCK_TEMPLATES_SECTION, CREATE_SECTION, DATA_AND_CHARTS_SECTION, EMBED_SECTION, MEDIA_SECTION, MENU, OTHER_SECTION, RECOMMENDED_SECTION, ROVO_SECTION, STRUCTURE_SECTION, TEXT_FORMATTING_SECTION, VIEW_ALL_ELEMENTS_MENU_ITEM } from '@atlaskit/editor-common/quick-insert/keys';
8
- import { QuickInsertMenuRoot } from '@atlaskit/editor-common/quick-insert/menu-root';
9
- import { QuickInsertMenuSection } from '@atlaskit/editor-common/quick-insert/menu-section';
10
5
  import { messages } from '@atlaskit/editor-common/quick-insert/messages';
11
6
  import { CATEGORY_VIEW_MORE_RANK, QUICK_INSERT_MENU_RANK } from '@atlaskit/editor-common/quick-insert/rank';
12
7
  import { getMenuFooterSectionKey } from '@atlaskit/editor-common/type-ahead-get-menu-footer-section-key';
@@ -15,6 +10,8 @@ import { createRecommendedSnapshotCache, MAX_RECOMMENDED_ITEMS, RECOMMENDED_SLOT
15
10
  import { QuickInsertMenuFooterItem } from './QuickInsertMenuFooterItem';
16
11
  import { QuickInsertRecommendedSlot } from './QuickInsertRecommendedSlot';
17
12
  import { QuickInsertSectionOverflowMenuItem } from './QuickInsertSectionOverflowMenuItem';
13
+ import QuickInsertMenuRoot from './registered-menu/QuickInsertMenuRoot';
14
+ import { QuickInsertMenuSection } from './registered-menu/QuickInsertMenuSection';
18
15
  var categories = [{
19
16
  message: messages.categoryRecommended,
20
17
  section: RECOMMENDED_SECTION
@@ -61,7 +58,10 @@ export var getQuickInsertComponents = function getQuickInsertComponents(_ref2) {
61
58
  var api = _ref2.api,
62
59
  includeElementBrowserItems = _ref2.includeElementBrowserItems,
63
60
  isRecommendedItem = _ref2.isRecommendedItem,
64
- maxRecommendedItems = _ref2.maxRecommendedItems;
61
+ maxRecommendedItems = _ref2.maxRecommendedItems,
62
+ getItemRank = _ref2.getItemRank,
63
+ emptyStateHandler = _ref2.emptyStateHandler,
64
+ fireAnalyticsEvent = _ref2.fireAnalyticsEvent;
65
65
  var recommendedSnapshot = createRecommendedSnapshotCache({
66
66
  api: api,
67
67
  isRecommendedItem: isRecommendedItem,
@@ -86,21 +86,33 @@ export var getQuickInsertComponents = function getQuickInsertComponents(_ref2) {
86
86
  surfaceContext = _ref3.surfaceContext;
87
87
  return !recommendedSnapshot.getSnapshot(surfaceContext)[index];
88
88
  },
89
- component: function component(props) {
90
- return /*#__PURE__*/React.createElement(QuickInsertRecommendedSlot, _objectSpread(_objectSpread({}, props), {}, {
89
+ component: function component(_ref4) {
90
+ var children = _ref4.children,
91
+ parents = _ref4.parents,
92
+ surfaceContext = _ref4.surfaceContext;
93
+ return /*#__PURE__*/React.createElement(QuickInsertRecommendedSlot, {
94
+ parents: parents,
95
+ surfaceContext: surfaceContext,
91
96
  index: index,
92
97
  getSnapshot: recommendedSnapshot.getSnapshot
93
- }));
98
+ }, children);
94
99
  }
95
100
  };
96
101
  });
97
102
  return [{
98
103
  key: MENU.key,
99
104
  type: MENU.type,
100
- component: QuickInsertMenuRoot
101
- }].concat(recommendedSlots, _toConsumableArray(categories.flatMap(function (_ref4) {
102
- var message = _ref4.message,
103
- section = _ref4.section;
105
+ component: function component(_ref5) {
106
+ var children = _ref5.children;
107
+ return /*#__PURE__*/React.createElement(QuickInsertMenuRoot, {
108
+ getItemRank: getItemRank,
109
+ emptyStateHandler: emptyStateHandler,
110
+ fireAnalyticsEvent: fireAnalyticsEvent
111
+ }, children);
112
+ }
113
+ }].concat(recommendedSlots, _toConsumableArray(categories.flatMap(function (_ref6) {
114
+ var message = _ref6.message,
115
+ section = _ref6.section;
104
116
  return [{
105
117
  key: section.key,
106
118
  type: section.type,
@@ -111,8 +123,8 @@ export var getQuickInsertComponents = function getQuickInsertComponents(_ref2) {
111
123
  }],
112
124
  component: createSectionComponent(message),
113
125
  isHidden: section.key === RECOMMENDED_SECTION.key ? function () {
114
- var _ref5 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
115
- surfaceContext = _ref5.surfaceContext;
126
+ var _ref7 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
127
+ surfaceContext = _ref7.surfaceContext;
116
128
  return recommendedSnapshot.getSnapshot(surfaceContext).length === 0;
117
129
  } : undefined
118
130
  }].concat(_toConsumableArray(includeElementBrowserItems && section.key !== RECOMMENDED_SECTION.key ? [{
@@ -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)}