514db2b3ad38dd1f91ab8909c572690fa360cf3d4ec423689ae4b2b9f591e1e78b44a8e08232440ecc7ac2cdd0d4d626e32f79c9cb0e209c010d7deae14526 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. 'use strict';
  2. exports.__esModule = true;
  3. var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
  4. var _object = require('./../../helpers/object');
  5. var _array = require('./../../helpers/array');
  6. var _predefinedItems = require('./predefinedItems');
  7. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  8. /**
  9. * Predefined items class factory for menu items.
  10. *
  11. * @class ItemsFactory
  12. * @plugin ContextMenu
  13. */
  14. var ItemsFactory = function () {
  15. function ItemsFactory(hotInstance) {
  16. var orderPattern = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
  17. _classCallCheck(this, ItemsFactory);
  18. this.hot = hotInstance;
  19. this.predefinedItems = (0, _predefinedItems.predefinedItems)();
  20. this.defaultOrderPattern = orderPattern;
  21. }
  22. /**
  23. * Set predefined items.
  24. *
  25. * @param {Array} predefinedItems Array of predefined items.
  26. */
  27. _createClass(ItemsFactory, [{
  28. key: 'setPredefinedItems',
  29. value: function setPredefinedItems(predefinedItems) {
  30. var _this = this;
  31. var items = {};
  32. this.defaultOrderPattern.length = 0;
  33. (0, _object.objectEach)(predefinedItems, function (value, key) {
  34. var menuItemKey = '';
  35. if (value.name === _predefinedItems.SEPARATOR) {
  36. items[_predefinedItems.SEPARATOR] = value;
  37. menuItemKey = _predefinedItems.SEPARATOR;
  38. // Menu item added as a property to array
  39. } else if (isNaN(parseInt(key, 10))) {
  40. value.key = value.key === void 0 ? key : value.key;
  41. items[key] = value;
  42. menuItemKey = value.key;
  43. } else {
  44. items[value.key] = value;
  45. menuItemKey = value.key;
  46. }
  47. _this.defaultOrderPattern.push(menuItemKey);
  48. });
  49. this.predefinedItems = items;
  50. }
  51. /**
  52. * Get all menu items based on pattern.
  53. *
  54. * @param {Array|Object|Boolean} pattern Pattern which you can define by displaying menu items order. If `true` default
  55. * pattern will be used.
  56. * @returns {Array}
  57. */
  58. }, {
  59. key: 'getItems',
  60. value: function getItems() {
  61. var pattern = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
  62. return _getItems(pattern, this.defaultOrderPattern, this.predefinedItems);
  63. }
  64. }]);
  65. return ItemsFactory;
  66. }();
  67. function _getItems() {
  68. var pattern = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
  69. var defaultPattern = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
  70. var items = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
  71. var result = [];
  72. if (pattern && pattern.items) {
  73. pattern = pattern.items;
  74. } else if (!Array.isArray(pattern)) {
  75. pattern = defaultPattern;
  76. }
  77. if ((0, _object.isObject)(pattern)) {
  78. (0, _object.objectEach)(pattern, function (value, key) {
  79. var item = items[typeof value === 'string' ? value : key];
  80. if (!item) {
  81. item = value;
  82. }
  83. if ((0, _object.isObject)(value)) {
  84. (0, _object.extend)(item, value);
  85. } else if (typeof item === 'string') {
  86. item = { name: item };
  87. }
  88. if (item.key === void 0) {
  89. item.key = key;
  90. }
  91. result.push(item);
  92. });
  93. } else {
  94. (0, _array.arrayEach)(pattern, function (name, key) {
  95. var item = items[name];
  96. // Item deleted from settings `allowInsertRow: false` etc.
  97. if (!item && _predefinedItems.ITEMS.indexOf(name) >= 0) {
  98. return;
  99. }
  100. if (!item) {
  101. item = { name: name, key: '' + key };
  102. }
  103. if ((0, _object.isObject)(name)) {
  104. (0, _object.extend)(item, name);
  105. }
  106. if (item.key === void 0) {
  107. item.key = key;
  108. }
  109. result.push(item);
  110. });
  111. }
  112. return result;
  113. }
  114. exports.default = ItemsFactory;