UNPKG

@atlaskit/editor-plugin-text-formatting

Version:

Text-formatting plugin for @atlaskit/editor-core

108 lines 3.59 kB
import React from 'react'; import { CLEAR_FORMARTTING_MENU_SECTION, CLEAR_FORMATTING_MENU_ITEM, TEXT_FORMATTING_MENU, TEXT_FORMATTING_MENU_SECTION, TEXT_FORMATTING_GROUP, TEXT_FORMATTING_GROUP_COLLAPSED, TEXT_FORMATTING_GROUP_INLINE, TEXT_FORMATTING_HERO_BUTTON, TEXT_FORMAT_GROUP_RANK, TEXT_FORMAT_MENU_RANK, CLEAR_FORMARTTING_MENU_SECTION_RANK, TEXT_COLLAPSED_MENU_RANK, TEXT_COLLAPSED_MENU } from '@atlaskit/editor-common/toolbar'; import { ToolbarDropdownItemSection } from '@atlaskit/editor-toolbar'; import { ClearFormatMenuItem, MoreFormattingMenu, MenuSection, FormatMenuItem } from './Component'; import { formatOptions } from './utils'; export const getFormatMenuItems = api => { return Object.entries(formatOptions()).map(([optionType, { icon, shortcut, title, command, rank, key }]) => { return { type: 'menu-item', key, parents: [{ type: TEXT_FORMATTING_MENU_SECTION.type, key: TEXT_FORMATTING_MENU_SECTION.key, rank }], component: ({ parents }) => { return /*#__PURE__*/React.createElement(FormatMenuItem, { api: api, parents: parents, icon: icon, shortcut: shortcut, title: title, optionType: optionType, toggleMarkWithAnalyticsCallback: command }); } }; }); }; export const textFormattingMenuGroup = api => [{ type: TEXT_FORMATTING_MENU.type, key: TEXT_FORMATTING_MENU.key, parents: [{ type: TEXT_FORMATTING_GROUP.type, key: TEXT_FORMATTING_GROUP.key, rank: TEXT_FORMAT_GROUP_RANK[TEXT_FORMATTING_MENU.key] }, { type: TEXT_FORMATTING_GROUP_COLLAPSED.type, key: TEXT_FORMATTING_GROUP_COLLAPSED.key, rank: TEXT_FORMAT_GROUP_RANK[TEXT_FORMATTING_MENU.key] }, { type: TEXT_FORMATTING_GROUP_INLINE.type, key: TEXT_FORMATTING_GROUP_INLINE.key, rank: TEXT_FORMAT_GROUP_RANK[TEXT_FORMATTING_HERO_BUTTON.key] }], component: ({ children }) => { return /*#__PURE__*/React.createElement(MoreFormattingMenu, null, children); } }, { type: TEXT_FORMATTING_MENU_SECTION.type, key: TEXT_FORMATTING_MENU_SECTION.key, parents: [{ type: TEXT_FORMATTING_MENU.type, key: TEXT_FORMATTING_MENU.key, rank: TEXT_FORMAT_MENU_RANK[TEXT_FORMATTING_MENU_SECTION.key] }, { type: TEXT_COLLAPSED_MENU.type, key: TEXT_COLLAPSED_MENU.key, rank: TEXT_COLLAPSED_MENU_RANK[TEXT_FORMATTING_MENU_SECTION.key] }], component: MenuSection }, ...getFormatMenuItems(api), { type: CLEAR_FORMARTTING_MENU_SECTION.type, key: CLEAR_FORMARTTING_MENU_SECTION.key, parents: [{ type: TEXT_FORMATTING_MENU.type, key: TEXT_FORMATTING_MENU.key, rank: TEXT_FORMAT_MENU_RANK[CLEAR_FORMARTTING_MENU_SECTION.key] }, { type: TEXT_COLLAPSED_MENU.type, key: TEXT_COLLAPSED_MENU.key, rank: TEXT_COLLAPSED_MENU_RANK[CLEAR_FORMARTTING_MENU_SECTION.key] }], component: ({ children }) => { return /*#__PURE__*/React.createElement(ToolbarDropdownItemSection, { hasSeparator: true }, children); } }, { type: CLEAR_FORMATTING_MENU_ITEM.type, key: CLEAR_FORMATTING_MENU_ITEM.key, parents: [{ type: CLEAR_FORMARTTING_MENU_SECTION.type, key: CLEAR_FORMARTTING_MENU_SECTION.key, rank: CLEAR_FORMARTTING_MENU_SECTION_RANK[CLEAR_FORMATTING_MENU_ITEM.key] }], component: ({ parents }) => { return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ClearFormatMenuItem, { parents: parents, api: api })); } }];