@atlaskit/editor-plugin-quick-insert 29.0.4 → 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 +12 -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
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @atlaskit/editor-plugin-quick-insert
2
2
 
3
+ ## 30.0.0
4
+
5
+ ### Minor 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
+
11
+ ### Patch Changes
12
+
13
+ - Updated dependencies
14
+
3
15
  ## 29.0.4
4
16
 
5
17
  ### Patch Changes
@@ -13,6 +13,7 @@ var _react = _interopRequireDefault(require("react"));
13
13
  var _reactIntl = require("react-intl");
14
14
  var _isSsr = require("@atlaskit/editor-common/is-ssr");
15
15
  var _insertBlock = require("@atlaskit/editor-common/messages/insert-block");
16
+ var _keys = require("@atlaskit/editor-common/quick-insert/keys");
16
17
  var _quickInsertRank = require("@atlaskit/editor-common/quick-insert/quick-insert-rank");
17
18
  var _utils = require("@atlaskit/editor-common/quick-insert/utils");
18
19
  var _safePlugin = require("@atlaskit/editor-common/safe-plugin");
@@ -44,6 +45,7 @@ var quickInsertPlugin = exports.quickInsertPlugin = function quickInsertPlugin(_
44
45
  var getItemRank = (0, _quickInsertRank.createQuickInsertRankResolver)(options === null || options === void 0 ? void 0 : options.getItemRank);
45
46
  var typeAhead = {
46
47
  id: _typeAhead.TypeAheadAvailableNodes.QUICK_INSERT,
48
+ registeredMenuKey: (0, _isExperimentEnabled.isExperimentEnabled)('platform_editor_slash_command') ? _keys.MENU.key : undefined,
47
49
  getRegisteredItemRank: getItemRank,
48
50
  trigger: '/',
49
51
  // Support fullwidth slash (U+FF0F) used by Japanese/CJK keyboards (e.g. typing / on a Japanese keyboard layout)
@@ -85,12 +87,15 @@ var quickInsertPlugin = exports.quickInsertPlugin = function quickInsertPlugin(_
85
87
  } : undefined
86
88
  };
87
89
  if ((0, _isExperimentEnabled.isExperimentEnabled)('platform_editor_slash_command')) {
88
- var _api$uiControlRegistr;
90
+ var _api$uiControlRegistr, _api$analytics;
89
91
  api === null || api === void 0 || (_api$uiControlRegistr = api.uiControlRegistry) === null || _api$uiControlRegistr === void 0 || _api$uiControlRegistr.actions.register((0, _getQuickInsertComponents.getQuickInsertComponents)({
90
92
  api: api,
91
- includeElementBrowserItems: (options === null || options === void 0 ? void 0 : options.enableElementBrowser) === true,
93
+ getItemRank: getItemRank,
92
94
  isRecommendedItem: options === null || options === void 0 ? void 0 : options.isRecommendedItem,
93
- maxRecommendedItems: options === null || options === void 0 ? void 0 : options.maxRecommendedItems
95
+ maxRecommendedItems: options === null || options === void 0 ? void 0 : options.maxRecommendedItems,
96
+ emptyStateHandler: options === null || options === void 0 ? void 0 : options.emptyStateHandler,
97
+ fireAnalyticsEvent: api === null || api === void 0 || (_api$analytics = api.analytics) === null || _api$analytics === void 0 ? void 0 : _api$analytics.actions.fireAnalyticsEvent,
98
+ includeElementBrowserItems: (options === null || options === void 0 ? void 0 : options.enableElementBrowser) === true
94
99
  }));
95
100
  }
96
101
  if ((0, _isExperimentEnabled.isExperimentEnabled)('platform_editor_block_control_migration') && (options === null || options === void 0 ? void 0 : options.blockControlButtonEnabled) !== false) {
@@ -149,8 +154,8 @@ var quickInsertPlugin = exports.quickInsertPlugin = function quickInsertPlugin(_
149
154
  return (0, _quickInsertOpenExperience.getQuickInsertOpenExperiencePlugin)({
150
155
  refs: refs,
151
156
  dispatchAnalyticsEvent: function dispatchAnalyticsEvent(payload) {
152
- var _api$analytics;
153
- return api === null || api === void 0 || (_api$analytics = api.analytics) === null || _api$analytics === void 0 || (_api$analytics = _api$analytics.actions) === null || _api$analytics === void 0 ? void 0 : _api$analytics.fireAnalyticsEvent(payload);
157
+ var _api$analytics2;
158
+ return api === null || api === void 0 || (_api$analytics2 = api.analytics) === null || _api$analytics2 === void 0 || (_api$analytics2 = _api$analytics2.actions) === null || _api$analytics2 === void 0 ? void 0 : _api$analytics2.fireAnalyticsEvent(payload);
154
159
  }
155
160
  });
156
161
  }
@@ -5,16 +5,19 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.QuickInsertRecommendedSlot = void 0;
8
- var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
9
8
  var _react = _interopRequireDefault(require("react"));
10
9
  var _useQuickInsertContext = require("@atlaskit/editor-common/quick-insert/use-quick-insert-context");
11
- var _excluded = ["index", "getSnapshot"];
12
10
  var QuickInsertRecommendedSlot = exports.QuickInsertRecommendedSlot = function QuickInsertRecommendedSlot(_ref) {
13
- var index = _ref.index,
14
- getSnapshot = _ref.getSnapshot,
15
- props = (0, _objectWithoutProperties2.default)(_ref, _excluded);
11
+ var children = _ref.children,
12
+ parents = _ref.parents,
13
+ surfaceContext = _ref.surfaceContext,
14
+ index = _ref.index,
15
+ getSnapshot = _ref.getSnapshot;
16
16
  var _useQuickInsertContex = (0, _useQuickInsertContext.useQuickInsertContext)(),
17
- surfaceContext = _useQuickInsertContex.surfaceContext;
18
- var item = getSnapshot(surfaceContext)[index];
19
- return item !== null && item !== void 0 && item.component ? /*#__PURE__*/_react.default.createElement(item.component, props) : null;
17
+ menuSurfaceContext = _useQuickInsertContex.surfaceContext;
18
+ var item = getSnapshot(menuSurfaceContext)[index];
19
+ return item !== null && item !== void 0 && item.component ? /*#__PURE__*/_react.default.createElement(item.component, {
20
+ parents: parents,
21
+ surfaceContext: surfaceContext
22
+ }, children) : null;
20
23
  };
@@ -16,7 +16,7 @@ var _reactIntl = require("react-intl");
16
16
  var _button = _interopRequireDefault(require("@atlaskit/button/icon/button"));
17
17
  var _quickInsert = require("@atlaskit/editor-common/quick-insert");
18
18
  var _keys = require("@atlaskit/editor-common/quick-insert/keys");
19
- var _useSearchAnalytics = require("@atlaskit/editor-common/quick-insert/use-search-analytics");
19
+ var _surfaceContext = require("@atlaskit/editor-common/registered-menu/surface-context");
20
20
  var _typeAheadGetMenuFooterSectionKey = require("@atlaskit/editor-common/type-ahead-get-menu-footer-section-key");
21
21
  var _typeAheadGetSectionOverflowItemKey = require("@atlaskit/editor-common/type-ahead-get-section-overflow-item-key");
22
22
  var _heading = _interopRequireDefault(require("@atlaskit/heading/heading"));
@@ -29,6 +29,7 @@ var _modalTitle = _interopRequireDefault(require("@atlaskit/modal-dialog/modal-t
29
29
  var _modalTransition = _interopRequireDefault(require("@atlaskit/modal-dialog/modal-transition"));
30
30
  var _fg = require("@atlaskit/platform-feature-flags/fg");
31
31
  var _textField = _interopRequireDefault(require("@atlaskit/textfield/text-field"));
32
+ var _useQuickInsertSearchAnalytics = require("../registered-menu/useQuickInsertSearchAnalytics");
32
33
  var _model = require("./model");
33
34
  var _RegistryElementBrowserCategories = require("./RegistryElementBrowserCategories");
34
35
  var _RegistryElementBrowserFooter = require("./RegistryElementBrowserFooter");
@@ -71,13 +72,34 @@ var RegistryElementBrowser = exports.RegistryElementBrowser = function RegistryE
71
72
  onSelect = _ref.onSelect;
72
73
  var _useIntl = (0, _reactIntl.useIntl)(),
73
74
  formatMessage = _useIntl.formatMessage;
74
- var _useState = (0, _react.useState)({
75
+ var _useState = (0, _react.useState)(function () {
76
+ return {
77
+ isOpen: isOpen,
78
+ menuOpenId: Symbol('element-browser')
79
+ };
80
+ }),
81
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
82
+ session = _useState2[0],
83
+ setSession = _useState2[1];
84
+ if (session.isOpen !== isOpen) {
85
+ setSession({
86
+ isOpen: isOpen,
87
+ menuOpenId: isOpen ? Symbol('element-browser') : session.menuOpenId
88
+ });
89
+ }
90
+ var surfaceContext = (0, _react.useMemo)(function () {
91
+ return (0, _surfaceContext.createRegisteredMenuSurfaceContext)({
92
+ menuOpenId: session.menuOpenId,
93
+ surface: 'element-browser'
94
+ });
95
+ }, [session.menuOpenId]);
96
+ var _useState3 = (0, _react.useState)({
75
97
  query: '',
76
98
  section: defaultSection
77
99
  }),
78
- _useState2 = (0, _slicedToArray2.default)(_useState, 2),
79
- browserState = _useState2[0],
80
- setBrowserState = _useState2[1];
100
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
101
+ browserState = _useState4[0],
102
+ setBrowserState = _useState4[1];
81
103
  var query = browserState.query,
82
104
  section = browserState.section,
83
105
  selectedRegistration = browserState.selectedRegistration;
@@ -85,6 +107,7 @@ var RegistryElementBrowser = exports.RegistryElementBrowser = function RegistryE
85
107
  var browserModel = (0, _react.useMemo)(function () {
86
108
  var model = (0, _model.createRegistryElementBrowserModel)(components, {
87
109
  footerKey: (0, _typeAheadGetMenuFooterSectionKey.getMenuFooterSectionKey)(_keys.MENU.key),
110
+ surfaceContext: surfaceContext,
88
111
  overflowKeys: new Set(components.filter(function (component) {
89
112
  return component.type === 'menu-section';
90
113
  }).map(function (component) {
@@ -107,7 +130,7 @@ var RegistryElementBrowser = exports.RegistryElementBrowser = function RegistryE
107
130
  section: effectiveSection
108
131
  })
109
132
  };
110
- }, [components, formatMessage, query, section]);
133
+ }, [components, formatMessage, query, section, surfaceContext]);
111
134
  var model = browserModel.model,
112
135
  effectiveSection = browserModel.effectiveSection,
113
136
  items = browserModel.items;
@@ -167,7 +190,7 @@ var RegistryElementBrowser = exports.RegistryElementBrowser = function RegistryE
167
190
  }
168
191
  }, [browserState.invalidation, isOpen, onClearSelection]);
169
192
  var resultCount = items.length || (!isLoading && query.trim() ? (_model$fallbackItems$ = (_model$fallbackItems2 = model.fallbackItems) === null || _model$fallbackItems2 === void 0 ? void 0 : _model$fallbackItems2.length) !== null && _model$fallbackItems$ !== void 0 ? _model$fallbackItems$ : 0 : 0);
170
- var flushSearchAnalytics = (0, _useSearchAnalytics.useQuickInsertSearchAnalytics)({
193
+ var flushSearchAnalytics = (0, _useQuickInsertSearchAnalytics.useQuickInsertSearchAnalytics)({
171
194
  query: query,
172
195
  resultCount: items.length,
173
196
  surface: 'element-browser',
@@ -361,6 +384,7 @@ var RegistryElementBrowser = exports.RegistryElementBrowser = function RegistryE
361
384
  fallbackItems: model.fallbackItems,
362
385
  query: query,
363
386
  resultsId: resultsId,
387
+ surfaceContext: surfaceContext,
364
388
  section: effectiveSection,
365
389
  selectedKey: selectedKey,
366
390
  onKeyDown: onKeyDown,
@@ -10,8 +10,8 @@ require("./RegistryElementBrowserSearchResults.compiled.css");
10
10
  var _runtime = require("@compiled/react/runtime");
11
11
  var _react = _interopRequireWildcard(require("react"));
12
12
  var _reactIntl = require("react-intl");
13
- var _emptyState = require("@atlaskit/editor-common/quick-insert/empty-state");
14
13
  var _provider = require("@atlaskit/editor-common/quick-insert/provider");
14
+ var _QuickInsertEmptyState = require("../registered-menu/QuickInsertEmptyState");
15
15
  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); }
16
16
  // oxlint-disable-next-line eslint/no-redeclare
17
17
 
@@ -25,7 +25,8 @@ var RegistryElementBrowserItem = function RegistryElementBrowserItem(_ref) {
25
25
  isOffline = _ref.isOffline,
26
26
  isSelected = _ref.isSelected,
27
27
  item = _ref.item,
28
- onSelect = _ref.onSelect;
28
+ onSelect = _ref.onSelect,
29
+ surfaceContext = _ref.surfaceContext;
29
30
  var _item$registration = item.registration,
30
31
  Component = _item$registration.component,
31
32
  key = _item$registration.key;
@@ -41,15 +42,18 @@ var RegistryElementBrowserItem = function RegistryElementBrowserItem(_ref) {
41
42
  select: function select(handler) {
42
43
  return onSelect(key, handler);
43
44
  },
44
- surface: 'element-browser'
45
+ surfaceContext: surfaceContext
45
46
  };
46
- }, [editorView, isOffline, isSelected, item.description, key, onSelect]);
47
+ }, [editorView, isOffline, isSelected, item.description, key, onSelect, surfaceContext]);
47
48
  if (!Component) {
48
49
  return null;
49
50
  }
50
51
  return /*#__PURE__*/_react.default.createElement(_provider.QuickInsertProvider, {
51
52
  value: contextValue
52
- }, /*#__PURE__*/_react.default.createElement(Component, undefined, null));
53
+ }, /*#__PURE__*/_react.default.createElement(Component, {
54
+ parents: item.registration.parents,
55
+ surfaceContext: surfaceContext
56
+ }, null));
53
57
  };
54
58
  var RegistryElementBrowserSearchResults = exports.RegistryElementBrowserSearchResults = function RegistryElementBrowserSearchResults(_ref2) {
55
59
  var editorView = _ref2.editorView,
@@ -63,6 +67,7 @@ var RegistryElementBrowserSearchResults = exports.RegistryElementBrowserSearchRe
63
67
  resultsId = _ref2.resultsId,
64
68
  section = _ref2.section,
65
69
  selectedKey = _ref2.selectedKey,
70
+ surfaceContext = _ref2.surfaceContext,
66
71
  onKeyDown = _ref2.onKeyDown,
67
72
  onSelect = _ref2.onSelect;
68
73
  var _useIntl = (0, _reactIntl.useIntl)(),
@@ -103,9 +108,10 @@ var RegistryElementBrowserSearchResults = exports.RegistryElementBrowserSearchRe
103
108
  isSelected: selectedKey === item.registration.key,
104
109
  item: item,
105
110
  key: item.registration.key,
106
- onSelect: onSelect
111
+ onSelect: onSelect,
112
+ surfaceContext: surfaceContext
107
113
  });
108
- })), shouldRenderEmptyState && !hasFallbackItems && query.trim().length > 0 && /*#__PURE__*/_react.default.createElement(_emptyState.QuickInsertEmptyState, {
114
+ })), shouldRenderEmptyState && !hasFallbackItems && query.trim().length > 0 && /*#__PURE__*/_react.default.createElement(_QuickInsertEmptyState.QuickInsertEmptyState, {
109
115
  mode: "full"
110
116
  }), emptyState && /*#__PURE__*/_react.default.createElement("div", {
111
117
  className: (0, _runtime.ax)(["_yyhyjvu9 _1ul9idpf _1bsb1osq", styles.fallbackMarketplace])
@@ -21,16 +21,14 @@ var compareRanks = function compareRanks(left, right) {
21
21
  }
22
22
  return 0;
23
23
  };
24
- var isVisible = function isVisible(registration) {
25
- var _registration$isHidde;
26
- return ((_registration$isHidde = registration.isHidden) === null || _registration$isHidde === void 0 ? void 0 : _registration$isHidde.call(registration)) !== true;
27
- };
28
- var getChildren = function getChildren(components, parentKey) {
24
+ var getChildren = function getChildren(components, parentKey, surfaceContext) {
29
25
  return components.filter(function (component) {
30
- var _component$parents;
31
- return isVisible(component) && ((_component$parents = component.parents) === null || _component$parents === void 0 ? void 0 : _component$parents.some(function (parent) {
26
+ var _component$parents, _component$isHidden;
27
+ return ((_component$parents = component.parents) === null || _component$parents === void 0 ? void 0 : _component$parents.some(function (parent) {
32
28
  return parent.key === parentKey;
33
- }));
29
+ })) && ((_component$isHidden = component.isHidden) === null || _component$isHidden === void 0 ? void 0 : _component$isHidden.call(component, {
30
+ surfaceContext: surfaceContext
31
+ })) !== true;
34
32
  });
35
33
  };
36
34
  var getParentRank = function getParentRank(registration, parentKey) {
@@ -39,8 +37,8 @@ var getParentRank = function getParentRank(registration, parentKey) {
39
37
  return parent.key === parentKey;
40
38
  })) === null || _registration$parents2 === void 0 ? void 0 : _registration$parents2.rank) !== null && _registration$parents !== void 0 ? _registration$parents : Number.MAX_SAFE_INTEGER;
41
39
  };
42
- var _getDescendantItems = function getDescendantItems(components, parentKey, ancestorRanks, sectionKey) {
43
- return getChildren(components, parentKey).flatMap(function (component) {
40
+ var _getDescendantItems = function getDescendantItems(components, parentKey, ancestorRanks, sectionKey, surfaceContext) {
41
+ return getChildren(components, parentKey, surfaceContext).flatMap(function (component) {
44
42
  var ranks = [].concat((0, _toConsumableArray2.default)(ancestorRanks), [getParentRank(component, parentKey)]);
45
43
  if (component.type === 'menu-item') {
46
44
  return component.component ? [{
@@ -49,7 +47,7 @@ var _getDescendantItems = function getDescendantItems(components, parentKey, anc
49
47
  sectionKeys: [sectionKey]
50
48
  }] : [];
51
49
  }
52
- return _getDescendantItems(components, component.key, ranks, sectionKey);
50
+ return _getDescendantItems(components, component.key, ranks, sectionKey, surfaceContext);
53
51
  });
54
52
  };
55
53
 
@@ -61,12 +59,13 @@ var createRegistryElementBrowserModel = exports.createRegistryElementBrowserMode
61
59
  var footerKey = _ref.footerKey,
62
60
  overflowKeys = _ref.overflowKeys,
63
61
  recommendedSectionKey = _ref.recommendedSectionKey,
64
- rootKey = _ref.rootKey;
62
+ rootKey = _ref.rootKey,
63
+ surfaceContext = _ref.surfaceContext;
65
64
  var excludedKeys = new Set([footerKey, recommendedSectionKey].concat((0, _toConsumableArray2.default)(overflowKeys)));
66
65
  var visibleComponents = components.filter(function (component) {
67
- return isVisible(component) && !excludedKeys.has(component.key);
66
+ return !excludedKeys.has(component.key);
68
67
  });
69
- var sections = getChildren(visibleComponents, rootKey).filter(function (component) {
68
+ var sections = getChildren(visibleComponents, rootKey, surfaceContext).filter(function (component) {
70
69
  return component.type === 'menu-section';
71
70
  }).map(function (section) {
72
71
  return {
@@ -78,7 +77,7 @@ var createRegistryElementBrowserModel = exports.createRegistryElementBrowserMode
78
77
  });
79
78
  var itemByKey = new Map();
80
79
  sections.forEach(function (section) {
81
- _getDescendantItems(visibleComponents, section.key, [section.rank], section.key).forEach(function (item) {
80
+ _getDescendantItems(visibleComponents, section.key, [section.rank], section.key, surfaceContext).forEach(function (item) {
82
81
  var existing = itemByKey.get(item.registration.key);
83
82
  if (!existing) {
84
83
  itemByKey.set(item.registration.key, item);
@@ -6,12 +6,9 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.getQuickInsertComponents = void 0;
8
8
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
9
  var _react = _interopRequireDefault(require("react"));
11
10
  var _reactIntl = require("react-intl");
12
11
  var _keys = require("@atlaskit/editor-common/quick-insert/keys");
13
- var _menuRoot = require("@atlaskit/editor-common/quick-insert/menu-root");
14
- var _menuSection = require("@atlaskit/editor-common/quick-insert/menu-section");
15
12
  var _messages = require("@atlaskit/editor-common/quick-insert/messages");
16
13
  var _rank = require("@atlaskit/editor-common/quick-insert/rank");
17
14
  var _typeAheadGetMenuFooterSectionKey = require("@atlaskit/editor-common/type-ahead-get-menu-footer-section-key");
@@ -20,8 +17,8 @@ var _getRecommendedComponents = require("./getRecommendedComponents");
20
17
  var _QuickInsertMenuFooterItem = require("./QuickInsertMenuFooterItem");
21
18
  var _QuickInsertRecommendedSlot = require("./QuickInsertRecommendedSlot");
22
19
  var _QuickInsertSectionOverflowMenuItem = require("./QuickInsertSectionOverflowMenuItem");
23
- 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; }
24
- 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) { (0, _defineProperty2.default)(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; }
20
+ var _QuickInsertMenuRoot = _interopRequireDefault(require("./registered-menu/QuickInsertMenuRoot"));
21
+ var _QuickInsertMenuSection = require("./registered-menu/QuickInsertMenuSection");
25
22
  var categories = [{
26
23
  message: _messages.messages.categoryRecommended,
27
24
  section: _keys.RECOMMENDED_SECTION
@@ -58,7 +55,7 @@ var createSectionComponent = function createSectionComponent(message) {
58
55
  var children = _ref.children;
59
56
  var _useIntl = (0, _reactIntl.useIntl)(),
60
57
  formatMessage = _useIntl.formatMessage;
61
- return /*#__PURE__*/_react.default.createElement(_menuSection.QuickInsertMenuSection, {
58
+ return /*#__PURE__*/_react.default.createElement(_QuickInsertMenuSection.QuickInsertMenuSection, {
62
59
  title: formatMessage(message)
63
60
  }, children);
64
61
  };
@@ -68,7 +65,10 @@ var getQuickInsertComponents = exports.getQuickInsertComponents = function getQu
68
65
  var api = _ref2.api,
69
66
  includeElementBrowserItems = _ref2.includeElementBrowserItems,
70
67
  isRecommendedItem = _ref2.isRecommendedItem,
71
- maxRecommendedItems = _ref2.maxRecommendedItems;
68
+ maxRecommendedItems = _ref2.maxRecommendedItems,
69
+ getItemRank = _ref2.getItemRank,
70
+ emptyStateHandler = _ref2.emptyStateHandler,
71
+ fireAnalyticsEvent = _ref2.fireAnalyticsEvent;
72
72
  var recommendedSnapshot = (0, _getRecommendedComponents.createRecommendedSnapshotCache)({
73
73
  api: api,
74
74
  isRecommendedItem: isRecommendedItem,
@@ -93,21 +93,33 @@ var getQuickInsertComponents = exports.getQuickInsertComponents = function getQu
93
93
  surfaceContext = _ref3.surfaceContext;
94
94
  return !recommendedSnapshot.getSnapshot(surfaceContext)[index];
95
95
  },
96
- component: function component(props) {
97
- return /*#__PURE__*/_react.default.createElement(_QuickInsertRecommendedSlot.QuickInsertRecommendedSlot, _objectSpread(_objectSpread({}, props), {}, {
96
+ component: function component(_ref4) {
97
+ var children = _ref4.children,
98
+ parents = _ref4.parents,
99
+ surfaceContext = _ref4.surfaceContext;
100
+ return /*#__PURE__*/_react.default.createElement(_QuickInsertRecommendedSlot.QuickInsertRecommendedSlot, {
101
+ parents: parents,
102
+ surfaceContext: surfaceContext,
98
103
  index: index,
99
104
  getSnapshot: recommendedSnapshot.getSnapshot
100
- }));
105
+ }, children);
101
106
  }
102
107
  };
103
108
  });
104
109
  return [{
105
110
  key: _keys.MENU.key,
106
111
  type: _keys.MENU.type,
107
- component: _menuRoot.QuickInsertMenuRoot
108
- }].concat(recommendedSlots, (0, _toConsumableArray2.default)(categories.flatMap(function (_ref4) {
109
- var message = _ref4.message,
110
- section = _ref4.section;
112
+ component: function component(_ref5) {
113
+ var children = _ref5.children;
114
+ return /*#__PURE__*/_react.default.createElement(_QuickInsertMenuRoot.default, {
115
+ getItemRank: getItemRank,
116
+ emptyStateHandler: emptyStateHandler,
117
+ fireAnalyticsEvent: fireAnalyticsEvent
118
+ }, children);
119
+ }
120
+ }].concat(recommendedSlots, (0, _toConsumableArray2.default)(categories.flatMap(function (_ref6) {
121
+ var message = _ref6.message,
122
+ section = _ref6.section;
111
123
  return [{
112
124
  key: section.key,
113
125
  type: section.type,
@@ -118,8 +130,8 @@ var getQuickInsertComponents = exports.getQuickInsertComponents = function getQu
118
130
  }],
119
131
  component: createSectionComponent(message),
120
132
  isHidden: section.key === _keys.RECOMMENDED_SECTION.key ? function () {
121
- var _ref5 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
122
- surfaceContext = _ref5.surfaceContext;
133
+ var _ref7 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
134
+ surfaceContext = _ref7.surfaceContext;
123
135
  return recommendedSnapshot.getSnapshot(surfaceContext).length === 0;
124
136
  } : undefined
125
137
  }].concat((0, _toConsumableArray2.default)(includeElementBrowserItems && section.key !== _keys.RECOMMENDED_SECTION.key ? [{
@@ -8,9 +8,9 @@ var _error = require("@atlaskit/editor-common/monitoring/error");
8
8
  var _getProviderMenuItemKey = require("@atlaskit/editor-common/quick-insert/get-provider-menu-item-key");
9
9
  var _isRecommendedItem = require("@atlaskit/editor-common/quick-insert/is-recommended-item");
10
10
  var _keys = require("@atlaskit/editor-common/quick-insert/keys");
11
+ var _surfaceContext = require("@atlaskit/editor-common/registered-menu/surface-context");
11
12
  var _typeAheadIsMenuFooterSectionKey = require("@atlaskit/editor-common/type-ahead-is-menu-footer-section-key");
12
13
  var _typeAheadIsSectionOverflowItemKey = require("@atlaskit/editor-common/type-ahead-is-section-overflow-item-key");
13
- var _typeAheadSurfaceContext = require("@atlaskit/editor-common/type-ahead-surface-context");
14
14
  var MAX_RECOMMENDED_ITEMS = exports.MAX_RECOMMENDED_ITEMS = 5;
15
15
  var RECOMMENDED_SLOT_KEY_PREFIX = exports.RECOMMENDED_SLOT_KEY_PREFIX = 'quick-insert-recommended-slot-';
16
16
  var isRecommendedSlotKey = exports.isRecommendedSlotKey = function isRecommendedSlotKey(key) {
@@ -82,7 +82,7 @@ var createRecommendedSnapshotCache = exports.createRecommendedSnapshotCache = fu
82
82
  var snapshot;
83
83
  var getSnapshot = function getSnapshot(surfaceContext) {
84
84
  var _surfaceContext$get, _snapshot;
85
- var menuOpenId = surfaceContext === null || surfaceContext === void 0 || (_surfaceContext$get = surfaceContext.get(_typeAheadSurfaceContext.TYPE_AHEAD_SURFACE_CONTEXT)) === null || _surfaceContext$get === void 0 ? void 0 : _surfaceContext$get.menuOpenId;
85
+ var menuOpenId = surfaceContext === null || surfaceContext === void 0 || (_surfaceContext$get = surfaceContext.get(_surfaceContext.REGISTERED_MENU_SURFACE_CONTEXT)) === null || _surfaceContext$get === void 0 ? void 0 : _surfaceContext$get.menuOpenId;
86
86
  if (!surfaceContext || !menuOpenId) {
87
87
  return [];
88
88
  }
@@ -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,61 @@
1
+ /* QuickInsertEmptyState.tsx generated by @compiled/babel-plugin v3.0.2 */
2
+ "use strict";
3
+
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.QuickInsertEmptyState = void 0;
9
+ require("./QuickInsertEmptyState.compiled.css");
10
+ var _runtime = require("@compiled/react/runtime");
11
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
12
+ var _react = _interopRequireDefault(require("react"));
13
+ var _reactIntl = require("react-intl");
14
+ var _reactLooselyLazy = require("react-loosely-lazy");
15
+ var _css = require("@atlaskit/css");
16
+ var _messages = require("@atlaskit/editor-common/quick-insert/messages");
17
+ var _box = require("@atlaskit/primitives/compiled/box");
18
+ var _text = require("@atlaskit/primitives/compiled/text");
19
+ 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" != (0, _typeof2.default)(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); }
20
+ var NoResultsIllustration = (0, _reactLooselyLazy.lazy)(function () {
21
+ return Promise.resolve().then(function () {
22
+ return _interopRequireWildcard(require( /* webpackChunkName: "@atlaskit-internal_editor-quick-insert-no-results" */
23
+ './assets/no-results'));
24
+ }).then(function (module) {
25
+ return module.default;
26
+ });
27
+ });
28
+ var styles = {
29
+ base: "_zulp1ejb _4cvr1h6o _1e0c1txw _2lx21bp4 _1bah1h6o _1bsb1osq",
30
+ compact: "_1rjcxy5q",
31
+ spacious: "_1rjcoahv",
32
+ inlineIllustration: "_4t3i1h39 _1bsb1mcy",
33
+ fullIllustration: "_4t3io7ol _1bsbtudo"
34
+ };
35
+ var QuickInsertEmptyState = exports.QuickInsertEmptyState = function QuickInsertEmptyState(_ref) {
36
+ var mode = _ref.mode,
37
+ _ref$spacing = _ref.spacing,
38
+ spacing = _ref$spacing === void 0 ? mode === 'full' ? 'spacious' : 'compact' : _ref$spacing;
39
+ var _useIntl = (0, _reactIntl.useIntl)(),
40
+ formatMessage = _useIntl.formatMessage;
41
+ var illustrationSize = mode === 'full' ? {
42
+ width: 76,
43
+ height: 84
44
+ } : {
45
+ width: 57,
46
+ height: 63
47
+ };
48
+ return /*#__PURE__*/_react.default.createElement(_box.Box, {
49
+ testId: "quick-insert-empty-state",
50
+ xcss: (0, _css.cx)(styles.base, styles[spacing])
51
+ }, /*#__PURE__*/_react.default.createElement(_box.Box, {
52
+ xcss: mode === 'full' ? styles.fullIllustration : styles.inlineIllustration
53
+ }, /*#__PURE__*/_react.default.createElement(_reactLooselyLazy.LazySuspense, {
54
+ fallback: null
55
+ }, /*#__PURE__*/_react.default.createElement(NoResultsIllustration, {
56
+ width: illustrationSize.width,
57
+ height: illustrationSize.height
58
+ }))), /*#__PURE__*/_react.default.createElement(_text.Text, {
59
+ align: "center"
60
+ }, formatMessage(_messages.messages.noSearchResults)));
61
+ };