@gravity-ui/uikit
Version:
Gravity UI base styling and components
40 lines (39 loc) • 1.27 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.useSystemTheme = useSystemTheme;
const tslib_1 = require("tslib");
const React = tslib_1.__importStar(require("react"));
const dom_helpers_1 = require("./dom-helpers.js");
function addListener(matcher, handler) {
const isLegacyMethod = typeof matcher.addEventListener !== 'function';
if (isLegacyMethod) {
matcher.addListener(handler);
}
else {
matcher.addEventListener('change', handler);
}
return () => {
if (isLegacyMethod) {
matcher.removeListener(handler);
}
else {
matcher.removeEventListener('change', handler);
}
};
}
function useSystemTheme() {
const [theme, setTheme] = React.useState((0, dom_helpers_1.getSystemTheme)());
React.useEffect(() => {
if (!dom_helpers_1.supportsMatchMedia) {
return undefined;
}
function onChange(event) {
setTheme(event.matches ? 'dark' : 'light');
}
const matcher = (0, dom_helpers_1.getDarkMediaMatch)();
const unsubscribe = addListener(matcher, onChange);
return () => unsubscribe();
}, []);
return theme;
}
//# sourceMappingURL=useSystemTheme.js.map
;