@wener/console
Version:
Base console UI toolkit
118 lines (117 loc) • 5.21 kB
JavaScript
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 _object_without_properties(source, excluded) {
if (source == null)
return {};
var target = {}, sourceKeys, key, i;
if (typeof Reflect !== "undefined" && Reflect.ownKeys) {
sourceKeys = Reflect.ownKeys(source);
for (i = 0; i < sourceKeys.length; i++) {
key = sourceKeys[i];
if (excluded.indexOf(key) >= 0)
continue;
if (!Object.prototype.propertyIsEnumerable.call(source, key))
continue;
target[key] = source[key];
}
return target;
}
target = _object_without_properties_loose(source, excluded);
if (Object.getOwnPropertySymbols) {
sourceKeys = Object.getOwnPropertySymbols(source);
for (i = 0; i < sourceKeys.length; i++) {
key = sourceKeys[i];
if (excluded.indexOf(key) >= 0)
continue;
if (!Object.prototype.propertyIsEnumerable.call(source, key))
continue;
target[key] = source[key];
}
}
return target;
}
function _object_without_properties_loose(source, excluded) {
if (source == null)
return {};
var target = {}, sourceKeys = Object.getOwnPropertyNames(source), key, i;
for (i = 0; i < sourceKeys.length; i++) {
key = sourceKeys[i];
if (excluded.indexOf(key) >= 0)
continue;
if (!Object.prototype.propertyIsEnumerable.call(source, key))
continue;
target[key] = source[key];
}
return target;
}
import React from "react";
import { BiLogoChrome } from "react-icons/bi";
import { HiMiniLanguage } from "react-icons/hi2";
import { MdDarkMode, MdLightMode } from "react-icons/md";
import { useMounted } from "@wener/reaction";
import { cn } from "../../utils/cn.js";
import { getUserAgentPreferences } from "../../utils/UserAgentPreference.js";
var UserAgentPrefers = function () {
var _getUserAgentPreferences = getUserAgentPreferences(), colorTheme = _getUserAgentPreferences.colorTheme, devicePixelRatio = _getUserAgentPreferences.devicePixelRatio;
return /*#__PURE__*/ React.createElement(React.Fragment, null, colorTheme === "dark" && /*#__PURE__*/ React.createElement(MdDarkMode, null), colorTheme === "light" && /*#__PURE__*/ React.createElement(MdLightMode, null), devicePixelRatio > 1 && /*#__PURE__*/ React.createElement("small", null, devicePixelRatio, "dppx"));
};
var Lang = function () {
return /*#__PURE__*/ React.createElement("span", {
className: "inline-flex items-center"
}, /*#__PURE__*/ React.createElement(HiMiniLanguage, null), navigator.language);
};
var Browser = function () {
var _navigator_userAgent_match;
var _ref;
var _ref1 = (_ref = (_navigator_userAgent_match = navigator.userAgent.match(RegExp("(?<brand>Chrom(e|ium))\\/(?<version>[0-9]+)\\."))) === null || _navigator_userAgent_match === void 0 ? void 0 : _navigator_userAgent_match.groups) !== null && _ref !== void 0 ? _ref : {}, brand = _ref1.brand, version = _ref1.version;
if (!brand) {
return /*#__PURE__*/ React.createElement("small", {
className: "text-error text-xs opacity-75"
}, "\u8BF7\u4F7F\u7528\u65B0\u7248\u672C\u7684 Chrome \u6D4F\u89C8\u5668");
}
var old = parseInt(version) < 100;
return /*#__PURE__*/ React.createElement("div", {
className: "inline-flex items-center"
}, /*#__PURE__*/ React.createElement(BiLogoChrome, null), brand, " ", version, old && /*#__PURE__*/ React.createElement("small", {
className: "text-warning text-xs opacity-75"
}, "\u5F53\u524D\u6D4F\u89C8\u5668\u7248\u672C ", version, " \u8FC7\u4F4E\uFF0C\u8BF7\u4E0B\u8F7D\u4F7F\u7528\u65B0\u7248\u672C\u6D4F\u89C8\u5668\u3002"));
};
export var UserAgentSummary = function (_0) {
var className = _0.className, props = _object_without_properties(_0, [
"className"
]);
var mounted = useMounted();
if (!mounted) {
return null;
}
return /*#__PURE__*/ React.createElement("small", _object_spread({
className: cn("flex items-center gap-1 text-xs opacity-75", className)
}, props), /*#__PURE__*/ React.createElement(Browser, null), /*#__PURE__*/ React.createElement(Lang, null), /*#__PURE__*/ React.createElement(UserAgentPrefers, null));
};