ng-devui
Version:
DevUI components based on Angular
93 lines • 12.1 kB
JavaScript
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=