UNPKG

@uiw/react-use-colorscheme

Version:

useColorScheme() provides access to the devices color scheme.

35 lines (34 loc) 1.05 kB
"use strict"; 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; }