UNPKG

@alauda-fe/common

Version:

Alauda frontend team common codes.

52 lines 6.34 kB
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