import {objectEach} from './../../helpers/object'; import alignmentItem, {KEY as ALIGNMENT} from './predefinedItems/alignment'; import clearColumnItem, {KEY as CLEAR_COLUMN} from './predefinedItems/clearColumn'; import columnLeftItem, {KEY as COLUMN_LEFT} from './predefinedItems/columnLeft'; import columnRightItem, {KEY as COLUMN_RIGHT} from './predefinedItems/columnRight'; import readOnlyItem, {KEY as READ_ONLY} from './predefinedItems/readOnly'; import redoItem, {KEY as REDO} from './predefinedItems/redo'; import removeColumnItem, {KEY as REMOVE_COLUMN} from './predefinedItems/removeColumn'; import removeRowItem, {KEY as REMOVE_ROW} from './predefinedItems/removeRow'; import rowAboveItem, {KEY as ROW_ABOVE} from './predefinedItems/rowAbove'; import rowBelowItem, {KEY as ROW_BELOW} from './predefinedItems/rowBelow'; import separatorItem, {KEY as SEPARATOR} from './predefinedItems/separator'; import undoItem, {KEY as UNDO} from './predefinedItems/undo'; export {KEY as ALIGNMENT} from './predefinedItems/alignment'; export {KEY as CLEAR_COLUMN} from './predefinedItems/clearColumn'; export {KEY as COLUMN_LEFT} from './predefinedItems/columnLeft'; export {KEY as COLUMN_RIGHT} from './predefinedItems/columnRight'; export {KEY as READ_ONLY} from './predefinedItems/readOnly'; export {KEY as REDO} from './predefinedItems/redo'; export {KEY as REMOVE_COLUMN} from './predefinedItems/removeColumn'; export {KEY as REMOVE_ROW} from './predefinedItems/removeRow'; export {KEY as ROW_ABOVE} from './predefinedItems/rowAbove'; export {KEY as ROW_BELOW} from './predefinedItems/rowBelow'; export {KEY as SEPARATOR} from './predefinedItems/separator'; export {KEY as UNDO} from './predefinedItems/undo'; export const ITEMS = [ ROW_ABOVE, ROW_BELOW, COLUMN_LEFT, COLUMN_RIGHT, CLEAR_COLUMN, REMOVE_ROW, REMOVE_COLUMN, UNDO, REDO, READ_ONLY, ALIGNMENT, SEPARATOR ]; const _predefinedItems = { [SEPARATOR]: separatorItem, [ROW_ABOVE]: rowAboveItem, [ROW_BELOW]: rowBelowItem, [COLUMN_LEFT]: columnLeftItem, [COLUMN_RIGHT]: columnRightItem, [CLEAR_COLUMN]: clearColumnItem, [REMOVE_ROW]: removeRowItem, [REMOVE_COLUMN]: removeColumnItem, [UNDO]: undoItem, [REDO]: redoItem, [READ_ONLY]: readOnlyItem, [ALIGNMENT]: alignmentItem, }; /** * Gets new object with all predefined menu items. * * @returns {Object} */ export function predefinedItems() { const items = {}; objectEach(_predefinedItems, (itemFactory, key) => { items[key] = itemFactory(); }); return items; } /** * Add new predefined menu item to the collection. * * @param {String} key Menu command id. * @param {Object} item Object command descriptor. */ export function addItem(key, item) { if (ITEMS.indexOf(key) === -1) { _predefinedItems[key] = item; } }