144 lines
3.5 KiB
JavaScript
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
|
|
};
|
|
} |