@alauda-fe/common
Version:
Alauda frontend team common codes.
52 lines • 6.34 kB
JavaScript
import { Directive, Injectable, Injector, NgZone, } from '@angular/core';
import { animationFrameScheduler, fromEvent, auditTime } from 'rxjs';
import * as i0 from "@angular/core";
const RESIZE_SCHEDULER = animationFrameScheduler;
// 提供全局的监听事件
export class ListenResizeDirective {
constructor(injector) {
this._resizeService = injector.get(OnResizeChangeService);
}
ngAfterViewInit() {
this._resizeService.subscribe(this);
}
ngOnDestroy() {
this._resizeService.unsubscribe(this);
}
static { this.ɵfac = function ListenResizeDirective_Factory(t) { return new (t || ListenResizeDirective)(i0.ɵɵdirectiveInject(i0.Injector)); }; }
static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: ListenResizeDirective }); }
}
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ListenResizeDirective, [{
type: Directive
}], () => [{ type: i0.Injector }], null); })();
export class OnResizeChangeService {
constructor(ngZone) {
this.ngZone = ngZone;
this._resizeListeners = new Set();
this.ngZone.runOutsideAngular(() => Promise.resolve().then(() => {
fromEvent(window, 'resize')
.pipe(
// 收集多个resize
auditTime(0, RESIZE_SCHEDULER))
.subscribe(_ => {
this._resizeListeners.forEach(i => i.onResize());
});
}));
}
subscribe(item) {
this._resizeListeners.add(item);
item.onResize();
}
unsubscribe(item) {
this._resizeListeners.delete(item);
}
static { this.ɵfac = function OnResizeChangeService_Factory(t) { return new (t || OnResizeChangeService)(i0.ɵɵinject(i0.NgZone)); }; }
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: OnResizeChangeService, factory: OnResizeChangeService.ɵfac, providedIn: 'root' }); }
}
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(OnResizeChangeService, [{
type: Injectable,
args: [{
providedIn: 'root',
}]
}], () => [{ type: i0.NgZone }], null); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib24tcmVzaXplLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvY29yZS9zZXJ2aWNlcy9vbi1yZXNpemUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixRQUFRLEVBQ1IsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUVyRSxNQUFNLGdCQUFnQixHQUFHLHVCQUF1QixDQUFDO0FBRWpELFlBQVk7QUFFWixNQUFNLE9BQWdCLHFCQUFxQjtJQVF6QyxZQUFZLFFBQWtCO1FBQzVCLElBQUksQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QyxDQUFDO3NGQWxCbUIscUJBQXFCO29FQUFyQixxQkFBcUI7O2lGQUFyQixxQkFBcUI7Y0FEMUMsU0FBUzs7QUF5QlYsTUFBTSxPQUFPLHFCQUFxQjtJQUdoQyxZQUE2QixNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUYxQixxQkFBZ0IsR0FBRyxJQUFJLEdBQUcsRUFBeUIsQ0FBQztRQUduRSxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxDQUNqQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUMxQixTQUFTLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQztpQkFDeEIsSUFBSTtZQUNILGFBQWE7WUFDYixTQUFTLENBQUMsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLENBQy9CO2lCQUNBLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDYixJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDbkQsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELFNBQVMsQ0FBQyxJQUEyQjtRQUNuQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsV0FBVyxDQUFDLElBQTJCO1FBQ3JDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsQ0FBQztzRkF6QlUscUJBQXFCO3VFQUFyQixxQkFBcUIsV0FBckIscUJBQXFCLG1CQUZwQixNQUFNOztpRkFFUCxxQkFBcUI7Y0FIakMsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgRGlyZWN0aXZlLFxuICBJbmplY3RhYmxlLFxuICBJbmplY3RvcixcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgYW5pbWF0aW9uRnJhbWVTY2hlZHVsZXIsIGZyb21FdmVudCwgYXVkaXRUaW1lIH0gZnJvbSAncnhqcyc7XG5cbmNvbnN0IFJFU0laRV9TQ0hFRFVMRVIgPSBhbmltYXRpb25GcmFtZVNjaGVkdWxlcjtcblxuLy8g5o+Q5L6b5YWo5bGA55qE55uR5ZCs5LqL5Lu2XG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBMaXN0ZW5SZXNpemVEaXJlY3RpdmVcbiAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3lcbntcbiAgLy8gd2luZG93IOinpuWPkXJlc2l6ZeaXtuinpuWPke+8jOaAp+iDveS8mOWMluWcqE9uUmVzaXplQ2hhbmdlU2VydmljZemHjOaJp+ihjCzlm6DmraTlrZDnsbvlrp7njrDpnIDopoHkvb/nlKhuZ1pvbmVcbiAgYWJzdHJhY3Qgb25SZXNpemUoKTogdW5rbm93bjtcblxuICBfcmVzaXplU2VydmljZTogT25SZXNpemVDaGFuZ2VTZXJ2aWNlO1xuXG4gIGNvbnN0cnVjdG9yKGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgIHRoaXMuX3Jlc2l6ZVNlcnZpY2UgPSBpbmplY3Rvci5nZXQoT25SZXNpemVDaGFuZ2VTZXJ2aWNlKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLl9yZXNpemVTZXJ2aWNlLnN1YnNjcmliZSh0aGlzKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX3Jlc2l6ZVNlcnZpY2UudW5zdWJzY3JpYmUodGhpcyk7XG4gIH1cbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIE9uUmVzaXplQ2hhbmdlU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Jlc2l6ZUxpc3RlbmVycyA9IG5ldyBTZXQ8TGlzdGVuUmVzaXplRGlyZWN0aXZlPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgbmdab25lOiBOZ1pvbmUpIHtcbiAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PlxuICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICAgIGZyb21FdmVudCh3aW5kb3csICdyZXNpemUnKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgLy8g5pS26ZuG5aSa5LiqcmVzaXplXG4gICAgICAgICAgICBhdWRpdFRpbWUoMCwgUkVTSVpFX1NDSEVEVUxFUiksXG4gICAgICAgICAgKVxuICAgICAgICAgIC5zdWJzY3JpYmUoXyA9PiB7XG4gICAgICAgICAgICB0aGlzLl9yZXNpemVMaXN0ZW5lcnMuZm9yRWFjaChpID0+IGkub25SZXNpemUoKSk7XG4gICAgICAgICAgfSk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgc3Vic2NyaWJlKGl0ZW06IExpc3RlblJlc2l6ZURpcmVjdGl2ZSkge1xuICAgIHRoaXMuX3Jlc2l6ZUxpc3RlbmVycy5hZGQoaXRlbSk7XG4gICAgaXRlbS5vblJlc2l6ZSgpO1xuICB9XG5cbiAgdW5zdWJzY3JpYmUoaXRlbTogTGlzdGVuUmVzaXplRGlyZWN0aXZlKSB7XG4gICAgdGhpcy5fcmVzaXplTGlzdGVuZXJzLmRlbGV0ZShpdGVtKTtcbiAgfVxufVxuIl19