nicecode-v2/packages/func/es/utils/index.js
2024-01-16 11:44:26 +08:00

144 lines
3.5 KiB
JavaScript

import { isNumber } from 'lodash-es';
import ReactDOM from 'react-dom';
export { default as isChrome } from "./isChrome";
export var matchS3Prefix = function matchS3Prefix(str) {
return /^v[0-9]_/.test(str);
};
/**
* 通过文件名获取文件类型
* @param fileName 文件名称
* @returns 文件类型
*/
export var getFileSuffix = function getFileSuffix(fileName) {
var splitArr = fileName.split('.');
return splitArr.length < 2 ? '' : splitArr[splitArr.length - 1];
};
/**
* 通过类型获取文件名
* @param type 类型
* @returns
*/
export var getImageSuffixByFileType = function getImageSuffixByFileType(type) {
var imageSuffix = '';
switch (type) {
case 'jpeg':
{
imageSuffix = '.jpg';
break;
}
case 'gif':
{
imageSuffix = '.gif';
break;
}
case 'png':
{
imageSuffix = '.png';
break;
}
case 'vnd.wap.wbmp':
{
imageSuffix = '.wbmp';
break;
}
case 'x-up-wpng':
{
imageSuffix = '.wpng';
break;
}
case 'nbmp':
{
imageSuffix = '.nbmp';
break;
}
}
return imageSuffix;
};
// 获取谷歌浏览器版本
export function getChromeVersion() {
var arr = navigator.userAgent.split(' ');
var chromeVersion = '';
for (var i = 0; i < arr.length; i++) {
if (/chrome/i.test(arr[i])) chromeVersion = arr[i];
}
if (chromeVersion) {
return Number(chromeVersion.split('/')[1].split('.')[0]);
} else {
return false;
}
}
export var nextTick = function nextTick(func) {
if (queueMicrotask) {
queueMicrotask(func);
return;
}
Promise.resolve().then(func);
};
export var loop = function loop(items, callback) {
for (var i = 0; i < items.length; i++) {
var element = items[i];
var isBreak = callback(element);
if (isBreak) {
return;
}
if (element['children']) {
loop(element['children'], callback);
}
}
};
export var addEventListenerWrapper = function addEventListenerWrapper(target, eventType, cb, option) {
/* eslint camelcase: 2 */
var callback = ReactDOM.unstable_batchedUpdates ? function run(e) {
ReactDOM.unstable_batchedUpdates(cb, e);
} : cb;
if (target.addEventListener) {
target.addEventListener(eventType, callback, option);
}
return {
remove: function remove() {
if (target.removeEventListener) {
target.removeEventListener(eventType, callback);
}
}
};
};
/**
* Get transforms base on the given object.
* @param {Object} obj - The target object.
* @returns {string} A string contains transform values.
*/
export function getTransforms(_ref) {
var rotate = _ref.rotate,
scaleX = _ref.scaleX,
scaleY = _ref.scaleY,
translateX = _ref.translateX,
translateY = _ref.translateY;
var values = [];
if (isNumber(translateX) && translateX !== 0) {
values.push("translateX(".concat(translateX, "px)"));
}
if (isNumber(translateY) && translateY !== 0) {
values.push("translateY(".concat(translateY, "px)"));
}
// Rotate should come first before scale to match orientation transform
if (isNumber(rotate) && rotate !== 0) {
values.push("rotate(".concat(rotate, "deg)"));
}
if (isNumber(scaleX) && scaleX !== 1) {
values.push("scaleX(".concat(scaleX, ")"));
}
if (isNumber(scaleY) && scaleY !== 1) {
values.push("scaleY(".concat(scaleY, ")"));
}
var transform = values.length ? values.join(' ') : 'none';
return {
WebkitTransform: transform,
msTransform: transform,
transform: transform
};
}