ngx-amap
Version:
[][npm-badge-url] [][npm-badge-url] [][ci-url]
82 lines • 5.54 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: shared/event-binder.service.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Injectable, NgZone } from '@angular/core';
import { Observable } from 'rxjs';
import { switchMap } from 'rxjs/operators';
import { LoggerService } from './logger/logger.service';
/** @type {?} */
const TAG = 'EventBinder';
export class EventBinderService {
/**
* @param {?} logger
* @param {?} ngZone
*/
constructor(logger, ngZone) {
this.logger = logger;
this.ngZone = ngZone;
}
/**
* 注册事件
* @template T
* @param {?} target
* @param {?} eventName 事件名
* @return {?}
*/
bindEvent(target, eventName) {
return (/** @type {?} */ (target.pipe(switchMap((/**
* @param {?} t
* @return {?}
*/
(t) => new Observable((/**
* @param {?} observer
* @return {?}
*/
observer => {
/** @type {?} */
let handler = AMap.event.addListener(t, eventName, (/**
* @param {?} e
* @return {?}
*/
e => {
this.ngZone.run((/**
* @return {?}
*/
() => observer.next(e)));
}), this);
this.logger.d(TAG, `subscribed event: ${eventName}`);
return (/**
* @return {?}
*/
() => {
AMap.event.removeListener(handler);
this.logger.d(TAG, `unsubscribed event: ${eventName}`);
eventName = null;
handler = null;
});
})))))));
}
}
EventBinderService.decorators = [
{ type: Injectable }
];
/** @nocollapse */
EventBinderService.ctorParameters = () => [
{ type: LoggerService },
{ type: NgZone }
];
if (false) {
/**
* @type {?}
* @private
*/
EventBinderService.prototype.logger;
/**
* @type {?}
* @private
*/
EventBinderService.prototype.ngZone;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtYmluZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtYW1hcC8iLCJzb3VyY2VzIjpbInNoYXJlZC9ldmVudC1iaW5kZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7O01BRWxELEdBQUcsR0FBRyxhQUFhO0FBR3pCLE1BQU0sT0FBTyxrQkFBa0I7Ozs7O0lBQzdCLFlBQW9CLE1BQXFCLEVBQVUsTUFBYztRQUE3QyxXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUFHLENBQUM7Ozs7Ozs7O0lBTXJFLFNBQVMsQ0FDUCxNQUFxQixFQUNyQixTQUFpQjtRQUVqQixPQUFPLG1CQUFBLE1BQU0sQ0FBQyxJQUFJLENBQ2hCLFNBQVM7Ozs7UUFDUCxDQUFDLENBQUksRUFBRSxFQUFFLENBQ1AsSUFBSSxVQUFVOzs7O1FBQUMsUUFBUSxDQUFDLEVBQUU7O2dCQUNwQixPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQ2xDLENBQUMsRUFDRCxTQUFTOzs7O1lBQ1QsQ0FBQyxDQUFDLEVBQUU7Z0JBQ0YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHOzs7Z0JBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDO1lBQzFDLENBQUMsR0FDRCxJQUFJLENBQ0w7WUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUscUJBQXFCLFNBQVMsRUFBRSxDQUFDLENBQUM7WUFDckQ7OztZQUFPLEdBQUcsRUFBRTtnQkFDVixJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLHVCQUF1QixTQUFTLEVBQUUsQ0FBQyxDQUFDO2dCQUN2RCxTQUFTLEdBQUcsSUFBSSxDQUFDO2dCQUNqQixPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQ2pCLENBQUMsRUFBQztRQUNKLENBQUMsRUFBQyxFQUNMLENBQ0YsRUFBcUIsQ0FBQztJQUN6QixDQUFDOzs7WUFsQ0YsVUFBVTs7OztZQUpGLGFBQWE7WUFIRCxNQUFNOzs7Ozs7O0lBU2Isb0NBQTZCOzs7OztJQUFFLG9DQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE5nWm9uZSwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBMb2dnZXJTZXJ2aWNlIH0gZnJvbSAnLi9sb2dnZXIvbG9nZ2VyLnNlcnZpY2UnO1xuXG5jb25zdCBUQUcgPSAnRXZlbnRCaW5kZXInO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRXZlbnRCaW5kZXJTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBsb2dnZXI6IExvZ2dlclNlcnZpY2UsIHByaXZhdGUgbmdab25lOiBOZ1pvbmUpIHt9XG5cbiAgLyoqXG4gICAqIOazqOWGjOS6i+S7tlxuICAgKiBAcGFyYW0gZXZlbnROYW1lIOS6i+S7tuWQjVxuICAgKi9cbiAgYmluZEV2ZW50PFQgZXh0ZW5kcyBBTWFwLkV2ZW50RW1pdHRlcj4oXG4gICAgdGFyZ2V0OiBPYnNlcnZhYmxlPFQ+LFxuICAgIGV2ZW50TmFtZTogc3RyaW5nLFxuICApOiBFdmVudEVtaXR0ZXI8YW55PiB7XG4gICAgcmV0dXJuIHRhcmdldC5waXBlKFxuICAgICAgc3dpdGNoTWFwKFxuICAgICAgICAodDogVCkgPT5cbiAgICAgICAgICBuZXcgT2JzZXJ2YWJsZShvYnNlcnZlciA9PiB7XG4gICAgICAgICAgICBsZXQgaGFuZGxlciA9IEFNYXAuZXZlbnQuYWRkTGlzdGVuZXIoXG4gICAgICAgICAgICAgIHQsXG4gICAgICAgICAgICAgIGV2ZW50TmFtZSxcbiAgICAgICAgICAgICAgZSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IG9ic2VydmVyLm5leHQoZSkpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmQoVEFHLCBgc3Vic2NyaWJlZCBldmVudDogJHtldmVudE5hbWV9YCk7XG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICBBTWFwLmV2ZW50LnJlbW92ZUxpc3RlbmVyKGhhbmRsZXIpO1xuICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5kKFRBRywgYHVuc3Vic2NyaWJlZCBldmVudDogJHtldmVudE5hbWV9YCk7XG4gICAgICAgICAgICAgIGV2ZW50TmFtZSA9IG51bGw7XG4gICAgICAgICAgICAgIGhhbmRsZXIgPSBudWxsO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KSxcbiAgICAgICksXG4gICAgKSBhcyBFdmVudEVtaXR0ZXI8YW55PjtcbiAgfVxufVxuIl19