UNPKG

ng-devui

Version:

DevUI components based on Angular

48 lines 7.05 kB
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=