ng-devui
Version:
DevUI components based on Angular
78 lines • 9.97 kB
JavaScript
import { Injectable } from '@angular/core';
import { fromEvent, ReplaySubject, Subject } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
import { DBreakpoints, DBreakpointsMap } from './layout.types';
import * as i0 from "@angular/core";
export class DScreenMediaQueryService {
constructor() {
this.pointChangeSub = new ReplaySubject(1);
this.destroy$ = new Subject();
}
// 可以传入一个基准point,返回数据结构{ currentPoint, 变大or变小or没变,比基准point大or小or一样 }
getPoint() {
if (!this.currentPoint) {
this.currentPoint = this.getCurrentPoint();
this.pointChangeSub.next({
currentPoint: this.currentPoint,
change: 0,
compare: this.comparePoints(this.currentPoint),
});
fromEvent(window, 'resize')
.pipe(takeUntil(this.destroy$))
.subscribe(() => {
const tempPoint = this.getCurrentPoint();
if (this.currentPoint !== tempPoint) {
const change = this.comparePoints(tempPoint, this.currentPoint);
this.currentPoint = tempPoint;
this.pointChangeSub.next({
currentPoint: this.currentPoint,
change: change,
compare: this.comparePoints(tempPoint),
});
}
});
}
return this.pointChangeSub;
}
// 无p2,则全量对比
comparePoints(p1, p2) {
let index1;
let index2;
for (let i = 0; i < DBreakpoints.length; i++) {
if (p1 === DBreakpoints[i]) {
index1 = i;
}
if (p2 === DBreakpoints[i]) {
index2 = i;
}
}
if (!p2) {
const res = {};
DBreakpoints.forEach((point, index) => {
res[point] = index1 - index;
});
return res;
}
return index1 - index2;
}
getCurrentPoint() {
const currentScreenWidth = window.innerWidth;
for (let i = 0; i < DBreakpoints.length; i++) {
if (DBreakpointsMap[DBreakpoints[i]] >= currentScreenWidth || i === DBreakpoints.length - 1) {
return DBreakpoints[i];
}
}
return;
}
ngOnDestroy() {
this.destroy$.next();
this.destroy$.complete();
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DScreenMediaQueryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DScreenMediaQueryService, providedIn: 'root' }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DScreenMediaQueryService, decorators: [{
type: Injectable,
args: [{ providedIn: 'root' }]
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWVuLW1lZGlhLXF1ZXJ5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9kZXZ1aS9sYXlvdXQvc2NyZWVuLW1lZGlhLXF1ZXJ5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUN0RCxPQUFPLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBZSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBRzVFLE1BQU0sT0FBTyx3QkFBd0I7SUFEckM7UUFHVSxtQkFBYyxHQUN0QixJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNiLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0tBdUV4QztJQXJFQyxvRUFBb0U7SUFDN0QsUUFBUTtRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDM0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7Z0JBQ3ZCLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtnQkFDL0IsTUFBTSxFQUFFLENBQUM7Z0JBQ1QsT0FBTyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQzthQUMvQyxDQUFDLENBQUM7WUFFSCxTQUFTLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQztpQkFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7aUJBQzlCLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUN6QyxJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssU0FBUyxFQUFFLENBQUM7b0JBQ3BDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQVcsQ0FBQztvQkFDMUUsSUFBSSxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUM7b0JBRTlCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDO3dCQUN2QixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7d0JBQy9CLE1BQU0sRUFBRSxNQUFNO3dCQUNkLE9BQU8sRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQztxQkFDdkMsQ0FBQyxDQUFDO2dCQUNMLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQUVELFlBQVk7SUFDSixhQUFhLENBQUMsRUFBZSxFQUFFLEVBQWdCO1FBQ3JELElBQUksTUFBVyxDQUFDO1FBQ2hCLElBQUksTUFBVyxDQUFDO1FBQ2hCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDN0MsSUFBSSxFQUFFLEtBQUssWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQzNCLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDYixDQUFDO1lBQ0QsSUFBSSxFQUFFLEtBQUssWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQzNCLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDYixDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNSLE1BQU0sR0FBRyxHQUFRLEVBQUUsQ0FBQztZQUNwQixZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFO2dCQUNwQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUM5QixDQUFDLENBQUMsQ0FBQztZQUVILE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQztRQUVELE9BQU8sTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN6QixDQUFDO0lBRUQsZUFBZTtRQUNiLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztRQUM3QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzdDLElBQUksZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLGtCQUFrQixJQUFJLENBQUMsS0FBSyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUM1RixPQUFPLFlBQVksQ0FBQyxDQUFDLENBQWdCLENBQUM7WUFDeEMsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPO0lBQ1QsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDM0IsQ0FBQzsrR0ExRVUsd0JBQXdCO21IQUF4Qix3QkFBd0IsY0FEWCxNQUFNOzs0RkFDbkIsd0JBQXdCO2tCQURwQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZnJvbUV2ZW50LCBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBEQnJlYWtwb2ludCwgREJyZWFrcG9pbnRzLCBEQnJlYWtwb2ludHNNYXAgfSBmcm9tICcuL2xheW91dC50eXBlcyc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgRFNjcmVlbk1lZGlhUXVlcnlTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBjdXJyZW50UG9pbnQ6IERCcmVha3BvaW50O1xuICBwcml2YXRlIHBvaW50Q2hhbmdlU3ViOiBSZXBsYXlTdWJqZWN0PHsgY3VycmVudFBvaW50OiBEQnJlYWtwb2ludDsgY2hhbmdlOiBudW1iZXI7IGNvbXBhcmU6IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIH0gfT4gPVxuICBuZXcgUmVwbGF5U3ViamVjdCgxKTtcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgLy8g5Y+v5Lul5Lyg5YWl5LiA5Liq5Z+65YeGcG9pbnTvvIzov5Tlm57mlbDmja7nu5PmnoR7IGN1cnJlbnRQb2ludCwg5Y+Y5aSnb3Llj5jlsI9vcuayoeWPmO+8jOavlOWfuuWHhnBvaW505aSnb3LlsI9vcuS4gOagtyB9XG4gIHB1YmxpYyBnZXRQb2ludCgpOiBSZXBsYXlTdWJqZWN0PHsgY3VycmVudFBvaW50OiBEQnJlYWtwb2ludDsgY2hhbmdlOiBudW1iZXI7IGNvbXBhcmU6IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIH0gfT4ge1xuICAgIGlmICghdGhpcy5jdXJyZW50UG9pbnQpIHtcbiAgICAgIHRoaXMuY3VycmVudFBvaW50ID0gdGhpcy5nZXRDdXJyZW50UG9pbnQoKTtcbiAgICAgIHRoaXMucG9pbnRDaGFuZ2VTdWIubmV4dCh7XG4gICAgICAgIGN1cnJlbnRQb2ludDogdGhpcy5jdXJyZW50UG9pbnQsXG4gICAgICAgIGNoYW5nZTogMCxcbiAgICAgICAgY29tcGFyZTogdGhpcy5jb21wYXJlUG9pbnRzKHRoaXMuY3VycmVudFBvaW50KSxcbiAgICAgIH0pO1xuXG4gICAgICBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJylcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICBjb25zdCB0ZW1wUG9pbnQgPSB0aGlzLmdldEN1cnJlbnRQb2ludCgpO1xuICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRQb2ludCAhPT0gdGVtcFBvaW50KSB7XG4gICAgICAgICAgICBjb25zdCBjaGFuZ2UgPSB0aGlzLmNvbXBhcmVQb2ludHModGVtcFBvaW50LCB0aGlzLmN1cnJlbnRQb2ludCkgYXMgbnVtYmVyO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50UG9pbnQgPSB0ZW1wUG9pbnQ7XG5cbiAgICAgICAgICAgIHRoaXMucG9pbnRDaGFuZ2VTdWIubmV4dCh7XG4gICAgICAgICAgICAgIGN1cnJlbnRQb2ludDogdGhpcy5jdXJyZW50UG9pbnQsXG4gICAgICAgICAgICAgIGNoYW5nZTogY2hhbmdlLFxuICAgICAgICAgICAgICBjb21wYXJlOiB0aGlzLmNvbXBhcmVQb2ludHModGVtcFBvaW50KSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucG9pbnRDaGFuZ2VTdWI7XG4gIH1cblxuICAvLyDml6BwMu+8jOWImeWFqOmHj+WvueavlFxuICBwcml2YXRlIGNvbXBhcmVQb2ludHMocDE6IERCcmVha3BvaW50LCBwMj86IERCcmVha3BvaW50KSB7XG4gICAgbGV0IGluZGV4MTogYW55O1xuICAgIGxldCBpbmRleDI6IGFueTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IERCcmVha3BvaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHAxID09PSBEQnJlYWtwb2ludHNbaV0pIHtcbiAgICAgICAgaW5kZXgxID0gaTtcbiAgICAgIH1cbiAgICAgIGlmIChwMiA9PT0gREJyZWFrcG9pbnRzW2ldKSB7XG4gICAgICAgIGluZGV4MiA9IGk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFwMikge1xuICAgICAgY29uc3QgcmVzOiBhbnkgPSB7fTtcbiAgICAgIERCcmVha3BvaW50cy5mb3JFYWNoKChwb2ludCwgaW5kZXgpID0+IHtcbiAgICAgICAgcmVzW3BvaW50XSA9IGluZGV4MSAtIGluZGV4O1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgcmV0dXJuIGluZGV4MSAtIGluZGV4MjtcbiAgfVxuXG4gIGdldEN1cnJlbnRQb2ludCgpOiBEQnJlYWtwb2ludCB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgY3VycmVudFNjcmVlbldpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBEQnJlYWtwb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChEQnJlYWtwb2ludHNNYXBbREJyZWFrcG9pbnRzW2ldXSA+PSBjdXJyZW50U2NyZWVuV2lkdGggfHwgaSA9PT0gREJyZWFrcG9pbnRzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgcmV0dXJuIERCcmVha3BvaW50c1tpXSBhcyBEQnJlYWtwb2ludDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG59XG4iXX0=