ng-devui
Version:
DevUI components based on Angular
48 lines • 7.05 kB
JavaScript
import { ReplaySubject } from 'rxjs';
export class PrefersColorSchemeMediaQuery {
constructor() {
this.prefersColorSchemeSubject = new ReplaySubject(1);
this.prefersColorSchemeChange = this.prefersColorSchemeSubject.asObservable();
this.handleColorSchemeChange = (value) => {
this.prefersColorSchemeSubject.next(value);
};
}
register() {
matchMedia(PrefersColorSchemeMediaQuery.Query.light).addEventListener('change', this.changeToLight);
matchMedia(PrefersColorSchemeMediaQuery.Query.dark).addEventListener('change', this.changeToDark);
this.prefersColorSchemeSubject.next(this.getInitValue());
}
unregister() {
matchMedia(PrefersColorSchemeMediaQuery.Query.light).removeEventListener('change', this.changeToLight);
matchMedia(PrefersColorSchemeMediaQuery.Query.dark).removeEventListener('change', this.changeToDark);
this.prefersColorSchemeSubject.complete();
}
getInitValue() {
if (typeof window === 'undefined') {
return 'light';
}
return ((window.matchMedia(PrefersColorSchemeMediaQuery.Query.light).matches && 'light') ||
(window.matchMedia(PrefersColorSchemeMediaQuery.Query.dark).matches && 'dark') ||
'no-preference');
}
changeToLight(mql) {
if (mql.matches) {
this.handleColorSchemeChange('light');
}
}
changeToDark(mql) {
if (mql.matches) {
this.handleColorSchemeChange('dark');
}
}
}
/* eslint-disable-next-line @typescript-eslint/no-namespace */
(function (PrefersColorSchemeMediaQuery) {
let Query;
(function (Query) {
Query["light"] = "screen and (prefers-color-scheme: light)";
Query["dark"] = "screen and (prefers-color-scheme: dark)";
Query["noPreferences"] = "screen and (prefers-color-scheme: light)";
})(Query = PrefersColorSchemeMediaQuery.Query || (PrefersColorSchemeMediaQuery.Query = {}));
})(PrefersColorSchemeMediaQuery || (PrefersColorSchemeMediaQuery = {}));
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtcXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9kZXZ1aS90aGVtZS9tZWRpYS1xdWVyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXJDLE1BQU0sT0FBTyw0QkFBNEI7SUFBekM7UUFDVSw4QkFBeUIsR0FBRyxJQUFJLGFBQWEsQ0FBcUMsQ0FBQyxDQUFDLENBQUM7UUFDdEYsNkJBQXdCLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFlBQVksRUFBRSxDQUFDO1FBY2hGLDRCQUF1QixHQUFHLENBQUMsS0FBeUMsRUFBRSxFQUFFO1lBQ3RFLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0MsQ0FBQyxDQUFDO0lBd0JKLENBQUM7SUF0Q0MsUUFBUTtRQUNOLFVBQVUsQ0FBQyw0QkFBNEIsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNwRyxVQUFVLENBQUMsNEJBQTRCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbEcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsVUFBVTtRQUNSLFVBQVUsQ0FBQyw0QkFBNEIsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN2RyxVQUFVLENBQUMsNEJBQTRCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDckcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFNRCxZQUFZO1FBQ1YsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUNsQyxPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDO1FBQ0QsT0FBTyxDQUNMLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyw0QkFBNEIsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQztZQUNoRixDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsNEJBQTRCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sSUFBSSxNQUFNLENBQUM7WUFDOUUsZUFBZSxDQUNoQixDQUFDO0lBQ0osQ0FBQztJQUVELGFBQWEsQ0FBQyxHQUFHO1FBQ2YsSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3hDLENBQUM7SUFDSCxDQUFDO0lBRUQsWUFBWSxDQUFDLEdBQUc7UUFDZCxJQUFJLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsdUJBQXVCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkMsQ0FBQztJQUNILENBQUM7Q0FDRjtBQUVELDhEQUE4RDtBQUM5RCxXQUFpQiw0QkFBNEI7SUFFM0MsSUFBWSxLQUlYO0lBSkQsV0FBWSxLQUFLO1FBQ2YsMkRBQW9ELENBQUE7UUFDcEQseURBQWtELENBQUE7UUFDbEQsbUVBQTRELENBQUE7SUFDOUQsQ0FBQyxFQUpXLEtBQUssR0FBTCxrQ0FBSyxLQUFMLGtDQUFLLFFBSWhCO0FBQ0gsQ0FBQyxFQVBnQiw0QkFBNEIsS0FBNUIsNEJBQTRCLFFBTzVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgY2xhc3MgUHJlZmVyc0NvbG9yU2NoZW1lTWVkaWFRdWVyeSB7XG4gIHByaXZhdGUgcHJlZmVyc0NvbG9yU2NoZW1lU3ViamVjdCA9IG5ldyBSZXBsYXlTdWJqZWN0PFByZWZlcnNDb2xvclNjaGVtZU1lZGlhUXVlcnkuVmFsdWU+KDEpO1xuICBwdWJsaWMgcHJlZmVyc0NvbG9yU2NoZW1lQ2hhbmdlID0gdGhpcy5wcmVmZXJzQ29sb3JTY2hlbWVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHJlZ2lzdGVyKCkge1xuICAgIG1hdGNoTWVkaWEoUHJlZmVyc0NvbG9yU2NoZW1lTWVkaWFRdWVyeS5RdWVyeS5saWdodCkuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgdGhpcy5jaGFuZ2VUb0xpZ2h0KTtcbiAgICBtYXRjaE1lZGlhKFByZWZlcnNDb2xvclNjaGVtZU1lZGlhUXVlcnkuUXVlcnkuZGFyaykuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgdGhpcy5jaGFuZ2VUb0RhcmspO1xuICAgIHRoaXMucHJlZmVyc0NvbG9yU2NoZW1lU3ViamVjdC5uZXh0KHRoaXMuZ2V0SW5pdFZhbHVlKCkpO1xuICB9XG5cbiAgdW5yZWdpc3RlcigpIHtcbiAgICBtYXRjaE1lZGlhKFByZWZlcnNDb2xvclNjaGVtZU1lZGlhUXVlcnkuUXVlcnkubGlnaHQpLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIHRoaXMuY2hhbmdlVG9MaWdodCk7XG4gICAgbWF0Y2hNZWRpYShQcmVmZXJzQ29sb3JTY2hlbWVNZWRpYVF1ZXJ5LlF1ZXJ5LmRhcmspLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIHRoaXMuY2hhbmdlVG9EYXJrKTtcbiAgICB0aGlzLnByZWZlcnNDb2xvclNjaGVtZVN1YmplY3QuY29tcGxldGUoKTtcbiAgfVxuXG4gIGhhbmRsZUNvbG9yU2NoZW1lQ2hhbmdlID0gKHZhbHVlOiBQcmVmZXJzQ29sb3JTY2hlbWVNZWRpYVF1ZXJ5LlZhbHVlKSA9PiB7XG4gICAgdGhpcy5wcmVmZXJzQ29sb3JTY2hlbWVTdWJqZWN0Lm5leHQodmFsdWUpO1xuICB9O1xuXG4gIGdldEluaXRWYWx1ZSgpOiBQcmVmZXJzQ29sb3JTY2hlbWVNZWRpYVF1ZXJ5LlZhbHVlIHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiAnbGlnaHQnO1xuICAgIH1cbiAgICByZXR1cm4gKFxuICAgICAgKHdpbmRvdy5tYXRjaE1lZGlhKFByZWZlcnNDb2xvclNjaGVtZU1lZGlhUXVlcnkuUXVlcnkubGlnaHQpLm1hdGNoZXMgJiYgJ2xpZ2h0JykgfHxcbiAgICAgICh3aW5kb3cubWF0Y2hNZWRpYShQcmVmZXJzQ29sb3JTY2hlbWVNZWRpYVF1ZXJ5LlF1ZXJ5LmRhcmspLm1hdGNoZXMgJiYgJ2RhcmsnKSB8fFxuICAgICAgJ25vLXByZWZlcmVuY2UnXG4gICAgKTtcbiAgfVxuXG4gIGNoYW5nZVRvTGlnaHQobXFsKSB7XG4gICAgaWYgKG1xbC5tYXRjaGVzKSB7XG4gICAgICB0aGlzLmhhbmRsZUNvbG9yU2NoZW1lQ2hhbmdlKCdsaWdodCcpO1xuICAgIH1cbiAgfVxuXG4gIGNoYW5nZVRvRGFyayhtcWwpIHtcbiAgICBpZiAobXFsLm1hdGNoZXMpIHtcbiAgICAgIHRoaXMuaGFuZGxlQ29sb3JTY2hlbWVDaGFuZ2UoJ2RhcmsnKTtcbiAgICB9XG4gIH1cbn1cblxuLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1uYW1lc3BhY2UgKi9cbmV4cG9ydCBuYW1lc3BhY2UgUHJlZmVyc0NvbG9yU2NoZW1lTWVkaWFRdWVyeSB7XG4gIGV4cG9ydCB0eXBlIFZhbHVlID0gJ2xpZ2h0JyB8ICdkYXJrJyB8ICduby1wcmVmZXJlbmNlJztcbiAgZXhwb3J0IGVudW0gUXVlcnkge1xuICAgICdsaWdodCcgPSAnc2NyZWVuIGFuZCAocHJlZmVycy1jb2xvci1zY2hlbWU6IGxpZ2h0KScsXG4gICAgJ2RhcmsnID0gJ3NjcmVlbiBhbmQgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKScsXG4gICAgJ25vUHJlZmVyZW5jZXMnID0gJ3NjcmVlbiBhbmQgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBsaWdodCknLFxuICB9XG59XG4iXX0=