UNPKG

@atlaskit/editor-plugin-quick-insert

Version:

Quick insert plugin for @atlaskit/editor-core

157 lines (156 loc) 7.05 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.getQuickInsertComponents = void 0; var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _react = _interopRequireDefault(require("react")); var _reactIntl = require("react-intl"); var _keys = require("@atlaskit/editor-common/quick-insert/keys"); var _menuRoot = require("@atlaskit/editor-common/quick-insert/menu-root"); var _menuSection = require("@atlaskit/editor-common/quick-insert/menu-section"); var _messages = require("@atlaskit/editor-common/quick-insert/messages"); var _rank = require("@atlaskit/editor-common/quick-insert/rank"); var _typeAheadGetMenuFooterSectionKey = require("@atlaskit/editor-common/type-ahead-get-menu-footer-section-key"); var _typeAheadGetSectionOverflowItemKey = require("@atlaskit/editor-common/type-ahead-get-section-overflow-item-key"); var _getRecommendedComponents = require("./getRecommendedComponents"); var _QuickInsertMenuFooterItem = require("./QuickInsertMenuFooterItem"); var _QuickInsertRecommendedSlot = require("./QuickInsertRecommendedSlot"); var _QuickInsertSectionOverflowMenuItem = require("./QuickInsertSectionOverflowMenuItem"); 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; } 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; } var categories = [{ message: _messages.messages.categoryRecommended, section: _keys.RECOMMENDED_SECTION }, { message: _messages.messages.categoryStructure, section: _keys.STRUCTURE_SECTION }, { message: _messages.messages.categoryMedia, section: _keys.MEDIA_SECTION }, { message: _messages.messages.categoryEmbed, section: _keys.EMBED_SECTION }, { message: _messages.messages.categoryTextFormatting, section: _keys.TEXT_FORMATTING_SECTION }, { message: _messages.messages.categoryRovo, section: _keys.ROVO_SECTION }, { message: _messages.messages.categoryDataAndCharts, section: _keys.DATA_AND_CHARTS_SECTION }, { message: _messages.messages.categoryBlockTemplates, section: _keys.BLOCK_TEMPLATES_SECTION }, { message: _messages.messages.categoryOther, section: _keys.OTHER_SECTION }]; var createSectionComponent = function createSectionComponent(message) { var SectionComponent = function SectionComponent(_ref) { var children = _ref.children; var _useIntl = (0, _reactIntl.useIntl)(), formatMessage = _useIntl.formatMessage; return /*#__PURE__*/_react.default.createElement(_menuSection.QuickInsertMenuSection, { title: formatMessage(message) }, children); }; return SectionComponent; }; var getQuickInsertComponents = exports.getQuickInsertComponents = function getQuickInsertComponents(_ref2) { var api = _ref2.api, includeElementBrowserItems = _ref2.includeElementBrowserItems, isRecommendedItem = _ref2.isRecommendedItem; var recommendedSnapshot = (0, _getRecommendedComponents.createRecommendedSnapshotCache)({ api: api, isRecommendedItem: isRecommendedItem }); var recommendedSlots = Array.from({ length: _getRecommendedComponents.MAX_RECOMMENDED_ITEMS }, function (_, index) { return { key: "".concat(_getRecommendedComponents.RECOMMENDED_SLOT_KEY_PREFIX).concat(index), type: 'menu-item', parents: [{ key: _keys.RECOMMENDED_SECTION.key, type: _keys.RECOMMENDED_SECTION.type, rank: index }], match: function match() { return null; }, isHidden: function isHidden() { var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, surfaceContext = _ref3.surfaceContext; return !recommendedSnapshot.getSnapshot(surfaceContext)[index]; }, component: function component(props) { return /*#__PURE__*/_react.default.createElement(_QuickInsertRecommendedSlot.QuickInsertRecommendedSlot, _objectSpread(_objectSpread({}, props), {}, { index: index, getSnapshot: recommendedSnapshot.getSnapshot })); } }; }); return [{ key: _keys.MENU.key, type: _keys.MENU.type, component: _menuRoot.QuickInsertMenuRoot }].concat(recommendedSlots, (0, _toConsumableArray2.default)(categories.flatMap(function (_ref4) { var message = _ref4.message, section = _ref4.section; return [{ key: section.key, type: section.type, parents: [{ key: _keys.MENU.key, type: _keys.MENU.type, rank: _rank.QUICK_INSERT_MENU_RANK[section.key] }], component: createSectionComponent(message), isHidden: section.key === _keys.RECOMMENDED_SECTION.key ? function () { var _ref5 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, surfaceContext = _ref5.surfaceContext; return recommendedSnapshot.getSnapshot(surfaceContext).length === 0; } : undefined }].concat((0, _toConsumableArray2.default)(includeElementBrowserItems && section.key !== _keys.RECOMMENDED_SECTION.key ? [{ key: (0, _typeAheadGetSectionOverflowItemKey.getSectionOverflowItemKey)(section.key), type: 'menu-item', parents: [{ key: section.key, type: section.type, rank: _rank.CATEGORY_VIEW_MORE_RANK }], component: function component() { return /*#__PURE__*/_react.default.createElement(_QuickInsertSectionOverflowMenuItem.QuickInsertSectionOverflowMenuItem, { api: api, category: section.key }); } }] : [])); })), (0, _toConsumableArray2.default)(includeElementBrowserItems ? [{ key: (0, _typeAheadGetMenuFooterSectionKey.getMenuFooterSectionKey)(_keys.MENU.key), type: 'menu-section', parents: [{ key: _keys.MENU.key, type: _keys.MENU.type, rank: Number.MAX_SAFE_INTEGER }] }, { key: _keys.VIEW_ALL_ELEMENTS_MENU_ITEM.key, type: _keys.VIEW_ALL_ELEMENTS_MENU_ITEM.type, parents: [{ key: (0, _typeAheadGetMenuFooterSectionKey.getMenuFooterSectionKey)(_keys.MENU.key), type: 'menu-section', rank: 100 }], component: function component() { return /*#__PURE__*/_react.default.createElement(_QuickInsertMenuFooterItem.QuickInsertMenuFooterItem, { api: api }); } }] : [])); };