carbon-components-angular
Version:
Next generation components
36 lines • 4.52 kB
JavaScript
import { Injectable } from "@angular/core";
import { Observable, Subscription } from "rxjs";
import { getEventObservable } from "./event-observable";
import * as i0 from "@angular/core";
export class DocumentService {
constructor() {
this.globalEvents = new Map();
this.documentRef = document;
this.subscriptions = new Subscription();
}
handleEvent(eventType, callback) {
if (!this.globalEvents.has(eventType)) {
if (this.documentRef) {
this.globalEvents.set(eventType, getEventObservable(this.documentRef, eventType));
}
else {
this.globalEvents.set(eventType, new Observable());
}
}
const observable = this.globalEvents.get(eventType);
this.subscriptions.add(observable.subscribe(callback));
}
handleClick(callback) {
this.handleEvent("click", callback);
}
ngOnDestroy() {
this.subscriptions.unsubscribe();
this.globalEvents = null;
}
}
DocumentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: DocumentService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
DocumentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: DocumentService });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: DocumentService, decorators: [{
type: Injectable
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9kb2N1bWVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFaEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBR3hELE1BQU0sT0FBTyxlQUFlO0lBRDVCO1FBRVcsaUJBQVksR0FBRyxJQUFJLEdBQUcsRUFBNkIsQ0FBQztRQUVwRCxnQkFBVyxHQUFHLFFBQVEsQ0FBQztRQUV2QixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7S0FzQjdDO0lBcEJBLFdBQVcsQ0FBQyxTQUFpQixFQUFFLFFBQXNCO1FBQ3BELElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUN0QyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBa0IsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO2FBQ3pGO2lCQUFNO2dCQUNOLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxJQUFJLFVBQVUsRUFBRSxDQUFDLENBQUM7YUFDbkQ7U0FDRDtRQUNELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsV0FBVyxDQUFDLFFBQXNCO1FBQ2pDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxXQUFXO1FBQ1YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztJQUMxQixDQUFDOzs0R0ExQlcsZUFBZTtnSEFBZixlQUFlOzJGQUFmLGVBQWU7a0JBRDNCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IEV2ZW50SGFuZGxlciB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBnZXRFdmVudE9ic2VydmFibGUgfSBmcm9tIFwiLi9ldmVudC1vYnNlcnZhYmxlXCI7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEb2N1bWVudFNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXHRwcm90ZWN0ZWQgZ2xvYmFsRXZlbnRzID0gbmV3IE1hcDxzdHJpbmcsIE9ic2VydmFibGU8RXZlbnQ+PigpO1xuXG5cdHByb3RlY3RlZCBkb2N1bWVudFJlZiA9IGRvY3VtZW50O1xuXG5cdHByb3RlY3RlZCBzdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG5cdGhhbmRsZUV2ZW50KGV2ZW50VHlwZTogc3RyaW5nLCBjYWxsYmFjazogRXZlbnRIYW5kbGVyKSB7XG5cdFx0aWYgKCF0aGlzLmdsb2JhbEV2ZW50cy5oYXMoZXZlbnRUeXBlKSkge1xuXHRcdFx0aWYgKHRoaXMuZG9jdW1lbnRSZWYpIHtcblx0XHRcdFx0dGhpcy5nbG9iYWxFdmVudHMuc2V0KGV2ZW50VHlwZSwgZ2V0RXZlbnRPYnNlcnZhYmxlKHRoaXMuZG9jdW1lbnRSZWYgYXMgYW55LCBldmVudFR5cGUpKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRoaXMuZ2xvYmFsRXZlbnRzLnNldChldmVudFR5cGUsIG5ldyBPYnNlcnZhYmxlKCkpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRjb25zdCBvYnNlcnZhYmxlID0gdGhpcy5nbG9iYWxFdmVudHMuZ2V0KGV2ZW50VHlwZSk7XG5cdFx0dGhpcy5zdWJzY3JpcHRpb25zLmFkZChvYnNlcnZhYmxlLnN1YnNjcmliZShjYWxsYmFjaykpO1xuXHR9XG5cblx0aGFuZGxlQ2xpY2soY2FsbGJhY2s6IEV2ZW50SGFuZGxlcikge1xuXHRcdHRoaXMuaGFuZGxlRXZlbnQoXCJjbGlja1wiLCBjYWxsYmFjayk7XG5cdH1cblxuXHRuZ09uRGVzdHJveSgpIHtcblx0XHR0aGlzLnN1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcblx0XHR0aGlzLmdsb2JhbEV2ZW50cyA9IG51bGw7XG5cdH1cbn1cbiJdfQ==