@nutui/nutui-react
Version:
京东风格的轻量级移动端 React 组件库,支持一套代码生成 H5 和小程序
107 lines (106 loc) • 4.23 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "camelCase", {
enumerable: true,
get: function() {
return camelCase;
}
});
var _object_spread = require("@swc/helpers/_/_object_spread");
var UPPERCASE = RegExp("[\\p{Lu}]", "u");
var LOWERCASE = RegExp("[\\p{Ll}]", "u");
var LEADING_CAPITAL = RegExp("^[\\p{Lu}](?![\\p{Lu}])", "gu");
var IDENTIFIER = RegExp("([\\p{Alpha}\\p{N}_]|$)", "u");
var SEPARATORS = /[_.\- ]+/;
var LEADING_SEPARATORS = new RegExp("^".concat(SEPARATORS.source));
var SEPARATORS_AND_IDENTIFIER = new RegExp(SEPARATORS.source + IDENTIFIER.source, 'gu');
var NUMBERS_AND_IDENTIFIER = new RegExp("\\d+".concat(IDENTIFIER.source), 'gu');
var preserveCamelCase = function preserveCamelCase(string, toLowerCase, toUpperCase) {
var isLastCharLower = false;
var isLastCharUpper = false;
var isLastLastCharUpper = false;
for(var index = 0; index < string.length; index++){
var character = string[index];
if (isLastCharLower && UPPERCASE.test(character)) {
string = "".concat(string.slice(0, index), "-").concat(string.slice(index));
isLastCharLower = false;
isLastLastCharUpper = isLastCharUpper;
isLastCharUpper = true;
index++;
} else if (isLastCharUpper && isLastLastCharUpper && LOWERCASE.test(character)) {
string = "".concat(string.slice(0, index - 1), "-").concat(string.slice(index - 1));
isLastLastCharUpper = isLastCharUpper;
isLastCharUpper = false;
isLastCharLower = true;
} else {
isLastCharLower = toLowerCase(character) === character && toUpperCase(character) !== character;
isLastLastCharUpper = isLastCharUpper;
isLastCharUpper = toUpperCase(character) === character && toLowerCase(character) !== character;
}
}
return string;
};
var preserveConsecutiveUppercase = function preserveConsecutiveUppercase(input, toLowerCase) {
LEADING_CAPITAL.lastIndex = 0;
return input.replace(LEADING_CAPITAL, function(m1) {
return toLowerCase(m1);
});
};
var postProcess = function postProcess(input, toUpperCase) {
SEPARATORS_AND_IDENTIFIER.lastIndex = 0;
NUMBERS_AND_IDENTIFIER.lastIndex = 0;
return input.replace(SEPARATORS_AND_IDENTIFIER, function(_, identifier) {
return toUpperCase(identifier);
}).replace(NUMBERS_AND_IDENTIFIER, function(m) {
return toUpperCase(m);
});
};
var camelCase = function camelCase(input, options) {
if (!(typeof input === 'string' || Array.isArray(input))) {
throw new TypeError('Expected the input to be `string | string[]`');
}
options = (0, _object_spread._)({
pascalCase: false,
preserveConsecutiveUppercase: false
}, options);
if (Array.isArray(input)) {
input = input.map(function(x) {
return x.trim();
}).filter(function(x) {
return x.length;
}).join('-');
} else {
input = input.trim();
}
if (input.length === 0) {
return '';
}
var toLowerCase = options.locale === false ? function toLowerCase(string) {
return string.toLowerCase();
} : function(string) {
return string.toLocaleLowerCase(options.locale);
};
var toUpperCase = options.locale === false ? function toUpperCase(string) {
return string.toUpperCase();
} : function(string) {
return string.toLocaleUpperCase(options.locale);
};
if (input.length === 1) {
if (SEPARATORS.test(input)) {
return '';
}
return options.pascalCase ? toUpperCase(input) : toLowerCase(input);
}
var hasUpperCase = input !== toLowerCase(input);
if (hasUpperCase) {
input = preserveCamelCase(input, toLowerCase, toUpperCase);
}
input = input.replace(LEADING_SEPARATORS, '');
input = options.preserveConsecutiveUppercase ? preserveConsecutiveUppercase(input, toLowerCase) : toLowerCase(input);
if (options.pascalCase) {
input = toUpperCase(input.charAt(0)) + input.slice(1);
}
return postProcess(input, toUpperCase);
};
;