@uiw/react-use-colorscheme
Version:
useColorScheme() provides access to the devices color scheme.
35 lines (34 loc) • 1.05 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.ColorScheme = void 0;
exports.useColorScheme = useColorScheme;
var _react = require("react");
var ColorScheme = /*#__PURE__*/function (ColorScheme) {
ColorScheme["Dark"] = "dark";
ColorScheme["Light"] = "light";
ColorScheme["NoPreference"] = "no-preference";
return ColorScheme;
}({});
exports.ColorScheme = ColorScheme;
function getSnapshot() {
var matcher = window.matchMedia('(prefers-color-scheme: dark)').matches;
return matcher ? ColorScheme.Dark : ColorScheme.Light;
}
function getServerSnapshot() {
return ColorScheme.NoPreference;
}
function subscribe(callback) {
var matcher = window.matchMedia('(prefers-color-scheme: dark)');
matcher.addEventListener('change', callback);
return function () {
if (matcher) {
matcher.removeEventListener('change', callback);
}
};
}
function useColorScheme() {
var colorscheme = (0, _react.useSyncExternalStore)(subscribe, getSnapshot, getServerSnapshot);
return colorscheme;
}