UNPKG

@atlaskit/editor-plugin-quick-insert

Version:

Quick insert plugin for @atlaskit/editor-core

69 lines (68 loc) 3.74 kB
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray"; import { find } from '@atlaskit/editor-common/quick-insert'; import { dedupe } from '@atlaskit/editor-common/utils'; import { fg } from '@atlaskit/platform-feature-flags'; var isRegisteredLayoutQuickInsertItem = function isRegisteredLayoutQuickInsertItem(item) { var _item$keywords, _item$keywords2; return Boolean(item.id && item.id !== 'layout' && ((_item$keywords = item.keywords) === null || _item$keywords === void 0 ? void 0 : _item$keywords.includes('layout')) && ((_item$keywords2 = item.keywords) === null || _item$keywords2 === void 0 ? void 0 : _item$keywords2.includes('column'))); }; var getLayoutQuickInsertItemIdRank = function getLayoutQuickInsertItemIdRank(items) { return new Map(items.filter(isRegisteredLayoutQuickInsertItem).map(function (item, index) { return [item.id, index]; })); }; var getQuickInsertItemId = function getQuickInsertItemId(items, result) { var _items$result$idx; return (_items$result$idx = items[result.idx]) === null || _items$result$idx === void 0 ? void 0 : _items$result$idx.id; }; export var withLayoutQuickInsertPrioritySorting = function withLayoutQuickInsertPrioritySorting(prioritySortingFn) { return function (items) { var consumerSortFn = prioritySortingFn === null || prioritySortingFn === void 0 ? void 0 : prioritySortingFn(items); var layoutItemIdRank = getLayoutQuickInsertItemIdRank(items); if (layoutItemIdRank.size < 2) { return consumerSortFn; } return function (firstItem, secondItem) { var firstLayoutItemRank = layoutItemIdRank.get(getQuickInsertItemId(items, firstItem)); var secondLayoutItemRank = layoutItemIdRank.get(getQuickInsertItemId(items, secondItem)); if (firstLayoutItemRank !== undefined && secondLayoutItemRank !== undefined) { return firstLayoutItemRank - secondLayoutItemRank; } if (consumerSortFn) { return consumerSortFn(firstItem, secondItem); } return firstItem.score === secondItem.score ? firstItem.idx < secondItem.idx ? -1 : 1 : firstItem.score < secondItem.score ? -1 : 1; }; }; }; export var getQuickInsertSuggestions = function getQuickInsertSuggestions(searchOptions) { var lazyDefaultItems = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () { return []; }; var providedItems = arguments.length > 2 ? arguments[2] : undefined; // @ts-ignore var query = searchOptions.query, category = searchOptions.category, disableDefaultItems = searchOptions.disableDefaultItems, featuredItems = searchOptions.featuredItems, itemFilter = searchOptions.itemFilter, prioritySortingFn = searchOptions.prioritySortingFn; var defaultItems = disableDefaultItems ? [] : lazyDefaultItems(); var dedupeFn = function dedupeFn(item) { var _item$description; return "".concat(item.title, "-").concat((_item$description = item.description) !== null && _item$description !== void 0 ? _item$description : ''); }; var items = providedItems ? dedupe([].concat(_toConsumableArray(defaultItems), _toConsumableArray(providedItems)), dedupeFn) : defaultItems; // EDITOR-6558: apply consumer-supplied filter (e.g. Markdown Mode allowlist). if (itemFilter) { items = items.filter(itemFilter); } if (featuredItems) { return items.filter(function (item) { return item.featured; }); } return find((fg('platform_editor_fix_space_triggering_ai') ? query === null || query === void 0 ? void 0 : query.trimEnd() : query) || '', category === 'all' || !category ? items : items.filter(function (item) { return item.categories && item.categories.includes(category); }), prioritySortingFn); };