carbon-components-angular
Version:
Next generation components
35 lines • 4.92 kB
JavaScript
import { Injectable } from "@angular/core";
import { Subscription } from "rxjs";
import { getEventObservable } from "./event-observable";
import * as i0 from "@angular/core";
import * as i1 from "./document.service";
export class EventService {
constructor(documentService) {
this.documentService = documentService;
this.subscriptions = new Subscription();
this.targets = new WeakMap();
}
on(targetElement, eventType, callback) {
if (!this.targets.has(targetElement)) {
this.targets.set(targetElement, new Map());
}
const eventMap = this.targets.get(targetElement);
if (!eventMap.has(eventType)) {
eventMap.set(eventType, getEventObservable(targetElement, eventType));
}
const subscription = eventMap.get(eventType).subscribe(callback);
this.subscriptions.add(subscription);
}
onDocument(eventType, callback) {
this.documentService.handleEvent(eventType, callback);
}
ngOnDestroy() {
this.subscriptions.unsubscribe();
}
}
EventService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: EventService, deps: [{ token: i1.DocumentService }], target: i0.ɵɵFactoryTarget.Injectable });
EventService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: EventService });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: EventService, decorators: [{
type: Injectable
}], ctorParameters: function () { return [{ type: i1.DocumentService }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9ldmVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFjLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUdoRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7O0FBR3hELE1BQU0sT0FBTyxZQUFZO0lBS3hCLFlBQXNCLGVBQWdDO1FBQWhDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUo1QyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFbkMsWUFBTyxHQUFHLElBQUksT0FBTyxFQUFvRSxDQUFDO0lBRTNDLENBQUM7SUFFMUQsRUFBRSxDQUFDLGFBQW9DLEVBQUUsU0FBaUIsRUFBRSxRQUFzQjtRQUNqRixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDckMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQztTQUMzQztRQUVELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRWpELElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQzdCLFFBQVEsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO1NBQ3RFO1FBRUQsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELFVBQVUsQ0FBQyxTQUFpQixFQUFFLFFBQXNCO1FBQ25ELElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsV0FBVztRQUNWLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbEMsQ0FBQzs7eUdBNUJXLFlBQVk7NkdBQVosWUFBWTsyRkFBWixZQUFZO2tCQUR4QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBEb2N1bWVudFNlcnZpY2UgfSBmcm9tIFwiLi9kb2N1bWVudC5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBFdmVudEhhbmRsZXIgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgZ2V0RXZlbnRPYnNlcnZhYmxlIH0gZnJvbSBcIi4vZXZlbnQtb2JzZXJ2YWJsZVwiO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRXZlbnRTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcblx0cHJvdGVjdGVkIHN1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cblx0cHJvdGVjdGVkIHRhcmdldHMgPSBuZXcgV2Vha01hcDxIVE1MRWxlbWVudCB8IEVsZW1lbnQgfCBEb2N1bWVudCwgTWFwPHN0cmluZywgT2JzZXJ2YWJsZTxFdmVudD4+PigpO1xuXG5cdGNvbnN0cnVjdG9yKHByb3RlY3RlZCBkb2N1bWVudFNlcnZpY2U6IERvY3VtZW50U2VydmljZSkge31cblxuXHRvbih0YXJnZXRFbGVtZW50OiBIVE1MRWxlbWVudCB8IEVsZW1lbnQsIGV2ZW50VHlwZTogc3RyaW5nLCBjYWxsYmFjazogRXZlbnRIYW5kbGVyKSB7XG5cdFx0aWYgKCF0aGlzLnRhcmdldHMuaGFzKHRhcmdldEVsZW1lbnQpKSB7XG5cdFx0XHR0aGlzLnRhcmdldHMuc2V0KHRhcmdldEVsZW1lbnQsIG5ldyBNYXAoKSk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgZXZlbnRNYXAgPSB0aGlzLnRhcmdldHMuZ2V0KHRhcmdldEVsZW1lbnQpO1xuXG5cdFx0aWYgKCFldmVudE1hcC5oYXMoZXZlbnRUeXBlKSkge1xuXHRcdFx0ZXZlbnRNYXAuc2V0KGV2ZW50VHlwZSwgZ2V0RXZlbnRPYnNlcnZhYmxlKHRhcmdldEVsZW1lbnQsIGV2ZW50VHlwZSkpO1xuXHRcdH1cblxuXHRcdGNvbnN0IHN1YnNjcmlwdGlvbiA9IGV2ZW50TWFwLmdldChldmVudFR5cGUpLnN1YnNjcmliZShjYWxsYmFjayk7XG5cdFx0dGhpcy5zdWJzY3JpcHRpb25zLmFkZChzdWJzY3JpcHRpb24pO1xuXHR9XG5cblx0b25Eb2N1bWVudChldmVudFR5cGU6IHN0cmluZywgY2FsbGJhY2s6IEV2ZW50SGFuZGxlcikge1xuXHRcdHRoaXMuZG9jdW1lbnRTZXJ2aWNlLmhhbmRsZUV2ZW50KGV2ZW50VHlwZSwgY2FsbGJhY2spO1xuXHR9XG5cblx0bmdPbkRlc3Ryb3koKSB7XG5cdFx0dGhpcy5zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG5cdH1cbn1cbiJdfQ==