@lobehub/ui
Version:
Lobe UI is an open-source UI component library for building AIGC web apps
41 lines (40 loc) • 1.61 kB
JavaScript
import { KeyMapEnum } from "./const";
// https://superuser.com/questions/1238058/key-combination-order
export var NORMATIVE_MODIFIER = [
// win: Ctrl ,mac: Control
KeyMapEnum.Ctrl, KeyMapEnum.Control,
// win: Alt ,mac: Option
KeyMapEnum.Alt,
// win: Shift ,mac: Shift
KeyMapEnum.Shift,
// win: Win ,mac: Command
KeyMapEnum.Meta, KeyMapEnum.Mod];
var orderMap = Object.fromEntries(NORMATIVE_MODIFIER.map(function (key, index) {
return [key, index];
}));
export var splitKeysByPlus = function splitKeysByPlus(keys) {
return keys.replaceAll('++', "+".concat(KeyMapEnum.Equal)).split('+').sort(function (x, y) {
var _orderMap$x$toLowerCa, _orderMap$y$toLowerCa;
var idxX = (_orderMap$x$toLowerCa = orderMap[x.toLowerCase()]) !== null && _orderMap$x$toLowerCa !== void 0 ? _orderMap$x$toLowerCa : orderMap.length;
var idxY = (_orderMap$y$toLowerCa = orderMap[y.toLowerCase()]) !== null && _orderMap$y$toLowerCa !== void 0 ? _orderMap$y$toLowerCa : orderMap.length;
return idxX - idxY;
});
};
export var startCase = function startCase(str) {
return str.replaceAll(/([A-Z])/g, ' $1').replace(/^./, function (s) {
return s.toUpperCase();
}).trim();
};
export var checkIsAppleDevice = function checkIsAppleDevice(isApple) {
if (isApple !== undefined) {
return isApple;
}
if (typeof window === 'undefined' || typeof navigator === 'undefined') {
return false; // 处理 SSR 环境
}
var userAgent = navigator.userAgent.toLowerCase();
return /mac|iphone|ipod|ipad|ios/i.test(userAgent);
};
export var combineKeys = function combineKeys(keys) {
return keys.join('+');
};