UNPKG

@stand/callback

Version:
208 lines (175 loc) 7.73 kB
'use strict'; function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } var _Object$defineProperty = _interopDefault(require('@babel/runtime-corejs3/core-js-stable/object/define-property')); var _Object$defineProperties = _interopDefault(require('@babel/runtime-corejs3/core-js-stable/object/define-properties')); var _Object$getOwnPropertyDescriptors = _interopDefault(require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors')); var _forEachInstanceProperty = _interopDefault(require('@babel/runtime-corejs3/core-js-stable/instance/for-each')); var _Object$getOwnPropertyDescriptor = _interopDefault(require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor')); var _Object$getOwnPropertySymbols = _interopDefault(require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols')); var _Object$keys = _interopDefault(require('@babel/runtime-corejs3/core-js-stable/object/keys')); var _slicedToArray = _interopDefault(require('@babel/runtime-corejs3/helpers/slicedToArray')); var _filterInstanceProperty = _interopDefault(require('@babel/runtime-corejs3/core-js-stable/instance/filter')); var _defineProperty = _interopDefault(require('@babel/runtime-corejs3/helpers/defineProperty')); var _objectWithoutProperties = _interopDefault(require('@babel/runtime-corejs3/helpers/objectWithoutProperties')); var _parseInt = _interopDefault(require('@babel/runtime-corejs3/core-js-stable/parse-int')); var _classCallCheck = _interopDefault(require('@babel/runtime-corejs3/helpers/classCallCheck')); var _createClass = _interopDefault(require('@babel/runtime-corejs3/helpers/createClass')); var _Symbol = _interopDefault(require('@babel/runtime-corejs3/core-js-stable/symbol')); var _sortBy = _interopDefault(require('lodash/sortBy')); function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); if (enumerableOnly) symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { var _context7; _forEachInstanceProperty(_context7 = ownKeys(source, true)).call(_context7, function (key) { _defineProperty(target, key, source[key]); }); } else if (_Object$getOwnPropertyDescriptors) { _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)); } else { var _context8; _forEachInstanceProperty(_context8 = ownKeys(source)).call(_context8, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } } return target; } var groupsSymbol = _Symbol('groups'); var sortSymbol = _Symbol('sort'); var itemsSymbol = _Symbol('items'); var Callback = /*#__PURE__*/ function () { function Callback() { _classCallCheck(this, Callback); this[itemsSymbol] = []; this[groupsSymbol] = {}; } _createClass(Callback, [{ key: "configGroup", value: function configGroup(name) { var order = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1000; var defaultExtra = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1000; this.groups[name] = [_parseInt(order, 10), _parseInt(defaultExtra, 10)]; return this; } }, { key: "getGroupConfig", value: function getGroupConfig() { var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; var groups = this.groups; if (groups[name]) { return groups[name]; } return [1000, 1000]; } }, { key: "add", value: function add(_ref) { var method = _ref.method, _ref$group = _ref.group, group = _ref$group === void 0 ? 'default' : _ref$group, extra = _ref.extra, id = _ref.id, other = _objectWithoutProperties(_ref, ["method", "group", "extra", "id"]); var item = _objectSpread({}, other, { group: group, extra: extra, id: id }); var config = this.getGroupConfig(group); if (!item.extra) { if (item.extra === 0 || item.extra === '0') { item.extra = 0; } else { item.extra = config[1]; } } else { item.extra = _parseInt(item.extra); } item.method = method || function () {}; this[itemsSymbol].push(item); return this; } }, { key: "getAll", value: function getAll() { return this[sortSymbol](this[itemsSymbol]); } }, { key: "getItems", value: function getItems(filter) { var _context; return _filterInstanceProperty(_context = this[itemsSymbol]).call(_context, filter); } }, { key: "getById", value: function getById(id, group) { var _context2; var filter = group ? function (item) { return item.group === group && item.id === id; } : function (item) { return item.id === id; }; var arr = _filterInstanceProperty(_context2 = this[itemsSymbol]).call(_context2, filter); return arr[0]; } }, { key: "getByGroup", value: function getByGroup(name, extra) { var _context3; var filter = typeof extra === 'undefined' ? function (item) { return item.group === name; } : function (item) { return item.group === name && item.extra === _parseInt(extra, 10); }; var arr = _filterInstanceProperty(_context3 = this[itemsSymbol]).call(_context3, filter); return this[sortSymbol](arr); } }, { key: "removeAll", value: function removeAll() { this[itemsSymbol] = []; return this; } }, { key: "removeItems", value: function removeItems(filter) { var _context4; this[itemsSymbol] = _filterInstanceProperty(_context4 = this[itemsSymbol]).call(_context4, function (item) { return !filter(item); }); return this; } }, { key: "removeByGroup", value: function removeByGroup(name, extra) { var _context5; var filter = typeof extra === 'undefined' ? function (item) { return item.group !== name; } : function (item) { return !(item.group === name && item.extra === _parseInt(extra, 10)); }; this[itemsSymbol] = _filterInstanceProperty(_context5 = this[itemsSymbol]).call(_context5, filter); return this; } }, { key: "removeById", value: function removeById(id, group) { var _context6; var filter = group ? function (item) { return !(item.group === group && item.id === id); } : function (item) { return item.id !== id; }; this[itemsSymbol] = _filterInstanceProperty(_context6 = this[itemsSymbol]).call(_context6, filter); return this; } }, { key: sortSymbol, value: function value() { var _this = this; var arr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; return _sortBy(arr, [function (item) { var group = item.group; var _this$getGroupConfig = _this.getGroupConfig(group), _this$getGroupConfig2 = _slicedToArray(_this$getGroupConfig, 1), order = _this$getGroupConfig2[0]; return order; }, function (item) { return item.extra; }]); } }, { key: "groups", get: function get() { return this[groupsSymbol]; } }]); return Callback; }(); module.exports = Callback;