UNPKG

@wener/console

Version:
171 lines (170 loc) 7.39 kB
function _define_property(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _object_spread(target) { for(var i = 1; i < arguments.length; i++){ var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === "function") { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function(key) { _define_property(target, key, source[key]); }); } return target; } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function(sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _object_spread_props(target, source) { source = source != null ? source : {}; if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function(key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } import { getGlobalStates } from '@wener/utils'; import { createStore, useStore } from 'zustand'; import { mutative } from 'zustand-mutative'; export function getUserAgentPreferenceStore() { return getGlobalStates('UserAgentPreferenceStore', function() { return createUserAgentPreferenceStore(); }); } export function getUserAgentPreferences() { return getUserAgentPreferenceStore().getState(); } export function useUserAgentPreferences() { return useStore(getUserAgentPreferenceStore()); } function createUserAgentPreferenceStore() { var _ref = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, _ref_watch = _ref.watch, watch = _ref_watch === void 0 ? true : _ref_watch; return createStore(mutative(function(setState, getState, store) { var _globalThis_devicePixelRatio; var initial = { colorTheme: 'light', contrast: 'no-preference', reducedMotion: 'no-preference', reducedData: 'no-preference', reducedTransparency: 'no-preference', devicePixelRatio: (_globalThis_devicePixelRatio = globalThis.devicePixelRatio) !== null && _globalThis_devicePixelRatio !== void 0 ? _globalThis_devicePixelRatio : 1 }; var closer = []; var reset = function() { return undefined; }; if (typeof window === 'undefined' || typeof window.matchMedia === 'undefined') {} else { var resolution = window.matchMedia("(resolution: ".concat(window.devicePixelRatio, "dppx)")); var prefersColorScheme = window.matchMedia('(prefers-color-scheme: dark)'); var prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)'); var prefersReducedData = window.matchMedia('(prefers-reduced-data: reduce)'); var prefersReducedTransparency = window.matchMedia('(prefers-reduced-transparency: reduce)'); var prefersContrast = window.matchMedia('(prefers-contrast: more)'); var set = function(out) { out.colorTheme = prefersColorScheme.matches ? 'dark' : 'light'; out.reducedMotion = prefersReducedMotion.matches ? 'reduce' : 'no-preference'; out.reducedData = prefersReducedData.matches ? 'reduce' : 'no-preference'; out.reducedTransparency = prefersReducedTransparency.matches ? 'reduce' : 'no-preference'; out.contrast = prefersContrast.matches ? 'more' : 'no-preference'; var _globalThis_devicePixelRatio; out.devicePixelRatio = (_globalThis_devicePixelRatio = globalThis.devicePixelRatio) !== null && _globalThis_devicePixelRatio !== void 0 ? _globalThis_devicePixelRatio : 1; }; // initial set(initial); var allQuery = [ prefersColorScheme, prefersReducedMotion, prefersReducedData, prefersReducedTransparency, prefersContrast, resolution ]; var onChange = function() { setState(function(s) { set(s); return s; }); }; reset = onChange; if (watch) { var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { var _loop = function() { var query = _step.value; query.addEventListener('change', onChange); closer.push(function() { return query.removeEventListener('change', onChange); }); }; for(var _iterator = allQuery[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true)_loop(); } catch (err) { _didIteratorError = true; _iteratorError = err; } finally{ try { if (!_iteratorNormalCompletion && _iterator.return != null) { _iterator.return(); } } finally{ if (_didIteratorError) { throw _iteratorError; } } } } } return _object_spread_props(_object_spread({}, initial), { close: function() { var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { for(var _iterator = closer[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){ var c = _step.value; c(); } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally{ try { if (!_iteratorNormalCompletion && _iterator.return != null) { _iterator.return(); } } finally{ if (_didIteratorError) { throw _iteratorError; } } } closer.splice(0, closer.length); }, reset: reset }); })); }