localHooks.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. 'use strict';
  2. exports.__esModule = true;
  3. var _array = require('./../helpers/array');
  4. var _object = require('./../helpers/object');
  5. var MIXIN_NAME = 'localHooks';
  6. /**
  7. * Mixin object to extend objects functionality for local hooks.
  8. *
  9. * @type {Object}
  10. */
  11. var localHooks = {
  12. /**
  13. * Internal hooks storage.
  14. */
  15. _localHooks: Object.create(null),
  16. /**
  17. * Add hook to the collection.
  18. *
  19. * @param {String} key Hook name.
  20. * @param {Function} callback Hook callback
  21. */
  22. addLocalHook: function addLocalHook(key, callback) {
  23. if (!this._localHooks[key]) {
  24. this._localHooks[key] = [];
  25. }
  26. this._localHooks[key].push(callback);
  27. },
  28. /**
  29. * Run hooks.
  30. *
  31. * @param {String} key Hook name.
  32. * @param {*} params
  33. */
  34. runLocalHooks: function runLocalHooks(key) {
  35. var _this = this;
  36. for (var _len = arguments.length, params = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
  37. params[_key - 1] = arguments[_key];
  38. }
  39. if (this._localHooks[key]) {
  40. (0, _array.arrayEach)(this._localHooks[key], function (callback) {
  41. return callback.apply(_this, params);
  42. });
  43. }
  44. },
  45. /**
  46. * Clear all added hooks.
  47. */
  48. clearLocalHooks: function clearLocalHooks() {
  49. this._localHooks = {};
  50. }
  51. };
  52. (0, _object.defineGetter)(localHooks, 'MIXIN_NAME', MIXIN_NAME, {
  53. writable: false,
  54. enumerable: false
  55. });
  56. exports.default = localHooks;