@atlaskit/editor-plugin-block-type
Version:
BlockType plugin for @atlaskit/editor-core
124 lines • 4.8 kB
JavaScript
import { TRANSFORM_HEADINGS_MENU_SECTION, TRANSFORM_HEADINGS_MENU_SECTION_RANK, TRANSFORM_HEADINGS_H1_MENU_ITEM, TRANSFORM_HEADINGS_H2_MENU_ITEM, TRANSFORM_HEADINGS_H3_MENU_ITEM, TRANSFORM_HEADINGS_H4_MENU_ITEM, TRANSFORM_HEADINGS_H5_MENU_ITEM, TRANSFORM_HEADINGS_H6_MENU_ITEM, TRANSFORM_STRUCTURE_MENU_SECTION, TRANSFORM_STRUCTURE_QUOTE_MENU_ITEM, TRANSFORM_STRUCTURE_MENU_SECTION_RANK, TRANSFORM_STRUCTURE_PARAGRAPH_MENU_ITEM } from '@atlaskit/editor-common/block-menu';
import { createHeadingBlockMenuItem } from './HeadingBlockMenuItem';
import { createParagraphBlockMenuItem } from './ParagraphBlockMenuItem';
import { createQuoteBlockMenuItem } from './QuoteBlockMenuItem';
const HEADING_NODE_NAME = 'heading';
const QUOTE_NODE_NAME = 'blockquote';
const PARAGRAPH_NODE_NAME = 'paragraph';
export const getBlockTypeComponents = api => {
const isTransformHeadingDisabled = level => {
var _api$blockMenu;
return Boolean(api === null || api === void 0 ? void 0 : (_api$blockMenu = api.blockMenu) === null || _api$blockMenu === void 0 ? void 0 : _api$blockMenu.actions.isTransformOptionDisabled(HEADING_NODE_NAME, {
level
}));
};
return [{
type: 'block-menu-item',
key: TRANSFORM_HEADINGS_H1_MENU_ITEM.key,
parent: {
type: 'block-menu-section',
key: TRANSFORM_HEADINGS_MENU_SECTION.key,
rank: TRANSFORM_HEADINGS_MENU_SECTION_RANK[TRANSFORM_HEADINGS_H1_MENU_ITEM.key]
},
component: createHeadingBlockMenuItem({
level: 1,
api
}),
isHidden: () => isTransformHeadingDisabled(1)
}, {
type: 'block-menu-item',
key: TRANSFORM_HEADINGS_H2_MENU_ITEM.key,
parent: {
type: 'block-menu-section',
key: TRANSFORM_HEADINGS_MENU_SECTION.key,
rank: TRANSFORM_HEADINGS_MENU_SECTION_RANK[TRANSFORM_HEADINGS_H2_MENU_ITEM.key]
},
component: createHeadingBlockMenuItem({
level: 2,
api
}),
isHidden: () => isTransformHeadingDisabled(2)
}, {
type: 'block-menu-item',
key: TRANSFORM_HEADINGS_H3_MENU_ITEM.key,
parent: {
type: 'block-menu-section',
key: TRANSFORM_HEADINGS_MENU_SECTION.key,
rank: TRANSFORM_HEADINGS_MENU_SECTION_RANK[TRANSFORM_HEADINGS_H3_MENU_ITEM.key]
},
component: createHeadingBlockMenuItem({
level: 3,
api
}),
isHidden: () => isTransformHeadingDisabled(3)
}, {
type: 'block-menu-item',
key: TRANSFORM_HEADINGS_H4_MENU_ITEM.key,
parent: {
type: 'block-menu-section',
key: TRANSFORM_HEADINGS_MENU_SECTION.key,
rank: TRANSFORM_HEADINGS_MENU_SECTION_RANK[TRANSFORM_HEADINGS_H4_MENU_ITEM.key]
},
component: createHeadingBlockMenuItem({
level: 4,
api
}),
isHidden: () => isTransformHeadingDisabled(4)
}, {
type: 'block-menu-item',
key: TRANSFORM_HEADINGS_H5_MENU_ITEM.key,
parent: {
type: 'block-menu-section',
key: TRANSFORM_HEADINGS_MENU_SECTION.key,
rank: TRANSFORM_HEADINGS_MENU_SECTION_RANK[TRANSFORM_HEADINGS_H5_MENU_ITEM.key]
},
component: createHeadingBlockMenuItem({
level: 5,
api
}),
isHidden: () => isTransformHeadingDisabled(5)
}, {
type: 'block-menu-item',
key: TRANSFORM_HEADINGS_H6_MENU_ITEM.key,
parent: {
type: 'block-menu-section',
key: TRANSFORM_HEADINGS_MENU_SECTION.key,
rank: TRANSFORM_HEADINGS_MENU_SECTION_RANK[TRANSFORM_HEADINGS_H6_MENU_ITEM.key]
},
component: createHeadingBlockMenuItem({
level: 6,
api
}),
isHidden: () => isTransformHeadingDisabled(6)
}, {
type: 'block-menu-item',
key: TRANSFORM_STRUCTURE_QUOTE_MENU_ITEM.key,
parent: {
type: 'block-menu-section',
key: TRANSFORM_STRUCTURE_MENU_SECTION.key,
rank: TRANSFORM_STRUCTURE_MENU_SECTION_RANK[TRANSFORM_STRUCTURE_QUOTE_MENU_ITEM.key]
},
component: createQuoteBlockMenuItem({
api
}),
isHidden: () => {
var _api$blockMenu2;
return Boolean(api === null || api === void 0 ? void 0 : (_api$blockMenu2 = api.blockMenu) === null || _api$blockMenu2 === void 0 ? void 0 : _api$blockMenu2.actions.isTransformOptionDisabled(QUOTE_NODE_NAME));
}
}, {
type: 'block-menu-item',
key: TRANSFORM_STRUCTURE_PARAGRAPH_MENU_ITEM.key,
parent: {
type: 'block-menu-section',
key: TRANSFORM_STRUCTURE_MENU_SECTION.key,
rank: TRANSFORM_STRUCTURE_MENU_SECTION_RANK[TRANSFORM_STRUCTURE_PARAGRAPH_MENU_ITEM.key]
},
component: createParagraphBlockMenuItem({
api
}),
isHidden: () => {
var _api$blockMenu3;
return Boolean(api === null || api === void 0 ? void 0 : (_api$blockMenu3 = api.blockMenu) === null || _api$blockMenu3 === void 0 ? void 0 : _api$blockMenu3.actions.isTransformOptionDisabled(PARAGRAPH_NODE_NAME));
}
}];
};