handsontable
Version:
Handsontable is a JavaScript Spreadsheet Component available for React, Angular and Vue.
112 lines (98 loc) • 2.97 kB
JavaScript
import "core-js/modules/es.array.index-of.js";
import "core-js/modules/es.object.to-string.js";
import "core-js/modules/es.regexp.to-string.js";
import "core-js/modules/es.regexp.exec.js";
import "core-js/modules/es.string.replace.js";
import DOMPurify from 'dompurify';
import { stringify } from "./mixed.mjs";
/**
* Convert string to upper case first letter.
*
* @param {string} string String to convert.
* @returns {string}
*/
export function toUpperCaseFirst(string) {
return string[0].toUpperCase() + string.substr(1);
}
/**
* Compare strings case insensitively.
*
* @param {...string} strings Strings to compare.
* @returns {boolean}
*/
export function equalsIgnoreCase() {
var unique = [];
for (var _len = arguments.length, strings = new Array(_len), _key = 0; _key < _len; _key++) {
strings[_key] = arguments[_key];
}
var length = strings.length;
while (length) {
length -= 1;
var string = stringify(strings[length]).toLowerCase();
if (unique.indexOf(string) === -1) {
unique.push(string);
}
}
return unique.length === 1;
}
/**
* Generates a random hex string. Used as namespace for Handsontable instance events.
*
* @returns {string} Returns 16-long character random string (eq. `'92b1bfc74ec4'`).
*/
export function randomString() {
/**
* @returns {string}
*/
function s4() {
return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);
}
return s4() + s4() + s4() + s4();
}
/**
* Checks if value is valid percent.
*
* @param {string} value The value to check.
* @returns {boolean}
*/
export function isPercentValue(value) {
return /^([0-9][0-9]?%$)|(^100%$)/.test(value);
}
/**
* Substitute strings placed beetwen square brackets into value defined in `variables` object. String names defined in
* square brackets must be the same as property name of `variables` object.
*
* @param {string} template Template string.
* @param {object} variables Object which contains all available values which can be injected into template.
* @returns {string}
*/
export function substitute(template) {
var variables = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
return "".concat(template).replace(/(?:\\)?\[([^[\]]+)]/g, function (match, name) {
if (match.charAt(0) === '\\') {
return match.substr(1, match.length - 1);
}
return variables[name] === void 0 ? '' : variables[name];
});
}
/**
* Strip any HTML tag from the string.
*
* @param {string} string String to cut HTML from.
* @returns {string}
*/
export function stripTags(string) {
return sanitize("".concat(string), {
ALLOWED_TAGS: []
});
}
/**
* Sanitizes string from potential security vulnerabilities.
*
* @param {string} string String to sanitize.
* @param {object} [options] DOMPurify's configuration object.
* @returns {string}
*/
export function sanitize(string, options) {
return DOMPurify.sanitize(string, options);
}