df31b3170fc54f915fa3beb8b11dfa294be730425c26f0cffb394804331407a7628b9e09d4126c4fc00d0a96d01b24905a34849ce8f705f9f007e431a5a515 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. import {objectEach} from './../../helpers/object';
  2. import alignmentItem, {KEY as ALIGNMENT} from './predefinedItems/alignment';
  3. import clearColumnItem, {KEY as CLEAR_COLUMN} from './predefinedItems/clearColumn';
  4. import columnLeftItem, {KEY as COLUMN_LEFT} from './predefinedItems/columnLeft';
  5. import columnRightItem, {KEY as COLUMN_RIGHT} from './predefinedItems/columnRight';
  6. import readOnlyItem, {KEY as READ_ONLY} from './predefinedItems/readOnly';
  7. import redoItem, {KEY as REDO} from './predefinedItems/redo';
  8. import removeColumnItem, {KEY as REMOVE_COLUMN} from './predefinedItems/removeColumn';
  9. import removeRowItem, {KEY as REMOVE_ROW} from './predefinedItems/removeRow';
  10. import rowAboveItem, {KEY as ROW_ABOVE} from './predefinedItems/rowAbove';
  11. import rowBelowItem, {KEY as ROW_BELOW} from './predefinedItems/rowBelow';
  12. import separatorItem, {KEY as SEPARATOR} from './predefinedItems/separator';
  13. import undoItem, {KEY as UNDO} from './predefinedItems/undo';
  14. export {KEY as ALIGNMENT} from './predefinedItems/alignment';
  15. export {KEY as CLEAR_COLUMN} from './predefinedItems/clearColumn';
  16. export {KEY as COLUMN_LEFT} from './predefinedItems/columnLeft';
  17. export {KEY as COLUMN_RIGHT} from './predefinedItems/columnRight';
  18. export {KEY as READ_ONLY} from './predefinedItems/readOnly';
  19. export {KEY as REDO} from './predefinedItems/redo';
  20. export {KEY as REMOVE_COLUMN} from './predefinedItems/removeColumn';
  21. export {KEY as REMOVE_ROW} from './predefinedItems/removeRow';
  22. export {KEY as ROW_ABOVE} from './predefinedItems/rowAbove';
  23. export {KEY as ROW_BELOW} from './predefinedItems/rowBelow';
  24. export {KEY as SEPARATOR} from './predefinedItems/separator';
  25. export {KEY as UNDO} from './predefinedItems/undo';
  26. export const ITEMS = [
  27. ROW_ABOVE, ROW_BELOW, COLUMN_LEFT, COLUMN_RIGHT, CLEAR_COLUMN, REMOVE_ROW, REMOVE_COLUMN, UNDO, REDO, READ_ONLY,
  28. ALIGNMENT, SEPARATOR
  29. ];
  30. const _predefinedItems = {
  31. [SEPARATOR]: separatorItem,
  32. [ROW_ABOVE]: rowAboveItem,
  33. [ROW_BELOW]: rowBelowItem,
  34. [COLUMN_LEFT]: columnLeftItem,
  35. [COLUMN_RIGHT]: columnRightItem,
  36. [CLEAR_COLUMN]: clearColumnItem,
  37. [REMOVE_ROW]: removeRowItem,
  38. [REMOVE_COLUMN]: removeColumnItem,
  39. [UNDO]: undoItem,
  40. [REDO]: redoItem,
  41. [READ_ONLY]: readOnlyItem,
  42. [ALIGNMENT]: alignmentItem,
  43. };
  44. /**
  45. * Gets new object with all predefined menu items.
  46. *
  47. * @returns {Object}
  48. */
  49. export function predefinedItems() {
  50. const items = {};
  51. objectEach(_predefinedItems, (itemFactory, key) => {
  52. items[key] = itemFactory();
  53. });
  54. return items;
  55. }
  56. /**
  57. * Add new predefined menu item to the collection.
  58. *
  59. * @param {String} key Menu command id.
  60. * @param {Object} item Object command descriptor.
  61. */
  62. export function addItem(key, item) {
  63. if (ITEMS.indexOf(key) === -1) {
  64. _predefinedItems[key] = item;
  65. }
  66. }