UNPKG

@atlaskit/editor-plugin-layout

Version:

Layout plugin for @atlaskit/editor-core

139 lines 5.15 kB
import React, { useContext } from 'react'; import { layoutMessages } from '@atlaskit/editor-common/messages'; import { OutsideClickTargetRefContext } from '@atlaskit/editor-common/ui-react'; import { ToolbarDropdownItemSection } from '@atlaskit/editor-toolbar'; import { ToolbarMenuContainer } from '@atlaskit/editor-toolbar/toolbar-menu-container'; import { DeleteColumnDropdownItem } from './DeleteColumnDropdownItem'; import { DistributeColumnsDropdownItem } from './DistributeColumnsDropdownItem'; import { InsertColumnDropdownItem } from './InsertColumnDropdownItem'; import { DELETE_COLUMN_MENU_ITEM, DISTRIBUTE_COLUMNS_MENU_ITEM, INSERT_COLUMN_LEFT_MENU_ITEM, INSERT_COLUMN_RIGHT_MENU_ITEM, LAYOUT_COLUMN_DANGER_SECTION, LAYOUT_COLUMN_DANGER_SECTION_RANK, LAYOUT_COLUMN_MENU, LAYOUT_COLUMN_MENU_RANK, LAYOUT_COLUMN_MENU_SECTION, LAYOUT_COLUMN_MENU_SECTION_RANK, LAYOUT_COLUMN_VERTICAL_ALIGN_MENU_SECTION, VERTICAL_ALIGN_BOTTOM_MENU_ITEM, VERTICAL_ALIGN_MENU, VERTICAL_ALIGN_MENU_RANK, VERTICAL_ALIGN_MENU_SECTION_RANK, VERTICAL_ALIGN_MIDDLE_MENU_ITEM, VERTICAL_ALIGN_TOP_MENU_ITEM } from './keys'; import { VerticalAlignDropdownItem } from './VerticalAlignDropdownItem'; import { VerticalAlignNestedMenu } from './VerticalAlignNestedMenu'; const LayoutColumnMenuContainer = ({ children }) => { const setOutsideClickTargetRef = useContext(OutsideClickTargetRefContext); return /*#__PURE__*/React.createElement(ToolbarMenuContainer, { ref: setOutsideClickTargetRef }, children); }; export const LAYOUT_COLUMN_MENU_FALLBACKS = { 'menu-section': ({ children }) => /*#__PURE__*/React.createElement(ToolbarDropdownItemSection, null, children) }; export const getLayoutColumnMenuComponents = ({ api }) => { return [{ ...LAYOUT_COLUMN_MENU, component: LayoutColumnMenuContainer }, { ...LAYOUT_COLUMN_MENU_SECTION, parents: [{ ...LAYOUT_COLUMN_MENU, rank: LAYOUT_COLUMN_MENU_RANK[LAYOUT_COLUMN_MENU_SECTION.key] }] }, { ...INSERT_COLUMN_LEFT_MENU_ITEM, component: () => /*#__PURE__*/React.createElement(InsertColumnDropdownItem, { api: api, side: "left" }), parents: [{ ...LAYOUT_COLUMN_MENU_SECTION, rank: LAYOUT_COLUMN_MENU_SECTION_RANK[INSERT_COLUMN_LEFT_MENU_ITEM.key] }] }, { ...INSERT_COLUMN_RIGHT_MENU_ITEM, component: () => /*#__PURE__*/React.createElement(InsertColumnDropdownItem, { api: api, side: "right" }), parents: [{ ...LAYOUT_COLUMN_MENU_SECTION, rank: LAYOUT_COLUMN_MENU_SECTION_RANK[INSERT_COLUMN_RIGHT_MENU_ITEM.key] }] }, { ...DISTRIBUTE_COLUMNS_MENU_ITEM, component: () => /*#__PURE__*/React.createElement(DistributeColumnsDropdownItem, { api: api }), parents: [{ ...LAYOUT_COLUMN_MENU_SECTION, rank: LAYOUT_COLUMN_MENU_SECTION_RANK[DISTRIBUTE_COLUMNS_MENU_ITEM.key] }] }, { ...VERTICAL_ALIGN_MENU, component: ({ children }) => /*#__PURE__*/React.createElement(VerticalAlignNestedMenu, { api: api }, children), parents: [{ ...LAYOUT_COLUMN_MENU_SECTION, rank: LAYOUT_COLUMN_MENU_SECTION_RANK[VERTICAL_ALIGN_MENU.key] }] }, { ...LAYOUT_COLUMN_VERTICAL_ALIGN_MENU_SECTION, parents: [{ ...VERTICAL_ALIGN_MENU, rank: VERTICAL_ALIGN_MENU_RANK[LAYOUT_COLUMN_VERTICAL_ALIGN_MENU_SECTION.key] }] }, { ...VERTICAL_ALIGN_TOP_MENU_ITEM, component: () => /*#__PURE__*/React.createElement(VerticalAlignDropdownItem, { api: api, label: layoutMessages.alignColumnTop, value: "top" }), parents: [{ ...LAYOUT_COLUMN_VERTICAL_ALIGN_MENU_SECTION, rank: VERTICAL_ALIGN_MENU_SECTION_RANK[VERTICAL_ALIGN_TOP_MENU_ITEM.key] }] }, { ...VERTICAL_ALIGN_MIDDLE_MENU_ITEM, component: () => /*#__PURE__*/React.createElement(VerticalAlignDropdownItem, { api: api, label: layoutMessages.alignColumnMiddle, value: "middle" }), parents: [{ ...LAYOUT_COLUMN_VERTICAL_ALIGN_MENU_SECTION, rank: VERTICAL_ALIGN_MENU_SECTION_RANK[VERTICAL_ALIGN_MIDDLE_MENU_ITEM.key] }] }, { ...VERTICAL_ALIGN_BOTTOM_MENU_ITEM, component: () => /*#__PURE__*/React.createElement(VerticalAlignDropdownItem, { api: api, label: layoutMessages.alignColumnBottom, value: "bottom" }), parents: [{ ...LAYOUT_COLUMN_VERTICAL_ALIGN_MENU_SECTION, rank: VERTICAL_ALIGN_MENU_SECTION_RANK[VERTICAL_ALIGN_BOTTOM_MENU_ITEM.key] }] }, // --- Danger section (Delete column) --- { ...LAYOUT_COLUMN_DANGER_SECTION, component: ({ children }) => /*#__PURE__*/React.createElement(ToolbarDropdownItemSection, { hasSeparator: true }, children), parents: [{ ...LAYOUT_COLUMN_MENU, rank: LAYOUT_COLUMN_MENU_RANK[LAYOUT_COLUMN_DANGER_SECTION.key] }] }, { ...DELETE_COLUMN_MENU_ITEM, component: () => /*#__PURE__*/React.createElement(DeleteColumnDropdownItem, { api: api }), parents: [{ ...LAYOUT_COLUMN_DANGER_SECTION, rank: LAYOUT_COLUMN_DANGER_SECTION_RANK[DELETE_COLUMN_MENU_ITEM.key] }] }]; };