UNPKG

ng-devui

Version:

DevUI components based on Angular

93 lines 12.1 kB
export class EventBus { constructor() { this.eventBusCore = []; } areFuncEqual(a, b) { return a.toString() === b.toString(); } isKeyValueObjInArr(arr, key, val) { const filteredArr = arr.filter((entry) => { return entry[key] === val; }); return filteredArr.length > 0; } removeFuncInFuncArr(arr, fn) { for (let z = 0; z < arr.length; z++) { if (this.areFuncEqual(arr[z], fn)) { arr.splice(z, 1); } } return arr; } getKeyValueObjInArr(arr, key, val) { const filteredArr = arr.filter((entry) => { return entry[key] === val; }); return filteredArr[0]; } addEvent(eventName, eventFunc) { if (!this.isKeyValueObjInArr(this.eventBusCore, 'eventName', eventName)) { this.eventBusCore.push({ eventName: eventName, eventFuncArr: [eventFunc] }); } else { this.eventBusCore = this.eventBusCore.map((event) => { if (event.eventName === eventName) { event.eventFuncArr.push(eventFunc); } return event; }); } } add(...rest) { const eventName = rest[0]; const callbacks = rest[1]; if (!eventName) { return; } if (typeof callbacks === 'function') { for (let i = 1; i < rest.length; i++) { this.addEvent(eventName, rest[i]); } } if (typeof callbacks === 'object' && callbacks.forEach) { callbacks.forEach((fn) => { this.addEvent(eventName, fn); }); } } remove(...rest) { const eventName = rest[0]; const callbacks = rest[1]; if (!eventName) { return; } for (let i = 0; i < this.eventBusCore.length; i++) { if (this.eventBusCore[i].eventName === eventName) { if (rest.length === 1) { return this.eventBusCore.splice(i, 1); } const removedEvent = this.eventBusCore.splice(i, 1)[0]; if (typeof callbacks === 'function') { for (let k = 1; k < rest.length; k++) { removedEvent.eventFuncArr = this.removeFuncInFuncArr(removedEvent.eventFuncArr, rest[k]); } } if (typeof callbacks === 'object' && callbacks.length) { for (let x = 0; x < callbacks.length; x++) { removedEvent.eventFuncArr = this.removeFuncInFuncArr(removedEvent.eventFuncArr, callbacks[x]); } } this.eventBusCore.push(removedEvent); } } } trigger(eventName, data) { const event = this.getKeyValueObjInArr(this.eventBusCore, 'eventName', eventName); if (event) { (event.eventFuncArr || []).forEach((fn) => { fn.apply(this, data); }); } } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtYnVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vZGV2dWkvdGhlbWUvdXRpbHMvZXZlbnQtYnVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxRQUFRO0lBQXJCO1FBQ1UsaUJBQVksR0FBRyxFQUFFLENBQUM7SUErRjVCLENBQUM7SUE3RlMsWUFBWSxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3ZCLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRU8sa0JBQWtCLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHO1FBQ3RDLE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUN2QyxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUNqQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3BDLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztnQkFDbEMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbkIsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUc7UUFDdkMsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxD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SUV2ZW50QnVzIH0gZnJvbSAnLi9pbnRlcmZhY2UnO1xyXG5cclxuZXhwb3J0IGNsYXNzIEV2ZW50QnVzIGltcGxlbWVudHMgSUV2ZW50QnVzIHtcclxuICBwcml2YXRlIGV2ZW50QnVzQ29yZSA9IFtdO1xyXG5cclxuICBwcml2YXRlIGFyZUZ1bmNFcXVhbChhLCBiKSB7XHJcbiAgICByZXR1cm4gYS50b1N0cmluZygpID09PSBiLnRvU3RyaW5nKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzS2V5VmFsdWVPYmpJbkFycihhcnIsIGtleSwgdmFsKSB7XHJcbiAgICBjb25zdCBmaWx0ZXJlZEFyciA9IGFyci5maWx0ZXIoKGVudHJ5KSA9PiB7XHJcbiAgICAgIHJldHVybiBlbnRyeVtrZXldID09PSB2YWw7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBmaWx0ZXJlZEFyci5sZW5ndGggPiAwO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZW1vdmVGdW5jSW5GdW5jQXJyKGFyciwgZm4pIHtcclxuICAgIGZvciAobGV0IHogPSAwOyB6IDwgYXJyLmxlbmd0aDsgeisrKSB7XHJcbiAgICAgIGlmICh0aGlzLmFyZUZ1bmNFcXVhbChhcnJbel0sIGZuKSkge1xyXG4gICAgICAgIGFyci5zcGxpY2UoeiwgMSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBhcnI7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEtleVZhbHVlT2JqSW5BcnIoYXJyLCBrZXksIHZhbCkge1xyXG4gICAgY29uc3QgZmlsdGVyZWRBcnIgPSBhcnIuZmlsdGVyKChlbnRyeSkgPT4ge1xyXG4gICAgICByZXR1cm4gZW50cnlba2V5XSA9PT0gdmFsO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZmlsdGVyZWRBcnJbMF07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkZEV2ZW50KGV2ZW50TmFtZSwgZXZlbnRGdW5jKSB7XHJcbiAgICBpZiAoIXRoaXMuaXNLZXlWYWx1ZU9iakluQXJyKHRoaXMuZXZlbnRCdXNDb3JlLCAnZXZlbnROYW1lJywgZXZlbnROYW1lKSkge1xyXG4gICAgICB0aGlzLmV2ZW50QnVzQ29yZS5wdXNoKHsgZXZlbnROYW1lOiBldmVudE5hbWUsIGV2ZW50RnVuY0FycjogW2V2ZW50RnVuY10gfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmV2ZW50QnVzQ29yZSA9IHRoaXMuZXZlbnRCdXNDb3JlLm1hcCgoZXZlbnQpID0+IHtcclxuICAgICAgICBpZiAoZXZlbnQuZXZlbnROYW1lID09PSBldmVudE5hbWUpIHtcclxuICAgICAgICAgIGV2ZW50LmV2ZW50RnVuY0Fyci5wdXNoKGV2ZW50RnVuYyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBldmVudDtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYWRkKC4uLnJlc3QpOiB2b2lkIHtcclxuICAgIGNvbnN0IGV2ZW50TmFtZSA9IHJlc3RbMF07XHJcbiAgICBjb25zdCBjYWxsYmFja3MgPSByZXN0WzFdO1xyXG4gICAgaWYgKCFldmVudE5hbWUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiBjYWxsYmFja3MgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCByZXN0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgdGhpcy5hZGRFdmVudChldmVudE5hbWUsIHJlc3RbaV0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mIGNhbGxiYWNrcyA9PT0gJ29iamVjdCcgJiYgY2FsbGJhY2tzLmZvckVhY2gpIHtcclxuICAgICAgY2FsbGJhY2tzLmZvckVhY2goKGZuKSA9PiB7XHJcbiAgICAgICAgdGhpcy5hZGRFdmVudChldmVudE5hbWUsIGZuKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVtb3ZlKC4uLnJlc3QpOiBhbnlbXSB7XHJcbiAgICBjb25zdCBldmVudE5hbWUgPSByZXN0WzBdO1xyXG4gICAgY29uc3QgY2FsbGJhY2tzID0gcmVzdFsxXTtcclxuICAgIGlmICghZXZlbnROYW1lKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5ldmVudEJ1c0NvcmUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKHRoaXMuZXZlbnRCdXNDb3JlW2ldLmV2ZW50TmFtZSA9PT0gZXZlbnROYW1lKSB7XHJcbiAgICAgICAgaWYgKHJlc3QubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5ldmVudEJ1c0NvcmUuc3BsaWNlKGksIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCByZW1vdmVkRXZlbnQgPSB0aGlzLmV2ZW50QnVzQ29yZS5zcGxpY2UoaSwgMSlbMF07XHJcbiAgICAgICAgaWYgKHR5cGVvZiBjYWxsYmFja3MgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgIGZvciAobGV0IGsgPSAxOyBrIDwgcmVzdC5sZW5ndGg7IGsrKykge1xyXG4gICAgICAgICAgICByZW1vdmVkRXZlbnQuZXZlbnRGdW5jQXJyID0gdGhpcy5yZW1vdmVGdW5jSW5GdW5jQXJyKHJlbW92ZWRFdmVudC5ldmVudEZ1bmNBcnIsIHJlc3Rba10pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodHlwZW9mIGNhbGxiYWNrcyA9PT0gJ29iamVjdCcgJiYgY2FsbGJhY2tzLmxlbmd0aCkge1xyXG4gICAgICAgICAgZm9yIChsZXQgeCA9IDA7IHggPCBjYWxsYmFja3MubGVuZ3RoOyB4KyspIHtcclxuICAgICAgICAgICAgcmVtb3ZlZEV2ZW50LmV2ZW50RnVuY0FyciA9IHRoaXMucmVtb3ZlRnVuY0luRnVuY0FycihyZW1vdmVkRXZlbnQuZXZlbnRGdW5jQXJyLCBjYWxsYmFja3NbeF0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmV2ZW50QnVzQ29yZS5wdXNoKHJlbW92ZWRFdmVudCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyB0cmlnZ2VyKGV2ZW50TmFtZSwgZGF0YSkge1xyXG4gICAgY29uc3QgZXZlbnQgPSB0aGlzLmdldEtleVZhbHVlT2JqSW5BcnIodGhpcy5ldmVudEJ1c0NvcmUsICdldmVudE5hbWUnLCBldmVudE5hbWUpO1xyXG4gICAgaWYgKGV2ZW50KSB7XHJcbiAgICAgIChldmVudC5ldmVudEZ1bmNBcnIgfHwgW10pLmZvckVhY2goKGZuKSA9PiB7XHJcbiAgICAgICAgZm4uYXBwbHkodGhpcywgZGF0YSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=