@atlaskit/editor-plugin-layout
Version:
Layout plugin for @atlaskit/editor-core
62 lines • 2.15 kB
JavaScript
import React from 'react';
import { layoutMessages, toolbarInsertBlockMessages as messages } from '@atlaskit/editor-common/messages';
import { createQuickInsertMatcher } from '@atlaskit/editor-common/quick-insert/create-quick-insert-matcher';
import { FIVE_COLUMNS_LAYOUT_MENU_ITEM, FOUR_COLUMNS_LAYOUT_MENU_ITEM, STRUCTURE_SECTION, THREE_COLUMNS_LAYOUT_MENU_ITEM, TWO_COLUMNS_LAYOUT_MENU_ITEM } from '@atlaskit/editor-common/quick-insert/keys';
import { STRUCTURE_SECTION_RANK } from '@atlaskit/editor-common/quick-insert/rank';
import { LayoutQuickInsertMenuItem } from './LayoutQuickInsertMenuItem';
const layoutItems = [{
columnCount: 2,
description: messages.columnsDescriptionAdvancedLayout,
item: TWO_COLUMNS_LAYOUT_MENU_ITEM,
keyword: 'two column',
title: layoutMessages.twoColumnsAdvancedLayout
}, {
columnCount: 3,
description: messages.columnsDescriptionAdvancedLayout,
item: THREE_COLUMNS_LAYOUT_MENU_ITEM,
keyword: 'three column',
title: layoutMessages.threeColumnsAdvancedLayout
}, {
columnCount: 4,
description: messages.columnsDescriptionAdvancedLayout,
item: FOUR_COLUMNS_LAYOUT_MENU_ITEM,
keyword: 'four column',
title: layoutMessages.fourColumns
}, {
columnCount: 5,
description: messages.columnsDescriptionAdvancedLayout,
item: FIVE_COLUMNS_LAYOUT_MENU_ITEM,
keyword: 'five column',
title: layoutMessages.fiveColumns
}];
export const getLayoutQuickInsertComponents = ({
api
}) => layoutItems.map(({
columnCount,
description,
item,
keyword,
title
}) => ({
key: item.key,
type: item.type,
parents: [{
key: STRUCTURE_SECTION.key,
type: STRUCTURE_SECTION.type,
rank: STRUCTURE_SECTION_RANK[item.key]
}],
match: createQuickInsertMatcher(({
formatMessage
}) => ({
description: formatMessage(description, {
numberOfColumns: ['one', 'two', 'three', 'four', 'five'][columnCount - 1]
}),
keywords: ['layout', 'column', 'section', 'col', keyword],
title: formatMessage(title)
})),
component: () => /*#__PURE__*/React.createElement(LayoutQuickInsertMenuItem, {
api: api,
columnCount: columnCount,
title: title
})
}));