| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- import {arrayEach} from './../helpers/array';
- import {defineGetter} from './../helpers/object';
- const MIXIN_NAME = 'localHooks';
- /**
- * Mixin object to extend objects functionality for local hooks.
- *
- * @type {Object}
- */
- const localHooks = {
- /**
- * Internal hooks storage.
- */
- _localHooks: Object.create(null),
- /**
- * Add hook to the collection.
- *
- * @param {String} key Hook name.
- * @param {Function} callback Hook callback
- */
- addLocalHook(key, callback) {
- if (!this._localHooks[key]) {
- this._localHooks[key] = [];
- }
- this._localHooks[key].push(callback);
- },
- /**
- * Run hooks.
- *
- * @param {String} key Hook name.
- * @param {*} params
- */
- runLocalHooks(key, ...params) {
- if (this._localHooks[key]) {
- arrayEach(this._localHooks[key], (callback) => callback.apply(this, params));
- }
- },
- /**
- * Clear all added hooks.
- */
- clearLocalHooks() {
- this._localHooks = {};
- },
- };
- defineGetter(localHooks, 'MIXIN_NAME', MIXIN_NAME, {
- writable: false,
- enumerable: false,
- });
- export default localHooks;
|